본문으로 건너뛰기
CXL 4.0 Internals · 2/15

Ch 2: System Architecture — Type 1·2·3·MLD·MH-MLD

· Hawk · 9분 읽기

#한 줄 요약

“CXL은 디바이스를 5가지 형태로 정의합니다.”Type 1·2·3 세 기본 유형에 MLD·MH-MLD 두 multi-host 변형이 더해집니다. Type 1은 cache-only NIC, Type 2는 메모리 있는 가속기, Type 3는 메모리 expander, MLD는 한 디바이스를 여러 host가 시분할, MH-MLD는 여러 upstream port를 가진 multi-headed device입니다. CXL 4.0의 Bundled Port는 이 구분 위에 port 집계 한 층을 더 얹은 것입니다.

Ch 1에서 세 프로토콜과 backward-compatible한 세대 진화를 봤습니다. 이 장은 디바이스 측 분류입니다. 어떤 프로토콜 조합을 지원하느냐, 몇 개의 host에 동시 노출되느냐가 디바이스 타입을 결정합니다.

#세 가지 기본 유형

CXL은 지원하는 프로토콜 조합으로 디바이스를 3가지 type으로 분류합니다.

Type프로토콜자체 메모리핵심 능력
Type 1CXL.io + CXL.cache없음host 메모리를 coherent 캐시
Type 2CXL.io + CXL.cache + CXL.mem있음 (HBM·DRAM)host와 양방향 cache-coherent 공유
Type 3CXL.io + CXL.mem있음 (DRAM)host에 메모리 노출

CXL.io는 모든 유형 필수. 다른 두 프로토콜은 디바이스 사용 모델에 따라 선택입니다. 자세한 동작은 Ch 6 CXL.io·Ch 7 CXL.cache·Ch 8 CXL.mem에서 봅니다.

#Type 1 — Cache-only Accelerator

자체 메모리 없는 가속기입니다. host 메모리를 캐시해 PCIe 라운드트립을 회피합니다.

카테고리예상 활용
SmartNIC·DPUpacket metadata·flow state 캐싱
Network appliancerouting table·NAT entry 캐싱
HBA·storage offloadblock translation table 캐싱

CXL 1.1부터 정의된 가장 단순한 type이지만 production CXL.cache 디바이스는 아직 적습니다. 2025+ 점진 양산 단계입니다.

#Type 2 — Accelerator with Memory

자체 HBM/DRAM을 가진 가속기입니다. host와 양방향 cache coherent입니다.

제품군자체 메모리비고
AMD Instinct MI300X192 GB HBM3처음부터 Infinity Fabric + CXL 통합 설계
AMD Instinct MI325X256 GB HBM3EMI300X 후속
Intel Gaudi 3HBM2ECXL 호환 PCIe
Versal AI Premium 계열FPGA + DDR/HBMAMD/Xilinx CXL IP 통합
NVIDIA Hopper/BlackwellHBM3·HBM3ENVLink 중심, CXL 모드는 제품·시점 의존

Type 2의 coherency가 가장 복잡합니다. 양방향 캐시 + Bias 전환이 필요한데 Ch 3 메모리 일관성에서 본격 분해합니다.

#Type 3 — Memory Expander

순수 메모리 디바이스입니다. DRAM 모듈을 PCIe 너머로 노출합니다.

제품회사폼팩터
CMM-D (Compute Memory Module-DDR)SamsungEDSFF E3.S
NiagaraSK HynixEDSFF E3.S
LeoAstera LabsAIC
CXL Memory ExpanderMicronEDSFF
Type 3 CXL MemoryMarvell·RambusAIC

Type 3은 device 측 캐시가 없습니다. 모든 cache는 host CPU의 L1·L2·L3에 있고 coherency 관리도 host 단독. 그래서 Type 3가 가장 단순하고 가장 흔합니다.

#MLD — Multi Logical Device

하나의 물리 디바이스를 여러 logical device로 분할여러 host가 시분할 사용하는 구조입니다. CXL 2.0부터 정의됐습니다.

핵심 개념:

요소역할
Logical Device (LD)디바이스 자원의 논리적 분할 단위
LD-ID각 LD를 식별하는 ID — CXL.mem·CXL.io 양쪽에 노출
Fabric ManagerLD를 어느 host에 할당할지 out-of-band로 결정

운영 흐름:

  1. Memory expander가 2 TB physical capacity를 가짐
  2. Fabric Manager가 512 GB × 4 LD로 분할
  3. Host A·B·C에 각각 LD0·LD1·LD2 할당
  4. LD3은 미할당 pool로 유지
  5. Host A의 워크로드 종료 시 LD0 회수, 새 워크로드에 재할당

동적 재할당CXL 2.0 pooling의 핵심 가치입니다. 자세한 흐름은 Ch 4 Pooling·GFAM에서.

#Shared FAM — 같은 영역을 다중 host 공유

CXL 3.0의 Coherent Fabric같은 메모리 영역여러 host가 동시 접근하게 합니다. Pooling이 time-share라면 Shared FAM은 simultaneous share. 일관성은 Back-Invalidation Snoop 메커니즘으로 유지됩니다.

모드특성적합 워크로드
Pooling (2.0)host별 exclusive time-share컨테이너 host overcommit, dynamic VM 메모리
Shared FAM (3.0+)multi-host 동시 read/write, BISnp로 일관성분산 DB·in-memory cache·shared model state

Shared FAM은 cache invalidation 트래픽이 크게 늘 수 있어 application 측 coordination(transaction·lock)이 거의 필수입니다.

#MH-MLD — Multi-Headed Device

디바이스가 multiple upstream port를 가지는 구조입니다. 즉 여러 host에 동시 attach되어 보입니다.

차이MLDMH-MLD
물리 port 수1개여러 개
host attachswitch 통해 multi-host직접 multi-host
Use caseswitched poolingdirect multi-host (예: blade enclosure)

MH-MLD의 LD 관리MH-MLD 내부의 controller가 합니다. 각 head별 LD독립적으로 인식·관리. Fabric Manager 없이도 enclosure level에서 dynamic 재할당이 가능합니다.

#Bundled Port — 4.0의 새 layer

CXL 4.0의 Bundled PortMH-MLD의 multiple port논리적으로 묶어 하나의 port group처럼 host에 노출합니다.

기존 vs 4.0:

항목MH-MLD 전통 (3.x)Bundled Port (4.0)
Port 노출각 port 독립 enumeration논리적 단일 group으로 노출
Host 측 관리port별 별도 device로 인식port group을 한 device처럼 인식
트래픽 라우팅host가 port 선택device가 dynamic routing
효과운영자가 port별 관리latency↓, bandwidth↑, QoS↑

Ch 5 CXL 4.0의 핵심 새 기능에서 Bundled Port·Streamlined Port의 동작을 본격 분해합니다.

#Linux 측 인식 — 유형별 path

각 디바이스 유형이 Linux에 어떻게 보이는지가 다릅니다.

Terminal window
# Type 3 — 가장 흔한
$ ls /sys/bus/cxl/devices/
mem0/ # cxl_mem 드라이버
decoder0.0/ # HDM Decoder
region0/ # 사용자가 생성한 region
# Type 2 — accelerator + memory
$ ls /sys/bus/cxl/devices/
mem0/ # CXL.mem 영역
# 가속기 자체는 vendor-specific driver로 등록 (별도 sysfs)
# Type 1 — vendor driver 내부 사용
# 별도 sysfs 노출 없음. cxl_pci subsystem이 cache 인터페이스를 vendor 드라이버에 전달

Type 3의 sysfs pathLinux drivers/cxl/ 코드의 중심입니다. 자세한 코드 워크스루는 Ch 11 Linux drivers/cxl/에서.

#자주 하는 실수

#”Type 3 = Type 2의 단순 버전”

디바이스 구현은 그렇지만 운영은 다릅니다. Type 3는 대량 메모리 관리·tiered memory·NUMA 통합이 복잡. Type 2는 coherency가 복잡한 대신 사용 패턴이 명확(GPU 같은 compute). 운영 복잡도가 디바이스 복잡도와 일치하지 않습니다.

#”MLD와 Shared FAM은 같은 거다”

완전히 다릅니다. MLD는 time-share (한 시점 한 host). Shared FAM은 coherent simultaneous share (동시 다중 access). coherency 메커니즘이 완전히 다릅니다.

#”Type 1 NIC를 데이터센터에 들이면 packet 처리가 빨라진다”

Cache hit rate가 충분히 높을 때만. 불규칙한 packet metadata accesscache miss → host 라운드트립이라 오히려 느릴 수 있음. 워크로드 access pattern 분석이 도입 전 필수.

#”MH-MLD는 한 host 다운 시 다른 host도 함께 죽는다”

그렇지 않습니다. 각 head가 독립 control path를 가지므로 한 host failure가 다른 host에 격리됩니다. 단 Fabric Manager redundancy실 운영의 핵심.

#”Bundled Port가 Multi-LD를 대체한다”

직교 개념입니다. Bundled Port는 port 수준 집계, MLD는 capacity 수준 분할. 둘 다 동시 가능. 예: Bundled Port로 묶인 multi-LD device.

#정리

  • CXL 디바이스는 프로토콜 조합으로 Type 1·2·3. cache-only NIC·memory 가진 가속기·memory expander입니다.
  • MLD한 디바이스를 LD로 분할multi-host time-share pooling.
  • Shared FAM같은 메모리 영역을 multi-host simultaneous share. CXL 3.0+에서 BISnp로 일관성 유지.
  • MH-MLDmultiple upstream port를 가진 디바이스. CXL 4.0의 Bundled Port는 그 port들을 논리적으로 묶음.
  • Linux 측 Type 3가 가장 흔한 sysfs path. Type 1·2는 vendor driver가 추가 처리.

#다음 편

Ch 3: 메모리 일관성 모델 — HDM-DB·HDM-D·Bias·BISnp에서 Type 2 가속기의 양방향 cache coherency어떻게 유지되는지를 본격적으로 분해합니다.

#관련 항목

#시리즈 자료 출처 안내

본 글은 CXL Consortium 공개 자료·각 디바이스 벤더 공식 발표·Linux drivers/cxl/ 소스를 1차 자료로 합니다. CXL 4.0 Specification (Revision 4.0, Version 1.0)은 § 번호 navigation aid로만 인용. 자세한 spec 인용 정책은 Ch 1 footer 참고.