Устройство компьютерной памяти
Память компьютера — то, где хранятся данные и код. Разных «памятей» много, и они сильно отличаются по скорости, объёму и назначению: от регистров внутри процессора до дисков и флеш-памяти прошивки.
Эта страница — обзор: какие бывают виды памяти, как процессор к ним обращается и чем они отличаются. Про конкретные модули оперативной памяти — в статье SODIMM.
Иерархия памяти
Чем ближе память к процессору, тем она быстрее — и тем её меньше и дороже:
| Уровень | Объём | Скорость | Энергозависимость |
|---|---|---|---|
| Регистры процессора | байты | самая высокая | теряется при выключении |
| Кэш (L1 / L2 / L3) | килобайты — десятки мегабайт | очень высокая | теряется |
| Оперативная память (ОЗУ) | гигабайты | высокая | теряется |
| SSD / NVMe | терабайты | средняя | сохраняется |
| HDD | терабайты | низкая | сохраняется |
Процессор старается держать нужное как можно ближе к себе: то, что не влезло в кэш, идёт в ОЗУ, а то, что не влезло в ОЗУ — на диск (в подкачку).
Виды памяти
Энергозависимая (теряет содержимое при выключении)
- DRAM (динамическая) — основа оперативной памяти. Каждая ячейка — конденсатор, который постепенно разряжается, поэтому память нужно постоянно регенерировать. Дёшево и ёмко, но медленнее SRAM. Поколения: DDR3, DDR4, DDR5 — отличаются частотой, напряжением и разъёмом, несовместимы между собой.
- SRAM (статическая) — быстрее и дороже, ячейка на нескольких транзисторах, регенерация не нужна. Используется в кэше процессора и в небольших буферах.
Энергонезависимая (сохраняет содержимое)
- Flash (флеш-память) — то, на чём живут SSD, eMMC, SD-карты и прошивка материнской платы (Прошивка). Умеет стираться и перезаписываться блоками.
- ROM — память только для чтения, в чистом виде сегодня почти не встречается.
- NVRAM — энергонезависимая память для настроек: там же лежат переменные UEFI (UEFI).
Отдельно стоит кэш процессора: он не является отдельным устройством, а встроен в кристалл и работает как «карманная» память для горячих данных.
Адресация: как процессор обращается к памяти
Побайтовая адресация. Память организована как последовательность байтов, и к ней обращаются по адресу. Чтобы прочитать один или несколько байтов, используется адрес — указание, где этот байт лежит. Диапазон адресов, к которым можно обратиться, называется адресным пространством.
Сегментная адресация. Форма адресации, при которой программа может иметь несколько независимых адресных пространств — сегментов. Например, код (инструкции) и стек можно держать в разных сегментах: адреса кода всегда ссылаются на пространство кода, адреса стека — на пространство стека. Так работала адресация в реальном режиме x86, и эти сегменты (CS, DS, SS, ES) видны в ассемблере.
Виртуальная память. Современные процессоры работают не с физическими адресами напрямую, а через виртуальные: каждому процессу выдаётся собственное адресное пространство, а специальный блок процессора (MMU) переводит виртуальные адреса в физические по таблицам страниц. Отсюда:
- изоляция: процесс не может залезть в память другого;
- память больше, чем есть: неиспользуемые страницы вытесняются в подкачку;
- общая память: одни и те же страницы могут отображаться в разные процессы (библиотеки).
Именно поэтому программа «видит» большой непрерывный диапазон, хотя физически память может быть разбросана кусками.
Контроллер памяти и каналы. Между процессором и модулями ОЗУ стоит контроллер памяти (сегодня — в самом процессоре). Модули подключаются к каналам; когда их два и модули стоят в разных каналах, память работает в двухканальном режиме — вдвое шире полоса. Именно поэтому важно, в какие слоты ставить модули и какими они должны быть.
Полезные команды
# сколько памяти видит система
free -h
cat /proc/meminfo | head
# слоты и модули: производитель, модель, скорость, ранг
sudo dmidecode -t memory
# максимум памяти и число слотов
sudo dmidecode -t 16
# структура памяти процессора и кэши
lscpu
lsmem
Что дальше
- SODIMM — модули оперативной памяти: как выбрать второй модуль, чем отличаются односторонние от двусторонних, и какая память стоит в моём ноутбуке.
Комментарии
Пока комментариев нет.