개요
Compute Express Link(CXL)은 PCIe에 장착하는 새로운 프로토콜로 캐쉬와 메모리에 최적화된 구조를 가지고 있다. CXL은 auto-negotiate란 특성을 사용해서 PCIe에 NVMe와 같은 PCIe용 프로토콜이 사용되면 그 모드로 아니면 CXL모드로 자동 전환되는 구조를 가지고 있다.
CXL는 3개의 프로토콜로 나뉠 수 있다.
- CXL.io
- PCIe의 IO와 같은 규격을 가진다.
- CXL.memory(CXL.mem)
- CPU Host에서 디바이스로의 Direct접근을 말한다.
- CXL.cache
- Device에서 CPU로 캐쉬 Coherent한 Direct Access가 가능하게 하는 프로토콜이다.
CXL Cache/Memory Hierarchy
- CXL은 Asymmetric cache coherency protocol MESI를 통해서 관리된다.
- CXL.mem 프로토콜은 메모리 디바이스에 DDR처럼 연결되어 캐싱 환경을 제공한다. CPU가 보기에, DDR과 CXL.mem 프로토콜을 동일한 기능을 제공한다.
- CXL.cache 프로토콜은 디바이스 캐쉬 (upto 1MB in CXL 1.1)과의 Consistency를 제공한다.
- CPU Cache와 CXL캐쉬는 MESI프로토콜을 사용하여서 서로 cache state를 공유한다. MESI는 각각의 캐쉬라인 주소를 얻는데 사용된다. CXL디바이스 사이의 캐쉬 상태는 Host가 주도적으로 관리하며 CXL device transparent하게 cache state 공유를 제공한다.
CXL Snoop
CXL Host (CPU)는 CXL 디바이스, 현재 코어 그리고 다른 NUMA Core처럼 여러 하드웨어의 CXL Cache의 Consistency를 맞추어 주어야 한다. 이를 위해서 Device는 Request나 Snoop과 같은 간단한 명령어를 통해서 이 작업을 수행한다.