Interface Standards/CXL

[4] CXL - Transaction layer - CXL.mem protocol

Return 2024. 7. 7. 15:01

 

CXL spec이 매우 방대한 내용을 담고 있기 때문에 본 블로그에서는 CXL spec을 이해하기 위해 도움이 될 만한 것들을 골라서 간략히 정리하였습니다. 자세한 내용은 PCIe/CXL spec을 참고해주세요.

 

이전 글) 

 

[3] CXL - Transaction layer - CXL.cache protocol

 

returnclass.tistory.com

 

CXL.mem 개요

 CXL.mem 프로토콜은 CPU와 메모리 간의 트랜잭셔널 인터페이스로, Compute Express Link (CXL)의 물리적 및 링크 계층을 사용하여 다이 간 통신을 합니다. 이 프로토콜은 호스트 CPU, 가속기 장치 또는 메모리 버퍼 칩 내에 위치한 메모리 컨트롤러 등 여러 메모리 연결 옵션에 사용될 수 있습니다. CXL.mem은 휘발성 및 비휘발성 메모리 등 다양한 메모리 유형과 플랫, 계층적 구성 등을 포함한 다양한 구성에 적용될 수 있습니다.

CXL.mem 트랜잭션의 구성

 CXL.mem 트랜잭션은 Master에서 Subordinate로 전송되는 M2S 트랜잭션과 Subordinate에서 Master로 전송되는 S2M 트랜잭션으로 구분됩니다. 각각의 트랜잭션은 데이터 유무에 따라 다르게 구성됩니다.

M2S 트랜잭션

  • Request without data (Req): 데이터 없이 읽기, 무효화, 신호 전송 등의 요청을 포함합니다.
  • Request with Data (RwD): 데이터를 포함한 쓰기 요청을 포함합니다.

S2M 트랜잭션

  • No Data Response (NDR): 데이터 없이 완료 및 상태 표시 응답을 포함합니다.
  • Data Response (DRS): 메모리 읽기 데이터 응답을 포함합니다.

CXL.mem 메시지 클래스 및 Opcode

M2S Request (Req)

M2S 요청 메시지는 읽기, 무효화, 신호 전송 등의 작업을 수행합니다. 주요 필드는 다음과 같습니다:

  • Valid: 유효한 요청임을 나타냅니다. 
  • MemOpcode: 수행할 메모리 작업을 지정합니다. 
  • MetaField: 최대 3개의 Meta Data 필드를 지정할 수 있습니다. 
  • MetaValue: MetaField가 No-Op가 아닐 경우 필드를 업데이트할 값을 지정합니다. 
  • SnpType: 필요한 snoop 유형을 지정합니다. 
  • Address: 호스트 물리적 주소를 지정합니다. 
  • Tag: CXL.mem 트랜잭션 기간 동안 할당된 소스 항목을 지정합니다. 
  • TC: 품질 서비스를 지정합니다. 
  • LD-ID: 여러 논리적 장치 내의 논리적 장치를 식별합니다.

M2S Request with Data (RwD)

RwD 메시지는 주로 Master에서 Subordinate로 쓰기를 포함합니다. 주요 필드는 다음과 같습니다:

  • Valid: 유효한 요청임을 나타냅니다. 
  • MemOpcode: 수행할 메모리 작업을 지정합니다. 
  • MetaField: 최대 3개의 Meta Data 필드를 지정할 수 있습니다. 
  • MetaValue: MetaField가 No-Op가 아닐 경우 필드를 업데이트할 값을 지정합니다. 
  • SnpType: 필요한 snoop 유형을 지정합니다. 
  • Address: 호스트 물리적 주소를 지정합니다. 
  • Tag: CXL.mem 트랜잭션 기간 동안 할당된 소스 항목을 지정합니다. 
  • TC: 품질 서비스를 지정합니다. 
  • Poison: 데이터에 오류가 포함되었음을 나타냅니다. 
  • LD-ID: 여러 논리적 장치 내의 논리적 장치를 식별합니다.

S2M No Data Response (NDR)

NDR 메시지는 Subordinate에서 Master로의 완료 및 상태 표시 응답을 포함합니다. 주요 필드는 다음과 같습니다:

  • Valid: 유효한 요청임을 나타냅니다. 
  • Opcode: 수행할 메모리 작업을 지정합니다. 
  • MetaField: Meta Data 상태를 인코딩합니다. 
  • MetaValue: Meta Data 값을 지정합니다. 
  • Tag: 관련된 M2S 요청 또는 RwD와 함께 전송된 Tag를 반영합니다. 
  • LD-ID: 여러 논리적 장치 내의 논리적 장치를 식별합니다. 
  • DevLoad: 장치 로드를 나타냅니다.

S2M Data Response (DRS)

DRS 메시지는 Subordinate에서 Master로의 메모리 읽기 데이터를 포함합니다. 주요 필드는 다음과 같습니다:

  • Valid: 유효한 요청임을 나타냅니다. 
  • Opcode: 수행할 메모리 작업을 지정합니다. 
  • MetaField: Meta Data 상태를 인코딩합니다. 
  • MetaValue: Meta Data 값을 지정합니다. 
  • Tag: 관련된 M2S 요청 또는 RwD와 함께 전송된 Tag를 반영합니다. 
  • Poison: 데이터에 오류가 포함되었음을 나타냅니다. 
  • LD-ID: 여러 논리적 장치 내의 논리적 장치를 식별합니다. 
  • DevLoad: 장치 로드를 나타냅니다.

 

결론

CXL.mem 트랜잭션 레이어는 CPU와 메모리 간의 효율적인 데이터 전송 및 일관성 유지를 위한 중요한 역할을 합니다. 다양한 메시지 클래스와 Opcode를 통해 트랜잭션을 관리하며, 각 채널의 독립성과 크레딧 기반 흐름 제어는 높은 성능과 확장성을 보장합니다. CXL.mem 프로토콜은 다양한 메모리 구성과 유형에 최적화되어 고성능 컴퓨팅 환경에서 중요한 역할을 합니다.

 

 

 

 

Reference) 

 - Compute Express Link Specification