Омонимы, когда речь идет о виртуальных кешах, это когда один виртуальный адрес соответствует нескольким физическим адресам.
Одним из известных решений для решения проблемы омонимов в виртуальном кеше является использование физических кешей для кеша.;то есть: индексировать кэш с частью виртуального адреса, но сделать тег частью физического адреса.Я не понимаю, как это работает.
В моем понимании процессор отправляет виртуальный адрес в кэш.Как процессор знает, какой физический тег проверять, если он не отправляет какой-либо физический тег в кеш?Например, при обычном физическом кеше, если вы посмотрите, существует ли 00001111 в кеше, где 0000 - биты тега, а 1111 - биты индекса, вы индексируете кэш на 1111, и если вы получитехит, посмотрите, является ли тег для индекса 1111 0000.
Однако, если ваш виртуальный адрес равен 00001111, что соответствует физическому адресу, скажем, 10101010, процессор отправит 00001111 в виртуальный кеш,Как кэш узнает, какие биты физических тегов нужно проверить (1010), если эти теги отсутствуют в виртуальном адресе, отправленном процессором?Откуда берется физический адрес?
Проще говоря, скажем, VA 1 сопоставляется с 3 физическими адресами: 2, 3 и 4. Если мой процессор запрашивает кэш с виртуальным адресом 1, как работает кэш?даже знаете, если он должен искать 2, 3 и 4?Разве это не двусмысленно, какой физический адрес я пытаюсь найти?