Архитектура памяти процессора: от регистров до кэша

Иван Корнев·03.05.2026·6 мин

К внутренним запоминающим устройствам самого процессора (CPU) относятся регистры и кэш-память (уровней L1, L2 и часто L3). ПЗУ (постоянное запоминающее устройство) физически не является частью вычислительного ядра CPU, хотя микрокод процессора может храниться во встроенной энергонезависимой памяти. Регистры обеспечивают мгновенный доступ к данным для арифметики, кэш сокращает задержки при обращении к оперативной памяти, а ПЗУ отвечает за первичную инициализацию системы.

Понимание этой иерархии критично для разработчиков, стремящихся оптимизировать код, и пользователей, выбирающих оборудование. Разберем каждый элемент подробно.

Оглавление

Регистры: сверхбыстрая память ядра

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

Основные функции

  • Хранение операндов: Числа, над которыми прямо сейчас выполняется сложение, умножение или логическая операция.
  • Управление потоком: Хранение адреса следующей команды (счетчик команд — IP/EIP/RIP) и указателя стека (SP/ESP/RSP).
  • Статус системы: Регистр флагов (EFLAGS/RFLAGS) хранит информацию о результате последней операции (был ли ноль, переполнение, знак числа).

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

Количество регистров ограничено архитектурой (например, в x86-64 доступно 16 регистров общего назначения). Если компилятору не хватает регистров для хранения всех активных переменных, он вынужден сбрасывать лишние данные в стек (операция spilling), что резко снижает скорость работы программы из-за обращений к более медленной памяти.

Для программистов: использование ключевых слов вроде register в старых стандартах C/C++ уже не гарантирует размещение переменной в регистре. Современные компиляторы (GCC, Clang, MSVC) самостоятельно оптимально распределяют регистры на основе графа живучести переменных.

Кэш-память: многоуровневый буфер (L1, L2, L3)

Поскольку оперативная память (DRAM) работает в десятки раз медленнее процессора, между ними располагается кэш — статическая память (SRAM), интегрированная в кристалл CPU.

Уровни кэша

УровеньСкоростьОбъем (типичный)Особенности
L1 (Level 1)Максимальная32–128 КБ на ядроРазделен на кэш инструкций (L1i) и данных (L1d). Доступен только своему ядру.
L2 (Level 2)Высокая256 КБ – 2 МБ на ядроЧасто объединяет данные и инструкции. Быстрее L3, но медленнее L1.
L3 (Level 3)Средняя16–128+ МБ на процессорОбщий ресурс для всех ядер. Снижает нагрузку на контроллер памяти.

Принцип локальности

Эффективность кэша строится на двух принципах:

  1. Временная локальность: Если данные были использованы недавно, они скорее всего понадобятся снова (поэтому они остаются в L1/L2).
  2. Пространственная локальность: Если обратились к ячейке памяти, скорее всего, скоро понадобятся соседние ячейки (поэтому кэш загружает данные целыми строками — cache lines, обычно по 64 байта).

Кэш-промах (Cache Miss) — ситуация, когда процессор не находит нужные данные в кэше и вынужден идти в оперативную память. Задержка при этом возрастает с ~1 нс (L1) до ~100 нс (DRAM). Для процессора это эквивалентно ожиданию в течение сотен тактов.

Миф о ПЗУ: где оно находится на самом деле?

В вопросе «что относится к CPU» часто возникает путаница с ПЗУ (ROM). Важно разграничить понятия:

  1. ПЗУ не является частью вычислительного конвейера. Процессор не хранит в ПЗУ промежуточные результаты вычислений.
  2. Физическое расположение. Чипы BIOS/UEFI (Flash-память, выполняющая роль ПЗУ) находятся на материнской плате, а не внутри кристалла CPU.
  3. Исключение: Микрокод. Внутри современных процессоров действительно есть небольшая область энергонезависимой памяти (или защищенной SRAM), хранящая микрокод — низкоуровневые инструкции, которые транслируют сложные команды x86/ARM во внутренние микрооперации процессора. Однако пользователь не имеет доступа к этой памяти для хранения своих данных.

Таким образом, говоря о «запоминающих устройствах процессора» в контексте производительности приложений, мы рассматриваем только регистры и кэш. ПЗУ относится к инфраструктуре платформы, а не к ресурсам CPU для выполнения задач пользователя.

Как работает иерархия памяти

Процесс получения данных процессором выглядит как фильтр:

  1. Запрос: Исполнительному блоку нужны данные по адресу X.
  2. Проверка L1: Данные есть? Да -> использовать (1-4 такта). Нет -> шаг 3.
  3. Проверка L2: Данные есть? Да -> скопировать в L1 и использовать (10-20 тактов). Нет -> шаг 4.
  4. Проверка L3: Данные есть? Да -> скопировать в L2/L1 и использовать (30-50 тактов). Нет -> шаг 5.
  5. Обращение к RAM: Контроллер памяти запрашивает данные из оперативной памяти (100-300 тактов). Данные поступают в L3, затем каскадом поднимаются выше.

Сравнительная таблица характеристик

Тип памятиРасположениеЭнергозависимостьВремя доступа (латентность)Основная задача
РегистрыВнутри ядраДа (теряются при выкл.)< 1 нсВычисления, адресация
Кэш L1Внутри ядраДа~1 нсБуфер самых частых данных
Кэш L2Внутри ядра (или рядом)Да~3-5 нсБуфер второго уровня
Кэш L3На кристалле CPU (общий)Да~10-20 нсСинхронизация ядер, предзагрузка
ПЗУ (BIOS)На материнской платеНет> 50-100 нс*Загрузка системы, конфигурация

*Латентность ПЗУ варьируется в зависимости от интерфейса подключения и не участвует в цикле выполнения обычных программ.

Частые ошибки в понимании архитектуры

  • «Чем больше кэш, тем всегда лучше». Это верно лишь отчасти. Большой кэш имеет большую латентность. Для игр важнее высокая частота и быстрый L1/L2, для серверов баз данных — огромный L3.
  • «ПЗУ ускоряет работу программ». Нет. ПЗУ считывается только при включении компьютера или обновлении прошивок. Во время работы игры или браузера ПЗУ не задействовано.
  • «Регистры можно расширить». Количество архитектурных регистров фиксировано стандартом процессора (ISA). Пользователь не может «добавить» регистры, это вопрос выбора архитектуры (например, переход с x86 на ARM или RISC-V может дать иное количество регистров).

FAQ: Вопросы и ответы

В чем разница между кэшем и оперативной памятью? Кэш построен на триггерах (SRAM), он очень быстрый, дорогой и занимает много места на кристалле. Оперативная память (DRAM) использует конденсаторы, она дешевле, плотнее, но требует постоянной регенерации и работает медленнее.

Можно ли очистить кэш процессора вручную? Нет, управлением кэшем занимается аппаратный контроллер процессора. Программно можно лишь подсказать процессору не кэшировать определенные данные (инструкции типа _mm_stream_ в SIMD), но полностью «очистить» его нельзя, да и не нужно.

Почему в характеристиках CPU указывают объем только L3? Объемы L1 и L2 строго стандартизированы для конкретного ядра и обычно неизменны в рамках одного поколения. L3 же варьируется от модели к модели (например, у Ryzen 7 и Ryzen 9 разные объемы L3), поэтому именно он используется как маркетинговый дифференциатор.

Относится ли видеопамять (VRAM) к запоминающим устройствам процессора? Нет. Видеопамять принадлежит графическому ускорителю (GPU). В системах с интегрированной графикой GPU использует часть общей оперативной памяти (RAM), но это не является внутренней памятью процессорных ядер.