1、1一种面向多核处理器的 2 GHz 片上网络通信单元摘要:提出了一种面向多核微处理器的 2 GHz 片上网络通信单元设计方案,通信单元能够在 45 nm 工艺下达到 2 GHz 的工作频率,流水线级数为 2,最多支持 8 个双向通信接口,每个端口单向峰值带宽 32 GBps.构建了一种 16 核处理器片上网络测试环境,测试结果表明:使用提出的通信单元构建的片上网络能够满足 16 核处理器存储系统对网络带宽的要求,在对访存优化的情况下,聚合带宽能够随着处理器核心与线程的增加而线性增加.另外,通信单元还具有可重用的特性,能够通过优化与扩展进一步应用于众核处理器片上网络.研究成果已成功应用于某国产
2、16 核高性能微处理器,片上网络实测频率达到 2 GHz. 关键词:多核处理器;片上网络;通信单元 中图分类号:TP332 文献标识码:A A 2 GHz Network-on-chip Communication Unit for Multi-core Microprocessors ZHOU Hong-wei1, ZHANG Li-xia2, DOU Qiang1, LI Yong-jin1, YAN Xiao-bo1, ZHANG Ying1 (1.College of Computer, National Univ of Defense Technology, Changsha, Hu
3、nan 410073, China; 2. College of Information Science and Engineering, Central South Univ, Changsha, Hunan 410083, China) 2Abstract: A 2 GHz network-on-chip communication unit for multi-core microprocessors was proposed. A 2 GHz frequency in 45nm process technology can be reached and the pipeline sta
4、ge is 2. There are eight bi-direction communication ports totally and the peak bandwidth is 32 GBps in each port. A test environment for network-on-chip which supports 16 high-performance processor cores was built. The test results show that network-on-chip constructed by the proposed communication
5、unit can meet the requirements of network bandwidth by 16-core processor storage system. In the case that memory access is optimized, the aggregate bandwidth can be increased linearly with the number of the processor and thread increase. In addition, the communication unit has reusable features and
6、can continue to be used for network-on-chip in many-core processor when it will be optimized and expanded in future. The idea of this paper has been used successfully in one of self-designed 16-core high performance microprocessors. The frequency of network-on-chip logic has been reached to 2 GHz. K
7、ey words: multi-core processor; network-on-chip; communication unit 目前主流的多核处理器一般集成 416 个处理器核心,采用片上多处理器(Chip Multiprocessors,CMP)体系结构.多核处理器通常以总3线、环和交叉开关作为片上互连网络拓扑结构,当核数较少时,处理器内部数据通信的要求基本能够得到满足.由于总线能够连接的结点数与工作频率和总线接口电路的速度、驱动能力、总线长度以及负载有关,所以一般适用于对通信能力要求不高且规模较小的片上网络,斯坦福大学的 Hydra1多核处理器就是采用总线进行片上互连的典型实例.交
8、叉开关具有选址方便、控制简单的优点,但是所需的设备量大,通路的利用率较低,因此一般适用于对通信能力要求较高的片上网络.Sun UltraSPARC T22, Fujitsu SPARC64 VIIIFx3和 IBM Cyclops644等处理器均采用交叉开关进行片上互连.环网能够支持相邻结点间并行通信,具有比总线更高的网络带宽,比交叉开关更少的设备量,主要用于有一定的通信能力要求且规模中等的片上网络,例如 SONY CELL 处理器5和 ARM Cortex A156处理器等采用环网进行片上互连.二维 mesh 互连网络具有结点度高、可靠性好和易大规模实现等特点,通常用于构建规模较大的片上互连
9、网络,使用该互连网络的多核或众核处理器有 RAW7和Tile648等.随着片上集成的处理器核数目越来越多,处理器核之间的通信距离不对称、全局通信跳步数多、延迟大,二维 mesh 互连网络也遇到了性能和功耗可扩展性瓶颈,必须减少片上网络的通信开销.对于并行应用,其通信必须尽量被限制在少量的临近处理器核(结点簇)之间,具有簇内通信密集、但簇间通信稀疏的特性. 近年来,针对数据局部化通信特性进行片上网络拓扑结构优化成为多核处理器片上网络研究的热点.目前提出的优化的片上网络拓扑结构有集中式mesh(Concentrated mesh,Cmesh)9,展平 butterfly (flattened 4b
10、utterfly, fbfly)10和混合拓扑结构11.Cmesh 中对局部化通信支持好,局部通信具有低延迟高带宽的特性,尽管其中单个通信单元(路由器)的功耗比二维 mesh 中通信单元的功耗大,但是由于通信单元数目更少,因此总体上仍能够降低功耗.Fbfly 通过权衡通道位宽和路由器维度,能够实现较好的能量效率,但是对局部化通信的支持不如 Cmesh.混合拓扑结构通过总线互连 612 个节点,构成一个簇,簇间通过二维mesh 网络互连,该结构重点对互连网络进行功耗优化,能发挥出总线的低功耗特性,局部化通信功耗低,能够满足对局部化通信功耗敏感且带宽要求不高的应用.以上几种网络拓扑结构目前仍处于学
11、术研究阶段,并未在主流的高性能多核微处理器中大规模应用,主要原因如下:第一,传统的二维 mesh 或者环网由于其结构简单的优势容易实现较高的频率,所以仍被大多数多核处理器作为首选;第二, Cmesh 和 fbfly 的路由器端口多,对物理设计提出了很高的要求,采用传统的设计方法很难满足延迟和功耗的要求,而混合拓扑结构由于存在多种异构的互连网络拓扑结构,因此无论从报文格式还是路由算法上都提高了设计难度.另外,传统多核处理器片上网络还存在以下问题:由于片上网络的工作频率直接影响多核处理器通信带宽,因此目前对于片上网络的设计主要采用定制设计的方法,导致模块化不足、设计难度大、周期长以及可重用性不强.
12、 本文将重点针对以上问题提出以下解决方法:1)设计可配置通信单元,提高片上网络的可重用性;2)采用源数据队列和源路由技术简化通信单元流水线结构,减少通信单元的数据传输时间;3)提出面向通信协议的通信单元内部互连时序优化方法,优化时序的同时减少通信单元的5物理面积和功耗;4)提出面向物理布局的数据队列优化方法,进一步优化通信单元的时序和功耗. 1 通信单元体系结构 对于面向局部性优化的应用来说,不同的网络拓扑对性能、功耗或者能量延迟积具有不同的优化效果,选用何种互连结构取决于设计者对这些设计参数的具体要求,设计师希望具有可重用的片上网络设计组件,能够通过简单装配实现不同拓扑结构.通信单元是构建片
13、上通信网络的核心,它直接与需要进行片上通信的处理器各部件互连.本文提出一种可配置的通信单元设计方案,每个通信单元包括 4 个物理通道,每个物理通道包含 8 个通信接口,每个通信接口可以与处理器中的一个部件相连,例如 1 个二级 Cache、1 个 Cache 一致性控制器、1 个 IO 控制器等,也可以作为级连接口(Link Port,LP)和另一个通信单元互连,构建更加复杂的网络拓扑结构.所有部件的接口使用统一的通信报文格式,简化设计的同时增强可重用性.通信单元设计为 IP 核(Intellectual Property core)的形式,其通信端口数、物理通道数、端口数据位宽均可配置,通过
14、可配置性设计,能够控制通信单元的规模和设计需要相匹配,保证性能的同时降低功耗. 图 1 为通信单元中一个物理通道的数据通路流水线结构示意图.网络通信单元包含输入输出接口、两级流水线结构和站间寄存器:输入接口能够接收来自最多 8 个源的报文微包(flip) ,采用基于信用的流控机制;输出接口能够发送微包到最多 8 个目的端口,也采用基于信用的流控机制;两级流水线结构包括仲裁站和数据选择站,前者用于仲裁输入请求6及缓存输入微包数据,后者用于将被仲裁许可的微包数据进行选择输出. 如图 1 所示,来自各个请求源的请求有效信号构成“请求组” ,仲裁站中的仲裁控制器按照公平轮转的仲裁算法产生仲裁许可信号.
15、当“请求组”内的有效信号超过 1 个时,由于每个时钟周期只有一个请求能够获得仲裁许可,未被许可的请求需要在后续的时钟周期继续请求以获得许可,因此一个“请求组”可能需要多次通过仲裁控制器才能完全获得对组内各请求的仲裁许可.若“请求组”中某个请求被仲裁许可,则将产生一个到产生该请求的部件的信用释放信号,经过寄存后返回给请求部件,用于释放该请求部件的发送信用.当一个“请求组”需要多个时钟周期才能通过通信单元时,来自输入接口的新的“请求组”会由于仲裁控制器忙而无法被立即进行仲裁,这些新的“请求组”被记录到“检查板”逻辑中以避免丢失.由于只有当同一时刻产生的“请求组”中的所有请求全部被仲裁许可后,仲裁器
16、才会处理下一个“请求组” ,而且“检查板”按照先入先出的顺序依次保留待仲裁的“请求组” ,因此仲裁器最终按照请求的到达时间进行仲裁,保证了服务质量(Quality of Service,QoS).检查板的深度能够根据输入接口的数目和每个请求部件发送微包的信用值进行配置.当检查板为空时,新的“请求组”可以通过检查板旁路直接被仲裁控制器仲裁.对于从输入接口到仲裁站的来自各接口的输入报文微包数据,仲裁站不做任何处理,直接送入微包数据队列. 在数据选择站,输出报文有效信号和微包选择信号由仲裁站的仲裁结果产生.输出报文有效信号在路由控制逻辑的控制下,产生到输出接口各接收部件的报文有效信号.微包选择信号用
17、于控制微包选择器,从微包7数据队列输出的多个微包数据中进行选择,选出的微包与报文有效信号一起经过寄存后,发送给输出接口中某个接收设备或者级连的通信单元. 图 2 为采用通信单元构建的多核处理器片上网络的示意图.图 2(a)是构建环形网络的示意图,每个通信单元配置为 8 个双向接口,使用 4个物理通道(分别传输请求、响应、监听和监听应答报文).通信单元使用接口 6 和接口 7 进行级连.每个通信单元连接 4 个私有的L2Cache(L2C) 、1 个目录控制部件(Directory Control Unit,DCU) ,通信单元 1 通过 5 号端口连接了 1 个 IO 控制器(IO Contr
18、oller,IOC).图2(b)为使用通信单元构建二维 mesh 网络的示意图,每个通信单元配置为连接三个处理器核,一个存储单元,剩余端口用于互连,每个通信单元及其连接的处理器核构成“结点簇”. 2 通信单元时序和功耗优化 为了在 45 nm 工艺下实现 2 GHz 时钟频率,我们对通信单元进行了专门的时序和功耗优化,主要优化内容包括面向通信协议的内部互连优化和面向数据队列的优化. 2.1 面向通信协议的内部互连优化 由于通信单元共支持 8 个双向端口,因此单元内部的连线资源非常多,给物理设计带来了很大的困难.考虑到多核处理器片上网络主要用于传输 Cache 一致性报文,虽然使用 4 个物理通
19、道分别用于传输请求、响应、监听和监听应答四类报文,但是根据协议的特点,并不是任何两个部件间均需要进行报文传输.以图 2(a)的片上网络为例,对于监听通路,只有 DCU 会主动发出监听请求,另外级连端口 6 和 7(LP6 和 LP7)也会8发送来自级连的其他通信单元的监听请求.接收监听请求的部件为 4 个L2Cache,以及级连端口 LP6 和 LP7.级连端口 5(LP5)既不发送也不接收监听报文,因此不需要监听数据通路. 根据以上特点,可以仅在具有通信需求的部件间设计通路,节省内部互连线资源,例如对监听通路内部互连通路的简化如图 3 所示.简化后共使用 6 个仲裁器(ARB0ARB5) ,
20、每个仲裁器最多仅需要 3 个输入报文缓冲队列,互连通路共 16 条.若使用标准的 8 端口全交叉方式设计,则需要 8 个仲裁器,每个仲裁器 7 个输入报文缓冲队列,互连通路 56 条.基于同样的思想,可以对其他物理通道进行优化设计,总体上降低整个通信单元的逻辑和连线资源. 2.2 面向数据队列的优化 数据队列缓存来自各个请求源的待仲裁的报文.每个源到每个目的都有对应的数据队列.数据队列的深度取决于能够缓存的报文的个数及报文类型.为了减少数据队列的面积开销,同时尽量避免带数据报文由于信用耗尽被迫发送中断,数据队列被设计为能够缓存 3 个报文,其中 2 个是不带数据的报文,1 个是带数据的报文(1
21、 个命令微包+4 个数据微包).为了满足时序要求,数据队列为一个先进先出的 FIFO 结构,使用寄存器搭建,以 7 深度的数据队列为例,其结构示意图如图 4 所示.为了使 FIFO的输出尽量靠近输出接口,减少数据选择站中报文数据的长距离传输延迟,Q0 寄存器固定为 FIFO 的输出.每个寄存器的 D 端具有以下 3 个来源:1)来自新的报文的输入(pkg_in) ;2)来自后一个寄存器的输出;3)自己的输出.FIFO 读写过程如下:当某一个寄存器作为 FIFO 尾之后的第9一个无效寄存器时,新的数据写入该寄存器;当 Q0 被读出后,其后所有保存有效数据的寄存器的值将同时移动到各自的前一个寄存器
22、中;当 Q0未被读出时,FIFO 中所有的寄存器均保持当前值.多路选择器的控制信号包括:选择(sel) ,移位(shift)和保持(hold) ,分别控制从新输入报文、后继寄存器的输出和自己的输出中选择一个.数据队列也可以设计为固定 Q6 为输入,输出从 Q0Q6 中选择的方式.具体选择哪一种方式取决于 FIFO 的时序关键路径是报文从输入接口寄存器输入到 FIFO 的路径还是从 FIFO 输出到输出接口寄存器的路径. 3 实验及结果分析 3.1 测试环境 考虑到处理器核心在芯片上按照上下对称的方式排列,芯片中间的面积用于片上网络通道时更容易布局,我们构建了如图 5 所示的 16 核处理器片上
23、网络测试结构.处理器具有 16 个处理器核心,每个核心拥有私有的 L2Cache,8 个处理器核及对应的 L2Cache 位于芯片上部,另外 8 个位于芯片下部.片上网络位于芯片中部,4 个通信单元通过端口 5 和端口6 级连,由于通信单元 03 在拓扑结构上一字排开,因此位于两侧的通信单元相互通信需要经过中间的两个通信单元,造成跳步数多、延迟增加、带宽受限.为了解决该问题,我们使用配置为仅具有两个端口的通信单元(通信单元 4 和 5)分别连接通信单元 1 和通信单元 2,通信单元 0和通信单元 3,以提高非相邻通信单元之间的通信效率.为了对构建的多核处理器片上网络进行测试,我们设计了 L2C
24、ache 模型 L2C_model、目录控制单元的模型 DCU_model 和 IO 单元的模型 IOC_model. 10L2C_model 的基本功能如下:1)每个 L2C 最多可以缓存 8 个未收到响应的请求报文,否则不能发送新的请求报文;2)由于流拷贝(stream copy)程序具有较高的访存压力,因此 L2C 模型支持 stream 程序的发送序列模式:为了获得接近真实情况下 L2C 已经充满时的情况,L2C 平均每发送两个读请求会发送一个写回或者替换请求,且写回和替换请求发送概率相同;3)每个 L2C 可以缓存发出请求的特征信息,如标识(tag) ,等待响应回来后通过匹配特征信息
25、确认是哪一个请求的响应,从而获得从请求发出到接收到响应之间的访问延迟.DCU_model 的基本功能如下:1)根据实际的逻辑设计数据,DCU 的访存延迟平均为 25 个时钟周期;2)根据 DCU 的体系结构,设置 DCU 的缓冲和流水线中最多可以容纳 50个请求.IOC_model 可以在有信用的前提下连续发送 DMA 读或写请求,4个 DCU 体采用低位交叉方式编址,因此 DMA 请求依次轮转访问各 DCU 模型. 3.2 测试及数据统计方法 3.2.1 带宽的测试与数据统计 对于 L2C 和 IOC 部件,统计发送请求的平均带宽,对于 DCU 部件,统计发送响应的平均带宽.假设模拟系统的时钟周期为 T(ns) ,总模拟时间为 t(ns) ,通信单元的目标工作频率为 f(GHz) ,期间发送的微包数目为 N,微包有效位宽为 128 位(16 Byte) ,则发送时的峰值带宽(BWpeak)和实际带宽(BWreal)可以分别按照式(1)和式(2)计算,单位为 GBps. Stream copy 程序的实质是大块数据拷贝,能够衡量处理器的片上网