1970年代,由于微处理器的问世,利用分立式处理器、存储控制器和I/O接口器件,在单块电路板上就可以搭建出简单的计算系统。由板级总线来连接这些器件,而当需要更高性能时,把多块电路板组装在一起,利用系统级总线通过背板提供卡间通信。这些电路板和系统互连协议都是专利性的。但随后,专用的协议逐渐让位于标准化协议,比如以太网、PCI Express 或RapidIO协议。
与此同时,集成电路技术遵循摩尔定律,其包含晶体管的数目和速度以一定的代价不断增加。这些趋势共同大幅度推动了处理器性能的提高。
迄今已有数代硅器件充分利用了这一良性周期。不幸的是,单核处理器的性能提高速度已开始趋于下滑。造成这种下滑的最重要因素一直是功耗。晶体管越小,开关速度越快。晶体管尺寸的缩小使泄漏增加,导致静态功耗的增大。同时,随着晶体管开关速度的加快,动态功耗也在增加。
这种不断上升的功耗凸显了目前硅工艺技术存在的几个现实问题。首先,单个处理器的性能受功率和系统功耗的限制。其次,晶体管预算在继续增加,而可获得的时钟速率却不然。
随着晶体管预算的持续增加,业界已迅速转向带有多个处理器内核的器件。这些器件还集成有内存控制器、应用加速器和I/O接口的器件,形成一个多核SoC。多核器件有望大大提高系统性能。
SoC器件的面世模糊了单个元件及其所实现的系统架构之间的界线。曾经一个完整的计算系统需要一块电路板来实现,而现在只需单个器件就能够把多个这类系统囊括在内。
向SoC器件的转换改变了SoC和其它器件及网络之间的互连要求。电路板和系统级互连最初基于总线共享,而且和以往的处理器一样,采用一种类似的方式来满足对更高互连性能的要求:增加时钟速率,加宽总线带宽。然而,蹈处理器之覆辙,最后同样因物理效应的影响,总线上的器件数目不得不减少,从而催生出了总线分割、分层化拓扑和最终的点到点开关网络。
嵌入式系统常常被划分为三个子系统功能:控制面板、数据面板和系统管理。当系统只包含一个计算系统时,系统级的通信流数目很有限。这是幸运的,因为按照定义,基于总线的互连只能容纳一个通信流。
QoS问题
过去,为了提高系统性能,每一个功能采用一个专用处理器。随着多个并行通信流的出现,服务质量(QoS)问题急剧增加。为了更好地优化带宽并防止各个通信流之间产生干扰,在许多情况下都使用了三种单独的互连。在这些系统中,每一个处理器执行一个功能,并分别负责单个或最多很少几个通信流。然而,多核SoC的问世使这种局面大为改观。由于每个内核分别处理各自的通信流,故有可能实现每芯片多个通信流。
并行执行现有代码,在单个多核SoC上实现控制、数据和管理面板功能的融合,这一近期目标预计将作为多核架构的权宜之计。其将在一个四核器件上产生至少三个以上的通信流。从长远来看,软件将支持多核,并回复到众多内核执行离散数据或控制面板功能。在任一种情况下,不论何处采用多核SoC都将出现多个通信流。随着使用8、16甚至更多内核的下一代SoC的问世,未来2~4年间,单个器件能够支持的通信流数目将大幅度增加。
目前的互连支持多个通信流吗?答案是肯定的。通过在单个互连传输之前进行多路复用,可支持任何数目的通信流。但仍存在两大挑战:在目的节点如何对通信流进行多路分离,如何赋予每一个通信流独特的服务参数,比如保证带宽以及平均或最差情况下的延时?
要解决这些问题,协议需要具备好几个功能。首先,这个协议必须能够对各个通信流进行差异化。换言之,应该能够检查线缆上的数据包,并决定其属于哪一个通信流?其次,当数据包通过互连传输时,必须能够执行服务参数。这一点可以通过控制仲裁和流量控制来实现。例如,稳健的SoC需要多个通信流量控制机制,以限制互连上的一系列拥塞事件。这些机制可能包括链路到链路、端到端和进/出流量管理。
嵌入式系统中应用最广泛的互连也许是以太网。以太网的可扩展性已在多年服务中得到了充分的证实。基本的 Layer 2以太网帧只支持数据报类型(datagram-style)的处理,而且没有已定义的流量差异化头字段。但之后,从Layer 2的VLAN标签到更广泛的Layer 3 IP报头中的“5 Tuples(五元组)”,各种流量差异化方法被放在最高层。其中,“五元组”方案可支持数百万个通信流。
不幸的是,对以太网而言,QoS已证实是一个更大的挑战。这是因为只有一个有限的链路级PAUSE-帧协议可被采用,而缺乏广获采纳的流量控制机制所致。在链路级之外,有少量这一问题的解决方案获得牵引力,其中包括在Layer 2采用VLAN 优先级标签(802.1Q),或在Layer 2 和Layer 3之间采用MPLS 报头。
另一个问题的出现是因为大部分在以太网上分层的方案往往都是采用软件来实现的。由于硬件支持较少,可获得的QoS参数受通信流通过软件堆栈时产生的延时和延时抖动所限制。
1999年定义的RapidIO互连规范代表了一种更先进的系统互连方案。在该规范的开发过程中,QoS曾是一个重要考虑事项,包含了好几种流量控制机制,比如重试(retry)和基于信用(credit-based)的链路级流量控制、端到端XON/XOFF和流量控制协议。
在嵌入式系统中广获采用的另一种互连技术是PCI Express (PCIe)。PCIe最初瞄准PC和服务器市场,支持配置、事件消息发送和读写处理。这种技术在系统级的QoS支持很有限。在per-VC basis上有稳健的基于信用的链路级流量控制,足以实现点到点通信。
在实际应用中,以太网可以实现稳健的流量差异化,但缺乏稳健的QoS特性。大多数PCIe实现方案都没有流量差异化能力。PCIe的流量控制有限,似乎是面向未来多核器件准备最不足的器件。三者中RapidIO潜力最大,因为它支持三个具有优先级的通信流上的数百万个差异化流量,并支持稳健的QoS特性。
幸运的是,许多新兴的多核SoC都支持多个外部互连协议。例如,飞思卡尔的8核QorIQ P4080就可以配置为支持这里提到的所有协议。
图1:当系统只包含一个计算系统时,系统级的通信流数目很有限。在多核SoC中,由于每个内核分别处理各自的通信流,有可能实现每芯片多个通信流。