Кеш L1, L2 і L3
Коротко: Кеш — це дуже швидкий буфер у процесорі, що зберігає дані та команди, які незабаром знадобляться. Є три рівні: L1 (малий, найшвидший), L2 (середній) і L3 (великий, спільний, повільніший).
Докладніше: Основна пам’ять для процесора дуже повільна: одне звернення триває як сотні кроків обчислень. Кеш згладжує це спостереженням, що програмам багаторазово потрібні ті самі дані (часова локальність) і сусідні дані (просторова локальність). Кілька рівнів — компроміс: що швидша пам’ять, то вона дорожча й менша.
Подробиці
| Рівень | Типовий розмір | Час доступу | Належить | Особливість |
|---|---|---|---|---|
| L1 | 32 – 64 КБ (окремо для даних і команд) | ~4 такти | кожному ядру | Найшвидший і найменший, поділений на L1d (дані) та L1i (команди) |
| L2 | 256 КБ – 2 МБ | ~12 тактів | зазвичай кожному ядру | Буфер між L1 і L3 |
| L3 | 8 – 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 використовували різницю в часі в кеші.
Див. також: Будова процесора: виконавчі блоки та кеш, Ієрархія пам’яті та рядки кешу, Кеші