Как процессор делает запрос данных через TLB и кэши?

Я наблюдаю последние несколько микроархитектур Intel (Nehalem / SB / IB и Haswell). Я пытаюсь понять, что происходит (на довольно упрощенном уровне), когда делается запрос данных. Пока у меня есть эта грубая идея:

Механизм выполнения делает запрос данных«Контроль памяти» запрашивает L1 DTLBЕсли вышеупомянутое пропускает, L2 TLB теперь запрашивается

В этот момент могут произойти две вещи: промах или попадание:

Если его попадание, то CPU пытается использовать кэши L1D / L2 / L3, таблицу страниц, а затем основную память / жесткий диск в таком порядке?

Если ошибка, то ЦП запрашивает (встроенный контроллер памяти?) Запросить проверку таблицы страниц, хранящейся в ОЗУ (правильно ли я получил роль IMC?).

Если бы кто-то мог отредактировать / предоставить набор маркеров, которые предоставляют базовый «обзор» того, что процессор делает из запроса данных механизма выполнения, включая

L1 DTLB (данные TLB)L2 TLB (данные + инструкция TLB)L1D Cache (кэш данных)L2 кеш (данные + кеш инструкций)L3 кеш (данные + кеш инструкций)Часть процессора, которая контролирует доступ к основной памятиТаблица страниц

это будет наиболее ценно. Я нашел несколько полезных изображений:

http://www.realworldtech.com/wp-content/uploads/2012/10/haswell-41.pnghttp://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Intel_Core2_arch.svg/1052px-Intel_Core2_arch.svg.png

но они на самом деле не разделяли взаимодействие между TLB и кешами.

ОБНОВЛЕНИЕ: изменили выше, как ясчитать Теперь я понимаю. TLB просто получает физический адрес от виртуального. Если есть промах - у нас проблемы, и нам нужно проверить таблицу страниц. Если есть попадание, мы просто проходим вниз по иерархии памяти, начиная с L1D-кэша.

Ответы на вопрос(2)

Ваш ответ на вопрос