我使用 Dell G3 3579 运行 lspci -tvv 命令。
输出如下:
-[0000:00]-+-00.0 Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers
+-01.0-[01]----00.0 NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile]
+-02.0 Intel Corporation Device 3e9b
+-04.0 Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
+-08.0 Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
+-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
+-14.3 Intel Corporation Wireless-AC 9560 [Jefferson Peak]
+-15.0 Intel Corporation Device a368
+-15.1 Intel Corporation Device a369
+-16.0 Intel Corporation Cannon Lake PCH HECI Controller
+-17.0 Intel Corporation 82801 Mobile SATA Controller [RAID mode]
+-1b.0-[02-3a]--
+-1d.0-[3b]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+-1f.0 Intel Corporation Device a30d
+-1f.3 Intel Corporation Cannon Lake PCH cAVS
+-1f.4 Intel Corporation Cannon Lake PCH SMBus Controller
\-1f.5 Intel Corporation Cannon Lake PCH SPI Controller
我知道GPU是通过PCIE直接连接到CPU的,而英特尔使用PCH连接其他设备。
问题如下:
Q1:为什么树输出显示所有设备都连接到同一个 PCI 总线(总线 00)?
Q2:这是什么+-1b.0-[02-3a]--
意思?
Q3:如何知道哪个设备连接到 CPU 的 PCI-E 或 PCH 的 PCI-E 总线?
答案1
为什么树输出显示所有设备都连接到同一个 PCI 总线(总线 00)?
因为 PCIe 结构就是这样工作的:所有设备都连接到单个根节点。(尽管您可以拥有多个 PCIe 域,但这会使事情变得复杂)。
对于 Intel 来说,所有外部 PCIe 通道(无论它们来自 CPU 还是 PCH)都位于 PCIe 桥后面(因此获得新的 PCIe 总线编号)。PCH 南桥中的设备本身显示为 PCIe 根的直接后代。
请记住,CPU 和 PCH 通过专有高速总线紧密耦合,这对 PCIe 协议来说是透明的。这就是 PCIe 布局与物理布局不一致的原因。
+-1b.0-[02-3a]-- 是什么意思?
1b.0
是 PCIe 根集线器的插槽和功能编号。在本例中,它包含一个 PCIe 桥。此桥后面的总线编号为 02 至 3a,即使当前没有设备连接到它们。
类似地,您的 GPU 位于桥接器后面01.0
,而您的 LAN 控制器位于桥接器后面1d.0
,这可能是一个内部桥接器。
我如何知道哪个设备连接到 CPU 的 PCI-E 或 PCH 的 PCI-E 总线?
通常它们会出现在不同的 PCIe 桥后面。详细信息取决于英特尔 CPU 架构。不,我不知道您的特定架构会使用哪种桥,但可能可以通过英特尔数据表和/或观察现有系统来找到答案。