CN104615496B - 基于多层次异构结构的可重构架构的并行扩展方法 - Google Patents
基于多层次异构结构的可重构架构的并行扩展方法 Download PDFInfo
- Publication number
- CN104615496B CN104615496B CN201510052052.8A CN201510052052A CN104615496B CN 104615496 B CN104615496 B CN 104615496B CN 201510052052 A CN201510052052 A CN 201510052052A CN 104615496 B CN104615496 B CN 104615496B
- Authority
- CN
- China
- Prior art keywords
- function
- controller
- association
- array
- parallel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供一种基于多层次异构结构的可重构架构的并行扩展方法,其中所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,面向上述可重构架构,本发明的扩展方法在ANSI C基础上扩展并定义三类函数:普通函数、任务函数与子任务函数,相互之间能实现灵活调用,因此能充分实现复杂的并行模式,有效挖掘多层次异构结构可重构架构的并行计算能力。
Description
技术领域
本发明涉及软件领域,尤其涉及一种基于多层次异构结构的可重构架构的并行扩展方法。
背景技术
典型的可重构处理器架构中包含了一个通用处理器和一个或多个可重构处理单元(Reconfigurable Processing Unit,RPU)。可重构处理器可以说填补了通用处理器与ASIC之间的空白,兼具了通用处理器的灵活性和ASIC(Application Specific IntegratedCircuit)的高效性。粗粒度可重构架构中可重构处理单元的数据通路宽度大于8位,相对于细粒度可重构架构而言,其有编程方便、编译速度快等特点。虽然粗粒度可重构处理器有如此好的特性,但由于其结构的特殊性,如果没有高级语言与编译器的支持,对其编程将会是一种挑战。因为编程者不仅要知道通用处理器的编程语言,也要掌握硬件编程语言(如Verilog,VHDL),同时还要对底层的硬件有很好的理解。因此,对粗粒度可重构处理器编程比较困难,这将极大地阻碍可重构计算的发展。
为了解决对粗粒度可重构处理器编程困难的问题,现有技术中很多面向粗粒度可重构处理器的高级语言已经被研究者提出。这些高级语言的设计方法主要有两类:
第一类方法是像SA-C全新地设计一套语言,这种方法的缺陷是对原有代码的兼容性差、对程序员的要求高(重新学习一门新的语言)、相应编译器的设计难度高。
第二类方法是对原有高级语言进行并行性扩展。该类方法又存在两种并行性扩展方式。第一种方式是像OpenACC和OpenMP那样,通过编译器的预处理命令来进行高级语言的扩展。这种并行性扩展方式的缺点是需要程序员对预处理命令有深入理解,而且程序的可读性差,开发难度大,除此之外,该种扩展方式很难实现复杂的并行模式。第二种方式是像OpenCL和CUDA那样在原语言级基础上进行并行性扩展,该种扩展方式向下兼容性好,可读性强,对程序员要求低,编程灵活能实现更多的并行模式。然而,采用这种方式扩展的语言的缺点是只能适用于两层异构结构的计算架构,对于特殊的三层或多层次异构结构不再适用。
发明内容
本发明要解决的技术问题是提出一种基于多层次异构结构的可重构架构的并行扩展方法,能够在三层或多层次异构结构的原语言级基础上进行并行性扩展。基于此,本发明提供一种基于多层次异构结构的可重构架构的并行扩展方法,其中,所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,并行扩展方法包括
分别定义运行于所述主控制器上的普通函数、运行于所述协控制器上的任务函数以及运行于所述处理单元阵列上的子任务函数,其中所述任务函数由所述普通函数调用,所述子任务函数由所述协控制器调用。
可选的,所述扩展方法是在ANSI C语言的基础上进行原语言级的扩展。
可选的,所述函数的定义方法通过添加关键字的形式来实现。
可选的,任务函数的调用在程序执行过程中包括资源申请、实参传递、可执行文件传递以及协控制器启动控制等步骤。
可选的,子任务函数的调用在程序执行过程中包括资源申请、实参传递、配置信息传递以及处理单元启动控制等步骤。
可选的,所述主控制器、协控制器以及处理单元阵列的内存互相独立。
可选的,所述任务函数和子任务函数的实参传递为隐式传递。
可选的,所述主存储器与所述共享存储器之间实际操作数据与计算结果的传递为显式传递。
可选的,所述任务函数与所述子任务函数的调用为异步调用。
可选的,所述普通函数与所述任务函数中均包含同步函数,分别用于同步所述协控制器与所述处理单元阵列进行的异步操作。
本发明提供的基于多层次异构结构的可重构架构的并行扩展方法中,所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,面向上述可重构架构,本发明的扩展方法将ANSI C基础上扩展并定义三类函数:普通函数、任务函数与子任务函数,相互之间能实现灵活调用,因此能充分实现复杂的并行模式,有效挖掘多层次异构结构可重构架构的并行计算能力。
附图说明
图1为本发明一实施例所述可重构架构的结构示意图;
图2为本发明一实施例的主控制器、协控制器以及处理单元阵列中的程序示意图;
图3为本发明一实施例所述的程序计算流程示意图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比率,仅用以方便、明晰地辅助说明本发明实施例的目的。
本发明所述的可重构架构(处理器计算模型图)如图1所示,该可重构处理器架构主要包括了一个主控制器、多个可重构处理单元(Reconfigurable Process Unit,RPU)、主存储器、直接存储访问单元(Direct Memory Access,DMA)和系统总线构成。其中主控制器主要用于执行程序中不适合RPU处理的串行代码并负责两个RPU的调度、启动与运行,RPU则负责计算程序中一些计算密集的可并行代码。RPU主要由1个负责可重构处理单元阵列(Processing Element Array,PEA)控制的协控制器、4个负责可重构计算的PEA和4个用于数据存储的共享存储器(Shared Memory,SM)所组成,如图1中的扩展图所示。协控制器主要是用来负责搬运4个PEA计算所需的数据与配置信息,控制PEA的启动、运行与终止。
这种特殊的异构粗粒度可重构架构中包括了三部分计算模块,分别是主控制器、协控制器和PEA,三者的内存空间都是独立的,不能直接进行相互访问。其中,所述主存储器作为主控制器的内存,SM作为协控制器的内存。主控制器与协控制器之间、主控制器与PEA之间以及协控制器与PEA之间的数据传递都是通过DMA来完成的。这三部分计算模块共同组成了一个三层次的可重构异构架构。
原有的可重构处理器并行计算语言不适用该种特定的三层次异构可重构架构。本发明面向这种粗粒度可重构器提出了一种并行标记方法。这种并行标记方法是在ANSI C语言的基础上进行的原语言级的扩展,其包括了函数标记、函数调用、内存操作扩展与同步扩展。其中所有并行标记扩展都会以“__gr_xxxx”的形式出现。
1)函数标记:对应计算模型中包括了三部分的计算模块,本发明将ANSI C的函数分为三类。第一类函数为普通函数,其代码将会在主控制器上运行;第二类函数为任务函数,其代码将会在协控制器上运行;第三类函数为子任务函数,其代码将会映射到PEA上运行。本发明将会以关键字的形式来区分这三类函数。为了保持与原有ANSI C的兼容性,这些关键字嵌入到ANSI C文法中非终结符“function-specifier”的产生式内,如公式(1)所示。任务函数的定义由函数说明符“__gr_task”来标记,子任务函数的定义由函数说明符“__gr_subtask”来标记。同时对于任务函数与子任务函数定义时有一定约束,其函数不能有返回值,即函数返回类型为“void”。
function-specifier:
inline
|__gr_task
|__gr_subtask (1)
2)函数调用:本发明所定义的三类函数将分别在三种计算模块中运行,普通函数在主控制器上运行,任务函数在协控制器上运行,而子任务函数则映射到PEA上运行。由于RPU由主控制器调用,PEA由协控制器调用,因此对应到函数调用上便有任务函数由普通函数调用,子任务函数由协控制器调用。任务函数与子任务函数的调用语法分别如公式(2)与公式(3)所示:
TaskFunc(Args) (2)
SubTaskFunc@PEA_NO@(Args) (3)
TaskFunc与SubTaskFunc分别表示在协控制器上运行的任务函数名与在PEA上运行的子任务函数名;PEA_NO表示所调用PEA的标记号(0-3),Args表示函数实参。任务函数与子任务函数的调用形式都是异步调用,即普通函数调用了任务函数后,不需要等待任务函数执行完便可继续执行别的操作;任务函数调用了子任务函数后,也不需要等待子任务函数执行完便可继续执行别的操作。
3)内存操作扩展:本发明面向的可重构架构中三部分内存空间相互独立,相互间的数据传递都是通过DMA来完成,但考虑到对用户的友好性,本发明让这种数据传输尽可能以隐式传递的形式呈现。主存储器与协控制器内存空间之间的数据传递是隐式的数据传递,其传递是通过任务函数调用来实现的,传递的是任务函数的实参;同样协控制器内存与PEA共享内存之间的数据传递也是隐式的,其传递是通过子任务函数调用来实现的,传递的是子任务函数的实参。而一个例外是,PEA实际操作数据及计算结果在主存储器与共享内存之间的传递是通过任务函数显式调用内存操作函数来实现的,其调用语法如公式(4)和公式(5)所示,其中公式(4)是将数据从主存储器拷贝至标记号为SMId的共享内存,公式(5)是将数据从标记号为SMId的共享内存拷贝至主存储器:
void__gr_MemcpyGtoS(int SMId,unsigned int Source,unsigned int SMAddr,unsigned int Size) (4)
void__gr_MemcpyStoG(int SMId,unsigned int Destination,unsigned intSMAddr,unsigned int Size) (5)
参数SMId为一个RPU中的共享内存标记号(0-3),SMAddr是指共享内存中起始地址,Source和Destination是指DDR中的起始地址,Size是指拷贝的数据块的大小(字节数)。
4)同步扩展:任务函数与子任务函数的异步调用方式将会使程序的正确性难以维护,因此需要一种同步机制来维护这种正确性。为了保持与ANSI C语法的兼容性,本发明提出以函数的形式来进行同步。在普通函数中的同步函数与在任务函数中的同步函数分别如公式(6)和公式(7)所示:
void__gr_syn(); (6)
void__gr_syntask(); (7)
同步函数__gr_syn()只能被普通函数调用,其功能是同步RPU,等待所有RPU执行完后普通函数才能继续往下执行。同步函数__gr_syntask()只能被任务函数调用,其功能是同步协控制器所进行的所有异步操作,这些异步操作包括了异步调用PEA与异步进行PEA相关的内存操作,等待所有这些异步操作完成后子任务函数才能继续往下执行。
以下结合图2和图3对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图2是本发明的一个简单程序示例图,程序完成的功能是将数组A与数据B进行相加计算,计算结果存入数组C中。
函数201是普通的ANSI C函数,其将会在主控制器上运行。这些普通函数会进行一些不适合映射到RPU的串行计算,同时还可进行任务函数的调用与同步。
函数202是任务函数的定义,其将会在RPU的协控制器上运行,主要是来进行PEA计算的输入输出数据搬运、配置信息搬运以及PEA的调度工作等。对PEA的调用是通过子任务函数调用来实现的。通过同步函数与子任务函数的调用,以及子任务与数据的合理划分可以实现复杂的并行模式,如流处理模式。
函数203是子任务函数的定义,其将被编译成配置信息映射到PEA上进行可重构计算。
图3是本发明的程序在所面向的粗粒度可重构处理器上的一个简单的执行过程。
在步骤301中,程序一开始加载到主存储器中,然后在主控制器上进行一些串行运算,接着执行步骤302;
在步骤302中,程序通过任务函数调用语句来进行RPU的调用,这个函数调用过程在正真执行时包含了四部分操作。首先程序会通过上层驱动来进行RPU资源的申请,如果没有空闲RPU则会等待,如果有可用RPU则会开始调用该RPU;接着便会将任务函数的实参从主存储器传递到对应RPU的协控制器内存中;然后将任务函数对应的二进制可执行文件从主存储器拷贝至协控制器内存中;最后启动协控制器,协控制器执行过程如步骤305。调用完任务函数后,主控制器将继续执行步骤303;
在步骤303中,使用同步机制来进行同步,主控制器会处于挂起等待状态。步骤302的任务函数调用是异步调用,当主控制器调用完成后可以进行其他计算,但如果在后续的步骤中需要使用RPU计算结果,则需要使用同步机制来进行同步,等待所有RPU执行完成后继续执行步骤304;
在步骤304中,主控制继续执行相关计算;
在步骤305中,任务函数开始在协控制器上执行任务,经过开始的简短计算后,进入步骤306;
在步骤306中,任务函数通过调用内存操作函数来控制协控制器将PEA计算所需的输入数据从主控制器拷贝到PEA的共享存储器中,然后执行步骤307;
在步骤307中,任务函数通过调用同步函数来等待PEA数据传输完成。内存操作函数的执行是异步的,为了等待其执行完成,需要调用同步函数。当PEA输入数据传输完成后,执行步骤308;
在步骤308中,任务函数将会通过子任务函数的调用来进行PEA的可重构计算。协控制器通过调用子任务函数来调用PEA计算,这个调用过程包括四部分操作。首先协控制器会等待该PEA执行完成;然后将子任务函数的实参从协控制器的内存空间拷贝到PEA的共享内存中;接着会将配置信息从主存储器拷贝到PEA的相应位置;最后异步启动PEA,PEA计算入步骤312。子任务函数调用完成后,任务函数将进入步骤309;
在步骤309中,任务函数可以进行一些其他的不相关计算,但如果后续操作要使用PEA的计算结果,则需要通过同步函数调用来等待PEA的计算完成,然后进入步骤310;
在步骤310中,PEA计算完成,任务函数通过内存操作函数将计算结果从共享存储器拷贝至主存储器,拷贝过程为异步的,然后执行步骤311;
在步骤311中,任务函数会等待拷贝完成,然后进行其他相关计算;
在步骤312中,PEA将通过子任务函数对应的配置信息进行可重构计算。
与现有技术相比,本发明的可重构架构及其并行扩展方法包括以下创新点及有益效果:
1、本发明的并行标记方法是面向本发明的可重构架构,即三层次异构粗粒度可重构处理器而进行设计的,将ANSI C函数分为三类,普通函数、任务函数与子任务函数,相互之间能实现灵活调用,因此能充分实现复杂的并行模式,有效挖掘该可重构架构的并行计算能力。
2、本发明基于ANSI C进行原语言的扩展,扩展包括了函数定义、函数调用、内存操作扩展与同步扩展,这些扩展方式都尽可能保持与ANSI C语法一致,因此与原有代码的兼容性好、对程序员非常友好,同时其编译器也可在原有ANSI C编译器基础上进行二次开发,极大减小编译器开发难度。
3、本发明的并行标记方法对可重构单元与处理单元阵列的调用方式都是以函数调用的方式来进行,函数调用过程实际包括了资源申请、函数实参传递、指令与配置信息传递以及计算模块启动等四部分操作。这四部分操作可由简单的函数调用过程来实现,使程序可读性强,对程序员非常友好。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (9)
1.一种基于多层次异构结构的可重构架构的并行扩展方法,其中,所述基于多层次异构结构的可重构架构包括用于可重构计算的处理单元阵列、用于控制所述处理单元阵列的协控制器,以及用于调度、启动与运行所述协控制器的主控制器,其特征在于,包括
分别定义运行于所述主控制器上的普通函数、运行于所述协控制器上的任务函数以及运行于所述处理单元阵列上的子任务函数,其中所述任务函数由所述普通函数调用,所述子任务函数由所述协控制器调用;
其中,所述主控制器与所述协控制器之间、所述主控制器与所述处理单元阵列之间以及所述协控制器与所述处理单元阵列之间的数据传递通过一直接存储访问单元来完成;
所述普通函数用于进行不适合映射到可重构处理单元的串行计算,同时还用于进行所述任务函数的调用与同步;所述任务函数用于进行所述处理单元阵列计算的输入输出数据搬运、配置信息搬运以及所述处理单元阵列的调度工作;所述子任务函数被编译成配置信息映射到所述处理单元阵列上进行可重构计算。
2.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述扩展方法是在ANSI C语言的基础上进行原语言级的扩展。
3.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述函数的定义方法通过添加关键字的形式来实现。
4.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,任务函数的调用在程序执行过程中包括资源申请、实参传递、可执行文件传递以及协控制器启动控制等步骤。
5.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,子任务函数的调用在程序执行过程中包括资源申请、实参传递、配置信息传递以及处理单元启动控制等步骤。
6.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述主控制器、协控制器以及处理单元阵列的内存互相独立。
7.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述任务函数和子任务函数的实参传递为隐式传递。
8.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述任务函数与所述子任务函数的调用为异步调用。
9.如权利要求1所述的基于多层次异构结构的可重构架构的并行扩展方法,其特征在于,所述普通函数与所述任务函数中均包含同步函数,分别用于同步所述协控制器与所述处理单元阵列进行的异步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510052052.8A CN104615496B (zh) | 2015-01-30 | 2015-01-30 | 基于多层次异构结构的可重构架构的并行扩展方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510052052.8A CN104615496B (zh) | 2015-01-30 | 2015-01-30 | 基于多层次异构结构的可重构架构的并行扩展方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615496A CN104615496A (zh) | 2015-05-13 |
CN104615496B true CN104615496B (zh) | 2018-08-24 |
Family
ID=53149952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510052052.8A Active CN104615496B (zh) | 2015-01-30 | 2015-01-30 | 基于多层次异构结构的可重构架构的并行扩展方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615496B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105867994A (zh) * | 2016-04-20 | 2016-08-17 | 上海交通大学 | 一种用于粗粒度可重构架构编译器的指令调度优化方法 |
CN110737637B (zh) * | 2019-09-26 | 2022-12-16 | 抖音视界有限公司 | 功能扩展方法、装置、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134578A (en) * | 1989-05-04 | 2000-10-17 | Texas Instruments Incorporated | Data processing device and method of operation with context switching |
CN102156666A (zh) * | 2011-04-20 | 2011-08-17 | 上海交通大学 | 用于粗粒度可重构阵列处理器资源调度的温度优化方法 |
CN102438149A (zh) * | 2011-10-10 | 2012-05-02 | 上海交通大学 | 一种基于可重构技术的avs反变换的实现方法 |
-
2015
- 2015-01-30 CN CN201510052052.8A patent/CN104615496B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134578A (en) * | 1989-05-04 | 2000-10-17 | Texas Instruments Incorporated | Data processing device and method of operation with context switching |
CN102156666A (zh) * | 2011-04-20 | 2011-08-17 | 上海交通大学 | 用于粗粒度可重构阵列处理器资源调度的温度优化方法 |
CN102438149A (zh) * | 2011-10-10 | 2012-05-02 | 上海交通大学 | 一种基于可重构技术的avs反变换的实现方法 |
Non-Patent Citations (1)
Title |
---|
可重构性和可重构设计理论;罗振壁 等;《清华大学学报》;20040531;第577-580页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104615496A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6103647B2 (ja) | プロセッサシステム及びアクセラレータ | |
CN100456230C (zh) | 超长指令字与单指令流多数据流融合的计算群单元 | |
CN101799760B (zh) | 生成任意目标架构的并行单指令多数据代码的系统和方法 | |
CN111566616B (zh) | 多处理器系统的编程流程 | |
WO2007083613A1 (ja) | プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム | |
CN106371829A (zh) | 基于模块化思想的模板框架设计方法及系统 | |
CN110088737A (zh) | 将并发程序转换为可部署在基于fpga的云基础设施上的硬件的综合路径 | |
Li et al. | Automatic extraction of coarse-grained data-flow threads from imperative programs | |
CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
CN103279445A (zh) | 运算任务的计算方法及超算系统 | |
KR20220038694A (ko) | 가속기 회로의 조작을 위한 명령어 | |
Cannella et al. | Adaptivity support for MPSoCs based on process migration in polyhedral process networks | |
Lisper | Towards parallel programming models for predictability | |
CN104615496B (zh) | 基于多层次异构结构的可重构架构的并行扩展方法 | |
US20080120497A1 (en) | Automated configuration of a processing system using decoupled memory access and computation | |
Yang et al. | Managing asynchronous operations in Coarray Fortran 2.0 | |
Szafaryn et al. | Trellis: Portability across architectures with a high-level framework | |
Spiliopoulou | Concurrent and distributed functional systems | |
Alexandrescu et al. | Real-time inter-process communication in heterogeneous programming environments | |
WO2023123266A1 (zh) | 子图的编译、执行方法及相关设备 | |
US20220019487A1 (en) | Communication Between Host and Accelerator Over Network | |
Caarls | Automated design of application-specific smart camera architectures | |
Witterauf | A Compiler for Symbolic Code Generation for Tightly Coupled Processor Arrays | |
WO2023123453A1 (zh) | 运算加速的处理方法、运算加速器的使用方法及运算加速器 | |
de Fine Licht | Productive FPGA Programming for High-Performance Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |