
Интеграция системных компонентов в CPU давно стала одним из основных трендов. События развиваются в порядке убывания пропускной способности шин: после контроллера оперативной памяти и дискретного видео адаптера пришла очередь подсистемы хранения данных. В результате свет увидела концепция VROC (Virtual RAID on CPU), определяющая подключение массивов высокопроизводительных PCIe- и NVMe-накопителей непосредственно к процессору, минуя системную логику. Рассмотрим архитектуру платформ на основе чипсета Intel X299, представленных компанией ASUS.
Диалектика новых возможностей
Реализация высокопроизводительной шины ввода-вывода для NVMe-устройств на интерфейсе PCI Express, встроенном в процессор, не нова. Ее преимущества очевидны: оптимизация трафика между накопителем и CPU с максимальным сокращением маршрута передачи данных между mass storage подсистемой и оперативной памятью. Архитектура серверных платформ, когда дело касается подключения отдельных SSD-дисков, давно использует такие схемные решения. А вот непосредственная организация массивов хранения на базе ресурсов центрального процессора до появления X-платформ была под вопросом.
Рис 1. Блок-схема платформы на основе процессоров Intel Skylake-X (Kaby Lake-X) и системной логики Intel X299
Решить поставленную задачу призвана технология VROC (Virtual RAID on CPU). Ее реализация стала возможна благодаря наличию в центральных процессорах X-серии до 44 конфигурируемых PCIe-линий. Теперь кроме нескольких дискретных видео адаптеров можно подключать PCIe/NVMe SSD-накопители непосредственно к процессору, увеличивая пропускную способность и снижая латентность подсистемы хранения данных.
Теоретически, подключение к процессорным PCIe-портам любых устройств, отличных от видео адаптеров не противоречит спецификации PCI Express и, как уже говорилось, не является новшеством платформы Intel X299. На практике, в «домашних» платформах такие конфигурации не всегда были работоспособны. Одна из причин – использование трюков для поддержки на сегодня уже безнадежно устаревших ресурсов Legacy VGA адаптера (в частности, обслуживание диапазона доступа к видео памяти по адресам A0000h-BFFFFh).
Рис 2. Меню установок UEFI BIOS на платформе ASUS информирует о наличии аппаратного ключа Premium для выполнения загрузки с VROC-массива, подключенного к одному из VMD-контроллеров
В серверах и высокоуровневых рабочих станциях для эффективной работы дисковых массивов, содержащих большое количество накопителей, mass storage подсистема может быть изолирована от PCIe-топологии с выделением в отдельный шинный сегмент с помощью устройства VMD (Volume Management Device), реализованного в составе процессоров Intel X-серии. Напомним, согласно канонам PCI-архитектуры, верхним уровнем в иерархии segment, bus, device, function является именно сегмент (другими словами – domain).
Рис 3. Статус всех Volume Management Device доступен для мониторинга в UEFI BIOS платформы ASUS
Volume Management Device снимает ограничение в 256 логических шин, имеющее место в системах с одним доменом, что актуально для высокоуровневых серверов. Для NVMe-устройств, поддерживающих репликацию средствами SR-IOV и размещающих в адресном пространстве множество логических копий одного физического ресурса, исчерпание этого лимита может наступить при значительно меньшем количестве накопителей. Локальная (в рамках VMD-топологии) обработка событий, связанных с «горячим подключением» и восстановлением после ошибок позитивно влияет на стабильность подсистемы хранения данных и платформы в целом.
Обработка многочисленных асинхронных событий NVMe-массива может быть организована с управляемой привязкой заданных групп источников событий к заданным логическим процессорам посредством расширенного механизма передачи прерываний сообщениями MSI-X. В рамках модели аппаратной виртуализации VT-d, обмен информацией между NVMe устройствами массива и оперативной памятью может находиться под контролем блока IOMMU (Input-Output Memory Management Unit), обслуживающего DMA-операции, инициируемые устройствами VMD-домена. Основное назначение блока IOMMU — трансляция виртуальных адресов в физические.
Практикум от ASUS
Перечислим три класса задач, решение которых можно констатировать в рамках концепции VROC:
- Ревизия архитектуры PCI Express и устранение нерегулярности, обусловленной адресацией Legacy-ресурсов;
- Аппаратная поддержка ряда функций по управлению RAID-массивами силами процессора в виде устройства Volume Management Device;
- Программная поддержка со стороны UEFI и драйверов ОС (слово «Virtual» в аббревиатуре VROC означает делегирование существенной части работы программному обеспечению) — для выполнения загрузки с дискового массива он должен поддерживаться силами UEFI до старта ОС.
Результат можно оценить на примере устройства ASUS Hyper M.2 x16. Плата, к слову снабженная системой охлаждения, устанавливается в разъем PCI Express x16, подключенный к CPU, неся на борту до четырех накопителей в формате NVMe M.2:
Рис 4. Адаптеры ASUS Hyper M.2 x16 на персональной платформе позволяют реализовать функциональность VROC
Прокомментируем один из приведенных в обзоре результатов теста CrystalDiskMark: скорость линейного чтения составляет 11697 мегабайт в секунду.
Две теоретических величины для сравнения (напомним, речь о трафике между твердотельным накопителем или массивом накопителей и оперативной памятью; дуплекс не учитывается):
- При подключении к портам системной логики имеет место ограничение порядка 4 гигабайт в секунду. Это пропускная способность шины DMI 3.0 (Direct Media Interface), связывающей микросхемы CPU и PCH, функционально соответствующей PCIe Gen3 x4. В расчетах сделано допущение, что весь трафик CPU-PCH принадлежит mass storage подсистеме, на практике это не так, значит, реальный результат будет ниже.
- Максимальный трафик порта PCIe Gen3 x16 составляет порядка 16 гигабайт в секунду.
Системная логика Intel X299 и SATA-подсистема
Архитектура PCH не претерпела радикальных изменений. Концепция VROC оставляет в компетенции чипсета относительно медленные интерфейсы, что, возможно, и обусловило консервативность дизайна системной логики на основе DMI 3.0.
Рис 5. Обзор функциональности набора системной логики X299
На фоне тенденций перевода высокопроизводительных интерфейсов в компетенцию CPU реализована и Legacy-подсистема хранения данных на основе унифицированной архитектуры SATA AHCI. Она дополнена проприетарным механизмом, оптимальным для NAND-накопителей небольшого объема, с подключением к PCH по PCIe-интерфейсу, применяемых для кэширования традиционных HDD. Также могут быть подключены устройства Intel Optane. Функциональность управляется одним из Vendor-Specific регистров микросхемы PCH (Рис 6).
Рис 6. Регистр Vendor-Specific Capabilities Register обеспечивает доступ к ресурсам NAND в диапазоне регистров контроллера AHCI
Поля NVM Remapped Register Offset, Memory Space Limit задают соответственно базовый адрес и размер фрагмента адресного пространства, используемого для доступа к ресурсам твердотельного накопителя. Бит PCIe NAND Memory BAR Remapped Enable разрешает (1) или запрещает (0) доступ. BAR здесь означает Base Address Register. Для физического доступа к регистрам выделяется часть диапазона, используемого Legacy контроллером SATA AHCI согласно канонам PCI PnP.
Логически, добавляемая часть диапазона является самостоятельным устройством, на которое в общем случае не накладываются ограничения, присущие устаревшему протоколу AHCI, разработанному еще во времена магнитных дисков. Инициализация регистра, включая выбор диапазонов AHCI и NVM, обеспечивающих бесконфликтное сосуществование двух физически объединенных, но логически обособленных подсистем, находится в зоне ответственности UEFI Firmware.
Вместо послесловия: о неочевидных свойствах RAID0
Попытки создания высокопроизводительных mass storage подсистем методом объединения двух и более SSD в массив RAID0 практиковались с момента появления первых твердотельных дисков с интерфейсом SATA, приобретая некий «сакральный оттенок» среди компьютерных энтузиастов, часто в силу высокой стоимости. Вместе с тем, пропускная способность подобных решений, в случае их реализации средствами системной логики, ограничена возможностями шины DMI, а сравнительно высокая латентность доступа обусловлена топологической дистанцией между микросхемой PCH и оперативной памятью (Рис 1). Не последнюю роль играет и фактор арбитража, ведь DMI обслуживает не только mass storage подсистему, но и все виды трафика между CPU и PCH.
Концепция VROC, реализованная на PCI Express портах процессора исключает DMI и PCH из маршрута передачи данных между накопителем и оперативной памятью, снимая указанные ограничения. Однако, есть проблема. Для эффективного функционирования SSD необходима технология trim, создающая коммуникацию между ОС и накопителем, с целью информирования последнего о блоках, относящихся к удаленным файлам, а следовательно доступных для записи новых данных. Коммуникация между уровнями программного стека необходима, поскольку требуемая информация порождается на верхнем уровне (файловые операции ОС), а используется на нижнем (процессы записи и стирания NAND матрицы).
Поскольку в RAID0, блоки чередуются между накопителями, область, декларируемая командой trim, должна быть разделена на части, в соответствии с правилами адресации массива. После этого, каждому из накопителей массива должна быть отправлена отдельная команда trim, декларирующая участок освобождаемой области, принадлежащий только этому накопителю.
Теоретически, задача может быть решена средствами встроенного программного обеспечения RAID контроллера или его драйвера в ОС. На практике, в силу исторических причин, этого как правило не происходит, вследствие чего может отсутствовать поддержка trim в RAID0. Таким образом, экзаменом на интеллектуальность для новых платформ, как впрочем и аргументом в споре о будущем (псевдо)аппаратных RAID массивов, может стать решение этой задачи или ее игнорирование грандами индустрии…