Как происходит кеширование пропадает точно? - PullRequest
0 голосов
/ 04 ноября 2011

Я пытаюсь понять, как именно происходит потеря кэша. Пока я так понимаю:
Процессор запрашивает адрес x, ищет его в собственном (L1 / L2) кэше. Если его там нет, то это ошибка кэша.
Чего здесь не хватает, так это как именно он узнает, что информация не доступна в кеше? Какую информацию резервируют строки кэша? Пока я знаю, что строка кэша должна содержать эту информацию:

Address of the information, Data within that address.  

Имея эту информацию, CPU может выяснить, доступен ли адрес в его кеше или нет. Проблема возникает, когда у нее есть неверная копия данных. Поэтому мой вопрос будет:
Как процессор определяет, являются ли некоторые данные действительными или недействительными?
Есть ли флаги в каждой строке кэша? Он запрашивает протокол для этой информации? Если да, где хранится информация протокола (Кэш / Память / В другом месте)?
Я все еще ищу, но я был бы признателен за любые ресурсы по этому вопросу.

- EDIT
Подобный вопрос задан здесь , но пока нет ответа. Кажется, нет никакой подробной информации о протоколе MESI. Любая помощь приветствуется.

- EDIT2
Я нашел больше информации в MESI CMP Directory . В нем говорится, что «внутрисхемный каталог контроллера кэша L2 расположен вместе с соответствующими блоками кэша в кэше L2», но ничего о том, где находится информация контроллера кэша L1.

1 Ответ

1 голос
/ 04 ноября 2011

Строка кэша (L1 или L2) содержит следующую информацию:

dirty_bit | many_memory_word

Когда грязный бит содержит 1, это означает, что кэш строки не похож на соответствующий вБАРАН.когда он содержит 0, это означает, что кэш строки содержит точную копию строки памяти, фактически находящейся в ОЗУ.

Когда ЦП запрашивает адрес в ОЗУ.перевод выполняется с использованием MTL, чтобы иметь соответствующий адрес кэша строки, который, как предполагается, содержит информацию.

Если адрес не найден, это означает, что информация не является мокрой в строке кеша, и тогда потеря кеша возрастет.Если адрес в кеше найден, тогда, если грязный бит строки, запрошенной в кеше, установлен в 1, потеря кеша возрастет, и информация, фактически находящаяся в кеше строки, будет записана обратнов памяти.адрес строки в кэше заставляет процессор знать, какой адрес соответствует в оперативной памяти RAM.

, поэтому, когда ЦП запрашивает информацию из памяти.Эта информация (и многое другое) помещается в строковый кеш. dirty_bit установлен на 0 , что означает, что строка кэша представляет точную копию строки памяти в ОЗУ.

Тогда, когда writing operations появится в кэше строк.CPU устанавливает грязный бит в 1, что означает, что строка больше не представляет копию, фактически присутствующую в ОЗУ.так что если reading operation накапливается по адресу в кеше, для которого грязный бит установлен в 1, то cache miss будет расти

Edition: ссылка посмотрите здесь для более

...