NVM Express

Материал из wikixw
Перейти к навигации Перейти к поиску

NVM Express (NVMe) или спецификация интерфейса хост-контроллера энергонезависимой памяти (NVMHCIS) - это спецификация открытого интерфейса логического устройства для доступа к энергонезависимому запоминающему носителю компьютера, обычно подключаемому через шину PCI Express. Инициализм NVM означает энергонезависимую память, которая часто является флэш-памятью NAND, которая выпускается в нескольких физических форм-факторах, включая твердотельные накопители (SSD), карты надстройки PCIe и карты M.2, преемницы карт mSATA. NVM Express, как интерфейс логического устройства, был разработан с учетом низких задержка и внутренний параллелизм твердотельных запоминающих устройств.

С архитектурной точки зрения логика для NVMe физически хранится внутри и выполняется чипом контроллера NVMe, который физически расположен рядом с носителем данных, обычно твердотельным накопителем. Изменения версии для NVMe, например, с 1.3 по 1.4, включены в носитель данных и не влияют на компоненты, совместимые с PCIe, такие как материнские платы и процессоры.

Благодаря своей конструкции NVM Express позволяет аппаратному и программному обеспечению хоста в полной мере использовать уровни параллелизма, возможные в современных твердотельных накопителях. В результате NVM Express снижает накладные расходы наввод-вывод и обеспечивает различные улучшения производительности по сравнению с предыдущими интерфейсами логических устройств, включая многочисленные длинные очереди команд и уменьшенную задержку. Предыдущие интерфейсные протоколы, такие как AHCI, были разработаны для использования с гораздо более медленными жесткие диски (HDD), на которых между запросом и передачей данных существует очень длительная задержка (относительно операций процессора), где скорость передачи данных намного ниже скорости оперативной памяти, и где вращение диска и время поиска требуют дополнительной оптимизации.

Устройства NVM Express в основном доступны в виде плат расширения и устройств форм-фактора 2,5 дюйма, которые обеспечивают четырехполосный интерфейс PCI Express через разъем U.2 (ранее известный как SFF-8639). Устройства хранения данных, использующие SATA Express и спецификацию M.2, которые поддерживают NVM Express в качестве интерфейса логического устройства, являются популярным вариантом использования NVME и стали доминирующей формой твердотельного хранилища для серверов, как настольные компьютеры, так и ноутбуки.

Технические характеристики[править]

Спецификации для NVMe, выпущенные на сегодняшний день, включают:[9]

1.0e (январь 2013)

1.1b (июль 2014)
1.2 (ноябрь 2014)
1.2a (октябрь 2015)
1.2b (июнь 2016)
1.2.1 (июнь 2016)
1.3 (май 2017)
1.3a (октябрь 2017)
1.3b (май 2018)
1.3c (май 2018)
1.3d (март 2019)
1.4 (июнь 2019)
1.4a (март 2020)
1.4b (сентябрь 2020)
1.4c (июнь 2021)
2.0 (май 2021)[10]
2.0a (июль 2021)
2.0b (январь 2022)
2.0c (октябрь 2022)

Предыстория[править]

Исторически сложилось так, что большинство твердотельных накопителей использовали шины, такие как SATA, SAS или Fibre Channel для взаимодействия с остальной компьютерной системой. С тех пор, как твердотельные накопители стали доступны на массовых рынках, SATA стал наиболее распространенным способом подключения твердотельных накопителей в персональных компьютерах; однако SATA был разработан в основном для сопряжения с механическими жесткими дисками (HDD), и он становился все более неподходящим для твердотельных накопителей, скорость работы которых со временем улучшалась. Например, примерно через пять лет после массового внедрения на массовом рынке (2005-2010) многие твердотельные накопители уже были ограничены сравнительно низкой скоростью передачи данных, доступной для жестких дисков — в отличие от жестких дисков, некоторые твердотельные накопители ограничены максимальной пропускной способностью SATA.

Твердотельные накопители высокого класса производились с использованием шины PCI Express до NVMe, но с использованием интерфейсов нестандартной спецификации. Благодаря стандартизации интерфейса твердотельных накопителей операционным системам требуется только один общий драйвер устройства для работы со всеми твердотельными накопителями, соответствующими спецификации. Это также означает, что каждому производителю твердотельных накопителей не нужно разрабатывать специальные интерфейсные драйверы. Это похоже на то, как устройства USB mass storage создаются в соответствии со спецификацией класса устройств хранения данных USB и работают со всеми компьютерами, не требуя драйверов для каждого устройства.

Устройства NVM Express также используются в качестве строительного блока для хранения данных с пакетным буфером во многих ведущих суперкомпьютерах, таких как суперкомпьютер Fugaku, суперкомпьютер Summit и суперкомпьютер Sierra и т.д.

История[править]

Первые подробности о новом стандарте доступа к энергонезависимой памяти появились на Форуме разработчиков Intel 2007 года, когда NVMHCI был показан как протокол на стороне хоста предлагаемого архитектурного проекта, в котором на стороне микросхем памяти (flash) работала рабочая группа по флэш-интерфейсу NAND (ONFI). В том же году была сформирована рабочая группа NVMHCI во главе с Intel. Спецификация NVMHCI 1.0 была завершена в апреле 2008 года и опубликована на веб-сайте Intel.

Техническая работа над NVMe началась во второй половине 2009 года. Спецификации NVMe были разработаны рабочей группой NVM Express, в состав которой входят более 90 компаний; Эмбер Хаффман из Intel была председателем рабочей группы. Версия 1.0 спецификации была выпущена 1 марта 2011 года, в то время как версия 1.1 спецификации была выпущена 11 октября 2012 года. Основными функциями, добавленными в версии 1.1, являются многопутевой ввод-вывод (с разделением пространства имен) и ввод-вывод с разбросом произвольной длины. Ожидается, что будущие версии значительно улучшат управление пространством имен. Из-за своей функциональности NVMe 1.1 изначально назывался "Enterprise NVMHCI". Обновление базовой спецификации NVMe, получившее название версии 1.0e, было выпущено в январе 2013 года. В июне 2011 года была сформирована группа промоутеров, возглавляемая семью компаниями.

Первые коммерчески доступные чипсеты NVMe были выпущены компанией Integrated Device Technology (89HF16P04AG3 и 89HF32P08AG3) в августе 2012 года.Первый накопитель NVMe, корпоративный накопитель от Samsung XS1715, был анонсирован в июле 2013 года; по словам Samsung, этот накопитель поддерживал скорость чтения 3 Гбит / с, что в шесть раз быстрее, чем их предыдущие корпоративные предложения. Семейство контроллеров LSI SandForce SF3700, выпущенных в ноябре 2013 года, также поддерживает NVMe. Продукт Kingston HyperX "prosumer", использующий этот контроллер, был продемонстрирован на Выставка бытовой электроники 2014 и обещанная аналогичная производительность. В июне 2014 года Intel анонсировала свои первые продукты NVM Express, семейство центров обработки данных Intel SSD, которые взаимодействуют с хостом через шину PCI Express, включая серии DC P3700, DC P3600 и DC P3500. По состоянию на ноябрь 2014 накопители NVMe доступны в продаже.

В марте 2014 года группа была зарегистрирована в NVM Express, Inc., которая по состоянию на ноябрь 2014 года состоит из более чем 65 компаний со всей отрасли. Спецификации NVM Express принадлежат и поддерживаются компанией NVM Express, Inc., которая также способствует повышению осведомленности отрасли о NVM Express как общеотраслевом стандарте. NVM Express, Inc. управляется советом директоров, состоящим из тринадцати человек, выбранных из группы промоутеров, в которую входят Cisco, Dell, EMC, HGST, Intel, Micron, Microsoft, NetApp, Oracle, PMC, Samsung, SanDisk и Seagate.

В сентябре 2016 года Ассоциация CompactFlash объявила, что выпустит новую спецификацию карты памяти, CFexpress, которая использует NVMe.

Буфер памяти узла NVMe (HMB) добавлен в версии 1.2 спецификации NVMe.[33] HMB позволяет твердотельным накопителям использовать DRAM хоста, что может повысить производительность ввода-вывода для твердотельных накопителей без DRAM.[34]

Форм-факторы[править]

Существует множество форм-факторов твердотельных накопителей NVMe, таких как AIC, U.2, U.3, M.2 и т.д.

AIC (дополнительная карта)[править]

Почти все ранние твердотельные накопители NVMe имеют размеры HHHL (половинная высота, половинная длина) или FHHL (полная высота, половинная длина) AIC с интерфейсом PCIe 2.0 или 3.0. Карту твердотельного накопителя HHHL NVMe легко вставить в слот PCIe сервера.

U.2 (SFF-8639)[править]

U.2, ранее известный как SFF-8639, представляет собой компьютерный интерфейс для подключения твердотельных накопителей к компьютеру. Он использует до четырех линий PCI Express. Доступные серверы могут объединять до 48 твердотельных накопителей U.2 NVMe.

U.3 (SFF-8639 или SFF-TA-1001)[править]

U.3 построен на базе спецификации U.2 и использует тот же разъем SFF-8639. Это "трехрежимный" стандарт, объединяющий поддержку SAS, SATA и NVMe в одном контроллере. U.3 также может поддерживать горячую замену между различными дисками, на которых доступна поддержка встроенного программного обеспечения. Диски U.3 по-прежнему обратно совместимы с U.2, но диски U.2 несовместимы с хостами U.3.

M.2[править]

M.2, ранее известный как форм-фактор следующего поколения (NGFF), использует компьютерную шину твердотельного накопителя M.2 NVMe. Интерфейсы, предоставляемые через разъем M.2, являются PCI Express 3.0 или выше (до четырех полос).

EDSFF[править]

Основная статья: Стандартный форм-фактор предприятия и центра обработки данных

NVMe-оФ[править]

NVM Express over Fabrics (NVMe-oF) - концепция использования транспортного протокола по сети для подключения удаленных устройств NVMe, в отличие от обычного NVMe, где физические устройства NVMe подключаются к шине PCIe либо напрямую, либо через PCIe-коммутатор к шине PCIe. В августе 2017 года Международный комитет по стандартам информационных технологий (ICITS) организации по стандартизации представил стандарт для использования NVMe через Fibre Channel (FC), и эта комбинация часто упоминается как FC-NVMe или иногда NVMe/FC.

По состоянию на май 2021 года поддерживаемые транспортные протоколы NVMe являются:

FC, FC-NVMe

  • TCP, NVMe /TCP
  • Ethernet, RoCE версия v1/v2 (RDMA окончен конвергентный Ethernet)
  • InfiniBand, NVMe через InfiniBand или NVMe / IB
  • Стандарт для NVMe поверх тканей был опубликован компанией NVM Express, Inc. в 2016 году.[41][42]

Следующее программное обеспечение реализует протокол NVMe-oF:

  • Linux NVMe-о инициаторе и цели. Изначально поддерживался транспорт RoCE, а с ядром Linux 5.x была добавлена встроенная поддержка TCP.[44]
  • Комплект для разработки производительности хранилища (SPDK) NVMe-драйверов инициатора и цели. Поддерживаются как RoCE, так и TCP-передачи.[46][47]
  • Starwind NVMe-инициатор и цель для Microsoft Windows, поддерживающий как RoCE, так и TCP-передачи.

Сравнение с AHCI[править]

Усовершенствованный интерфейс хост-контроллера (AHCI) обладает преимуществом широкой совместимости программного обеспечения, но имеет недостаток в том, что не обеспечивает оптимальной производительности при использовании с твердотельными накопителями, подключенными по шине PCI Express. Как интерфейс логического устройства, AHCI был разработан, когда назначение адаптера шины хоста (HBA) в системе заключалось в соединении подсистемы процессора / памяти с гораздо более медленной подсистемой хранения, основанной на вращающихся магнитных носителях. В результате AHCI приводит к определенной неэффективности при использовании с твердотельными накопителями, которые ведут себя гораздо больше как оперативная память, чем как вращающийся носитель.

Интерфейс устройства NVMe был разработан с нуля, используя меньшую задержку и параллелизм твердотельных накопителей PCI Express SSD и дополняя параллелизм современных процессоров, платформ и приложений. На высоком уровне основные преимущества NVMe перед AHCI связаны с его способностью использовать параллелизм в аппаратном и программном обеспечении хоста, проявляющийся в различиях в глубине очереди команд, эффективности обработки прерываний, количестве некэшируемых обращений к регистру и т.д., что приводит к различным улучшениям производительности.: 17–18

В таблице ниже приведены высокоуровневые различия между интерфейсами логических устройств NVMe и AHCI.

Поддержка операционной системы[править]

Linux[править]

Intel опубликовала драйвер NVM Express для Linux 3 марта 2011 года,[64][65][66] который был включен в основную версию ядра Linux 18 января 2012 года и выпущен как часть версии 3.3 ядра Linux 19 марта 2012 года.[67] Linux поддерживает буфер памяти хоста NVMe[68] начиная с версии 4.13.1[69] с максимальным размером по умолчанию 128 МБ

Windows[править]

Microsoft добавила встроенную поддержку NVMe в Windows 8.1 и Windows Server 2012 R2. Встроенные драйверы для Windows 7 и Windows Server 2008 R2 были добавлены в обновлениях. Многие производители также выпустили свои собственные драйверы Windows для своих устройств. Также доступны файлы установщика, настроенные вручную, для установки драйвера определенного производителя на любую карту NVMe, например, с использованием драйвера Samsung NVMe на устройстве NVMe, отличном от Samsung, что может потребоваться для дополнительных функций, производительности и стабильности. Поддержка NVMe HMB была добавлена в юбилейном обновлении Windows 10 (версия 1607) в 2016 году

Поддержка программного обеспечения[править]

QEMU[править]

NVMe поддерживается QEMU начиная с версии 1.6, выпущенной 15 августа 2013 года.[85] Устройства NVMe, представленные гостям QEMU, могут быть как реальными, так и эмулированными.

UEFI[править]

Драйвер NVMe с открытым исходным кодом для UEFI доступен на SourceForge.[86]

Инструменты управления[править]

nvmecontrol[править]

nvmecontrol Инструмент используется для управления диском NVMe из командной строки во FreeBSD. Он был добавлен во FreeBSD 9.2.[87]

nvme-cli[править]

NVM-Экспресс-инструментарий пользовательского пространства для Linux.[88]

Смотри также[править]

M.2

Пруф[править]

/nvmexpress.org/