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

Ch 4: Pooling·GFAM·Fabric — Multi-host 메모리 공유

· Hawk · 9분 읽기

#한 줄 요약

“CXL은 단계적으로 multi-host 메모리 공유를 넓혀 왔습니다.” — 2.0 pooling은 영역마다 host 하나가 쓰는 pooled memory, 3.0은 여러 host가 한 영역을 동시에 쓰는 Shared FAM과 fabric, 그리고 PBR로 더 크게 확장하는 G-FAM입니다. Fabric Manager와 *PBR(Port Based Routing)*이 그 메커니즘입니다.

Ch 2·Ch 3에서 디바이스 분류와 일관성을 봤습니다. 이 장은 디바이스 한 대에서 데이터센터 전체 토폴로지로 시야를 확장합니다.

#토폴로지 진화 단계

CXL은 세 단계로 multi-host 메모리 공유를 진화시켰습니다.

단계CXL 버전토폴로지특징
Direct Attach1.1호스트 1 ↔ 디바이스 1단순. PCIe 카드 한 장
Switching·Pooling2.0호스트 N ↔ Switch ↔ 디바이스 Nfan-out, multi-LD time-share
Fabric3.0 / 3.x호스트 N ↔ Multi-level Switch ↔ 디바이스 Mcoherent multi-host, GFAM

각 단계가 해결하는 문제:

  • 1.1: “메모리를 확장하고 싶다”
  • 2.0: “디바이스를 여러 host가 공유하고 싶다”
  • 3.x: “데이터센터 전체를 메모리 풀로 만들고 싶다”

#CXL 2.0 Switching — Fan-out

CXL 2.0의 single-level switch는 한 host가 여러 CXL 디바이스를 한 PCIe 포트로 묶을 수 있게 합니다.

구성 요소역할
Host CPUCXL 2.0 link (PCIe 5.0 x16)
CXL Switch1대, 여러 downstream port
Memory Devices각 port에 attach

Host CPU 입장에서는 여러 mem device가 각각 별도 NUMA 노드로 보이거나, HDM Decoder의 interleave region으로 하나의 큰 NUMA로 묶을 수 있습니다.

#CXL 2.0 Pooling — Multi-Host LD

같은 디바이스를 여러 host가 시간 분할해 사용하는 게 pooling입니다.

요소의미
Logical Device (LD)디바이스 메모리의 논리적 분할 단위
LD-IDhost·디바이스 양쪽에서 LD 식별
Time-share한 시점에 한 host만 특정 LD 사용
Re-allocation워크로드 변화에 따라 동적 재할당

운영 예시 — 2 TB pool memory를 4개 LD로 분할:

LD초기 할당시간 t1시간 t2
LD0 (512 GB)Host A(회수, unallocated)Host C에 재할당
LD1 (512 GB)Host BHost B 유지Host B 유지
LD2 (512 GB)Host CHost C 유지Host D에 새로 할당
LD3 (512 GB)미할당Host A에 할당Host A 유지

Fabric Manager가 out-of-band control로 이 할당을 관리합니다.

#CXL 3.0 Fabric — Coherent Multi-Host

CXL 3.0은 2.0의 time-share pooling을 넘어 multi-host가 동시에 같은 메모리 영역 접근을 가능하게 합니다 — coherency를 유지하면서.

구성 요소역할
Multi-level SwitchPBR로 라우팅, multi-hop fabric 가능
Fabric Managerout-of-band control + topology 관리
Shared FAM여러 host가 한 HDM 영역에 동시 접근
BISnpHDM-DB 영역에서 device가 host cache를 snoop·무효화

기존 2.0과의 차이:

항목2.0 Pooling3.0 Fabric
공유 모델영역마다 host 하나 (pooled)여러 host가 한 영역 (Shared FAM) 추가
Coherency단일 hostShared FAM은 hardware(HDM-DB) 또는 software 모델
RoutingHBR (Hierarchy Based Routing)PBR (Port Based Routing) 추가
토폴로지single-levelmulti-level

#GFAM — Global Fabric Attached Memory

규격은 여러 host에 노출되는 HDM을 *FAM(Fabric-Attached Memory)*이라 부릅니다. LD로 노출하면 LD-FAM, PBR 링크를 써서 더 확장성 있게 노출하면 *G-FAM(Global-FAM)*입니다(CXL 3.1 §2.4.3).

특성의미
접근G-FAM 디바이스(GFD)는 여러 host·peer의 요청을 받고, 요청의 *Source PBR ID(SPID)*로 누구의 요청인지 구분
주소 변환GFD 안의 GFD decoder가 HPA를 DPA로 변환
일관성여러 host가 일관성을 공유하려면 HDM-DB를 씀
QoShost·peer별 QoS 한도를 둘 수 있음

G-FAM의 가치는 원래 network로 주고받던 데이터를 load/store로 접근할 수 있게 되는 데 있습니다.

#PBR — Port-Based Routing

CXL switch에는 HBR(Hierarchy Based Routing) switch와 PBR(Port Based Routing) switch가 있습니다. HBR은 PCIe 같은 계층 구조를 따라 라우팅합니다. PBR은 메시지에 실린 *PBR ID(SPID·DPID)*와 라우팅 테이블로 라우팅해, 계층 구조에 묶이지 않는 fabric을 만듭니다.

라우팅방식적용
HBR계층 구조 기반트리형 토폴로지
PBRPBR ID + 라우팅 테이블다단계 fabric

PBR이 있어야 계층 구조를 벗어난 큰 fabric을 만들 수 있습니다.

#Fabric Manager — Out-of-band Control

지금까지 본 pooling에는 누가 LD를 어느 host에 붙일지 정하는가라는 빈칸이 있습니다. 그 자리를 채우는 것이 *Fabric Manager (FM)*입니다.

규격(CXL 3.1 §7.6.1)은 FM을 재구성이 필요한 시점을 정하고 구성 명령을 내리는 논리적 프로세스로 정의합니다. 형태는 정해져 있지 않습니다. host에서 도는 소프트웨어, BMC의 embedded software, 다른 CXL 디바이스나 switch의 펌웨어, 디바이스 안의 state machine 어느 것이든 될 수 있습니다. FM은 규격의 FM API 명령으로 디바이스와 switch를 구성합니다.

FM의 spec 정의(§7.6.1), FM API가 CCI로 전달되는 경로, bind·unbind 흐름은 Ch 13: Switching·Fabric Manager에서 다룹니다.

#운영 사례 — hyperscale 도입

공개된 대표 연구는 두 가지입니다.

연구내용
Pond (Microsoft Azure 외, ASPLOS 2023)클라우드 trace 분석: 816 소켓 범위 풀링으로 이득 대부분. DRAM 비용 7% 절감, 성능은 같은 NUMA 노드 대비 15% 이내
TPP (Meta 외, ASPLOS 2023)애플리케이션을 고치지 않는 OS 수준 hot/cold 페이지 배치. 기본 Linux 대비 18% 성능 향상

Microsoft는 Azure M-series VM 프리뷰에서 CXL 메모리 확장을 발표했습니다(Astera Labs Leo, 2025년 11월).

#Composability — 데이터센터 비전

CXL 컨소시엄은 3.x의 방향을 메모리와 가속기를 분리해 조합하는 composable fabric으로 설명합니다.

현재 — 정적 서버: 서버마다 CPU·메모리·가속기가 고정 비율로 묶여 있어, 워크로드가 메모리를 더 원해도 옮길 수 없습니다.

Composable — 동적 조합: 자원을 종류별 풀로 나눠 두고, 워크로드가 시작할 때 필요한 만큼 빌리고 끝날 때 돌려줍니다.

이 그림은 fabric, Fabric Manager, 이를 다루는 OS가 함께 갖춰져야 성립합니다.

#자주 하는 실수

#“CXL 2.0 pooling = CXL 3.0 fabric”

다릅니다. 2.0 pooling은 영역마다 host 하나입니다. 3.0은 여러 host가 한 영역에 동시 접근하는 Shared FAM과 PBR fabric을 더했습니다.

#“GFAM은 멀티 host가 자유롭게 read/write”

일관성 모델에 달렸습니다. FM이 영역마다 hardware coherency(HDM-DB, write는 소유권을 먼저 얻는 2단계) 또는 software-managed coherency를 지정합니다. software 모델이면 일관성은 애플리케이션 몫입니다.

#“Fabric Manager는 single point of failure”

FM의 형태는 규격이 정하지 않습니다. host 소프트웨어, BMC, switch 펌웨어 등 어디서든 돌 수 있으므로, 가용성은 FM을 어디에 어떻게 두느냐의 설계 문제입니다.

#“PBR fabric은 정해진 토폴로지만 된다”

규격(§7.7)은 PBR fabric 토폴로지를 정해 두지 않습니다. deadlock-free routing을 찾을 수 있는 토폴로지면 됩니다. 규격이 드는 예는 PCIe 같은 tree, fat tree(folded Clos), mesh, ring, star, butterfly, HyperX와 그 조합입니다.

#“CXL fabric이 NVLink을 대체한다”

용도가 다릅니다. NVLink는 GPU 간 고대역폭·저지연. CXL fabric은 general purpose memory. 공존이 현실입니다.

#정리

  • CXL은 Direct → Switching → Fabric의 3단계 진화를 통해 single device에서 datacenter 전체로 확장됩니다.
  • CXL 2.0 switching·pooling은 LD 단위로 영역을 host에 배정합니다. 배정은 Fabric Manager가 FM API로 합니다.
  • CXL 3.0은 Shared FAM(여러 host 동시 접근)과 PBR fabric을 더했습니다. HBR은 Hierarchy Based Routing, PBR은 Port Based Routing입니다.
  • G-FAM은 PBR 링크로 확장성 있게 노출한 FAM이고, GFD decoder가 HPA를 DPA로 변환합니다.
  • PBR fabric 토폴로지는 deadlock-free routing만 찾으면 자유롭습니다.
  • 공개 연구로는 Pond(풀링 비용 절감)와 TPP(OS 수준 tiering)가 있습니다.

#다음 편

Ch 5: CXL 4.0의 핵심 새 기능 — 128 GT/s·Bundled Port에서 CXL 4.0이 3.x 위에 더한 운용 기능을 본격적으로 분해합니다.

#관련 항목

#시리즈 자료 출처 안내

이 글은 CXL 3.1 spec, Pond·TPP 논문(ASPLOS 2023)를 근거로 합니다. 시리즈 전체의 자료 정책은 Ch 1에 있습니다.