6.6 设备总线
设备总线用于计算机系统中与IO设备的连接。PCI(Peripheral Component Interconnect)总线是一种对计算机体系结构连接影响深远并广泛应用的设备总线。PCIE(PCI Express)可以被看作PCI总线的升级版本,兼容PCI软件架构。PCIE总线被广泛地用作连接设备的通用总线,在现有计算机系统中已经基本取代了PCI的位置。PCIE接口在系统中的位置如图6.24所示,一般与SATA、USB、显示等设备接口位于同样层次,用于扩展外部设备。
图6.24 PCIE接口位置示意图
6.6.1 PCIE总线
与HT类似,PCIE总线也是串行总线。PCIE与设备进行连接的时候同样采用点对点的方式,一组PCIE接口只能连接一个设备。为了连接多个设备,就需要实现多个接口,如图6.25所示。
与HT又有所不同,两者在信号定义和接收发送方法上有很大差别。上一节介绍过,HT总线主要包括三种信号,分别为CLK、CTL、CAD,其中CLK作为随路时钟使用,用于传递总线的频率信息并用作数据恢复。
图6.25 PCIE接口连接示意图
PCIE的总线信号如表6.9所示。
表6.9 PCIE总线主要信号定义
可以看到,PCIE接口上只有用于数据传输的信号。HT接口上,CAD[n:0]通常是以8位为单位,共用一组时钟信号,总线宽度可以为8位、16位或32位。而PCIE接口上的各个TX信号之间相互独立,最小单位为1位,称之为通道(Lane)。常见的总线宽度有1位、4位、8位及16位。如千兆网卡、SATA扩展卡、USB扩展卡等总线宽度大多为1位,而显卡、RAID卡等总线宽度通常为16位。
PCIE在进行传输时,仅仅发送数据信号,而没有发送时钟信号。在接收端通过总线初始化时约定好的数据序列恢复出与发送端同步的时钟,并使用该时钟对接收到的数据信号进行采样,得到原始数据。
6.6.2 PCIE包格式
PCIE总线的传输同样以包(事务层包,Transaction Level Packet,简称TLP)为单位,其包格式如图6.26所示。PCIE包主要分为TLP首部与数据负载两部分,其作用与HT包类似,可以对应到HT包中的控制包与数据包。PCIE包同样是以4字节为单位增长。
图6.26 PCIE总线包格式
对于具体包格式的定义,PCIE与HT各有不同。尤其是PCIE包在协议上最多可以一次传输4KB的数据,而HT包最多一次传输64字节。PCIE的具体包格式定义在此不再展开,感兴趣的读者可以参考PCIE相关协议。
此外,PCIE同样采用了流控机制来消除总线握手。
PCIE总线被广泛地用作连接设备的设备总线,而HT总线则作为系统总线,用于处理器与桥片之间的连接及多处理器间的互连。
这些使用上的差异是由总线接口特性所决定的。与HT总线不同的是,PCIE接口在x1时,只有一对发送信号线和一对接收信号线,没有随之发送的时钟和控制信号。PCIE接口通过总线传输编码,将时钟信息从总线上重新提取并恢复数据。PCIE总线的传输相比HT总线来说,开销更大,带来延迟的增大及总线带宽利用率的降低。
PCIE总线可以由多个数据通道组成,每个通道只有一对发送信号和一对接收信号,因此传输时每个通道所使用的信号线更少,而且不同的通道之间相关性小,目前使用的PCIE卡最多为16个数据通道。对于物理连接来说,PCIE接口相比HT接口,实现更为简单,被广泛地用作可扩展设备连接,逐渐替代了PCI总线。