网络或Sim卡出错【NoC_MPSim:基于片上网络通信架构多核仿真平台】
摘要:实现了一个用于探索基于片上网络通信架构多核系统设计空间的可配置仿真平台――NoC_MPSim。该平台包含处理器工具链、平台自动化配置脚本以及一个包含处理器、网络适配器以及多种路由器的RTL模型库,可根据用户输入的系统配置信息自动生成周期精确的多核仿真系统。针对片上网络通信架构的特征,定义了基于该通信架构的多核系统的高层次通信抽象模型,并借鉴并行机中的消息传递机制,提出了一种可有效隐藏网络乱序的并行编程模型及其通信原语,并完成其所需要的软\硬件建模。应用提出的编程模型,实现了MUSIC算法基于四核仿真系统的分布式并行计算,并经实验得到该并行MUSic算法在该系统中加速比可达2.6。关键字:片上多处理器;片上网络;编程模型;通信抽象
1、引言
半导体工艺的不断进步推动着计算机体系结构的不断演变――从位级并行(BLP,Bit LevelParallelism)到指令级并行(ILP,Instruction LevelParallelism)再到当今热门的线程级或任务级并行(TLP.Thread or Task Level Parallelism)。进入深亚微米时代后,系统级芯片(SoC,System on Chip)的设计者可以将更多的元件,甚至多个处理器、DSP核集成在单个硅芯片上,推动了片级TLP的实现。片上多处理器(MPSoC,Multi-Processor System-on-Chip)技术不仅提升了处理器的性能,满足了多任务、实时任务应用的需求,更为低功耗设计做出了贡献。然而,片上多核间的通信面临着多重挑战:可测量性、适应性、模块性、门延迟和连线延迟的不平衡以及越来越困难的时钟信号布线等,阻碍了片上多核的规模及复杂性的提升,片上多核的设计中心随之从计算转向通信。片上网络(NoC,Network-on-Chip)便是为解决复杂的全局通信问题而提出的一种全新方案,它把传统的计算机网络技术移植到芯片内部,以成本低廉的点对点分组交换架构取代传统的总线架构,提供具有易扩展、低功耗、高可靠和高性能的片上通信。目前,越来越多的基于NoC通信架构的片上多核结构被提出和实现。
基于NoC通信架构的多核系统面临着诸多设计难题:从硬件角度,如何为特定应用确定合适的网络结构,如何向下兼容,有效地实现片上网络中路由器与传统IP核的互联;从软件角度,如何设计多核系统的操作系统,如何实现通信原语的通信抽象;从系统角度,建立怎样的并行编程模型,如何进行任务的划分和映射等等。面对这些设计难题,设计者一方面可以借鉴传统计算机网络的设计思想,另一方面则需要大量的仿真实验和应用分析。这就需要开发一个具有良好可配置性和自动化特性的仿真平台,帮助设计者有效地开发设计空间,解决设计难题.评估设计性能,最终确定问题的最优解。
目前很多面向NoC架构的仿真平台和工具被提出和实现,用于帮助设计者探索NoC硬件结构的设计及优化空间。然而,实现NoC的硬件结构只不过是解决最终问题的基础,更重要的是如何让程序员有效地利用多核系统,充分获得多核系统所带来的性能提升。这就需要开发一套有效的并行编程工具,提供给程序员控制片上多核协同计算的手段,帮助其有效地利用多核系统,提升编程效率和最终的性能。而包含编程软件的多核系统的设计者需要一个更加完善的仿真平台,它不仅能够作为硬件的仿真平台,对所设计的路由器或处理器等硬件部件进行仿真,也能够用于并行软件设计的探索,帮助设计者开发多核系统软/硬件的设计空间,提升多核系统的性能。
本文实现了一个这样的基于NoC通信架构多核系统的仿真平台NoC_MPSim。该平台集合了处理器、网络适配器、多种路由器等可用硬件资源,具有较高的可配置性和自动化特性,可根据用户输入的路由器类型、网络规模、节点映射等信息自动生成一个由处理器、存储器、网络适配器以及路由器网络组成的周期精确的多核仿真系统。在此仿真平台的基础上,提出了一种可有效屏蔽网络乱序、适用于基于NoC通信架构多核系统的并行编程模型,并通过构建软\硬件组织结构在NoC_MPSim中实现了相应的通信原语。该模型向软件设计者隐藏了多核间的通信细节,帮助其有效地进行并行软件设计,同时作为软/硬件共同遵循的协议,使得软件设计人员和硬件开发人员可在该平台上同时开发系统所需的软\硬件,加快其设计进程。本文的最后,在该平台上构建了一个四核系统实例,应用提出的并行编程模型实现了MUSIC(Multiple Signal Classification)算法的并行化,分析了四核系统的性能,同时验证了平台的有效性。
2、硬件系统
2.1、系统概述
NoC_MPSim仿真平台集合了处理器、网络适配器,以及不同服务级别、多种虚拟通道分配机制的路由器等硬件资源。用户可通过配置脚本,根据其输入的网络规模、节点映射等信息自动生成所期望的多核仿真系统。
从体系结构的角度,多核系统可以是同构的,也可以是异构。从存储结构上多核系统可以是对称多处理器结构(SMP,Symmetric Multi Processing),也可以是非对称多处理器结构(AMP,AsyrmmetricMulti Processing)。NoC_MPSim仿真平台实现的多核系统采用同构的分布式存储模型,如图1所示。该系统由处理单元阵列和路由器网络组成。路由器网络采用基于虫洞机制的数据包交换的方式实现了处理单元间的通信。处理单元由挂在同一总线上的处理器、存储器以及适配器等模块组成。其中适配器实现了处理器、存储器与本地路由器的互联,使传统处理器架构不需修改即可兼容于NoC通信架构的多核系统。
2.2、GPU
NoC_MPSim仿真平台提供了一个处理器的RTL模型。该处理器是一款具有自主知识产权的32位RISC结构的嵌入式微处理器。处理器具有实现低功耗高速处理操作的内建功耗管理单元,可支持32位地址空间,4Gbyte的物理地址被划为给静态存储器、SDRAM、PCMCIA、PCI、LPC和内部I/O。在0.18μm工艺下,处理器主频频率可达500MHz,功耗仅为0.35mW。
2.3、网络适配器
传统的处理器通过总线实现与其它单元的同步和通信,而片上网络采用点对点分组交换架构来实现节点间通信。为了最大限度的实现向下兼容,NoC_MPSim仿真平台提供了网络适配器,使得传统处理器的总线架构不需修改即可应用于基于NoC通信架构的多核系统。
网络适配器主要由DMA、输入\输出FIFO以及网络接口三部分组成,如图2所示。CPU可以通过读\写DMA的寄存器,控制DMA实现数据在存储器和输入\输出FIFO问的转移。网络接口包括打 包单元、打包输出及解包单元三个部分,实现与本地路由器的数据交换。打包单元判断本地处理单元何时发起数据传输,从DMA的寄存器读出相关信息,预判打包输出模块中输出FIFO的空满情况,最终将输出FIFO中的数据包化处理后发送给打包输出单元。打包输出单元实现了与本地路由器的握手,预判路由器输入缓存空间,并将数据送人路由器的本地输入端口。解包单元完成与路由器的本地输出端口的握手,接收数据,并将数据包信息(长度、源节点、数据类型等)写入DMA寄存器,最后将数据存入输入FIFO中。
2.4、路由器
路由器网络采用基于虫洞机制的数据包交换的方式实现了处理单元间的通信。其主要由缓冲部件、路由计算部件、虚拟通道分配部件、开关仲裁部件与交叉开关部件组成。其中,路由计算部件负责解析数据包的传输路径,确定传输方向与将要申请的虚通道编号。虚拟通道分配部件负责分配虚通道,接收各个数据包的虚通道申请,将下级节点中虚通道的使用权赋予唯一获胜的数据包。开关仲裁部件负责对数据包传输进行仲裁。交叉开关部件根据仲裁结果,读出获胜通道队列头部的切片内容,穿过交叉开关输出至目标端口。平台包含两类不同服务级别(尽力服务和有保障服务)以及多种虚通道分配机制的路由器。
3、信体系结构
多核系统与并行计算机类似,可以定义为“一组通过通信和协作来快速解决大型问题的处理单元”,其体系结构由传统的计算机体系结构和通信体系结构组成。通信体系结构定义了可供用户软件使用的基本通信和同步操作,并定义了组织结构来实现这些操作,类似于OSI参考模型的通信分层设计方法,基于NoC通信架构的多核系统将通信问题分散到不同的层次中去解决。图3为NoC_MPSirm仿真平台实现的多核系统的通信体系结构的抽象层次。程序员根据编程模型应用并行软件编写分布式并行程序,编程模型说明了程序的各个部分如何共享信息、协调动作,而通信抽象则在通信硬件的支持下提供通信和同步的特殊操作(通信原语),实现了编程模型所定义的通信协议。
NoC_MPSim多核仿真平台的通信过程可以描述为:首先源节点的应用程序调用通信原语write(),指明发送的数据、数据长度、数据类型以及目标节点;在write()函数中调用send()函数实现读写网络适配器的寄存器,将此次数据传输的相关信息写入网络适配器的相应寄存器中;网络适配器根据寄存器的信息,将数据从存储器读出并根据网络协议进行包化处理,送入本地路由器;路由器网络根据路由协议将数据以数据包的形式路由到目的节点,并确保数据的传输正确。目的节点在收到本地路由器输出的数据包后,进行解包处理,并将相应的信息写入网络适配器的寄存器;当目的节点的用户应用程序调用read()通信原语接收期望的数据时,read()将调用receive()函数来配置网络适配器的寄存器,实现数据从网络到本地存储器的转移,之后read()函数通过匹配数据的标识信息(数据的类型、长度以及源节点和目的节点)返回正确的数据给用户程序。
4、编程模型及通信原语
编程模型指明了程序的各个部分如何进行信息交换和同步。并行编程模型是并行计算,尤其是并行软件的基础,也是并行硬件系统的导向,在面临多核新挑战的情况下,什么样的并行编程模型在未来能成为主流,目前还处于百家争鸣的时代。针对本仿真平台所实现的多核系统的特点,提出了一个可以屏蔽网络乱序的基于消息传递的编程模型,并定义和实现了相关的通信原语。结合消息传递模型的理念并考虑实现开销,定义如下通信原语分别提供给应用程序实现数据发送和接收的操作:
Void Write(BufDID,Type,Len);
Void read(Buf,SID,Type,Len,DID);
其中SID和DID分别指明了发送数据节点和接收数据节点的网络地址编号。Buf为数据的发送或接收缓存,Type和Len分别说明了数据的类型和长度。
在NoC_MPSim仿真平台中,任务被静态地映射到各个计算节点上,并通过调用上述两个通信原语实现任务间的通信和同步。然而,由于片上网络中存在着大量的通信资源,从源节点到达目的节点存在着多条有效的路径,这就必然导致数据传递的乱序情况的出现。如图4所示,某多核系统中有4个通过片上网络互联的节点,假设节点N1、N2、N3都要向节点N4发送一组数据,节点N4的任务期望先接收并使用N1节点发来的数据,随后是节点N2和N3。然而尽管安排N1节点先于N2、N3节点发送数据,甚至N1节点与N4节点问的跳跃步数小于N2、N3节点与N4节点的距离,但由于网络状态的不确定性,N1、N2、N3节点发给N4节点数据的顺序依然是不确定的。另外,N4与N1节点间多次数据通信的顺序以及单个数据包的多个微片间的顺序也会存在同样的乱序问题。
由于这种乱序是通信网络自身带来的,而软件设计人员对这一由硬件产生的乱序情况并不清楚,因此这种乱序情况的出现给系统带来了不可预测性,从而使得系统难以正常工作。片上网络研究人员从多方面对这一问题进行了探索和研究。文献[11,12]都是从片上网络体系结构本身的硬件角度去解决这一难题,而事实上,随着网络规模的增加,这种硬件维序的成本会急剧增加。
鉴于此,本文采用软/硬结合的方式以较小的开销解决了该种网络乱序问题,如图4所示。相同节点间多次数据通信的顺序由路由器网络通过采用特定的路由算法来保证,即保证了来自于同一个节点的微片间的顺序,避免了该种乱序的出现。而在路由器的本地输入端,属于不同数据包的微片是交叉在一起的,可以通过在网络适配器中增加合适大小的数据包缓存单元实现将微片整理为不同的数据包,并且所增加的缓存只跟数据包的长度有关而与网络规模无关。而不同节点发送给同一节点的数据包的顺序是由软件保证的:将网络适配器整理好的数据包根据其源节点号(SID)存入不同的软件FIFO中(动态分配FIFO空间,受系统存储上限约束),即每个软件FIFO中的数据都来自于同一个源节点,而这些数据的顺序已由硬件保证。当接收端的应用程序调用read()函数接收期望的数据时,根据read()的SID参数将匹配的FIFO中的数据弹出,即为应用程序所需的数据,从而最终实现了向程序员隐藏网络乱序问题。
5、实例分析
将一个串行的应用程序并行化并最终在多核仿真平台上运行的流程如图5所示。
制定系统规范后,软件部分在通信容量和计算能力的约束下通过对串行的应用代码进行并行性分析,生成有向无环的任务图;之后采用特定的映射/调度算法依据目标拓扑和路由算法对任务进行映射和调度;最后在任务中插入编程模型所支持的通信 原语实现任务间的通信和同步。硬件部分通过运行配置脚本读入用户对于多核平台的配置信息,调用平台硬件库以及用户硬件库提供的硬件模块自动生成目标规模和拓扑的多核硬件平台。最后对整个系统进行仿真、验证以及性能分析。
为了验证NoC_MPSim多核仿真平台的有效性,评测应用该平台所构建的多核系统以及提出的编程模型的性能,本文分别在利用该多核仿真平台生成多核系统上以及生成的单核系统平台上实现了MUSIC算法。
MUSIC算法是经典的空间谱估计算法,其基本思想是将任务阵列输出数据的协方差矩阵进行特征分解,得到与信号分量相对应的信号子空间和与信号分量正交的噪声子空间,并利用两子空间相互正交的特性来估计信号空间谱。MUSIC算法的核心操作如计算协方差矩阵、特征分解等都是矩阵运算。以特征值分解为例,采用Jacobi方法,每一次只能对矩阵中的两个非对角线元素进行操作,执行效率比较低,如果采用并行化处理,用多个处理单元同时处理若干个不相关数据,则能提高系统的处理速度,有利于信息的实时处理。
对MUSIC算法进行并行化的过程如图6所示。预处理矩阵经过计算协方差矩阵、特征值分解、构造特征子空间和谱峰搜索4个步骤后得到目标方位。采用并行Jacobi算法实现协方差矩阵、特征值分解两个步骤的并行化:当各任务从文件中读入预处理矩阵后,任务0负责任务分配,各任务针对矩阵中不同行列的数据进行计算,并将计算结果返回给任务0,由任务0判断计算结果是否符合精度要求以及是否可以进入下一个计算步骤。特征子空间的构造由任务0实现。谱峰搜索的并行化是通过将0°~360°内的搜索任务平均分配到四个任务上实现的,即任务i实现(i×π/2,(i+1)×π/2)区间内的“谱峰搜索”工作,最终各任务将计算结果返回给任务0并由任务0输出结果。
按照图5所示的流程得到的基于NoC通信架构的4核系统的配置参数如表1所示。
最后在该系统上运行上述8输入的并行MUSIC算法并对该并行应用在NoC_MPSim多核系统上的性能进行评测。加速比是衡量并行计算性能的重要性能指标,p个处理器的加速比可以定义为:
加速比(p个处理器=性能(p个处理器)/性能(1个处理器))(1)
而对于固定的问题规模,处理器的性能和时间成倒数关系,所以有如下公式:
加速比(p个处理器=性能(1个处理器)/性能(p个处理器))(2)
对于我们所选定的8输入MUSIC算法,在单核系统和4核系统上分别评测其运行时间,根据公式(2)计算得到4核系统的加速比为2.6。
6、结论
片上网络可为片上多核提供易扩展、低功耗、高可靠和高性能的片上通信,但基于片上网络通信架构的多核系统设计却面临着庞大的设计空间和诸多设计难题。本文实现的多核仿真平台以帮助设计者探索设计空间为目标,可根据用户输入的系统信息自动生成由处理器、存储器、网络适配器以及路由器网络组成的周期精确的多核仿真系统,具有较高的可配置性和自动化特性。在此基础上,本文提出了一种可有效隐藏网络乱序的并行编程模型,并通过构建软\硬件组织结构实现了相应的通信原语。最后构建了一个4核系统实例,并应用提出的编程模型实现了MUSIC算法的并行化,经仿真实验得到该4核系统的加速比为2.6。
