NVM Express

10-06-2023

Перейти к: навигация, поиск

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

Накопители, использующие NVM Express, могут представлять собой полноразмерные карты расширения PCI Express[1] либо устройства SATA Express. Спецификация M.2 (ранее известная как NGFF) для компактных накопителей также поддерживает NVM Express в качестве одного из логических интерфейсов.[2][3]

История

В середине-конце 2000-ых многие SSD накопители использовали компьютерные шины SATA, SAS или Fibre Channel для взаимодействия с компьютером. На массовом рынке SSD чаще всего использовали интерфейс SATA, разработанный для подключения жестких дисков форм-факторов 3,5 и 2,5 дюйма. Однако SATA часто ограничивал возможности развития SSD, в частности, максимальную скорость передачи данных.[4]

Высокопроизводительные SSD изготавливались с интерфейсом PCI Express и ранее, однако они использовали нестандартные логические интерфейсы, либо применяли многоканальные SATA/SAS контроллеры, к которым на той же плате подключалось несколько SSD-контроллеров. Путем стандартизации интерфейсов SSD можно было бы сократить количество драйверов для операционных систем, производителям SSD больше не пришлось бы отвлекать ресурсы на создание и отладку драйверов. Подобным образом принятие спецификаций USB mass storage позволило создать большое разнообразие USB-флеш-накопителей, которые смогли работать с любыми компьютерами, не требуя оригинальных драйверов для каждой модели.[5]

Первые подробности о новом стандарте доступа к энергонезависимой памяти появились на Intel Developer Forum в 2007 году, где NVMHCI был указан как интерфейс к персональному компьютеру для предлагаемого контроллера флеш-памяти с шиной ONFI.[6] В 2007 году была собрана рабочая группа для проработки NVMHCI во главе с Intel. Первая спецификация NVMHCI 1.0 была закончена в апреле 2008 года и размещена на сайте Intel.[7][8][9]

Техническая проработка NVMe началась во второй половине 2009 года.[10] Спецификации NVMe были разработаны "NVM Express Workgroup", в которую входило более 90 компаний, председателем группы был Amber Huffman из Intel. Первая версия NVMe 1.0 была издана 1 марта 2011 года,[11] версия 1.1 - 11 октября 2012 года.[12] В версии 1.1 были добавлены многопутевой ввод-вывод и возможность проведения DMA операций по множеству адресов с фрагментами произвольной длины (arbitrary-length scatter-gather I/O). Ожидается, что последующие версии стандарта улучшат управление пространствами имен.[10] Из-за изначальной фокусировки на корпоративных применениях, стандарт NVMe 1.1 получил название "Enterprise NVMHCI".[13] Обновление базовой спецификации NVMe, версия 1.0e, вышла в январе 2013 года.[14]

Первые контроллеры SSD, реализующие NVMe были выпущены Integrated Device Technology в августе 2012 года (89HF16P04AG3 и 89HF32P08AG3).[15][16] Первый твердотельный диск с NVMe, Samsung XS1715 для корпоративных применений был анонсирован в июле 2013 года, по заявлениям Samsung он обеспечивал чтение на скоростях 3 ГБайт/с.[17] В ноябре 2013 года LSI SandForce выпустила контроллер SF3700 с NVMe,[18] показавшие скорости последовательных обращений в 1,8 ГБайт/с и 80-150 тысяч IOPS на случайных обращениях при использовании физического интерфейса PCI Express 2.0 ×4.[19] На Consumer Electronics Show 2014 компания Kingston представила потребительский продукт HyperX Predator на этом контроллере.[20][21] В июне 2014 Intel представила свои первые линейки корпоративных накопителей с NVM Express: DC P3700, DC P3600, DC P3500.[22]

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

Пути передачи данных при использовании NVMe через различные подсистемы стека ввода-вывода в ядре Linux.[23]
Windows
Сторонний драйвер был разработан "NVMe Windows Working Group" (от OpenFabrics Alliance). Основной драйвер с открытыми исходниками разработан совместными усилиями IDT, Intel и LSI.[24]
Microsoft добавила встроенный драйвер NVMe в Windows 8.1 и Windows Server 2012 R2.[25][26] Драйвер Microsoft для Windows 7 и Windows Server 2008 R2 был выпущен в виде обновлений.[27]
Linux
Драйвер для Linux был опубликован компанией Intel.[28][29][30] Он был внесен в основную ветку ядра Linux 19 марта 2012 года и доступен начиная с версии ядра 3.3.[31]
Масштабируемый слой блочного ввода-вывода для высокопроизводительных твердотельных накопителей был создан инженерами Fusion-io и добавлен в ядро версии 3.13 (19 января 2014 года). [32][33][34][35]
FreeBSD
Драйвер Intel NVM Express был добавлен во FreeBSD стабильной 9 ветки и более новые.[36][37]
QEMU
NVMe поддерживается в QEMU с версии 1.6 (август 2013 года).[38]
Solaris
Solaris получила поддержку NVMe с версии Oracle Solaris 11.2.[39]
UEFI
Драйвер NVMe для окружения UEFI доступен на SourceForge (проект edk2).[40]
OpenBSD
Разработка NVMe драйвера для OpenBSD была начата в апреле 2014 года программистом, ранее развивавшем драйвера USB 2.0 и AHCI.[41]

Примечания

  1. Intel SSD DC P3700 800GB and 1.6TB Review: The Future of Storage (13 августа 2014). Проверено 21 ноября 2014.
  2. AHCI and NVMe as Interfaces for SATA Express™ Devices - Overview (PDF). SanDisk. Проверено 2 октября 2013.
  3. SATA-IO (25 июня 2013). Проверено 21 ноября 2014.
  4. A Comparison of NVMe and AHCI. 31 July 2012. The Serial ATA International Organization. Проверено 3 июля 2013.
  5. NVM Express Explained.
  6. Speeding up Flash... in a flash. The Inquirer (13 октября 2007). Проверено 11 января 2014.
  7. http://www.bswd.com/FMS09/FMS09-T2A-Huffman.pdf
  8. Flash new standard tips up. The Inquirer (16 апреля 2008). Проверено 11 января 2014.
  9. http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2008/20080813_T2A_Huffman.pdf
  10. ↑ http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2013/20130813_A12_Onufryk.pdf
  11. New Promoter Group Formed to Advance NVM Express, Press release (June 1, 2011). Проверено 18 сентября 2013.
  12. NVM Express Revision 1.1. Specification (October 11, 2012). Проверено 18 сентября 2013.
  13. PCIe-based Storage (PDF). snia.org (8 июня 2013). Проверено 12 января 2014.
  14. NVM Express Revision 1.0e. Specification (January 23, 2013). Проверено 18 сентября 2013.
  15. IDT releases two NVMe PCI-Express SSD controllers. The Inquirer (21 августа 2012). Проверено 11 января 2014.
  16. IDT Shows Off The First NVMe PCIe SSD Processor and Reference Design - FMS 2012 Update. The SSD Review (24 августа 2012). Проверено 11 января 2014.
  17. Samsung Announces Industry’s First 2.5-inch NVMe SSD | StorageReview.com - Storage Reviews. StorageReview.com (18 июля 2013). Проверено 11 января 2014.
  18. LSI SF3700 SandForce Flash Controller Line Unveiled | StorageReview.com - Storage Reviews. StorageReview.com (18 ноября 2013). Проверено 11 января 2014.
  19. LSI Introduces Blazing Fast SF3700 Series SSD Controller, Supports Both PCIe and SATA 6Gbps
  20. Kingston Unveils First PCIe SSD: 1800 MB/s Read Speeds
  21. Kingston HyperX Predator PCI Express SSD Unveiled With LSI SandForce SF3700 PCIe Flash Controller
  22. Intel® Solid-State Drive Data Center Family for PCIe*
  23. Kernel-Based Mechanisms for High-Performance I/O (PDF). Tel Aviv University (April 2013). Проверено 28 декабря 2014.
  24. Windows NVM Express. Project web site. Проверено 18 сентября 2013.
  25. Ошибка в сносках?: Неверный тег <ref>; для сносок snia-windows не указан текст
  26. Windows 8.1 to support hybrid disks and adds native NVMe driver. Myce.com (6 сентября 2013). Проверено 11 января 2014.
  27. Update to support NVM Express by using native drivers in Windows 7 or Windows Server 2008 R2. Microsoft (13 ноября 2014). Проверено 17 ноября 2014.
  28. NVM Express driver. LWN.net (3 марта 2011). Проверено 5 ноября 2013.
  29. Linux NVMe Driver (PDF). flashmemorysummit.com (12 августа 2013). Проверено 5 ноября 2013.
  30. Hands-on Lab: Compiling the NVM Express Linux Open Source Driver and SSD Linux Benchmarks and Optimizations (PDF). IDF13. activeevents.com (2013). Проверено 11 января 2014.
  31. Merge git://git.infradead.org/users/willy/linux-nvme. kernel.org (18 января 2012). Проверено 5 ноября 2013.
  32. Linux kernel 3.13, Section 1.1 A scalable block layer for high-performance SSD storage (19 января 2014). Проверено 25 января 2014.
  33. Linux kernel 3.18, Section 1.8. Optional multiqueue SCSI support (7 декабря 2014). Проверено 18 декабря 2014.
  34. LWN.net (5 июня 2013). Проверено 25 января 2014.
  35. Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems (PDF). ACM (2013). Проверено 25 января 2014.
  36. Log of /head/sys/dev/nvme. FreeBSD source tree. The FreeBSD Project. Проверено 16 октября 2012.
  37. Log of /stable/9/sys/dev/nvme. FreeBSD source tree. The FreeBSD Project. Проверено 3 июля 2013.
  38. ChangeLog/1.6 - QEMU
  39. nvme(7D). Oracle. Проверено 2 декабря 2014.
  40. Download EDK II from. SourceForge.net. Проверено 11 января 2014.
  41. non volatile memory express controller (/sys/dev/ic/nvme.c) (16 апреля 2014). Проверено 27 апреля 2014.

Ссылки

  • NVM Express Official Website  (англ.)
  • LWN.net, April 19, 2013

NVM Express.

© 2011–2023 stamp-i-k.ru, Россия, Барнаул, ул. Анатолия 32, +7 (3852) 15-49-47