一种动态可重构阵列时序配置信息的生成方法

文档序号:6442741阅读:214来源:国知局
专利名称:一种动态可重构阵列时序配置信息的生成方法
技术领域
本申请涉及嵌入式系统技术领域,特别是涉及一种动态可重构阵列时序配置信息的生成方法。
背景技术
动态可重构处理器是一种新生的处理器构架,其较之以往的单核处理器、专用芯片、现场可编程逻辑阵列有着显著的优势,是未来电路结构发展的一个方向。首先,动态可重构处理器内往往含有多个算数逻辑单元,且数量巨大,称之为众核阵列。阵列内部配以灵活度高的路由单元,实现算数逻辑单元之间多样化的互联。因此,经路由单元连接后的众核阵列可实现对数据流的高速处理,较传统的单核以及少核处理器在性能上有着巨大的优势。同时,较固化的专用电路在灵活性上也有着巨大的优势。其次,较传统的静态可重构电路——现场可编程逻辑阵列而言,动态可重构处理器有动态的特点,即在电路运行过程中可动态的切换电路的功能,而非以往静态可重构电路一成不变的不改变电路功能,只是在电路运行之前烧写电路功能,对电路进行初始化。这样做的好处在于通过时分复用的方式减少了电路的规模,原因在于之前的电路结构的全映射现在变为分块映射,而块与块之间恰好采取了动态切换的方式。动态可重构处理器的核心一般为一个二维的可重构算术逻辑单元(ALU)阵列,该结构是并行计算以提高处理能力的基础。同时,可重构算术逻辑单元间必须拥有较为灵活的互联结构以保证运算通用性,这种可配置的互联结构使得动态可重构处理器可以改变数据流,实现了对数据流的高速并行处理,相对于传统单核、少核处理器大大的提升了计算性能。可重构计算将每个核的计算单元抽离出来组成阵列结构,再通过控制单元动态改变每个计算单元的功能来实现可重构的数据通路,这种方式简化了每个核心中取值、译码、执行的过程,而且重构后的计算阵列可以实现与专用电路相似的计算方式。这样就需要高效的控制模块来实现对可重构计算阵列的动态配置,动态可重构阵列的配置信息主要包括可重构单元互联信息、可重构单元逻辑运算信息以及阵列的粒度配置信息和时序配置信肩、ο动态可重构阵列的时序配置信息主要指阵列数据流的控制信息,包括输入次数、运算的次数、输出开始时间、输出次数、阵列循环计算时的循环间隔以及循环的次数等信息。如果这些时序信息配置不合理,就会影响数据流的处理过程,降低运算效率。例如,在循环运算过程中,如果循环间隔过小,会出现数据污染,导致数据出错;如果循环间隔过大,则会导致运算时间增大,影响可重构阵列的执行效率。因此,生成合理的时序配置信息是非常有必要的。

发明内容
本申请所要解决的技术问题是提供一种动态可重构阵列时序配置信息的生成方法,能够根据可重构阵列单元的运算和互联的信息,自动生成时序参数控制信息,以使可重构阵列的数据通路能够准确、高效地处理数据流。为了解决上述问题,本申请公开了一种动态可重构阵列时序配置信息的生成方法,包括获取可重构阵列中每个可重构单元的输入信息和输出信息;依据所述输入信息和输出信息生成可重构阵列的连通图;依据所述连通图生成可重构阵列的时序配置信息。优选的,所述可重构单元的输入信息包括输入数据的来源和输入数据的地址。优选的,所述输入数据的来源是输入数据缓存器,或者是当前可重构单元上一行的路由单元,或者是可重构阵列中的常数寄存器。优选的,所述可重构单元的输出信息包括输出数据的目标和输出数据的地址。优选的,所述输出数据的目标是输出数据缓存器,或者是当前可重构单元下一行的路由单元。优选的,所述依据输入信息和输出信息生成可重构阵列的连通图,包括依据所述输出信息获取可重构阵列中输出数据的目标为输出数据缓存器的可重构单元,将所述可重构单元作为连通图的根节点;从每个根节点出发,依据所述输入信息获取与所述根节点相连的所有可重构单元,将每个可重构单元作为连通图中的一个节点;将可重构阵列从输入数据缓存器,或者是常数寄存器获取的输入数据作为连通图的叶子节点。优选的,所述依据连通图生成可重构阵列的时序配置信息包括获取所有叶子节点从输入数据缓存器,或者常数寄存器中取数的次数;将所述取数次数的最大值作为可重构阵列的输入次数。优选的,所述依据连通图生成可重构阵列的时序配置信息还包括获取所有根节点向输出数据缓存器中存数的次数;将所述存数次数的最大值作为可重构阵列的输出次数。优选的,所述依据连通图生成可重构阵列的时序配置信息还包括获取从每个叶子节点到根节点的路径y,每条路径长度为c[y];计算每条路径的输出开始时间path[y],path[y] = in [ j]+c [y]-out [i]其中,in[j]为该条路径中每个叶子节点从输入数据缓存器,或者常数寄存器中取数的次数,out[i]为该条路径中的根节点向输出数据缓存器中存数的次数;计算可重构阵列的输出开始时间W,W = max (path [y]) -I其中,I为可重构阵列的输入次数。优选的,所述依据连通图生成可重构阵列的时序配置信息还包括计算可重构阵列的循环间隔G,G = 0-I+ff-min (path [y])其中,0为可重构阵列的输出次数,I为可重构阵列的输入次数,W为可重构阵列的输出开始时间,path[y]为连通图中每条路径的输出开始时间。与现有技术相比,本申请包括以下优点本申请通过获取可重构阵列中每个可重构单元的输入信息和输出信息,然后依据所述输入信息和输出信息生成可重构阵列的连通图,再依据所述连通图生成可重构阵列的时序配置信息。根据上述方法获得的连通图之间的数据没有相关性,因此利用该连通图生成的时序配置信息,即阵列的输入次数、输出次数、输出开始时间和循环间隔更加准确,从而避免在循环利用阵列计算数据时产生的数据污染问题,并且能够提高可重构阵列的运算效率。


图1是本申请一种动态可重构阵列时序配置信息的生成方法实施例的流程图;图2是一种4X4粗粒度动态可重构阵列的结构示意图;图3是动态可重构阵列内可重构单元和路由单元的具体结构示意图;图4是本申请一种动态可重构阵列时序控制示意图;图5是动态可重构阵列内执行的一个4X4的配置示意图;图6是利用本申请对图5中的4X4的配置生成的连通图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。参照图1,示出了本申请一种动态可重构处理器阵列时序配置信息的生成方法实施例的流程图,所述方法包括步骤S101,获取可重构阵列中每个可重构单元的输入信息和输出信息;参照图2,示出了一种4X4粗粒度动态可重构阵列的结构示意图,其中包括输入/输出数据缓存器,用于缓存需要输入可重构单元进行计算的数据以及经过可重构单元运算的结果数据;路由单元,用于数据路由,可锁存数据送往下层,或者实现旁路连接,路由单元共有4层,均与输入/输出缓存器相连,可进行数据的双向交换;阵列单元是一个8/16bit运算单元,用于对数据进行算数或者逻辑运算;配置信息缓冲器,用于完成对路由单元和可重构单元的状态配置,可存储多层配直fe息;状态控制器是状态寄存和流程控制单元,可重构阵列外部的主处理器可以从状态控制器中的寄存器中读取工作状态,切换工作和配置模式、控制运算次数等信息;此外,可重构阵列还包括输入/输出接口和中断接口,用于实现数据的传输。当然,本申请的可重构阵列并不限于4X4粒度,其他任何一种粒度的可重构阵列均可用于实现本申请。参照图3,示出了动态可重构阵列内可重构单元和路由单元的具体结构示意图,其中每个可重构单元包括2个输入多路选择器、1个算术逻辑单元和1个输出寄存器。每个输入多路选择器为可重构单元选择当前运算所需要的一个操作数。
算术逻辑单元,用于执行所述操作数的算术或者逻辑运算;输出寄存器用于寄存当前运算的计算结果。动态可重构阵列的配置信息主要包括可重构单元的互联信息,可重构单元的运算信息以及阵列的粒度配置信息和时序配置信息。(1)可重构单元互联信息,包括可重构单元的输入信息和输出信息i)可重构单元的输入信息可重构单元的输入信息包括输入数据的来源和输入数据的地址,可以分别对输入数据的来源和输入数据的地址进行编码获得可重构单元输入的配置信息。每个可重构单元可以有多组输入端口,而且每个端口也可以有多个数据来源,这里的数据来源可以是输入数据缓存器,或者是当前可重构单元上一行的路由单元,或者是可重构阵列中的常数寄存器。例如,图3中的可重构单元中共有2个输入端口 1和2,而且每个输入都会有三个数据来源,分别是输入数据缓存器的数据、路由单元中锁存的上一行数据以及阵列的常数寄存器获得的常数。输入的配置信息可以用2bit表示数据来源,再根据输入/输出缓存器取数单元的深度,路由单元中一行存数的个数等信息进行编码,对输入的数据的地址进行编码。ii)可重构单元输出信息可重构单元的输出信息包括输出数据的目标和输出数据的地址,可以分别对输出数据的目标和输出数据的地址进行编码获得可重构单元输出的配置信息。每个可重构单元的输出端口也可以有多个数据目标,所述输出数据的目标是输出数据缓存器,或者是当前可重构单元下一行的路由单元。例如,图3中可重构单元有两个输出目标,分别是输出数据缓存器以及下一行的路由单元。其中路由单元中的数据是默认存取的,不需进行编码产生配置信息。而输出数据缓存器中的数据需要进行判断是否输出,并且需要输出的地址信息。(2)可重构单元的运算信息可重构单元选取的运算方式,即可重构单元的操作符。可重构阵列中每一个单元都有独立的计算资源,类似于通用处理器的算术逻辑单元。这部分的配置信息可以针对可重构单元的输入,经过相应的运算产生结果。(3)粒度配置信息可重构阵列根据可重构单元的粒度,可分为粗粒度、细粒度和两种粒度相结合的混合粒度。所谓粒度是指最小计算单元的大小,一般粗粒度的可重构单元的可能有4bit、8bit,、16bit或者32bit等多种粒度,在不同的应用场景下可以把阵列设计或配置成不同的粒度。(4)时序配置信息阵列的时序控制信息主要指阵列数据流的控制信息,包括输入次数、输出次数、输出开始时间和循环间隔等信息。步骤S102,依据所述输入信息和输出信息生成可重构阵列的连通图,包括以下步骤步骤S1021,依据所述输出信息获取可重构阵列中输出数据的目标为输出数据缓存器的可重构单元,将所述可重构单元作为连通图的根节点;将根节点向输出模块(即输出数据缓存器)存数的次数记为out[i],其中i是阵列中所有根节点的序号。步骤S1022,从每个根节点出发,依据所述输入信息获取与所述根节点相连的所有可重构单元,将每个可重构单元作为连通图中的一个节点,直到找到一个没有与上一行相连的节点为止。其中,所述可重构单元的数据来源可以是输入数据缓存器,或者是当前可重构单元上一行的路由单元,或者是可重构阵列中的常数寄存器。步骤S1023,将可重构阵列从输入数据缓存器,或者是常数寄存器获取的的输入数据作为连通图的叶子节点。将叶子节点从输入模块(即输入数据缓存器或常数寄存器)取数的次数记做in[j],其中参数j是叶子节点的序号。这样所有节点就构成了可重构阵列的连通图。步骤S103,依据所述连通图生成可重构阵列的时序配置信息。通过上面这些连通图的研究,就可以生成可重构阵列需要的时序配置信息。在分析时序配置信息时,主要通过计算“图”中的从根节点到叶子节点的路径长度的方法。(a)输入次数I 循环一次的过程中,阵列从输入模块(即输入数据缓存器或常数寄存器)中取数的次数。获取所有叶子节点从输入数据缓存器,或者常数寄存器中取数的次数;将所述取数次数的最大值作为可重构阵列的输入次数,即I = max (in[j])其中,in[j]为每个叶子节点从输入模块(即输入数据缓存器或常数寄存器)取数的次数。(b)输出次数0 循环一次过程中,阵列向输出模块(即输出数据缓存器)存数的次数。获取所有根节点向输出数据缓存器中存数的次数;将所述存数次数的最大值作为可重构阵列的输出次数,即0 = max (out [i])其中,out[i]为每个根节点向输出模块(即输出数据缓存器)存数的次数。(c)输出开始时间W —次循环的过程中,最后一次输入到开始输出之间的时间间隔。获取从每个叶子节点到根节点的路径y,每条路径长度为c[y],其中,y为路径的标号;计算每条路径的输出开始时间path[y],path[y] = in [ j]+c [y]-out [i]其中,in [j]为该条路径中每个叶子节点从输入数据缓存器,或者常数寄存器中取数的次数,out[i]为该条路径中的根节点向输出数据缓存器中存数的次数;计算可重构阵列的输出开始时间W,W = max (path [y]) -I其中,I为可重构阵列的输入次数。如果计算的W的结果小于0,则W = 0。(d)循环间隔G 在对阵列进行多次循环运算时,循环间隔为两次循环中第一次循环中输入结束到第二次循环中输入开始之间的时间间隔。在运算过程中,如果循环间隔过小,会出现数据污染,导致数据出错,循环间隔过大,则会导致运算时间增大,影响可重构阵列的执行效率。所以,循环间隔的计算结果G(Gap)是阵列时序控制信息的关键。通过上面的计算,我们可以得到输入次数配置I (Input),输出开始时间配置W(Wait),输出次数配置0(Output),这些参数作为循环间隔计算的已知参数,对每个连通图从根节点到叶子节点的路径计算的值,用于计算输入的循环间隔G(Gap)。由于连通图之间没有数据相关,所以就不会产生数据污染问题,所以可以分别计算每个连通图的输入循环间隔,并把最大值作为阵列的循环间隔G(Gap)。参照图4,示出了本申请一种动态可重构阵列时序控制示意图,由图中可以看出,当数据开始有效时,只要保证前一次输出结束,就不会产生数据污染,所以应满足G+I+min(path[y]) ^ ff+0因此循环间隔G应为G = 0-I+ff-min (path [y])在循环N次的情况下,阵列的运算时间是T= (1+1) +W+ (0+1) + (N-I) X (G+I+1)对于同拍输入,同拍输出的情况,I = 0,0 = 0,路径输出开始时间in[j]+c[y]-out[i]都相同,此时G = 0。也就是说输入连续进行,实现高效的流水线结构。在进行算法映射时,遇到循环调用阵列配置信息的情况时,也应尽量保证数据的路径长度相同,输入数据和输出数据都分别在同一个周期内完成,这样可以利用流水线得到最优的性能,此时的运行时间是W+N+1。参照图5,示出了动态可重构阵列内执行的一个4X4的配置示意图,首先根据可重构单元的输入信息和输出信息生成该配置的连通图,如图6所示,连通图包括2个根节点outO和outl,以及4个叶子节点in0-in3。每个叶子节点从输入模块取数的次数为in
= 0in[l] = 1in [2] = 0in[3] = 1每个根节点向输出模块存数的次数为out
= 0out[l] = 1因此,可重构阵列的输入次数为I = 1可重构阵列的输入次数为0 = 1对于根节点outO,有3个叶子节点in0,inl,in2与其相连,其中,每个叶子节点到根节点outO的路径长度为c
=3
c[l] = 3c[2] =2因此,每个路径的输出开始时间为path
= 3path[l] = 4path [2] = 2对于根节点outl,有4个叶子节点in0,inl,in2,in3与其相连,其中,每个叶子节点到根节点outO的路径长度为c
=3c[l] = 3c[2] = 2c[3] = 2因此,每个路径的输出开始时间为path
= 2path[l] = 3path [2] = 1path [3] = 2因此,阵列的输出开始时间为W = max (path [y] )-1 = 3阵列的循环间隔为G = 0-I+ff-min(path[y]) = 2即输出在输入结束后3拍后开始,两次输入之间的间隔至少是2。以上对本申请所提供的一种动态可重构阵列时序配置信息的生成方法,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种动态可重构阵列时序配置信息的生成方法,其特征在于,包括获取可重构阵列中每个可重构单元的输入信息和输出信息;依据所述输入信息和输出信息生成可重构阵列的连通图;依据所述连通图生成可重构阵列的时序配置信息。
2.根据权利要求1所述的方法,其特征在于,所述可重构单元的输入信息包括输入数据的来源和输入数据的地址。
3.根据权利要求2所述的方法,其特征在于,所述输入数据的来源是输入数据缓存器,或者是当前可重构单元上一行的路由单元,或者是可重构阵列中的常数寄存器。
4.根据权利要求3所述的方法,其特征在于,所述可重构单元的输出信息包括输出数据的目标和输出数据的地址。
5.根据权利要求4所述的方法,其特征在于,所述输出数据的目标是输出数据缓存器,或者是当前可重构单元下一行的路由单元。
6.根据权利要求5所述的方法,其特征在于,所述依据输入信息和输出信息生成可重构阵列的连通图,包括依据所述输出信息获取可重构阵列中输出数据的目标为输出数据缓存器的可重构单元,将所述可重构单元作为连通图的根节点;从每个根节点出发,依据所述输入信息获取与所述根节点相连的所有可重构单元,将每个可重构单元作为连通图中的一个节点;将可重构阵列从输入数据缓存器,或者是常数寄存器获取的输入数据作为连通图的叶子节点。
7.根据权利要求6所述的方法,其特征在于,所述依据连通图生成可重构阵列的时序配置信息包括获取所有叶子节点从输入数据缓存器,或者常数寄存器中取数的次数;将所述取数次数的最大值作为可重构阵列的输入次数。
8.根据权利要求7所述的方法,其特征在于,所述依据连通图生成可重构阵列的时序配置信息还包括获取所有根节点向输出数据缓存器中存数的次数;将所述存数次数的最大值作为可重构阵列的输出次数。
9.根据权利要求8所述的方法,其特征在于,所述依据连通图生成可重构阵列的时序配置信息还包括获取从每个叶子节点到根节点的路径y,每条路径长度为c[y];计算每条路径的输出开始时间path[y],path[y] = in[j]+c[y]-out[i]其中,in [j]为该条路径中每个叶子节点从输入数据缓存器,或者常数寄存器中取数的次数,out[i]为该条路径中的根节点向输出数据缓存器中存数的次数;计算可重构阵列的输出开始时间W,W = max(path[y])-I其中,I为可重构阵列的输入次数。
10.根据权利要求9所述的方法,其特征在于,所述依据连通图生成可重构阵列的时序配置信息还包括计算可重构阵列的循环间隔G,G = 0-I+ff-min(path[y])其中,0为可重构阵列的输出次数,I为可重构阵列的输入次数,W为可重构阵列的输出开始时间,path[y]为连通图中每条路径的输出开始时间。
全文摘要
本申请提供了一种动态可重构阵列时序配置信息的生成方法,包括获取可重构阵列中每个可重构单元的输入信息和输出信息;依据所述输入信息和输出信息生成可重构阵列的连通图;依据所述连通图生成可重构阵列的时序配置信息。根据上述方法获得的连通图之间的数据没有相关性,因此利用该连通图生成的时序配置信息,即阵列的输入次数、输出次数、输出开始时间和循环间隔更加准确,从而避免在循环利用阵列计算数据时产生的数据污染问题,并且能够提高可重构阵列的运算效率。
文档编号G06F15/177GK102567279SQ20111043616
公开日2012年7月11日 申请日期2011年12月22日 优先权日2011年12月22日
发明者刘雷波, 尹首一, 时龙兴, 曹鹏, 朱敏, 杨军, 王延升, 王星, 魏少军 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1