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.0 | 2011 | Базовая спецификация |
| 1.1 | 2012 | Улучшения для мобильных устройств |
| 1.2 | 2014 | Поддержка NVMe over Fabrics (начало) |
| 1.3 | 2017 | Загрузка операционной системы, изоляция очередей, управление тепловым режимом |
| 1.4 | 2019 | Механизмы I/O determinism, улучшенная приоритизация команд |
| 2.0 | 2021 | Архитектура 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
