Формат строки кэша / макет - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы понять структуру строки кэша (не структуру кэша) и искал более подробное объяснение или рисунок, на котором поля содержатся в строке кэша, предпочтительно для процессоров Intel.

На компьютерных системах: взгляд программиста с Рэндал Э. Брайант;Дэвид Р. О'Халларон утверждает, что:

Строка кэша - это контейнер в кэше, в котором хранится блок, а также другая информация, такая как действительный бит и биты тега.

Однако это очень общий характер и не указывает, есть ли другие биты.Я искал в Интернете вышеупомянутую книгу и руководства Intel, но больше ничего не нашел.Единственное, что кажется легкодоступным, - это информация о компоновке кэша и записей таблицы страниц.

Является ли это какой-либо нераскрытой информацией или она слишком тривиальна, и единственными полями, доступными в строке кэша, являются данныеблок, действительный бит и бит тега (как указано в книге)?

1 Ответ

0 голосов
/ 19 октября 2018

В дополнение к самим данным каждая строка кэша будет обычно иметь метаданные когерентности (не только достоверность, использование MESI с четырьмя состояниями - это популярный метод отслеживания когерентности) и метаданные четности или ECC.

Для каждого набора (или иногда для каждой строки) также будет информация о замене.Не недавно использованный может быть реализован с битом на строку, который устанавливается при использовании и очищается, когда все биты использования установлены в наборе кэша.Основанное на дереве псевдо-наименее недавно использованное имеет двоичное дерево для каждого набора, где каждый бит указывает, использовалась ли его половина группы более недавно.

Кэш L2 или L3, который используется более чем одним L1, можетиметь метаданные, о которых кэши L1 содержат данные, чтобы избежать необходимости отправлять недействительные или обмениваться запросами на обновление всем L1.

Могут присутствовать другие метаданные для улучшения замены помимо базового метода (например, были предложены биты EvictMe), чтобы указать сжатое состояние, предоставить подсказки предварительной выборки и т. д. AMD Athlon украл биты ECC ECC для хранения информации ветвления в L2 (только обеспечивая защиту четности для памяти команд).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...