pcie常用的查看寄存器方法
1:查看PCIe速率
# lspci -s 01:00.0 -vv | grep -i "Lnk"LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <64usLnkCtl: ASPM Disabled; RCB 64 bytes, Disabled- CommClk+LnkSta: Speed 16GT/s (downgraded), Width x16 (ok)LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS+LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis-LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete+ EqualizationPhase1+LnkCtl3: LnkEquIntrruptEn- PerformEqu-
LnkCap: Speed 32GT/s
:
- 这表示设备支持的最大链路速率为 32 GT/s,这对应于 PCIe Gen5。
LnkSta: Speed 16GT/s (downgraded)
:
- 这表示当前链路速率被降级为 16 GT/s,这对应于 PCIe Gen4。这可能是因为系统或硬件限制,导致设备无法以最高支持的速率运行。
LnkCap2: Supported Link Speeds: 2.5-32GT/s
:
- 这表示设备支持从 2.5 GT/s 到 32 GT/s 的链路速率,涵盖了从 PCIe Gen1 到 PCIe Gen5 的所有速率。
LnkCtl2: Target Link Speed: 32GT/s
:
- 这表示设备的目标链路速率为 32 GT/s,这对应于 PCIe Gen5。
结论
根据上述信息,设备支持 PCIe Gen5,但当前链路速率被降级为 16 GT/s,这对应于 PCIe Gen4。这表明设备本身支持 PCIe Gen5,但由于某些限制(如系统硬件或BIOS设置),它当前以 PCIe Gen4 的速率运行。
总结
- 设备支持的最高版本:PCIe Gen5(32 GT/s)
- 当前运行的版本:PCIe Gen4(16 GT/s)
参考:https://zhuanlan.zhihu.com/p/684100771
2 :吞吐量计算
pcie | 速度 | 编码格式 |
---|---|---|
pcie 1.0 | 2.5GT/s | 8b/10b |
pcie 2.0 | 5GT/s | 8b/10b |
pcie 3.0 | 8GT/s | 128b/130b |
pcie 4.0 | 16GT/s | 128b/130b |
pcie 5.0 | 32GT/s | 128b/130b |
pcie 6.0 | 64GT/s | PAM4 |
吞吐量 = 传输速率 x 链路带宽 x 编码效率
如:
PCIe Gen4,8条lane的PCIe Device,编码是128b/130b,传输速率是16GT/s
吞吐量 = 16 * (128/130) * 8 = 126.03 Gbit/s = 15.754GB/s
RTL8822CE设备:Gen1、X1
吞吐量 = 2.5GT/s × 1 × 8/10 = 4 Gb/s ≈ 250MB/s
3 查看Vendor ID 和 Device ID
root@BY-24:~# lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation 440FX - 82441FX PMC [Natoma] [8086:1237] (rev 02)
00:01.0 ISA bridge [0601]: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] [8086:7000]
00:01.1 IDE interface [0101]: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] [8086:7010]
00:01.2 USB controller [0c03]: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] [8086:7020] (rev 01)
00:01.3 Bridge [0680]: Intel Corporation 82371AB/EB/MB PIIX4 ACPI [8086:7113] (rev 03)
00:02.0 VGA compatible controller [0300]: Device [1234:1111] (rev 02)
00:03.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon [1af4:1002]
00:05.0 SCSI storage controller [0100]: Red Hat, Inc. Virtio SCSI [1af4:1004]
00:12.0 Ethernet controller [0200]: Red Hat, Inc. Virtio network device [1af4:1000]
00:1e.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]
00:1f.0 PCI bridge [0604]: Red Hat, Inc. QEMU PCI-PCI bridge [1b36:0001]note:Vendor ID(1a4f)和 Device ID(1000)
查找特定设备ID:lspci -nn -s
root@BY-24:~# lspci -nn -s 00:12.0
00:12.0 Ethernet controller [0200]: Red Hat, Inc. Virtio network device [1af4:1000]
4 devmem 读能力寄存器和扩展能力寄存器
4.1能力寄存器访问
配置空间0x34这个位置的值为Capabilities Pointer(offset),而Capabilities Pointer指向的下一个位置当中,第一个字节为Capabilities ID,第二个字节为Next Pointer。利用这个关系,很容易找到所有的能力寄存器。
devmem 0xf7000034
0x00000040 //0x40就是Capabilities Pointer
devmem 0xf7000040
0xDBC35001 //0x01为id 0x50为Next Pointer
devmem 0xf7000050
0x03807005 //0x05为id 0x70为Next Pointer
devmem 0xf7000070
0x01020010 //0x10为id 0x00说明已经是最后一个能力寄存器了note:能力寄存器范围0x40-0xff
4.2扩展能力寄存器访问
扩展能力寄存器从0x100开始,格式为,bit0-bit15为PCI Express Extended Capability ID, bit16-bit19为Capability Version,bit20-bit31为Next Capability offset。
devmem 0xf7000100
0x14820001
devmem 0xf7000148
0x1AC10019
devmem 0xf70001ac
0x2AC1000B
devmem 0xf70002ac
0x2E41000B
devmem 0xf70002e4
0x0001000B //Next Capability offset为0说明能力扩展寄存器已经是最后一个了。参考:https://blog.csdn.net/llxxyy507/article/details/115147635