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

Ch 3: 메모리 일관성 모델 — HDM-DB·HDM-D·Bias·BISnp

· Hawk · 8분 읽기

#한 줄 요약

“Type 2 가속기의 device memoryhost와 device 양쪽이 캐시할 수 있어 일관성 메커니즘이 필요합니다.” — CXL은 두 가지 모델을 정의합니다. HDM-D는 Bias 전환으로 snoop 오버헤드를 회피하고, HDM-DB는 Back-Invalidation Snoop으로 device가 host cache를 명시적 무효화합니다. Bias가 경량 위주라면 BISnp는 정확성 위주입니다.

Ch 2에서 Type 2 가속기가 양방향 cache coherent하다는 걸 봤습니다. 이 장은 그 일관성이 어떻게 유지되는지를 분해합니다. 핵심은 *HDM (Host-managed Device Memory)*의 두 가지 변형입니다.

#HDM이란

*HDM (Host-managed Device Memory)*은 디바이스의 메모리를 host의 system physical address (SPA) 공간에 매핑한 영역입니다. host CPU의 load·store instruction직접 device 메모리에 도달합니다.

항목의미
MappingHDM Decoder가 SPA → device physical address (DPA) 변환
Visibilityhost의 모든 코어가 같은 SPA로 접근
Cachinghost CPU cache (L1·L2·L3)에 normal load/store처럼 캐시됨

Type 3 메모리 expander의 모든 메모리가 HDM입니다. Type 2 가속기는 attached 메모리의 일부 또는 전부를 HDM으로 노출합니다.

#HDM-D vs HDM-DB

CXL은 HDM을 두 가지 변형으로 정의합니다.

변형의미일관성 메커니즘주 사용처
HDM-D (Device-owned)device가 주된 사용자. host는 occasional accessBias 모드 전환Type 2 가속기의 compute working set
HDM-DB (Device-Backed)host와 device가 대등하게 접근BISnp (Back-Invalidation Snoop)Type 2의 shared data, Type 3의 주된 영역

HDM-D는 single-owner 가정. HDM-DB는 multi-owner 가정. 이 두 패턴에 서로 다른 메커니즘을 적용하는 게 CXL의 효율성 비결입니다.

#HDM-D — Bias 기반 일관성

HDM-D 영역은 Bias 모드Host Bias 또는 Device Bias 중 하나에 있습니다.

Bias의미적용
Host Biashost가 주로 사용. device 측은 접근 시 snoop 발생데이터 로딩 단계
Device Biasdevice가 주로 사용. host는 접근 시 snoop 발생GPU compute 단계

Bias 전환software가 trigger합니다. LLM inference 시나리오에서:

PhaseBias트래픽
1. Weight loadingHost Biashost → device 대량 (M2S RwD)
2. GPU computeDevice Bias로 전환snoop 없음 (device 내부 local)
3. Output 회수Host Bias로 다시 전환device → host (S2M DRS)

Bias 전환 자체수 µs가 들지만, 적절한 bias 동안의 access는 snoop 없이 빠릅니다. 큰 phase가 바뀔 때만 전환하는 게 권장.

#HDM-DB — BISnp 기반 일관성

HDM-DB는 Back-Invalidation Snoop (BISnp) 메커니즘을 씁니다. CXL 3.0부터 추가됐습니다.

핵심 아이디어:

  • Device가 host의 cache를 명시적으로 무효화하는 메시지를 보낼 수 있음
  • Host cache의 stale 데이터device update를 못 본 채 사용되는 것을 방지

BISnp 시나리오 (Device-Bias HDM-DB 영역에 host가 접근):

단계동작
1CPU가 cache line X 접근
2Host → Device: M2S Req MemRd, addr=X
3Device → Host: S2M BISnp (host의 cache line X 무효화 요청)
4Host → Device: invalidate 확인 응답
5Device가 자기 캐시에서 fresh data 준비
6Device → Host: S2M DRS MemData, addr=X

BISnp가 필요한 이유device가 자기 캐시를 update했을 때 host의 stale 캐시무효화해야 데이터 무결성이 유지되기 때문입니다.

#Bias vs BISnp — 언제 어느 쪽?

기준Bias 기반 (HDM-D)BISnp 기반 (HDM-DB)
Owner 가정single (device 또는 host)multi
Snoop 횟수낮음 (적절한 bias 동안)매 access마다 가능
Triggersoftware (bias 전환)hardware (BISnp 자동)
Phase 명확워크로드 phase 명확할 때phase 불분명·혼재할 때
Latencybias 동안 best (snoop 없음)BISnp 발생 시 추가 latency
적합 워크로드GPU compute·batch MLshared cache·DB·real-time

LLM training 같은 명확한 weight/compute/output phase는 HDM-D가 효율적. shared in-memory database 같은 동시 다중 owner는 HDM-DB가 필요.

#Snoop Filter — Device 측 최적화

BISnp가 모든 cache line마다 발생하면 부담이 큽니다. Device는 snoop filterhost가 어떤 cache line을 hold하고 있는지 추적해 불필요한 BISnp 회피합니다.

메커니즘역할
Snoop Filterhost cache의 line 보유 상태 추적
Inclusive / Exclusivefilter가 host cache의 superset이면 inclusive
Miss 처리filter miss = “host가 hold 안 함” = BISnp 안 보냄

snoop filter의 크기·hit rate가 Type 2 디바이스 설계의 핵심 파라미터. 너무 작으면 false snoop이 늘고, 너무 크면 die area 낭비.

#Linux 측 — cxl-cli에서의 노출

CXL 디바이스가 HDM-DB·HDM-D 중 어느 변형을 지원하는지는 capability 표시로 노출됩니다.

Terminal window
$ cxl list -m mem0 -i
{
"memdev":"mem0",
"ram_size":274877906944,
"capabilities": {
"hdm_dynamic_capacity": true,
"hdm_dc_back_invalidation": true, # BISnp 지원 (HDM-DB)
"hdm_dc_bias_mode": false # Bias 미지원 (Type 3는 보통)
}
}

Type 3 memory expander는 보통 BISnp만 또는 별도 일관성 메커니즘 없음 (host 단독 caching). Type 2 가속기Bias 또는 BISnp 또는 둘 다를 노출합니다.

#자주 하는 실수

#”BISnp가 Bias보다 항상 좋다”

아닙니다. BISnp는 매 access마다 동적 invalidation 가능성이라 워크로드 phase가 명확하면 Bias의 snoop-free access훨씬 빠릅니다. 워크로드 패턴 분석이 우선.

#”Bias 전환은 단순한 flag”

OS·driver·application 협조가 필요합니다. CUDA·ROCm·oneAPI의 고수준 APIbias hint드라이버에 전달하고, 드라이버가 device로 전환 명령을 보냅니다. 단일 instruction이 아님.

#”HDM-DB는 host가 어디든 빠르게 접근 가능”

아닙니다. BISnp 메커니즘은 동작은 정확하지만 지연 페널티가 있음. cache line ping-pong (host·device가 같은 line 번갈아 update)이 발생하면 throughput이 무너집니다.

#”Snoop filter가 크면 무조건 좋다”

die area·power 비용이 큼. filter hit ratefalse snoop 빈도균형점워크로드 의존. 일반화된 best size 없음.

#”Type 3는 BISnp 신경 안 써도 됨”

거의 그렇지만 일부 Type 3device-internal cache를 가질 수 있고 (rare), 그 경우 BISnp 지원이 필요합니다. cxl-cli capability 확인이 권장.

#정리

  • *HDM (Host-managed Device Memory)*는 device memory를 host SPA 공간에 매핑한 영역입니다.
  • HDM-Ddevice-ownedBias 모드 전환으로 snoop 회피. 워크로드 phase 명확할 때 효율적.
  • HDM-DBdevice-backedBISnpdevice가 host cache를 명시적 무효화. multi-owner·shared 영역에 적합.
  • Bias 전환은 software trigger, BISnp는 hardware-driven dynamic.
  • Snoop filterType 2 디바이스 설계의 핵심 — false snoop과 die area의 균형.

#다음 편

Ch 4: Pooling·GFAM·Fabric — Multi-host 메모리 공유에서 CXL 2.0 pooling3.0 coherent fabric, 그리고 *GFAM (Global Fabric Attached Memory)*가 어떻게 다중 host 메모리 공유를 가능하게 하는지를 본격적으로 분해합니다.

#관련 항목

#시리즈 자료 출처 안내

본 글은 CXL Consortium 공개 자료·Linux drivers/cxl/ 소스·hyperscale 연구를 1차 자료로 합니다. CXL 4.0 Specification은 § navigation aid로만 인용. 자세한 spec 인용 정책은 Ch 1 footer 참고.