Ответ на ваш вопрос - зависит от обстоятельств. Это строго проектное решение ЦП, которое обеспечивает баланс между производительностью и сложностью.
Возьмем, к примеру, новейшие процессоры Intel Core - они физически помечены и виртуально индексированы (по крайней мере, согласно http://www.realworldtech.com/sandy-bridge/7/). Это означает, что кеши могут выполнять поиск только в чисто физическом адресном пространстве, чтобы определить, есть ли строка там или нет. Однако, поскольку L1 32k, 8-сторонний ассоциативный, это означает, что он использует 64 набора, поэтому вам нужны только адресные биты с 6 по 11, чтобы найти правильный набор. Как оказалось, виртуальные и физические адреса в этом диапазоне совпадают, поэтому вы можете искать DTLB параллельно с чтением набора кешей - известный трюк (см. - http://en.wikipedia.org/wiki/CPU_cache для хорошего объяснения).
Теоретически можно создать виртуальный кеш с тегами index + virtualy, который избавит от необходимости проходить трансляцию адресов (поиск TLB, а также обход страниц в случае промахов TLB). Однако это вызовет множество проблем, особенно с псевдонимом памяти - случаем, когда два виртуальных адреса отображаются на один и тот же физический.
Скажем, core1 имеет виртуальные кеши с адресом A в таком полностью виртуальном кэше (он отображается на физический адрес C, но мы еще не сделали эту проверку). core2 записывает в виртуальный адрес B, который соответствует тому же физическому адресу C - это означает, что нам нужен какой-то механизм (обычно «snoop», термин, придуманный Джимом Гудманом), который делает недействительной эту строку в core1, управляя слиянием данных и управлением согласованностью. если нужно. Однако core1 не может ответить на этот snoop, поскольку он не знает о виртуальном адресе B и не хранит физический адрес C в виртуальном кеше. Итак, вы можете видеть, что у нас есть проблема, хотя это в основном актуально для строгих систем x86, другие архитектуры могут быть более слабыми и допускать более простое управление такими кешами.
Что касается других вопросов - я не могу придумать реальной связи с PAT, кеш уже разработан и не может быть изменен для разных типов памяти. Тот же ответ на другой вопрос - HW в основном находится ниже различия между режимом пользователя / ядра (за исключением механизмов, которые он обеспечивает для проверки безопасности, в основном различных колец).
person
Leeor
schedule
27.09.2013