CXL 기반 시스템
개요
CXL(Compute Express Link) 기반 시스템은 CPU, 메모리, 가속기를 CXL 프로토콜로 연결하는 차세대 컴퓨팅 아키텍처다. 기존 PCIe 기반 시스템이 I/O 중심이었던 것과 달리, CXL은 메모리 중심 인터커넥트로 설계돼 호스트와 디바이스 간 코히어런트한 메모리 접근을 가능하게 한다.
CXL 기반 시스템의 핵심 가치는 메모리 리소스의 유연한 공유와 확장에 있다. 클라우드 데이터센터에서는 서버 간 메모리 사용률 불균형이 심한 문제를 CXL 메모리 풀링을 통해 해결할 수 있으며, 가속기 기반 워크로드에서는 호스트-가속기 간 일관된 메모리 뷰를 통해 프로그래밍 효율성을 높일 수 있다. 또한 CXL 3.0 이후에는 멀티 호스트 패브릭이 추가돼 다중 서버가 하나의 메모리 풀을 공유하는 구조까지 확장됐다.
핵심 개념
CXL 기반 시스템 구성 요소
CXL 기반 시스템은 크게 네 가지 핵심 구성 요소로 이뤄진다.
- 호스트 CPU: CXL 컨트롤러를 내장해 CXL.io, CXL.cache, CXL.mem 프로토콜을 지원한다. 호스트는 CXL.io로 디바이스를 발견하고 설정하며, CXL.cache를 통해 가속기가 호스트 메모리를 코히어런트하게 캐시하도록 허용하고, CXL.mem로 외부 메모리 디바이스에 로드/스토어로 접근한다.
- CXL 스위치/라우터: 여러 호스트와 디바이스를 중계하는 장치다. CXL 2.0에서 도입된 스위치는 포트 기반 라우팅(PBR) 테이블을 사용해 트래픽을 라우팅하며, HDM(Host-Managed Device Memory) 디코더가 메모리 주소를 실제 디바이스에 매핑한다.
- CXL 메모리 디바이스: Type 3 디바이스로, 메모리 익스팬더(FAM: Function-Attached Memory) 역할을 한다. 호스트가 CXL.mem 프로토콜을 통해 접근하며, 로컬 DIMM보다는 낮은 대역폭과 높은 지연시간을 가지지만, 외부 메모리를 load/store 모델로 다룰 수 있게 한다.
- CXL 가속기: Type 1 또는 Type 2 디바이스로, FPGA, GPU, AI 가속기 등이 해당된다. Type 1은 CXL.cache를 통해 호스트 메모리를 코히어런트하게 접근하고, Type 2는 로컬 메모리도 갖춘다.
주소 디코딩과 Fabric Manager
CXL 2.0부터는 단순한 링크 연결을 넘어 주소 공간 분할과 패브릭 관리가 중요해진다. 호스트는 HDM 디코더를 통해 특정 호스트 물리 주소 구간을 CXL 디바이스 메모리 범위에 매핑하고, 스위치는 포트 기반 라우팅 정보에 따라 해당 요청을 올바른 하위 포트로 전달한다.
대규모 배치에서는 Fabric Manager가 스위치, 디코더, 메모리 풀의 구성을 조정한다. 이 계층이 있어야 여러 호스트가 같은 패브릭을 공유하더라도 어느 메모리 범위를 어느 호스트에 노출할지, 풀링과 분할을 어떤 정책으로 운영할지를 일관되게 관리할 수 있다.
디바이스 타입과 프로토콜 매핑
| 타입 | 주요 디바이스 | 지원 프로토콜 | 특징 |
|---|---|---|---|
| Type 1 | FPGA, 네트워크 가속기 | CXL.io + CXL.cache | 호스트 메모리 코히어런시 지원 |
| Type 2 | GPU, AI 가속기 | CXL.io + CXL.cache + CXL.mem | 로컬 메모리 + 호스트 코히어런시 |
| Type 3 | 메모리 익스팬더, FAM | CXL.io + CXL.mem | 대용량 메모리 확장 |
토폴로지 변천사
CXL 기반 시스템의 토폴로지는 세대가 거듭될수록 확장됐다.
CXL 1.x (Point-to-Point): 호스트와 디바이스가 1:1로 직접 연결되는 구조다. 가장 단순하지만 디바이스 수가 호스트 포트 수로 제한된다.
CXL 2.0 (1-hop Switching): CXL 스위치가 추가되면서 여러 호스트와 디바이스를 연결할 수 있게 됐다. 메모리 풀링과 동적 할당이 가능해졌으며, 하나의 메모리 디바이스를 여러 호스트에 논리적으로 분할해 노출할 수도 있다.
CXL 3.0/3.1 (Multi-hop Fabric): 다중 스위치와 패브릭 연결이 도입돼 대규모 클러스터까지 확장됐다. 다중 호스트가 하나의 메모리 풀을 공유하며, 메모리 인터리빙과 멀티 패스 라우팅, peer-to-peer 경로 구성이 지원된다.
비교/분석
기존 인터커넥트와의 비교
| 항목 | PCIe | CXL 1.x | CXL 2.0 | CXL 3.0 |
|---|---|---|---|---|
| 주요 용도 | I/O 연결 | I/O + 코히어런시 | I/O + 메모리 풀링 | 대규모 메모리 패브릭 |
| 프로토콜 | PCIe Transaction Layer | CXL.io/cache/mem | CXL.io/cache/mem | CXL.io/cache/mem |
| 코히어런시 | 없음 (DMA 기반) | 호스트-디바이스 | 호스트-디바이스 | 다중 호스트 |
| 메모리 공유 | 불가 | 제한적 | 풀링 가능 | 패브릭 공유 |
| 스위칭 | PCIe 스위치 | 없음 | 1-hop | 다중 홉 |
| 대상 워크로드 | 스토리지, 네트워크 | 단순 가속기 | 메모리 확장, 풀링 | 데이터센터 전체 |
시나리오별 활용
메모리 확장 시나리오: 서버의 로컬 DIMM 슬롯이 가득 찼을 때 CXL 메모리 익스팬더를 추가해 용량을 확장하는 경우다. 소켓 수를 늘리지 않고도 메모리를 늘릴 수 있으므로 비용 효율이 높다. 예를 들어, 256GB DDR5 DIMM 8개로 구성된 시스템에 CXL 메모리 익스팬더를 추가해 1TB 이상의 메모리를 확장할 수 있다.
메모리 풀링 시나리오: 여러 서버가 CXL 스위치를 통해 하나의 메모리 풀을 공유하는 경우다. 클러스터 내 서버 간 메모리 사용률 불균형이 심할 때, 사용하지 않는 메모리를 다른 서버에 동적으로 할당할 수 있다. 이는 메모리 자원 활용률을 크게 향상시킨다.
가속기 통합 시나리오: GPU나 FPGA 같은 가속기가 CXL.cache와 CXL.mem을 통해 호스트 메모리에 코히어런트하게 접근하는 경우다. 기존 PCIe 기반 DMA 방식과 달리, 가속기가 호스트 메모리의 최신 데이터를 직접 읽을 수 있으므로 데이터 일관성 문제를 해결할 수 있다.
동작 원리
CXL 프로토콜 스택 동작
CXL 기반 시스템의 동작은 세 프로토콜의 협업으로 이뤄진다.
CXL.io: 기존 PCIe 트랜잭션 레이어와 동일한 기능을 한다. 디바이스 발견, 설정, 인터럽트, DMA, 레지스터 접근을 담당하며, OS와 펌웨어가 디바이스를 관리하는 데 사용된다.
CXL.cache: 가속기가 호스트 메모리를 코히어런트하게 캐시하도록 한다. 가속기가 호스트 메모리 주소를 요청하면, 호스트의 캐시 계층이 해당 데이터의 최신 버전을 제공한다. 이를 통해 가속기가 오래된 데이터를 처리하는 문제를 방지한다.
CXL.mem: 호스트가 CXL 메모리 디바이스에 붙은 메모리에 로드/스토어로 접근하도록 한다. 호스트 관점에서는 로컬 메모리처럼 보이지만, 실제 접근은 CXL 라우터를 통해 원격 메모리 디바이스로 이뤄진다.
메모리 풀링 동작 흐름
- 초기화: 호스트 부팅 시 CXL.io로 디바이스를 발견하고, CXL 스위치의 HDM 디코더에 주소 윈도우를 설정한다.
- 할당: OS가 CXL 메모리를 NUMA 노드로 인식하고, 페이지 테이블에 물리 주소를 매핑한다.
- 접근: 호스트가 CXL 메모리에 접근하면, 스위치가 HDM 디코더를 통해 호스트 물리 주소(HPA)를 디바이스 물리 주소(DPA)로 변환하고 적절한 메모리 디바이스로 라우팅한다.
- 운영 제어: Fabric Manager와 시스템 소프트웨어가 사용 패턴을 바탕으로 메모리 풀을 분할하거나 재할당한다.
코히어런시 메커니즘
CXL은 하드웨어 기반 코히어런시 프로토콜을 사용한다. 호스트 CPU의 캐시 계층과 CXL 가속기/메모리 디바이스 간 데이터 일관성을 유지하기 위해, MESI/MOESI 프로토콜 변형을 사용한다.
- Modified: 가속기가 데이터를 수정했을 때 호스트 캐시에서 해당 라인이 무효화된다.
- Exclusive: 가속기가 유일하게 보유한 상태.
- Shared: 여러 디바이스가 동일한 데이터를 공유하는 상태.
- Invalid: 더 이상 유효하지 않은 상태.
장단점
장점
- 메모리 확장 유연성: 소켓 수를 늘리지 않고도 CXL 메모리 익스팬더만 추가해 메모리 용량을 확장할 수 있다. 하드웨어 비용과 전력 소모를 줄이면서 대용량 메모리 구성이 가능하다.
- 자원 활용률 극대화: 메모리 풀링을 통해 서버 간 메모리 사용률 불균형을 해결할 수 있다. 클러스터 전체의 메모리 활용률이 크게 향상된다.
- 코히어런트한 메모리 접근: 가속기가 호스트 메모리에 코히어런트하게 접근할 수 있으므로, 기존 DMA 방식의 데이터 일관성 문제를 해결할 수 있다.
- 프로그래밍 편의성: 호스트 관점에서 CXL 메모리가 로컬 메모리처럼 보이므로, 기존 코드의 수정 없이 메모리 확장이 가능하다.
- 표준 기반: CXL은 PCIe 물리 계층 위에서 동작하므로, 기존 인프라를 활용할 수 있다.
단점
- 지연시간 오버헤드: CXL 메모리 접근은 로컬 DIMM 대비 높은 지연시간을 가진다. CXL 1.x는 약 150-200ns, CXL 2.0은 스위치 오버헤드로 추가 지연이 발생할 수 있다.
- 대역폭 제한: CXL 링크 대역폭은 PCIe 5.0 기준으로 약 32GB/s(양방향)이며, 로컬 DDR5 대비 낮은 대역폭을 가진다.
- 호환성 제한: CXL을 지원하는 CPU와 디바이스가 아직 제한적이다. 인텔 4세대 Xeon, AMD EPYC 9004 시리즈 이후부터 본격 지원된다.
- 소프트웨어 생태계 미성숙: CXL 메모리 관리, 모니터링, 최적화 관련 소프트웨어 도구와 드라이버가 아직 발전 단계에 있다.
- 비용: CXL 스위치, 메모리 익스팬더 등 추가 하드웨어 비용이 발생한다.
관련 기술
표준 및 사양
- CXL 사양 4.0: 최신 공개 사양으로 128GT/s 링크 속도, bundled port, 추가 메모리 RAS 기능을 포함한다.
- CXL 사양 3.1: CXL 3.x 패브릭 운영의 기반이 되는 사양으로 다중 홉 패브릭, 메모리 풀링, 패브릭 관리 모델을 정의한다.
- PCIe 6.0: CXL 3.0의 물리 계층 기반. PAM4 변조, FEC(Forward Error Correction)를 지원한다.
- JEDEC DDR5: CXL 메모리 디바이스 내부에 사용되는 메모리 기술.
- Fabric Manager 소프트웨어 스택: 메모리 풀 분할, 할당, 장애 격리를 운영하는 관리 계층.
관련 문서
참고 문헌
- CXL Consortium. "Compute Express Link Specification, Revision 3.1." 2023.
- CXL Consortium. "CXL Specification, Revision 3.0." 2022.
- CXL Consortium. "CXL Specification, Revision 2.0." 2020.
- CXL Consortium. "CXL Specification, Revision 1.1." 2019.
- Intel Corporation. "Intel CXL Product Brief." 2024.
- AMD. "AMD EPYC with CXL Support." 2024.
핵심 정리
CXL 기반 시스템은 CPU, 메모리, 가속기를 CXL 프로토콜로 연결하는 차세대 컴퓨팅 아키텍처로, 메모리 중심 인터커넥트를 통해 코히어런트한 메모리 접근과 유연한 자원 공유를 가능하게 한다. CXL 1.x의 Point-to-Point 연결에서 시작해, CXL 2.0의 스위칭과 풀링, CXL 3.0의 다중 홉 패브릭으로 진화하면서 데이터센터의 메모리 리소스 관리 방식을 근본적으로 바꾸고 있다. 특히 HDM 디코더와 Fabric Manager를 통해 외부 메모리를 주소 공간과 운영 정책 측면에서 통합할 수 있다는 점이 핵심이다. 메모리 확장, 풀링, 가속기 통합 등 다양한 시나리오에서 기존 PCIe 기반 시스템 대비 높은 유연성을 제공하지만, 지연시간과 대역폭 한계를 고려한 계층적 메모리 운영이 함께 필요하다.