对于软件而言,你只需要知道PCIE的各个引脚的含义即可,不需要知道它是如何实现的,所以这一节就介绍PCIE硬件结构,用软件的思维去分析它 。
PCIE引脚大致分为两类,分别为PCIE通信和PCIE供电,具体如下:
PCIE M.2接口
PCI接口的引脚是并行的,容易受到干扰,所以出现了PCIE接口,PCIE接口的是串行的,每个方向的数据使用2条差分信号线来传输,发送/接收两个方向就需要4条线,这被称为1个Lane:

PCIe设备的接口上,可以有多个Lane:
PCIe设备之间有一个LinkLink中有1对或多对"发送/接收"引脚,每对"发送/接收"引脚被称为"Lane"Lane:有发送、接收两个方向,每个方向用2条差分信号线,所以1个Lane有4条线Link最多可以有32 Lane

既然PCIe是串行信号,那只能在包里传输地址、数据了。
Mem R/W) + 地址 + 数据如下图,PCIE通信在每一个链路层都对Data数据进行了包处理,对于常见协议来说,几乎都是由三层结构组成:物理层,数据链路层,事务层,三层结构各司其职。
事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包平常不需要关心,在 IP 核中封装好了

在PCI系统里,多个PCI设备是都链接到相同总线上。
在PCIe系统里,是点对点传输的:
PCIe总线只能接一个PCIe设备PCIe设备,必须使用Switch进行扩展