在很久很久以前,总线标准依然是PCI(Peripheral Component Interconnect)和PCI-X。物竞天择,PCI和PCI-X最终进化为了新一代的总线标准PCIe (Peripheral Component Interconnect Express)。从PCIe中“express”这个单词就可以看出来,PCIe的优势就是速度的革命性升级。
目前PCIe接口协议应用非常广泛,比如企业级服务器,个人电脑,通讯系统以及一系列的工业应用。PCIe摒弃了陈旧的并行总线架构,采用了基于点对点(point to point)的技术,通过分离的串行链路(serial links)连接设备到主机(host). 其实,这里的主机并不是主机真身,而是主机的秘书,我们称主机的秘书称为Root complex。
如PCIe架构所示,Root Complex 负责host与PCIe设备之间事务处理。Switch接口可以扩展多个PCIe设备。
为了提速,PCIe支持全双工传输。在这里我们再简单介绍全双工的概念。
全双工是通讯传输里面的一个术语,全双工的概念是指通讯可以双向同时发生。比如设备A->设备B和设备B->设备A可以同时传输。更通俗一点的例子,就好比在宽阔的柏油马路上,如果有相向的两辆车通过时,不需要等待。假设在狭窄的小道上,如果两辆车通过的话,就需要一辆一辆排队通过,此时的情况称为半双工。
设备A->设备B和设备B->设备A这样一个传输的回路称为Lane。设备A->设备B和设备B->设备A各由一组差分信号组成。如下图,
设备A和设备B之间的传输通道,称为Link,一个Link允许1,2, 4, 8, 16, 32个Lane组成。Lane的数目代表Link的传输宽度(x1, x2, x4, x8, x16, x32)。
目前主流的主板上一般有PCIe x4, x8, x16三个插槽(以Gigabyte Z170-UD3为例)。
随着对数据传输速度的要求越来越苛刻,PCIe协议已经升级到第5代,PCIe5.0,同时PCIe 6.0也在酝酿中。
PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer)。
(1)事务层(Transaction layer):事务层主要负责数据/状态信息传输前的封装和数据/状态信息接受后的拆封。事务层的封装包称为TLP(Transaction Layer Packet)。
(2)数据链路层(Data link layer): 数据链路层负责TLPs的排序以及错误检查(LCRC),确保数据传输的可靠性。
(3)物理层(Physical layer):物理层包括逻辑物理层和电学物理层两部分。逻辑物理层负责数据包传输到Link/数据链路层前的处理。电学物理层是物理层的模拟接口,包括了差分信号驱动和接收器。
这里简单的介绍了每一层的概念,数据在PCIe每层之间具体的传输方式在后续文章详细介绍,敬请关注,感谢!