用于多层次异构结构的可重构处理器的并行处理方法技术领域
本发明涉及可重构计算领域,特别是涉及一种用于多层次异构结构的可重
构处理器的并行处理方法。
背景技术
可重构处理器是为了满足信息时代人们对计算速度和计算通用性需求的重
要产物,它兼备了通用处理器和专用集成电路的优势。典型的粗粒度可重构处
理器由主控制器、主存DDR和可重构处理单元(RPU)构成,各个部分之间的数
据传输通过总线实现。主控制器用来运行操作系统,负责整个系统资源的调度。
当一个计算任务在可重构处理器上运行时,编译器会将任务代码进行软硬件划
分。软硬件划分是指将程序代码划分成在通用处理器上运行的串行代码(软件
部分)与在RPU上运行的代码(硬件部分)。划分出来的串行代码通过普通的
编译器便可以将其编译成可执行代码。而另一部分则要经过另外的特殊的编译
流程之后生成RPU上相应的配置信息。RPU通常包含若干个可重构阵列(PEA),
每个阵列包含方阵形式排列的基本处理单元(PE),每一个PE可执行字级的算
术或者逻辑操作,PE之间可经由route互相通信。PEA中配置信息的生成方法
则是可重构计算编译器研究的重点。
针对如何高效快速的完成软硬件划分及生成配置信息,使得计算密集型任
务在可重构处理器上运行的时间大大缩短,国内外编译器领域已经有较为成熟
的流程。然而这些编译流程面向的可重构处理器都是两层异构结构,并行语言
的扩展也相对复杂
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种用于多层次
异构结构的可重构处理器的并行处理方法,开发了一套用于多层次异构结构的
可重构架构编译器后端处理方案,以生成并行任务在此种架构下运行的配置信
息。
为达上述及其它目的,本发明提出一种用于多层次异构结构的可重构处理
器的并行处理方法,包括如下步骤:
步骤一,获取类汇编的代码中间表示IR,并进行指令提取
步骤二,对提取出的指令进行分析,根据数据流构建指令依赖图;
步骤三,计算迭代间隔,该迭代间隔指单个PE重复执行两条相同指令之间
所间隔的时钟周期;
步骤四,构建CONFIGIR配置信息,该CONFIGIR配置信息包含执行配置
包的可重构运算阵列编号、配置包长度及各条配置信息中的操作指令;
步骤五,获取访存信息;
步骤六,对CONFIGIR配置信息二进制映射。
进一步地,于步骤一中,指令提取为分析该IR并提取出真正需要映射的指
令,包括访存的LOAD/STORE,以及在高级语言源代码中的各类算术运算、逻
辑运算。
进一步地,于步骤三中,所述迭代间隔指单个PE重复执行两条相同指令之
间所间隔的时钟周期,所述迭代间隔越小表征着代码的并行度越高。
进一步地,该迭代间隔的计算不仅要考虑代码间的数据依赖,还要考虑硬
件架构中基本运算单元的数量。
进一步地,于步骤四中,每条配置信息包含至少8个数据域,其中INPUT1、
INPUT2和OUTPUT分别储存两个输入操作数和输出操作数;OPCODE表征运
算种类,为加减乘等算术运算或逻辑运算和访存运算;ITERATION域储存迭代
次数,剩下的三个ITERATION域储存操作数在每次迭代时在共享存储器中的地
址增量。
进一步地,如果涉及到选择、移位操作,数据域进行相应扩展。
进一步地,所述CONFIGIR配置信息中每条配置信息在构建时,不会填入
所有的信息,其中每个操作数的初始地址信息为缺省值。
进一步地,于步骤五中,引入空函数的方法,将地址从IR外部获取后,于
IR中添加一个空函数,以函数参数传递的方式将地址信息读入到IR中。
进一步地,访存信息的获取还包括迭代增量的计算。
进一步地,于步骤六中,在所述CONFIGIR配置信息构建完毕后,调用相
关的规则将其翻译成二进制机器代码。
与现有技术相比,本发明一种用于多层次异构结构的可重构处理器的并行
处理方法实现了面向一种面向的三层异构可重构处理器架构,并开发了一套用
于多层次异构结构的可重构架构编译器后端处理方案,以生成并行任务在此种
架构下运行的配置信息。
附图说明
图1为本发明所应用之用于多层次异构结构的可重构处理器的架构示意图;
图2为本发明一种用于多层次异构结构的可重构处理器的并行处理方法的
步骤流程图;
图3为本发明较佳实施例中CONFIGIR中每条指令的基本字段结构图;
图4为本发明较佳实施例中原始的C程序经过前端处理后所加的并行标记
示例以及生成的中间代码表示示例图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术
人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明
亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基
于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明所应用之多层次异构结构的可重构处理器的架构示意图。如
图1所示,本发明所应用之用于多层次异构结构的可重构处理器,包括:一个
ARM11核10(主控制器)、主存DDR20及多个RPU处理单元30,各个模块之
间通过AHB总线进行通信,一个独立的RPU处理单元30包含1个负责搬运配
置包的ARM7核301(协控制器),4个共享内存(sharedmemory,SM)SM1-SM4
和4个可重构运算阵列(ProcessingElementArray,PEA)PEA1-PEA4,每个PEA
以方阵形式排列若干基本运算单元(PE),在本发明较佳实施例中为16个,各
个PE之间可以按照一定的路由关系进行通信。需要注意的是,主控制器ARM11
核10、协控制器ARM7核301和可重构运算阵列PEA三者的内存空间都是独立
的,不能直接进行相互访问。主控制器与协控制器之间、主控制器与PEA之间
以及协控制器与PEA之间的数据传递都是通过DMA(直接内存存取)来完成
的,这三部分模块共同组成了一个三层次的可重构异构架构,每当处理器接到
一个运算任务,会首先进行软硬件任务划分,划分后的串行部分在ARM11上执
行,可并行的部分由编译器生成配置包,由ARM7负责搬运到各个PEA上,配
置在PEA上流水执行,三层结构分工合作,并行完成一套可并行任务。
针对运行在这种多层异构可重构处理器上的并行任务,已有相关嵌入到编
译器前端的并行处理方案。这种方案基于ANSIC语言实现,在ANSIC语言描
述的任务中,对可并行运算部分(以函数为单元)加入了若干并行、同步标记,
指明了待运算的数据矩阵以及这些数据拷贝到SM中的地址等信息,同时指明
执行运算的运算阵列编号及SM序号,以便编译器后端识别。
基于上述的硬件架构以及编译器前端基础,本发明提出了一种相对应的编
译器后端的并行处理方案。
图2为本发明一种用于多层次异构结构的可重构处理器的并行处理方法的
步骤流程图。如图2所示,本发明一种用于多层次异构结构的可重构处理器的
并行处理方法,应用于编译器后端,包括如下步骤:
步骤201,获取类汇编的代码中间表示(IntermediateRepresentation,IR),
并进行指令提取。具体地说,分析IR并提取出真正需要映射的指令,包括访存
的LOAD/STORE,以及在高级语言源代码中的各类算术运算、逻辑运算。
步骤202,构建依赖图。对提取出的指令进行分析,根据数据流构建指令依
赖图,这是决定配置信息执行顺序的关键步骤。
步骤203,计算迭代间隔。迭代间隔指的是单个PE重复执行两条相同指令
之间所间隔的时钟周期,迭代间隔越小表征着代码的并行度越高。迭代间隔的
计算不仅要考虑代码间的数据依赖,还要考虑硬件架构中的PE数量。
步骤204,构建CONFIGIR(配置信息)。CONFIGIR是本发明提出的一种
存储配置信息的全新数据结构,也可以看作是配置信息的打包方式。它包含执
行配置包的PEA编号、配置包长度(配置信息数量)及各条配置信息中的操作
指令等信息,可以看作是最终配置信息的可读性表示形式。CONFIGIR中每条
配置信息的基本结构请参考图3,包含至少8个数据域,INPUT1、INPUT2和
OUTPUT分别储存两个输入操作数和输出操作数;OPCODE表征运算种类,可
以是加减乘等算术运算,也可以是逻辑运算和访存运算;ITERATION域储存迭
代次数;剩下的三个ITERATION域储存操作数在每次迭代时在共享存储器(SM)
中的地址增量,迭代的引入将大量相同操作的配置信息压缩到一条配置信息中,
减少了配置信息储存的开销,加快了配置包的搬运速度。如果涉及到选择、移
位操作,数据域会作相应扩展。
步骤205,获取访存信息。CONFIGIR中每条配置信息在构建时,不会填入
所有的信息,其中每个操作数(包括输入与输出)的初始地址信息是缺省值。
这部分信息来自于前端所加的标记,在并行任务翻译得到的IR中并不存在,因
此不能够直接获取。这里本发明采取了引入了空函数的方法,将地址从IR外部
获取后,于IR中添加一个空函数,以函数参数传递的方式将地址信息读入到IR
中。访存信息的获取还包括迭代增量的计算。本发明将数组地址迭代增量的计
算任务交给编译器来完成,减少了最终配置信息中的运算,减少了配置信息中
的冗余。
步骤206,对CONFIGIR信息二进制映射。CONFIGIR构建完毕后,调用相
关的规则将其翻译成二进制机器代码。
以下将配合图4通过一具体实施例来说明本发明:
如图4所示,是一个原始的C程序经过前端处理后所加的并行标记示例
(401-404)以及生成的中间代码表示(IntermediateRepresentation,IR)示例。
处理器运行时,主控制器执行串行代码段,在404处调用协处理器进行运算数
据和配置包的搬运工作。参照原始代码,401是将x,y数组的数据作为输入拷贝
到PEA外的共享内存(SharedMemory,SM)中,“0”“50”表示访问的首地址,
“16”表示拷贝的数据长度;402调用PEA进行并行计算;403将得到的结果拷
贝到A数组中作为输出(为了便于理解,二维的A数组用一维替代),“100”
表示访问的首地址,“256”表示输出的数据长度。
图4中的calc函数,该函数生成的IR中,经过一系列分析,可以提取出
405-410六条可以生成配置信息的指令。由于该例中操作比较简单,在此忽略依
赖图构建的过程,再综合考虑数组规模与PEA规模,直接得到迭代间隔II=6,
即每条配置信息每6个周期执行1次。据此,构建六条指令组成的CONFIGIR
各个字段数据如表1。
表1CONFIGIR构建示例
No.
INPUT1
INPUT2
OPCODE
OUTPUT
IN1INC
IN2INC
OUTINC
ITER
1
DEFAULT
NULL
load
Reg1
0
NULL
0
16
2
DEFAULT
NULL
load
Reg2
1
NULL
0
16
3
Reg1
Reg2
mul
Reg3
0
0
0
16
4
DEFAULT
NULL
load
Reg4
1
NULL
0
16
5
Reg3
Reg4
add
0
0
0
0
16
6
0
NULL
store
DEFAULT
0
NULL
1
16
以下对表1中的各项进行说明:
1、OUTPUT中Reg1-Reg4指的是每个PE自身的寄存器,该寄存器中的数
据仅能被PE自身访问。
2、DEFAULT表示暂时缺省项,内容应为从SM中读取的数据首地址,该
地址需要之后的步骤分析后方能填充。
3、第5条指令的输出字段填入0表示无输出,数据保留在PE本地以待下
周期调用。第6条指令的输入字段填入0表示输入数据采集自PE本地上个周期
的计算数据。
4、第2、4条指令的IN1INC字段和第6条指令的OUTINC字段填入1表
示每次执行该指令时,在SM中读取的地址都增加1。这种表示形式压缩了配置
信息。
接下来分析并填充表1中的DEFAULT字段。由401和403的访存函数可以
得到相关的访存信息,但是这部分信息并不存在于原始IR中。于是本发明引入
三个空函数体的函数,以传递实参的形式将首地址数据传入到IR中,从而完善
CONFIGIR,完善后的CONFIGIR如表2所示。
No.
INPUT1
INPUT2
OPCODE
OUTPUT
IN1INC
IN2INC
OUTINC
ITER
1
SM[0]
NULL
load
Reg1
0
NULL
0
16
2
SM[50]
NULL
load
Reg2
1
NULL
0
16
3
Reg1
Reg2
mul
Reg3
0
0
0
16
4
SM[100]
NULL
load
Reg4
1
NULL
0
16
5
Reg3
Reg4
add
0
0
0
0
16
6
0
NULL
store
SM[100]
0
NULL
1
16
表2完善的CONFIGIR
当然,以上只是PE1执行的配置信息表。在本发明具体实施例中,所有的
PE1-PE16执行指令相同,但是以上几个缺省字段填入的SM首地址各不相同,
此处不再详述。
最后,根据特定的机器码规则将上表中的数据翻译成二进制机器码。
可见,本发明一种用于多层次异构结构的可重构处理器及其并行处理方法
实现了一种面向的三层异构可重构处理器架构,并开发一套用于多层次异构结
构的可重构架构编译器后端处理方案,以生成并行任务在此种架构下运行的配
置信息。
与现有技术相比,本发明具有如下优点:
1、本发明实现了多层异构可重构处理器编译器的后端设计,为不同层次间
的任务并行提供了技术的支持,包括协处理器与可重构阵列之间的任务级并行、
可重构阵列间的任务级并行、可重构阵列间的指令级并行。
2、本发明在配置信息的生成过程中,引入了CONFIGIR这一数据结构作为
配置包的打包方法,充分利用了可重构架构的多层次特点。CONFIGIR的存在
将可重构阵列硬件开发与相应编译器软件开发隔离开来,使得二者可以并行设
计、互不影响,为软硬件协同设计高效的开发效率。
3、针对多层异构可重构处理器的硬件架构特点和编译器前端的并行标记特
点,本发明还实现了一种新的PEA获取访存信息的方法,减少了配置信息中的
冗余指令,提高了并行效率。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。
任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行
修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。