![[8] CXL - ARB/MUX Layer](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpzeEF%2FbtsJmOuSPz7%2FVLILwtlcXJVYgXytU5OAqk%2Fimg.png)
이전 글)
[7] CXL - Link layer - Retry
이전글) [6] CXL - Link layer - Flit Packing이전글) [5] CXL - Transaction layer - Transaction FlowCXL spec이 매우 방대한 내용을 담고 있기 때문에 본 블로그에서는 CXL spec을 이해하기 위해 도움이 될 만한 것들을
returnclass.tistory.com
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 부분으로 대체하겠습니다.
참조글)
[6] PCIe - Physical Layer (PCIe Gen1 & Gen2) - Transmit Logic
이 글은 제가 PCIe를 공부하면서 겪은 시행착오를 바탕으로 정리한 글입니다. PCIe를 처음 접하는 분들에게 좋은 길라잡이가 되었으면 합니다. 이전 글) [5] PCIe - Data Link Layer (DLLP & Ack/Nak protocol)
returnclass.tistory.com
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 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!