Разные SSD: а есть ли разница? Страсти по NVMe

22 октября 2016, суббота 06:00
для раздела Лаборатория

Оглавление

Вступление

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

Получилось так, что всего через два дня у меня на руках очутился накопитель Samsung SM951 в версии NVMe. Заурядно? И да, и нет одновременно.

Твердотельный накопитель Samsung SM951 на данный момент является единственным решением, доступным рядовому пользователю (де-факто, де-юре – это продукт для сборщиков компьютеров), которое выпускается в двух версиях – AHCI и NVMe. При этом их аппаратная база абсолютно идентична, а необходимый логический протокол включается на последнем этапе производства – в момент записи в накопитель его микрокода. Таким образом, у меня оказались оба этих SSD и появилась возможность без всяких теорий и допущений выяснить практическую пользу от нового протокола NVMe.

Ну а попутно согласно пожеланиям читателей был расширен набор тестов. Благодаря нашим постоянным партнерам – магазину Регард и компаниям-производителям, мы вновь проясним ситуацию, сравнив разные модели накопителей между собой.
Обзор и тестирование пяти модулей оперативной памяти DDR4-2133 SK Hynix HMA451U6MFR8N0-TF объемом 4 Гбайт

100x82  6 KB

Различные комплекты оперативной памяти – не такое уж редкое явление. Но, как правило, речь обычно идет о так называемых «брендовых» решениях. А вот многочисленные OEM-продукты, широко представленные в отечественных магазинах, различными изданиями изучаются довольно редко. И SK Hynix HMA451U6MFR8N0-TF, взятые в этот раз, как раз из этого игнорируемого меньшинства.





Маркетинговая теория: NVMe – шаг к светлому будущему

Для связи устройств в системе нужен не только физический интерфейс, но и логический (программный). С середины двухтысячных для накопителей служила связка из физического SATA и логического AHCI, и если SATA поступательно развивался, пройдя через первую, вторую и третью ревизию с заметным ростом пропускной способности, то AHCI – с точки зрения производительности оставался практически неизменным. На данный момент AHCI (Advanced Host Controller Interface) уже 12 лет и он является преобладающим в отрасли.

Plextor M6e, Samsung XP941, Kingston HyperX Predator, Plextor M6e Black Edition – всеми этими первыми PCIe SSD в форм-факторе M.2 (ранее известном как NGFF) использовался протокол AHCI. Но он – лишь дань совместимости со старыми системами и в полной мере раскрыть потенциал таких SSD просто не в состоянии. Но это значит, что нет альтернативы, она есть – еще в 2011 году был представлен протокол NVM Express (он же NVMe, он же NVMHCI – Non-Volatile Memory Host Controller Interface).

450x124  28 KB

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

Параметр
AHCI
NVMe
Максимальная глубина очереди запросовОдна очередь, до 32 команд в очереди65 536 очередей до 65 536 команд в каждой очереди
Некэшируемые доступы к регистрам (2 000 циклов каждый)Шесть на команды вне очереди; девять на команды очередиДва на команду
MSI-X и управление прерываниямиОдно прерывание, управление отсутствует2 048 прерываний, передаваемых сообщениями или MSI-X (Message Signaled Interrupt Extended)
Многопоточность и параллелизмТребуется фиксация синхронизации для выдачи командыНе требуется
Эффективность для команд 4 КбайтПараметры команды требуют два серийных запроса DRAMВсе параметры получаются в одном 64-байтном запросе

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

Но что есть, то есть: протокол NVMe в последние несколько лет активно продвигается маркетологами на потребительский рынок. Одна проблема: хоть с момента дебюта NVMe прошло уже немало времени, инфраструктуры под этот протокол не так уж и много.

Суровая действительность: NVMe – много головной боли

Даже сегодня абсолютно совместимым с протоколом NVMe является только совсем небольшой процент домашних ПК. Все остальное – от тех или иных ограничений до полной несовместимости. Причем речь идет не о каких-то совсем старых «печатных машинках» на базе, например, Intel Celeron Socket 478, мы говорим о вполне современных системах.





Наиболее сложно обстоят дела у AMD. Даже материнские платы под актуальные Socket FM2+ и Socket AM3+ отнюдь не всегда могут в совершенстве работать с NVMe SSD. Фактически полноценная поддержка реализована только для тех немногочисленных материнских плат нового поколения, где посадочное место M.2 есть изначально (вроде ASRock Fatal1ty 990FX Killer, ASRock A88M-G/3.1, ASUS 970 PRO Gaming/Aura (обзор которой сейчас готовится) или Gigabyte GA-990FX-Gaming). Впрочем, наличие M.2 не является обязательным внешним атрибутом: загрузка с NVMe SSD возможна на материнской плате MSI AMD 990FXA Gaming, на которой посадочное место M.2 отсутствует.

И есть небольшое количество моделей, где поддержка была внедрена много позднее их выпуска. Например, мне известно только две таких материнских платы: ASUS Sabertooth 990FX R2.0 (которой владею я сам), где в выпущенной два месяца назад версии BIOS 2901 даже появились дополнительные настройки NVMe, и ASUS A88X-PRO (если не ошибаюсь, начиная с версии BIOS 1803, датированной мартом прошлого года). Других подтвержденных случаев удачной загрузки с NVMe PCIe SSD на платформе AMD мне пока неизвестно, причём проблема усугубляется ещё необходимостью наличия OpROM. Дефицит отзывов во многом объясняется тем, что подобные SSD приобретают чаще с прицелом на эксплуатацию в Intel-системах, всё же Socket AM3+ предлагает только PCI-E 2.0, а у меня самого такие материнские платы редко бывают на тестировании - устаревшая платформа.

С платформой Intel немного проще, хотя и на ней хаоса предостаточно: протокол NVMe поддерживается почти всеми материнскими платами LGA1151 и LGA2011v3, значительным числом материнских плат на наборах системной логики Intel Z97/H97 и некоторым количеством – на Intel Z87. С более старыми платами на Intel X79, Intel Z77 и т.д. всё ещё сложнее и запутаннее. Но даже с новыми моделями материнских плат все равно надо быть осторожным. Например, материнская плата EVGA X99 Micro (не путать с EVGA X99 Micro2), по отзывам, с NVMe SSD загружаться не умеет.

Небольшая ремарка. Samsung SM951 в версии с протоколом AHCI отнюдь не является универсальным и полностью совместимым с всеми материнскими платами со слотами PCI-Express, в которые можно установить переходник M.2>PCIe. Тут возникает еще один фактор: в микрокоде контроллера Samsung SM951 (обеих версий) отсутствует модуль OpROM (как и у его предшественника Samsung XP941), поэтому материнская плата должна уметь грузиться с PCIe SSD самостоятельно. OpROM есть у Samsung 950 Pro, а также (по крайней мере, присутствовал на момент тестирования) в более старых Plextor M6e, Plextor M6e Black Edition и Kingston HyperX Predator. Относительно Plextor M8e, Patriot Hellfire, ADATA XPG SX8000 и ряда других SSD информации у меня пока нет. А проблему поддержки именно NVMe в ряде систем все-таки можно решить нестандартным способом. Для этого материнская плата должна отвечать трём условиям: должна иметь UEFI BIOS (напомню, что некоторые материнские платы Gigabyte на базе Intel P67/Z68 были выпущены сначала с AWARD BIOS, а потом получили обновление на UEFI BIOS), уметь загружаться с SSD без OpROM (если выбранная модель SSD его лишена), а владелец оной материнской платы должен обладать, выражаясь простонародным языком, «правильными версиями brain.dll и hands.dll». Точнее, суметь по общедоступной инструкции пересобрать BIOS, добавив необходимый модуль NVMe, и затем записать полученный микрокод во флеш-память материнской платы. Таким образом можно «привить» поддержку NVMe даже Intel P67.

В том случае, если материнская плата не умеет загружаться с NVMe SSD и не опознает таковые, а желания или возможности вмешиваться в микрокод BIOS нет, то остается вариант использования NVMe PCIe SSD только в качестве дополнительного накопителя. Для этого в операционной системе необходимо иметь соответствующий драйвер.

Но с программной частью у пользователя также будет немало проблем. Для операционных систем Linux первый драйвер был включен в состав ядра 3.3 (январь 2012 года), но он обладал некоторыми недостатками, а более продвинутая и производительная реализация была осуществлена лишь в ядре 3.13 (январь 2014 года). Для OpenBSD поддержка была реализована и вовсе только в версии 6.0, выпущенной меньше двух месяцев назад (1 сентября 2016 года).

С творениями софтверного гиганта из Редмонда ситуация чуть проще. Соответствующий драйвер в операционные системы Windows был встроен, начиная с версии 8.1 (октябрь 2013 года). Для Windows 7 был выпущен отдельный пакет-обновление. Более ранние версии Windows драйвер NVMe не получили. Но простота ориентирования в Windows осложняется тем, что драйвер, созданный специалистами Microsoft, не настроен на максимальную производительность.

Драйвер «nvme» за авторством Microsoft оснащен дополнительной защитой данных от потери питания, а потому для накопителей, лишенных полной защиты от внезапного обесточивания, операции записи данных производятся с флагом запрета на буферизацию в оперативной памяти NAND-контроллера через команды FUA (Force Unit Access). В итоге все трансферы данных производятся в флеш-память напрямую, не позволяя микрокоду контроллера производить упорядочивание операций записи, что приводит к дополнительным издержкам и частичной потери производительности.

400x520  15 KB

Отчасти проблему можно обойти, установив настройки как на скриншоте выше. Но для достижения максимальной производительности и полноценной работы необходима установка специального драйвера, который перенастроен надлежащим образом. На момент написания этих строк только три компании предлагали для своих накопителей такой драйвер: Samsung, Toshiba OCZ и Plextor. Причем для накопителей Plextor драйвер был опубликован только что. А вот Phison (например, Patriot Hellfire) и Silicon Motion (например, ADATA XPG SX8000) специальных драйверов пока не публиковали.





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

Страница 1 из 5
Оценитe материал

Комментарии 88 Правила

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают