이전 글)
ARB/MUX 소개
CXL은 크게 두 가지 종류의 도메인으로 구성되어 있습니다. 하나는 CXL.io/PCIe 도메인이며, 또다른 도메인은 CXL.cache + CXL.mem 도메인입니다. 많은 사람들이 CXL.io 도메인, CXL.cache 도메인, CXL.mem 도메인으로 나누어져 있는 줄 알지만 이는 잘못된 정보입니다.
이렇게 CXL의 상위 layer는 두 가지 도메인으로 구성되어 있지만, PCIe및 CXL의 physical layer는 하나로 공유한 구조입니다. 즉, 두 가지 도메인의 transaction layer, link layer에서 들어오는 flit 중 하나 선택해야되는 일이 발생합니다. CXL의 ARB/MUX 계층이 이 역할을 담당합니다.
ARB/MUX 주요 역할
Flit Muxing/De-Muxing
흔히 weighted round robin을 적용한 muxing을 적용하여, CXL.io 도메인과 CXL.cache/.mem 도메인 중 하나의 flit을 physical layer로 넘겨줍니다. 이를 위해 각각의 도메인에 대한 weight를 지정할 수 있는 register가 따로 존재합니다.
Null flit 생성 및 추가
Link up이 된 상태. 즉, link가 활성화중인 상태에서 주고 받을 flit이 일시적으로 없을 수 있습니다. 이럴 때에는 link를 비활성화하는 대신 link 활성화를 계속해서 유지시키기위해 아무 정보도 담고 있지 않는 null flit을 생성하여 flit과 flit 사이의 공백을 채웁니다.
Virtual Link State Machines(vLSM)
CXL의 ARB/MUX Layer는 두 개의 Virtual Link State Machines(vLSM)를 관리하며, CXL.io와 CXL.cache/CXL.mem 도메인 각각에 대해 전력 상태 전환 요청을 처리합니다. 이 계층은 링크 파트너 간에 ARB/MUX Link Management Packets(ALMPs)을 교환하여 전력 상태 전환을 조정하며, 전송(Tx) 시 요청을 PHY로 전달하고, 수신(Rx) 시 ALMPs를 처리하여 vLSM을 업데이트합니다. PCIe 전용 모드 또는 CXL.io 전용 모드에서는 ARB/MUX Layer가 우회되어 ALMP 생성이 비활성화됩니다.
이로써 CXL에 관한 대략적인 설명을 마무리 하겠습니다. CXL은 PCIe의 Physical layer를 공유하고 있기 때문에, CXL의 PHY는 PCIe 챕터에서 설명한 physical layer 부분으로 대체하겠습니다.
참조글)
Reference)
- Compute Express Link Specification
'Interface Standards > CXL' 카테고리의 다른 글
[9] CXL 관련 논문들 (5) | 2024.08.31 |
---|---|
[7] CXL - Link layer - Retry (0) | 2024.08.30 |
[6] CXL - Link layer - Flit Packing (0) | 2024.08.30 |
[5] CXL - Transaction layer - Transaction Flow (0) | 2024.07.07 |
[4] CXL - Transaction layer - CXL.mem protocol (0) | 2024.07.07 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!