Ryotta's Basic

Protocol
🔌 Protocol 검증완료

CXL Version Comparison

개요

CXL(Compute Express Link)은 CPU와 가속기, 메모리 디바이스 사이를 잇는 오픈 인터커넥트 표준이다. PCIe 물리 계층 위에서 CXL.io, CXL.cache, CXL.mem을 함께 사용하며, 코히어런시와 메모리 확장을 동시에 다룰 수 있도록 설계됐다.

버전이 올라갈수록 기능의 초점도 바뀐다. 1.x는 점대점 연결과 기본 코히어런스, 2.0은 스위칭과 풀링, 3.0은 패브릭과 다중 홉, 3.1은 3.0 기반의 보강 버전으로 보는 것이 가장 읽기 쉽다.

핵심 개념

프로토콜 스택

CXL 프로토콜 스택

세 프로토콜은 모든 세대에서 공통의 뼈대를 이룬다.

핵심은 CXL.io가 제어면을, CXL.cacheCXL.mem이 데이터면을 맡는다는 점이다. 2.0 이후에는 스위치, HDM decoder, 논리 디바이스(LD), 메모리 풀링 같은 운영 요소가 더해지므로, 단순 링크 규격보다 시스템 메모리 자원을 어떻게 노출하고 관리하는지까지 함께 봐야 버전 차이가 선명해진다.

계층 역할
CXL.io 장치 발견, 설정, 인터럽트, DMA, 레지스터 접근
CXL.cache 디바이스가 호스트 메모리를 코히어런트하게 캐시
CXL.mem 호스트가 디바이스에 붙은 메모리를 코히어런트하게 접근
ARB/MUX CXL.io와 코히어런스 트래픽을 링크에서 조정

디바이스 타입

타입 주 용도 프로토콜
Type 1 코히어런트 가속기 CXL.io + CXL.cache
Type 2 GPU, FPGA 같은 가속기 + 로컬 메모리 CXL.io + CXL.cache + CXL.mem
Type 3 메모리 익스팬더, FAM CXL.io + CXL.mem

토폴로지 진화

CXL 토폴로지 진화

1.x는 호스트와 장치가 1:1로 직접 붙는 구조다. 2.0에서 스위치가 들어오면서 메모리 풀링과 동적 할당이 가능해졌고, 3.0에서는 다중 스위치와 비트리 패브릭, 다중 호스트 공유까지 확장됐다.

비교/분석

아래 표는 각 버전의 차이를 한눈에 보기 쉽게 정리한 것이다. NEW는 해당 세대에서 처음 본격화된 기능을 뜻한다.

항목 1.0 1.1 2.0 3.0 3.1
공개 시점 2019-03 2019-06 2020-11 2022-08 2023-11
기반 PHY PCIe 5.0 PCIe 5.0 PCIe 5.0 PCIe 6.0 PCIe 6.0
전송 방식 NRZ NRZ NRZ PAM4 PAM4
링크 데이터 단위 528-bit(66B) FLIT 계열 528-bit(66B) FLIT 계열 528-bit(66B) FLIT 계열 256B FLIT + FEC 256B FLIT + FEC
토폴로지 Point-to-Point Point-to-Point NEW 1-hop 스위칭 NEW 다중 홉 패브릭 다중 홉 패브릭
스위칭 없음 없음 NEW 지원 지원 지원
메모리 풀링 없음 없음 NEW 지원 지원 지원
디바이스/호스트 공유 제한적 제한적 제한적 NEW 다중 호스트 공유 다중 호스트 공유
P2P / FAM / BI 없음 없음 없음 NEW 지원 지원
핵심 포인트 기본 CXL 시작점 1.0 정리본 스위칭과 풀링 도입 패브릭, 공유, P2P 확대 3.0 유지 + 보강

참고로 CXL Consortium은 2024년 말 CXL 3.2를, 2025년에는 CXL 4.0을 공개했다. 3.2는 3.0/3.1의 패브릭 방향을 유지하면서 관리성과 상호운용성을 다듬는 성격이 강하고, 4.0은 128 GT/s와 bundled ports, memory RAS 강화를 통해 랙 규모 확장성을 더 밀어붙이는 로드맵으로 읽힌다.

동작 원리

CXL 동작은 보통 세 단계로 이해하면 쉽다.

  1. CXL.io가 장치를 발견하고 설정한다.
  2. CXL.cache가 가속기 쪽 코히어런스와 호스트 메모리 접근을 담당하고, CXL.mem이 장치 메모리 접근을 담당한다.
  3. 2.0 이후에는 스위치와 패브릭이 중간에 들어오며, 3.0부터는 P2P, Back-Invalidation, FAM 같은 기능으로 메모리 공유 범위가 넓어진다.

이 때문에 CXL은 단순한 고속 I/O가 아니라, 메모리 계층을 시스템 바깥으로 확장하는 인터커넥트로 쓰인다.

실제 플랫폼에서는 BIOS/펌웨어가 링크와 디바이스를 초기화하고, OS가 CXL 버스와 메모리 장치를 열거한 뒤, 메모리 정책 계층이 풀링된 용량을 NUMA 노드나 tiered memory로 배치한다. 따라서 같은 CXL 2.0 장치라도 단순 메모리 확장인지, 여러 호스트가 나눠 쓰는 풀 자원인지에 따라 체감 성능과 소프트웨어 경로가 달라진다.

장단점

장점 단점
메모리 용량과 대역폭을 유연하게 확장할 수 있다 세대가 올라갈수록 검증과 구현 복잡도가 커진다
코히어런스 덕분에 소프트웨어 모델을 크게 바꾸지 않아도 된다 패브릭과 스위칭은 지연 시간과 전력 관리 부담을 늘린다
풀링과 공유로 자원 활용률을 높일 수 있다 OS, 펌웨어, 플랫폼 지원이 함께 맞아야 한다
가속기와 메모리의 분리를 통해 시스템 설계를 유연하게 한다 실제 성능은 토폴로지와 소프트웨어 배치에 크게 좌우된다

관련 기술

핵심 정리

CXL은 PCIe 기반 위에 코히어런시와 메모리 확장을 얹은 표준이다. 1.x는 기본 연결과 프로토콜 정리에 집중했고, 2.0은 스위칭과 풀링을, 3.0은 패브릭과 다중 호스트 공유를 열었다. 3.1과 3.2는 그 구조를 다듬는 보강판에 가깝고, 4.0은 더 높은 속도와 랙 규모 확장을 겨냥한다. 이 흐름을 함께 보면 CXL이 왜 메모리 계층 재구성의 핵심 표준인지 분명해진다.