CXL: физический уровень на базе PCIe
CXL и UALink физически устроены принципиально по-разному, потому что решают разные задачи. Проще говоря: CXL — это «расширитель» памяти и когерентности, а UALink — это «ускоритель» обмена данными между GPU.
🔌 CXL: физический уровень на базе PCIe
CXL не изобретает физику заново, а полностью переиспользует физический уровень (PHY) PCIe.
- Основа: Электрически это тот же PCIe. CXL 4.0 использует PHY от PCIe 7.0, работая на скорости 128 GT/s на линию.
- Кодирование: Используется 128b/130b (как в PCIe 3.0–5.0) или PAM4 с FLIT (как в PCIe 6.0+).
- Структура: Передача данных организована в FLIT фиксированного размера. CXL 3.x/4.0 используют 256-байтовый FLIT, оптимизированный для низкой задержки.
- Суть: Это «альтернативный протокол» поверх PCIe. Устройство начинает работу как обычное PCIe, а затем через механизм Alternate Protocol Negotiation переключается на CXL, чтобы получить доступ к когерентной памяти.
🚀 UALink: физический уровень на базе Ethernet
UALink, наоборот, берет за основу стандартный Ethernet PHY, что дает ему гибкость и масштабируемость.
- Основа: Использует IEEE 802.3 Ethernet PHY (стандарты 200GBASE-KR1/CR1, 400GBASE-KR2/CR2).
- Скорость: Целевая скорость — 212.5 GT/s на линию, чтобы после вычетов на кодирование обеспечить полезные 200 Гбит/с на линию.
- Кодирование: Использует 64B/66B (стандарт Ethernet) и Reed-Solomon FEC (прямое исправление ошибок). При этом FEC модифицирован для снижения задержки: используется режим с меньшим перемежением (interleave), что жертвует способностью исправлять длинные пачки ошибок ради скорости.
- Структура: Данные упакованы в 640-байтовый DL Flit с 32-битным CRC, который затем кодируется в 544,514 RS-кодовое слово.
📊 Ключевые различия
Короткий вывод: CXL «притворяется» PCIe, чтобы получить когерентный доступ к памяти, а UALink «притворяется» Ethernet, чтобы дешево и масштабируемо соединять ускорители. В гибридных системах их часто используют вместе: UALink — для быстрого обмена между GPU, CXL — для доступа к общему пулу памяти.
