Как виртуально индексируемый физически помеченный кеш решает проблему омонимов? - PullRequest
0 голосов
/ 04 марта 2019

Омонимы, когда речь идет о виртуальных кешах, это когда один виртуальный адрес соответствует нескольким физическим адресам.

Одним из известных решений для решения проблемы омонимов в виртуальном кеше является использование физических кешей для кеша.;то есть: индексировать кэш с частью виртуального адреса, но сделать тег частью физического адреса.Я не понимаю, как это работает.

В моем понимании процессор отправляет виртуальный адрес в кэш.Как процессор знает, какой физический тег проверять, если он не отправляет какой-либо физический тег в кеш?Например, при обычном физическом кеше, если вы посмотрите, существует ли 00001111 в кеше, где 0000 - биты тега, а 1111 - биты индекса, вы индексируете кэш на 1111, и если вы получитехит, посмотрите, является ли тег для индекса 1111 0000.

Однако, если ваш виртуальный адрес равен 00001111, что соответствует физическому адресу, скажем, 10101010, процессор отправит 00001111 в виртуальный кеш,Как кэш узнает, какие биты физических тегов нужно проверить (1010), если эти теги отсутствуют в виртуальном адресе, отправленном процессором?Откуда берется физический адрес?

Проще говоря, скажем, VA 1 сопоставляется с 3 физическими адресами: 2, 3 и 4. Если мой процессор запрашивает кэш с виртуальным адресом 1, как работает кэш?даже знаете, если он должен искать 2, 3 и 4?Разве это не двусмысленно, какой физический адрес я пытаюсь найти?

1 Ответ

0 голосов
/ 04 марта 2019

Термин «фактически проиндексирован» просто означает, что для индекса не требуется никакого перевода.Это происходит, если индекс полностью включен в часть page_offset преобразования виртуальных адресов в физические.

Предположим, у вас есть страницы размером 4 КБ.Это означает, что 12 LSB адресов не нуждаются в каком-либо переводе.

Теперь предположим, что у вас кэш-память 32 КБ (2 ^ 15), 64b (2 ^ 6) строк и ассоциативность 8.количество строк составляет 2 ^ 9, а количество наборов 2 ^ 6.Ваш индекс составляет 6 бит.Поскольку строки равны 64b, смещение линии равно 6b, а часть (индекс + смещение) равна 12b.Вы можете заметить, что он равен размеру смещения страницы и требует перевода no .Это то, что называется виртуально индексируемым кешем.

Таким образом, в виртуально индексированном кеше вы можете выполнять параллельное преобразование адреса MSB адреса и извлечение тега из кэша с помощью LSB нетранслируемого адреса.И после того, как адрес переведен, вы сравниваете свой физический тег с переведенным адресом, без какого-либо риска омонима.

Каким-то образом термин виртуально проиндексированный вводит в заблуждение, поскольку он может применяться только тогда, когда физические и виртуальные индексы идентичны.

...