接口技术【2】PCIe入门简介 -- PCI-X
接口技术【2】PCIe入门简介 -- PCI-X
PCI-X简介
PCI-X在软件和硬件方面都向上兼容PCI,提供更高的性能和效率。一样的硬件接口,一样的配置方式等等。
为了达到更高的速度,PCI-X做了如下一些改进:
- 加入了锁相环PLL来提高时钟,如此可以让输出更早,允许输入时间更迟,提高时钟冗余度
- 所有输出到设备的信号加了一层寄存器,降低建立时间(setup time),增加信号可以在总线内部传递的时间来提高时钟频率
Intel 7500是个很好的例子,如下图所示。MCH芯片包含三个hub,分别连到三个PCI-X Hub 2 桥接 (P64H2),每个桥接可以连接两个PCI-X总线,每个总线可以跑133Mhz
PCI-X传输
上图显示了PCI-X连续读取存储的流程。需要注意的是,PCI-X不再像PCI一样支持中途的等待状态,因为数据的长度已经在传输属性Attribute phase of the transaction (ATTR)中交给了设备,目标设备不需要再查看是否还需要传送数据,只需要根据长度做128 bytes为单位的burst传输,这种传输状态更高效。
PCI-X特性
分离传输模型
在常规的PCI读传输中,总线仲裁开启读取流程,如果目标设备没有准备好传输数据,它会进入等待状态或者终止传输。
为了解决这个问题,PCI-X使用了分离传输模型Split-Transaction Model,如下图所示。发起读取信号的设备叫做requester,满足读取需求的设备叫做completer。如果completer暂时无法满足读取需求,它会记录下相关的读取要求,包括地址、读取类型、读取长度和requester ID,然后给requester发送一个分离传输应答,由此告诉requester把读取需求放一下,先去做些别的事情再来取数据。等到completer准备好了数据,它会申请使用总线把所需的数据传送给requester。
这种操作需要两个传输周期,但两个周期的间隔中,总线可以把任务分配给别的任务。requester也不需要时不时检查completer是否把数据准备好,这样效率高多了。这个协议升级是的PCI-X的总线利用率从原来的50%-60%提升到了大约85%。
信号中断Message Signaled Interrupts
PCI-X设备要求有信号中断能力,来减少或消除过去PCI模型中不同设备分享中断信号的情况。
信号中断MSI的使用方法是,设备开启一个写周期,把与自己有关的中断矢量写入特定的中断地址,CPU可以立刻调到中断周期,如此省去了很多外接中断信号。
传输属性
在上面的时序图中可以看到名为ATTR传输属性的一项,可被requester用来提高传输效率,包括传输所需数据长度,requester身份以及其他两个数位 No Snoop (NS) 和 Relaxed Ordering (RO):
No Snoop (NS)
通常读写存储时,CPU缓存要检查相应地址是否已经在某个内存中存在。如果是的话,内存中相应数据要被写入存储,或者在访问存储前废止,这个过程被称为snoop。snoop过程会给读写存储增加延迟,而有些数据是不可能进入缓存的,因此snoop过程就可以被省去
Relaxed Ordering (RO)
通常读写流程要按照一定顺序通过缓存和桥接,比如在同一个位置先写再读。然而不是所有的传输流程有依赖关系,当它们没有依赖关系时如果再保持严格的顺序就会降低性能。因此这个数位可以提醒总线这个数据传输可以跳过队列中的其他任务提前进行,以此实现更高的效率
更高带宽的PCI-X
PCI和PCI-X 1.0并行总线的缺陷
当把PCI这类的并行接口速度提高时有个固有的限制,如下图所示,由于并行接口中的多根信号线无法保证完全等长,发出的信号本身就有一定偏移,到达接收方时也会发生一定的信号偏移,这两个偏移加在一起需要小于两个时钟上升沿的间隔,否则信号会出现错误。在频率变高的情况下,两个时钟上升沿的间隔变小,允许的信号偏移范围也变小。
为了保证正确,电路板设计要求时钟周期必须大于信号在导体中传输时间,也就是要把导线做短。然而很多情况下没法做到那么短。
有两种方法来提高性能,一种是精简传输协议,另一种是源同步时钟模型,让信号和时钟同步输出,经过同样的传输延迟。PCI-X 2.0用的是第二种办法
PCI-X 2.0源同步模型
PCI-X 2.0在使用源同步模型外,还采用了Dual Data Rate (DDR)双信道和Quad Data Rate (QDR)四信道来提高传输速率。源同步模型在传输信号之外加上了一个时钟源strobe和信号一起传输,只要保证他们的传输路径长度和其他影响延迟的特征相似,就能大大减少信号偏移,路径长度也不需要短到一个时钟周期内电波经过的长度了。
需要注意的是,过高的信号速率使得总线的搭载能力下降,从原本的共享总线到点对点传输。结果就是多少设备就需要桥接多少总线
为了更高端的设计者,PCI-X 2.0支持ECC校验,比奇偶校验更复杂和稳定,可以有一定程度的自动纠错能力和更高的多数位侦错能力
总结
尽管PCI-X 2.0比起PCI有了带宽、速率和稳定性方面有了很大的提高,并行总线模型还是到达了它的极限,需要使用新的模型来支撑更高的需求。这种新的模型就是全新的串行接口,也就是之后要写的PCI Express (PCIe)