一、PCIe介绍

1、前言
1.1、PCIe概述

PCI Express(peripheral component interconnect express)是INTEL提出的新一代的总线接口,PCI Express采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。

主板 bios pcie 规格 主板上的pcie_主板 bios pcie 规格

相对于传统PCI总线在单一时间周期内只能实现单向传输,PCI Express的双单工连接能提供更高的传输速率和质量。

1.2、PCIe分类
  • PCIe规格

目前PCIe有五种物理规格,分别为PCIe x1、PCIe x4、PCIe x8、PCIe x16、PCIe x32,x后面的数字表示为PCIe插槽内的通道数

详见示意图如下,目前主流规格主要为x1、x4、x8、x16,PCIe插槽可向下兼容,如PCIe x16插槽可插x8、x4、x1的卡(最终运行模式由PCIe卡决定,如PCIe x16插槽插入PCIe x4卡,最终以PCIe x4模式运行)

主板 bios pcie 规格 主板上的pcie_插槽_02

插槽宽度

脚pin总数

主接口区pin数

长度

传输通道数

常见应用

PCIe x1

36

14

25mm

1

无线网卡、SATA扩展卡、USB端口扩展卡

PCIe x4

64

42

39mm

4

万兆以太网卡

PCIe x8

98

76

56mm

8

FC HBA卡

PCIe x16

164

142

89mm

16

显卡、GPU卡

  • PCIe版本

目前PCIe有六种版本,分别为PCIe1.0、PCIe2.0、PCIe3.0、PCIe4.0、PCIe5.0、PCIe6.0,PCIe版本向后兼容,任何版本的PCIe卡和主板都可以以最低版本的模式工作(如PCIe 3.0卡插到PCIe 2.0槽位上,最终以PCIe 2.0版本运行)

详见示意图如下,列举了不同PCIe版本总线性能,PCIe每条传输通道均为全双工通道(SEND、RECEIVE两个方向互不影响,表中传输带宽表示为单方向的速率)

PCIe是一条串行总线,数据中嵌入了时钟,它需要确保发生足够的电平转换(1到0和0到1),以便接收端恢复时钟。
为了增加电平转换,以"8b/10b"编码举例,每8个bit(1个字节)被编码为一个10bit的符号进行传输,之后在接收端进行解码,即总线需要传输10 bit的编码数据来表示所发送的8 bit的数据,编码效率为80%(8b/10b)

( 原始传输率 x Line编码效率 x 通道数 )
有效传输带宽 =   ------------------------------------
                               8
注:
GT/s表示为每秒千兆传输(**Gigatransfer**),由于原始传输率为Gbps(二进制以1000换算,即2.5Gbps=2500Mbps),故需要除以8换算为GBps

PCIe版本

发布时间

Line编码

原始传输率

×1带宽

×2带宽

×4带宽

×8带宽

×16带宽

1.0

2003

8b/10b

2.5 GT/s

250 MB/s

0.50 GB/s

1.0 GB/s

2.0 GB/s

4.0 GB/s

2.0

2007

8b/10b

5.0 GT/s

500 MB/s

1.0 GB/s

2.0 GB/s

4.0 GB/s

8.0 GB/s

3.0

2010

128b/130b

8.0 GT/s

984.6 MB/s

1.97 GB/s

3.94 GB/s

7.88 GB/s

15.8 GB/s

4.0

2017

128b/130b

16.0 GT/s

1969 MB/s

3.94 GB/s

7.88 GB/s

15.75 GB/s

31.5 GB/s

5.0

2019

NRZ 128b/130b

32.0 GT/s

3938 MB/s

7.88 GB/s

15.75 GB/s

31.51 GB/s

63.0 GB/s

6.0

2021

PAM4 & FEC 128b/130b

64.0 GT/s

7877 MB/s

15.75 GB/s

31.51 GB/s

63.02 GB/s

126.03 GB/s

1.3、常见问题
  • 同一个主板,同一张卡,插在PCIe A上可以正常使用,而在PCIe B却无法识别?
    此问题常出现在双路主板上,主板的PCIe接口分别由两个CPU控制。如果只上了一个CPU,那么另外一个CPU控制的PCIe通道是不通电的,自然不能识别。
1.4、常用命令
  • 查看服务器PCI-E插槽个数及使用情况:dmidecode | grep -1 PCI 注:可使用PCIe扩展卡扩充PCIe插槽
[root@node111 ~]# dmidecode | grep -1 PCI
        ISA is supported
        PCI is supported
        PNP is supported
--
System Slot Information
    Designation: PCIe Slot 1
    Type: x8 PCI Express 3 x16
    Current Usage: Available
--
System Slot Information
    Designation: PCIe Slot 2
    Type: x8 PCI Express 3 x16
    Current Usage: Available
--
System Slot Information
    Designation: PCIe Slot 3
    Type: x8 PCI Express 3 x16
    Current Usage: Available
--
System Slot Information
    Designation: PCIe Slot 4
    Type: x8 PCI Express 3 x16
    Current Usage: In Use
--
System Slot Information
    Designation: PCIe Slot 5
    Type: x8 PCI Express 3 x16
    Current Usage: In Use
--
System Slot Information
    Designation: PCIe Slot 6
    Type: x16 PCI Express 3
    Current Usage: Available

二、PCIe应用

1、HBA卡

HBA,即主机总线适配器(Host Bus Adapter),是服务器内部的I/O通道与存储系统的I/O通道之间的物理连接,实现内部通道协议PCI或Sbus和光纤通道协议之间的转换,减轻了主处理器在数据存储和检索任务的负担,提高服务器的性能。

HBA卡可以将服务器连接至存储网络(如SAN存储),常见的HBA卡有FC-HBA卡(16Gb/s)、SAS-HBA卡(12Gb/s)两种

1.1、FC HBA卡
1.1.1、品牌厂商

FC HBA卡常见的品牌厂商主要为EmulexQlogic

  • Emulex
    可通过lspci | grep Fibre查询服务器当前使用FC HBA卡,若品牌为Emulex,通常驱动模块为lpfc
[root@node85 ~]# lspci | grep Fibre
62:00.0 Fibre Channel: Emulex Corporation LightPulse LPe16002 (rev 30)
62:00.1 Fibre Channel: Emulex Corporation LightPulse LPe16002 (rev 30)
[root@node85 ~]# 
[root@node85 ~]# modinfo lpfc
filename:       /lib/modules/4.14.113-1.el7.x86_64/kernel/drivers/scsi/lpfc/lpfc.ko.xz
version:        0:11.4.0.3
author:         Broadcom
description:    Emulex LightPulse Fibre Channel SCSI driver 11.4.0.3
license:        GPL
srcversion:     9B519AD74B0149A85A5638D
  • Qlogic
    可通过lspci | grep Fibre查询服务器当前使用FC HBA卡,若品牌为Qlogic,通常驱动模块为qla2xxx
1.1.2、常用操作
  • 查看FC本地(通常为服务器FC HBA卡)WWN号:cat /sys/class/fc_host/host{x}/port_name 注:如FC HBA卡配置两个FC口,则存在两个WWN号
[root@node85 ~]# cat /sys/class/fc_host/host11/port_name 
0x10000090fadc39ac
[root@node85 ~]# cat /sys/class/fc_host/host13/port_name 
0x10000090fadc39ad
  • 查看FC远端(通常为FCSAN存储)WWN号:cat /sys/class/fc_remote_ports/rport-{x}/port_name
[root@node85 ~]# cat /sys/class/fc_remote_ports/rport-11\:0-0/port_name 
0x277000c0fff0b1d3
[root@node85 ~]# cat /sys/class/fc_remote_ports/rport-13\:0-0/port_name 
0x237000c0fff0b1d3
  • 扫描FC本地新SCSI磁盘:rescan-scsi-bus.sh
  • 查看FC本地SCSI连接情况:lsscsi
[root@node85 ~]# lsscsi 
[3:0:0:0]    enclosu SEAGATE  4565             G280  -        
[3:0:1:0]    enclosu SEAGATE  4565             G280  -        
[3:0:2:0]    enclosu BROADCOM VirtualSES       03    -        
[11:0:0:0]   enclosu SEAGATE  5865             G280  -        
[11:0:0:11]  disk    SEAGATE  5865             G280  /dev/sdb 
[11:0:0:15]  disk    SEAGATE  5865             G280  /dev/sdd 
[11:0:0:19]  disk    SEAGATE  5865             G280  /dev/sdf 
[11:0:0:23]  disk    SEAGATE  5865             G280  /dev/sdh 
[11:0:0:27]  disk    SEAGATE  5865             G280  /dev/sdj 
[11:0:0:31]  disk    SEAGATE  5865             G280  /dev/sdl 
[11:0:0:35]  disk    SEAGATE  5865             G280  /dev/sdn 
[11:0:0:39]  disk    SEAGATE  5865             G280  /dev/sdp 
[12:0:0:0]   disk    ATA      INTEL SSDSC2KB24 0132  -        
[12:0:1:0]   disk    ATA      INTEL SSDSC2KB24 0132  -        
[12:1:0:0]   disk    LSI      Logical Volume   3000  /dev/sda 
[13:0:0:0]   enclosu SEAGATE  5865             G280  -        
[13:0:0:12]  disk    SEAGATE  5865             G280  /dev/sdc 
[13:0:0:16]  disk    SEAGATE  5865             G280  /dev/sde 
[13:0:0:20]  disk    SEAGATE  5865             G280  /dev/sdg 
[13:0:0:24]  disk    SEAGATE  5865             G280  /dev/sdi 
[13:0:0:28]  disk    SEAGATE  5865             G280  /dev/sdk 
[13:0:0:32]  disk    SEAGATE  5865             G280  /dev/sdm 
[13:0:0:36]  disk    SEAGATE  5865             G280  /dev/sdo 
[13:0:0:40]  disk    SEAGATE  5865             G280  /dev/sdq
1.2、SAS HBA卡
1.2.1、品牌厂商

SAS HBA卡常见的品牌厂商主要为LSIAdaptecArecaATTO