
Согласно пресс-релизу компании American Megatrends, анонсированный продукт может быть классифицирован как фреймворк, позволяющий производителям mass storage подсистем создавать готовые решения с учетом целевой архитектуры NVMe-накопителей и платформ, с которыми они будут использоваться.
Как известно, NVMe-накопитель — это PCI Express устройство, способное нести на борту ROM — носитель информации, содержащий UEFI-драйвер, детектируемый и подключаемый UEFI платформы при старте, аналогично тому, как это имеет место в видео адаптере или SCSI-контроллере. Этот драйвер подменяет и/или дополняет функции поддержки NVMe-подсистемы, реализуемые системной платой.
Для чего это нужно?
Подключение Option ROM — программного модуля в составе твердотельного накопителя на шине PCI Express — осуществляется регистрацией UEFI-протоколов, образующих набор сервисных API для обслуживания инициализации, чтение и записи устройства. Теоретически, при достаточной степени унификации и отсутствии Vendor-Specific ресурсов, поддержка NVMe-накопителя может быть выполнена исключительно средствами UEFI платформы.
На практике такой сценарий затруднен, так как расширение функциональности NVMe-устройств: поддержка метаданных, криптозащита информации, управление соответствием логических и физических устройств (namespace management) требует обслуживания Device-Specific ресурсов проприетарным кодом. Вспомнив причины известных проблем с установкой ОС семейства Windows XP на платах, оборудованных контроллерами RAID и AHCI, можно согласиться с тем, что встроенный Device-Specific драйвер необходим подсистеме хранения данных.
Что осталось за кадром?
Термин namespace, нередко упоминаемый в контексте NVMe подсистем, означает, доступное для использования пространство накопителя. Обратим внимание на комментарий в презентации Flash Summit, к которому компания AMI безусловно имела отношение:
«Today, creation/configuration of namespaces is vendor specific»
Одним из решений проблемы недостаточной унификации на уровне команд NVMe-контроллера является комплектование устройства собственным UEFI-драйвером в виде Optional ROM.

Термин namespace management определяет управляющие функции UEFI, необходимые для формирования набора накопителей, доступного операционной системе. Как показано на иллюстрации ниже, в общем случае, топология подключения контроллеров и физических устройств может инкапсулироваться низкоуровневым программным обеспечением, а множество дисков, декларируемое UEFI-протоколами, не всегда тождественно множеству установленных физических устройств.

В примере на иллюстрации, к порции дискового пространства (NS B), расположенной на физическом устройстве, возможен доступ со стороны двух хост-контроллеров, которые в общем случае могут быть подключены к различным портам PCIe, возможно расположенным на разных хост-платформах, что подразумевает функции арбитража и синхронизации, особенно актуальные для двухпортовых NVMe-устройств.

Интерфейс UEFI станет человечнее?
Своеобразной интригой остается общий подход к реализации конфигурирования. Логично предположить, что в дело должна вступить технология HII (Human Interface Infrastructure или Human Interface Interconnect), позволяющая интегрировать Setup-утилиты, реализованные в процедурах Option ROM в состав CMOS Setup платформы, унифицируя управление опциями для firmware системной платы и периферийных устройств из единого центра, которым должен стать UEFI Setup.

В ряде случаев, встроенное программное обеспечение, находящееся в Option ROM и расширяющее возможности UEFI системной платы, может потребовать наличия собственных настраиваемых опций или средств диагностики, а значит выделенной Setup-утилиты с независимым user-интерфейсом, что достаточно неудобно, особенно в серверных платформах, содержащих большое количество плат расширения.

Концепция HII предполагает централизованный подход: редактирование всех настроек должно осуществляться в Setup платформы. Для этого firmware плат расширения, которое хранится в Option ROM, передает UEFI системной платы специальный набор дескрипторов, описывающих GUI-объекты. Таким образом динамически создается интерфейс пользователя, единообразно обслуживающий функциональность встроенных и подключаемых устройств.