Проблема эффективной организации многоядерных и многоузловых вычислительных систем известна давно. Даже специально разработанные для этой цели интерконнекты и шины вроде InfiniBand не всегда справляются в достаточной мере. Консорциум CXL видит решение проблемы в развитии одноимённого стандарта, Compute Express Link, использующего PCI Express в качестве основы. Его первая версия увидела свет в марте 2019 года, и всё это время он активно развивался. Теперь официально опубликованы спецификации версии CXL за номером 2.0.
Изначально шина PCI Express — довольно простая система, обычно предусматривающая соединение хост-устройства и клиента по типу «точка-точка». Но для сложных многоузловых вычислительных комплексов таких возможностей явно недостаточно и в CXL реализованы различные протоколы «общения», оптимизированные с учётом трёх видов задач: ввода-вывода (IO), кеширования (Cache) и доступа к памяти (Memory).
Вернее, эта тройственная специализация была описана ещё в старых версиях стандарта CXL, но в версии 2.0 стандарт был существенно доработан. В основе CXL 2.0 по-прежнему лежит PCI Express 5.0 и изменений в скоростных показателях и латентности нет, но протокол получил поддержку коммутирования и шифрования. Также он теперь может работать с устройствами класса persistent memory, такими как память 3D XPoint.
Коммутаторы — важная часть экосистемы PCI Express, такие чипы позволяют искусственно расширять количество доступных линий шины. Конечно, ограничителем пропускной способности всё равно является «восходящий» канал, но, к примеру, ускорители в такой системе благодаря коммутатору могут общаться и между собой, минуя головное устройство.
В CXL 2.0 реализована полная поддержка коммутации, включая возможность расширения системы за счёт подключения дополнительных коммутаторов, допустима работа клиентских и хост-устройств как в режиме 1:1, так и с несколькими хостами сразу, вплоть до 16. При этом поддерживаются средства обеспечения качества обслуживания (QoS). Пока реализована лишь плоская модель коммутации, однако в планах разработчиков CXL присутствует и внедрение многоуровневой модели.
За последние несколько лет популярность устройств класса persistent memory (PMEM) сильно возросла, поскольку энергонезависимая память стала по-настоящему массовой, а кроме того, появились такие решения, как Intel Optane DC Persistent Memory, не слишком уступающие в производительности классической DRAM, но при этом обладающие всеми преимуществами NAND.
Поддержка устройств типа PMEM стала интегральной частью CXL 2.0, и теперь ресурсы такого типа могут объединяться в пулы, доступные в рамках логики CXL.memory. Подобные пулы в CXL-комплексах займут промежуточное место между пулами DRAM и массивами SSD-накопителей, доступ к ним полностью стандартизирован и не зависит от производителя конечных устройств.
Ранние версии CXL не поддерживали какого-либо единого стандарта шифрования, а значит, такая система межсоединений не была по-настоящему безопасной. В версии 2.0 такая поддержка появилась. Она является опциональной, но теперь силами интегрированных в контроллеры CXL 2.0 криптоускорителей шифроваться может любой канал передачи данных в рамках CXL-комплекса.
Использование шифрования может влиять на показатели латентности, однако величина такого «пенальти» зависит от конкретного сценария использования и возможностей контроллеров CXL. При необходимости минимизации задержек поддержку шифрования в системе CXL 2.0 можно будет отключить.
Нововведения, представленные в CXL 2.0, соответствуют современным тенденциям в мире высокопроизводительных вычислений. В частности, реализация поддержки коммутации CXL говорит о том, что разработчики стандарта хорошо знакомы с концепцией дезагрегации серверных ресурсов. Что касается физической модели, то здесь отклонений от PCI Express 5.0 не планируется. Все устройства с поддержкой CXL смогут работать и в «чистом» режиме PCIe, хотя, возможно, с утратой некоторых возможностей.
Говорить о рыночных перспективах CXL пока рано, хотя бы потому, что даже реализация 1.0/1.1 требует поддержки PCI Express 5.0, а таких систем на рынке пока нет. Процессоры Intel Sapphire Rapids должны получить такую поддержку, но ожидать их стоит не ранее 2021 года. Ознакомиться подробнее со спецификациями CXL 2.0 можно, отправив запрос по этой ссылке.