Кэш-память процессора (L1, L2, L3)

⏱️ 35 минут 📚 Архитектура процессора

# Кэш-память процессора

**Кэш** - сверхбыстрая память внутри процессора для хранения часто используемых данных.

## Иерархия памяти

```
Регистры CPU < 1 нс Байты
Кэш L1 ~1 нс 32-64 KB на ядро
Кэш L2 ~3-5 нс 256-512 KB на ядро
Кэш L3 ~10-20 нс 8-64 MB общий
ОЗУ (RAM) ~50-100 нс 8-64 GB
SSD ~100 мкс 256 GB - 4 TB
HDD ~5-10 мс 1-20 TB
```

## Уровни кэша

### L1 Cache (Level 1)
- **Самый быстрый** (1 такт процессора)
- **Самый маленький** (32-64 KB)
- Разделен на:
- L1i (instruction) - инструкции
- L1d (data) - данные
- Индивидуальный для каждого ядра

### L2 Cache (Level 2)
- **Средняя скорость** (3-5 тактов)
- **Средний размер** (256-512 KB)
- Индивидуальный для каждого ядра
- Хранит данные и инструкции

### L3 Cache (Level 3)
- **Медленнее L2, но быстрее RAM** (10-20 тактов)
- **Большой размер** (8-64 MB)
- **Общий для всех ядер**
- Обмен данными между ядрами

## Принцип работы

1. **Cache Hit** - данные найдены в кэше (быстро)
2. **Cache Miss** - данных нет, загрузка из RAM (медленно)

### Пример:
```
Цикл for (i=0; i<1000000; i++):
- Первая итерация: cache miss (загрузка из RAM)
- Остальные: cache hit (данные уже в кэше)
```

## Влияние на производительность

**Больше кэша = выше производительность:**
- Игры: L3 32MB vs 64MB = +5-10% FPS
- Компиляция: большой кэш ускоряет сборку
- Базы данных: кэш критичен для запросов

## Кэш-линии

- Данные загружаются блоками (64 байта)
- Принцип локальности:
- **Временная**: недавно использованные данные
- **Пространственная**: соседние данные