СЕКРЕТЫ кэша процессора: КАК CPU работает с памятью на примере Go Concurrency
Igor Panasyuk
В этом видео разбираем секреты кэша процессора и то, как CPU работает с памятью на примере Go Concurrency. Поговорим, зачем нужен кэш, почему обход матрицы по строкам может быть быстрее обхода по столбцам, как работают кэш-линии, адресация, уровни L1, L2, L3, inclusive и exclusive cache. Разберём политики замещения вроде LRU, LFU, FIFO и LIFO, а затем перейдём к самой интересной части — когерентности кэшей, протоколу MESI и тому, почему несколько ядер могут видеть разные значения в памяти. На практических DEMO покажу, как это проявляется в Go, как атомарные операции включают согласованность между ядрами, какой оверхед дают такие инструкции и почему false sharing может резко замедлить многопоточный код. Видео будет полезно Go-разработчикам, backend-инженерам и всем, кто хочет глубже понимать производительность, concurrency, memory model, cache contention и низкоуровневую работу CPU. Таймкоды: 00:00 - Введение 00:17 - Мотивация. Зачем нужен кэш? 00:48 - Использование кэша на практике (DEMO) 03:25 - Роль кэша в процессоре. Стратегии доступа к кэшу 06:50 - Кэш‑линии и их размер 07:35 - Кэш‑линии и их размер (DEMO) 08:48 - Адресация в кэш‑линиях 11:27 - Уровни кэша (L1, L2, L3). Размещение (inclusive, exclusive) 14:56 - Политики замещения (LRU, LFU, FIFO, LIFO) 17:17 - Когерентность кэша (DEMO) 21:05 - Когерентность кэшей 24:02 - Протоколы когерентности кэша (MESI) 25:57 - Многопоточные инструкции и согласованность 27:18 - Синхронный доступ в ассемблере (DEMO) 29:27 - Оверхед...