Фактически проиндексированный физически помеченный кеш Синоним
Я не могу полностью понять концепцию синонимов или псевдонимов в кэшах VIPT.
Рассмотрим разделенный адрес как:
Здесь предположим, что у нас есть 2 страницы с разными виртуальными машинами, сопоставленными с одним и тем же физическим адресом (или номером кадра).
Часть pageno VA (биты 13-39), которые отличаются, преобразуется в PFN PA(биты 12-35), и PFN остается одинаковым для обоих VA, поскольку они отображаются в один и тот же физический кадр.
Теперь часть смещения страницы (биты 0-13) обоих VA совпадают с данными, к которым они хотят получить доступ из определенного кадра, но не являются одинаковыми.
Поскольку часть смещения страницы обоих VA одинакова, биты (5-13) также будут одинаковыми, поэтому индекс или набор no одинаков и, следовательно, не должно быть псевдонимов, поскольку только один набор или индекс no отображается в физический кадр нет.
Как бит 12, как показано на схеме, отвечает за наложение имен? Я не могу этого понять.
Было бы здорово, если бы кто-то мог привести пример с помощью адресов.
Благодарю.
1 ответ
Смещение страницы составляет биты 0-11, а не 0-13. Посмотрите на нижнюю диаграмму: смещение страницы - это младшие 12 бит, поэтому у вас есть 4 тыс. Страниц (например, x86 и другие распространенные архитектуры).
Если какой-либо из битов индекса идет выше смещения страницы, VIPT больше не ведет себя как PIPT со свободной трансляцией для битов индекса. Это тот случай, здесь.
Процесс может иметь одну и ту же физическую страницу (фрейм), сопоставленную с двумя разными виртуальными страницами.
Ваше утверждение, что pageno часть VA (биты 13-39), которые отличаются, переводится в PFN PA(биты 12-35), и PFN остается тем же для обоих VA, полностью поддельным. Перевод может изменить бит № 12. Таким образом, один из битов индекса действительно является виртуальным, а не физическим, поэтому две записи для одной и той же физической строки могут идти в разных наборах.
Я думаю, что моя главная путаница связана с диапазоном смещения страниц. Это одинаково для PA и VA (то есть 0-11) или 0-12 для VA и 0-11 для PA? Будут ли они всегда одинаковыми?
Это всегда то же самое для PA и VA. Смещение страницы не отмечено в части ВА вашей диаграммы, только диапазон битов, используемых в качестве индекса.
Не было бы никакого смысла в том, чтобы все было по-другому: виртуальная и физическая память могут быть адресно-байтовые (или адресно-словарные). И, конечно, фрейм страницы (физическая страница) имеет тот же размер, что и виртуальная страница. Сдвиг адреса вправо или влево при переводе с виртуального на физический не имеет смысла.
Как обсуждено в комментариях:
В конце концов я нашел http://www.cse.unsw.edu.au/~cs9242/02/lectures/03-cache/node8.html (который включает диаграмму в вопросе!). Это говорит о том же: физические теги решают проблему омонима кэша как альтернативу сбросу при переключении контекста.
Но не проблема синонимов. Для этого ОС может обеспечить, чтобы бит 12 каждого VA = бит 12 каждого PA. Это называется окраской страницы.
Раскраска страницы также решит проблему омонимов без аппаратных средств, выполняющих перекрывающиеся биты тега, поскольку это дает еще 1 бит, который одинаков между физическим и виртуальным адресом. физ idx = virt idx.