Шина 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 из коммерческого сегмента и закроет потребности кластерных систем. Впрочем, конкуренты не дремлют: появляются новые игроки с более интересным функционалом, рассчитанным как на нынешние, так и на будущие вычислительные системы, включая даже пользовательские устройства.

Что это значит при выборе серверного железа:

  1. Если вам нужно расширять память без смены платформы, смотрите на процессоры с поддержкой CXL 1.1 и 2.0 — например, AMD EPYC 9004/9005 и Intel Xeon 6700–6900.
  2. Для экспериментов с экспандерами памяти и пулами достаточно CXL 2.0: именно под него сегодня больше всего устройств.
  3. Версии 3.x пока рассматривайте как задел на будущее — подтверждённых устройств с CXL 3.0 в списках консорциума нет.

Подобрать платформу под ваши задачи можно в разделах «Серверы» и «ИИ-серверы», а специалисты «СервакМастер» помогут собрать конфигурацию — достаточно написать нам через страницу контактов.