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 |