NVMe vs AHCI: обзор различий

NVMe vs AHCI: обзор различий

Около десятилетия назад, появление кон­т­рол­ле­ра AHCI (Ad­vanc­ed Host Con­t­rol­ler In­ter­face) сде­ла­ло пре­и­му­ще­с­т­ва ин­тел­лек­ту­аль­но­го уп­рав­ле­ния дис­ко­вой под­сис­те­мой до­сто­я­ни­ем мас­со­вых плат­форм. Клю­че­вой мо­мент то­г­да со­сто­ял в ис­поль­зо­ва­нии очереди команд или NCQ (Na­tive Com­mand Queu­ing).

Рас­по­ла­гая пол­ной ин­фор­ма­ци­ей об име­ю­щих­ся за­про­сах чте­ния и за­пи­си, на­ко­пи­тель име­ет воз­мож­ность вы­пол­нить их в по­ряд­ке, обес­пе­чи­ва­ю­щем ми­ни­маль­ные за­тра­ты вре­ме­ни и энер­гии на по­зи­ци­о­ни­ро­ва­ние го­лов­ки. На­при­мер, чте­ние ци­лин­д­ров: 1, 100, 2, 99 вы­пол­ня­ет­ся в по­ряд­ке: 1, 2, 99, 100.

Архитектура контроллера дисков и линейная адресация блоков (LBA), эффективно ин­кап­су­ли­ру­ют фи­зи­че­скую ре­а­ли­за­цию но­си­те­ля, именно поэтому интерфейс Serial ATA и контроллер AHCI также ис­поль­зу­ют­ся при под­клю­че­нии на­ко­пи­те­лей SSD. С другой стороны, контроллер, оп­ти­ми­зи­ро­ван­ный для об­слу­жи­ва­ния элек­т­ро­ме­ха­ни­че­ских уст­ройств становится «не­по­во­рот­ли­вым по­сред­ни­ком» между цен­т­раль­ным про­цес­со­ром и вы­со­ко­про­из­во­ди­тель­ным мас­си­вом Flash-памяти. Поэтому была разработана архитектура нового кон­т­рол­ле­ра — Non-Volatile Memory Host Con­t­rol­ler In­ter­face (NVMHCI). В описаниях уст­ройств и тех­ни­че­ской до­ку­мен­та­ции чаще можно встретить аль­тер­на­тив­ную аб­бре­ви­а­ту­ру NVMe, под­чер­ки­ва­ю­щую факт прямого под­клю­че­ния накопителя к шине PCI Express.

Физическая реализация

Архитектурно и схе­мо­тех­ни­че­ски, NVMe на­ко­пи­тель яв­ля­ет­ся PCI Express уст­ро­й­ст­вом. Поэтому, вариант кон­с­т­рук­тив­но­го ис­пол­не­ния в виде платы, ус­та­нав­ли­ва­е­мой в PCIe-слот, обладает мак­си­маль­ным «единством фор­мы и со­дер­жа­ния».

Контроллер NVMe входит в состав накопителя; для центрального процессора, накопитель является адресуемым ресурсом, аналогично устройству на шине PCI express — посредников нет

 

Независимо от конструктивного исполнения, устранение посредника, каковым являлся AHCI и как следствие, не­по­сред­ст­вен­ное раз­ме­ще­ние слож­ного набора регистров управления и состояния накопителя в адресном про­ст­ран­ст­ве плат­фор­мы является важным фактором повышения производительности.

Контроллер AHCI обеспечивает промежуточный уровень между центральным процессором и дисковой SATA-подсистемой


Контроллер AHCI обеспечивает промежуточный уровень между центральным процессором и дисковой SATA-подсистемой

Контроллер NVMe входит в состав накопителя; для центрального процессора, накопитель является адресуемым ресурсом, аналогично устройству на шине PCI express — посредников нет


Контроллер NVMe входит в состав накопителя; для центрального процессора, накопитель является адресуемым ресурсом, аналогично устройству на шине PCI express — посредников нет

Программная модель

Архитектура большинства периферийных контроллеров, например SATA AHCI, USB xHCI, уни­фи­ци­ро­ва­на. NVMe – не ис­клю­че­ние, но это совсем не означает, что все на­ко­пи­те­ли имеют одинаковую про­г­рам­мную мо­дель. Это значит, что оп­ре­де­ле­ны и четко де­тер­ми­ни­ро­ва­ны опи­са­ния различий и тех­но­ло­гий, под­дер­жи­ва­е­мых оп­ци­о­наль­но. В идеале, ус­т­ра­ня­ет­ся необходимость vendor-specific или device-specific фраг­мен­тов в драйверах устройств.

Накопитель 535-й серии 240 ГБ с SATA-интерфейсом от компании Intel, модель Templestar SSDSC2BW240H2

 

Как и подобает PCIe-устройству, накопитель содержит набор конфигурационных регистров и Capability-струк­тур, об­ес­пе­чи­ва­ю­щий его ини­ци­а­ли­за­цию со стороны UEFI Firmware платформы в соответствии с канонами PCI PnP про­то­ко­ла. Набор операционных регистров, обеспечивающий взаимодействие контроллера и драйвера в runtime-кон­тек­с­те, ад­ре­су­ет­ся в пространстве Memory-mapped I/O.

Прием команд чтения и записи информации, поступающих от драйвера, а также передача уведомлений о за­вер­ше­нии об­ра­бот­ки этих команд, реализуется с помощью очередей, максимальный размер которых может до­хо­дить до 65536 за­про­сов, против 32 у контроллера SATA AHCI.

Расширенный механизм прерываний передаваемых сообщениями или MSI-X (Message Signaled Interrupt Ex­tend­ed) по­зво­ля­ет струк­ту­ри­ро­вать потоки команд и уведомлений с учетом муль­ти­про­цес­сор­ной то­по­ло­гии плат­фор­мы. При этом уве­дом­ле­ние о за­вер­ше­нии каждой операции (запрос на прерывание) от­прав­ля­ет­ся то­му про­цес­со­ру, который был за­дей­ст­во­ван для уп­рав­ле­ния данной операцией. Также от­ме­тим, что NVMe из­на­чаль­но оптимизирован для под­держ­ки технологии виртуализации SR-IOV.

Архитектура взаимодействия ОС и контроллера NVMe — базовыми объектами являются очереди команд (Submission Queue) и очереди уведомлений о завершении команд (Completion Queue)

 

Резюме

Применение интерфейса Serial ATA как универсального метода подключения HDD и SSD является решением ком­п­ро­мис­сным. Для раскрытия всех преимуществ Flash-памяти, требуются подходы, учитывающие осо­бен­но­с­ти этой па­мя­ти. Именно такие подходы определены стандартом NVMe. Унификация хорошо, оп­ти­ми­за­ция луч­ше...