Одна из самых горячих тем серверного сегмента, которая стала особенно актуальной в 2022 году, – интерфейс Compute Express Link, или CXL. Мы узнали о CXL в 2019 году, когда он был впервые анонсирован. В основу проекта легли усилия Intel, направленные на расширение отраслевого консорциума, условия для реализации которых сложились в 2022 году, когда мы вступили в эру PCIe Gen5. Тем не менее, многие еще не в курсе, что такое CXL, и мы попробуем объяснить это.
Compute Express Link – это кэш-когерентный интерфейс, позволяющий повысить эффективность работы вычислительных систем, особенно с ускорителями. CXL занимает верхний уровень в инфраструктуре PCIe Gen5. К системе могут быть подключены устройства PCIe Gen5, но многие устройства PCIe Gen5 (или PCIe 5.0) поддерживают опциональное использование линий интерфейса в режиме PCIe или CXL. В некоторых аспектах это аналогично использованию процессорами AMD EPYC своих линий I/O как соединений PCIe или Infinity Fabric. Только теперь подобное решение предлагается не в рамках экосистемы конкретного производителя, а как общий отраслевой стандарт. Ключевое преимущество CXL – в том, что он позволяет объединять и распределять оперативную память между несколькими различными подключенными устройствами, о которых речь пойдет ниже.
В этой статье основное внимание уделяется совместному использованию памяти. Память – это ключевой драйвер современных дата-центров, поскольку компании-гиперскейлеры понимают, что почти любое современное устройство оснащается встроенной памятью и память, с одной стороны, сильно влияет на стоимость, а с другой – часто оказывается в дефиците по мере использования ее подключенными устройствами. На системном уровне CXL представляет собой инструмент, обеспечивающий эффективное использование памяти одновременно несколькими устройствами. В этой статье мы обсуждаем эту возможность применительно к серверам, но нет никаких препятствий к тому, чтобы не использовать ее также в других областях.
Дожидаться эры PCIe 5.0, чтобы начать широко внедрять CXL, пришлось по ряду причин. Во-первых, нужно учесть сроки выпуска аппаратного обеспечения самого CXL, который был анонсирован в 2019 году, что подразумевало появление первого поколения чипов с поддержкой CXL не ранее конца 2021 – начала 2022 года.
Однако ключевым катализатором внедрения CXL стало быстрое распространение PCIe Gen5. Переход отрасли с PCIe Gen3 на Gen4 занял около семи лет. Процесс перехода с Gen4 на Gen5 продолжается уже примерно три года. Переход на Gen5 означает двукратное увеличение пропускной способности интерфейса по сравнению с PCIe Gen4. Поскольку иерархический уровень CXL лежит выше уровня PCIe Gen5, мы обычно имеем контроллер с интерфейсом 32 GT/s x16, но CXL также поддерживает бифуркацию (разделение) линий по восемь и по четыре (x8 и x4). Также поддерживаются опции выделения одной и двух линий (x1 и x2) в режиме под названием “Degraded”. Важно иметь в виду, что пропускной способности интерфейса PCIe Gen5 x4 достаточно для поддержания скорости соединения 100 GbE, то есть на уровне пропускной способности PCIe Gen3 x16 – опции интерфейса, которая использовалась в топовых предложениях Intel еще в первом квартале 2021 года.
Такое увеличение пропускной способности PCIe означает возможность поддержки принципиально новых сценариев, в частности – удаленной работы с памятью посредством команд load/ store (извлечение данных из памяти/ запись в память), для которых предыдущие поколения PCIe не обладали достаточной скоростью.
Итак, можно выделить три основные причины, по которым внедрение CXL не произошло раньше. Во-первых, нужны были скорости PCIe Gen5. Во-вторых, нужно было создать CXL. И в-третьих, нужно было время на принятие его отраслью. Теперь же, когда у нас есть все три составляющие, широкое внедрение CXL – вопрос ближайшего будущего.
CXL использует три основных протокола.
Поддержка протокола CXL.io для подключаемого устройства является обязательной, но отсюда следует, что вообще возможны три комбинации поддерживаемых протоколов CXL, где в дополнение к CXL.io идет CXL.cache и/или CXL.mem. Таким образом, устройства CXL бывают трех типов: Type 1 (CXL.io + CXL.cache), Type 2 (все три протокола) и Type 3 (CXL.io + CXL.mem).
Устройство Type 1 можно представить как ускоритель типа сетевой карты, имеющий прямой доступ к памяти хоста. Type 2 – это ускоритель типа графического со своей памятью, при этом GPU имеет доступ к хост-памяти, а хост-процессор – к памяти GPU. Устройство Type 3 можно представить как специальный модуль памяти, основное назначение которого – предоставлять пространство CXL-памяти хост-процессору.
Большинство устройств, выпущенных в начале 2022 года, используют версию CXL 1.1. Они работают в системных топологиях под управлением хост-процессора, где CXL используется внутри системы. Версия CXL 2.0 предлагает действительно интересные сценарии. В CXL 2.0 мы получаем опцию CXL-коммутирования. Возможность CXL-коммутирования и создания пулов памяти позволяет нескольким хостам и устройствам подключаться коммутатору, после чего устройства могут «привязываться», целиком или в виде виртуальных логических блоков, к разным хостам. CXL 2.0 открывает принципиально новые сценарии развертывания серверов.
Помимо коммутирования и создания пулов памяти, CXL 2.0 предлагает дополнительные уровни безопасности протоколов.
Версии CXL 1.0/ 1.1 положили начало использованию новой технологии, в то время как CXL 2.0 радикально меняет ландшафт CXL, делая возможным появление новых серверных архитектур и вариантов развертывания. CXL 1.1 можно считать необходимым минимумом для сценариев с использованием ускорителей и GPU. CXL 2.0, при соответствующем усовершенствовании программного обеспечения, действительно может революционизировать серверный сегмент.
Источник: www.servethehome.com