2016-11-18 8 views
0

Следующий вопрос гласит: Предположим, что ЦП выдает чтение для команды и что чтение не вызывает сбой страницы. Предполагая, что MMU использует TLB для преобразования адреса и что существует таблица с одной страницей, каково максимальное количество промахов в кэше, которые могут возникать на протяжении всего процесса перевода виртуального адреса на физический адрес и получение инструкции? (Предположим, что для DRAM существует только кеш уровня 1.)Как определить максимальное количество промахов в кеше, которые происходят при переводе виртуального на физический адрес?

Я понимаю, что TLB используется для уменьшения огромных косвенных затрат на выборку из памяти, но я не понимаю виртуальную память, достаточную для быть в состоянии ответить на этот вопрос - я также знаю, что пропуски TLB редки. В любом случае, я был бы признателен, если кто-нибудь поможет мне понять эту проблему.

Заранее благодарен!

ответ

0

TLB кэширует записи в таблице страниц. Пропуск TLB означает, что перевод нужно искать в таблице страниц.

ЦП имеет физический адрес таблицы страниц верхнего уровня, поэтому больше не требуется никаких переводов. (Это приведет к проблеме курица и яйцо).

Однако, считая, что аппаратное обеспечение (или программное обеспечение TLB-miss) для переходов по страницам обращается к таблице страниц через иерархию кэша (например, в современных процессорах x86), каждый доступ, необходимый для поиска правый PTE может пропустить в кеше данных.

Табличные таблицы обычно представляют собой многоуровневые структуры данных, например. 3 или 4 уровня на x86.

Обратите внимание, что реальные конструкции ЦП могут кэшировать записи в каталоге страниц внутри аппаратного обеспечения TLB-miss, отдельно от кэшей данных.

1

Я имею в виду, если вы хотите сценарий наихудшего случая на платформе с 4-уровневыми таблицами страниц, я думаю, что это что-то вроде 10 для разделенной нагрузки, которая пересекает две страницы, что составляет 1 + 1 + 4 + 4. Это 1 для фактической загрузки каждой из двух линий кэша, на которую нажимает груз, и 4 для каждого уровня таблицы страниц, на который должен идти процессор, раз 2 прогулки с тех пор, как затрагиваются две страницы.

Вы также можете просмотреть структуру таблицы страниц - возможно, есть сценарии, где вы можете получить не один раз промах на уровень, например, если сами структуры поискового вызова могут быть смещены или если есть какой-либо поиск вовлеченный в перевод (а не прямой поиск). Вероятно, есть и другие причины, по которым вы можете пострадать еще больше промахов в кеше.

Было бы очень сложно организовать ситуацию, когда вы пострадали от многих промахов, поскольку даже если вы полностью проиграете TLB, PTE более высокого уровня могут появиться на некотором уровне кеша, или сам ЦП может кэшировать их внутренне (в не архитектурном кэше).

 Смежные вопросы

  • Нет связанных вопросов^_^