私のシステムの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ホストブリッジ...ルートコンプレックスとして表示されますか?私は2つの理由でこれを明確にしたいと思います:
これは、デバイスが接続されているベースバスにのみデバイスを割り当てる前述のロジックと一致しません。この場合、バス00の上にメインバスがないことに気づきましたが、デバイスは別々に処理され、CPUによって直接アドレスが割り当てられると常に仮定しました(そしてデバイス番号を割り当てる必要はありません)。
ルートコンプレックスが出力でルートコンプレックス以外のホストブリッジ(すべてRenoir PCIe仮想ホストブリッジ)と同じデバイスクラスを共有する理由はわかりません。
引き続き、私はこの主要な橋のどれも他のバスに接続されていないことを知りました。ハードウェアが何も接続されておらず、未使用にもかかわらず、出力にブリッジが表示されるためですか? PCIeブリッジであることを見てPCIeブリッジであれば、デバイスクラスが「PCIブリッジ」に変更されますか?
答え1
ここに私の質問に答えてください。
以前は、PCIeの仕組みを根本的に理解していなかったため、混乱していました。 PCIeを理解し、トポロジを列挙する方法を理解することで、ほとんどの問題が解決されました。
この記事これをよく説明する画像が含まれています。
重要なのは、各P2P接続に固有のバス番号があることです。図に示すように、スイッチにはレイヤ2 P2P接続があります。
- アップストリームポート(スイッチあたり1つのみ)、アップストリームポートを独自の内部バスに接続
- 内部バスをダウンストリームポートダウンストリームに接続します。
ルートコンプレックスは、バス番号の列挙方法と変わりません。ルートコンプレックスには、常にバス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+マイクロサーバーです。私が見た他のサーバーでは、バス番号がより混乱しているようです。