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

31 Янв 2016

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

Около десятилетия назад, появление контроллера AHCI (Advanced Host Controller Interface) сделало преимущества интеллектуального управления дисковой подсистемой достоянием массовых платформ. Ключевой момент тогда состоял в использовании очереди команд или NCQ (Native Command Queuing). Располагая полной информацией об имеющихся запросах чтения и записи, накопитель имеет возможность выполнить их в порядке, обеспечивающем минимальные затраты времени и энергии на позиционирование головки. Например, чтение цилиндров: 1, 100, 2, 99 выполняется в порядке: 1, 2, 99, 100.

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

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

NVMe накопитель от компании Kingston, модель HyperX Predator SHPM2280, с интерфейсом PCI Express
Рис 1NVMe накопитель 480 ГБ от компании Kingston, модель HyperX Predator SHPM2280, с интерфейсом PCIe

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

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

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

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

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

Накопитель 535-й серии с SATA-интерфейсом от компании Intel, модель Templestar SSDSC2BW240H2
Рис 4. Накопитель 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 Extended) позволяет структурировать потоки команд и уведомлений с учетом мультипроцессорной топологии платформы. При этом уведомление о завершении каждой операции (запрос на прерывание) отправляется тому процессору, который был задействован для управления данной операцией. Также отметим, что NVMe изначально оптимизирован для поддержки технологии виртуализации SR-IOV.

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

Резюме

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