Протокол Non-Volatile Memory Express (NVMe)

Сейчас постепенно внедряются в массовое продвижение PCIe накопители. Они имеют универсальный стандарт воплощения, который пригоден для многих компьютеров. Для использования данного интерфейса была создана соответствующая программная прослойка. Главным было отсутствие всего лишнего для SSD, но должны учитываться все особенности накопителей. Так был создан интерфейс NVMe: Non-Volatile Memory Express. Давайте рассмотрим данный интерфейс, а также плюсы и минусы на примерах изделий корпоративного класса.

AHCI-уступает-место-NVME

От дискет к AHCI

Вернемся лет на 30 назад, когда появлялись первые персональные компьютеры. Сегодняшние мощные компьютеры в определенной степени совместимы с тогдашними версиями. Раньше подход к конструкции был другим. В оригинальных IBM PC отсутствовал винчестер, но работать компьютер мог без дисковода – достаточно было бытового магнитофона. Тогда не нужно было стандартизировать интерфейс для использования быстрых накопителей. Подобных накопителей в массовом исполнении не было из-за дорогой стоимости. Сейчас флэш-память стоит менее чем $1 за гигабайт, а раньше килобайт жесткого диска стоил дороже.

В PC XT уже использовался винчестер, а требуемый контроллер устанавливался на системной плате в разъеме шины соединения.

Некоторое время для работы жестких дисков в персональных компьютерах использовался интерфейс ST-506/412. В них управляющая логика вносилась в компьютерный контроллер. В электронной плате винчестера были следующие элементы:

  1. Модуль управления шпиндельным двигателем.
  2. Модуль аналоговой обработки.
  3. Позиционер.
  4. Коммутатор головок.

Скорость передачи данных была очень низкой, но решение работало и было относительно недорогим.

С ростом производительности компьютеров обеспечивалась возможность для решения широкого круга задач. Это сказалось на используемом периферийном оборудовании. Требовалось подключать больше разных устройств, которые имели высокую скорость работы. Для подобных потребностей ST-506/412 не подходил. Разработки улучшенного интерфейса закончились созданием версии IDE (ATA). Их отличием стало использование большого количества электроники на плате винчестера. В накопителе все особенности стали полностью инкапсулированными, а работа с компьютером заключалась в стандартных командах и блоках информации.

Создатели ATA предложили простой и дешевый интерфейс. Он имел схожесть с ST-506/412 на программном уровне, но было достаточно использовать один кабель. Интерфейс надолго стал стандартом для ПК, а со временем его стали встраивать непосредственно в чипсеты.

Через несколько лет выяснилось, что ATA исчерпал все возможности для модернизации. В интерфейсе выросла пропускная способность до 133 Мб/с, а дальнейшее увеличение с использованием параллельного интерфейса стало затруднительным. Недостатком ATA стала устаревшая схема подключения на один канал двух дисковых устройств. Справиться с возможностью подключения нескольких устройств стало возможным только с увеличением количества каналов. Требовалось менять концепцию, поэтому было решено перейти с параллельного интерфейса ATA на последовательный SATA.

Параллельно осуществили переход к звездообразной топологии. В ней каждый отдельный канал стал независимым от иных за пределами контроллера. Пропускная способность интерфейса увеличилась до 150 Мб/с, появилась возможность дальнейшего роста скорости.

Еще при использовании параллельного ATA показатели пропускной способности были несколько избыточными для устройств того времени. Разработчики озадачились вопросами производительности дисковых устройств. Этот параметр можно повысить с помощью грамотной оптимизации запросов, чтобы перемещение головок минимизировалось. Оптимизация обращений к диску заключается в создании очереди команд, которые нужно потом и переупорядочивать. Подобные механизмы были созданы до внедрения SATA.

Обычно в очереди команд небольшая глубина, поэтому, в случае с винчестером, требовалось произвести оптимизацию перебора цилиндров. Данная очередь одна, в массовых «механических» накопителях просто отсутствует внутренний параллелизм. Он появляется в случае, если используется несколько дисковых устройств, объединенных в RAID-массиве. Этим и пользуются соответствующие контроллеры, но чипсетные варианты делают это редко. Производительность в двухдисковых массивах чтения данных можно удвоить путем проведения чередования запросов к дискам.

Внедрение RAID-функциональности в дисковых чипсетных контроллерах не стало массовым. Более сложные RAID контроллеры стали использовать только в специфических нишах. Из-за этой причины для стандартов подключения дисковых устройств параллелизм не был нужен. Возникавшие «внутренние» задержки во время доступа к информации, которые вызывались работой механики, позволяли не заботиться про накладные расходы для обеспечения работы интерфейса.

Подобным образом AHCI и работает. Длительное время данный протокол всех устраивал. Но с приходом в массовый сегмент твердотельных накопителей производители стали задумываться…

Что нового в Non-Volatile Memory Express

Причиной глубокой задумчивости стали показатели задержки при выполнении команд. В механических накопителях данных параметр составляет приблизительно 2 мс. В флеш-памяти время сокращено примерно в 20 раз и составляет до 100 мкс. Если на фоне первого значения 25 – 30 мкс потерянные по вине драйверов просто теряются, то на фоне второго показателя становятся очень заметными.

«Устранив» из цепочки SATA контроллер, можно сэкономить более 10 мкс. Прекращение AHCI эмуляции и переход на программный специализированный интерфейс сокращает накладные расходы до 5 мкс. Получается, что основным виновником задержки остается флеш-память, а суммарные задержки сокращаются в 1,5 раза. Суммарный эффект является кумулятивным. Сюда стоит добавить общее увеличение пропускной способности разъема, присущее SSD при подключении к PCIe.

К задаче драйвера и контроллера относится «раскидывание» запросов по каналам. Дальше каждый элемент будет заниматься обработкой своих команд с помощью наиболее эффективного образа. Должно быть несколько максимально глубоких очередей, чтобы выжать все из флеш-памяти. Пока будет производиться перезапись одних блоков, из других можно считывать данные, не дожидаясь, пока закончатся длительные процессы.

Использовать AHCI, где всего одна очередь команд на каждое устройства, а глубина 32 команды, здесь нецелесообразно. Родные возможности NVMe являются намного серьезнее: до 64К очередей и до 64К команд в каждой. В настоящее время подобный просмотр пока не используется, но имеющийся запас внушает оптимизм на будущее.

Есть в стандарте NVMe и иные оптимизации, но отличием от AHCI стала именно специализированная разработка, нацеленная на будущее. Здесь не стоит зацикливаться только на использовании флеш-памяти. Существуют подозрения, что определенные возможности протокола могут раскрыться во время освоения новейших стандартов энергонезависимых вариантов памяти, особенно тех, которые имеют низкие собственные задержки. Рынок твердотельных накопителей сейчас не отличается разнообразием, поэтому NVMe применяется именно на флеш-устройствах. Механическим накопителям NVMe не нужен, что очевидно.

Подводные камни совместимости

Протокол AHCI появился давно, поэтому он поддерживается и устаревшими, и современными операционными системами. Поддержка в данном случае простая, системе не требуется вдаваться в то, при каких особенностях функционируют конкретные устройства. Инкапсулируется все на контроллерном уровне. Для компьютеров подобный твердотельный накопитель с PCIe интерфейсом будет очередным дисковым контроллером, который «учили» работать еще с BIOS и DOS. Даже очень старые системы способны легко «переварить» его добавление, а в аппаратном уровне отсутствуют особенности.

Что в данном плане изменяет NVMe? Практически все! Главной целью его разработки стало упразднение промежуточных уровней, которые стали привычными и проверенными временем. Здесь придется забыть про загрузку в режиме Legacy, используется только UEFI. Отмечаются возможные проблемы только с прошивками от некоторых системных плат. Intel гарантирует поддержку NVMe только в чипсетах 9-го семейства, а с прошлыми вариантами возможны ошибки.

Для работы будет необходим специальный драйвер. Поддержка NVMe уже встроена в следующих версиях:

  1. Windows 8.1.
  2. Linux с версии ядра 3.1.
  3. Windows Server 2012 R2.

На усмотрение производителя осуществляется драйверная поддержка более старых версий систем. Есть драйвер к x64 версии Виндовс 7, а к версии х86 отсутствует.

Существуют определенные особенности внедрения стандарта:

  1. Контроллеры, поддерживаемые NVMe, в основном рассчитаны для PCIe 3.0.
  2. Достигается максимальная производительность только в случае, когда осуществляется подключение изделия непосредственно к процессору.

Весь потенция NVMe протокола раскрывается только на системах с LGA2011-3. Процессоры для данной платформы в достаточном количестве снабжаются интерфейсом PCIe 3.0.

Разъем SFF-8639

При необходимости можно произвести установку одного накопителя в систему. Достаточно использовать соответствующий слот PCI. Степень параллелизма увеличивается только при одновременном применении нескольких устройств. Это производилось даже с обычными дисками, а объединение в единый массив NVMe-устройств способно открыть безграничные возможности. Остаются вопросы, как добиться этого при условии ограничений в обычных компьютерных шасси?

Вариант, где устанавливается несколько накопителей непосредственно в PCI слоты на системной плате, становится неоптимальным из-за их малого количества. Использоваться они будут достаточно неэффективно. Для современных SSD достаточно использовать 4 линии PCIe, а в серверах преобладает PCIe x8. Можно использовать формат М.2, но установка несколько подобных разъемов на системную плату — очень редкое явление. Накопители высокой емкости топового уровня плохо упаковываются в формате компактных карт. Ни М.2, ни PCIe не поддерживают горячую замену, что достаточно ограничивает привлекательность RAID массивов для данной физической основы.

Идеальным вариантом будет возвращение к форм-фактору винчестеров, имеющих пластину диаметром 2,5 дюйма. Подобные активно применяются в серверах, корзины для них имеются, а корпус с толщиной 15 мм. Это обеспечит установку флеш-памяти в несколько терабайт.

Теперь остается решить, как осуществить соединение устройства с шиной PCIe. Наиболее близким для решения задания стал интерфейс SATA Express. При его создании не учитывалось, что для устройства может быть необходимо не 2, а 4 лини PCIe. Для разъема SFF-8680 можно добавить ряд контактов и экранирование, что обеспечит реализацию недостающих линий. Так получился SFF-8639.

Данный разъем способен по-прежнему поддерживать SAS и SATA устройства. Серьезным отличием от SATA Express стало умение автоматического определения типа подключаемого устройства и выбор соответствующего режима работы (PCIe или SATA).

Так как разъем на изделии уже есть, кабели тоже имеются, то дальше все просто. Необходимо подключить другой конец кабеля в обычную PCIe низкопрофильную плату. Распространен способ по использованию одного кабеля для пары портов. Платы могут быть разными:

  1. PCIe x8 позволяет подключать 2 накопителя одним кабелем.
  2. PCIe x16 – 2 кабеля и 4 устройства.

В скором времени могут появиться соответствующие разъемы на материнских платах серверного типа. Это сделает карты-райзеры ненужными, а накопители можно будет использовать в компактных серверах.

Здесь очевидны преимущества перед работой с PCIe слотами:

  1. Компактность.
  2. Экономное использование линий PCIe.
  3. Применение стандартных корзин, имеющих функцию горячей замены устройства.

SFF-8639 не планировался для работы «в быту». Разъем ориентирован для многодисковых конфигураций и серверов. Там, где требуется использование одиночного накопителя, будут применяться обычные карты расширения или в перспективе М.2.

Intel DC P3600 и P3700

Давайте рассмотрим накопители Intel, которые поддерживают NVMe.

К первому из них относится устройство DC P3600 с емкостью 800 Гб. Его выполняют в виде низкопрофильной карты расширения PCIe x4. Отличием от иных накопителей с PCIe интерфейсом стал вид законченного решения. Снабжается довольно внушительным радиатором.

DC P3700 имеет емкость 400 Гб и выполнен в винчестерном стиле. Но требуются определенные усилия для его подключения — на рынке не наблюдается требуемых интерфейсов для подключения.

На какие параметры следует обращать внимание? Здесь внушают уважение показатели потребляемого тока по линии 12 В, которые составляют 30 Вт. На наклейке указана информация общая для всей линейки, а наиболее старшая модель с емкостью 2 Тб потребляет 25/11 Вт, а для работ по чтению или записи накопителю достаточно 12/9 Вт. Это не малые показатели. Многие винчестеры в ноутбуках имеют показатель 5 Вт. Получается, что твердотельные накопители в разы прожорливее. В массово произведенных SSD, сейчас показатели достигают десятых долей ватта, поэтому с ними разрыв еще больший. Это объясняет, почему во всем семействе используются массивные радиаторы. В портативных компьютерах данным устройствам делать нечего.

Если посмотреть на внутреннее устройство, то на всех трех линейках оно приблизительно одинаковое. Отличия наблюдаются только в микросхемах флеш-памяти. Из-за этого получаются разные показатели скорости с весьма заметной различаемой выносливостью. Для рассматриваемых устройств показатели составляют 4,38 и 7,3 PBW соответственно. Цены на устройства отличаются не только между собой, но и от вариантов потребительского сегмента. Здесь стоимость гигабайта составляет от 1,5 до 2 долларов, что в пару раз больше, чем на наиболее быстрые потребительские SSD. Принято платить за более высокую надежность.

В более дешевом Intel 750 (нацелен для рынка рабочих станций и ПК) и в упомянутых линейках, основой стал Intel CH29AE41AB0 контроллер. Он способен поддерживать 18 каталогов для подключения флеша, когда в «бытовых» контроллерах этот показатель ограничивается 8 или 4. Залогом отличной производительности стал высокий параллелизм, который наилучшим образом реализуется в NVMe устройствах. Подобным эффектом стало наличие максимального быстродействия только у самых дорогих и старших модификаций.

Экспресс-тестирование

Давайте рассмотрим, что дает внедрение NVMe. Для проведения тестирования P3600 и P3700 используется стенд на LGA2001-3 платформе. Именно для подобного сегмента необходимо использовать данные накопители. Тестирование проводилось с довольно мощным процессором Core i7-5960X, но это не оказывает влияние на результаты тестирования дисков. Емкость памяти выбрана 4 Гб в модуле DDR4-2133.

При последовательном чтении и данном количестве каналов, модели емкостью 400 Гб оказались медленными. Более полно потенциальные возможности PCIe 3.0 раскрываются при объеме 800 Гб. При записи все упирается не в сам интерфейс, а в флеш. Производительность Intel моделей показала более низкие результаты, чем банальный Kingston Predator, который работает с PCIe 2.0 и не поддерживает NVMe. Собственно, NVMe при подобных нагрузках ничего особого не показывает. В скоростных шинах потенциальные возможности требуется правильно утилизировать.

В нововведении обещали ускорить случайное чтение блоков по 4К. В этом случае все работает заметно быстрее, даже при сравнении с OCZ RevoDrive. Predator показывает более медленные показатели, а его отставание от DC P3600 стало более, чем двукратным. Более быстрому P3700 формально мешает наличие низкой емкости флеш-памяти.

Еще более интересными стали результаты записи однопоточного типа. Ее невозможно ускорить с помощью RAID массивов и иных ухищрений. Радикально меняет положение дел протокол NVMe. Данные два Intel-устройства продемонстрировали однопоточную скорость записи выше 100 Мб/с. В Intel 750 удалось получить показатель приблизительно 300 Мб/с. Различные AHCI SSD имеют скорость от 50 до 60 Мб/с, поэтому есть право говорить про революционное изменение ситуации.

Революция только в очень узкой области. Для простого пользователя отсутствует разница между разными версиями современных SSD в протоколах работы или интерфейсах.

Итоги

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

Технология за собой тянет груз совместимости с механикой. NVMe ориентирована для полупроводниковых носителей информации. Потенциально NVMe подойдет и для будущих технологий, которые еще находятся за стенами лабораторий. Если произойдет снижение собственной задержки памяти, то использование подобных технологий будет более чем оправданно. Они лучше традиционных интерфейсов SATA.

Сейчас отмечается некоторый эффект, но стоит ли гнаться за ним? Пока рано использовать его массово из-за незначительного количества устройств. Для большинства пользователей прекрасно подходят обычные варианты SATA-накопителей, которые отличаются в своем классе лучшими параметрами совместительности. Интерфейс PCIe подойдет для желающих получать самое лучшее. Для наиболее современного компьютера приобретение накопителя с технологией NVMe будет вполне оправданным.