在设计中如何选择恰当的互连与终端应用密切相关。在一些拥有交互式或“障碍赛”特性的应用中,时延是应用性能的一个重要因素。
本文通过分析两种具体的使用案例,比较了时延对三种主要的芯片至芯片互连标准的影响。结果表明,在某些特定应用中,HyperTransport(HT)可以提供比PCI Express(PCIe)和串行RapidIO(sRIO)等竞争技术更低的处理时延,这部分归功于HT的“直通(cut-through)”架构。
时延是指一条消息从进入链路的一端,到由另一端出来时之间的延迟时间,它常常是应用性能的一个关键指标。时延是链路带宽、协议开销与互连逻辑设计的函数。
我们可以拿任何互连中的时延与汽车转向的响应时间做比较。从驾驶员开始转动方向盘到汽车真正转向新方向所间隔的时间与汽车在特定应用(如障碍赛)中的性能直接相关。豪华汽车通常具有比赛车更大的引擎,但在障碍赛中,赛车的表现总是胜过豪华汽车。
依此类推,今天许多嵌入式应用也具有类似障碍赛的计算需求。在这些应用中,系统可能要基于实时更新的数据作出一系列决策。
另一种类似障碍赛的情形是由于数据的选择是不可预测的,以至于缓存策略失效。在这种情形下,链路的时延是应用性能的关键。
在最基本的应用中,CPU子系统通过点对点互连与专用器件(ASD)交换数据。这里的互连可以是PCIe、HT或sRIO。采用任何一种互连,ASD都可以从CPU的存储器中读取或写入数据。我们将仔细考察由ASD发起的读操作。HSPACE=12 ALT="表1:短数据包应用中三种互连技术的比较。">
通过深入分析,我们会发现,互连被实现为CPU和ASD内部的一系列逻辑模块。这些逻辑块对应于互连规范的各层。每种互连基本上都是一个三层结构。
为了从CPU存储器中读取数据,ASD首先要形成一个存储器读请求数据包。然后,互连端点逻辑在物理层(PHY)从线上发送数据包之前,在其三层的每一层上为数据包构造并附加一个包头。非透明实现可能要求在逻辑层、传输层及物理层上进行全数据包缓存。
在CPU内,数据包必须以相反的顺序通过这些层。另一个潜在的缓存点是CPU的内部总线。低时延设计将设法减少这些层之间的时延。
减少时延的一种方法是减少需要数据包缓冲操作的点或层。另一种方法是允许数据包直接通过各层和缓存区,而不必在发送之前在每一层上完整累积数据包。
通过消除等待数据包累积的时间,直通能在减少时延中发挥关键作用。直通的安全程度取决于系统,尤其是链路的可靠性。
时钟转发接口,如那些使用在同步静态RAM上的接口、SPI-4.2及 HT等,常常被认为与生俱来就是可靠的,因为良好设计的接口发生错误的机率远远低于其它系统错误源。在这些接口中,一般当检测到误码时会重置链接。许多HyperTransport设计都采用直通,甚至在端点。
虽然现代的串行/解串行器(serdes)设计可以达到1015或更好的误码率,但基于serdes的接口并不被认为是天然可靠的。采用每数据包循环冗余校验(CRC)的错误重试(Retry-on-error)算法已经被用于所有三种互连技术中。
由于最后的CRC只在数据包尾使用,而且CRC可能最终检查出正在直通的数据包有缺陷,所以直通变得很复杂。不过,直通仍是有用的,尤其在交换和中间缓存点上,但我们必须采取某些策略以处理CRC出错的情况。
所有三种互连技术都支持所谓的“包重踏”策略。此外,HT 和PCIe还支持数据中毒(data poisoning)。
在我们的分析中,我们评估了ASD分别用PCIe、HT和RIO互连从CPU存储器中读取数据的时延。我们还比较了使用短数据包和长数据包的两种情况。
链路速度决定了通过线路发送数据包的实际时延。为了便于比较,我们采用具有类似链路带宽的互连,并在每种情况下都选择工作在最大可用频率的x4链路。所采用的链路速度分别为:HSPACE=12 ALT="表2:长数据包应用中三种互连技术的比较。">
PCIe:2.5 Gbps的x4链路,线编码后可产生8.0Gbps的吞吐量;
HT:2.8 Gbps的x4链路,可产生11.2 Gbps吞吐量;
串行RapidIO :3.125Gbps的x4链路,线编码后可产生10.0Gbps的吞吐量。
控制器速度决定了IP核处理数据及报头字段的时延。为了公平地比较,我们在64位带宽和250 MHz频率上操作每个端点。存取的对象是在333MHz SDRAM中的一个开放页。
第一种短数据包的情况如表a所示。ASD从CPU存储器中读取8字节的数据。在这种情形下,读取的数据很小,但对于障碍赛类型的应用,使数据快速返回非常重要。表a旨在比较不同互连之间的典型时延。实际时延将取决于每种实现的具体情况。
该表中的存储-转发列显示了数据包分别在Tx应用、Tx数据链路层及Rx数据链路层中的缓存情况。直通(C-T)列经优化后仅在Rx数据链路层中执行缓存,以用于驱动重试算法。
对于每一列,“最大_载荷_长度”值被选择,以使时延最小。该值对于短数据包情况没有影响,但是长数据包情况的关键。
对于存储-转发列,越小的长度越好。对于直通列,越长的长度越好,不过超过256的值会因为在Rx数据链路层中的缓存而增加时延。
serdes+PMA+PCS+MAC行统计了这些层引发的时延总和,包括每种互连技术中的编码、加扰和路线纠偏时间。
对于短数据包,表a显示:HyperTransport接口在这组假设下获得最佳的时延。这主要是因为在PCIe和串行RapidIO中使用的serdes层用于字符调整、路线调整及其它功能的时延较长。结果还证明了直通实现的优势。
在长数据包应用中三种互连技术的比较见表b。它列出了对2kb数据包从读请求到读完成所用的时延。该时延在大块传输应用中非常重要。
正如所预期的,长数据包情形下的时延要高于一个8字节的读取时间。在这种情形下,HyperTransport提供了比其它接口稍低的时延,而且直通值不变。
作者:Duncan Bees
技术顾问
Brian Holden
首席工程师
PMC-Sierra公司