发明内容
本发明旨在至少在一定程度上解决上述技术问题之一或至少提供一种有用的商业选择。为此,本发明的目的在于提出一种完备精确的面向可重构阵列的多参数融合性能建模方法。
根据本发明实施例的面向可重构阵列的多参数融合性能建模方法,将一个任务分解成一系列连续的阵列操作p=[1,P],则任务总体执行时间等于多次阵列操作的重构周期数,数据载入周期数,阵列计算周期数以及数据存储周期数的总和再乘以阵列工作频率,即:
其中,TET表示任务的总体执行时间,f表示阵列工作的频率,其中CFC表示重构周期,LDC表示数据载入周期,CPC表示阵列计算周期,STC表示数据存储周期。
在本发明的一个实施例中,定义0-1变量xp,当阵列操作需要重构时xp=1,当阵列操作不需要重构时xp=0,假设所有需要重构的阵列操作中重构周期相等,记为常数CFC,则所有的阵列操作中的重构周期就可表示为:CFCp=xpCFC,以及整个任务的重构周期数表示为:
在本发明的一个实施例中,所有的阵列操作中的通信周期数等于每一次阵列操作的载入载出数据量之和除以局部数据存储器的带宽,即:其中,BW为数据存储器的带宽,为在第p次阵列操作中载入数据的个数,为在第p次阵列操作中载出数据的个数。
在本发明的一个实施例中,在CrossBar互联形式的阵列中,所有阵列的计算周期为固定的,则整个任务的阵列计算周期为:其中CPC为每一次阵列计算都需要跑完流水级的时间周期常数。
在本发明的一个实施例中,在Mesh互连形式的阵列中,阵列的计算时间是互联形式和数据依赖长度的函数,则整个任务的阵列计算周期数可以表示为:其中RS表示互联形式,表示数据依赖长度。
在本发明的一个实施例中,对于L(M,N,Wlb,Llb)的二维嵌套循环,M和N分别代表这个循环的外层循环和内层循环的边界,Wlb,Llb分别代表这个嵌套的循环体DFG图宽和长,则上述二维嵌套循环的基于多面体模型的循环变换的多参数融合可重构计算阵列的性能模型为:
其中,定义以PE的资源矩阵(PRT)来表示PE阵列最多能容纳多少个二维嵌套循环中的循环迭代,PRT的尺寸用η×ζ来表示,设Θ和Π分别表示把二维嵌套循环进行变换的两个一维仿射变换,其变换系数分别为(c1,c2)和(d1,d2),Nip表示不规则资源矩阵的个数,Nrp表示规则资源矩阵的个数,Nrow表示资源矩阵的行数,Ntp表示资源矩阵的总数,β表示不规则PRT的通信周期数占规则PRT的通信周期数的百分比,表示循环中依赖e的源迭代变量,表示循环中依赖e的目标迭代变量。
综上所述,本发明能够精确地、完善地把可重构处理器的总体执行时间解析的表达出来,以此总体执行时间的性能模型,为用户的算法映射提供了评估和指导意义。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。
本发明旨在系统地解决可重构计算阵列的算法映射问题。针对可重构计算阵列,本发明的方法通过研究可重构处理器的硬件特征以及可重构处理器的特殊运行机制,综合考虑影响可重构处理器执行性能的各个参数,建立了一个完备的、相对精确的多参数融合性能模型。它可以通过数学表达式解析的表达出来,以用作算法映射优化中的目标函数,从而得到一种能达到最优性能的算法映射。
为了使本领域更好地理解本发明原理,先进行可重构计算阵列运行机制分析。
进行算法映射的主要目的就是使得程序的执行总时间最少,因此我们将对程序执行的时间进行建模。为得到程序的执行时间,我们首先对可重构阵列的运行机制进行分析。根据可重构处理器的运行机制,我们对可重构处理器的性能建立解析的数学模型。以此模型,我们就可以去指导可重构处理器上面的算法映射。
可重构计算阵列的运行机制如图1所示。图中横坐标轴代表程序执行时间;ConfigurationCycles(CFC),DataLoadingCycles(LDC),ComputingCycles(CPC),DataStoringCycles(STC)分别代表每一次阵列操作的重构周期数,数据载入周期数,阵列计算周期数以及数据存储周期数。具体地,在任务执行过程一般分为如下四个阶段:(a)阵列首先从配置存储器里面读取配置信息来配置阵列中的每一个PE以及PE之间的互联形式,即CFC阶段。配置之后阵列就行成了具有一定功能的数据通路;(b)然后,阵列从局部存储器中读取需要计算的数据并把数据分配到需要载入数据的PE的输入寄存器,即LDC阶段。(c)紧接着,阵列就按照配置好的数据通路进行计算,即CPC阶段。(d)最后,计算好的数据结果又写回到局部存储器里面,即STC阶段。经过如上四个步骤就完成了一次阵列操作。需要说明的是,其中,LDC和STC阶段通常合称COM(communication,通信)阶段。
如果每一次阵列操作都需要阵列功能重构,就如图1(a)所示,这样周而复始就完成整个任务的执行。如图1(b)所示,有时候由于相邻着的两次阵列操作中的PE功能以及互联形式都是一样,那么本次阵列操作就不需要有CFC这个阶段,直接进入LDC、CPC和STC这三个阶段。这样的特殊的运行机制也与处理器以及GPU有很大的不同。
由于可重构计算阵列的硬件架构以及运行机制的特殊性,我们需要针对可重构计算阵列建立一个统一、完备和精确的性能模型。通过融合多个可重构计算阵列的性能影响因素,建立一个解析的任务执行总时间的表达式,并以此为目标去求解最优算法映射方式。
一、面向可重构阵列的多参数融合性能建模方法
考虑到一个任务往往是很大的,它往往需要多次的阵列操作才能执行完毕。我们把一个任务分解成一系列连续的阵列操作p=[1,P],每一个阵列操作都有自己独特的特性,因此我们可以整个任务的执行时间表示为:
式(1)中,TET表示任务的总体执行时间,f表示阵列工作的频率。这样把每一次阵列操作的四个运行阶段CFCp,LDCp,CPCp和STCp都累加起来,再乘以阵列的工作频率,就得到整个任务的总体执行时间TET。下面我们将把重构时间周期(即CFC阶段),通信时间周期(即LDC阶段和STC阶段)和计算时间周期(即CPC阶段)分别用解析式表达出来。具体地有:
(1)重构周期数的解析表示:
如图1(b)所示,CFCp在有些阵列操作中是可以省略的,为此,我们同一个0-1变量xp来区分需要重构的阵列操作和不需要重构的阵列操作。我们假设,所有需要重构的阵列操作中重构周期CFCp都是一样的,为常数CFC。因此,所有的阵列操作中的重构周期就可表示为:CFCp=xpCFC。进一步地,整个任务的重构时间可以表示为:
(2)通信周期数的解析表示:
如图1所示,一次阵列操作的通信时间包含了数据载入周期和数据载出周期。假设数据存储器的带宽为BW,那么通信周期数实际上可以简单地表示为:
式(3)中,表示在第p次阵列操作中载入数据的个数,表示在第p次阵列操作中载出数据的个数。把每一次阵列操作的载入载出数据量之和除以局部数据存储器的带宽就得到了每一次阵列操作的通信周期数,再把所有阵列操作的通信周期数累加就得到整个任务的通信周期数。
(3)计算周期数的解析表示:阵列操作的计算周期数与阵列PE互连形式和数据依赖长度具有紧密关系。
例如在以ReMUS为代表的CrossBar互联形式的阵列中,由于阵列计算是一行一行的流水的执行下来的,每一次阵列计算都需要跑完8级的流水,这样阵列的计算周期数可以固定的,以CPC表示。如此整个任务的阵列计算周期数可以表示为:
例如在以ADRES为代表的Mesh互连形式的阵列中,由于较长的数据依赖需要通过阵列内部寄存器传输实现,因此阵列的计算时间可能是互联形式(RS)(例如:Mesh,Mesh_plus,Morphs)和数据依赖长度()的复杂表示:Func(RS,),如此整个任务的阵列计算周期数可以表示为:
通过以上的讨论,我们可以看出任务在可重构阵列上的整体执行时间(TET)可通过CFCp,LDCp,CPCp,STCp,xp,等参数表示出来。所有的这些参数都与程序的映射方式具有密切关系。例如:在循环映射中,不同的循环变换映射方式将会导致不同的重构次数,不同的数据依赖长度和不同的通信量。肯定会有一种最优的映射方式得到最优的CFCp,LDCp,CPCp,STCp,xp,等参数,从而得带最小的TET。因此以TET作为可重构阵列的性能评估,并以此作为算法映射优化的尺度来指导算法的映射,就可以得到最优的算法映射方式。
二、面向可重构阵列的多参数融合性能建模方法的应用
下面对本发明提出的可重构处理器多参数融合性能建模方法结合实施例进行详细说明。循环是一个任务中经常被映射优化的部分,因此有很多循环优化方法经常被用来优化映射。为验证我们的性能建模方法,我们对REMUS硬件平台的上的嵌套循环映射进行性能建模。
如图2(a)所示,我们定义L(M,N,Wlb,Llb)为一个原始的二维嵌套循环。M和N分别代表这个循环的外层循环和内层循环的边界,Wlb,Llb分别代表这个嵌套的循环体DFG图宽和长。循环体程序转换成数据流图(DFG)图已经有非常成熟的方法来进行处理,例如布局布线算法。对于超出二层的嵌套循环本方法也是可以处理的,我们一般处理其最内的两层循环。又如图2(c)所示,Wpea和Lpea分别代表可重构计算阵列的宽和长。由于PE阵列大小有限,我们定义以PE的资源矩阵(PRT)(如图2(d)所示)来表示PE阵列最多能容纳多少个二维嵌套循环中的循环迭代,PRT的尺寸用η×ζ来表示,它们可以简单表示为:
设Θ和Π分别表示把二维嵌套循环进行变换的两个一维仿射变换,其变换系数分别为(c1,c2)和(d1,d2)。这样经过Θ和Π仿射变换后的迭代空间如图2(e)中的平行四边形表示。图2(e)实际上是一个大的任务,我们需要通过PRT来对这个大的任务进行分割来形成一系列的阵列操作。在PEAResourceTile(PRT)覆盖整个平行四边形的过程中,有的PRT能够被循环迭代充满,叫做R-PRT,如图2(e)中所示的斜线矩形框;有的PRT则不能够被循环迭代充满,叫做I-PRT,如图2(e)中所示的波浪线矩形框。整个变换后的平行四边形被PRT覆盖后所产生的R-PRT,I-PRT以及所需要的PRT的行数都可以用参数M,N,η,ζ,c1,c2,d1,d2表示为Nrp,Nip和Nrow。所需PRT的总数则表示为Ntp=Nrp+Nip。其中,Nrp表示R-PRT的个数,Nip表示I-PRT的个数,Nrow表示PRT的行数,Ntp表示PRT的总数。
变换后的循环被PRT覆盖之后,我们就可以确定重构的次数了。如图2(e)所示,任务是按照从上到下,从左到右的顺序一个阵列操作接着一个阵列操作来执行的。两个相邻的I-PRT之间总是需要重构的,因为这两个相邻PRT的循环迭代个数以及排布都是不一样的,对应的阵列功能以及互联形式都是不一样的,因此需要时间读取配置信息来进行阵列重新配置,重构因子xp=1。而相邻的R-PRT之间是不需要重构的,因为这两个PRT都被循环迭代填满了,他们所对应的阵列功能和互连形式都是一样的,因此不需要重构,重构因子xp=0.因此整个任务的重构次数可以表示为:
Ncfg=Nip+Nrow(7)
把公式(7)带入到,公式(2)中就可以得到整个任务的重构周期数:
把数据依赖所跨越的超平面的层数作为通信量度量,则整个任务的通信周期数表示为:
计算时间我们以ReMUS这种CrossBar的互联形式为例,由于每一次阵列操作的计算周期数都是固定的(CPC),结合公式(4),变换后的循环的总体阵列计算时间可以表示为:
联合公式(1)(8)(9)(10),我们就得到了基于多面体模型的循环变换的多参数融合可重构计算阵列的性能模型:
以此可重构计算阵列的性能模型为目标函数来指导,来寻找最优的仿射变换,从而就找到是的TET最小的仿射变换系数。
综上所述,本发明的面向可重构阵列的多参数融合性能建模方法能够精确地、完善地把可重构处理器的总体执行时间解析的表达出来,以此总体执行时间的性能模型,为用户的算法映射提供了评估和指导意义。
在本说明书的描述中,参考术语”一个实施例”、”一些实施例”、“示例”、”具体示例”、或”一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。