nvme.jpg
Уже на протяжении почти 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 МБ/с было маловато, так что новый интерфейс стал достаточно активно развиваться.

139549-ocz-onyx-series-sata-ii-1-8-1769.jpg

Технические характеристики и отличие от AHCI

SATA был лишь физическим интерфейсом, за логическую часть отвечал AHCI (Advanced Host Controller Interface), который как появился вместе с SATA 1 в 2003 году, так и не менялся. Разрабатывался он для жестких дисков, и поэтому с SSD работал не очень хорошо — на одном канале (а на одно SATA-устройство и был один канал) могла исполняться лишь одна команда. В случае с жесткими дисками проблем не было — головка диска в один момент времени физически могла получить доступ к одной ячейке. Но вот с SSD это не так, и поэтому такая работа вызывала существенные простои.

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


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

Как видно, 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, но из-за «толстых» видеокарт второй зачастую бывает перекрыт, а первый почти всегда занят видеокартой:
pcie_ssd_atx_image02.jpg
Второй форм-фактор это U.2. Обычному пользователю он мало интересен, так как используется на серверах, имеет возможность «горячей» замены и меньшие (в сравнении с платами расширения PCIe) размеры:
u2-nvme-ssd.jpg
Ну и самый компактный и наиболее развивающийся форм-фактор это M.2 — его активно используют в ноутбуках, а начиная с 100ой линейки чипсетов от Intel он стал появляться уже и на материнских платах. Однако нужно быть осторожным: в этом форм-факторе есть и SATA SSD, и как их отличить — можно почитать в этой статье:
Samsung-950-Pro-NVMe-M2-256GB-SSD-PCB.png

Целесообразность покупки NVMe SSD.

На данный момент цены на NVMe SSD достаточно сильно упали, и уже близки к ценам на обычные SSD. Поэтому, разумеется, возникает вопрос — а есть ли смысл их брать? Для того, чтобы ответить на этот вопрос, нужно посмотреть на установленное в вашем устройстве «железо»:
  • На устройстве нет M.2 слотов или они поддерживают только SATA. Если у вас ноутбук — то ничего сделать нельзя, пользуйтесь SATA. И, вообще говоря, раз производитель не стал делать M.2 слот, то это банально не нужно — все упрется в производительность процессора, и выигрыш от быстрого SSD не ощущался бы. Если же у вас ПК, и есть свободный слот PCIe — все уже зависит от вас: если у вас стоит мощный процессор (Core i5, i7), материнская плата поддерживает NMVe, и вы часто работаете с массивами данных — стоит задуматься о покупке NVMe SSD, он может серьезно ускорить работу. Ну а если у вас слабый процессор (Core i3, Pentium), или материнская плата вышла до 2011 года — никакого смысла в покупке NVMe нет, совет тот же, что и с ноутбуком — пользуйтесь SATA SSD, вам его заглаза хватит.

  • На устройстве есть M.2 слот, поддерживающий NVMe. Если у вас ноутбук — то, скорее всего, он относится к верхнему ценовому сегменту, и в этом разъеме уже стоит SSD (и, возможно, есть второй диск — HDD). Более того — у вас скорее всего и выбора-то нет: в дорогих ноутбуках обычно один-два слота M.2 и один полноразмерный SATA, но он уже занят HDD, так что вам придется брать NVMe SSD. Если же вы собираете ПК, и на материнской плате есть M.2 слот — все зависит от процессора: если у вас топовый i5 или i7, то стоит переплатить и взять NVMe SSD. Если же у вас Pentium или i3 — смысла в этом нет, скорее всего у вас и так сборка бюджетная, и лишнюю тысячу рублей лучше потратить на больший объем ОЗУ или более мощную видеокарту, чем на более быстрый SSD, который в лучшем случае ускорит загрузку системы на полсекунды.
В итоге все возвращается на круги своя: старый AHCI как был рассчитан для SATA HDD, так с ним теперь в основном и используется. Ну а рассчитанный для SSD NVMe все больше набирает обороты, и, скорее всего, скоро уже все SSD будут поддерживать только его.