多核处理器核间高速通讯架构的研究

2011-02-26 09:41王少轩赵忠惠陈亚宁
电子与封装 2011年6期
关键词:数据包仲裁路由

汪 健,张 磊,王少轩,赵忠惠,陈亚宁

(中国兵器工业第214研究所苏州研发中心,江苏 苏州 215163)

1 引言

在当今处理器的发展中,提高处理器主频的做法实现起来似乎更加困难,用户市场上难以看到芯片主频率高达4GHz或者4GHz以上的传统单核处理器出现。世界顶级芯片巨头Intel、AMD公司为代表的供应商,依靠不断提高处理器频率提升系统性能的时代即将成为过去。究其原因可能有三点:首先仅仅依靠提升主频已经很难大幅度提升CPU的性能,从而减缓了消费者对高频CPU的热衷;其次当CPU主频达到2GHz以上的时候,处理器功耗也达到了近100W,这已经是目前风冷散热技术的极限;第三,在嵌入式产品领域,传统的单核处理器结构越来越不能满足呈几何级数增长的计算规模的需求。单核模式下的利用局部性追求性能提升的脚步已经放缓,而基于多核的线程级并行技术却为性能提高提供了新的动力,为了达到更高的处理效能,多核处理器体系结构应运而生了。

多核处理器是指一个芯片内含有两个或者两个以上的“执行内核”。多核处理器在进行体系结构的技术研究时,比起单核处理器来讲,要面临更多的挑战,诸如核间通讯、存储器体系、低功耗、软硬件协调等。如何实现多个内核之间相互协作和通信,确保提高处理速度、提高芯片处理器性能就是核间通讯结构研究的主要内容,也是学术界关注的重点。在多核通讯方式中,目前除了继续沿用单核SOC中的总线结构,如AMBA、CoreConnect、Wishbone、OCP、C*BUS等,主要还有交叉开关(Crossbar switch)、片上网络(NoC,Network on-Chip)等结构。本文将对这几种主流结构进行讨论。

2 总线结构体系

多核处理器系统的总线结构如图1所示。从图中可以看到,多核处理器总线结构硬件可以分为三个主要部分:处理器(计算节点)、总线接口(通讯节点)和片上总线。虽然时钟同步问题和传统的总线结构限制了多核处理器总线架构的发展,并且由于性能和功耗的限制,总线连接的设备数量一般以低于12个最为合适,但就实用而言,总线结构设计方便、硬件消耗少、成本低,在中小规模多核芯片中也是一种不错的选择。

2.1 共享总线结构

共享总线结构如图2所示。总线上方的处理器为主设备,是通讯发起方;下方的设备为从设备,全局总线将全部片上部件连接起来。主设备可以由n个处理器构成,从设备为n个本地存储器和共享设备。n个本地存储器分别属于各个处理器,即这n个本地存储器在逻辑上统一编址,但每个处理器只能访问自己的存储地址空间;共享设备为共享存储器、旗语存储器和中断控制器。

在共享存储器的多处理器系统中,多个同时进行的共享存储器读写操作可能会使数据变得不可靠,对于共享可写存储单元的访问,会破坏数据的完整性,因此必须采取同步措施才能保证读写操作的正确性。旗语控制器即用来实现多核之间的同步功能,标记该处理器核可否对某共享区域发起读写操作。中断控制器主要实现多核之间的任务调度,为了对其他处理器核发起中断,发起中断请求的处理器核访问中断请求寄存器,如果中断使能寄存器中允许中断请求,中断控制器产生外部中断请求信号或者快速中断请求信号使处理器核进入相应的中断服务程序。

2.2 层次化总线结构

共享总线结构串行分配主设备的总线周期,不仅效率低而且不能支持两对以上的设备同时通讯。随着总线上集成的处理器数目的增多,这个固有的缺点表现得越来越明显。为了克服这些缺点,缓解通讯瓶颈的压力,在原有全局总线的基础上,为每个处理器增加本地总线,并将本地存储器连到本地总线上,使每个处理器通过本地总线与本地内存通讯,构成局部的总线网络,实现了层次化通讯结构和层次化存储器结构,提高了并行处理能力。层次化总线结构如图3所示。

局部总线负责处理器核与本地存储器之间的通讯,全局总线实现处理器核对共享模块的访问,两层总线通过总线桥连接,这样同时减少了关键路径上的总线负载。处理器之间的通讯是通过对共享存储器区的访问完成的,即分配一段存储空间,让所有处理器都可以访问,并合理安排各处理器的访问机制,依次读写共享存储区,从而完成处理器之间的通讯。

总线通讯的主要优点是结构简单、协议简明、总线优先级可灵活设置,尤其适用于设备优先级有明确排序的系统。主要缺点首先是扩展性不强。随着总线设备数量的增加,总线上的寄生电容等参数也变大,从而导致性能降低。因此当总线上需要挂接上百个设备时,这将是不可逾越的鸿沟。其次是并行性差。总线无法支持一对以上的用户同时通讯,设备串行使用总线。这两个缺点无疑限制了总线在多核处理器核间通讯中的应用。

3 交叉开关网络

3.1 交叉开关的功能

交叉开关(Cross-bar)是片上网络的一种,来源于计算机网络的一种交换结构,是业界公认用于构建大容量系统的交换网络结构。Cross-bar引入了交换矩阵这种新的交换方式,摒弃了共享带宽的交换方式,在数据交换上是一场革命性的变化。Crossbar交换网络使用仲裁机制确定数据流向,很好地解决了总线结构的拥塞问题。Cross-bar的拓扑结构如图4所示。

在多处理器Cross-bar通讯设计中,每个处理器核可以有独立的一级缓存(L1 Cache),共享二级缓存L2 Cache。L2 Cache被用来作为数据交换的共享存储器,而各个处理器核使用L1 Cache作为其私有存储器。共享的二级缓存具有很大的优势。首先,二级缓存的全部资源可以被任何一个处理器访问,当二级缓存的数据更新之后,多个处理器并不需要做缓存数据同步的工作,工作量相对减少了,而且极大地降低了缓存数据延迟问题,这有利于处理器性能的提升。其次共享的二级缓存任何一个处理器都可以根据工作量的大小来决定占用多少二级缓存资源,利用效率相对于独立的二级缓存得到了极大的提高。

Cross-bar的作用是为处理器访问存储器提供较大的带宽。其由n条横向和m条纵向的连线构成的网状结构使得每一个处理器能够和任意一块L 2 Cache进行连接。每一条交叉线中的交叉位置等效于一个开关,需要控制逻辑来控制具体是哪一个核与L2 Cache连接。如果有不同的处理器核需要同时访问同一块L2 Cache,则需要有相应的仲裁机制对不同处理器核的访问进行控制。

3.2 一种典型的Cross-bar设计实现

Cross-bar的基本原理是让处理器核能与不同的Cache块相连,进行数据的传递。在多核处理器中Cross-bar要设计成双向的,主要负责控制多个处理器核与多个缓存区、输入/输出设备之间的数据传输。所有在Cross-bar中的数据交换都有两个方向,因此整个Cache Cross-bar要分成两个独立的部分,处理器到缓存的CPU-Cache开关模块(processor-cache cross-bar PCX)和缓存到处理器的Cache-CPU开关模块(cache-processor cross-bar CPX)。PCX模块管理从CPU核到二级缓存、输入/输出设备的通信;CPX模块管理从二级缓存、输入输出设备至CPU核的通信。处理器会通过Cache Cross-bar中的PCX部分向L2 Cache发出数据请求,而L2 Cache则会通过Cache Cross-bar中的CPX部分向处理器发送返回的数据以及一些缺失或者命中的信息。PCX的结构和CPX的结构除了输入输出端口的数量有差别之外,其他的功能是类似的。

图5是Cross-bar的数据交换示意图。

在一个时钟周期内,只允许一个数据包发送给一个特定的目标。当有多个单元发送数据包给同一个目标时,交叉开关会暂时保存这些数据包并裁决这些包的发送顺序,而不会改变或处理这些数据包。交叉开关可以处理两种通信请求方式:第一种是发送一个数据包,在一个时钟周期内完成;第二种是连续发送两个数据包,在两个时钟周期内完成。一般一个数据包从源传输到目标所需的总时钟周期数可能大于理论上所需的周期数,这是因为当多个源同时发送数据包到同一个目标时,PCX(或是CPX)发送一个特定数据包的时间会大于一个时钟周期。

源单元一次可发送最多两个单数据包请求或一个双数据包请求到一个特定的目标单元。PCX模块为每个源单元—目标单元提供一个队列缓冲器(Data Queue,DQ)来保存数据包,缓冲器为两个数据包深度。PCX模块在发送一个数据包给目标单元后,会发送一个确认信号给源单元。每个源单元通过这个确认信号来监控队列缓冲器是否已满。每个源单元会发送一个数据包和一个目标识别码(Identifier,ID)给CPX模块。CPX模块从二级缓存、输入/输出设备接受数据包并发送给多个处理器核。缓存和输入/输出设备能处理的数据包是有限的。当目标单元达到接受极限时,会发送一个停止信号到PCX模块,这个信号会阻止PCX模块向源单元发送确认信号。

3.3 仲裁器的设计

多核处理器运行过程中会有多个处理器核可能会同时请求相同缓存块的内容,因此仲裁部分是必须的,仲裁器是cross-bar的核心模块之一。仲裁部分首先会根据核所发出的请求先后顺序发出确认信号到赢得仲裁的核,在这个过程中最先发出请求的核具有最高的优先级。仲裁器用来决定是哪个核赢得了对L2 Cache的请求访问权。对于仲裁的需求,无论是PCX还是CPX都是相同的,因此在设计上可以将仲裁器设计成可重用的结构,以提供给CPX和PCX。

仲裁器的主要功能这样设计:采用深度为若干的FIFO存储来自于处理器核的传输请求,可定义越早发出的请求优先级越高,也可以定义其他的优先级。仲裁器会以请求发出的先后顺序来给各个处理器核发送访问L2 Cache的确认信号。因此对于不同的处理器核在同一时间发出的请求,仲裁器采取不偏向于任意一个核的方式进行处理,具体的实现方式在仲裁器的结构中进行定义。根据L2 Cache块的输入信号,可停止对处理器核发出确认信号。如果请求FIFO满,则对处理器核发出停止发送请求信号。

仲裁器通过流水线来实现整个仲裁过程。流水线的基本周期包括三个,分别是PQ、PA和PX。PQ周期处理器核发出请求,PA周期仲裁器进行仲裁,PX周期发送确认信号给处理器核,并实现数据的多路选择,仲裁器流水结构如图6所示。

所有请求首先被发送到输入寄存器,输入寄存器及其后面的电路包括FIFO、旁路选择器和请求选择器一起构成了仲裁流水线的PA周期。这些电路用来实现对请求的缓存操作。由于采用了先入先出的机制,所有缓存的数据是按照先后次序存储的,也就达到了最先发出的请求会有最高的优先级的要求。如果仲裁器没有正在处理之前的请求,当前的请求会被直接发送到请求寄存器,而如果之前还有请求在仲裁器中进行处理,则当前的请求会被先存储到FIFO中。请求寄存器以及整个左半部分的电路构成了仲裁流水线的PX周期。左半部分电路中的升序优先编码器和降序优先编码器(DES PE)实现了对同一时间发出的请求采取不偏向仲裁的功能。在仲裁结束后,相应确认信号会发送给赢得仲裁的处理器核。

采用不同的处理器,仲裁器时序的要求是不同的,要根据处理器的实际进行设计,此处不再详述。

4 片上网络结构

NoC(Network on-Chip)是更高层次、更大规模的片上系统,是片上的网络系统。NoC技术的核心思想是将计算机网络技术移植到芯片设计中来,彻底解决多CPU的体系结构问题。由于网络结构本质就是多CPU系统,因此基于网络的体系结构是多CPU系统最有前途的解决方案之一。片上网络继承了分布式系统与计算机网络的概念,互连结构具有各通信模块之间并行通信,数据的通信带宽高、扩展性好、吞吐量大,并且可以在一定程度上改善深/超深亚微米条件下信号传输线延迟等优点,有人称NoC会成为下一代多核的主流互连结构。

4.1 NoC的拓扑结构

拓扑结构体现了NoC中通讯节点在芯片中的分布和连接。由于系统需求、节点模块的尺寸和不同的位置,需要不同类型的拓扑结构,有很多种可供选择的拓扑结构。良好的拓扑结构必须考虑以下因素:路由节点与处理器节点或者路由节点之间的通信带有明显的局部性特征;NoC中资源节点的物理尺寸与通讯节点的物理尺寸的相互影响;NoC使用物理连线作为通信信道,因此节点之间的连接不能太复杂,且要具有易扩展性。

片上网络结构常用的为直接型结构,即网络中每个节点与相邻节点之间以点对点方式或直接互连的方式连接。如网格(Mesh)结构,包括规则的Mesh结构、不规则的Mesh结构、多层Mesh结构、稀疏的Mesh结构,二维环状Mesh结构,还有胖树结构、八角形网络等。图8所示为采用了二维网格结构(2D mesh)的片上网络,这是比较常用的系统结构。该二维网格结构由资源单元和网络结构构成,其中网络结构包括交换单元、通信通道和资源与网络的接口(mi),资源单元由嵌入式系统或者存储器系统构成。图中S表示交换单元,P与C分别表示处理器单元与缓冲存储器,D表示DSP单元,re表示可配置单元,如FPGA单元。mi表示资源与网络的接口,M表示存储单元。图中每一个方形区域(region)用于映射不同结构的系统,例如处理器子系统和存储器子系统合成的区域,区域的规模可以大于一般的资源单元,但是区域与片上网络其他部分的互连需要通过交换单元进行。

4.2 NoC的通讯协议

NoC是一种片上通信基础结构,借鉴网络中的分层思想,NoC设计采用了一个普通的通信分层方法,定义了5个协议层:物理层、数据链路层、网络层、传输层和系统层。图9是NoC一个典型的层次结构。

(1)物理层

物理层实现连接处理器资源与网络的链路宽度和链路方向,因此带宽负载能力、数据包大小、数据包在两节点之间的传输延迟等物理信息都是检验物理层设计质量的评估标准。

(2)数据链路层

数据链路层的功能就是将信息的每一个字准确地从一个节点传输到相邻的节点上,定义了资源节点和通讯节点以及两个通讯节点之间的传输协议,保证物理连接之间可靠的信息传输。由于两个相邻的节点可能以异步传输模式工作,因此除了需要考虑数据的出错检测与纠错外,数据链路层还需要注意硬件同步问题,同时实现数据编码和更好地控制数据传输率以及功耗管理。物理层和数据链路层均与工艺有关,也就是说,如果采用新工艺,必须重新定义这两个层。

(3)网络层

网络层负责建立互连链接以及路由策略,因此片上网络中各传输路径的利用情况在很大程度上取决于网络层的设计结果。不同的链接建立方式在不同的网络拓扑结构中性能各不相同,因此针对不同的应用、不同的片上网络结构,需要制定相应的链接建立方式。

(4)传输层

传输层负责监视网络流量、对数据包进行拆分及组装,因此数据包发送速度、掉包率以及解决方案是衡量传输层设计质量的标准。另外传输层对网络传输路径上的流量控制,直接影响了数据传输的吞吐量,这也是衡量传输层性能的指标。

(5)系统层

该层的重要功能包括信息的同步和管理、接收端数据格式的转换以及一些与应用相关的功能等。

4.3 路由算法

路由策略的研究是NoC中的一个重要内容,在给定的网络拓扑结构下,决定数据包在网络中的投递路径。其目的是使数据包的网络延时、数据吞吐率、数据包投递所需的功耗和可靠性都达到令人满意的指标。

NoC路由算法的分类主要有:依照路由结果的计算位置,依照路径选择方式,依照路径距离等方法,由算法决定了数据包在网络结构中传输的方向,把可能的传输路径集合限制为合理的路径子集。如果消息的路由完全由它的源和目的地址决定,与网络中其他流量无关,这种路由算法称为确定性路由,对于每一个源节点和目的节点之间,采用确定性路由得到唯一一条路径计算结果。而自适应路由算法是允许路径上的其他流量影响数据包的路由策略,对于每一对源和目的节点,算法可以根据网络的拥堵状况给出多条的路径计算结果。路由计算模块是一个相对独立的处理单元,通常只需要根据不同的算法改变交换节点中的路由计算模块,就可以实现NoC路由算法的改变。

维序路由是采用较为广泛的路由算法,采用了确定性路由的方法,数据包不管其路径上的链路是否阻塞都要沿该路径走下去。该算法的思想是数据包先在低维上投递,直到数据包在该维度上相对于目的节点的偏移量为0,然后转移到下一维度以相同的模式进行投递,直到达到目的节点。因此维序路由是一种分布式路由,也是一种最小距离路由。

图10是二维Mesh网格中维序路由的一种算法,也被称为XY路由。表示的是不同源节点、目的节点下维序路由算法得出的路由路径结果以及在二维Mesh网络中路由路径的可能转向。数据包先在X维度上投递,然后在Y维度上投递,直到达到目的节点,该路由算法很明显不会出现死锁现象。

4.4 交换技术

交换技术是按照某种方式动态地分配传输线路和接口的资源,是影响网络性能、决定交换节点结构的重要技术。NoC中运用的交换技术主要可分为两类:面向连接的和无连接的。面向连接的交换方式主要有电路交换,无连接的方式主要有存储交换、虚切通和虫孔交换。

(1)电路交换(Circuit Switching)是一种面向连接的交换机制。在开始通信之前,一般要通过一个信息头按照一定的路由规则选路,然后建立路径,同时预定所经过路径的信道资源。目的端在成功收到这个信息头后将沿原路返回一个应答,源节点收到这个应答后便开始传输数据。数据传输之前源节点和目的节点之间建立直接的连接路径,一旦数据开始传输,消息的传输从不会阻塞。数据部分在网络中传输时将独占此路径中各段链路的整个带宽,并且不需要再做路由选择。

(2)存储交换(Store and Forward Switching)是先将数据完全存储,然后进行路由决策,最后再转发到下一节点的一种交换机制。NoC中的存储交换主要以分组为流控单元,每个分组有一个分组头,含有源、目的节点地址以及其他一些控制信息。路由节点接收到一个分组后,先将整个分组存储在缓存器中,从分组头中获取路由信息,由路由器的路由决策单元选择一条输出通道后,置位交叉矩阵中的内部连接,如果下一路由节点中有足够的空间存放此分组,就将此分组转发到下一路由节点。存储交换的优点是通道只在一个数据包需要传输的时候才被占用。

(3)虚切通交换(Virtual Cut-throuth Switching)将分组进一步划分为更小的片,并按顺序排好,将所需的路由信息放入第一个片中(称为头片,后续片称为数据片),在无阻塞的情况下,路由节点收到头片后,从中读取路由信息,然后由路由决策单元负责选路,如果输出通道空闲,则将头片转发出去,后续片紧随头片向前路由,从而大大缩小了存储交换的时延。由于在任何一个节点都有可能有多条消息被阻塞,每一个节点都要提供能存储所要通过它的数据的存储空间,所以在每一个节点需要相当大的存储空间。

(4)虫孔交换(Wormhole Switching)是目前NoC中的主流交换机制。它和虚切通交换的思想基本相同,只是二者在发生阻塞时所表现出的行为不同。在虫孔交换中,数据包也被细分成片,以流水的方式在网络上传输,并且允许一个分组只由一个片组成。头片中包含路由信息,其他数据片都跟随头片在它确定的路径上流动,就像虫子一样。当头片发生阻塞时,分组中的所有片都将停止前进,头片缓存在当前节点,数据片就地缓存在其后的若干个中间节点中。每个路由节点只需提供一个片大小的缓存资源。虫孔交换对数据包大小和路径长度都不敏感,资源占用少、实现代价小、且效率高,适合NoC使用。虫孔交换的示意图如图11所示。

虫孔交换结构的处理过程是这样:数据包的片段到达虫孔交换结构,存储在输入通道缓存单元中,并进行路由计算。得到路由信息后,数据包提出传输请求,仲裁器根据请求进行带宽资源分配,一旦该数据片被允许传输,它将被交换到目的端口并投递出去,直到数据包的最后一个片段离开交换节点。根据这个处理过程,虫孔交换电路的结构如图12所示,由缓存单元、路由计算单元、仲裁请求管理单元、交换分配和交换阵列五个部分组成。

在VLSI实现中,NoC交换节点多采用流水结构设计,一般流水处理结构分为路由计算、通道分配、交换分配、数据交换和传输等五级。在NoC设计中,总是希望得到良好的网络性能,如较短的网络延迟时间,从交换节点设计角度考虑,减少交换结构的流水处理级数是缩短网络延时的有效方法,流水处理级数越少,数据包通过交换节点的时间就越短。

不同的NoC交换技术,对应着不同的网络性能和实现代价,要根据实际要求进行选择。

5 结束语

多核处理器通讯架构的研究在国际上是一个热点课题,上述几种通讯方式是目前广泛使用的。但是无论采用何种结构,设计人员必须着重考虑多处理器系统芯片的两个应用特征:实时性和低功耗。选择适合的拓扑、路由类型和流量控制策略、队列管理策略、数据包/消息格式和端对端的网络服务类型等,对这些性能进行折衷,只有合适的才是最好的。

[1]孙利荣,蒋泽军,王丽芳.片上网络[J].计算机工程,2005,31.

[2]闫辉.多核是软件开发行业的迁移目标[J].程序员,2006,(9):47-48.

[3]马关胜,冯刚.SoC设计与P核重用技术[M].北京:国防工业出版社,2006.

[4]荆元利,樊晓桠.网络互连多线程处理器[J].计算机工程与应用,20.

[5]欧阳.多核时代改变计算发展历史[J].程序员,2006,(9):42-46.

[6]张恒龙,顾华玺,王长山.片上网络拓扑结构的研究[J].中国集成电路,2007,16(11):42-46.

[7]刘轶,张昕,等.一种面向多核处理器并行系统的启发式任务分配算法[J].计算机研究与发展. 2009,46(6).

[8]Kangmin Lee, Se Joong Lee, Hoi Jun Yoo. A Dis-tributed Crossbar Switch, Switch Scheduler for On-ChipNetworks[A]. IEEE Proceedings of Custom Integrated Circuits Conference, 2003. 671-674.

[9]Rakesh Kumar, Dean M Tullsen, Norman P Jouppi.Heterogeneous Chip Multiprocessors[J].IEEE, 2005, 32-38.

[10]Valderrama CA, Changuel A, Jerraya A. Virtual prototyping for modular and flexible hareware-software systems[J]. Design Automation for embedded systems, 1997, 2(3):267-282.

猜你喜欢
数据包仲裁路由
二维隐蔽时间信道构建的研究*
基于Jpcap的网络数据包的监听与分析
铁路数据网路由汇聚引发的路由迭代问题研究
一种多通道共享读写SDRAM的仲裁方法
SmartSniff
探究路由与环路的问题
ICSID仲裁中的有效解释原则:溯源、适用及其略比
基于预期延迟值的扩散转发路由算法
两岸四地间相互执行仲裁裁决:过去、现在及将来(上)
PRIME和G3-PLC路由机制对比