Пропуски TLB против промахов в кэше?

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

  • Доступ к Icache: пропустите

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

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

Ответ 3

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