参考:
https://blog.csdn.net/q1594/article/details/126766090?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-126766090-blog-128705435.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-126766090-blog-128705435.235%5Ev38%5Epc_relevant_sort_base2&utm_relevant_index=5
https://blog.csdn.net/kunkliu/article/details/93993436?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-93993436-blog-126766090.235%5Ev38%5Epc_relevant_sort_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-93993436-blog-126766090.235%5Ev38%5Epc_relevant_sort_base2&utm_relevant_index=2
PCI Express (peripheral component interconnect express) 简称 PCIe,是一种高速串行计算机扩展总线标准。是一种全双工总线,使用高速串行传送方式
PCIe总线使用端到端的连接方式,在PCIe链路的两端只能各连接一个设备。这两个设备互为数据发送端和数据接收端。
在PCIe总线的物理链路的一个通路中(Lane),有两组差分信号。其中发送端的TX和接收端的RX使用一组差分信号连接,该链路被称为发送端的发送链路,也是接收端的接收链路;发送端的RX和接收端的TX使用另一组差分信号连接,该链路被称为发送端的接收链路。一个PCIe可以由多个Lane组成。
目前PCIe链路支持1、2、4、8、16、32个Lane。即x1、x2、x4等宽度的PCIe链路。每个lane上使用的总线频率与PCIe总线使用的版本有关。
除了差分总线,PCIe还引入了嵌入式时钟的技术(Embedded Clock),即发送端不再向接收端发送时钟,但是接收端可以通过8b/10b的编码从数据Lane中恢复出时钟。一个简单的时钟恢复电路模型如下图所示:
PCIe相对于PCI总线的另一个大的优势是其的Scalable Performance,即可以根据应用的需要来调整PCIe设备的带宽。如需要很高的带宽,则采用多个Lane(比如显卡);如果并不需要特别高的带宽,则只需要一个Lane就可以了(比如说网卡等)。
图中的Root Complex经常被称为RC或者Root。在PCIe的Spec中,并没有特别详细的关于Root Complex的定义,从实际的角度来讲,可以把Root Complex理解为CPU与PCIe总线系统通信的媒介。Endpoint处于PCIe总线系统拓扑结构中的最末端,一般作为总线操作的发起者(initiator,类似于PCI总线中的主机)或者终结者(Completers,类似于PCI总线中的从机)。显然,Endpoint只能接受来自上级拓扑的数据包或者向上级拓扑发送数据包。
所谓Lagacy PCIe Endpoint是指那些原本准备设计为PCI-X总线接口的设备,但是却被改为PCIe接口的设备。而Native PCIe Endpoint则是标准的PCIe设备。其中,Lagacy PCIe Endpoint可以使用一些在Native PCIe Endpoint禁止使用的操作,如IO Space和Locked Request等。Native PCIe Endpoint则全部通过Memory Map来进行操作,因此,Native PCIe Endpoint也被称为Memory Mapped Devices(MMIO Devices)。