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).
  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).
  22. NVM Express, Inc. (англ.) (PDF).
  23. NVM Express, Inc. (англ.) (PDF).
  24. NVM Express, Inc. (англ.) (PDF).
  25. NVM Express, Inc. (англ.) (PDF) (24 мая 2018). Дата обращения: 25 июня 2018. 25 июня 2018 года.
  26. NVM Express, Inc. (англ.) (PDF).
  27. NVM Express, Inc. (англ.) (PDF).
  28. NVM Express, Inc. (англ.) (PDF).
  29. NVM Express, Inc. (англ.) (PDF).
  30. NVM Express, Inc. (англ.) (PDF).
  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 .

Ссылки

Same as NVM Express