EMZETT.
Войти

Кэш L1, L2 и L3

Коротко: Кэш — это очень быстрый буфер в процессоре, хранящий данные и команды, которые скоро понадобятся. Есть три уровня: L1 (маленький, самый быстрый), L2 (средний) и L3 (большой, общий, медленнее).

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

Подробности

УровеньТипичный размерВремя доступаПринадлежитОсобенность
L132 – 64 КБ (отдельно для данных и команд)~4 тактакаждому ядруСамый быстрый и маленький, разделён на L1d (данные) и L1i (команды)
L2256 КБ – 2 МБ~12 тактовобычно каждому ядруБуфер между L1 и L3
L38 – 128 МБ (и больше, 3D V-Cache)~40 тактоввсем ядрам вместеОбменивает данные между ядрами
RAMГБ~200+ тактоввнешняядля сравнения

Как это работает:

  • Данные загружаются строками кэша (cache line) по 64 байта.
  • Попадание (hit): данные там, быстро. Промах (miss): данные нужно подгрузить с следующего уровня, процессор ждёт.
  • Вытеснение (eviction): когда кэш полон, обычно выбрасывается строка, не использовавшаяся дольше всех (типа LRU).
  • Когерентность: если одно ядро изменило данные, остальные ядра должны обновить или отбросить свои копии (протоколы вроде MESI).

Почему несколько уровней?

  • Один большой кэш был бы медленным (длиннее пути, больше управления).
  • Маленький быстрый L1 перехватывает большинство обращений. То, что не помещается, лежит в L2 и L3.
  • Так сочетаются высокая скорость и достаточная ёмкость.

На практике:

  • Программы работают быстрее, когда читают данные по порядку (массивы), а не скачками (связные списки, случайный доступ).
  • Игры и базы данных сильно выигрывают от большого L3 (AMD X3D, 3D V-Cache).
  • Размер кэша — наряду с частотой и числом ядер — критерий покупки.
  • Атаки вроде Spectre и Meltdown использовали различия во времени в кэше.

См. также: Устройство процессора: исполнительные блоки и кэш, Иерархия памяти и строки кэша, Кэши