CXL이 주목받는 가장 큰 이유는 여러 시스템의 구성요소를 모아 풀을 구성할 수 있기 때문이다. PCIe가 SSD와 메모리의 연결 같은 일대일 통신 기술이고, CXL 역시 현재까지는 마찬가지 일대일 통신 표준이다. 하지만 CXL은 일관된 프로토콜을 통한 전송을 이용해 향후 일대다 통신을 지원한다.
현재 CXL의 버전은 1.1이지만, 2.0 및 3.0 사양이 이미 발표된 상태이다. CXL이 PCIe를 기반으로 하기 때문에 새 버전 CXL은 새 버전 PCIe를 따라 변화한다. PCIe 새 버전 발표와 2년 정도의 격차를 두고 있는데, 새로운 사양과 이를 구현한 실제 제품 출시 간에는 이보다 더 긴 시차가 생길 수도 있다. 현재 CXL 1.1 및 2.0 지원 장비는 이른바 테스트를 위한 엔지니어링 샘플 단계에 있다.
CXL이 지원하는 핵심 프로토콜은 세 가지이다.
- CXL.io : PCIe 5.0 프로토콜의 발전된 버전으로, 초기화, 디바이스 발견, 디바이스 연결용이다.
- CXL.cache : 이 프로토콜은 호스트와 디바이스 간의 인터랙션을 정의한다. 요청/응답 접근 방식으로 초저지연 접속을 통해 연결된 CXL 디바이스가 호스트의 메모리를 효과적으로 캐싱할 수 있다.
- CXL.mem : 호스트 프로세서가 연결된 디바이스 메모리에 액세스할 수 있으며, 휘발성 메모리와 지속성 메모리 아키텍처 모두를 지원한다.
CXL.mem은 CXL 1.1에서 매우 중요한 기능이다. 어떤 서버의 RAM이 부족하다면, 빈 PCIe 5.0 슬롯에 있는 CXL 메모리 모듈이 추가 메모리를 제공할 수 있다. 약간 낮은 성능과 추가 지연이 발생할 수 있지만, 당장 메모리를 구매하지 않고도 서버에 추가 RAM을 제공할 수 있다.
CXL 2.0은 메모리 풀링을 지원한다. 즉 여러 시스템의 메모리를 가져와 사용할 수 있다. 마이크로소프트는 자체 조사를 통해 모든 VM 중 절반은 할당된 메모리의 절반에 손도 대지 않는다고 밝힌 바 있다. CXL 2,0은 이렇게 사용하지 않는 메모리를 찾아내 사용할 수 있다. 마이크로소프트는 CXL을 통해 전체 DRAM 필요 용량을 10% 줄일 수 있다고도 밝혔다.
결국 CXL은 수많은 CPU와 메모리, FPGA나 GPU 같은 가속기, 기타 주변기기를 연결하는 포괄적인 인터페이스가 될 것으로 기대된다. 최근 발표된 CXL 3.0 사양은 이런 해체를 더 진전시켜 다른 구성 요소, 즉 프로세서와 스토리지, 네트워킹, 기타 가속기까지 풀로 구성해 2.0 사양의 메모리처럼 여러 호스트가 이용할 수 있다.
3.0 사양은 또한 스위치나 스위치 패브릭을 통한 일대일 직접 통신을 제공하는데, 이론적으로는 두 대의 GPU가 호스트 CPU나 메모리의 개입없이도 서로 통신할 수 있다. CXL 마케팅 워크그룹의 공동 의장이자 인텔 생태계 관리자인 커트 렌더는 “기본적으로 모든 곳에 적용될 것이다. 향후 몇 년 내에 모든 신형 서버의 표준 기능이 될 것이다”라고 강조했다.
기업 데이터센터에서 구동하는 애플리케이션이 얻을 수 있는 이점은 많다. 렌더는 우선 CXL이 시스템 수준에서 운영되기 때문에 대부분 애플리케이션은 수정할 필요없이 CXL 기능의 이점만 취할 수 있다고 설명했다. 인메모리 데이터베이스 애플리케이션이 메모리 풀링을 이용하는 시나리오를 생각해 볼 수 있다.
각 구성요소의 풀링은 AI 워크로드에 필요한 자원을 제공하는 데도 유용하다. CPU와 GPU, FPGA, 네트워크 포트가 모두 풀로 구성된다면, 전체 데이터센터가 마치 하나의 시스템처럼 동작할 수 있다.
물론, 너무 앞서나갈 필요는 없다. 아직은 CXL 2.0을 지원하는 제품도 출시 전이기 때문이다. 하지만 최근 열린 플래시 메모리 서밋의 시연은 실제 제품 출시가 멀지 않았음을 보여줬다.
editor@itworld.co.kr