TLB пропускает против кеша?

Может ли кто-нибудь объяснить, пожалуйста, разницу между пропуском TLB (трансляционного буфера) и кешем?

Мне кажется, я обнаружил, что TLB относится к какому-то адресу виртуальной памяти, но мне было не совсем понятно, что это на самом деле означает?

Я понимаю, что ошибки кеширования возникают, когда блок памяти (размер строки кеша) загружается в (L3?) Кеш, и если требуемый адрес не содержится в текущих строках кеша - это пропуск кеша.

3 ответа

Решение

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

С другой стороны, L1, L2, L3 кэшируют содержимое основной памяти.

Промах TLB происходит, когда отображение virtual memory address => physical memory address для процессора запрошенный виртуальный адрес отсутствует в TLB. Затем эта запись должна быть извлечена из таблицы страниц в TLB.

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

Следующая последовательность после загрузки первого адреса инструкции (т.е. виртуального адреса) в ПК делает концепцию пропуска TLB и пропуска кэша очень ясной.

Первая инструкция • Доступ к первой инструкции

  • Возьми стартовый ПК
  • Доступ к iTLB с помощью VPN, извлеченного из ПК: iTLBmiss
  • Вызвать обработчик iTLBmiss
  • Рассчитать адрес PTE
  • Если PTEs кэшируются в данных L1 и L2, ищите их по адресу PTE: там вы тоже пропустите
  • Доступ к таблице страниц в основной памяти: PTE недействителен: ошибка страницы
  • Вызвать обработчик ошибок страницы
  • Выделите фрейм страницы, прочитайте страницу с диска, обновите PTE, загрузите PTE в iTLB, перезапустите выборку • Теперь у вас есть физический адрес

  • Доступ к Icache: скучаю

  • Отправить запрос на пополнение на более высокий уровень: вы пропустите везде
  • Отправить запрос контроллеру памяти (северный мост)
  • Доступ к основной памяти
  • Чтение строки кэша
  • Пополните все уровни кеша, когда строка кеша возвращается к процессору
  • Извлеките соответствующую инструкцию из строки кэша со смещением блока. • Это самая длинная задержка в доступе к инструкции / данным.

источник https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

Как упоминаются оба процесса. С точки зрения производительности, потеря кэша не обязательно останавливает процессор. Небольшое количество кеш-ошибок может быть допущено с использованием алгоритмических методов предварительной выборки. Однако пропадание TLB приводит к остановке ЦП, пока TLB не будет обновлен с новым адресом. Другими словами, предварительная выборка может маскировать промах кэша, но не промах TLB.

Другие вопросы по тегам