Предположим, что машина имеет 48-битные виртуальные адреса и 32-битные физические адреса.

Предположим, что машина имеет 48-битные виртуальные адреса и 32-битные физические адреса.

(a) Если страницы имеют размер 4 КБ, сколько записей содержится в таблице страниц, если она имеет только один уровень?

12-битное смещение, поэтому 2 ^ 36? Я чувствую, что это неправильно. Может кто-нибудь объяснить мне это?

(b) Предположим, что эта же система имеет TLB (переносной буфер перевода) с 32 записями. Кроме того, предположим, что программа содержит инструкции, умещающиеся на одной странице, и последовательно считывает длинные целочисленные элементы из массива, охватывающего тысячи страниц. Насколько эффективен будет TLB в этом случае?


person user126885    schedule 27.06.2016    source источник


Ответы (2)


Для (а) да, вы правы. Это 2^36. 12 бит для адреса внутри страницы и 36 бит для номера страницы. Виртуальный адрес не имеет способов назначения битов. Оригинальное решение представлено в «Современных операционных системах, 4-е издание, решения проблем» Таненбаума, и я думаю, что оно содержит ошибку.

Вот еще одна задача Таненбаума:

Машина имеет 48-битные виртуальные адреса и 32-битные физические адреса. Страницы 8 КБ. Сколько записей необходимо для одноуровневой линейной таблицы страниц?

И ответ (в той же книге):

Со страницами 8 КБ и 48-битным виртуальным адресным пространством количество виртуальных страниц составляет 2^48/2^13, что равно 2^35 (около 34 млрд).

person Ришат Ризванов    schedule 18.11.2018

(a) Нам нужна одна запись для каждой страницы, или 2^24 = 16 × 1024 × 1024 записей, так как в поле номера страницы 36 = 48 − 12 бит.

(b) Адреса инструкций достигнут 100% в TLB. Страницы данных будут иметь 100 попаданий, пока программа не перейдет к следующей странице данных. Поскольку страница размером 4 КБ содержит 1024 длинных целых числа, на каждые 1024 ссылки на данные будет один промах TLB и один дополнительный доступ к памяти.

person Ajaya Mandal    schedule 25.08.2017
comment
Не могли бы вы уточнить ответ b, так как один промах TLB, а TLB имеет 100% попадание. - person susan097; 23.08.2018