O comando a seguir me fornece informações sobre meus slots 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 (...)
O laptop é um Asus ROG G752VSK 2017. As especificações afirmam que possui dois PCIe 3.0x4.
Por que tenho tantos slots na minha saída? Se eu pesquisar na Wikipedia , posso deduzir que tenho:
- 1 x PCIe 3.0 x16 (velocidade 8GT/s, largura x16)
- 2 x PCIe 3.0 x4 (velocidade 8GT/s, largura x4)
- 3 x PCIe 3.0 x1 (velocidade 8GT/s, largura x1)
E a última ponte, que parece ter 5 portas, entre elas uma que parece uma PCIe 4.0 x4 (Velocidade 16GT/s, Largura x4)?
Eu não consigo entender isso. Eu esperava lspci
mostrar os 2 PCIe 3.0x4 que posso identificar fisicamente no meu laptop. Por que tantas outras portas PCIe?
[EDITAR, a pedido de 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]
[EDITAR 2]
Basicamente, o que estou tentando fazer é descobrir uma maneira de confirmar se os dois slots NVMe/PCIe são de fato 3.0x4.
Na verdade, quero aplicar essa técnica a outro laptop que tenho: as especificações oficiais diziam que ele tinha um Gen4x4 e um Gen4x2, e quando entrei em contato com eles para identificar cada um, eles me disseram que o site deles estava desatualizado e, na verdade, meu laptop tinha dois Gen4x4. Então eu estava procurando uma maneira de confirmar isso
[EDIT 3, seguindo a resposta e comentários de @Mokubai]
Meu grep adicionou algumas linhas não relacionadas. Este é melhor :
# 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 (...)
Combinado com lspci -tvnn
o resultado de, podemos de fato chegar à conclusão de que os 2 slots NVMe são 1b.0
e 1d.0
, por exemplo, Sandisk (WD no meu caso) e Micron/Crucial, ambos em Speed 8GT/s, Width x4
, por exemplo, Gen3x4.
Slots e portas são diferentes.
Aparentemente, você tem várias pontes que conectam outros dispositivos no seu sistema. Suponho que existam PCIe ethernet, WiFi, SATA, NVMe, bluetooth e outros dispositivos conectados a portas em vários hubs PCIe.
PCIe é apenas uma forma de conectar dispositivos, esses dispositivos não precisam ter um conector ou slot físico, eles podem ser conectados diretamente às portas de um hub sem a necessidade de usar conectores removíveis.
tentando resumir comentários
PCIe é usado para muitas coisas além dos conectores físicos. PCIe define um método de encapsular o protocolo PCI dentro de uma interface elétrica rápida e eficiente. São mais do que apenas os conectores que você vê e os dispositivos geralmente são conectados eletricamente sem o uso dos conectores mais óbvios.
Identificar dispositivos
lspci
é um pouco imprevisível. Ele (até onde eu sei) mostrará apenas a velocidade atual do link e não os recursos completos, egrep
pode deixar de fora um contexto importante. Muitas de suas linhas finais podem estar relacionadas a outros dispositivos (que mostram capacidades de velocidade de link), mas não estão relacionadas ao dispositivo imediatamente acima.Para usar um palpite, sugiro que seus dispositivos NVMe sejam
Observe que a Sandisk é uma subsidiária da Western Digital e
lspci
pode estar usando uma lista interna de “ID do fornecedor” para combinar os dispositivos. Eu tenho um SSD Western Digital NVMe e ele também informa um ID de fornecedor 15B7 no Windows. O outro dispositivo NVMe é provavelmenteO
Speed 8GT/s, Width x4
denota uma interface PCIe 3.0 (8GT/s
) na largura que você espera.Com isso como ponto de partida, esperamos que você consiga identificar portas em seu segundo laptop.
A saída que você mostra não descreve slots – ela descreve links. Um link pode passar por um slot de cartão físico (por exemplo, o slot SSD M.2), mas também pode ser conectado diretamente a outro chip ou pode passar por algo como Thunderbolt, etc. conectado a qualquer coisa.
As especificações do seu laptop documentam apenas os slots externos (voltados para o usuário), mas o PCI não se trata exclusivamente de slots externos – há muitos dispositivos internos, tanto dentro da CPU/SoC quanto em outros lugares da placa-mãe, que se comunicam via PCI- Express, como sua interface Wi-Fi ou sua GPU discreta ou todo o seu controlador host USB. (É semelhante a como a webcam do seu laptop ou o módulo Bluetooth são dispositivos USB internos e possuem suas próprias "portas" no host USB.)
As especificações do computador geralmente não documentam essas conexões internas, pois quase nunca é relevante para o usuário se algo está conectado via USB, PCIe ou SPI, caso ele não possa redirecionar essa conexão para suas próprias necessidades.
(Além disso, mesmo que sua placa Wi-Fi/Bluetooth esteja provavelmente em um slot M.2 removível que carrega PCIe + USB, isso raramente é documentado porque o fabricante não gosta que você troque essa placa; muitos laptops só aceitam modelos específicos lá. )