lspci 출력의 호스트 브리지와 PCI 브리지는 무엇입니까?

lspci 출력의 호스트 브리지와 PCI 브리지는 무엇입니까?

내 시스템의 pcie 토폴로지와 lspci의 출력을 이해하려고 합니다.

내 lspci 출력 및 pci 토폴로지 트리:

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe GPP Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 51)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Cezanne Data Fabric; Function 7
01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev c0)
02:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 [Radeon RX 6800/6800 XT / 6900 XT] (rev c0)
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Navi 21 HDMI Audio [Radeon RX 6800/6800 XT / 6900 XT]
04:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse Switch Upstream
05:01.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
05:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
05:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
05:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
05:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
05:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
06:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
07:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29)
08:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 26)
09:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
09:00.1 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
09:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
0a:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
0b:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
0c:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Zeppelin/Raven/Raven2 PCIe Dummy Function (rev c9)
0c:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller
0c:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor
0c:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1
0c:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1
0c:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller
0d:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 81)

$ tree -d --matchdirs -I '[a-z]*'  /sys/devices/pci0000\:00//sys/devices/pci0000:00/
├── 0000:00:00.0
├── 0000:00:00.2
├── 0000:00:01.0
├── 0000:00:01.1
│   ├── 0000:00:01.1:pcie010
│   └── 0000:01:00.0
│       ├── 0000:01:00.0:pcie102
│       └── 0000:02:00.0
│           ├── 0000:02:00.0:pcie202
│           ├── 0000:02:00.0:pcie210
│           ├── 0000:03:00.0
│           └── 0000:03:00.1
├── 0000:00:01.2
│   ├── 0000:00:01.2:pcie010
│   └── 0000:04:00.0
│       ├── 0000:05:01.0
│       │   ├── 0000:05:01.0:pcie202
│       │   ├── 0000:05:01.0:pcie210
│       │   └── 0000:06:00.0
│       ├── 0000:05:04.0
│       │   ├── 0000:05:04.0:pcie202
│       │   ├── 0000:05:04.0:pcie210
│       │   └── 0000:07:00.0
│       ├── 0000:05:05.0
│       │   ├── 0000:05:05.0:pcie202
│       │   ├── 0000:05:05.0:pcie210
│       │   └── 0000:08:00.0
│       ├── 0000:05:08.0
│       │   ├── 0000:05:08.0:pcie210
│       │   ├── 0000:09:00.0
│       │   ├── 0000:09:00.1
│       │   └── 0000:09:00.3
│       ├── 0000:05:09.0
│       │   ├── 0000:05:09.0:pcie210
│       │   └── 0000:0a:00.0
│       └── 0000:05:0a.0
│           ├── 0000:05:0a.0:pcie210
│           └── 0000:0b:00.0
├── 0000:00:02.0
├── 0000:00:08.0
├── 0000:00:08.1
│   ├── 0000:00:08.1:pcie010
│   ├── 0000:0c:00.0
│   ├── 0000:0c:00.1
│   ├── 0000:0c:00.2
│   ├── 0000:0c:00.3
│   ├── 0000:0c:00.4
│   └── 0000:0c:00.6
├── 0000:00:08.2
│   ├── 0000:00:08.2:pcie010
│   └── 0000:0d:00.0
├── 0000:00:14.0
├── 0000:00:14.3
│   └── PNP0800:00
├── 0000:00:18.0
├── 0000:00:18.1
├── 0000:00:18.2
├── 0000:00:18.3
├── 0000:00:18.4
├── 0000:00:18.5
├── 0000:00:18.6
└── 0000:00:18.7

내가 아는 한, PCI 브리지(예: 00:01.1)는 연결된 메인 버스에만 나타납니다. 브리지는 버스 01,02,03에 연결되어 있으며 버스 00의 출력에만 표시됩니다. 그런 다음 열거가 발생하면 버스 01의 첫 번째 장치에 장치 번호 00이 할당됩니다. 장치 01:00.0도 PCI 브리지이지만 나는 그렇게 생각합니다.다른PCI 브리지(버스 02와 유사), 버스 03은 VGA/오디오 장치에서만 사용되는 반면, 2가지 기능(VGA 컨트롤러 및 오디오 장치용)을 생성합니다. 이것이 정확합니까?

호스트 브리지를 이해하려면 먼저 lspci 출력의 컨텍스트를 이해해야 할 것 같습니다. 제가 이해한 바에 따르면 CPU 버스를 주변 공간으로 변환하는 루트 콤플렉스(보통 CPU 자체에 있음)가 있습니다.

CPU의 루트 컴플렉스가 00:00.0 호스트 브리지...루트 컴플렉스로 ​​표시됩니까? 나는 두 가지 이유로 이것을 명확히 하고 싶습니다:

  1. 이는 장치가 연결된 기본 버스에만 장치를 할당하는 앞서 언급한 논리와 일치하지 않습니다. 이 경우, 버스 00 위에 메인 버스가 없다는 것을 깨달았지만, 장치는 별도로 처리되고 CPU에 의해 직접 주소가 지정될 것이라고 항상 가정했습니다(그리고 장치 번호를 할당할 필요가 없습니다).

  2. 루트 컴플렉스가 출력에서 ​​루트 컴플렉스가 아닌 다른 호스트 브리지(모두 Renoir PCIe 가상 호스트 브리지임)와 동일한 장치 클래스를 공유하는 이유를 이해할 수 없습니다.

계속해서 나는 이 주요 다리 중 어느 것도 다른 버스와 연결되어 있지 않다는 것을 알았습니다. 하드웨어가 아무 것도 연결되어 있지 않고 사용되지 않음에도 불구하고 출력에 브리지가 나타나기 때문입니까? PCIe 브리지인 것을 보고 PCIe 브리지라면 장치 클래스가 "PCI 브리지"로 변경됩니까?

답변1

여기에 내 질문에 대답하십시오.

이전에는 PCIe 작동 방식을 근본적으로 이해하지 못했기 때문에 혼란스러웠습니다. PCIe를 이해하고 토폴로지를 열거하는 방법을 이해하면 대부분의 문제가 해결되었습니다.

이 기사이를 잘 설명하는 이미지가 포함되어 있습니다.예제 토폴로지

중요한 점은 각 P2P 연결에는 고유한 버스 번호가 있다는 것입니다. 그림에 표시된 것처럼 스위치에는 레이어 2 P2P 연결이 있습니다.

  1. 업스트림 포트(스위치당 1개만), 업스트림 포트를 자체 내부 버스에 연결
  2. 내부 버스를 다운스트림 포트 다운스트림에 연결합니다.

루트 콤플렉스는 버스 번호가 열거되는 방식과 다르지 않습니다. 루트 컴플렉스에는 항상 버스 0(단일 루트 컴플렉스 시스템에서)인 내부 버스가 있습니다. 여기에 연결된 모든 장치는 버스 0의 장치가 되며 모든 P2P 연결에는 자체 버스 번호가 할당됩니다.

PCIe에 대한 심층적인 소개를 위해 MindShare에서 발행한 "PCI Express Technology 3.0" 기사가 가치가 있다는 것을 알았습니다.

답변2

버스 번호가 항상 예상한 순서대로 나타나는 것은 아닙니다.

[ken@m10plus ~]$ sudo lspci -tv
-[0000:00]-+-00.0  Intel Corporation 8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake]
           +-01.0-[07]----00.0  Sandisk Corp WD Blue SN550 NVMe SSD
           +-12.0  Intel Corporation Cannon Lake PCH Thermal Controller
           +-14.0  Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller
           +-14.2  Intel Corporation Cannon Lake PCH Shared SRAM
           +-16.0  Intel Corporation Cannon Lake PCH HECI Controller
           +-16.4  Intel Corporation Cannon Lake PCH HECI Controller #2
           +-1b.0-[06]--
           +-1c.0-[02]--+-00.0  Intel Corporation I350 Gigabit Network Connection
           |            +-00.1  Intel Corporation I350 Gigabit Network Connection
           |            +-00.2  Intel Corporation I350 Gigabit Network Connection
           |            \-00.3  Intel Corporation I350 Gigabit Network Connection
           +-1d.0-[01]--+-00.0  Hewlett-Packard Company Integrated Lights-Out Standard Slave Instrumentation & System Support
           |            +-00.1  Matrox Electronics Systems Ltd. MGA G200eH3
           |            +-00.2  Hewlett-Packard Company Integrated Lights-Out Standard Management Processor Support and Messaging
           |            \-00.4  Hewlett-Packard Company iLO5 Virtual USB Controller
           +-1d.1-[03]--
           +-1d.2-[04]--
           +-1d.3-[05]--
           +-1f.0  Intel Corporation Device a30a
           \-1f.5  Intel Corporation Cannon Lake PCH SPI Controller
[ken@m10plus ~]$

내가 살펴본 모든 시스템에서 일반적으로 버스 1을 사용하려면 먼저 VGA 카드에 대한 경로를 찾아야 한다는 사실을 발견했습니다. 시스템은 HPE gen10+ 마이크로서버입니다. 제가 살펴본 다른 서버에서는 버스 번호가 더 혼란스러워 보입니다.

관련 정보