尝试理解我的 PCIe 插槽

尝试理解我的 PCIe 插槽

以下命令提供有关我的 PCIe 插槽的信息:

# lspci -vv | grep -E 'PCI bridge|LnkCap:'
00:01.0 PCI bridge: Intel (...) PCIe Controller (x16) (...)
        LnkCap:    Port #2, Speed 8GT/s, Width x16 (...)
00:1b.0 PCI bridge: Intel (...)
        LnkCap:    Port #17, Speed 8GT/s, Width x4 (...)
00:1c.0 PCI bridge: Intel (...)
        LnkCap:    Port #1, Speed 8GT/s, Width x1 (...)
00:1c.2 PCI bridge: Intel (...)
        LnkCap:    Port #3, Speed 8GT/s, Width x1 (...)
00:1c.3 PCI bridge: Intel (...)
        LnkCap:    Port #4, Speed 8GT/s, Width x1 (...)
00:1c.4 PCI bridge: Intel (...)
        LnkCap:    Port #5, Speed 8GT/s, Width x4 (...)
00:1d.0 PCI bridge: Intel (...)
        LnkCap:    Port #9, Speed 8GT/s, Width x4 (...)
        LnkCap:    Port #0, Speed 8GT/s, Width x16 (...)
        LnkCap:    Port #0, Speed 8GT/s, Width x16 (...)
        LnkCap:    Port #0, Speed 16GT/s, Width x4 (...)
        LnkCap:    Port #0, Speed 2.5GT/s, Width x1 (...)

笔记本电脑是 2017 款华硕 ROG G752VSK。眼镜指出它有两个 PCIe 3.0x4。

为什么我的输出中有这么多的槽位?如果我查找维基百科,我能推断出:

  • 1 x PCIe 3.0 x16(速度 8GT/s,宽度 x16)
  • 2 x PCIe 3.0 x4(速度 8GT/s,宽度 x4)
  • 3 x PCIe 3.0 x1(速度 8GT/s,宽度 x1)

那么最后一座桥呢?它似乎有 5 个端口,其中一个看起来像 PCIe 4.0 x4(速度 16GT/s,宽度 x4)?

我完全搞不懂。我原本希望lspci显示我的笔记本电脑中可以物理识别的 2 个 PCIe 3.0x4。为什么有这么多其他 PCIe 端口?

[ 编辑,应 u1686_grawity 的要求 ]

# lspci -tvnn
-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5910]
           +-01.0-[01]--+-00.0  NVIDIA Corporation GP104BM [GeForce GTX 1070 Mobile] [10de:1be1]
           |            \-00.1  NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0]
           +-14.0  Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller [8086:a12f]
           +-14.2  Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem [8086:a131]
           +-15.0  Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 [8086:a160]
           +-15.1  Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #1 [8086:a161]
           +-16.0  Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 [8086:a13a]
           +-17.0  Intel Corporation Q170/Q150/B150/H170/H110/Z170/CM236 Chipset SATA Controller [AHCI Mode] [8086:a102]
           +-1b.0-[02]----00.0  Sandisk Corp Device [15b7:5030]
           +-1c.0-[03]--
           +-1c.2-[04]----00.0  Intel Corporation Wireless 8260 [8086:24f3]
           +-1c.3-[05]----00.0  Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168]
           +-1c.4-[06-3e]--
           +-1d.0-[3f]----00.0  Micron/Crucial Technology Device [c0a9:540a]
           +-1f.0  Intel Corporation CM238 Chipset LPC/eSPI Controller [8086:a154]
           +-1f.2  Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller [8086:a121]
           +-1f.3  Intel Corporation CM238 HD Audio Controller [8086:a171]
           \-1f.4  Intel Corporation 100 Series/C230 Series Chipset Family SMBus [8086:a123]

[编辑2]

基本上,我想做的是找到一种方法来确认两个 NVMe/PCIe 插槽确实是 3.0x4。

事实上,我想将这项技术应用到我拥有的另一台笔记本电脑上:官方规格说它有一个 Gen4x4 和一个 Gen4x2,当我联系他们识别它们时,他们告诉我他们的网站已经过时了,而事实上我的笔记本电脑有两个 Gen4x4。所以我正在寻找一种方法来确认这一点

[编辑 3,根据@Mokubai 的回答和评论]

我的 grep 添加了几行不相关的内容。下面这个比较好:

# lspci -vv | grep 'PCI bridge' -A40 | grep -E 'PCI bridge|LnkCap:'
00:01.0 PCI bridge: Intel (...) PCIe Controller (x16) (...)
        LnkCap:    Port #2, Speed 8GT/s, Width x16 (...)
00:1b.0 PCI bridge: Intel (...)
        LnkCap:    Port #17, Speed 8GT/s, Width x4 (...)
00:1c.0 PCI bridge: Intel (...)
        LnkCap:    Port #1, Speed 8GT/s, Width x1 (...)
00:1c.2 PCI bridge: Intel (...)
        LnkCap:    Port #3, Speed 8GT/s, Width x1 (...)
00:1c.3 PCI bridge: Intel (...)
        LnkCap:    Port #4, Speed 8GT/s, Width x1 (...)
00:1c.4 PCI bridge: Intel (...)
        LnkCap:    Port #5, Speed 8GT/s, Width x4 (...)
00:1d.0 PCI bridge: Intel (...)
        LnkCap:    Port #9, Speed 8GT/s, Width x4 (...)

结合 的lspci -tvnn结果,我们确实可以得出结论,2 个 NVMe 插槽是1b.01d.0,例如 Sandisk(我的情况是 WD)和 Micron/Crucial,都为Speed 8GT/s, Width x4,例如 Gen3x4。

答案1

插槽和端口不同。

您显然有多个桥接器连接系统中的其他设备。我猜有 PCIe 以太网、WiFi、SATA、NVMe、蓝牙和其他设备连接到各种 PCIe 集线器上的端口。

PCIe 只是一种连接设备的方式,这些设备不必有物理连接器或插槽,它们可以直接连接到集线器上的端口,而无需使用可拆卸连接器。


尝试总结评论

PCIe 除了物理连接器外,还有许多其他用途。PCIe 定义了一种将 PCI 协议封装在快速高效的电气接口中的方法。它不仅仅是您看到的连接器,而且设备通常在不使用更明显的连接器的情况下进行电气连接。

识别设备的方式lspci有点碰运气。据我所知,它只会显示当前链接速度,而不是全部功能,并且grep可能会遗漏重要的上下文。您的许多尾行可能与其他设备(显示链接速度功能)相关,但与上方的设备无关。

为了做出合理的猜测,我建议您的 NVMe 设备

1b.0-[02]----00.0  Sandisk Corp Device [15b7:5030]

请注意,Sandisk 是 Western Digital 的子公司,lspci可能使用内部“供应商 ID”列表来匹配设备。我有一台 Western Digital NVMe SSD,它在 Windows 中也报告供应商 ID 为 15B7。另一台 NVMe 设备很可能是

1d.0-[3f]----00.0  Micron/Crucial Technology Device [c0a9:540a]

表示您期望的宽度的Speed 8GT/s, Width x4PCIe 3.0 接口( )。8GT/s

以此为起点,您应该能够识别第二台笔记本电脑上的端口。

答案2

您显示的输出没有描述插槽– 它描述了链接。链接可能经过物理卡槽(例如 SSD M.2 插槽),但也可能直接连接到另一个芯片,或者可能经过 Thunderbolt 等设备。甚至可能存在根本没有连接到任何东西的链接。

笔记本电脑的规格仅记录了外部(面向用户)插槽,但 PCI 并不只涉及外部插槽——还有很多通过 PCI-Express 进行通信的内部设备(包括 CPU/SoC 内部和主板上的其他设备),例如 Wi-Fi 接口、独立 GPU 或整个 USB 主机控制器。(这类似于笔记本电脑的网络摄像头或蓝牙模块是内部 USB 设备,并且在 USB 主机上有自己的“端口”。)

计算机规格通常不记录此类内部连接,因为如果用户无法根据自己的需要重新利用该连接,那么无论通过 USB 还是 PCIe 还是 SPI 连接,对于用户来说几乎都无关紧要。

(此外,即使您的 Wi-Fi/蓝牙卡可能位于带有 PCIe+USB 的可拆卸 M.2 插槽中,但这种情况很少被记录下来,因为制造商不喜欢您更换该卡;许多笔记本电脑只接受特定型号。)

相关内容