Перейти к содержимому
1.4. Память: быстрая, медленная и постоянная

Спуск за одним числом и гонка накопителей

Проследите, как процессор ищет число по уровням памяти, а потом посмотрите, сколько один и тот же файл читается с диска, SATA SSD и NVMe.

// спуск

Процессор не идёт за числом сразу в память: он спускается по уровням, пока не найдёт. Спрячьте число на любом уровне и смотрите, как запрос проходит ступень за ступенью. Каждая пройденная ступень - это промах, и он уже стоил времени.

Спрятать число:
  1. L1-кэш

    32-128 КБ на ядро 1-4 такта, ~0,3 нс

    Если такт представить секундой: взять книгу со стола, одна-четыре секунды.

    Самый маленький и самый быстрый уровень, лежит внутри самого ядра. Здесь то, с чем процессор работает прямо сейчас.

  2. L2-кэш

    256 КБ - 1 МБ на ядро 10-20 тактов, ~5 нс

    Всё ещё быстро, но промах по L1 уже стоил времени.

    Буфер между L1 и L3, тоже внутри ядра. Кэш подтягивает данные не по одному байту, а строками по 64 байта сразу: расчёт на то, что после адреса N программа попросит N+1 и N+2. Это называется локальностью.

  3. L3-кэш

    8-64 МБ, общий для ядер 40-80 тактов, ~20 нс

    Медленнее L1 и L2, но всё равно в несколько раз быстрее оперативной памяти.

    Кэша всегда мало не из жадности: каждый бит статической памяти - схема из шести транзисторов, а бит оперативной - один транзистор и один конденсатор. При одинаковой площади кристалла SRAM даёт мегабайты, DRAM - гигабайты.

  4. Оперативная память

    8-128 ГБ 50-100 нс

    По той же аналогии - сходить в соседнюю комнату: несколько минут.

    Десятки тактов ожидания, пока процессор просто стоит. Память динамическая: каждый бит - крошечный конденсатор, который теряет заряд, поэтому её приходится обновлять тысячи раз в секунду. Данные живут только пока есть питание.

  5. NVMe SSD

    256 ГБ - 8 ТБ 10-50 мкс

    Съездить в другой город на пару дней.

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

  6. Жёсткий диск

    500 ГБ - 20 ТБ 5-15 мс

    Кругосветное путешествие на несколько лет.

    Головка должна физически переместиться к нужной дорожке. Отдельный случай, когда сюда попадают постоянно: оперативной памяти не хватает, и система использует часть диска как файл подкачки. Тогда компьютер тормозит, хотя с железом всё в порядке.

Времена уровней взяты из статьи как есть, диапазонами, и ничего не суммируется: складывать «50-100 нс» с «5-15 мс» значило бы придумывать точность, которой в источнике нет. Считается только число промахов - оно целое и честное. Разрыв между верхом и низом лестницы примерно в сто тысяч раз, и именно ради того, чтобы попадать в верхние уровни, вся эта иерархия и построена.

// гонка накопителей

Разница «100 мегабайт в секунду против четырнадцати тысяч» на бумаге выглядит как просто большое число. Она становится понятной, когда превращается во время. Выберите ползунком, что читаем, и пустите гонку: полосы бегут ровно во столько раз быстрее, во сколько быстрее сам носитель.

  1. HDD, 7200 об/мин 100-200 МБ/с, доступ 5-15 мс, до 20 ТБ, ~$20-30 за ТБ

    Механика: пластина должна довернуться, головка - доехать. Зато терабайт стоит дешевле всех, поэтому диски и живут в хранилищах и видеорегистраторах.

  2. SATA SSD 500-560 МБ/с, доступ 0,05-0,1 мс, до 8 ТБ, ~$60-80 за ТБ

    Движущихся частей нет, но упирается в старый интерфейс SATA, который придумывали под медленные жёсткие диски.

  3. NVMe SSD, PCIe 4.0 5000-7000 МБ/с, доступ 0,01-0,05 мс, до 8 ТБ, ~$80-120 за ТБ

    Подключён прямо к шине PCIe, минуя SATA. Тот же флеш, но дорога к нему шире примерно в десять раз.

  4. NVMe SSD, PCIe 5.0 10 000-14 000 МБ/с, доступ 0,01-0,02 мс, до 8 ТБ, ~$150+ за ТБ

    Верх сегодняшних потребительских накопителей. Обратите внимание на мелких файлах: выигрыш там куда скромнее, чем обещает цифра скорости.

Документ, 5 МБ - 5 МБ. На такой мелочи разницы почти не чувствуется: всё упирается не в скорость чтения, а во время доступа - сколько носитель вообще собирается.

Фотоальбом, 500 МБ - 500 МБ. Первый размер, на котором HDD начинает заметно отставать: механика читает ровно с той скоростью, с какой крутится пластина.

Фильм, 8 ГБ - 8000 МБ. Скопировать фильм с жёсткого диска - это минута с лишним, с NVMe - меньше секунды. Разрыв тут уже не про цифры, а про ожидание.

Игра, 100 ГБ - 100000 МБ. Установка большой игры на HDD растягивается на десятки минут. Именно на таких объёмах и видно, за что платят при покупке NVMe.

Бэкап, 1 ТБ - 1000000 МБ. Полный бэкап системы. На жёстком диске это работа на пару часов - обычно её и ставят на ночь.

HDD, 7200 об/мин: 150 МБ/с, время доступа 10 мс. Механика: пластина должна довернуться, головка - доехать. Зато терабайт стоит дешевле всех, поэтому диски и живут в хранилищах и видеорегистраторах.

SATA SSD: 530 МБ/с, время доступа 0.07 мс. Движущихся частей нет, но упирается в старый интерфейс SATA, который придумывали под медленные жёсткие диски.

NVMe SSD, PCIe 4.0: 6000 МБ/с, время доступа 0.03 мс. Подключён прямо к шине PCIe, минуя SATA. Тот же флеш, но дорога к нему шире примерно в десять раз.

NVMe SSD, PCIe 5.0: 12000 МБ/с, время доступа 0.015 мс. Верх сегодняшних потребительских накопителей. Обратите внимание на мелких файлах: выигрыш там куда скромнее, чем обещает цифра скорости.

Для расчёта берётся середина диапазонов из таблицы статьи: 150 МБ/с у HDD, 530 у SATA SSD, 6000 у NVMe PCIe 4.0 и 12 000 у PCIe 5.0. Время считается как время доступа плюс объём, делённый на скорость: это последовательное чтение одного большого файла, а на россыпи мелких разрыв между HDD и SSD ещё больше.

Интерактив разработан - ремонт компьютеров и ноутбуков в Барановичах. © 2008-2026. Источник: any.by/demo/piramida-pamyati