基于多层次异构结构的可重构架构的并行扩展方法

文档序号:8298924阅读:357来源:国知局
基于多层次异构结构的可重构架构的并行扩展方法
【技术领域】
[0001]本发明涉及软件领域,尤其涉及一种基于多层次异构结构的可重构架构的并行扩展方法。
【背景技术】
[0002]典型的可重构处理器架构中包含了一个通用处理器和一个或多个可重构处理单元(Reconfigurable Processing Unit, RPU)。可重构处理器可以说填补了通用处理器与ASIC之间的空白,兼具了通用处理器的灵活性和ASIC (Applicat1n Specific IntegratedCircuit)的高效性。粗粒度可重构架构中可重构处理单元的数据通路宽度大于8位,相对于细粒度可重构架构而言,其有编程方便、编译速度快等特点。虽然粗粒度可重构处理器有如此好的特性,但由于其结构的特殊性,如果没有高级语言与编译器的支持,对其编程将会是一种挑战。因为编程者不仅要知道通用处理器的编程语言,也要掌握硬件编程语言(如Verilog, VHDL),同时还要对底层的硬件有很好的理解。因此,对粗粒度可重构处理器编程比较困难,这将极大地阻碍可重构计算的发展。
[0003]为了解决对粗粒度可重构处理器编程困难的问题,现有技术中很多面向粗粒度可重构处理器的高级语言已经被研宄者提出。这些高级语言的设计方法主要有两类:
[0004]第一类方法是像SA-C全新地设计一套语言,这种方法的缺陷是对原有代码的兼容性差、对程序员的要求高(重新学习一门新的语言)、相应编译器的设计难度高。
[0005]第二类方法是对原有高级语言进行并行性扩展。该类方法又存在两种并行性扩展方式。第一种方式是像OpenACC和OpenMP那样,通过编译器的预处理命令来进行高级语言的扩展。这种并行性扩展方式的缺点是需要程序员对预处理命令有深入理解,而且程序的可读性差,开发难度大,除此之外,该种扩展方式很难实现复杂的并行模式。第二种方式是像OpenCL和CUDA那样在原语言级基础上进行并行性扩展,该种扩展方式向下兼容性好,可读性强,对程序员要求低,编程灵活能实现更多的并行模式。然而,采用这种方式扩展的语言的缺点是只能适用于两层异构结构的计算架构,对于特殊的三层或多层次异构结构不再适用。

【发明内容】

[0006]本发明要解决的技术问题是提出一种基于多层次异构结构的可重构架构的并行扩展方法,能够在三层或多层次异构结构的原语言级基础上进行并行性扩展。基于此,本发明提供一种基于多层次异构结构的可重构架构的并行扩展方法,其中,所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,并行扩展方法包括
[0007]分别定义运行于所述主控制器上的普通函数、运行于所述协控制器上的任务函数以及运行于所述处理单元阵列上的子任务函数,其中所述任务函数由所述普通函数调用,所述子任务函数由所述协控制器调用。
[0008]可选的,所述扩展方法是在ANSI C语言的基础上进行原语言级的扩展。
[0009]可选的,所述函数的定义方法通过添加关键字的形式来实现。
[0010]可选的,任务函数的调用在程序执行过程中包括资源申请、实参传递、可执行文件传递以及协控制器启动控制等步骤。
[0011]可选的,子任务函数的调用在程序执行过程中包括资源申请、实参传递、配置信息传递以及处理单元启动控制等步骤。
[0012]可选的,所述主控制器、协控制器以及处理单元阵列的内存互相独立。
[0013]可选的,所述任务函数和子任务函数的实参传递为隐式传递。
[0014]可选的,所述主存储器与所述共享存储器之间实际操作数据与计算结果的传递为显式传递。
[0015]可选的,所述任务函数与所述子任务函数的调用为异步调用。
[0016]可选的,所述普通函数与所述任务函数中均包含同步函数,分别用于同步所述协控制器与所述处理单元阵列进行的异步操作。
[0017]本发明提供的基于多层次异构结构的可重构架构的并行扩展方法中,所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,面向上述可重构架构,本发明的扩展方法将ANSI C基础上扩展并定义三类函数:普通函数、任务函数与子任务函数,相互之间能实现灵活调用,因此能充分实现复杂的并行模式,有效挖掘多层次异构结构可重构架构的并行计算能力。
【附图说明】
[0018]图1为本发明一实施例所述可重构架构的结构示意图;
[0019]图2为本发明一实施例的主控制器、协控制器以及处理单元阵列中的程序示意图;
[0020]图3为本发明一实施例所述的程序计算流程示意图。
【具体实施方式】
[0021]以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。
[0022]本发明所述的可重构架构(处理器计算模型图)如图1所示,该可重构处理器架构主要包括了一个主控制器、多个可重构处理单元(Reconfigurable Process Unit, RPU)、主存储器、直接存储访问单元(Direct Memory Access, DMA)和系统总线构成。其中主控制器主要用于执行程序中不适合RPU处理的串行代码并负责两个RPU的调度、启动与运行,RI3U则负责计算程序中一些计算密集的可并行代码。RI3U主要由I个负责可重构处理单元阵列(Processing Element Array, PEA)控制的协控制器、4个负责可重构计算的PEA和4个用于数据存储的共享存储器(Shared Memory, SM)所组成,如图1中的扩展图所示。协控制器主要是用来负责搬运4个PEA计算所需的数据与配置信息,控制PEA的启动、运行与终止。
[0023]这种特殊的异构粗粒度可重构架构中包括了三部分计算模块,分别是主控制器、协控制器和PEA,三者的内存空间都是独立的,不能直接进行相互访问。其中,所述主存储器作为主控制器的内存,SM作为协控制器的内存。主控制器与协控制器之间、主控制器与PEA之间以及协控制器与PEA之间的数据传递都是通过DMA来完成的。这三部分计算模块共同组成了一个三层次的可重构异构架构。
[0024]原有的可重构处理器并行计算语言不适用该种特定的三层次异构可重构架构。本发明面向这种粗粒度可重构器提出了一种并行标记方法。这种并行标记方法是在ANSI C语言的基础上进行的原语言级的扩展,其包括了函数标记、函数调用、内存操作扩展与同步扩展。其中所有并行标记扩展都会以“―gr_XXXX”的形式出现。
[0025]I)函数标记:对应计算模型中包括了三部分的计算模块,本发明将ANSI C的函数分为三类。第一类函数为普通函数,其代码将会在主控制器上运行;第二类函数为任务函数,其代码将会在协控制器上运行;第三类函数为子任务函数,其代码将会映射到PEA上运行。本发明将会以关键字的形式来区分这三类函数。为了保持与原有ANSI C的兼容性,这些关键字嵌入到ANSI C文法中非终结符“funct1n-specifier”的产生式内,如公式(I)所示。任务函数的定义由函数说明符“—gr_task”来标记,子任务函数的定义由函数说明符“―gr_SubtaSk”来标记。同时对于任务函数与子任务函数定义时有一定约束,其函数不能有返回值,即函数返回类型为“void”。
[0026]funct1n-specifier:
[0027]inline
[0028]I _gr_task
[0029]I—gr_subtask (I)
[0030]2)函数调用:本发明所定义的三类函数将分别在三种计算模块中运行,普通函数在主控制器上运行,任务函数在协控制器上运行,而子任务函数则映射到PEA上运行。由于RPU由主控制器调用,PEA由协控制器调用,因此对应到函数调用上便有任务函数由普通函数调用,子任务函数由协控制器调用。任务函数与子任务函数的调用语法分别如公式(2)与公式(3)所示:
[0031]TaskFunc (Args) (2)
[0032]SubTaskFunciPEA_NOi(Args) (3)
[0033]TaskFunc与SubTaskFunc分别表示在协控制器上运行的任务函数名与在PEA上运行的子任务函数名;PEA_N0表示所调用PEA的标记号(0-3),Args表示函数实参。任务函数与子任务函数的调用形式都是异步调用,即普通函数调用了任务函数后,不需要等待任务函数执行完便可继续执行别的操作;任务函数调用了子任务函数后,也不需要等待子任务函数执行完便可继续执行别的操作。
[0034]3)内存操作扩展:本发明面向的可重构架构中三部分内存空间相互独立,相互间的数据传递都是通过DMA来完成,但考虑到对用户的友好性,本发明让这种数据传输尽可能以隐式传递的形式呈现。主存储器与协控制器内存空间之间的数据传递是隐式的数据传递,其传递是通过任务函数调用来实现的,传递的是任务函数的实参;同样协控制器内存与PEA共享内存之间的数据传递也是隐式的,其传递是通过子任务函数调用来实现的,传递的是子任务函数的实参。而一个例外是,PEA实际操作数据及计算结果在主存储器与共享内存之间的传递是通过任务函数显式调用内存操作函数来实现的,其调用语法如公式(4)和公式(5)所示,其中公式(4)是将数据从主存储器拷贝至标记号为SMId的共享内存,公式
(5)是将数据从标记号为SMId的共享内存拷贝至主存储器:
[0035]void__gr_MemcpyGtoS (int SMId, unsigned
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1