
Переход от магнитных дисков к SSD-устройствам, появление интерфейсной архитектуры NVM Express, пришедшей на смену контроллеру AHCI, подключение накопителя непосредственно к шине PCI Express — вот перечень революционных изменений, произошедших в индустрии систем хранения данных за последнее время. Жесткий диск перестает быть «узким местом» в цепочке передачи информации. Разработчикам UEFI-интерфейса и персональных платформ приходится «подтягивать» системную архитектуру под новые требования, обусловленные этими обстоятельствами.
Слуга как минимум двух господ
Как известно, после интеграции контроллера оперативной памяти в состав CPU, мультипроцессорная платформа автоматически становится, NUMA-системой или системой с неоднородным доступом к памяти. Аббревиатура NUMA (Non-Uniform Memory Access) в данном контексте означает, что каждый из процессоров располагает собственным контроллером памяти, доступ к которому осуществляется быстрее, чем к памяти соседнего процессора. С учетом этого оптимизируется программное обеспечение. Как правило, предметом такой оптимизации является взаимодействие центрального процессора с оперативной памятью. Вместе с тем, работа bus master устройств, подключенных к шинам ввода-вывода и самостоятельно передающих данные, также требует оптимизации с учетом специфики NUMA. Аспект, на котором мы остановимся, имеет прямое отношение к системам хранения данных и должен учитываться разработчиками операционных систем и драйверов.
Рис.1. Подключение SSD диска к системе с двумя и более физическими процессорами
Как видим, SSD-накопитель подключен к процессору CPU0 посредством шины ввода-вывода. Очевидно, буфер, используемый для обмена с диском, оптимально расположить в памяти, подключенной к процессору CPU0, маршрут данных в этом случае будет короче.
Без обиняков
Технология Direct Cache Access или DCA, позволяет записывать информацию, передаваемую bus-master устройством, непосредственно в кэш-память процессора. Чтобы понять, о чем идет речь, вспомним, как происходит передача данных в «обычной» платформе, без использования DCA. Устройство (в нашем примере контроллер жесткого диска) после получения от драйвера стартовых параметров: номера сектора и адреса буфера, способен самостоятельно выполнить передачу информации в оперативную память без вмешательства программы на фазе передачи данных. После завершения операции, центральный процессор будет проинформирован о результатах с использованием механизма аппаратных прерываний.
Заметим, что контроллер кэш-памяти отслеживает все операции записи в оперативную память. И если кэшированная информация изменилась, соответствующие строки кэш нужно объявить недостоверным (Cache Invalidation). Иначе вместо данных, записанных в память внешним устройством, процессор «увидит» в кэш-памяти их устаревшую копию. Такая схема взаимодействия с периферией не оптимальна: сначала нужно получить информацию о перезаписанных адресах и объявить недостоверным содержимое кэш; затем, обнаружив отсутствие требуемой информации в кэш, процессор читает оперативную память.
При использовании DCA, данные, поступившие от внешнего устройства, попадают непосредственно в кэш, и в последующем доступе к ним, чтение из оперативной памяти не потребуется.
Рис.2. Опция для управления DCA в CMOS Setup серверной платформы Intel S2600WT
Опция Direct Cache Access доступна в CMOS Setup. Стоит обратить внимание на комментарий, визуализируемый при ее выборе из меню: там дословно говорится, что в кэш-памяти размещаются данные, поступающие от периферийных устройств — «placing data from I/O devices directly into the processor cache».
Контроллер DMA и технология Intel QuickData
Технология Intel QuickData предполагает использование устройства DMA engine (Direct Memory Access или по-новому Data Movement Acceleration) в составе процессора. Этот узел обслуживает передачу информации между оперативной памятью и периферией. Справедливости ради отметим, что такой подход начал практиковаться еще во времена системной логики Intel 5000 и модулей Fully Buffered DIMM (FB DIMM) и чаще упоминается в контексте подключения интеллектуальных контроллеров локальной сети.
Узел DMA engine не имеет ничего общего с Legacy-контроллерами DMA Intel 8237, основанными на архитектурных принципах шины ISA. Но избежать аналогий не удастся: «старый» и «новый» контроллеры предполагают централизованную модель выполнения операций с единым контроллером DMA, обслуживающим запросы периферийных устройств на прямой доступ к памяти (DRQ или DMA Request), а также программно инициированные запросы на копирование блоков и заполнение блоков константой. В то время, как два последних десятилетия господствует децентрализованная модель, характерная для большинства PCI и PCIe-устройств. Она предполагает способность периферийного устройства самостоятельно инициировать шинные циклы и взаимодействовать с оперативной памятью (bus master capability), что означает наличие в составе каждого устройства собственного контроллера DMA.
DMA Engine входит в состав процессора, в то время как Legacy контроллер DMA, аналогичный двум каскадно-включенным микросхемам Intel 8237 находится в микросхеме PCH. Современная платформа может содержать контроллеры обоих типов.
Рис.3. Расположение узла DMA Engine (Device 4) на блок-схеме процессора Intel Xeon E5 V3
Direct Cache Access и производительность
Как зависит производительность платформы в целом и производительность твердотельного диска в частности от установки Direct Cache Access? Проделаем небольшой эксперимент, используя в качестве тестовой платформы Intel S2600WT с двумя процессорами Xeon E5-2670 v3 частотой 2,30 GHz. Оперативная память будет задействована так, чтобы обеспечить 4-х канальный режим доступа. Общий ее объем составляет 64 ГБайт и формируется с помощью регистровых модулей KVR21R15S4/8 (производство Kingston). Дисковая подсистема — SSD-накопитель от Intel емкостью 800 Гбайт.
Рис 4. NVM Express накопитель DC P3600 для шины PCI Express емкостью 800 Гбайт
Скорость доступа глазами HD Speed
Главный вывод — скорость обмена данными с SSD-диском в процессе работы тестовой утилиты HD Speed v1.7.8.107 не зависит от режима Direct Cache Access. Попытка измерить пиковую скорость обмена также не выявила преимуществ DCA-режима в силу того, что сопряжена с нестабильностью получаемых результатов.

Рис 5. Слева результат HD Speed со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access
Если судить субъективно, то при последовательном чтении данных с SSD-диска результаты у DCA-режима хуже, а пиковая скорость обмена — немного лучше, чем при использовании традиционной политики обслуживания кэш-памяти.
Производительность платформы по оценкам LinX
Выйти из патовой ситуации мы попытались с помощью утилиты LinX v0.6.5. Основанная на алгоритмах Intel, она дает оценку общей производительности платформы в гигафлопсах.

Рис. 6. Слева результат LinX со стандартными установками CMOS Setup, справа — с применением технологии Direct Cache Access
Усреднив показатели можно заключить, что производительности платформы Intel S2600WT после включения DCA-режима ухудшается. Полученный результат позволил сформулировать ряд гипотез, касающихся особенностей применения Direct Cache Access.
Резюме
На сегодня не существует открытых источников, где декларировалась бы поддержка SSD-накопителями 3600-й серии режима доступа в кэш-память. Анализ конфигурационных регистров также не позволяет подтвердить этот факт. Результаты тестирования свидетельствуют, что, скорее всего, поддержка Direct Cache Access не имплементирована в контроллер твердотельного накопителя DC P3600.
Некоторая потеря производительности в DCA-режиме, по-видимому, связана с тем, что выполнение теста в среде Windows сопряжено с нерациональным заполнением кэш-памяти при работе bus-master устройств, так как технология доступа к кэш-памяти уже применяется в сетевых адаптерах. Думается, что ее область применения пока этим и ограничена.
На повестке дня — расширение функциональности NVMe-устройств, хотя бы в силу того, что, в отличие от магнитных носителей, автономное кеширование либо теряет смысл либо требует иной реализации. Еще одна актуальная задача состоит в оценке влияния Direct Cache Access на производительность ethernet-контроллеров, но это уже выходит за рамки нашей статьи.