CMP互连:共享总线遭挑战
传统的单芯片多处理器(CMP)普遍采用共享总线的方式进行通信,因为其实现简单、发展成熟,并可以使用IP核来简化设计,最典型的是斯坦福Hydra,它采用了1条64位的写通过总线和1条256位的读/替换总线实现处理器核与片上L2 Cache和内存接口的通信。
然而随着微电子技术的发展,CMP逐渐朝着多核化(几十或上百个核)和异构化(即包含不同类型的核)的方向发展,共享总线结构则面临以下几个问题,逐渐成为了影响CMP性能的主要瓶颈:
● 带宽限制:总线是一种共享介质的互连结构,某一时刻只允许一个设备使用总线。仲裁逻辑允许高优先级的设备获得总线的使用权,在总线被占用期间,所有其他的请求被阻塞,直到总线空闲。如果成百上千个组件争用一条总线,很难想象结果会是怎样。这还没考虑由于太多的组件连接到总线上而导致的总线频率降低等因素。
● 信号集成度:更低的电源电压,更小的线宽,使得整个VLSI系统对电流中的噪声更加敏感。而共享介质上的更多功能部件则进一步加重了噪声。
● 信号延迟:随着特征尺寸的下降,连线延迟成为影响信号延迟的主要因素。总线结构是全局控制的。在10亿晶体管时代,全局的线延迟会大于时钟周期。总线结构的全局连线使得时钟的偏移很难管理。
● 全局同步:全局连线上的信号延迟决定了系统的时钟周期,为了保持甚至提高系统时钟频率,只能对全局连线进行分布流水,或者采用区域同步全局异步(GALS)的时钟模式。
NOC解决互连难题
由于上述的原因,共享总线显然无法满足大规模系统的需要。把互连网络用于片上系统设计,解决片上组件之间的通信问题,这就是片上网络。片上网络(NOC-Network On Chip)技术以其支持同时访问、可靠性高、可重用性高等特点被认为是更加理想的大规模CMP互连技术。片上网络克服了总线结构可扩展性差的缺点,为10亿晶体管时代提供了一种可行的片上系统通信机制。片上网络除了可以连接更多的IP组件,与总线结构相比,还有高可重用性等特点。
在片上系统设计中,可重用性是一个重要的设计原则。可重用性设计可以节省设计成本,提高设计的可靠性,缩短产品的上市周期。在基于总线的片上系统设计中,各个IP组件是重用的,但通信结构却无法重用。每个设计都需要重新设计通信结构。在片上网络中,除了各个组件是可重用的,片上通信结构以及片上的通信服务也是可重用的。设计新的系统时,在原有的系统上添加路由器和新的功能部件就可以了,以前的设计得到了重用,大大加快了设计的进度。
(1)可预期的系统行为:在总线结构中,各个通信组件争用总线,使得通信行为和性能具有很大的不确定性。系统的性能只能通过后期的测量得到,无法在设计初期通过分析取得,增加了设计的风险。片上网络可以保证组件所需的带宽和延迟,使得系统的行为和性能可以预期,在系统设计的初期就可以分析系统的性能,降低了设计风险。
(2)低功耗:总线结构中,采用广播方式进行通信,使得系统的功耗浪费在无效的通信上。在片上网络中,由于采用全局异步、局部同步设计,端到端的通信方式,只有参与通信的组件是激活的,因此大大降低了系统的功耗。
细细端详NOC
片上网络的研究开始于1999年,研究的初衷是探索片上系统通信部分的系统级设计方法。很快,研究就涉及到从物理设计到体系结构、操作系统,以及应用等各个层面。目前,片上网络的概念很宽泛,包括硬件通信结构、中间件、操作系统通信服务以及设计方法和工具等。从系统结构角度看,片上网络研究的重点在于片上网络的拓扑结构、片上网络协议、片上网络服务质量和片上网络的低功耗等。
片上网络的提出是借鉴并行计算机的互连网络。并行计算机的互连网络是一个板级的网络,而片上网络是一个片上的网络。片上网络与并行计算机的互连相比有很多相同的特点:都支持包通信、可扩展、提供透明的通信服务等。同时,也有很多不同于并行计算机互连网络的地方。下面从网络拓扑结构、协议、服务质量等方面对片上网络进行描述。
(1)网络结构:在片上网络中,普遍使用也是最适合的网络结构是包交换的直接网络。每个节点通过双向通道连接到相邻的节点。直接网络有四个属性:a)节点度:一个节点与相邻节点连接通路的数目;b)直径:网络中两个节点之间的最大距离;c)规整性:若所有节点度都相等,那么该网络是规整的;d)对称性:如果网络从每一个节点看都是一样的,则该网络是对称的。在并行计算机中,互连网络是对称的和规整的,这是由高性能计算的特点决定的。而片上系统主要应用在嵌入式系统领域,其网络既不是对称的也不是规整的。片上网络是异构的,连接不同的处理部件(RISC处理器、VLIW处理器、DSP处理器、专用处理器等)和存储部件(RAM、Flash等),通信量的分布也是不均匀的。在大规模的片上系统中,片上网络也不是单一的拓扑结构,很可能是一种层次化的混合网络拓扑结构,通信密集的组件组合在一起,构成一个子网络,以实现高效的通信。
(2) 协议:在片上网络中,通信协议比总线协议要复杂得多,为了便于扩展,往往采用分层的网络协议。协议的每一层提供特定的功能和接口。
路由和报文大小是片上网络协议的重要问题。为了有效和公平地利用网络资源,通常先把消息分隔成报文再进行传输。报文是最小的通信单位,报文头中包含了目的地址和顺序信息。如果报文要经过一个或多个中间节点到达目的节点,路径的选择由路由算法决定。在每一个中间节点,路由算法指出下一步要使用的通道,该通道可以从多个可能的通道中选择。如果所有候选通道都忙,报文就被阻塞,不能再前进。有效的路由对互连网络的性能十分关键。路由算法要考虑网络的连通性、自适应性、死锁和活锁的可能性以及容错等问题。在片上网络中,如果网络的路由是可以预先得到的,就可以提前更新路由表,进行路由的预调度。在片上网络中,报文大小的选择也是很重要的。这与特定应用有关。如果一个消息分成太多的报文,在目的节点进行报文重组,会带来很大的处理负担。相反,如果报文太大,报文被阻塞时,在虫孔寻径方式下,会造成网络的很多通路被占用,从而造成其它的网络通路阻塞,会对整个系统的性能造成很大的影响。报文的大小也与路由器的缓冲区大小有关。
与并行计算机的互连网络不同,片上网络没有专门的协议处理机,协议必须由硬件处理,这就要求片上网络协议不能太复杂。
片上网络的另一个重要特征是低功耗,这是并行计算机互连网络中不关心的,这也要求片上网络协议的设计必须考虑到低功耗的需求。
(3)服务质量:在片上网络的路由决策时,可以提供服务质量,对关键部件的网络带宽或者延迟进行保证,没有被保证的通信采用尽力而为的路由策略。另外,在深亚微米工艺下,串扰和电压降等问题使得部件之间的连线是不可靠的,可能会造成数据传输的错误或丢失。为了保证可靠的数据传输,当遇到数据错误时,需要进行重传。片上网络通过流控机制来保证服务质量。
同计算机网络一样,NOC也采取了分层协议的设计思想(NOC的层次结构如图1所示),它将前面提到的CMP通信问题分散到了不同的层次中去解决:

图1 片上网络存储结构
1. 物理层(Wiring):主要解决通信通道的物理实现问题,包括互连结构(如图2、图3、图4、图5)、电气性能等,这时候的信号由于噪音的存在是不可靠的。

图2 二维环形网络

图3 二维网格网络

图4 SPN网络

图5 八边形网络
2. 数据链路层(Data Link):通过数据分包(packetize)技术解决物理层信号不可靠的问题。在数据包中加入标准错误检测码(ECC)或者其他冗余信息来实现数据包的检错纠错功能。
3. 网络层(Network):主要研究数据包如何在网络中传输,分为开关(Switching)算法或路由(Routing)算法,前者决定建立连接的类型,后者决定数据传输的路径。
4. 传输层(Transport):主要研究在发送方如何将数据分解并建立数据包以及在接受方如何从数据包中获得数据信息。
5. 系统层(System):系统软件负责提供一个抽象的物理平台。
6. 应用层(Application)。
IBM Power4、Power5就是典型的采用开关网络进行片上通信的CMP。而最新的IBM Cell处理器同样也采用了一种新型的环形网络。在Cell管芯图中那条细长的“长带”就是实现内部芯片连接的单元内部连接总线(EIB-element interconnect bus),它由4条包含128位数据和64位标志位的数据通路组成,每个周期可以传输96个字节并可以同时处理超过100个请求。这4条数据通路相邻两条之间的数据传输方向相反,两组传输环路,这样的设计一方面可以减少数据通路之间的信号干扰,另一方面即使是最糟糕的情况,数据传输的响应时间也只是数据通过整条数据通路时间的一半。在数据传输过程中数据会通过每个协处理单元(SPE)。
NOC的未来发展
片上网络的研究才刚刚起步,还没有在商业产品中广泛应用。片上网络的标准化可以增加组件的互连性,但会造成性能的损失,而对特定的片上系统,性能是片上系统的一个关键因素。片上网络的标准化与性能的权衡是一个重要的研究方向。另外,片上网络是一个全局异步、局部同步的系统,如何对片上网络系统进行模拟也是值得研究的问题。还有,不同应用领域对片上网络有不同的需求,研究面向特定应用领域(如多媒体、无线通信等)的片上网络,也是一个重要的研究方向。低功耗是片上系统的永恒话题,片上网络的低功耗研究当然也是一个重要的研究方向。由于片上网络涉及了从物理实现到体系结构、到操作系统、到应用的各个层次,这就需要对片上网络的各个层面进行研究。
尽管我们可以看到NOC在片上通信方面相比共享总线技术有着很大的优势,然而可以想象NOC并不会完全取代共享总线技术,事实上为了达到性能与复杂性的平衡,它们会相互结合并存在CMP系统中,比如在局部范围内仍然采用总线方式以达到较高的通信速度和较低的复杂度,而在全局范围内采用NOC以减少全局同步的需求、增加数据带宽并达到较高的信号可靠性。