프로토콜 구조: Flex Bus 레이어링과 동적 다중화
CXL Protocol은 Flex Bus 아키텍처 내에서 세 개의 프로토콜을 동적으로 다중화합니다. CXL.io는 PCIe 기반의 I/O 프로토콜로 기기 검색, 구성, 전원 관리 등을 담당하며, CXL.cache와 CXL.mem은 맞춤식 커맨드 세트를 사용합니다. 트랜잭션 레이어와 링크 레이어는 CXL.io용과 CXL.cache/CXL.mem용으로 분리되어 각각의 프로토콜 요구사항을 최적화합니다.
메모리 의미론과 캐시 코히어런시
CXL.mem은 바이트 주소 지정 가능한 메모리 의미론을 제공하여 호스트가 로드/스토어 명령을 통해 기기 로컬 메모리에 접근할 수 있습니다. 메모리 접근은 항상 64바이트 캐시 라인 단위로 이루어집니다. CXL.cache 프로토콜은 호스트와 기기 간의 요청(Req), 응답(Rsp), 데이터(Data) 세 개의 독립적인 플로우 제어 채널을 사용하여 비대칭 코히어런시를 구현합니다.
기기 타입과 실무 활용
Type 1 기기는 완전히 코히어런트한 캐시만 제공하고 기기 메모리는 없습니다. Type 2 기기는 캐시와 자체 메모리(DDR, HBM 등)를 모두 보유하며, Type 3 기기는 메모리 익스팬더로 호스트가 관리하는 기기 메모리(HDM)만 제공합니다. 트랜잭션 레이어는 각 프로토콜과 관련된 아키텍처 순서 의미론, 플로우 컨트롤, 크레딧을 규정합니다.