Шина PCIe появилась в 2002 году и с тех пор стала основой почти любой вычислительной техники: от ноутбуков до ИИ-кластеров и суперкомпьютеров. Но в крупных серверных системах у неё есть слабые места: нехватка линий, некогерентный доступ к ресурсам, затухание сигнала и закрытая архитектура. Из-за этого владельцы дата-центров ищут более гибкие платформы. Одна из них — Compute Express Link, или CXL. Ниже разберём, как он устроен, какие у него бывают версии и чем он отличается от PCIe.
Что такое CXL
Compute Express Link — открытый стандарт межсоединения, который в 2019 году появился при участии корпорации Intel. В консорциум вошли и другие крупные производители: Alibaba, Cisco, Dell, Meta, Google, HPE, Huawei и Microsoft. Главная задача CXL — быстрая связь между процессором и устройствами с большой ёмкостью памяти, поэтому он особенно востребован в высокопроизводительных вычислениях (HPC) и дата-центрах.
Интересно, что за основу взят PCIe, формально конкурирующий закрытый стандарт. От него CXL унаследовал последовательный интерфейс и ряд протоколов передачи данных, а сверху добавил своё: блочный протокол ввода/вывода и новые протоколы доступа к системной памяти, которые обеспечивают последовательную связь и объединение устройств. В результате память разных типов можно собрать в единую систему и обойти ограничения, которые накладывает обычная память DIMM.
Как это работает на практике
Принцип проще всего показать на трёх сценариях:
- Обычная задача. Процессор получает работу, которую выгоднее отдать ускорителю, и посылает запрос по CXL. Ускоритель берёт нужные данные из когерентной памяти, выполняет расчёт и возвращает результат процессору тем же путём.
- Виртуальные машины. CXL передаёт задачи с CPU на ускоритель, закреплённый за конкретной виртуальной машиной. Ускоритель общается с ней напрямую, выполняет задачи и обменивается данными, не обращаясь к центральному процессору.
- Контейнеры. Несколько контейнеров могут совместно использовать один ускоритель. Процессор по-прежнему работает с ним через CXL, а сам ускоритель взаимодействует с контейнерами аналогично — без обращений к CPU.
Три протокола CXL
У интерфейса три протокола передачи данных:
| Протокол | Назначение |
|---|---|
| CXL.io | Универсальный протокол на основе PCIe 5.0 с модификациями: настройка, инициализация, обнаружение устройств, прямой доступ к памяти и регистрам ввода/вывода, когерентные сигналы загрузки/сохранения. По функциям фактически повторяет PCIe. |
| CXL.cache | Определяет взаимодействие хоста и устройства: периферия получает согласованный доступ к памяти процессора и кэширует данные с низкой задержкой. |
| CXL.mem | Даёт центральному процессору согласованный доступ к памяти, подключённой к устройству, командами ввода/вывода — как для оперативной, так и для флеш-памяти. |
Благодаря этому набору CXL организует доступ к памяти, минуя прямое обращение к процессору, что снижает задержки и повышает производительность. Данные могут кэшироваться и процессором, и вычислительными ускорителями. Раньше в устройствах PCIe память не несла серьёзной нагрузки, а CXL позволяет задействовать вычислительные ресурсы самой памяти и повышает общую эффективность инфраструктуры.
Три типа CXL-устройств
Устройства, поддерживающие протоколы CXL, делятся на три типа.
Тип 1: ускорители без собственной памяти
Используют протоколы CXL.io и CXL.cache. Это различные сопроцессоры и умные сетевые карты SmartNIC. Такие устройства получают контентный доступ к оперативной памяти CPU и кэшируют данные при обработке.
Тип 2: ускорители со встроенной памятью
Поддерживают CXL.io, CXL.cache и CXL.mem. Примеры — чипы GPU, ASIC и FPGA. Они могут сами обращаться к оперативной памяти хоста и предоставлять собственную память процессору, предварительно кэшируя данные. Получается адаптивная вычислительная система.
Тип 3: расширители памяти
Работают по CXL.io и CXL.mem. Собственных вычислительных ресурсов у них нет, зато они дают процессору кешируемый доступ к дополнительной оперативной или персистентной памяти.
Все три типа совместимы со стандартным набором PCIe-устройств, что расширяет круг решений, которые можно встроить в современные системы.
Версии стандарта
С 2019 года вышло шесть версий CXL. Они различаются характеристиками, функциями и особенностями.
CXL 1.0 (2019)
Первая версия построена на PCIe 5.0 и рассчитана на скорость передачи до 32 ГТ/с. Любопытно, что в 2019 году PCIe 5.0 был сугубо нишевым интерфейсом, но авторы CXL сразу заложили в основу один из самых перспективных стандартов. Версия даёт аппаратную когерентность памяти между CPU и ускорителями (через CXL.cache и CXL.mem), а базовое управление устройствами выполняется через CXL.io. Задержки низкие — до 100 нс, плюс полная совместимость с устройствами PCIe 5.0, что делает её удобной для синхронизации данных в задачах ИИ и HPC.
Минус: нет поддержки коммутации и объединения памяти, поэтому такие системы трудно масштабировать.
CXL 1.1
Доработанный вариант первой версии, ставший первой по-настоящему успешной спецификацией. Поскольку CXL 1.0 была ранней, тестовой, более широко распространилась именно 1.1. В неё добавили расширенное управление памятью (динамическое выделение ресурсов, оптимизацию кэширования), улучшили стабильность и ввели поддержку гибридных коммутаторов, например XConn Apollo Switch XC50256, что упростило встраивание CXL-устройств в существующую инфраструктуру. Примером служат экспандеры памяти Smart Modular Technologies с CXL 1.1, увеличивающие объём оперативной памяти до 4 ТБ. Процессоры AMD EPYC 9004 также поддерживают CXL 1.1.
Ограничения: возможности коммутаторов невелики, поэтому сложные топологии из множества устройств не построить; нет горячей замены, что снижает гибкость и отказоустойчивость; не поддерживается энергонезависимая память PMEM.
CXL 2.0 (2020)
Ключевые новшества:
- коммутация до 16 устройств на один хост;
- поддержка энергонезависимой памяти, например Intel Optane;
- шифрование данных по алгоритму CXL IDE;
- объединение памяти в пулы для лучшего масштабирования.
Гибридные коммутаторы позволяют снизить стоимость владения инфраструктурой и собрать гибридную память объёмом до нескольких сотен ТБ — это полезно для ИИ-задач. Шифрование, однако, увеличивает задержки, что может сказаться на производительности некоторых систем.
Именно CXL 2.0 поддерживает самый широкий круг устройств: от флагманских Intel Xeon 6700–6900 и AMD EPYC 9004/9005 Turin до бюджетных экспандеров LR-Link LRDR9G91-2I и гибридных модулей Samsung CMM-H (сочетание DRAM, флеш-памяти, ARM CPU и FPGA).
CXL 3.0 (2022)
Эта версия опирается на PCIe 6.0 и поддерживает до 64 ГТ/с. Её отличия:
- многоуровневая коммутация с одноранговым доступом между устройствами;
- расширенная когерентность памяти;
- до 4096 устройств в единой системе — для огромных кластеров;
- прямое взаимодействие с ускорителями, которое заметно разгружает центральный процессор.
Цена такой гибкости — сложность внедрения в готовую инфраструктуру и повышенные требования к администрированию. На сайте консорциума CXL нет данных об устройствах с поддержкой CXL 3.0. Но с учётом приближающихся IT-конференций и ожидаемых анонсов AMD и Nvidia можно предположить, что там покажут решения с CXL 3.0 и 3.1. В качестве иллюстрации возможностей: вычислительная нода, целиком состоящая из модулей памяти, возможна благодаря интерфейсам CDFP (CXL 3.0) и CXL-коммутаторам. Система из 96 модулей DIMM DDR5 даёт до 24 ТБ памяти.
CXL 3.1 (2023)
Минорное обновление CXL 3.0, оптимизированное под лучшую работу и совместимость с решениями на PCIe 6.0. К устройствам CXL 3.1 относятся, например, FPGA AMD Versal Premium Series Gen 2 с улучшенной энергоэффективностью и собственной памятью с пропускной способностью 250 ГБ/с. Главное нововведение — энергоэффективность выше на 15–20% по сравнению с CXL 3.0, а также совместимость с новейшими чипсетами. Недостаток — узкая специализация: поддерживаются лишь определённые типы устройств, что мешает массовому применению.
CXL 3.2 (конец 2024)
Новейшая на сегодня версия. В ней:
- обновлённый модуль мониторинга горячих страниц CXL (CHMU) для многоуровневой памяти;
- расширенные функции управления CXL-устройствами для оптимизации приложений и ОС;
- улучшенная безопасность: интеграция протокола TSP и расширенная защита IDE.
По сути, это минорное улучшение CXL 3.1 без принципиально новых решений, но с полной обратной совместимостью с прежними версиями. Разработчики постепенно обкатывают новые функции и стремятся довести третье поколение до идеала, чтобы стандарт было выгодно встраивать в новейшие чипы крупнейших ИТ-брендов.
CXL и PCIe: в чём разница
Оба интерфейса высокоскоростные, но сценарии у них принципиально разные. CXL работает поверх физического уровня PCIe 5.0/6.0 и добавляет когерентность памяти. Благодаря ей CPU, GPU, FPGA и другие ускорители делят общие ресурсы памяти без лишнего копирования данных. Для ИИ, машинного обучения и HPC это критично. CXL нацелен на снижение задержек и согласованный доступ к памяти, устраняя узкие места в гетерогенных средах, где обычные PCIe-устройства не могут синхронизировать кэш.
PCIe, в свою очередь, остаётся универсальной шиной для подключения периферии: видеокарт, SSD, сетевых карт, особенно в потребительском сегменте. Скорее всего, стандарты будут жить параллельно: PCIe в пользовательских решениях, CXL — в коммерческом сегменте с масштабируемыми кластерами.
Альтернативные технологии, вошедшие в CXL
Существовали и другие открытые межсоединения с хорошими перспективами, но они были поглощены консорциумом CXL.
- CCIX (Cache Coherent Interconnect for Accelerators). Обеспечивал когерентность между CPU и сторонними ускорителями (FPGA, GPU) через PCIe 4.0 и симметричную модель когерентности, позволяя собирать в одной системе компоненты разных производителей. После появления CXL 3.0 часть его функций вошла в экосистему CXL, и конкурентоспособность CCIX снизилась.
- Gen-Z. Ориентировался на масштабирование памяти на уровне серверных стоек и ЦОД: семантика памяти для прямого доступа к распределённым пулам с низкой задержкой, меньше перемещений данных и энергопотребления. К 2021 году Gen-Z прекратил самостоятельное развитие и передал спецификации консорциуму CXL.
- OpenCAPI (Open Coherent Accelerator Processor Interface). Интерфейс IBM для систем POWER с пропускной способностью до 25 ГБ/с на канал и когерентностью между CPU и ускорителями. В 2022 году его тоже влили в CXL, из-за чего самостоятельно он применяется ограниченно.
Выводы и практика выбора платформы
Пока CXL распространён заметно меньше PCIe, но стандарт активно развивается, и всё больше технологичных компаний закладывают его в свои устройства. Не за горами момент, когда он вытеснит PCIe из коммерческого сегмента и закроет потребности кластерных систем. Впрочем, конкуренты не дремлют: появляются новые игроки с более интересным функционалом, рассчитанным как на нынешние, так и на будущие вычислительные системы, включая даже пользовательские устройства.
Что это значит при выборе серверного железа:
- Если вам нужно расширять память без смены платформы, смотрите на процессоры с поддержкой CXL 1.1 и 2.0 — например, AMD EPYC 9004/9005 и Intel Xeon 6700–6900.
- Для экспериментов с экспандерами памяти и пулами достаточно CXL 2.0: именно под него сегодня больше всего устройств.
- Версии 3.x пока рассматривайте как задел на будущее — подтверждённых устройств с CXL 3.0 в списках консорциума нет.
Подобрать платформу под ваши задачи можно в разделах «Серверы» и «ИИ-серверы», а специалисты «СервакМастер» помогут собрать конфигурацию — достаточно написать нам через страницу контактов.
