Хоча технічно це ще новинка, стандарт Compute Express Link (CXL) для підключення хост-пристрій (host-to-device) швидко почав завойовувати популярність на ринку серверів. А після анонсу припинення розробки та випуску пристроїв Intel Optane не залишилося альтернатив у перспективних інтерконнектах на основі високошвидкісного введення-виведення.
Розроблений, щоб запропонувати багатий набір функцій вводу-виводу, заснований на існуючих стандартах PCI-Express, у першу чергу когерентність кешу між пристроями, CXL готується до використання: від кращого підключення CPU до прискорювачів у серверах і можливості підключення пам'яті DRAM і енергонезалежної пам'яті до того, що фізично все ще є інтерфейс PCIe. Це амбітна та, проте, широко підтримана всіма основними гравцями дорожня карта, яка за три короткі роки зробила CXL де-факто передовим стандартом інтерконнектів, що призвело до появи конкуруючих стандартів Gen-Z, CCIX і OpenCAPI вибули зі змагання.
І хоча CXL фактично здобув перемогу у війнах інтерконнектів, консорціум і його члени мають зробити ще багато роботи. Тобто це стандарт майбутнього, перевага якого буде помітною приблизно через 3–4 роки. Що стосується продуктів, то серверні процесори x86 архітектури з CXL практично ще не поставляються - в основному це залежить від того у якому вигляді вийдуть нові процесори Intel Sapphire Rapids і які будуть задавати моду у майбутньому (а можливо і процесори AMD Genoa). З точки зору функціональності постачальники пристроїв вимагають більшої пропускної спроможності та додаткових функцій, ніж у початкових версіях CXL 1.Х.
На конференції Flash Memory Summit 2022 консорціум CXL анонсував наступну повну версію стандарту CXL - CXL 3.0. Слідом за стандартом 2.0, який був випущений наприкінці 2020 року та представив такі функції, як об'єднання пам'яті та комутатори CXL, CXL 3.0 фокусується на значних поліпшеннях у кількох критичних сферах інтерконнектів. Першим є фізична сторона, де CXL подвоює пропускну здатність на смугу до 64 ГТ/с (256ГБ/с). Тим часом, з точки зору логіки, CXL 3.0 значно розширює логічні можливості стандарту, дозволяючи створювати складні топології та структури з'єднань, а також гнучкіше спільне використання пам'яті та режими доступу до пам'яті у групі пристроїв CXL.
Починаючи з фізичних аспектів CXL, нова версія стандарту містить довгоочікуване оновлення, що включає шину PCIe 6.0. Обидві попередні версії CXL, тобто 1.x та 2.0, були побудовані на основі шини PCIe 5.0, тому з моменту появи CXL у 2019 році його фізичний рівень було оновлено вперше.
Сам по собі стався серйозний апдейт внутрішньої роботи стандарту PCI-Express, PCIe 6.0 ще раз подвоїв пропускну здатність, доступну по шині, до 64 ГТ/с, що для картки x16 становить 128 ГБ/с. Це було досягнуто за рахунок переходу PCIe від використання кодування з двійкової сигналізації (NRZ) до сигналізації з чотирма станами (PAM4) та включення інтерфейсу з фіксованими пакетами (FLIT), що дозволило подвоїти швидкість без недоліків роботи на більш високих частотах. Оскільки CXL, у свою чергу, побудований на основі PCIe, це означало, що стандарт потрібно було оновити, щоб врахувати операційні зміни PCIe.
Кінцевим результатом для CXL 3.0 є те, що він успадковує покращення повної пропускної спроможності PCIe 6.0, а також всі основні функції, такі як попереджувальна корекція помилок (FEC), що подвоює загальну пропускну здатність CXL порівняно з CXL 2.0.
Примітно, що за даними консорціуму CXL, їм вдалося досягти цього без збільшення затримки. Це була одна з проблем з якою PCI-SIG зіткнулася при розробці PCIe 6.0, оскільки необхідне виправлення помилок збільшувало затримку процесу, внаслідок чого PCI-SIG використовував форму кодування FEC із малою затримкою. Тим не менш, CXL 3.0 робить ще один крок уперед у спробі зменшити затримку, внаслідок чого затримка 3.0 така сама, як у CXL 1.x/2.0.
Крім базового оновлення PCIe 6.0, консорціум CXL також змінив розмір FLIT. У той час, як CXL 1.x/2.0 використовував відносно невеликий 68-байтовий пакет, CXL 3.0 збільшив його до 256 байт. Набагато більший розмір FLIT є одним із ключових змін зв'язку з CXL 3.0, оскільки він дає стандарту набагато більше бітів у заголовку FLIT, які у свою чергу, необхідні включення складних топологій і структур, які вводить стандарт CXL 3.0. Хоча як додаткова функція CXL 3.0 також пропонує «варіантний» режим FLIT з малою затримкою, який розбиває CRC на 128-байтові «гранулярні передачі суб-FLIT», які призначені для зменшення накладних витрат на зберігання та пересилання на фізичному рівні.
Так само примітно, що розмір FLIT 256 байт забезпечує сумісність CXL 3.0 з PCIe 6.0, який сам використовує FLIT 256 байт. Як і базовий фізичний рівень, CXL підтримує використання великого FLIT не тільки з новою швидкістю передачі 64 ГТ/с, але також зі швидкостями 32, 16 і 8 ГТ/с, що дозволяє використовувати нові функції протоколу з нижчою швидкістю передачі.
Читайте також: Нова платформа VMware vSAN 8 - швидше, ефективніше та надійніше!
Нарешті, CXL 3.0 повністю об'єднаний з попередніми версіями CXL. Таким чином, пристрої та хости можуть при необхідності перейти на більш ранню версію, щоб відповідати решті апаратного ланцюжка, хоча при цьому втрачаються нові функції та швидкості.
Можливості CXL 3.0: покращена узгодженість, спільне використання пам'яті, багаторівневі топології та структури
Крім подальшого поліпшення загальної пропускної спроможності введення-виведення, вищезазначені зміни протоколу CXL також були реалізовані для включення нових функцій у рамках цього стандарту. CXL 1.x народився як відносно простий стандарт зв'язку хост-пристрій, але тепер, коли CXL є домінуючим протоколом інтерконнекту пристроїв для серверів, йому необхідно розширити свої можливості як для підтримки більш просунутих пристроїв, так і, зрештою, для більш широкого випадку його використання.
Почавши з рівня функцій, найбільша зміна полягає в тому, що стандарт оновив протокол когерентності кешу для пристроїв з пам'яттю (тип 2 і тип 3, мовою CXL). Розширена узгодженість, як її називає CXL, дозволяє пристрої анулювати дані, кешовані хостом. Це замінює заснований на упередженості підходу когерентності, що використовувався в ранніх версіях CXL, який, для стислості, підтримував узгодженість не стільки за рахунок спільного управління простором пам'яті, скільки за рахунок того, що хост або пристрій відповідали за керування доступом. Зворотне анулювання, навпаки, набагато ближче до справжнього поділяється/симетричного підходу, що дозволяє пристроям CXL інформувати хост, коли пристрій вносить зміни.
Увімкнення зворотного анулювання також відкриває двері нових однорангових з'єднань між пристроями. CXL 3.0 пристрої тепер можуть безпосередньо звертатися до пам'яті один одного без необхідності проходити через хост, використовуючи розширену семантику когерентності для інформування один одного про свій стан. Пропуск хоста не тільки швидше з погляду затримки, але й у налаштуванні за участю комутатора означає, що пристрої не споживають дорогоцінну смугу пропускання між хостом та комутатором своїми запитами. І хоча ми перейдемо до топологій трохи пізніше, ці зміни йдуть пліч-о-пліч з більшими топологіями, дозволяючи організовувати пристрої у віртуальні ієрархії, де всі пристрої в ієрархії спільно використовують домен узгодженості.
Поряд із налаштуванням функціональності кешу в CXL 3.0 також представлені деякі важливі оновлення для спільного використання пам'яті між хостами та пристроями. У той час як CXL 2.0 пропонував пул пам'яті при якому кілька хостів могли отримати доступ до пам'яті пристрою, але кожному повинен був бути призначений свій виділений сегмент пам'яті, CXL 3.0 вводить сумісне використання пам'яті. Використовуючи нову покращену семантику когерентності, кілька хостів можуть мати узгоджену копію загального сегмента зі зворотною недійсністю, яка використовується для синхронізації всіх хостів, якщо щось зміниться на рівні пристрою. Однак слід зазначити, що це не повністю замінює використання пулів. Все ще існують випадки використання, коли об'єднання в стилі CXL 2.0 було б кращим (підтримка узгодженості вимагає компромісів), а CXL 3.0 підтримує змішування та зіставлення двох режимів за необхідності.
Ще більше розширюючи цю покращену функціональність хост-пристрою, CXL 3.0 усуває попередні обмеження кількості пристроїв типу 1/типу 2, які можуть бути підключені до одного кореневого порту CXL. У той час, як CXL 2.0 допускав наявність тільки одного з цих пристроїв обробки після кореневого порту, CXL 3.0 повністю знімає ці обмеження. Тепер кореневий порт CXL може підтримувати повне змішане налаштування пристроїв типу 1/тип 2/тип 3 залежно від цілей збирача системи. Зокрема, це означає можливість підключення кількох прискорювачів до одного комутатора, підвищення щільності (більша кількість прискорювачів на хост) та підвищення корисності нових функцій однорангової передачі.
Ще одна важлива зміна в CXL 3.0 – підтримка багаторівневої комутації. Вона заснована на CXL 2.0, в якому введена підтримка комутаторів протоколу CXL, але можна розміщувати тільки один комутатор між хостом і його пристроями. З іншого боку, багаторівнева комутація дозволяє використовувати кілька рівнів комутаторів, тобто перемикачів, підключених до інших комутаторів, що значно збільшує види та складність мережевих топологій, що підтримуються.
Нарешті, всі нові можливості пам'яті і топології/фабрики можна використовувати разом у тому, що консорціум CXL називає Global Fabric Attached Memory (GFAM). Тобто, GFAM виводить ідею плати розширення пам'яті CXL (тип 3) нового рівня шляхом подальшого поділу пам'яті з цього хоста. У цьому відношенні пристрій GFAM функціонально є власним загальним пулом пам'яті, до якого хости і пристрої можуть звертатися при необхідності. І пристрій GFAM може містити як енергозалежну, так і енергонезалежну пам'ять разом, наприклад DRAM та флеш-пам'ять.
Зрештою, найбільшою відмінністю може бути кількість підтримуваних вузлів. Механізм адресації CXL, який консорціум називає маршрутизацією на основі портів (PBR), підтримує до 212 (4096) пристроїв. Таким чином, встановлення CXL може масштабуватися тільки до певної межі, тим більше, що прискорювачі, підключена пам'ять та інші пристрої швидко займають/використовують порти.
Підсумовуючи можна сказати, що на заході FMS 2022 офіційно консорціум CXL оголосив про новий стандарт 3.0, проте на сьогодні він не пропонує жодних вказівок щодо того, коли очікувати появи CXL 3.0 у пристроях — це залежить від виробників обладнання. Варто зауважити, що не відразу навіть хости/пристрої з підтримкою CXL 1.1 надійшли у продаж, не кажучи вже про хости CXL 2.0 — фактичне виробництво CXL відстає від стандартів на кілька років, що типово для великих галузевих стандартів інтерконнектів.