Энергонезависимая память. Иерархия памяти

1. Пирамида иерархии памяти: фундаментальный компромисс

Противоречие аппаратных средств:

  • Скорость: процессору требуются данные за доли наносекунды.
  • Ёмкость: современные программы требуют гигабайты и терабайты памяти.
  • Экономика: быстрая память на триггерах (SRAM) слишком дорогая и громоздкая.
  • Энергонезависимость: оперативная память теряет данные при обесточивании.

Принцип многоуровневой иерархии:

  • Вершина пирамиды: малый объем, предельная скорость (Регистры, L1–L3).
  • Средний уровень: баланс скорости и объема (DRAM ОЗУ).
  • Основание пирамиды: огромный объем, низкая стоимость за гигабайт, долговременная энергонезависимость (NVMe SSD, HDD, LTO Tape).

2. Время доступа: такты процессора против наносекунд

Задержки аппаратных уровней:

  • Регистры ЦП: 1 такт (~0.5–1 нс)
  • Кэш L1: 4–5 тактов (~1–1.5 нс)
  • Кэш L2: 12–14 тактов (~3–5 нс)
  • Кэш L3: 35–50 тактов (~10–20 нс)
  • ОЗУ (DDR4/DDR5): 150–250 тактов (~50–80 нс)
  • NVMe SSD: ~50 000 тактов (~10–30 мкс)
  • HDD (магнитный): ~20 000 000 тактов (~5–10 мс)

Масштаб времени человека (1 такт = 1 сек):

  • Регистр: 1 секунда (мысль в голове)
  • Кэш L1: 5 секунд (взгляд в блокнот на столе)
  • Кэш L3: 45 секунд (взять книгу с полки)
  • ОЗУ: 4 минуты (дойти до соседнего корпуса)
  • NVMe SSD: 14 часов (поездка на поезде)
  • HDD: 7 месяцев (экспедиция на полюс)

3. Принципы локальности данных (Locality of Reference)

Временная локальность (Temporal Locality):

Если ячейка памяти была запрошена сейчас, высока вероятность повторного обращения к ней в ближайшее время.

  • Счетчики циклов (for (int i = 0...)).
  • Переменные на вершине стека вызовов.
  • Тела компактных функций и циклов.

Пространственная локальность (Spatial Locality):

Если запрошен адрес $, высока вероятность обращения к соседним адресам +1, A+2, \dots$

  • Последовательное выполнение машинных инструкций.
  • Линейный обход элементов массива.
  • Кэш-линия: данные всегда считываются блоками по 64 байта.

4. Архитектура кэш-памяти: кэш-линии и адресация

Декомпозиция физического адреса:

[ Старшие биты: Tag (Тег) ] — [ Средние биты: Index (Индекс) ] — [ Младшие 6 бит: Offset (Смещение) ]

Кэш оперирует не байтами, а кэш-линиями (Cache Lines) по 64 байта (^6 = 64$).

Попадание (Cache Hit):

Аппаратный компаратор находит набор по индексу и сравнивает тег адреса с тегом в кэше. Если тег совпал и Valid Bit = 1, байт выдается процессору мгновенно.

Промах (Cache Miss):

Тег не совпал. Процессор приостанавливает выполнение инструкции, инициирует загрузку всей 64-байтной строки из ОЗУ и помещает её в кэш.

5. Ассоциативность кэша: компромисс скорости и конфликтов

Прямое отображение (Direct Mapped)

  • 1 строка на каждый набор.
  • Адрес жестко привязан к одной ячейке.
  • Быстрый поиск.
  • Минус: частые кэш-конфликты (Thrashing).

Множественно-ассоциативный (Set-Associative)

  • $ строк в наборе (8-way / 16-way).
  • Линия размещается в любой из $ строк набора.
  • Минимум конфликтов.
  • Золотой стандарт современных CPU!

Полностью ассоциативный (Fully Associative)

  • Любая строка в любом месте кэша.
  • Индекс отсутствует.
  • Сложнейшие параллельные компараторы тегов.
  • Применяется в буферах TLB.

6. Политики записи: Write-Through против Write-Back

Сквозная запись (Write-Through):

  • Данные пишутся одновременно в кэш и в ОЗУ.
  • Плюс: данные в ОЗУ всегда актуальны, простая логика когерентности.
  • Минус: постоянная нагрузка на шину памяти; требует Write Buffer, при заполнении которого процессор тормозит.

Обратная запись (Write-Back):

  • Данные пишутся только в кэш с выставлением флага Dirty Bit.
  • Запись в ОЗУ откладывается до вытеснения линии (Eviction).
  • Плюс: максимальная скорость работы CPU, разгрузка системной шины.
  • Минус: сложность протоколов (MESI); риск потери данных при сбое питания.

7. Эффективное время доступа к памяти (T_eff)

T_eff = H · T_cache + (1 - H) · T_ram

где $ — коэффициент попаданий (Hit Rate), $ — промахи (Miss Rate), {ram}$ — задержка обращения к ОЗУ (Miss Penalty).

Расчет ( = 2$ нс, = 60$ нс):

  • H = 99%: {eff} = 0.99 \cdot 2 + 0.01 \cdot 60 = \mathbf{2.58 ext{ нс}}$
  • H = 95%: {eff} = 0.95 \cdot 2 + 0.05 \cdot 60 = \mathbf{4.90 ext{ нс}}$
  • H = 90%: {eff} = 0.90 \cdot 2 + 0.10 \cdot 60 = \mathbf{7.80 ext{ нс}}$

Архитектурный вывод:

Падение Hit Rate всего на 9% (с 99% до 90%) утраивает задержку памяти! Без принципов локальности и больших кэшей L3 процессоры теряли бы до 80% времени на ожидание шины памяти.

8. Физика Flash-памяти: плавающий затвор и ловушка заряда

Плавающий затвор (Floating Gate):

  • Проводящий поликремниевый остров, изолированный слоем диэлектрика $.
  • Электроны туннелируют сквозь барьер (эффект Фаулера-Нордгейма при импульсе ~20 В).
  • Заряд сдвигает пороговое напряжение открытия ячейки ({th}$).

Ловушка заряда (Charge Trap Flash CTF):

  • Замена проводящего затвора на диэлектрик нитрида кремния ($).
  • Электроны удерживаются в изолированных ловушках (не утекают целиком при микротрещине в диэлектрике).
  • Основа всей современной 3D NAND памяти.

9. Эволюция ячеек NAND: SLC, MLC, TLC, QLC

Количество уровней напряжения:

  • SLC (1 бит): 2 уровня напряжения. Ресурс: ~50k–100k циклов P/E.
  • MLC (2 бита): 4 уровня напряжения. Ресурс: ~3k–10k циклов P/E.
  • TLC (3 бита): 8 уровней напряжения. Ресурс: ~1k–3k циклов P/E.
  • QLC (4 бита): 16 уровней напряжения. Ресурс: ~300–1000 циклов P/E.

Компромисс плотности и надежности:

Чем больше бит на ячейку, тем меньше разница напряжений между соседними состояниями. При QLC малейшая утечка нескольких электронов искажает данные, требуя тяжелых алгоритмов коррекции ошибок LDPC ECC.

10. Архитектура 3D NAND и асимметрия операций

3D Вертикальная компоновка:

  • Переход от планарных 2D кристаллов к вертикальным цилиндрам.
  • Современные чипы имеют 176–232+ вертикальных слоев.
  • Устранена паразитная емкостная связь ячеек; повышена емкость до 1 Тбит на чип.

Асимметрия операций NAND:

  • Чтение и запись (Program): постранично (Page: 4–16 КБ).
  • Стирание (Erase): только целыми блоками (Block: 2–8 МБ).
  • Невозможность перезаписи на месте: требуется цикл Read-Modify-Write!

11. Ресурс накопителя: SLC-кэш, TRIM и Wear Leveling

Динамический SLC-кэш:

  • Часть TLC/QLC ячеек временно работает как быстрый 1-битный SLC.
  • При исчерпании буфера скорость падает до истинной скорости чипов (Folding: до 80–150 МБ/с).

Сборка мусора и Wear Leveling:

  • TRIM: ОС сообщает SSD об удаленных файлах для ускорения сборки мусора.
  • Static Wear Leveling: контроллер перемещает неизменяемые файлы в изношенные блоки, равномерно распределяя ресурс по всей флеш-памяти.

12. Протоколы: NVMe (PCIe) против SATA AHCI

SATA III (Протокол AHCI):

  • Создавался для магнитных дисков HDD.
  • Ограничение скорости: 600 МБ/с.
  • 1 очередь глубиной до 32 команд.
  • Высокие задержки и блокировки ядра ОС при многопоточной работе.

PCIe NVMe (Gen4 / Gen5):

  • Прямое подключение к линиям PCIe процессора.
  • Скорость: до 7 500–14 000 МБ/с.
  • До 64 000 очередей по 64 000 команд!
  • Векторные прерывания MSI-X, lockless архитектура с привязкой очереди к ядру ЦП.

13. Экспресс-анализ архитектурных профилей

In-Memory СУБД (Redis / Tarantool):

Приоритет: Наносекундная латентность случайного доступа.
Решение: Максимальный объем DRAM (DDR5) + NVMe SSD для упреждающего журнала транзакций (WAL).

Холодный архив (Cold Archive / Backup):

Приоритет: Минимальная стоимость за терабайт и сохранность данных на десятилетия.
Решение: Ленты LTO-9 / LTO-10 + массивы HDD с черепичной записью (SMR).

3D Workstation / Гейминг (DirectStorage):

Приоритет: Большой кэш L3 (3D V-Cache) + потоковая подгрузка текстур NVMe PCIe 4.0/5.0 напрямую в VRAM GPU.

Мобильный IoT / Edge AI:

Приоритет: Энергопотребление в режиме сна, стойкость к обесточиванию (PLP), LPDDR4X/5 + eMMC/UFS.

14. Архитектурный юмор и мем

Mathjoke Meme
Мем: «Mathjoke (10 types of people in the world) — Существует 10 типов людей: те, кто понимает двоичную систему счисления, и те, кто не понимает».
Автор: MjolnirPants (Wikimedia Commons).
Источник: Wikimedia Commons (File:Mathjoke.jpg).
Лицензия: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
Изменения: Оптимизировано разрешение и встроено offline через Data URI (Base64) без изменения содержания.
Слайд 1 / 15