NVMe – это относительно новый протокол для доступа к данным, хранящимся на твёрдотельных накопителях. В отличие от вращающихся дисков, твёрдотельные накопители хранят данные в какой-либо форме энергонезависимой памяти (NVM). Эта память NVM может быть флэш-памятью (NAND) или NVM следующего поколения, например 3D XPoint (3DXP). Обратите внимание, что протокол NVMe отличается от NVM, носителя данных.
NVMe («e» означает «экспресс») разработан, чтобы быть более гибким и быстрым, чем его предшественники, SAS и SATA. Он сбрасывает около 20 мкс от задержки, добавленной стеком ввода/вывода. Это улучшение незначительно по сравнению с внутренней задержкой вращающегося диска (5000 мкс), но оно заметно по сравнению с внутренней задержкой флэш-накопителя SSD (100 мкс), и оно будет существенным по сравнению с внутренней задержкой будущего твердотельного накопителя с 3DXP (менее 10 мкс). Таким образом, хотя флэш-накопители доступны с интерфейсами SAS/SATA или NVMe, твёрдотельные накопители 3DXP будут доступны только с NVMe.
Помимо повышения задержки, NVMe улучшает пропускную способность для каждого SSD. Он подключает ЦП к твёрдотельным накопителям напрямую через PCIe, что означает, что нет необходимости в промежуточном HBA, и можно использовать большее количество линий PCIe. Линия SAS работает со скоростью 12 Гбит/с, которая сокращается до 1 ГБ/с после обработки данных. Полоса SATA поддерживает половину этого. Линия PCIe работает со скоростью 1 ГБ/с, и типичный NVMe SSD может быть подключен к четырем таким линиям, поддерживая до 4 ГБ/с. Действительно, энтузиасты NVMe сравнивают твёрдотельный накопитель SATA со скоростью 0,5 ГБ/с и твердотельный накопитель NVMe со скоростью 3 ГБ/с. Это в 6 раз выше пропускной способности!
Но, как правило, система хранения содержит несколько SSD, обычно более 10. При таком количестве SSD пропускная способность на уровне диска редко является узким местом или определяющим фактором пропускной способности на уровне системы.
NVDIMM – это энергонезависимые модули с двойной встроенной памятью.
Энергонезависимая часть может быть реализована с помощью Optane или высокоскоростной флэш-памяти или обычной оперативной памяти с резервными конденсаторами и флэш-памятью.
Часть DIMM заключается в том, что вместо отсеков для дисков NVDIMM подключаются к слотам памяти.
Другая часть NVDIMM заключается в том, что он не использует специальный протокол связи блочного хранилища, такой как SATA или NVMe. Он использует те же команды, что и обычная оперативная память. В ЦП он не вызывает функцию ОС для записи данных. NVDIMM просто копирует в память. Intel добавила пару новых инструкций для более эффективного управления кэш-памятью и обеспечения гарантий порядка записи. Но это всё.
Одним из важных применений для этого являются серверы баз данных в центрах обработки данных, таких как memcache или Redis, или что угодно, что использует Google. Некоторые будущие корпоративные ЦП могут иметь программно управляемые функции ввода-вывода, которые могут управлять PCIe 4.0 или ОЗУ, так что серверы могут быть построены с 16 ТБ ОЗУ DDR5 или NVDIMM.
В любом случае, NVMe – это протокол блочного хранения. Всё дело в очередях и уведомлении о результатах. NVDIMM может записывать отдельные байты и должна быть достаточно быстрой, чтобы не нуждаться в очереди. ЦП скрывает много этого с 64-байтовыми строками кэша, предварительной выборкой и очередями хранения. Но, по крайней мере, выглядит всё это просто.