Центральный процессор (ЦП) выполняет команды, обрабатывает данные и управляет памятью. Одним из ключевых компонентов всей архитектуры является система памяти, которая обеспечивает хранение, доступ и обмен информацией между процессором, устройствами и программами.
Понимание того, как устроена память на уровне процессора, необходимо для:
С точки зрения ЦП, память можно разделить на следующие уровни:
Каждый уровень иерархии работает быстрее, чем следующий, но объём уменьшается и стоимость возрастает.
| Регистр | Назначение |
|---|---|
| `EAX`, `RAX` | аккумулятор (результаты вычислений) |
| `EBX`, `RBX` | база (часто используется в указателях) |
| `ECX`, `RCX` | счётчик (используется в циклах, строковых операциях) |
| `EDX`, `RDX` | данные (вторичные значения) |
| `ESI`, `RSI`, `EDI`, `RDI` | источники и приёмники для операций |
| `ESP`, `RSP` | указатель стека |
| `EBP`, `RBP` | базовый указатель стека |
| `RIP` | указатель команд (только в x64) |
| Флаги (`EFLAGS`, `RFLAGS`) | хранят флаги результата: Zero, Carry, Overflow и т.д. |
Регистры — это микросхемы внутри самого ядра ЦП, они обеспечивают мгновенный доступ к данным.
Кэш — это быстрая SRAM-память, встроенная в процессор. Она уменьшает время доступа к данным из RAM.
| Уровень | Расположение | Примерный размер | Задержка (циклы ЦП) |
|---|---|---|---|
| L1 | Внутри ядра | 32–128 КБ | 3–4 |
| L2 | Внутри/рядом с ядром | 256 КБ – 1 МБ | 10–15 |
| L3 | Общая на несколько ядер | 2–64 МБ | 30–60 |
RAM (DRAM) используется как основное рабочее пространство программ.
ОС предоставляет каждой программе собственное виртуальное адресное пространство, которое затем отображается в физическую память.
| Компонент | Описание |
|---|---|
| Page (страница) | Блок виртуальной памяти, обычно 4 КБ |
| Page Table | Таблица соответствий виртуальных и физических страниц |
| TLB (Translation Lookaside Buffer) | Кэш отображений виртуальных адресов в физические |
Если данных слишком много для RAM, ОС может использовать файл подкачки или pagefile, хранящийся на SSD/HDD.
| Тип | Назначение |
|---|---|
| Swap/Pagefile | Используется при нехватке оперативной памяти |
| MMAP файлов | Отображение файла в память |
| Memory-mapped I/O | Обмен данными с периферией через память |
mov eax, [ebp+8] ; чтение аргумента функции mov [esp+4], eax ; запись в стек call memcpy ; вызов функции с аргументами в памяти
NUMA — это архитектура многопроцессорных систем, при которой каждый процессор имеет локальный доступ к «своей» памяти, но также может обращаться к удалённой памяти других узлов (с большей задержкой).
| Характеристика | Описание |
|---|---|
| Узел NUMA (NUMA node) | Набор: ЦП + локальная память |
| Локальный доступ | Быстрый доступ к памяти своего узла |
| Удалённый доступ | Доступ к памяти другого узла через межсоединение (Interconnect) |
| Примеры | AMD EPYC, Intel Xeon, серверные платформы |
numactl --hardware
Prefetching — это механизм предугадывания того, какие данные потребуются процессору, и предварительной загрузки их из RAM в кэш.
| Тип | Описание |
|---|---|
| Hardware prefetch | Автоматически кэширует данные при линейном доступе |
| Software prefetch | Используется вручную с помощью инструкций (`prefetcht0`, `prefetchnta`) |
| Stride prefetch | Улавливает шаблоны с фиксированным шагом доступа |
| Adjacent cache line prefetch | Загрузка соседней строки кэша вместе с основной |
prefetcht0 [esi+eax] ; загрузить строку в кэш из памяти
Intel VT-x — это технология виртуализации, обеспечивающая аппаратную поддержку виртуальных машин. В контексте памяти VT-x влияет на двойную трансляцию адресов.
| Этап | Описание |
|---|---|
| Guest Virtual Address (GVA) | Адрес, используемый в ВМ (например, Linux) |
| Guest Physical Address (GPA) | Адрес внутри виртуальной машины |
| Host Physical Address (HPA) | Реальный адрес в памяти хоста |
MMU — аппаратный модуль, который преобразует виртуальные адреса в физические, реализует защиту памяти, контроль доступа и т.д.
| Стадия | Действие |
|---|---|
| Процессор генерирует виртуальный адрес | Например, при обращении к переменной |
| MMU ищет отображение в TLB | Если найдено — используется |
| Если нет — обращение к Page Table | Чтение соответствующей страницы |
| Проверка прав доступа | RWX-флаги, уровень привилегий |
| Генерация физического адреса | Передача на контроллер памяти (MC) |
| Компонент | Назначение |
|---|---|
| TLB | Кэш отображений виртуальных адресов |
| Page Table | Основная таблица отображений |
| CR3 | Регистр, указывающий на Page Table |
| PTE | Page Table Entry — описание одной страницы |
Память ЦП — это многоуровневая, иерархическая и сложная система, включающая:
Понимание всех этих слоёв особенно важно для:
ЦП использует сложную иерархию памяти — от регистров до кэша и RAM, включая механизмы виртуализации и защиты. Это делает возможной как высокую производительность, так и изоляцию процессов.