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 використовували різницю в часі в кеші.

Див. також: Будова процесора: виконавчі блоки та кеш, Ієрархія пам’яті та рядки кешу, Кеші