본문 바로가기

CXL

04. CXL QEMU document

URL: https://www.qemu.org/docs/master/system/devices/cxl.html

 

Compute Express Link (CXL) — QEMU documentation

Compute Express Link (CXL) From the view of a single host, CXL is an interconnect standard that targets accelerators and memory devices attached to a CXL host. This description will focus on those aspects visible either to software running on a QEMU emulat

www.qemu.org

 

01. Compute Express Link (CXL)


-. single host 관점에서, CXL은 accelerator, memory device를 타겟으로 만들어진 interconnect 표준이다.

-. CXL은 PCIe의 컨셉과 infrastructure를 공유 한다.

  • CXL Host Bridge는 CXL Root Port를 소유하고 있고, CXL Root Port는 CXL 혹은 PCIe EP(End Point)에 직접 연결된다.
  • CXL Switch도 존재한다.

-. 많은 경우에, 추가적인 control 이나 capabilities는 PCIe 인터페이스를 통해 노출된다.

-. 대부분, 다양한 CXL 요소들은 PCIe Device를 기반으로 생성된다.

 

-. Most Conventional PCIe Interface

  • Configuratioin space access
  • BAR mapped memory access (used for registers and mailboxes)
  • MSI/MSI-X
  • AER
  • DOE mailboxes
  • IDE

-. Memory Operations

  • DRAM/NVDIMMs에 접근하는 방법과 동일
    호스트가 normal memory에 접근하기 위해 지원하는 방식은 모두 사용 가능

-. Cache Operations

  • QEMU에서는 cache operation은 에뮬레이션 하기 어렵다

 

02. CXL 2.0 Device Types


-. CXL 2.0 Endpoint는 3가지 타입으로 분류 가능

  • Type1: host memory의 캐시 코히런시를 지원
    e.g.,) crypto acceleratos.
  • Type2: host memory와 HDM(Host managed device memory)의 캐싱 일관성(caching of host memory)을 지원
  • Type3: Memory Device
    이 device는 CXL Host에게 추가 적인 메모리(HDM)를 attaching 하는 방법으로 동작한다.
    CXL Topology는 여러개의 Type3 메모리 디바이스에 대한 interleaving 한다.

 

03. CXL System Components


-. CXL 시스템은 CXL 2.0 스펙에서 정의한 방법을 이용하여 시스템 소프트웨어에서 검색할 수 있는
컨트롤과 기능을 갖춘 "Standard Component"로 이뤄진 호스트로 구성된다. (?)

 

03.01 CXL Fixed Memory Windows (CFMW)

  • CFMW는 특정 범위의 호스트 물리 주소 공간으로 구성되어 있다.
    해당 주소 공간은 특정 CXL 호스트 브릿지로 라우팅된다.
  • 일반적인 S/W가 초기화될 때, CFMW는 특정한 interleaving configuration와 이와 연관된 QTG를  가지고 있다.
    QTG: Quality of Service Throttling Group.
  • 이 정보는 시스템소프트웨어에 제공되며, 이 정보를 활용하여 사용 가능한 CXL 메모리 장치 간에 어떻게 interleaving 배치를 구성할지 결정을 내린다.
  • 이는 CEDT(CXL Early Discovery Table)의 CFMWS(Structures)로 제공된다. (ACPI table)

03.02 CXL Host Bridge (CXL HB)

  • CXL Host Bridge는 PCIe와 유사하다. 그러나 CXL 스펙은 CXL HBCR(Host Bridge Component Register)를 추가로 정의한다.
  • CHBCR MMIO 공간은 CEDT.CHBS에 의해서 정의된다. (PCI BAR에 있는 CXL Component Register와 동일하게 사용)
  • HDM 디코더의 configuration은 특정 호스트(CPU) 물리 주소 범위의 CXL 메모리 접근을 해당 주소를 서비스하는 CXL 디바이스가 있는 목표 포트로 라우팅하는 것.
    • 이는 단일 Root Port(RP)로의 매핑일 수도 있고 대상 Root Port 집합을 향한 것일 수도 있다.

03.03 CXL Root  Ports (CXL RP)

  • PCIe의 Root Port와 동일.
  • PCIe Configuration Space에 CXL을 위한 여러 DVSEC (Designated Vendor Specific Extended Capabilities)가 있으며 이와 연관된 Component register도 존재한다.

03.04 CXL Switch

  • 호스트는 복잡한  리라우팅, device pooling에 대해서 알 수 없으며 단순히 디바이스가 hot-added 되거나 hot-removed 되었다는 것만 알 수 있다.
  • CXL 스위치는 PCIe가 가지고 있는 구조와 유사한 구조를 가지고 있다.
    하나의 upstream port, 내부의 PCI bus, 여러개의 downstream port로 구성되어 있다.
  • CXL USP, DSP 모두 CXL을 위한 DVSEC(in configuration space), Component Register(in PCI BARs)를 가지고 있다.
  • UPS는 HDM 디코더를 위한 configuration interface가 존재한다.
    이 interface는 들어오는 memory 접은을 적절한 DSP로 라우팅 한다.

03.05 CXL Memory Devices - Type 3

  • CXL Type 3 장치는 PCI class code를 사용하며 일반적인 운영체제의 Device Driver의 지원을 받는다.
  • 이 EndPoing(EP) 장치들은 HDM 디코더를 가지고 있다. 이 디코더는 라우팅이 아닌 들어오는 Host Physical Address(HPA)를 Device Physical Address(DPA)로 변환한다.

 

04. CXL Memory Interleave


-. Memory Read in a fully configured CXL topology.

-. System S/W는 CFMWS를 제외한 모든 요소의 생성/구성/설정을 담당한다.

-. System S/W는 CFMWS에서 적절한 범위를 할당하고, 시스템 RAM의 경우처럼, 일반 메모리 구성을 통해 해당 범위를 노출한다.

 

04.01 3 CXL Fixed Memory Windows(CFMW)

  • 3개의 CFMW는 System physical address Map의 각기 다른 영역에 대응
  • 각각의 CFMW는 CXL Host Bridge(HB)간에 특정한 인터리브 셋업(설정)을 가지고 있다.
    • CFMW0: HB0에 대한 uninterleaved access.
    • CFMW2: HB1에 대한 uninterleaved access.
    • CFMW1: HB0와 HB1에 대한 interleaved access.

04.02 Two CXL Host Bridges

  • 각각의 HB는 2개의 CXL Root Ports와 (프로그래밍 가능한) HDM Decoder를 가지고 있으며,
    메모리 access를 단일 포트로 라우팅 하거나, 여러 포트에 걸쳐 인터리빙 할 수 있다.
  • 구성의 예
    • HDM0는 CFMW0의 요청을 RP0로 라우팅 -> CXL Type3 #0의 일부를 HDM0가 담당
    • HDM1은 CFMW0의 다른 지역에서 온 요청을 RP1로 라우팅 -> CXL Type3 #1의 일부를 담당
    • HDM2는 CFMW0내부에서 또 다른 PA 범위를 RP0 및 RP1을 인터리빙하도록 라우팅
      -> CXL#0 및 CXL#1이 제공하는 메모리 일부를 2-way 인터리브로 제공
    • HDM3는 CFMW1에서 HB0를 대상으로 하는 인터리브된 액세스를 RP0로 라우팅
      -> 이는 시스템 레벨의 2-way 인터리브(CXL#0, CXL#2) 의 일부이며 CXL#0의 다른 메모리 영역을 나타냄.
    • HDM4는 CFMW1에서 받은 HB0의 (인터리브된) 요청을 RP0 및 RP1을 통해 인터리빙 한다.
      -> 이를 통해 시스템에 연결된 Type3 장치들의 더 많은 메모리 영역으로 확장하여, 시스템 전반에 걸친 4-way 인터리브
      를 활성하는 데 사용.

04.03 Four CXL Root Ports.

  • 이 topology의 경우에, CXL Type 3 장치들은 이 포트에 직접 연결된다.

04.04 Four CXL Type3 Memory Expansion Devices

  • 각 device는 HDM Decoder를 가지고 있다.
    여기에 있는 HDM Decoder는 인터리브를 수행하는 대신, Memory 접근의 호스트 물리 주소(HPA)를 로컬 디바이스 물리 주소(DPA)로 변환하는 매핑을 수행한다.

'CXL' 카테고리의 다른 글

03. CXL Kernel Document  (0) 2023.11.06
02. Intel CXL SW Guide  (0) 2023.11.06
01. CXL 관련 URL  (0) 2023.11.05