Documentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API / CXL / Platform / Example Configurations

Cross-Host-Bridge Interleave

두 CXL host bridge의 memory expander를 단일 CFMWS와 NUMA node로 묶는 cross-host-bridge interleave firmware 구성을 설명합니다.

Source pathDocumentation/driver-api/cxl/platform/example-configurations/hb-interleave.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

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로 사용할 수 있습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ============================
4 Cross-Host-Bridge Interleave
5 ============================
6 This system has a single socket with two CXL host bridges. Each host bridge
7 has a single CXL memory expander with a 4GB of memory.
8
9 Things to note:
10
11 * Cross-Bridge interleave is described.
12 * The expanders are described by a single CFMWS.
13 * This SRAT describes one node for both host bridges.
14 * The HMAT describes a single node's performance.
15
16 :doc:`CEDT <../acpi/cedt>`::
17
18 Subtable Type : 00 [CXL Host Bridge Structure]
19 Reserved : 00
20 Length : 0020
21 Associated host bridge : 00000007
22 Specification version : 00000001
23 Reserved : 00000000
24 Register base : 0000010370400000
25 Register length : 0000000000010000
26
27 Subtable Type : 00 [CXL Host Bridge Structure]
28 Reserved : 00
29 Length : 0020
30 Associated host bridge : 00000006
31 Specification version : 00000001
32 Reserved : 00000000
33 Register base : 0000010380800000
34 Register length : 0000000000010000
35
36 Subtable Type : 01 [CXL Fixed Memory Window Structure]
37 Reserved : 00
38 Length : 002C
39 Reserved : 00000000
40 Window base address : 0000001000000000
41 Window size : 0000000200000000
42 Interleave Members (2^n) : 01
43 Interleave Arithmetic : 00
44 Reserved : 0000
45 Granularity : 00000000
46 Restrictions : 0006
47 QtgId : 0001
48 First Target : 00000007
49 Second Target : 00000006
50
51 :doc:`SRAT <../acpi/srat>`::
52
53 Subtable Type : 01 [Memory Affinity]
54 Length : 28
55 Proximity Domain : 00000001
56 Reserved1 : 0000
57 Base Address : 0000001000000000
58 Address Length : 0000000200000000
59 Reserved2 : 00000000
60 Flags (decoded below) : 0000000B
61 Enabled : 1
62 Hot Pluggable : 1
63 Non-Volatile : 0
64
65 :doc:`HMAT <../acpi/hmat>`::
66
67 Structure Type : 0001 [SLLBI]
68 Data Type : 00 [Latency]
69 Target Proximity Domain List : 00000000
70 Target Proximity Domain List : 00000001
71 Target Proximity Domain List : 00000002
72 Entry : 0080
73 Entry : 0100
74
75 Structure Type : 0001 [SLLBI]
76 Data Type : 03 [Bandwidth]
77 Target Proximity Domain List : 00000000
78 Target Proximity Domain List : 00000001
79 Target Proximity Domain List : 00000002
80 Entry : 1200
81 Entry : 0400
82
83 :doc:`SLIT <../acpi/slit>`::
84
85 Signature : "SLIT" [System Locality Information Table]
86 Localities : 0000000000000003
87 Locality 0 : 10 20
88 Locality 1 : FF 0A
89
90 :doc:`DSDT <../acpi/dsdt>`::
91
92 Scope (_SB)
93 {
94 Device (S0D0)
95 {
96 Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
97 ...
98 Name (_UID, 0x07) // _UID: Unique ID
99 }
100 ...
101 Device (S0D5)
102 {
103 Name (_HID, "ACPI0016" /* Compute Express Link Host Bridge */) // _HID: Hardware ID
104 ...
105 Name (_UID, 0x06) // _UID: Unique ID
106 }
107 }
108

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-50

CEDT는 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
Cross-Host-Bridge CEDT 연결
StructureIdentifier / BaseSize / LengthInterleave / Target
CHBSUID 00000007 / 00000103704000000000000000010000First Target
CHBSUID 00000006 / 00000103808000000000000000010000Second Target
CFMWS000000100000000000000002000000002 members: 07, 06

두 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-64

SRAT 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
SRAT와 CFMWS 범위 대응
Proximity DomainBase AddressAddress LengthFlags
0000000100000010000000000000000200000000Enabled, Hot Pluggable, Volatile

두 host bridge의 interleaved memory가 하나의 proximity domain으로 노출됩니다.

flags 값 0000000B에서 `Enabled`와 `Hot Pluggable`은 1이고 `Non-Volatile`은 0입니다. 따라서 이 range는 활성화된 hot-pluggable volatile memory로 설명됩니다.

HMAT: 단일 CXL node의 성능

65-82

HMAT은 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
HMAT SLLBI 성능 entry
Data TypeListed DomainsEntries
00 Latency00000000, 00000001, 000000020080, 0100
03 Bandwidth00000000, 00000001, 000000021200, 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-89

SLIT(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
SLIT source dump 거리
Locality RowFirst ValueSecond ValueMeaning
01020local CPU와 remote CXL 방향 거리
1FF0Ainitiator 경로 없음과 local CXL 거리

원문에 실제로 표시된 두 locality row의 값을 같은 순서로 보존합니다.

DSDT: CEDT host bridge UID 연결

90-107

DSDT의 `_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와 CEDT host bridge identity
DSDT Device_HID_UIDCEDT Role
S0D0ACPI00160x07CHBS 00000007 / First Target
S0D5ACPI00160x06CHBS 00000006 / Second Target

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를 참조합니다.