Медленная загрузка программ при мощном процессоре или, наоборот, мгновенный повторный запуск приложения — оба эффекта объясняются работой встроенного кэша: небольшой, но очень быстрой памяти, которая хранит копии часто используемых данных. Проверить её влияние просто: первый запуск тяжёлой программы занимает заметно больше времени, чем второй, потому что часть данных уже лежит в кэше и не читается заново с диска или из оперативной памяти.

В этой статье разберём, как устроен кэш на уровне процессора, операционной системы и приложений, почему он ускоряет работу и когда его стоит очищать. Материал подойдёт и тем, кто хочет понять характеристики процессора при покупке, и тем, кто диагностирует «тормоза» компьютера.

Что такое встроенный кэш и зачем он нужен

Кэш — это промежуточный буфер между быстрым устройством и медленным источником данных. Процессор выполняет инструкции за доли наносекунды, а обращение к оперативной памяти занимает в десятки раз больше времени. Чтобы вычислительные ядра не простаивали в ожидании данных, между ними и ОЗУ размещают кэш-память.

Принцип работы строится на двух закономерностях. Первая — временная локальность: если данные использовались только что, они, скорее всего, понадобятся снова. Вторая — пространственная локальность: рядом с запрошенной ячейкой памяти обычно лежат данные, которые понадобятся следующими. Кэш-контроллер загружает данные не по одному байту, а блоками — так называемыми строками кэша (cache line).

Аналогичный принцип работает и на уровне программ: браузер кэширует картинки и скрипты сайтов, операционная система — файлы и результаты запросов. Разница лишь в том, где физически хранятся данные — в кристалле процессора, в ОЗУ или на диске.

Уровни кэша процессора: L1, L2 и L3

В современных процессорах кэш организован иерархически. Чем ближе уровень к ядру, тем он быстрее и меньше по объёму.

  • ⚡ L1 — самый быстрый и самый маленький кэш, разделён на кэш инструкций и кэш данных, закреплён за каждым ядром.
  • 🔹 L2 — крупнее и медленнее L1, обычно также индивидуален для каждого ядра.
  • 🔹 L3 — общий для всех ядер кэш, самый объёмный, но самый медленный из трёх.
  • 💾 Дальше по иерархии идут оперативная память и накопитель — каждый следующий уровень больше и медленнее предыдущего.

Когда ядру нужны данные, контроллер последовательно проверяет L1, L2, L3 и только потом обращается к ОЗУ. Если данные найдены в кэше, это называется попаданием (cache hit), если нет — промахом (cache miss), и требуемый блок подгружается с нижнего уровня.

💡

Чем выше доля попаданий в кэш, тем меньше ядра простаивают в ожидании данных — поэтому объём и организация кэша напрямую влияют на реальную производительность процессора.