CXL Type 1·2·3 디바이스 분류 — Cache·Accelerator·Memory
#한 줄 요약
“같은 CXL 링크라도 어떤 프로토콜 조합을 쓰는지에 따라 완전히 다른 디바이스가 됩니다.” — Type 1은 NIC·HBA가 host 메모리를 캐시, Type 2는 GPU·NPU가 host와 양방향 캐시 공유, Type 3는 메모리 expander. 각 유형은 대표 사례·트래픽 패턴·Linux 인식 경로가 다릅니다.
Ch 10에서 프로토콜 메시지를 봤습니다. 같은 메시지라도 Type 1·2·3 디바이스가 어떻게 사용하는지가 완전히 다릅니다. 이 장은 디바이스 유형 분류와 실 제품 매핑을 정리합니다.
#세 유형의 핵심 차이
CXL은 지원하는 프로토콜 조합으로 디바이스 유형을 정의합니다.
| Type | 프로토콜 | 자체 메모리 | 핵심 능력 |
|---|---|---|---|
| Type 1 | CXL.io + CXL.cache | 없음 | host 메모리를 coherent 캐시 |
| Type 2 | CXL.io + CXL.cache + CXL.mem | 있음 (HBM·DRAM) | host와 양방향 cache-coherent 공유 |
| Type 3 | CXL.io + CXL.mem | 있음 (DRAM) | host에게 메모리 노출 |
핵심 결정 변수는 어느 방향의 cache coherency가 필요한가입니다.
- Type 1: device → host 캐시 (network packet 메타데이터 등)
- Type 2: 양방향 (GPU shared workload)
- Type 3: host → device (메모리 확장)
#Type 1 — Cache-only Accelerator
Type 1은 자체 메모리 없는 가속기입니다. host 메모리를 cache해서 빠르게 접근합니다.
NIC 시나리오 (packet metadata가 host DRAM 0x1000에 있는 경우):
| 단계 | 동작 |
|---|---|
| 1 | NIC가 패킷 처리 위해 metadata 필요 → D2H Req RdShared, addr=0x1000 |
| 2 | Host → NIC: H2D DRS data, addr=0x1000. NIC가 local cache에 저장 |
| 3 | 다음 패킷도 같은 metadata 사용 → NIC cache hit, host 접근 없음 |
Type 1은 양산 사례가 아직 적은 영역입니다. 시장의 SmartNIC·DPU 제품 다수가 PCIe 기반에 머무르고, CXL.cache로의 전환은 2025+ 점진 진행 중입니다. 후보 제품군:
| 카테고리 | 대표 제품군 |
|---|---|
| SmartNIC | NVIDIA ConnectX·BlueField, Marvell OCTEON, Intel IPU 계열 |
| DPU | NVIDIA BlueField, AMD Pensando, Marvell OCTEON 10 |
| 5G/network appliance | 다양한 vendor |
이 카테고리들이 CXL Type 1으로 전환될 가능성이 거론되지만 실제 spec 지원·양산은 product별로 다름. 도입 검토 시 해당 제품의 CXL 1.1/2.0 지원 여부를 데이터시트로 확인해야 합니다.
Type 1의 가치는 host RAM의 hot region을 device 측에 prefetch해 PCIe round-trip을 회피하는 것입니다. 네트워크 라우팅 테이블·flow state 같은 hot metadata에 효과적인 영역입니다.
#Type 2 — Accelerator with Memory
Type 2는 자체 HBM/DRAM을 가진 가속기입니다. GPU·NPU·FPGA 가속기가 여기 속합니다.
LLM inference 시나리오 (Type 2 GPU + HBM):
| Phase | Host 측 | Device 측 | 트래픽 |
|---|---|---|---|
| 1. Weight 로딩 | M2S RwD로 GPU HBM에 weight write | HBM에 weight 저장 | host → device 대량 |
| 2. GPU compute | (idle) | Bias 전환: Device Bias, HBM compute (snoop 없음) | 거의 없음 |
| 3. Output 회수 | Bias 전환: Host Bias, M2S Req로 read | S2M DRS로 output data | device → host |
Type 2의 핵심은 cache coherency가 양방향이라는 점. host도 GPU HBM을 직접 load/store할 수 있고, GPU도 host RAM을 캐시할 수 있습니다. Bias 전환으로 coherency overhead를 phase별로 최적화.
대표 사례 (CXL 모드 또는 호환성 명시된 제품 위주):
| 제품 | 회사 | 비고 |
|---|---|---|
| Instinct MI300X·MI325X | AMD | 처음부터 Infinity Fabric + CXL 통합 설계, EPYC와 자연스러운 조합 |
| Gaudi 3 | Intel | HBM2E 기반 가속기, CXL 호환 PCIe 인터페이스 |
| Sapeon·Rebellions NPU 계열 | Sapeon Inc·Rebellions | 한국 AI 가속기, 일부 제품군이 CXL 옵션 검토 |
| Versal AI Premium 계열 | AMD/Xilinx | FPGA 기반, CXL IP 통합 가능 |
NVIDIA의 경우 Hopper/Blackwell은 NVLink 중심. CXL 모드 지원 여부와 범위는 제품 변종·시점별로 다름. AMD MI300X는 원래부터 CXL 기반이라 AMD EPYC + Instinct 조합에서 자연스러운 흐름.
#Type 3 — Memory Expander
Type 3은 순수 메모리 디바이스입니다. DRAM 모듈을 PCIe 너머로 노출합니다.
Memory Expander 시나리오 — HDM Decoder가 SPA 0x80_0000_0000을 mem0에 매핑한 경우:
| 단계 | 동작 |
|---|---|
| 1 | CPU 명령: rax = [0x80_0000_0000] |
| 2 | Host → Device: M2S Req MemRd, addr=0x80_0000_0000 |
| 3 | Device가 DRAM read |
| 4 | Device → Host: S2M DRS 64 B data |
| 5 | Host 측 cache가 hot data 보관 (device 측엔 cache 없음) |
Type 3의 핵심은 device 측 cache 없음. 모든 cache는 host CPU의 L1·L2·L3에 있고, coherency 관리도 host가 단독으로 합니다. 그래서 Type 3는 가장 단순하고 가장 흔합니다.
대표 사례:
| 제품 | 회사 | 용량 | 폼팩터 |
|---|---|---|---|
| CMM-D (Compute Memory Module-DDR) | Samsung | 128~512 GB | EDSFF E3.S |
| Niagara | SK Hynix | 96~256 GB | EDSFF E3.S |
| Leo | Astera Labs | up to ~2 TB | AIC |
| CXL Memory Expander | Micron | 256 GB | EDSFF |
| Type 3 CXL Memory | Marvell | 다양 | AIC |
| MAX Memory | Rambus | 다양 | AIC |
Ch 9에서 봤듯 Samsung·SK Hynix 두 한국 회사가 HBM 시장 우위를 CXL Type 3에 확장하는 중입니다.
#Linux 인식 경로 — 유형별
Linux는 어떤 드라이버를 binding하느냐로 유형을 구분합니다.
# Type 3 — 가장 흔한 path$ ls /sys/bus/cxl/devices/mem0/ # cxl_mem 드라이버decoder0.0/ # HDM Decoderregion0/ # 사용자가 생성한 region
# Type 2 — accelerator + memory$ ls /sys/bus/cxl/devices/mem0/ # CXL.mem 영역dev0/ # accelerator (vendor-specific driver)Type 1은 보통 별도 sysfs 노출 없음 — vendor 전용 드라이버가 CXL.cache를 내부 사용하고 기존 PCI subsystem에 기존 device처럼 노출합니다.
#트래픽 패턴 비교
같은 PCIe 5.0 x16 링크에서 유형별 트래픽 특성:
| 유형 | 주된 트래픽 | 평균 burst | 지연 민감도 |
|---|---|---|---|
| Type 1 | CXL.cache D2H Req·H2D DRS | 64 B | 매우 높음 (network jitter) |
| Type 2 (compute phase) | 거의 없음 (Device Bias) | — | — |
| Type 2 (data phase) | CXL.mem 양방향 | 4 KB~ | 중간 |
| Type 3 (read-heavy) | M2S Req + S2M DRS | 64 B | 중간 |
| Type 3 (write-heavy) | M2S RwD + S2M NDR | 64 B | 낮음 (write buffer) |
Type 2가 가장 동적입니다 — phase별로 트래픽이 완전히 달라집니다.
#자주 하는 실수
#”Type 3가 Type 2보다 항상 단순하다”
디바이스 구현은 그렇지만 운영은 다릅니다. Type 3는 대량 메모리 관리·tiered memory·NUMA 통합이 복잡합니다. Type 2는 coherency가 복잡한 대신 사용 패턴이 명확(GPU 같은 컴퓨트). 운영 복잡도가 반드시 디바이스 복잡도와 일치하지 않습니다.
#”Type 1 NIC = 무조건 빠름”
Cache hit rate가 충분히 높을 때만입니다. 불규칙한 packet metadata access는 cache miss → host 라운드트립이라 오히려 느려질 수 있음. 워크로드 access pattern 분석이 Type 1 도입 전 필수입니다.
#”NVIDIA GPU는 NVLink만 쓴다”
GH200·B200부터 CXL 모드 지원. NVLink 도메인 밖(non-NVIDIA host)에서는 CXL Type 2로 동작합니다. NVIDIA 전유물이 아닙니다.
#”Type 3 디바이스에 CXL.cache 트래픽이 보이면 이상”
맞습니다. Type 3은 CXL.io + CXL.mem만 사용. CXL.cache 트래픽이 보이면 spec 위반 또는 firmware bug입니다. cxl event-log로 추적.
#”MI300X와 Hopper는 같은 카테고리”
아닙니다. MI300X는 처음부터 Type 2로 설계됐고, Hopper는 NVLink 기본·CXL Type 2 옵션. 운영 시 CXL 모드 활성화 여부에 따라 트래픽 특성이 다릅니다.
#정리
- CXL 디바이스는 지원 프로토콜 조합으로 Type 1·2·3 세 유형으로 나뉩니다.
- Type 1은 cache-only — NIC·DPU가 host 메모리를 캐시. CXL.io + CXL.cache.
- Type 2는 memory 가진 accelerator — GPU·NPU. 양방향 cache-coherent. 세 프로토콜 다 사용.
- Type 3는 memory expander — DRAM 모듈을 PCIe 너머로 노출. CXL.io + CXL.mem.
- Linux는 cxl_mem·vendor-specific 드라이버로 유형을 sysfs path에 노출합니다.
- 트래픽 패턴은 유형별로 매우 다르며, Type 2의 phase별 동적 패턴이 가장 복잡합니다.
- 한국 메모리 두 회사가 Type 3 시장 선두권이며, Type 2에는 Sapeon·Rebellions가 진입.
#다음 편
Ch 12: 메모리 풀링과 데이터센터 토폴로지에서는 디바이스 한 대에서 데이터센터 전체 토폴로지로 시야를 넓힙니다. CXL Switch·Pooling·Fabric·GFAM이 어떻게 multi-host 메모리 공유를 가능하게 하는지, 그리고 시리즈 마무리까지.
#관련 항목
HBM·GDDR 심화 · 11 of 12
- 1HBM과 GDDR 분기점 분석 — Bandwidth·Capacity·Cost 트레이드오프
- 2HBM 3D 스택 구조 분해 — TSV·Microbump·Base Die의 역할
- 3HBM2·HBM2E·HBM3·HBM3E 세대 비교 — JEDEC 표준 진화 흐름
- 4GDDR6·GDDR6X·GDDR7 분석 — PAM 신호로 32 Gbps 도달한 경로
- 5메모리 대역폭 병목 분석 — Theoretical vs Achievable·Roofline·Memory Wall
- 6HBM 열 설계와 전력 관리 — Stack 열 부하·Refresh Cost·냉각 솔루션
- 7HBM 메모리 컨트롤러 분석 — Bank·Row·Column·Address Mapping·Scheduling
- 8NPU·GPU에서의 HBM 활용 — Weight·Activation·KV Cache 배치 분석
- 9CXL.mem 분석 — HBM·GDDR·DDR 다음의 메모리 계층
- 10CXL.mem 프로토콜 분해 — M2S·S2M 메시지와 HDM Decoder
- 11CXL Type 1·2·3 디바이스 분류 — Cache·Accelerator·Memory
- 12메모리 풀링과 데이터센터 토폴로지 — CXL Switch와 Fabric
관련 글
메모리 풀링과 데이터센터 토폴로지 — CXL Switch와 Fabric
CXL 2.0/3.x switch가 만드는 메모리 풀링 — 다중 호스트가 공유하는 메모리 풀과 Coherent Fabric 토폴로지.
CXL.mem 프로토콜 분해 — M2S·S2M 메시지와 HDM Decoder
CXL.mem 트랜잭션 흐름 — M2S Req·S2M NDR/DRS, HDM Decoder의 주소 매핑, BI·Snoop Filter 동작.
CXL.mem 분석 — HBM·GDDR·DDR 다음의 메모리 계층
CXL.mem이 메모리 계층에 끼어드는 자리 — on-package HBM과 DRAM DIMM 사이의 새 tier.