В чем разница между виртуально индексируемым и виртуально индексируемым и виртуально тегированным пейджингом? - PullRequest
0 голосов
/ 04 июля 2018

Кроме того, укажите, есть ли другие методы для индексирования и тегирования?

1 Ответ

0 голосов
/ 08 июля 2018

Кэш ЦП разделен на строк кэша , которые имеют фиксированный размер (обычно 64 байта). В общем, мы можем сказать, что каждая строка кэша идентифицируется по адресу памяти, к которому она относится (последние 6 бит отбрасываются, поскольку они относятся к смещению внутри строки кэша ).

Для ускорения поиска адрес разделен на две части: index и tag . index обращается к множеству строк кэша, положение которого известно: доступ к множеству действительно быстрый. Внутри N-стороннего ассоциативного набора у вас есть N строк кэша в произвольном порядке, которые будут определены с помощью тега .

Теперь мы сказали, что tag и index являются частями адреса памяти, но какой тип адреса? Физический или виртуальный?

Теоретически вы можете иметь любую комбинацию с физическим индексом (PI), с физическим тегом (PT), с виртуальным индексированием (VI) и практически помечены (VT). У каждой комбинации есть свои плюсы и минусы. В общем, мы можем сказать, что использование физических адресов имеет недостаток, заключающийся в необходимости ожидания преобразования виртуального адреса (что может быть дорогостоящим в случае пропуска TLB), с другой стороны, использование виртуальных адресов, хотя и быстрее, может вызывают проблемы когерентности, поскольку несколько виртуальных адресов могут отображаться на один и тот же физический адрес, а сопоставления могут со временем меняться, что требует очистки кэша.

По этим причинам PIPT используется только для медленного кэша (например, L2 / L3), VIVT используется редко, PIVT почти никогда не используется, а VIPT используется для fast ( и маленький) кеш.

Преимущество использования VIPT состоит в том, что, хотя поиск может начинаться параллельно с трансляцией адресов (и, следовательно, он быстрее, чем PIPT), он использует физический адрес для последней части поиска, поэтому при правильно выбранном размере для index это может предотвратить проблемы когерентности. Правильный размер для индекса зависит от размера страницы : перевод между виртуальным и физическим адресом выполняется на уровне страницы , если index выбран таким образом, что он всегда относится к смещению строки кэша внутри страницы , это не будет иметь никакого значения, если мы используем физический адрес или виртуальный адрес. К сожалению, это ограничивает размер кэша, и, следовательно, причина, по которой он используется только для быстрого и небольшого кэша (например, L1).

...