NVM Express (NVMe, NVMHCI) — от ) — интерфейс доступа к твердотельным накопителям, подключённым по шине PCI Express. «NVM» в названии спецификации обозначает энергонезависимую память, в качестве которой в SSD повсеместно используется флеш-память типа NAND. Логический интерфейс NVM Express был разработан с нуля, основные цели — получение низких задержек и эффективное использование высокого параллелизма твердотельных накопителей за счёт применения нового набора команд и механизма обработки очередей, оптимизированного для работы с современными многоядерными процессорами.
Тип разъёма и конструктив носителей NVMe может быть различным. Распространены накопители в форм-факторах M.2, (серверные; конструктивно совместимы с накопителями SATA 2,5"), U.3 и платы расширения PCI Express. Накопители SATA Express и компактные внутренние накопители форм-фактора M.2 при использовании PCIe также поддерживают NVM Express в качестве одного из логических интерфейсов.
Предпосылки появления Ранние твердотельные накопители использовали для подключения параллельный SCSI и использовались в серверах и высокопроизводительных рабочих станциях. Проникновение SSD на массовый рынок пришлось на середину 2000-х и совпало по времени с вытеснением параллельного SCSI интерфейсами SATA и SAS. Со временем дальнейшему наращиванию производительности SSD стали мешать ограничения интерфейсов SATA и SAS, ориентированных в первую очередь на подключение традиционных механических жёстких дисков. Например, в отличие от жёстких дисков, скорость последовательного чтения для большинства современных SSD ограничивается пропускной способностью интерфейса SATA.
Высокопроизводительные SSD с подключением к шине PCI Express производились до NVMe, но либо использовали уникальные закрытые стандарты и технологии оптимизации работы с флеш-памятью, либо представляли собой SATA- или SAS-контроллер и несколько SSD с интерфейсами SATA/SAS, размещёнными на одной плате. Переход на NVMe позволил стандартизировать интерфейс PCIe SSD — производителям больше не нужно тратить ресурсы на разработку уникальных драйверов, разъёмов и форм-факторов. Подобным образом принятие спецификаций позволило создать большое разнообразие USB-флеш-накопителей, которые смогли работать с любыми компьютерами, не требуя оригинальных драйверов для каждой модели.
Для эффективного использования накопителей NVMe в сетях хранения данных разрабатываются различные стандарты передачи команд NVMe через RDMA (поверх InfiniBand или Ethernet — и iWARP) и Fibre Channel без трансляции в SCSI под общим названием NVMe over Fabrics.
История
Работа над спецификацией Первые подробности о новом стандарте доступа к энергонезависимой памяти появились на Intel Developer Forum в 2007 году, где был представлен NVMHCI (Non-Volatile Memory Host Controller Interface) — предполагаемый вариант нового интерфейса коммуникации между хостом и контроллером NAND. В том же году была сформирована рабочая группа для проработки NVMHCI во главе с Intel. Первая спецификация NVMHCI 1.0 была закончена в апреле 2008 года и размещена на сайте Intel.
Техническая проработка NVMe началась во второй половине 2009 года. Спецификации NVMe были разработаны рабочей группой «NVM Express Workgroup», в которую входило более 90 компаний, председателем группы была Эмбер Хаффмен из Intel. Первая версия спецификации NVMe была представлена 1 марта 2011 года. При работе над версией 1.1, появившейся 11 октября 2012 года, разработчики сфокусировались на добавлении функциональных возможностей для устройств корпоративного класса. В новом стандарте были добавлены многопутевой ввод-вывод с разделяемым доступом к пространствам имён NVMeПространство имён NVMe () — область накопителя NVMe, отформатированная для блочного доступа. и поддержка .
В дальнейшем работа над новыми версиями спецификации NVMe была продолжена: NVMe 1.0e — 23 января 2013; NVMe 1.1b — 2 июля 2014 года; NVMe 1.2 — 3 ноября 2014 года; для устройств потребительского класса: расширенное управление питанием и поддержка накопителей без динамической памяти; для устройств корпоративного класса: возможность обновления прошивки без остановки работы накопителя, снижение задержек в топологиях с большим количеством NVMe-накопителей и коммутаторами PCIe; NVMe 1.2a — 23 ноября 2015 года; NVMe 1.2b — 1 июня 2016 года; NVMe 1.2.1 — 5 июня 2016 года;
NVMe 1.3 — май 2017 года; NVMe 1.3a — 24 октября 2017; NVMe 1.3b — 4 мая 2018 года; NVMe 1.3c — 24 мая 2018 года; NVMe 1.3d — 20 марта 2019 года; NVMe 1.4 — 10 июня 2019 года; NVMe 1.4a — 9 марта 2020 года; NVMe 1.4b — 21 сентября 2020 года; NVMe 1.4c — 9 марта 2021 года; NVMe 2.0 — 13 мая 2021 года; NVMe 2.0a — 23 июля 2021 года; NVMe 2.0b — 6 января 2022 года.
Первые контроллеры и готовые накопители Первые контроллеры SSD с поддержкой NVMe и эталонный дизайн флеш-накопителей в форм-факторе полнопрофильной платы PCIe были выпущены компанией Integrated Device Technology в августе 2012 года.
Первый серверный NVMe-накопитель Samsung XS1715 в форм-факторе U.2 (2.5", разъём SFF-8639) был анонсирован в июле 2013 года. Основой для накопителя послужил контроллер, разработанный . Заявленные характеристики составили 3 ГБайт/с при последовательном чтении и при случайном доступе блоками 4 КиБ.
В июне 2014 года свои первые линейки серверных NVMe-накопителей представила компания Intel. Линейки DC P3700, DC P3600, DC P3500, различающиеся между собой производительностью и ресурсом, выпускаются в форм-факторе U.2 и в виде низкопрофильных плат PCIe. В 2015 году Intel выпустила основанный на P3500 накопитель потребительского класса — Intel 750.
В июне 2015 года появился один из первых NVMe-накопителей потребительского класса в компактном форм-факторе M.2 — Samsung SM951-NVMeПервый вариант Samsung SM951 был выпущен в том же форм-факторе, но поддерживал SATA Express..
Появившиеся в сентябре 2015 года смартфоны Apple iPhone 6s и iPhone 6s Plus стали первыми мобильными устройствами, оснащёнными встроенными NVMe-накопителями.
Технические особенности и инфраструктура
Сравнение с AHCI
Основными преимуществами NVMe перед AHCI является оптимизированный механизм работы с очередями и обработкой прерываний, что позволяет обеспечить более высокий уровень производительности.
Устройство AHCI ограничено одной очередью глубиной 32, в то время как NVMe поддерживает 64 К (65536) очередей с глубиной 65536 каждая. Набор команд NVMe существенно упрощён в сравнении с ATA и SCSI, спецификацией определяется всего 13 обязательных команд, что, в первую очередь, существенно упрощает разработку устройств.
Форм-факторы накопителей
Платы расширения PCI Express. Большая часть выпускаемых по состоянию на начало 2016 года плат NVMe-накопителей выполнена в форм-факторе половинной высоты/половинной длины с интерфейсом PCI Express x4.
U.2 (SFF-8639) — накопители форм-фактора 2,5" высотой 15 мм с разъёмом SFF-8639. Используются, в основном, в серверах. Преимуществами в сравнении с обычной платой расширения являются поддержка горячей замены накопителей и более компактное исполнение, позволяющее разместить большее количество накопителей в корпусе сервера или системы хранения данных. Разъём SFF-8639 обратно совместим с SFF-8482, бэкплейн с разъёмом SFF-8639 при подключении к нему соответствующего контроллера поддерживает подключение накопителей с интерфейсами SATA и SAS.
Не все накопители форм-фактора U.2 являются NVMe-совместимыми. В начале 2013 года компания Dell выпустила новое поколение серверов с возможностью подключения до четырёх накопителей Micron P320h. Они были выполнены в совместимом с U.2 форм-факторе, подключались через четыре линии PCIe, но не использовали NVMe в качестве логического интерфейса. Для подключения бэкплейнов с поддержкой накопителей U.2 к шине PCI Express используются кабели с разъёмами OCuLink или SFF-8643Разъём SFF-8643, он же Mini-SAS HD, обычно применяется в кабелях SAS, но кабели NVMe и кабели SAS с такими разъёмами не являются взаимозаменяемыми., обеспечивающий подключение четырёх линий PCI Express. Кабель может подключаться к специальному разъёму на системной плате, в обычный слот расширения PCI Express через плату-ретаймер или к разъёму M.2 через переходник.
U.3 (SFF-TA-1001) — основан на спецификации U.2 и использует тот же разъём SFF-8639. В отличие от U.2, один «трёхрежимный» (PCIe/SATA/SAS) разъём объединительной панели может работать со всеми тремя типами соединений; контроллер автоматически определяет тип используемого соединения, в отличие от U.2, где пользователям необходимо использовать отдельные контроллеры для SATA/SAS и NVMe. Устройства U.3 обратно совместимы с хостами U.2, но накопители U.2 не совместимы с хостами U.3. M.2 (NGFF) — бескорпусные накопители в компактном форм-факторе. Предназначены для использования в ноутбуках и стационарных ПК. Накопители формата M.2 могут подключаться либо непосредственно к соответствующему разъёму системной платы, либо устанавливаться в слот PCI Express через переходник. Intel Ruler SSD (EDSFF) — форм-фактор для серверных накопителей с поддержкой горячей замены. Был анонсирован компанией Intel в 2017 году на Flash Memory Summit. Форм-фактор U.2 обеспечивал механическую совместимость с корпусами, предназначенными для установки дисков 2,5", но не очень хорошо подходил для твердотельных накопителей — ограниченные габариты усложняли наращивание объёма накопителей и затрудняли охлаждение. Размеры накопителей EDSFF составляют 325,35×9,5×38,6 мм, поддерживается подключение через 4 или 8 линий PCIe (в перспективе — до 16). Примерами готовых продуктов, использующих форм-фактор EDSFF, являются серверы и JBOF-системыJBOF (Just a bundle of flash) — шасси с твердотельными накопителями и коммутаторами PCIe, часть портов которых выведена наружу. производства Supermicro, позволяющие разместить до 32 накопителей в корпусе высотой 1U. Samsung NGSFF — форм-фактор для серверных накопителей с поддержкой горячей замены. Как и EDSFF, разработан в качестве альтернативы U.2. Имеет меньшие габариты в сравнении с EDSFF — 110×4,38×30,5 мм, что позволяет установить большее количество накопителей (36 в 1U) и использовать корпуса меньшей глубины.
NVMe over Fabrics На протяжении последних лет ведутся разработки устройств и протоколов, позволяющих использовать накопители NVMe не только локально, в пределах одного сервера, но и строить сети хранения данных с использованием преимуществ NVMe. Подключение систем на базе накопителей NVMe к традиционным сетям хранения данных приводит к потере основного преимущества NVMe в виде сниженных за счёт отказа от SCSI задержек, так как в Fibre Channel и iSCSI предусмотрена инкапсуляция только команд SCSI.
Работы по устранению этого недостатка ведутся в двух направлениях: Сохранение шины PCI Express в качестве транспорта и вынос её за пределы одиночного сервера. Компании Microsemi и Broadcom (подразделение PLX) разрабатывают коммутаторы PCI Express. Существуют прототипы готовых коммутаторов с внешними портами, обеспечивающих подключение нескольких хостов и устройств PCI Express. Собственно NVMe over Fabrics — добавление в Fibre Channel и протоколы передачи данных блочного уровня, использующие RDMA, поддержки команд NVMe вместо SCSI. При этом обеспечивается уровень дополнительных задержек не более 10 мкс. Первая версия официальной спецификации NVMe over Fabrics была опубликована 9 июня 2016 года.
Поддержка операционными системами
Windows Работа над первой версией драйвера Microsoft для Windows велась сформированной по инициативе «OpenFabrics Alliance» рабочей группой «NVMe Windows Working Group» и была завершена в 2012 году.
Компания Microsoft интегрировала драйвер NVMe в Windows 8.1 и Windows Server 2012 R2. Драйвер Microsoft для Windows 7 и Windows Server 2008 R2 был выпущен в виде обновлений. Samsung предлагает собственный драйвер NVMe, который обеспечивает более высокую производительность. Windows 10 поддерживает Host Memory Buffer с максимальным размером 64 МБ.
Linux