Содержание

Устройство и работа памяти центрального процессора (ЦП)

Введение

Центральный процессор (ЦП) выполняет команды, обрабатывает данные и управляет памятью. Одним из ключевых компонентов всей архитектуры является система памяти, которая обеспечивает хранение, доступ и обмен информацией между процессором, устройствами и программами.

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

Общая модель памяти

С точки зрения ЦП, память можно разделить на следующие уровни:

Каждый уровень иерархии работает быстрее, чем следующий, но объём уменьшается и стоимость возрастает.

1. Регистры

Регистр Назначение
`EAX`, `RAX` аккумулятор (результаты вычислений)
`EBX`, `RBX` база (часто используется в указателях)
`ECX`, `RCX` счётчик (используется в циклах, строковых операциях)
`EDX`, `RDX` данные (вторичные значения)
`ESI`, `RSI`, `EDI`, `RDI` источники и приёмники для операций
`ESP`, `RSP` указатель стека
`EBP`, `RBP` базовый указатель стека
`RIP` указатель команд (только в x64)
Флаги (`EFLAGS`, `RFLAGS`) хранят флаги результата: Zero, Carry, Overflow и т.д.

Регистры — это микросхемы внутри самого ядра ЦП, они обеспечивают мгновенный доступ к данным.

2. Кэш-память

Кэш — это быстрая SRAM-память, встроенная в процессор. Она уменьшает время доступа к данным из RAM.

Уровень Расположение Примерный размер Задержка (циклы ЦП)
L1 Внутри ядра 32–128 КБ 3–4
L2 Внутри/рядом с ядром 256 КБ – 1 МБ 10–15
L3 Общая на несколько ядер 2–64 МБ 30–60

Политика кэширования

Ассоциативность кэша

3. Оперативная память (RAM)

RAM (DRAM) используется как основное рабочее пространство программ.

Основные характеристики:

Виртуальная память

ОС предоставляет каждой программе собственное виртуальное адресное пространство, которое затем отображается в физическую память.

Компонент Описание
Page (страница) Блок виртуальной памяти, обычно 4 КБ
Page Table Таблица соответствий виртуальных и физических страниц
TLB (Translation Lookaside Buffer) Кэш отображений виртуальных адресов в физические

Сегментация и страничная организация

4. Внешняя память

Если данных слишком много для RAM, ОС может использовать файл подкачки или pagefile, хранящийся на SSD/HDD.

Тип Назначение
Swap/Pagefile Используется при нехватке оперативной памяти
MMAP файлов Отображение файла в память
Memory-mapped I/O Обмен данными с периферией через память

5. Доступ к памяти

Адресация

Типы доступа:

6. Работа с памятью в ассемблере

Пример

mov eax, [ebp+8]       ; чтение аргумента функции
mov [esp+4], eax       ; запись в стек
call memcpy            ; вызов функции с аргументами в памяти

Операции

7. Безопасность и память

Уязвимости:

Защита:

8. NUMA (Non-Uniform Memory Access)

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

Характеристика Описание
Узел NUMA (NUMA node) Набор: ЦП + локальная память
Локальный доступ Быстрый доступ к памяти своего узла
Удалённый доступ Доступ к памяти другого узла через межсоединение (Interconnect)
Примеры AMD EPYC, Intel Xeon, серверные платформы

Зачем важно:

Отображение в Linux:

numactl --hardware

Оптимизация

9. Prefetching (Предзагрузка данных)

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

Типы Prefetching:

Тип Описание
Hardware prefetch Автоматически кэширует данные при линейном доступе
Software prefetch Используется вручную с помощью инструкций (`prefetcht0`, `prefetchnta`)
Stride prefetch Улавливает шаблоны с фиксированным шагом доступа
Adjacent cache line prefetch Загрузка соседней строки кэша вместе с основной

Пример в ассемблере:

prefetcht0 [esi+eax] ; загрузить строку в кэш из памяти

Роль в производительности:

10. Intel VT-x и память

Intel VT-x — это технология виртуализации, обеспечивающая аппаратную поддержку виртуальных машин. В контексте памяти VT-x влияет на двойную трансляцию адресов.

Две стадии адресации:

Этап Описание
Guest Virtual Address (GVA) Адрес, используемый в ВМ (например, Linux)
Guest Physical Address (GPA) Адрес внутри виртуальной машины
Host Physical Address (HPA) Реальный адрес в памяти хоста

Extended Page Tables (EPT):

Зачем важно:

11. MMU (Memory Management Unit) на практике

MMU — аппаратный модуль, который преобразует виртуальные адреса в физические, реализует защиту памяти, контроль доступа и т.д.

Работа на практике:

Стадия Действие
Процессор генерирует виртуальный адрес Например, при обращении к переменной
MMU ищет отображение в TLB Если найдено — используется
Если нет — обращение к Page Table Чтение соответствующей страницы
Проверка прав доступа RWX-флаги, уровень привилегий
Генерация физического адреса Передача на контроллер памяти (MC)

Компоненты:

Компонент Назначение
TLB Кэш отображений виртуальных адресов
Page Table Основная таблица отображений
CR3 Регистр, указывающий на Page Table
PTE Page Table Entry — описание одной страницы

Ошибки и исключения:

Связь с безопасностью:

12. Заключение

Память ЦП — это многоуровневая, иерархическая и сложная система, включающая:

Понимание всех этих слоёв особенно важно для:

ЦП использует сложную иерархию памяти — от регистров до кэша и RAM, включая механизмы виртуализации и защиты. Это делает возможной как высокую производительность, так и изоляцию процессов.

Дополнительные ресурсы

Полезные ссылки