it-roy-ru.com

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

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

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

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

21
mezamorphic

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

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

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

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

29
Hindol

Следующая последовательность после загрузки первого адреса инструкции (т.е. виртуального адреса) в ПК делает концепцию пропуска 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

2
bharat

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

0
sir_osthara