Персистентность у ворот

В основе кон­вер­ген­ции опе­ра­тив­ных и по­сто­ян­ных за­по­ми­на­ю­щих уст­ройств ле­жит прин­цип со­в­мест­но­го ис­поль­зо­ва­ния обо­их ви­дов па­мя­ти: энер­го­не­за­ви­си­мые но­си­те­ли ин­фор­ма­ции, не ус­ту­па­ю­щие DRAM по про­из­во­ди­тель­но­с­ти, по­ка не­до­ступ­ны мас­со­во­му по­тре­би­те­лю. Гиб­рид­ная ар­хи­тек­ту­ра мо­ду­лей лег­ла в ос­но­ву их клас­си­фи­ка­ции и ди­зай­на но­вых плат­форм. На­ста­ло вре­мя срав­нить ва­ри­ан­ты ре­а­ли­за­ции сис­тем, пред­став­л­я­ю­щ­­их, по су­ти, гра­да­ции ком­про­мис­са про­из­во­ди­тель­но­с­ти, со­в­мес­ти­мос­ти и, ко­неч­но, це­ны.

Классификация

Итак, что же такое NVDIMM-N, NVDIMM-F, NVDIMM-P?

Классификация энергонезависимых модулей памяти NVDIMM по типу ресурсов, доступных в адресном пространстве платформы

Рис.1 Классификация энергонезависимых модулей памяти NVDIMM по типу ресурсов, доступных в адресном пространстве платформы (иллюстрация из материалов In-Memory Computing SUMMIT 2016)

Модули NVDIMM-N (Non-Volatile RAM) несут на борту оба вида памяти: DRAM и Flash. В адресном пространстве платформы доступна только оперативная память, поэтому объем работы по редизайну системной логики и процедур ее инициализации в этом конструктиве сравнительно небольшой. При сбое электропитания либо по специальной команде от программного обеспечения содержимое DRAM копируется в Flash. Для обеспечения данной процедуры используется резервный источник питания.

После восстановления питания содержимое Flash переносится в DRAM. Перемещение данных между оперативной и энергонезависимой памятью происходит внутри модуля, возможность непосредственного доступа к Flash-памяти у хост-CPU отсутствует. Такие устройства могут выполнять функции защищенной оперативной памяти или электронного диска, обслуживаемого блочным драйвером.

Модули NVDIMM-F (Flash Memory) содержат только энергонезависимую память доступную в адресном пространстве. DRAM здесь если и присутствует, то исключительно для внутренних операций устройства. В силу невысокой производительности, такие модули ориентированы на построение блочных устройств хранения данных и не могут использоваться в качестве оперативной памяти. В данном случае гибридная архитектура по-прежнему имеет место, но уже в рамках платформы, а не внутри одного модуля. Широкого распространения NVDIMM-F не получили, так как особенности энергонезависимой памяти нивелируют преимущества быстрого интерфейса, а сопряжение NAND и шины DRAM требует определенных усилий от разработчиков платформы и ее компонентов. Атрибут Vendor-Specific на сравнительной диаграмме (Рис.1), подтверждает сказанное.

Модули NVDIMM-P (Persistent Memory) уравнивают в правах DRAM и NAND. Оба вида носителей доступны в адресном пространстве посредством программируемых диапазонов. Из трех рассмотренных типов модулей, обслуживание NVDIMM-P требует максимальных усилий со стороны разработчиков платформы, UEFI и ОС. Кроме того, реализация оптимальных сценариев использования NVDIMM-P потребует разработки не только новых видов системного ПО, но и приложений. Зато потенциал, который несет такая радикальная оптимизация, максимален.

Архитектура и производительность DAX

В отличие от классических mass storage устройств (к которым мы уже относим и SSD), а также блочных устройств на основе NVDIMM, устройства DAX (Direct Access Storage) делают накопительную матрицу доступной в адресном пространстве пользовательских приложений, унифицируя механизмы доступа к DRAM и NAND.

Сравнение архитектуры программного стека для традиционных накопителей (Traditional), блочных устройств на основе NVDIMM (PM Block Volume) и устройств, на основе NVDIMM, прямо отображаемых в адресное пространство приложения (DAX Volume)

Рис.2 Сравнение архитектуры программного стека для традиционных накопителей (Traditional), блочных устройств на основе NVDIMM (PM Block Volume) и устройств, на основе NVDIMM, прямо отображаемых в адресное пространство приложения (DAX Volume) (Иллюстрация из документа Windows Persistent Memory Support)

Перед анализом результата бенчмарок (Рис.3), отметим, что латентность складываются из трех составляющих: операционная латентность характеризует время выполнения команды в пределах накопителя, системная латентность связана с обработкой асинхронных событий в контроллере запросов на прерывание и выполнением инструкций центральным процессором, топологическая латентность обусловлена архитектурой шин ввода-вывода, наличием ретаймеров и редрайверов.

Сравнение характеристик традиционных накопителей (NVMe SSD), блочных устройств на основе NVDIMM (Block Mode NVDIMM-N) и устройств, на основе NVDIMM, прямо отображаемых в адресное пространство приложения (DAX Mode NVDIMM-N)

Рис.3 Сравнение характеристик традиционных накопителей (NVMe SSD), блочных устройств на основе NVDIMM (Block Mode NVDIMM-N) и устройств, на основе NVDIMM, прямо отображаемых в адресное пространство приложения (DAX Mode NVDIMM-N) (иллюстрация из документа Windows Persistent Memory Support)

Устройство DAX подключено к шине DRAM, асинхронные события и обработка прерываний в процессе чтения и записи не применяются, что и поясняет весьма оптимистичный результат сравнения.

Архитектура программно-аппаратного интерфейса

Подводя итог, рассмотрим современную подсистему хранения данных, формализуя интерфейс между аппаратным и программным обеспечением.

Диаграмма отражает формы взаимодействия прикладного (User Space) а также системного (Kernel Space) программного обеспечения с подсистемой энергонезависимой памяти на основе модулей NVDIMM

Рис 4. Диаграмма отражает формы взаимодействия прикладного (User Space) а также системного (Kernel Space) программного обеспечения с подсистемой энергонезависимой памяти на основе модулей NVDIMM (иллюстрация из документа NVDIMM Block Window Driver Writer's Guide)

Можно выделить четыре вида взаимодействия.

  • Management включает задачи инициализации и конфигурирования, выполняемые низкоуровневым программным обеспечением UEFI в рамках процедуры POST. Для операций, однократно выполняемых при старте платформы, и следовательно не критичных с точки зрения производительности, в качестве канала коммуникации с модулями памяти используется последовательная шина System Management Bus (I2C), по которой передается информация SPD, термодатчиков, SMART и команды конфигурирования модуля. Результаты диалога UEFI и NVDIMM декларируются в виде ACPI-объектов, доступных операционной системе: это таблица NFIT (NVDIMM Firmware Interface Table), описывающая архитектуру подсистемы и управляющий метод _DSM (NVDIMM Device Specific Method), обеспечивающий доступ к конфигурационным регистрам NVDIMM.
  • Block обеспечивает поддержку блочного доступа, что будет нелишним при организации электронного диска на основе энергонезависимой памяти.
  • File обеспечивает классические файловые системы. Этот пункт, как и ранее перечисленный Block на сегодня можно причислить к атрибутами совместимости.
  • Persistent Memory, говоря простым языком, это «то, ради чего все затевалось». Непосредственное отображение ресурсов NVDIMM в адресном пространстве, унифицирует методы доступа к DRAM и NAND. В этом случае, доставка данных приложению не требует длительной и ресурсоемкой операции копирования блоков, а сводится к обновлению дескрипторов страниц, определяющих отображение логического виртуального адресного пространства приложения на физическое адресное пространство платформы. На диаграмме (Рис.4) этот механизм обозначен как MMU (Memory Management Unit) Mappings.

Резюме

Есть основания считать, что функциональность файлов, отображенных на память (memory mapped files) может стать неплохим компромиссом производительности и совместимости, нивелирующим очередные трудности очередного переходного периода. Ведь протокол адресации, отображающий заданную область файла на заданный диапазон памяти, используемый более десятилетия, можно реализовать методом картирования страниц виртуальной памяти, существенно повысив производительность по сравнению с так называемой «подкачкой» или свопингом.

Анализируя более далекое будущее, уместно вспомнить, что в архитектуре виртуальной памяти x64-систем, страница, размером 4096 байт описана дескриптором (элементом PTE, Page Table Entry) размером 8 байт. В идеале и несколько упрощая, можно говорить о росте производительности, соответствующем замене операции копирования страницы, обновлением дескриптора страницы. Это означает, замену копирования 4096 байт записью 8 байт. Но только при условии полного редизайна существующего софта.