Hardcachecoherence
Что такое cache line и cache coherence?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Cache line — минимальная единица передачи между memory и cache (обычно 64 байта). Доступ к одному байту грузит всю line. Кэш многоуровневый: L1 (~1ns), L2 (~3–10ns), L3 (~30–50ns), DRAM (~100–300ns).
MESI — состояния cache line:
M(odified) — грязный, только у этого ядра
E(xclusive) — чистый, только здесь
S(hared) — чистый, в нескольких ядрах
I(nvalid) — недействителенЗапись в Shared line → invalidate у других (лишние misses) — причина false sharing. Coherence traffic — broadcast invalidate-сообщений — bottleneck для 32+ ядер. NUMA — на больших машинах память узлов доступна через interconnect (медленнее). Real-time и игры учитывают cache behavior в Data-Oriented Design.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.