요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0
============================
Cross-Host-Bridge Interleave
============================
This system has a single socket with two CXL host bridges. Each host bridge
has a single CXL memory expander with a 4GB of memory.
Things to note:
* Cross-Bridge interleave is described.
* The expanders are described by a single CFMWS.
* This SRAT describes one node for both host bridges.
* The HMAT describes a single node's performance.
:doc:`CEDT <../acpi/cedt>`::
Subtable Type : 00 [CXL Host Bridge Structure]
Reserved : 00
Length : 0020
Associated host bridge : 00000007
Specification version : 00000001
Reserved : 00000000
Register base : 0000010370400000
Register length : 0000000000010000
Subtable Type : 00 [CXL Host Bridge Structure]
Reserved : 00
Length : 0020
Associated host bridge : 00000006
Specification version : 00000001
Reserved : 00000000
Register base : 0000010380800000
Register length : 0000000000010000
Subtable Type : 01 [CXL Fixed Memory Window Structure]
Reserved : 00
Length : 002C
Reserved : 00000000
Window base address : 0000001000000000
Window size : 0000000200000000
Interleave Members (2^n) : 01
Interleave Arithmetic : 00
Reserved : 0000
Granularity : 00000000
Restrictions : 0006
QtgId : 0001
First Target : 00000007
Second Target : 00000006
:doc:`SRAT <../acpi/srat>`::
Subtable Type : 01 [Memory Affinity]
Length : 28
Proximity Domain : 00000001
Reserved1 : 0000
Base Address : 0000001000000000
Address Length : 0000000200000000
Reserved2 : 00000000
Flags (decoded below) : 0000000B
Enabled : 1
Hot Pluggable : 1
Non-Volatile : 0
:doc:`HMAT <../acpi/hmat>`::
Structure Type : 0001 [SLLBI]
Data Type : 00 [Latency]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Entry : 0080
Entry : 0100
Structure Type : 0001 [SLLBI]
Data Type : 03 [Bandwidth]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Entry : 1200
Entry : 0400
:doc:`SLIT <../acpi/slit>`::
Signature : "SLIT" [System Locality Information Table]
Localities : 0000000000000003
Locality 0 : 10 20
Locality 1 : FF 0A
:doc:`DSDT <../acpi/dsdt>`::
Scope (_SB)
{
Device (S0D0)
{
Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
...
Name (_UID, 0x07) // _UID: Unique ID
}
...
Device (S0D5)
{
Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
...
Name (_UID, 0x06) // _UID: Unique ID
}
}
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
host bridge 간 interleave 개요
1-15.. SPDX-License-Identifier: GPL-2.0
이 system은 socket 하나와 CXL host bridge 두 개를 갖습니다. 각 host bridge에는 4GB memory를 가진 CXL memory expander 하나가 연결됩니다.
주목할 사항은 다음과 같습니다.
- host bridge를 가로지르는 Cross-Bridge interleave를 설명합니다.
- 두 expander는 하나의 CFMWS로 함께 설명됩니다.
- SRAT는 두 host bridge 모두에 대해 node 하나를 설명합니다.
- HMAT은 그 단일 node의 성능을 설명합니다.
CEDT: 두 host bridge를 묶는 CFMWS
16-50CEDT는 CXL Host Bridge Structure 두 개와 CXL Fixed Memory Window Structure 하나를 제공합니다. 첫 번째 CHBS는 associated host bridge 00000007, register base 0000010370400000을 사용하고, 두 번째 CHBS는 00000006, register base 0000010380800000을 사용합니다. 두 register region의 length는 모두 0000000000010000입니다.
Subtable Type : 00 [CXL Host Bridge Structure]
Reserved : 00
Length : 0020
Associated host bridge : 00000007
Specification version : 00000001
Reserved : 00000000
Register base : 0000010370400000
Register length : 0000000000010000
Subtable Type : 00 [CXL Host Bridge Structure]
Reserved : 00
Length : 0020
Associated host bridge : 00000006
Specification version : 00000001
Reserved : 00000000
Register base : 0000010380800000
Register length : 0000000000010000
Subtable Type : 01 [CXL Fixed Memory Window Structure]
Reserved : 00
Length : 002C
Reserved : 00000000
Window base address : 0000001000000000
Window size : 0000000200000000
Interleave Members (2^n) : 01
Interleave Arithmetic : 00
Reserved : 0000
Granularity : 00000000
Restrictions : 0006
QtgId : 0001
First Target : 00000007
Second Target : 00000006
두 CHBS identifier가 하나의 CFMWS target pair로 결합되어 8GB window를 구성합니다.
CFMWS의 window base address는 0000001000000000, window size는 0000000200000000입니다. `Interleave Members (2^n)`가 01이므로 두 member를 사용하며 arithmetic과 granularity는 00/00000000입니다. `Restrictions`는 0006, `QtgId`는 0001이고 target 순서는 00000007 다음 00000006입니다.
SRAT: 공유 memory affinity node
51-64SRAT Memory Affinity entry는 proximity domain 00000001 하나가 CFMWS 전체 range를 나타내도록 합니다. base address 0000001000000000과 address length 0000000200000000은 CEDT window와 정확히 일치합니다.
Subtable Type : 01 [Memory Affinity]
Length : 28
Proximity Domain : 00000001
Reserved1 : 0000
Base Address : 0000001000000000
Address Length : 0000000200000000
Reserved2 : 00000000
Flags (decoded below) : 0000000B
Enabled : 1
Hot Pluggable : 1
Non-Volatile : 0
두 host bridge의 interleaved memory가 하나의 proximity domain으로 노출됩니다.
flags 값 0000000B에서 `Enabled`와 `Hot Pluggable`은 1이고 `Non-Volatile`은 0입니다. 따라서 이 range는 활성화된 hot-pluggable volatile memory로 설명됩니다.
HMAT: 단일 CXL node의 성능
65-82HMAT은 SLLBI(System Locality Latency and Bandwidth Information) structure 두 개로 latency와 bandwidth를 설명합니다. 두 structure 모두 source dump에 target proximity domain 00000000, 00000001, 00000002를 나열합니다.
Structure Type : 0001 [SLLBI]
Data Type : 00 [Latency]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Entry : 0080
Entry : 0100
Structure Type : 0001 [SLLBI]
Data Type : 03 [Bandwidth]
Target Proximity Domain List : 00000000
Target Proximity Domain List : 00000001
Target Proximity Domain List : 00000002
Entry : 1200
Entry : 0400
원문에 나열된 domain과 entry 순서를 해석을 덧붙이지 않고 data type별로 정리했습니다.
latency data type 00에는 entry 0080과 0100이, bandwidth data type 03에는 entry 1200과 0400이 기록됩니다. 이 표는 SRAT가 설명한 단일 CXL node의 접근 성능 정보를 제공합니다.
SLIT: locality distance
83-89SLIT(System Locality Information Table)는 locality 수를 3으로 선언합니다. source dump에 표시된 locality 0의 distance는 10과 20이고, locality 1은 FF와 0A입니다.
Signature : "SLIT" [System Locality Information Table]
Localities : 0000000000000003
Locality 0 : 10 20
Locality 1 : FF 0A
원문에 실제로 표시된 두 locality row의 값을 같은 순서로 보존합니다.
DSDT: CEDT host bridge UID 연결
90-107DSDT의 `_SB` scope에는 CXL host bridge device S0D0과 S0D5가 있습니다. 두 device의 `_HID`는 Compute Express Link Host Bridge를 뜻하는 `ACPI0016`입니다.
Scope (_SB)
{
Device (S0D0)
{
Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
...
Name (_UID, 0x07) // _UID: Unique ID
}
...
Device (S0D5)
{
Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
...
Name (_UID, 0x06) // _UID: Unique ID
}
}
DSDT `_UID`를 CEDT CHBS identifier와 CFMWS target 순서에 연결했습니다.
S0D0의 `_UID` 0x07과 S0D5의 `_UID` 0x06은 CEDT의 associated host bridge 값 및 CFMWS의 First/Second Target과 일치합니다. 이 identity 연결로 firmware table 전반에서 같은 두 host bridge를 참조합니다.
요약과 해설
hb-interleave.rst:1-107이 구성은 두 host bridge에 연결된 4GB expander 두 개를 8GB CFMWS 하나로 interleave합니다. CEDT의 두 CHBS와 단일 CFMWS, SRAT의 공유 proximity domain, HMAT의 node 성능, SLIT distance, DSDT의 `_UID`가 같은 topology를 일관되게 설명해야 operating system이 두 host bridge를 가로지르는 하나의 CXL memory range로 사용할 수 있습니다.