Открыть сервисСервис

NVMe — протокол доступа к твердотельным накопителям

NVMe (Non-Volatile Memory Express) — открытый протокол обмена данными между компьютером и накопителями на основе флеш-памяти, разработанный специально для работы с твердотельными накопителями (SSD) с высокой скоростью доступа. Протокол заменил устаревший интерфейс AHCI, созданный для жёстких дисков с механическими головками, и раскрывает производительность современных NAND-флеш-устройств, подключаемых по шине PCI Express.

История создания

Разработка NVMe началась в 2009 году. Инициатива исходила от группы производителей флеш-памяти, в которую вошли Intel, Samsung, SanDisk, Western Digital, LSI, Dell и другие компании. Цель состояла в создании стандарта, способного заменить AHCI (Advanced Host Controller Interface) — интерфейс, разработанный ещё в 2000-х годах для SATA-накопителей с механическими дисками. AHCI не учитывал особенности флеш-памяти: низкую задержку, высокую параллельность операций и отсутствие механических ограничений на перемещение головок.

Первая версия спецификации NVMe 1.0 была опубликована в марте 2011 года. Контроль над стандартом передали некоммерческой организации NVM Express, Inc., объединяющей более 80 компаний-участников. Стандарт быстро получил поддержку: уже в 2013 году на рынке появились первые потребительские SSD с поддержкой NVMe, а к 2015 году протокол стал основным для высокопроизводительных накопителей.

Принцип работы и отличия от AHCI

Ключевое отличие NVMe от AHCI заключается в архитектуре командного обмена. AHCI использует один аппаратный очередьной механизм на 32 команды, тогда как NVMe поддерживает до 65 535 очередей, каждая из которых вмещает до 65 536 команд. Это позволяет эффективно распараллеливать операции между несколькими ядрами процессора и использовать все доступные потоки обработки.

Другие отличия:

  • Задержка. NVMe сокращает время отклика за счёт упрощённого набора команд и отсутствия промежуточных слоёв. Типичная задержка составляет около 2,8 мкс против 6–10 мкс у SATA-устройств.
  • Пропускная способность. Протокол задействует до 64 000 команд в одной очереди и поддерживает параллельную обработку, что критично при высоких нагрузках.
  • Энергопотребление. NVMe включает механизмы управления питанием (states L0–L4), позволяющие переводить накопитель в режимы с пониженным энергопотреблением без потери отзывчивости.
  • Мобильность. Протокол оптимизирован для портативных устройств: время перехода из спящего режима сведено к минимуму.

Физические интерфейсы подключения

NVMe — это логический протокол, который может работать поверх разных физических интерфейсов:

ИнтерфейсПримечание
M.2Наиболее распространённый форм-фактор для потребительских SSD; поддерживает шины PCIe и SATA
PCIe (слоты расширения)Десктопные и серверные платы расширения с высокой пропускной способностью
U.2 (SFF-8639)Серверные и рабочие станции, горячая замена накопителей
SATA ExpressМенее распространённый интерфейс, объединяющий SATA и PCIe
NF1 (NGFF U.2)Форм-фактор для серверных конфигураций

Скорость протокола зависит от поколения шины PCIe. NVMe 1.3 и выше поддерживает PCIe Gen3 x4 (до ~3,5 ГБ/с), NVMe 1.4 — PCIe Gen4 x4 (до ~7 ГБ/с), а NVMe 2.0 рассчитан на PCIe Gen5 x4 (до ~14 ГБ/с).

Версии спецификации

ВерсияГодОсновные нововведения
1.02011Базовая спецификация
1.12012Улучшения для мобильных устройств
1.22014Поддержка NVMe over Fabrics (начало)
1.32017Загрузка операционной системы, изоляция очередей, управление тепловым режимом
1.42019Механизмы I/O determinism, улучшенная приоритизация команд
2.02021Архитектура ZNS (zoned namespaces), упрощённая структура команд

NVMe over Fabrics

Расширение NVMe over Fabrics (NVMe-oF) позволяет использовать протокол поверх сетевых транспортов — InfiniBand, Fibre Channel, RoCE (RDMA over Converged Ethernet) и TCP. Это даёт возможность подключать удалённые накопители с задержкой, близкой к локальной, и формировать дисковые пулы в дата-центрах. Стандарт NVMe-oF 1.1 поддерживает TCP в качестве транспорта, что устраняет необходимость в специализированном оборудовании.

Поддержка операционными системами

NVMe поддерживается в основных операционных системах:

  • Windows — начиная с Windows 8 и Windows Server 2012;
  • Linux — начиная с ядра 3.3 (драйвер nvme), полная поддержка с 3.9;
  • macOS — начиная с OS X Mavericks (10.9);
  • FreeBSD — с версии 10.0.

В Linux для работы с накопителями используется утилита nvme-cli, предоставляющая доступ к командам управления и диагностике.

Применение

NVMe стал стандартом де-факто для всех классов устройств:

  • Потребительские SSD — накопители в форм-факторе M.2 для настольных компьютеров и ноутбуков;
  • Серверные решения — высокопроизводительные накопители U.2 и карты расширения PCIe;
  • Центры обработки данных — дисковые массивы с поддержкой NVMe-oF;
  • Встраиваемые системы — компактные модули M.2 и BGA-пакеты;
  • Игровые консоли — PlayStation 5 и Xbox Series X/S используют NVMe-накопители.

См. также

  • Твердотельный накопитель
  • PCI Express
  • M.2 (интерфейс)
  • AHCI
  • U.2 (интерфейс)

Источники

  • Спецификация NVM Express, Inc.
  • Documentation/nvme — ядро Linux
  • Tom's Hardware — обзоры SSD-накопителей
  • AnandTech — материалы по архитектуре NVMe
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru