Проблемы с памятью были давно, а сегодня возникают и у огромного количества приложений — ее обычно не хватает, а ее пропускная способность растет медленнее, чем производительность процессоров. Проблема касается не только оперативной, но и внешней памяти, между которыми существует огромный разрыв в скорости. Соответственно, жесткие диски стали заменяться на SSD, а для интерфейса с PCIe (заместив SAS или SATA, много лет использовавшихся для HDD) стали применяться протоколы NVMe, учитывающие более низкие задержки и «внутренний параллелизм» в SSD. Появляются все новые усовершенствованные версии NVMe (в начале 2024 года последней была версия 2.0d), но все это скорее небольшие количественные улучшения. Ведомым в этом процессе является прогресс роста производительности новых поколений PCIe (удвоение пропускной способности каждые 2–3 года), что важно, так как ожидаемые успехи CXL связаны именно c прогрессом в PCIe.
CXL — это открытый стандарт (новейшая спецификация — 3.1), разрабатываемый консорциумом CXL для межсоединения процессора и, соответственно, всего хоста с различными устройствами, например, акселераторами. На физическом уровне (Physical layer, PHY) CXL совместим с PCIe. Эффективное межсоединение AMD Infinity Fabric, используемое для связи чиплетов, EPYC и GPU от AMD [1], также базируется на PCIe PHY. CXL претендует на стандарт для связи с разными GPU (он применяется, например, в китайских GPU BR100). Но большинство производителей (Samsung, Micron и пр.) в качестве CXL-устройств разрабатывают расширители памяти.
При обсуждении CXL часто речь заходит о постоянной (persistent) памяти, которая ориентирована на уменьшение разрыва в скорости SSD и DRAM. Классический пример постоянной памяти — Intel Optane на базе созданной совместно с Micron технологии 3D Xpoint. Правда, для работы с этой памятью x86-процессору потребовалась специальная поддержка, а производство Optane оказалось экономически неэффективным и было прекращено в 2023 году.
Стандарт CXL поддерживает различные варианты использования посредством трех протоколов: CXL.io, CXL.cache и CXL.memory. Первый функционально эквивалентен PCIe и является базовым. Второй позволяет акселераторам получать эффективный доступ к памяти хоста и кэшировать ее для оптимизации производительности, а протокол CXL.memory позволяет процессору хоста получать доступ к подключенной к устройству памяти с помощью команд загрузки/сохранения и нужен для работы с памятью CXL, которая в терминологии стандарта CXL является устройством Типа 3. CXL-межсоединение обеспечивает поддержку когерентности кэша.
Сейчас процессоры AMD EPYC Zen 4 и масштабируемые процессоры Intel Xeon 4-го и 5-го поколений поддерживают стандарт CXL 1.1. Оба производителя стали поддерживать CXL еще до того, как эта память появилась на рынке. В CXL 2.0 обеспечивается возможность коммутации c образованием пулов памяти, и хост может получить доступ к одному или нескольким устройствам из пула. В CXL 3.1 c базированием на PCIe 6.0 несколько хостов могут совместно и согласованно использовать пространство памяти на устройстве, а для ожидаемого в 2025 году PCIe 7.0 предполагается разработка CXL 4.0.
В работе [2] были сформулированы три группы проблем, сделавшие CXL-память актуальной для серверов.
Рис. 1. Тенденция роста числа ядер, пропускной способности и емкости памяти на ядро |
Масштабирование числа ядер в процессорах опережает рост объема памяти на ядро и ее пропускной способности на ядро (рис. 1). Растет и число приложений, связанных с памятью. Производители процессоров пытаются решать эту проблему, увеличивая число каналов памяти на сокет, однако такая реализация достаточно сложна и удорожает процессор [2]. А увеличение объема памяти в варианте 2DPC (два модуля DIMM на канал) уменьшает пропускную способность DDR-памяти. Другие технологии упаковки памяти, например 3D-стекирование, экономически не эффективны [2]. Поддержка масштабируемыми процессорами Xeon 4-го поколения многослойной HBM-памяти (Xeon Max) имела свои ограничения [3] и в следующем поколении этих процессоров не реализована.
Разрыв в показателях оперативной и внешней памяти. Этот разрыв относится не только к емкости памяти, но и к величинам задержки. Согласно [2], отрасль не смогла экономически эффективно масштабировать емкость памяти в соответствии со спросом, и рабочие нагрузки с интенсивным использованием больших наборов данных могут требовать подкачку страниц и много операций ввода-вывода, что снижает производительность.
Увеличение совокупной стоимости владения для ЦОДов. Повышение запросов на емкость и пропускную способность оперативной памяти вызывает рост стоимости владения серверами, что отчетливо заметно для облаков, в которых сочетаются требования высокой производительности и низкой стоимости оборудования. В [4] отмечено, что ключевым фактором производительности и стоимости является оперативная память: стоимость DRAM может составлять 50% стоимости сервера в Microsoft Azure и 40% стоимости стойки в Meta (признана экстремистской организацией и запрещена в России. — Прим. ред.).
Память CXL хорошо подходит для решения проблем всех этих групп. CXL вводит семантику загрузки/сохранения, используя PCIe PHY на физическом уровне и позволяя увеличить как емкость, так и пропускную способность памяти при задержке доступа, сравнимой с DRAM-памятью удаленного домена NUMA в памяти сервера. Применение памяти CXL снижает TCO в ЦОДах относительно других конфигураций систем с аналогичными целевыми показателями производительности [2].
Добавление памяти CXL увеличивает общую емкость памяти одновременно с увеличением ее суммарной пропускной способности, так как для доступа здесь применяется CXL-межсоединение.
Для устройств CXL-памяти часто используются сокращения CMM (СXL memory module). Компания Samsung — один из главных лидеров разработки CMM, сначала создала устройство DRAM-памяти CMM-D, а в 2024 году анонсировала продукт CMM-B, содержащий до 8 устройств CMM-D с общей емкостью до 2 Тбайт, пропускной способностью до 60 Гбайт/с и задержкой 596 нс [5]. Задержка NVMe — это несколько мкс, сквозная задержка PCIе 5.0 составляет 120–140 нс, а задержка DDR5 меньше 20 нс. Samsung ориентирует свои решения в первую очередь на приложения ИИ, базы данных в оперативной памяти и аналитику данных.
Что касается производительности памяти CXL, то имеющиеся открытые данные обычно относятся к эмуляции устройств и сильно отличаются от реальных [6]. Первые реальные показатели производительности охватывали микротесты и производительность приложений [6, 7] и проводились с CMM разных производителей с применением масштабируемых Xeon 4-го поколения или EPYC Zen 4, однако без указания конкретных разработчиков.
Реальные данные на макроуровне появились для CMM от Micron [2] совсем недавно.
В [2] для анализа производительности использовался однопроцессорный сервер с EPYC 9754 Bergamo, имеющий 128 ядер и ориентированный в первую очередь на облачные технологии. Процессор поддерживает 12 каналов DDR5-4800, к которым присоединялось по одному DIMM от Micron емкостью по 64 Гбайт (конфигурация А) или 96 Гбайт (конфигурация B), что в сумме дает общую память емкостью 768 или 1152 Гбайт соответственно.
Рис. 2. Блок-схема CMM Micron CZ120 c процессором AMD EPYC Bergamo |
Через сконфигурированные в EPYC на работу по CXL линии шины PCIe 5.0 x8 подсоединялись четыре CMM CZ120 от Micron емкостью по 256 Гбайт (рис. 2). Это отражается в росте емкости общей памяти и пропускной способности на ядро (см. таблицу). Приведенные данные хорошо иллюстрируют последствия дополнительного подключения памяти CXL. Авторы [2] считают, что надо рассматривать такую память как промежуточный уровень иерархии, находящийся между оперативной и внешней памятью.
Для анализа данных производительности, полученной с использованием CMM, необходимо учитывать, что современные серверные процессоры AMD и Intel построены с применением чиплетов (образующих единый процессор из нескольких многоядерных кристаллов), что уже приводит к NUMA, неоднородному доступу к оперативной памяти. Это, соответственно, имеет место уже на одном сокете, что именуется NPS (NUMA Per Socket).
Приложение может вообще игнорировать наличие NUMA у процессора, но это в некоторых случаях понижает достигаемую производительность. В памяти СXL, в соответствии с ee характерными показателями производительности и с конфигурацией (рис. 2), NUMA проявляется гораздо ярче. CMM может существенно отличаться от оперативной памяти и задержкой, и пропускной способностью. Соответственно для лучшей производительности здесь важнее учитывать NUMA.
Рис. 3. Сервер с процессором в конфигурации NPS4 |
На рис. 3 приведена блок-схема процессора EPYC, где CCD (Core Complex Die) и есть многоядерный кристалл — приведен вариант NPS4, когда в процессоре сформированы четыре домена NUMA и для каждого выделены наиболее близкие и, соответственно, ставшие более высокоскоростными DIMM (хотя все DIMM общие для всех ядер). Аналогично можно сконфигурировать вариант NPS2 с выделением двух доменов или NPS1 с только одним общим доменом памяти на процессор. Память CXL (все четыре CMM) образуют еще один домен NUMA, в котором нет процессорных ядер. Работа с доменами NUMA давно является стандартной возможностью Linux, и эта память CXL не вносит новых особенностей.
Для оценки изменения производительности за счет подключения CXL применялись тесты TPC-H с СУБД MS SQL, а также платформа Apache SPARC, использовавшаяся для машинного обучения с линейным методом SVM, стандартным для крупномасштабных задач классификации. Кроме того, из области HPC использовано мини-приложение CloverLeaf решения сжимаемого уравнения Эйлера на декартовой сетке.
Для TPC-H было найдено, что сочетание локальных модулей DDR 64 Гбайт с CXL-памятью дает производительность в 1,6 раза выше, чем конфигурация только с модулями DDR 96 Гбайт, и обеспечивает насыщение производительности ускорения запросов при 16 или 20 параллельных потоках рабочей нагрузки по сравнению с насыщением уже на 8 потоках для локальной DDR-памяти. Таким образом, память CXL вместо замены модулей DDR емкостью 64 Гбайт на 96 Гбайт может помочь в расширении емкости и снижении TCO, хотя результаты сильно зависят от варианта применения NVMe [2].
Для мини-приложения CloverLeaf производительность лимитируется пропускной способностью памяти. Максимальная производительность CloverLeaf достигается при NPS4, а при добавке четырех CMM она увеличивается на 17%.
Для SPARC ML SVM рост производительности связан просто с увеличением емкости памяти, поэтому здесь применялась настройка NPS1. По сравнению с конфигурацией А с более низкой емкостью памяти исходного сервера переход на конфигурацию B (c заменой модулей DIMM на большие емкости по 96 Гбайт) увеличивает производительность в 1,61 раза, а дополнительный рост емкости памяти за счет добавления еще CMM (см. таблицу) — уже в 2,67 раза.
Но к этим привлекательным для CXL результатам [2] надо также добавить, что, естественно, эти тесты специально были выбраны как выгодные для памяти CXL.
***
Вполне вероятно, что память CXL в ближайшем будущем станет решением современных проблем с памятью в серверах. Конечно, это важно только для определенных областей применения серверов и не станет универсальным способом ликвидации всех проблем с памятью. Кроме этого, оценить реально достигаемый эффект можно будет только после начала массовых поставок памяти CXL.
Литература
1. Михаил Кузьминский. «Альдебаран» — новая звезда на небосклоне GPGPU //Открытые системы. СУБД. — 2022. — № 2. — С. 8–13. URL: https://www.osp.ru/os/2022/02/13056179 (дата обращения: 21.06.2024).
2. Petrucci V. et al. CXL Memory Expansion: A Closer Look on Actual Platform (2023) https://www.micron.com/content/dam/micron/global/public/products/white-paper/cxl-memory-expansion-a-close-look-on-actual-platform.pdf
3. Михаил Кузьминский. Процессоры c памятью HBM — вместо или вместе с GPU? //Открытые системы. СУБД. — 2024. — № 1. — С. 8–10. URL: https://www.osp.ru/os/2024/01/13058257 (дата обращения: 21.06.2024).
4. Li H. et al. Pond: Cxl-based memory pooling systems for cloud platforms // Proceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Vol. 2. — 2023. — С. 574–587.
6. Sun Y. et al. Demystifying cxl memory with genuine cxl-ready systems and devices // Proceedings of the 56th Annual IEEE/ACM International Symposium on Microarchitecture. — 2023. — С. 105–121.
7. Liu J. et al. Exploring and Evaluating Real-world CXL: Use Cases and System Adoption // arXiv preprint arXiv:2405.14209. — 2024.
Михаил Кузьминский (kus@free.net) — старший научный сотрудник, Институт органической химии РАН (Москва).
DOI: 10.51793/OS.2024.71.91.002