요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
.. include:: <isonum.txt>
===========================================
Compute Express Link Subsystem Maturity Map
===========================================
The Linux CXL subsystem tracks the dynamic `CXL specification
<https://computeexpresslink.org/cxl-specification-landing-page>`_ that
continues to respond to new use cases with new features, capability
updates and fixes. At any given point some aspects of the subsystem are
more mature than others. While the periodic pull requests summarize the
`work being incorporated each merge window
<https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe>`_,
those do not always convey progress relative to a starting point and a
future end goal.
What follows is a coarse breakdown of the subsystem's major
responsibilities along with a maturity score. The expectation is that
the change-history of this document provides an overview summary of the
subsystem maturation over time.
The maturity scores are:
- [3] Mature: Work in this area is complete and no changes on the horizon.
Note that this score can regress from one kernel release to the next
based on new test results or end user reports.
- [2] Stabilizing: Major functionality operational, common cases are
mature, but known corner cases are still a work in progress.
- [1] Initial: Capability that has exited the Proof of Concept phase, but
may still have significant gaps to close and fixes to apply as real
world testing occurs.
- [0] Known gap: Feature is on a medium to long term horizon to
implement. If the specification has a feature that does not even have
a '0' score in this document, there is a good chance that no one in
the [email protected] community has started to look at it.
- X: Out of scope for kernel enabling, or kernel enabling not required
Feature and Capabilities
========================
Enumeration / Provisioning
--------------------------
All of the fundamental enumeration an object model of the subsystem is
in place, but there are several corner cases that are pending closure.
* [2] CXL Window Enumeration
* [2] :ref:`Extended-linear memory-side cache <extended-linear>`
* [0] Low Memory-hole
* [X] Hetero-interleave
* [2] Switch Enumeration
* [0] CXL register enumeration link-up dependency
* [2] HDM Decoder Configuration
* [0] Decoder target and granularity constraints
* [2] Performance enumeration
* [3] Endpoint CDAT
* [3] Switch CDAT
* [1] CDAT to Core-mm integration
* [1] x86
* [0] Arm64
* [0] All other arch.
* [0] Shared link
* [2] Hotplug
(see CXL Window Enumeration)
* [0] Handle Soft Reserved conflicts
* [0] :ref:`RCH link status <rch-link-status>`
* [0] Fabrics / G-FAM (chapter 7)
* [0] Global Access Endpoint
RAS
---
In many ways CXL can be seen as a standardization of what would normally
be handled by custom EDAC drivers. The open development here is
mainly caused by the enumeration corner cases above.
* [3] Component events (OS)
* [2] Component events (FFM)
* [1] Endpoint protocol errors (OS)
* [1] Endpoint protocol errors (FFM)
* [0] Switch protocol errors (OS)
* [1] Switch protocol errors (FFM)
* [2] DPA->HPA Address translation
* [1] XOR Interleave translation
(see CXL Window Enumeration)
* [1] Memory Failure coordination
* [0] Scrub control
* [2] ACPI error injection EINJ
* [0] EINJ v2
* [X] Compliance DOE
* [2] Native error injection
* [3] RCH error handling
* [1] VH error handling
* [0] PPR
* [0] Sparing
* [0] Device built in test
Mailbox commands
----------------
* [3] Firmware update
* [3] Health / Alerts
* [1] :ref:`Background commands <background-commands>`
* [3] Sanitization
* [3] Security commands
* [3] RAW Command Debug Passthrough
* [0] CEL-only-validation Passthrough
* [0] Switch CCI
* [3] Timestamp
* [1] PMEM labels
* [3] PMEM GPF / Dirty Shutdown
* [0] Scan Media
PMU
---
* [1] Type 3 PMU
* [0] Switch USP/ DSP, Root Port
Security
--------
* [X] CXL Trusted Execution Environment Security Protocol (TSP)
* [X] CXL IDE (subsumed by TSP)
Memory-pooling
--------------
* [1] Hotplug of LDs (via PCI hotplug)
* [0] Dynamic Capacity Device (DCD) Support
Multi-host sharing
------------------
* [0] Hardware coherent shared memory
* [0] Software managed coherency shared memory
Multi-host memory
-----------------
* [0] Dynamic Capacity Device Support
* [0] Sharing
Accelerator
-----------
* [0] Accelerator memory enumeration HDM-D (CXL 1.1/2.0 Type-2)
* [0] Accelerator memory enumeration HDM-DB (CXL 3.0 Type-2)
* [0] CXL.cache 68b (CXL 2.0)
* [0] CXL.cache 256b Cache IDs (CXL 3.0)
User Flow Support
-----------------
* [2] Inject & clear poison by region offset
Details
=======
.. _extended-linear:
* **Extended-linear memory-side cache**: An HMAT proposal to enumerate the presence of a
memory-side cache where the cache capacity extends the SRAT address
range capacity. `See the ECN
<https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/>`_
for more details:
.. _rch-link-status:
* **RCH Link Status**: RCH (Restricted CXL Host) topologies, end up
hiding some standard registers like PCIe Link Status / Capabilities in
the CXL RCRB (Root Complex Register Block).
.. _background-commands:
* **Background commands**: The CXL background command mechanism is
awkward as the single slot is monopolized potentially indefinitely by
various commands. A `cancel on conflict
<http://lore.kernel.org/r/[email protected]>`_
facility is needed to make sure the kernel can ensure forward progress
of priority commands.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
CXL 하위 시스템 성숙도 지도의 목적
1-22.. SPDX-License-Identifier: GPL-2.0
Linux CXL 하위 시스템은 새로운 사용 사례에 맞추어 기능, 역량 업데이트, 수정 사항을 계속 반영하는 동적인 `CXL specification`(https://computeexpresslink.org/cxl-specification-landing-page)을 추적합니다. 따라서 어느 시점에서든 하위 시스템의 일부 영역은 다른 영역보다 더 성숙할 수 있습니다.
정기 pull request는 각 merge window에 `통합되는 작업`(https://lore.kernel.org/linux-cxl/?q=s%3APULL+s%3ACXL+tc%3Atorvalds+NOT+s%3ARe)을 요약하지만, 출발점과 향후 최종 목표를 기준으로 한 진척도를 항상 보여 주지는 않습니다.
아래 내용은 하위 시스템의 주요 책임을 성숙도 점수와 함께 대략적으로 구분한 것입니다. 이 문서의 변경 이력을 통해 시간에 따른 하위 시스템의 성숙 과정을 개괄적으로 파악할 수 있을 것으로 기대합니다.
성숙도 점수
23-42성숙도 점수의 의미는 다음과 같습니다.
- [3] Mature(성숙): 이 영역의 작업이 완료되었고 예정된 변경 사항이 없습니다. 다만 새로운 테스트 결과나 최종 사용자 보고에 따라 이 점수는 한 kernel release에서 다음 release로 넘어갈 때 낮아질 수 있습니다.
- [2] Stabilizing(안정화 중): 주요 기능이 동작하고 일반적인 사례는 성숙했지만, 알려진 corner case는 아직 작업 중입니다.
- [1] Initial(초기): Proof of Concept 단계를 벗어난 역량이지만, 실제 환경 테스트가 진행되면서 메워야 할 큰 공백이나 적용해야 할 수정 사항이 남아 있을 수 있습니다.
- [0] Known gap(알려진 공백): 중장기적으로 구현할 기능입니다. specification의 어떤 기능에 이 문서의 '0' 점수조차 없다면 [email protected] 커뮤니티에서 아직 아무도 검토를 시작하지 않았을 가능성이 큽니다.
- X: kernel 활성화 범위 밖이거나 kernel 활성화가 필요하지 않습니다.
기능과 역량: 열거 및 프로비저닝
43-87하위 시스템의 기본적인 열거 기능과 object model은 모두 마련되어 있지만, 아직 마무리해야 할 몇 가지 corner case가 있습니다.
[2] CXL Window Enumeration(CXL 창 열거)
- [2] Extended-linear memory-side cache
- [0] Low Memory-hole
- [X] Hetero-interleave
[2] Switch Enumeration(스위치 열거)
- [0] CXL register enumeration의 link-up 의존성
[2] HDM Decoder Configuration
- [0] Decoder target 및 granularity 제약
[2] Performance enumeration(성능 열거)
- [3] Endpoint CDAT
- [3] Switch CDAT
- [1] CDAT to Core-mm integration
- [1] x86
- [0] Arm64
- [0] 그 밖의 모든 architecture
- [0] Shared link
[2] Hotplug(CXL Window Enumeration 참조)
- [0] Soft Reserved 충돌 처리
- [0] RCH link status
- [0] Fabrics / G-FAM(chapter 7)
- [0] Global Access Endpoint
RAS
88-119여러 측면에서 CXL은 일반적으로 사용자 정의 EDAC driver가 처리하던 기능을 표준화한 것으로 볼 수 있습니다. 이 영역에서 개발이 계속 열려 있는 주된 이유는 앞서 설명한 열거 corner case입니다.
- [3] Component events (OS)
- [2] Component events (FFM)
- [1] Endpoint protocol errors (OS)
- [1] Endpoint protocol errors (FFM)
- [0] Switch protocol errors (OS)
- [1] Switch protocol errors (FFM)
- [2] DPA->HPA Address translation
- [1] XOR Interleave translation(CXL Window Enumeration 참조)
- [1] Memory Failure coordination
- [0] Scrub control
- [2] ACPI error injection EINJ
- [0] EINJ v2
- [X] Compliance DOE
- [2] Native error injection
- [3] RCH error handling
- [1] VH error handling
- [0] PPR
- [0] Sparing
- [0] Device built in test
Mailbox 명령
120-135- [3] Firmware update(펌웨어 업데이트)
- [3] Health / Alerts(상태 및 경고)
- [1] Background commands(백그라운드 명령)
- [3] Sanitization(데이터 정화)
- [3] Security commands(보안 명령)
- [3] RAW Command Debug Passthrough(RAW 명령 디버그 패스스루)
- [0] CEL-only-validation Passthrough(CEL 전용 검증 패스스루)
- [0] Switch CCI(스위치 CCI)
- [3] Timestamp(타임스탬프)
- [1] PMEM labels(PMEM 레이블)
- [3] PMEM GPF / Dirty Shutdown(PMEM GPF 및 비정상 종료)
- [0] Scan Media(미디어 스캔)
PMU와 보안
136-146PMU의 성숙도는 다음과 같습니다.
- [1] Type 3 PMU
- [0] Switch USP/DSP, Root Port
Security 항목은 kernel 활성화 범위 밖이거나 별도 활성화가 필요하지 않습니다.
- [X] CXL Trusted Execution Environment Security Protocol (TSP)
- [X] CXL IDE(TSP에 포함됨)
Memory pooling과 multi-host
147-164Memory-pooling
- [1] LD hotplug(PCI hotplug 경유)
- [0] Dynamic Capacity Device (DCD) Support
Multi-host sharing
- [0] Hardware coherent shared memory
- [0] Software managed coherency shared memory
Multi-host memory
- [0] Dynamic Capacity Device Support
- [0] Sharing
Accelerator와 사용자 흐름
165-177Accelerator
- [0] Accelerator memory enumeration HDM-D (CXL 1.1/2.0 Type-2)
- [0] Accelerator memory enumeration HDM-DB (CXL 3.0 Type-2)
- [0] CXL.cache 68b (CXL 2.0)
- [0] CXL.cache 256b Cache IDs (CXL 3.0)
User Flow Support
- [2] region offset을 기준으로 poison 주입 및 제거
세부 항목
178-202`Extended-linear memory-side cache`: cache capacity가 SRAT address range capacity를 넘어 확장되는 memory-side cache의 존재를 열거하기 위한 HMAT 제안입니다. 자세한 내용은 ECN(https://lore.kernel.org/linux-cxl/6650e4f835a0e_195e294a8@dwillia2-mobl3.amr.corp.intel.com.notmuch/)을 참조하십시오.
`RCH Link Status`: RCH(Restricted CXL Host) topology에서는 PCIe Link Status/Capabilities 같은 일부 표준 register가 CXL RCRB(Root Complex Register Block) 안에 숨겨지게 됩니다.
`Background commands`: CXL background command mechanism은 여러 command가 단 하나의 slot을 잠재적으로 무기한 독점할 수 있어 다루기 까다롭습니다. kernel이 우선순위 command의 forward progress를 보장할 수 있도록 `cancel on conflict` 기능(http://lore.kernel.org/r/[email protected])이 필요합니다.
요약과 해설
maturity-map.rst:1-202이 문서는 CXL 기능이 존재하는지만 나열하지 않고 안정성 수준과 남은 구현 공백을 함께 보여 주는 release별 현황표입니다. [3]은 성숙, [2]는 안정화 중, [1]은 초기 구현, [0]은 알려진 공백이며 X는 kernel 활성화 범위 밖을 뜻합니다. 현재 mailbox의 firmware update와 RCH error handling 등은 성숙한 반면, fabric, 공유 memory, accelerator memory와 여러 switch 기능은 아직 알려진 공백으로 분류됩니다.