Interested Article - NVM Express

NVM Express ( NVMe , NVMHCI ) — от англ. Non-Volatile Memory Host Controller Interface Specification ) — интерфейс доступа к твердотельным накопителям , подключённым по шине PCI Express . «NVM» в названии спецификации обозначает энергонезависимую память, в качестве которой в SSD повсеместно используется флеш-память типа NAND . Логический интерфейс NVM Express был разработан с нуля, основные цели — получение низких задержек и эффективное использование высокого параллелизма твердотельных накопителей за счёт применения нового набора команд и механизма обработки очередей, оптимизированного для работы с современными многоядерными процессорами .

Тип разъёма и конструктив носителей NVMe может быть различным. Распространены накопители в форм-факторах M.2 , (конструктивно совместимы с накопителями SATA 2,5") и платы расширения 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 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 ГБайт/с при последовательном чтении и 740 000 IOPS при случайном доступе блоками 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 .

Появившиеся в сентябре 2015 года смартфоны Apple iPhone 6s и iPhone 6s Plus стали первыми мобильными устройствами, оснащёнными встроенными NVMe-накопителями .

Технические особенности и инфраструктура

Сравнение с AHCI

Обработка очередей в NVMe

Основными преимуществами NVMe перед AHCI является оптимизированный механизм работы с очередями и обработкой прерываний, что позволяет обеспечить более высокий уровень производительности .

Устройство AHCI ограничено одной очередью глубиной 32, в то время как NVMe поддерживает 64 К (65536) очередей с глубиной 65536 каждая. Набор команд NVMe существенно упрощён в сравнении с ATA и SCSI, спецификацией определяется всего 13 обязательных команд, что, в первую очередь, существенно упрощает разработку устройств .

Форм-факторы накопителей

HGST SN150, NVMe-накопитель в форм-факторе низкопрофильной платы PCI Express
  • Платы расширения PCI Express . Большая часть выпускаемых по состоянию на начало 2016 года плат NVMe-накопителей выполнена в форм-факторе половинной высоты/половинной длины с интерфейсом PCI Express x4.
NVMe-накопитель OCZ Z6300 в форм-факторе U.2
Двухпортовый ретаймер Supermicro AOC-SLG3-2E4R. Плата PCIe x8 с двумя разъёмами SFF-8643. Предназначена для подключения накопителей NVMe форм-фактора U.2
  • U.2 (SFF-8639) — накопители форм-фактора 2,5" высотой 15 мм с разъёмом SFF-8639. Используются, в основном, в серверах. Преимуществами в сравнении с обычной платой расширения являются поддержка горячей замены накопителей и более компактное исполнение, позволяющее разместить большее количество накопителей в корпусе сервера или системы хранения данных. Разъём SFF-8639 обратно совместим с SFF-8482, бэкплейн с разъёмом SFF-8639 при подключении к нему соответствующего контроллера поддерживает подключение накопителей с интерфейсами SATA и SAS.
Разъём SFF-8639
Не все накопители форм-фактора U.2 являются NVMe-совместимыми. В начале 2013 года компания Dell выпустила новое поколение серверов с возможностью подключения до четырёх накопителей Micron P320h. Они были выполнены в совместимом с U.2 форм-факторе, подключались через четыре линии PCIe, но не использовали NVMe в качестве логического интерфейса .
Для подключения бэкплейнов с поддержкой накопителей U.2 к шине PCI Express используются кабели с разъёмами OCuLink или SFF-8643 , обеспечивающий подключение четырёх линий PCI Express. Кабель может подключаться к специальному разъёму на системной плате, в обычный слот расширения PCI Express через плату-ретаймер или к разъёму M.2 через переходник .
NVMe-накопитель Samsung 960 PRO в форм-факторе M.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-системы производства 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

Первоначальная разработка драйвера для Linux велась компанией Intel. Драйвер был включён в ветку 3.3 ядра Linux 19 марта 2012 года .

В процессе разработки драйвера NVMe были выявлены недостатки архитектуры блочного ввода-вывода в ядре Linux, затруднявшие масштабирование производительности свыше 1 миллиона IOPS на устройство . При участии инженеров Fusion-io был разработан масштабируемый слой блочного ввода-вывода для высокопроизводительных твердотельных накопителей, известный как blk-multiqueue или blk-mq , и добавлен в ядро версии 3.13 19 января 2014 года . Другое направление в области оптимизации блочного-ввода вывода относится к уменьшению задержек, связанных с обработкой прерываний .

Linux поддерживает Host Memory Buffer (HMB) начиная с версии 4.13.1 с максимальным размером 128 MB по умолчанию .

macOS

В macOS драйвер NVMe содержится в составе системы начиная с версии 10.13, вышедшей 25 сентября 2017 года.

ОС семейства BSD

Разработка драйвера NVMe для 9-й ветки FreeBSD велась при поддержке Intel . Начиная с FreeBSD версии 10.2 драйверы nvd(4) и nvme(4) включены в конфигурацию ядра по умолчанию .

Драйвер NVMe для DragonFly был написан с нуля Мэттом Диллоном . Первый официальный релиз с поддержкой NVMe — 4.6 .

Разработка NVMe-драйвера для OpenBSD была начата в апреле 2014 года разработчиком, ранее развивавшим драйверы USB 2.0 и AHCI . Первый релиз драйвера появился в OpenBSD 6.0 .

Поддержка NVMe в NetBSD появилась в выпуске 8.0 .

Solaris

Solaris получила поддержку NVMe с версии Oracle Solaris 11.2 .

Haiku

Полная поддержка NVMe доступна в Haiku с ревизии 54102 .

QEMU

Для отладки драйверов и другого ПО в QEMU начиная с версии 1.6 появилась эмуляция NVMe-устройств (август 2013 года) .

UEFI

Драйвер NVMe для загрузочного окружения UEFI доступен на SourceForge (проект edk2) .

Примечания

  1. Пространство имён NVMe ( англ. NVMe namespace ) — область накопителя NVMe, отформатированная для блочного доступа.
  2. Первый вариант Samsung SM951 был выпущен в том же форм-факторе, но поддерживал SATA Express.
  3. Разъём SFF-8643, он же Mini-SAS HD, обычно применяется в кабелях SAS , но кабели NVMe и кабели SAS с такими разъёмами не являются взаимозаменяемыми.
  4. Накопители форм-фактора M.2 могут использовать как AHCI, так и NVMe
  5. JBOF (Just a bundle of flash) — шасси с твердотельными накопителями и коммутаторами PCIe, часть портов которых выведена наружу.
  1. , с. 43.
  2. Jonmichael Hands, Peter Onufryk. (англ.) (PDF). Intel (29 января 2015). Дата обращения: 10 февраля 2016. 1 июля 2016 года.
  3. (англ.) (PDF) 18, 20–22. Intel (20 марта 2015). Дата обращения: 10 февраля 2016. 2 апреля 2015 года.
  4. Dave Landsman. (англ.) (PDF). SanDisk. Дата обращения: 10 февраля 2016. Архивировано из 5 октября 2013 года.
  5. Paul Wassenberg. (англ.) (PDF). SATA-IO (25 июня 2013). Дата обращения: 10 февраля 2016. Архивировано из 4 октября 2013 года.
  6. Zsolt Kerekes. (англ.) . StorageSearch.com. Дата обращения: 11 февраля 2016. 25 мая 2017 года.
  7. Amber Huffman. (англ.) (PDF). Flash Memory Summit (2008). Дата обращения: 12 февраля 2016. 4 марта 2016 года.
  8. (англ.) (PDF). SATA-IO (31 июля 2012). Дата обращения: 11 февраля 2016. Архивировано из 12 февраля 2019 года.
  9. Amber Huffman. (англ.) (PDF). Flash Memory Summit (2009). Дата обращения: 20 февраля 2017. 17 апреля 2016 года.
  10. (англ.) (PDF). NVM Express, Inc. Дата обращения: 10 февраля 2016. 4 марта 2016 года.
  11. Dave Minturn. (англ.) (PDF). OFADevWorkshop (2015). Дата обращения: 11 февраля 2016. 22 апреля 2016 года.
  12. (англ.) . The Inquirer (13 октября 2007). Дата обращения: 12 февраля 2016. Архивировано из 18 сентября 2009 года.
  13. Amber Huffman. (англ.) (PDF). Intel Corporation . NVM Express, Inc. (14 апреля 2008). Дата обращения: 20 февраля 2017. 5 июня 2015 года.
  14. Peter Onufryk. (англ.) (PDF). Flash Memory Summit (2013). Дата обращения: 12 февраля 2016. 22 февраля 2016 года.
  15. (PDF) (англ.) . NVM Express, Inc. 2011-06-01. (PDF) из оригинала 4 марта 2016 . Дата обращения: 12 февраля 2016 .
  16. Amber Huffman. (англ.) (PDF). NVM Express, Inc. (11 октября 2012). Дата обращения: 12 февраля 2016. 6 июля 2017 года.
  17. NVM Express, Inc. (англ.) (PDF). Дата обращения: 16 декабря 2023. 16 декабря 2023 года.
  18. NVM Express, Inc. (англ.) (PDF) (2 июля 2014). Дата обращения: 15 февраля 2016. 1 июля 2016 года.
  19. NVM Express, Inc. (англ.) (PDF) (3 ноября 2014). Дата обращения: 15 февраля 2016. 29 июня 2016 года.
  20. NVM Express, Inc. (англ.) (PDF) (23 октября 2015). Дата обращения: 12 февраля 2016. 13 апреля 2016 года.
  21. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  22. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 июля 2023 года.
  23. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  24. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 28 января 2023 года.
  25. NVM Express, Inc. (англ.) (PDF) (24 мая 2018). Дата обращения: 25 июня 2018. 25 июня 2018 года.
  26. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  27. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 23 ноября 2023 года.
  28. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  29. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  30. NVM Express, Inc. (англ.) (PDF). Дата обращения: 13 декабря 2023. 13 декабря 2023 года.
  31. NVM Express, Inc. (англ.) (PDF). NVM Express (13 мая 2021). Дата обращения: 8 августа 2021. 20 июля 2021 года.
  32. NVM Express, Inc. (англ.) (PDF). NVM Express (23 июля 2021). Дата обращения: 8 августа 2021. 8 августа 2021 года.
  33. NVM Express, Inc. (англ.) . NVM Express (6 января 2022). Дата обращения: 9 февраля 2022. 20 января 2022 года.
  34. (англ.) . The Inquirer (21 августа 2012). Дата обращения: 12 февраля 2016. Архивировано из 24 августа 2012 года.
  35. (англ.) . The SSD Review (24 августа 2012). Дата обращения: 12 февраля 2016. 1 января 2016 года.
  36. (англ.) . StorageReview.com (18 июля 2013). Дата обращения: 12 февраля 2016. Архивировано из 10 января 2014 года.
  37. Scot Strong. (англ.) . The SSD Review (3 июня 2014). Дата обращения: 12 февраля 2016. 23 декабря 2015 года.
  38. Kristian Vättö. (англ.) . AnandTech (25 июня 2015). Дата обращения: 26 августа 2016. 28 августа 2016 года.
  39. Les Tokar. (англ.) . The SSD Review (октябрь 2015). Дата обращения: 12 февраля 2016. 7 ноября 2015 года.
  40. Kevin OBrien. (англ.) . Storage Review (5 февраля 2013). Дата обращения: 15 февраля 2016. 11 февраля 2016 года.
  41. Patrick Kennedy. (англ.) . Serverthehome (9 августа 2017). Дата обращения: 25 июня 2018. 25 июня 2018 года.
  42. (англ.) . StorageReview (3 марта 2018). Дата обращения: 25 июня 2018. 25 июня 2018 года.
  43. Cliff Robinson. (англ.) . StorageReview (11 января 2018). Дата обращения: 25 июня 2018. 25 июня 2018 года.
  44. David Wang. (англ.) . Flash Memory Summit. Дата обращения: 25 июня 2018. 25 июня 2018 года.
  45. Andy Herron. (англ.) (pdf). NVM Express, Inc. (2016). Дата обращения: 11 августа 2016. 22 августа 2016 года.
  46. (англ.) . NVM Express, Inc. 2016-06-09. из оригинала 18 августа 2016 . Дата обращения: 11 августа 2016 .
  47. Kwok Kong. (англ.) . Storage Review (4 августа 2014). Дата обращения: 15 февраля 2016. Архивировано из 4 марта 2016 года.
  48. Andy Herron. (англ.) (pdf). Storage Developer Conference (11 января 2014). Дата обращения: 15 февраля 2016. 10 января 2014 года.
  49. (англ.) . Microsoft Support (4 августа 2014). — KB2990941. Дата обращения: 15 февраля 2016. 13 марта 2016 года.
  50. Обер, Михаил. — В: Выбираем SSD : обзор технологий на рынке и сравнительные тесты // XX hardware LUXX : журн. — 2016. — 2 января. — С. 3. — Электр. изд.
  51. Дата обращения: 16 октября 2021. Архивировано из 16 октября 2021 года.
  52. Keith Busch. (англ.) (pdf). Flash Memory Summit (12 августа 2013). Дата обращения: 15 февраля 2016. 5 ноября 2013 года.
  53. Matias Bjørling; Jens Axboe; David Nellans; Philippe Bonnet.: (англ.) (pdf). IT University of Copenhagen (5 марта 2013). Дата обращения: 15 февраля 2016. 2 февраля 2014 года.
  54. Werner Fischer. (англ.) . Thomas-Krenn. Дата обращения: 15 февраля 2016. 3 марта 2016 года.
  55. Stephen Bates. (англ.) . PMC-Sierra (12 ноября 2015). Дата обращения: 15 февраля 2016. Архивировано из 6 марта 2016 года.
  56. . Дата обращения: 16 октября 2021. 22 февраля 2022 года.
  57. . Дата обращения: 16 октября 2021. 29 октября 2017 года.
  58. . Дата обращения: 16 октября 2021. 16 октября 2021 года.
  59. (англ.) . FreeBSD source tree . The FreeBSD Project. Дата обращения: 15 февраля 2016. 29 мая 2013 года.
  60. (англ.) . The FreeBSD Project. Дата обращения: 15 февраля 2016. 18 июня 2017 года.
  61. (англ.) . Дата обращения: 8 сентября 2016. 19 сентября 2016 года.
  62. . Дата обращения: 8 сентября 2016. 4 сентября 2016 года.
  63. David Gwynne. (англ.) . BSD Cross Reference (16 апреля 2014). Дата обращения: 15 февраля 2016. 28 апреля 2014 года.
  64. . Дата обращения: 9 сентября 2016. Архивировано из 17 сентября 2016 года.
  65. (англ.) . Oracle. Дата обращения: 15 февраля 2016. 9 декабря 2015 года.
  66. (англ.) . Haiku official discussion forums . Haiku Community (28 апреля 2020). Дата обращения: 28 апреля 2020.
  67. . Дата обращения: 8 июля 2020. 17 июля 2020 года.
  68. . SourceForge.net. Дата обращения: 11 января 2014. 31 декабря 2013 года.

Литература

  • Rino Micheloni, Alessia Marelli, Kam Eshghi. . — Springer Science & Business Media, 2012. — 382 с. — (Springer Series in Advanced Microelectronics). — ISBN 9789400751453 .
  • David A. Deming. . — CRC Press, 2014. — 496 с. — (Auerbach Book). — ISBN 9781482243314 .

Ссылки

Источник —

Same as NVM Express