Нвме ссд что это
Что такое NVMe у твердотельных накопителей?
Содержание
Содержание
Аббревиатура NVMe сейчас на слуху. То тут, то там можно услышать или прочитать, что-то вроде «Не хочу SATA, это старье. Хочу NVMe!» А что же это вообще такое? Давайте разбираться.
Что же такое NVMe?
NVM Express или NVMe (от англ. Non-Volatile Memory Express) — это спецификация протокола (упрощенно — протокол) обмена данными через линии PCI Express. Создавалась специально для твердотельных накопителей и ориентировалась на достижение максимальной производительности и масштабируемости в дальнейшем.
Следует отметить, что NVMe — это именно протокол, поэтому распространенное выражение «NVME накопитель/SSD» применяется не совсем корректно. Ведь под этим пользователи практически всегда понимают устройство в формате M.2, тем самым объединяя под одним названием и протокол, и форм-фактор накопителя.
Какие преимущества дает использование NVMe в накопителях?
Использованием линий PCIe означает высокий максимальный предел теоретических скоростных характеристик дисков, что было показано еще накопителями, не поддерживающими NVMe. Тогда зачем нужна была вся затея с ее разработкой?
Увеличение глубины очереди команд и количества очередей
Первые диски хоть и показывали высокие скорости, используя преимущества шины PCIe, но использовали эмуляцию AHCI, где была лишь одна очередь на 32 команды. Использование одной очереди обусловлено тем, что AHCI создавался для жестких дисков, а у них ни о каком параллелизме при работе думать не приходилось. С появлением SSD все изменилось. В спецификации NVMe заложено использование до 65535 очередей и до 65535 команд в каждой очереди с указанием приоритета очередей и четким арбитражем последних. Эти огромные показатели хоть и не нужны сейчас, но задел на будущее оставляют приличный.
Представьте бригадира и некоторое количество рабочих, очень быстрых рабочих. Если бригадир один и выдает по небольшому количеству поручений одному рабочему сразу, то пока он раздает указания остальным, предыдущие уже могут всю работу выполнить и простаивать. А если бригадиров столько же, сколько рабочих и они выдают поручения сразу на полдня, то утилизация ресурсов будет гораздо выше.
Работа с многоядерными/многопроцессорными системами, внедрение механизма прерываний и поддержка виртуализации
Совместно с первым пунктом это нацелено на увеличение параллелизма в работе, что в результате приводит к улучшение скоростных характеристик. Каждое ядро процессора может управлять несколькими очередями (отправка/завершение). Управление прерываниями (MSI-X — Message Signaled Interrupt Extended) позволяет при поступлении приоритетной задачи быстрее поставить ее на выполнение. Также была произведена оптимизация по поддержке работы с технологиями виртуализации, которая обязательна для серверов, куда NVMe в первую очередь и были нужны.
Проведем параллель с дорогой. Ясно, что пропускная способность однополосной дороги существенно меньше, чем у четырехполосной. Если только у нее не одна полоса (ядро) для въезда, иначе это колосс на глиняных ногах. А если по дороге будет ехать пожарная машина, то все расступятся и она проедет первой (спасибо прерываниям и приоритизации).
Сокращение задержек при работе
Чтобы убрать задержки при выполнении команд накопителем нужен простой и короткий путь. Поэтому посредники в лице SATA-контроллера были исключены. Также был написан более простой и эффективный набор команд для работы протокола, использующий меньше процессорного времени.
Примерной аналогией будет ситуация, когда вам нужно пробежать обычную стометровку и с препятствиями. Первую, конечно, пробежать проще и быстрее, особенно если у вас ноги длиннее (проще команды) и быстрее двигаются (меньше расходуют ресурсов).
Ускорение работы с оперативной памятью
Если AHCI требовалось два запроса в DRAM, то NVMe использует один запрос на чтение 4 Кб, обеспечивая эффективную работу небольших операций ввода/вывода. Опять же сокращает накладные расходы, позволяя увеличить эффективность в единицу времени в сравнении с AHCI. Ведь быстрее оплатить покупку просто приложив карту, чем еще дополнительно вводить пин-код.
Это лишь несколько основных важных отличий NVMe, по которым виден основной вектор при работе над протоколом. SSD, в отличие от HDD, обладает некоторой степенью параллелизма — контроллер поддерживает несколько каналов для подключения микросхем памяти. В итоге большой пласт работы направлен на максимальную возможность распараллеливания операций. Несколько очередей с большой очередью команд — сценарий, в котором накопители показывают лучшие результаты. Работа с многоядерными процессорами также позволяет максимально загрузить работой диск.
Другой целью разработки было исключение промежуточных звеньев. Так удаление контроллера SATA из цепочки «процессор — накопитель», новые команды и драйвер позволили снизить задержки в обработке команд так, что основным фактором, влияющим на латентность, стали сами микросхемы NAND. Они же и остаются лимитирующим фактором в скорости записи. 3DXpoint от Intel сделала первый шаг в направлении уменьшения латентности памяти. Будем ждать, что смогут преподнести будущие типы микросхем.
Все внесенные изменения обеспечили не только и не столько скачок в скоростных показателях (это сделал еще переход на PCIe в SSD, эмулировавших AHCI), а существенное увеличение числа операций ввода-вывода (IOPS), что особенно важно в высоконагруженных сценариях/режимах работы.
Опять же если вернуться к AHCI, то ее разработка зиждилась на максимальном сохранении совместимости с разными устройствами. NVMe же возводили практически с нуля, основываясь лишь на использовании линий PCI-Express. И это наложило некоторые особенности реализации в конечном итоге.
Так для работы NVMe необходима поддержка со стороны операционной системы (ОС). Впрочем, сейчас драйвер есть во всех современных ОС: Windows, Mac OS и ядрах Linux/BSD. А для использования в качестве загрузочного накопителя, потребуется наличие драйвера в UEFI материнской платы. Как его добавить в старые модели плат, можно прочитать здесь.
Что такое NVMe SSD
Уже на протяжении почти 15 лет мы подключаем накопители к ПК через SATA — небольшой универсальный 7-контактный разъем, который есть и в ноутбуках, и в десктопных компьютерах. Первая ревизия, SATA 1, появилась в 2003 году и обеспечивала скорости до 150 МБ/с — этого более чем хватало для подключения жестких дисков (да и сейчас хватает), про SSD тогда никто еще не слышал.
В середине нулевых стали появляться первые пользовательские SSD. Они были дорогими и малоемкими (16-64 ГБ), но уже имели скорости выше 150 МБ/с, так что появилась вторая ревизия SATA, которая могла работать со скоростями до 300 МБ/с. Однако и этого вскоре стало мало, и в 2008 году появилась третья ревизия SATA со скоростями уже до 600 МБ/с. При этом мы живем в то время, когда производительность даже самых дешевых SSD упирается уже не в скорость чипов, а в пропускную способность интерфейса: почти все современные SSD имеют скорости чтения больше 500 МБ/с, то есть проблема уже в самом интерфейсе. И в последнее время все большее число SSD стали выходить с поддержкой протокола NVMe, который пока еще не сдерживает скорости даже лучших SSD — а они составляют до 3 ГБ/с!
История появления NVMe
Идея подключения SSD через шину PCI Express появилась и до NVMe, но проблема была в том, что это были закрытые протоколы — а они зачастую имели недоработки, приводившие к потере скорости. К тому же цена таких решений была баснословной, и многие не понимали, зачем за них переплачивать, если и обычных жестких дисков хватало с лихвой. Но в крупных корпорациях понимали, что за SSD — будущее, и вот, в 2007 году, при поддержке Intel был представлен новый интерфейс — NVMCHI (Non-Volatile Memory Host Controller Interface). Его доработкой занимались целых 4 года, и первая версия NVMe вышла только в 2011 году, однако серьезного распространения не получила: во-первых, тогда SSD все еще были уделом или MacBook, или 2.5 ультрабуков, или топовых игровых компьютеров. Большинство пользователей сидели на Windows 7 с жесткими дисками и радовались жизни — то есть SSD были в принципе не нужны, и главное — крайне дороги. Во-вторых, даже то небольшое число пользовательских моделей SSD имело скорости ощутимо меньше 600 МБ/с, то есть NVMe с его несколькими гигабайтами в секунду был не нужен. И в-третьих — у интерфейса было множество детских болезней: так, нельзя было обновить прошивку такого SSD с него самого, не было расширенного управления питанием, были проблемы при подключении сразу нескольких таких SSD. Разумеется, все это было исправлено в новых ревизиях, и NVMe 1.2 от 2014 года был уже вполне работоспособен. Плюс к тому времени уже были SSD, которым 600 МБ/с было маловато, так что новый интерфейс стал достаточно активно развиваться.
Технические характеристики и отличие от AHCI
SATA был лишь физическим интерфейсом, за логическую часть отвечал AHCI (Advanced Host Controller Interface), который как появился вместе с SATA 1 в 2003 году, так и не менялся. Разрабатывался он для жестких дисков, и поэтому с SSD работал не очень хорошо — на одном канале (а на одно SATA-устройство и был один канал) могла исполняться лишь одна команда. В случае с жесткими дисками проблем не было — головка диска в один момент времени физически могла получить доступ к одной ячейке. Но вот с SSD это не так, и поэтому такая работа вызывала существенные простои.
NVMe же изначально разрабатывался для именно для твердотельных накопителей, и тут делался упор на наименьшие задержки и на параллельный доступ. Общая сравнительная таблица выглядит так:
Как видно, NVMe лучше во всем — до 64К очередей, то есть нагрузка распараллеливается. Так же есть возможность управления прерываниями, то есть при наступлении приоритетной задачи NVMe SSD начнет ее выполнять быстрее. Также серьезно ниже задержка при выполнении команд: в случае с AHCI это 2 запроса DRAM, то есть даже с DDR4 это порядка 100-150 нс — меньше время ответа у SATA SSD быть не может. В случае же с NVMe запрос только один, что позволяет уменьшить задержки вдвое. Ну и самое главное — скорости: NVMe SSD подключаются через PCI Express 3.0 x4, что в теории обеспечивает скорость до 3.2 ГБ/с — до 5 раз быстрее, чем SATA SSD.
Форм-факторы NVMe SSD
Традиционно эти SSD подключаются как платы расширения PCI Express — то есть используются те же слоты, что и для видеокарт. Однако такой тип подключения все больше сходит на нет: во-первых, все больше пользователей переходит на ноутбуки, где полноценного PCIe быть не может. Во-вторых, на рынке все больше компактных материнских плат, где слотов PCIe или 1, или 2, но из-за «толстых» видеокарт второй зачастую бывает перекрыт, а первый почти всегда занят видеокартой:
Второй форм-фактор это U.2. Обычному пользователю он мало интересен, так как используется на серверах, имеет возможность «горячей» замены и меньшие (в сравнении с платами расширения PCIe) размеры:
Ну и самый компактный и наиболее развивающийся форм-фактор это M.2 — его активно используют в ноутбуках, а начиная с 100ой линейки чипсетов от Intel он стал появляться уже и на материнских платах. Однако нужно быть осторожным: в этом форм-факторе есть и SATA SSD, и как их отличить — можно почитать в этой статье:
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Как правильно выбрать NVMe SSD диск
Твердотельные накопители (SSD) за последние годы стремительно улучшают свои показатели, выходя на рубежи производительности, которые еще недавно казались недостижимыми. Это сделалось возможным при переходе на шину PCI Express и протокол NVMe, такие диски не имеют ничего общего с SATA и являются новым типом накопителей, изначально рассчитанных на использование твердотельной памяти. При этом вокруг них до сих пор гуляет множество мифов и заблуждений, что порой очень мешает сделать правильный выбор, поэтому сегодня мы постараемся отделить зерна от плевел и рассказать о том, что действительно важно при выборе такого диска.
Основным поводом к написанию данной статьи стал не уменьшающийся поток вопросов по поводу приобретения и работы NVMe накопителей, начиная с того, какой диск выбрать для приобретаемой системы, и заканчивая тем, что купленный диск не развивает заявленных в описании скоростей.
Чтобы лучше понимать, о чем пойдет речь дальше мы рекомендуем ознакомиться с нашей статьей: Твердотельные накопители: что такое SLC, MLC, TLC, QLC, NVMe и прочие аббревиатуры? Мы не будем подробно останавливаться на рассмотренных в ней вопросах.
Основные понятия
Путаница с твердотельными дисками начинается уже с основных понятий. Поэтому сразу внесем ясность. Рекомендуем внимательно ознакомиться с приведенной ниже информацией и никогда не путать одно с другим.
Поэтому говоря о современных NVMе дисках следует понимать, что это прежде всего накопитель с подключением по шине PCI Express и с поддержкой протокола NVM Express, для подключения к компьютеру такой диск может использовать разъем M.2. Именно в этом порядке, потому как форм-фактор M.2 вовсе не говорит о том, что перед нами именно NVMe диск, так как с данным разъемом выпускается большое количество SATA-моделей. Точно также NVMe диски могут использовать иные разъемы для подключения к ПК, например, U.2.
Что нужно знать про шину PCI Express
Так как NVMe накопители подключаются к шине PCI Express, то начнем разбираться с нее. Первая спецификация шины PCI Express представлена в 2002 году и это означает, что нет принципиальных препятствий для подключения NVMe дисков даже к достаточно старым устройствам и они даже будут работать. Но следует учитывать, что пропускная способность одной линии различных версий PCIe имеет разные значения. На сегодняшний день массовое применение имеет третья версия PCIe и только начинают появляться устройства с поддержкой четвертой. Ниже в таблице представлена пропускная способность одной, двух и четырех линий разных поколений PCIe.
Версия PCIe | Пропускная способность МБ/с | ||
---|---|---|---|
x1 | x2 | x4 | |
1.0 | 250 | 500 | 1000 |
2.0 | 500 | 1000 | 2000 |
3.0 | 985 | 1969 | 3938 |
4.0 | 1969 | 3938 | 7877 |
Существующие модели NVMe дисков поддерживают две или четыре линии PCI-е. Как видим, несмотря на то что скорость одной линии PCI Express с каждым поколением практически удваивалась, но только к третьей версии достигла значений, дающих серьезное преимущество над SATA даже в недорогом варианте с двумя линиями.
Все современные модели, если не сказано иного, поддерживают третье поколение PCIe, ряд дорогих моделей поддерживает спецификацию 4.0. Если же мы возьмем материнские платы, то там не все так радужно, поддержку PCIe 4.0 можно найти только в топовых моделях, а гораздо чаще можно столкнуться с использованием второго поколения шины, даже во вполне современных системах. Кроме того, нельзя говорить о PCI Express только в разрезе материнской платы, обязательно нужно брать во внимание используемый процессор, так как контроллер шины находится в нем и именно от него будет зависеть доступное количество линий и их поколение.
Чтобы не быть голословными, давайте разберем несколько примеров. Проще всего с Intel, так как там практически каждое поколение процессоров имеет собственный сокет и вариативность не так велика. Кроме того, последние поколения процессоров имеют одинаковую конфигурацию PCIe вне зависимости от модели, так все процессоры 10-го поколения, от Celeron G до Core i9 имеют 16 линий PCIe 3.0 с возможными конфигурациями 1×16, 2×8, 1×8+2×4.
Как ни странно, проще всего с недорогими моделями. Возьмем, к примеру Gigabyte H410M S2H V3, данная материнская плата имеет единственный разъем M.2 M-key c PCIe Gen3 x4, а так как кроме процессоров 10-го поколения установить туда больше ничего нельзя, то вы при любом раскладе получаете 4 линии PCIe третьего поколения с пропускной способностью до 3,9 ГБ/с.
Берем более дорогую ASRock B460 Pro4, эта плата имеет два разъема M.2, каждый из которых поддерживает PCIe до уровня Gen3 x4, кроме того, в один из разъемов можно установить SATA-устройство. Опять-таки процессоры только 10-го поколения, что гарантирует отсутствие неприятных сюрпризов.
Итак, самый верхний разъем M.2, предоставляющий четыре линии PCIe 4.0 доступен только при установке процессора 11-го поколения, если вы купите процессор 10-го поколения данный разъем «превратится в тыкву», т.е. не будет работать вообще. Оставшиеся разъемы предоставляют линии третьего поколения в количестве x4 и x2, таким образом подсистема хранения B560 Pro4 оказывается даже более ограниченной, чем у более дешевой B460 Pro4 и раскрывается только при использовании процессоров 11-го поколения.
С переходом в стан AMD все становится гораздо интереснее, потому как платформа AM4 не менялась уже достаточно долго и предусматривает поэтому большую вариативность, кроме того, разные модели процессоров AMD имеют разную конфигурацию PCIe.
И снова проще всего с недорогими платами, скажем ASRock AB350M Pro4-F имеет два разъема M.2, один из них поддерживает только SATA3 и нас не интересует, а вот второй предоставляет 4 линии PCIe 3.0 при использовании старших моделей процессоров и всего две линии при установке Athlon или процессоров A-Series APU. При этом несмотря на то, что плата поддерживает процессоры третьего поколения (Zen2) линий PCIe 4.0 на слотах хранения вы не получите.
Внимательный читатель может заметить, что наиболее причудливые конфигурации PCIe встречаются именно на платах верхнего ценового сегмента. Действительно это так. Объяснение этому факту тоже достаточно простое: количество доступных линий PCIe конечно и если в недорогих платах их в принципе хватает на всех потребителей, то в более высоком сегменте приходится идти на компромиссы, так как количество подключаемых к шине устройств только растет.
Несколько слов о разъемах М.2
К выбору нового форм-фактора для накопителей NVMe имеет опосредованное отношение, любой, кто заглядывал внутрь 2,5″ SSD диска знает сколько там неиспользуемого пустого места. Добавьте к этому корпус и разъем. Переход на M.2 позволил еще раз удешевить производство, а также, за счет меньших размеров, упростить проектирование компактных устройств. Пользователи тоже не остались в накладе, компактный накопитель устанавливается непосредственно на плату устройства и позволяет обойтись без кабелей, что улучшает внешний вид и вентиляцию собранного компьютера.
Изначально для SSD выбрали форм-фактор M.2 с разъемом B key, данный разъем предусматривал вывод на свои контакты интерфейса SATA и двух линий PCIe. На первых порах этого было достаточно, но с развитием быстрых NVMe дисков пропускной способности двух линий PCIe стало не хватать. При этом возможности разъема B key не позволяли увеличить количество линий PCIe, потому что стандартом также предусмотрен вывод на него интерфейсов USB 2.0 / 3.0, HSIC, SSIC, Audio, UIM, I2C. Они могут быть разведены или не разведены на каждый конкретный разъем, но разъем должен оставаться электрически совместимым с любым типом устройств, которые могут быть подключены к нему. Проще говоря, устройство может там обнаружить или не обнаружить требуемые линии, но ничего неожиданного там оказаться не должно.
Поэтому был разработан новый тип разъема с ключом M key, который предусматривает вывод на него только интерфейсов PCIe x4 и SATA, при этом в части двух линий PCIe и SATA разъем сохраняет совместимость с B key. Таким образом разработанные для разъема B key накопители могут успешно работать в разъеме M key, но не наоборот.
Практически все современные материнские платы выпускаются с разъемом M key, с ним же идут все PCIe x4 NVMe диски, в то время как SATA и PCIe x2 модели оснащаются комбинированным разъемом B&M keу и могут быть установлены как на старые, так и на новые платы.
Иногда здесь возникает непонимание, ведь раньше мы говорили, что PCIe x4 диски совместимы с интерфейсом PCIe x2, а теперь оказывается, что подключить рассчитанный на четыре линии накопитель к разъему с двумя линиями PCI Express нельзя. Однако противоречия тут нет. Спецификация PCIe требует от устройств поддержки работы с любым количеством линий, начиная от одной, максимальное количество ограничивается возможностями устройства, также все новые версии PCIe обязаны сохранять обратную совместимость со старыми устройствами (и наоборот). Но, оставаясь совместимыми по интерфейсу, диски PCI x4 электрически несовместимы со старым разъемом.
Загрузка с NVMe
Для загрузки с NVMe устройств низкоуровневое ПО материнской платы должно уметь работать с такими дисками и именно это подразумевается, когда на коробках пишут «поддерживает NVMe». Без поддержки со стороны материнской платы вы также сможете использовать NVMe диски, но не сможете загрузитьcя с них. Для плат с UEFI такую поддержку во многих случаях можно добавить, просто обновив прошивку (существуют также прошивки от энтузиастов для старых плат), для устройств с BIOS такая возможность обычно недоступна. Есть, конечно, вариант с самостоятельной ручной модификацией для некоторых моделей, но это сугубо на свой страх и риск.
Если же вы не готовы взять на себя такую ответственность, то можно пойти обходным путем и использовать Clover EFI bootloader. Работа с данным инструментом выходит за рамки этой статьи, однако в сети можно найти достаточно инструкций.
Возвращаемся к выбору диска
Теперь, вооружившись необходимым объемом знаний, можно приступать к выбору NVMe диска. Прежде всего следует определиться с выбором материнской платы и процессора, а затем, при помощи спецификаций на них, уточнить количество линий PCIe на разъемах M.2 и поколение интерфейса.
И если вы внимательно читали эту статью, то в ряде случаев вам даже не придется заглядывать в спецификации, так, например, увидев заявленную для SAMSUNG 980 PRO максимальную скорость чтения в 6900 МБ/с сразу можно понять, что речь идет о PCIe 4.0 и без поддержки этого интерфейса со стороны материнской платы и процессора такой диск покупать не имеет смысла.
Если у вас в наличии 4 линии PCIe 3.0 то можете смело выбирать диски со скоростями 3900 МБ/с, т.е. практически любой производительный диск, кроме топов, с поддержкой четвертой версии интерфейса. При этом часто на плате остается еще один разъем M.2 с меньшим количеством линии или более старой версией интерфейса. Поэтому вполне разумно желание установить туда еще один накопитель, все равно производительность даже двух линий PCIe 3.0 существенно превосходит пропускную способность SATA. Как быть в этом случае? Очень просто, из таблицы выше получаем значение пропускной способности двух линий третьего поколения (или четырех линий второго) как 2000 МБ/с, если грубо округлить в большую сторону, вот на эту цифру и будем ориентироваться.
В любом случае принцип прост: выясняем пропускную способность разъема и согласно нее подбираем подходящий диск. Также не забываем обратить внимание на тип ключа, если для современных плат это несущественно, практически везде стоит M key и вы сможете установить любой накопитель, то на более старых платах вы можете встретить B key и диски PCIe x4 подключить туда не получится чисто физически.
Еще один неочевидный фактор: на многих платах разъемы M.2 делят линии PCIe с каким-либо слотом и при подключении накопителя определенный слот перестанет работать. Обязательно учитывайте это, если используете дополнительные PCIe устройства помимо видеокарты.
Надеемся, данная статья поможет вам внести ясность в вопрос выбора накопителя NVMe и позволит избежать грубых ошибок и необоснованных материальных затрат.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: