CN102508816A - 一种应用于粗粒度可重构阵列的配置方法 - Google Patents
一种应用于粗粒度可重构阵列的配置方法 Download PDFInfo
- Publication number
- CN102508816A CN102508816A CN2011103606397A CN201110360639A CN102508816A CN 102508816 A CN102508816 A CN 102508816A CN 2011103606397 A CN2011103606397 A CN 2011103606397A CN 201110360639 A CN201110360639 A CN 201110360639A CN 102508816 A CN102508816 A CN 102508816A
- Authority
- CN
- China
- Prior art keywords
- configuration
- data
- route
- reconfigurable
- cgra
- 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.)
- Granted
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本发明的应用于粗粒度可重构阵列的配置方法,针对一定规模的粗粒度可重构阵列,包括以数据链路为基本描述对象的配置定义方案及相应的配置生成和配置映射方案。该配置定义方案中,一个程序对应多条配置,一条配置对应一条数据链路,每条数据链路由多个存在数据依赖关系的可重构单元组成。与传统的以RC为基本描述对象的方案相比,它可以隐藏这些RC间的互连信息、提供更大的配置信息压缩空间,因而有利于减少配置总量和配置切换的时间。此外,一条描述数据链路的配置由一条路由及功能配置和一条或多条数据配置组成,多条数据配置共用一条路由及功能配置信息,一条配置的切换包括一次路由及功能配置的切换后一次或多次数据配置的切换。
Description
技术领域
本发明涉及嵌入式可重构设计领域,具体涉及一种为粗粒度可重构计算阵列提出的配置方法。
背景技术
可重构计算是目前高性能并行计算领域的一个研究热点,它能够在性能、功耗及灵活性三个方面取得一个很好的权衡,粗粒度可重构计算阵列是可重构系统的运算部件,拥有海量的计算资源和充足的路由资源,通过对其运算单元的功能和路由进行合理配置,可以充分的发掘计算的并行性。相对于通用处理器来说,可重构计算阵列的运算效率有了极大的提高,因而特别适合计算密集型和数据密集型的应用,尤其是图形和视频解码应用。
根据重构方式的不同,可重构系统可以分为静态可重构系统和动态可重构系统。静态可重构系统是指可重构部分的逻辑功能静态重载。相对于静态可重构系统,动态可重构系统能够在系统运行时改变其配置,从而减少了配置重构的开销,提高了系统运行的效率。但由于阵列规模的不断扩大和配置文件的不断增加,在可重构系统处理视频编解码等高性能并行计算的应用过程中,配置切换的开销往往是制约其性能提高的瓶颈,并且这一开销在可重构多媒体系统的功耗开销中占主要地位。进一步的缩短配置切换的时间并减少配置频繁切换所带来的功耗开销对粗粒度可重构阵列的配置设计及重构方法提出了更高的要求。
然而,配置切换的时间与配置的定义方案紧密相关,好的配置定义方案有利于减少配置切换时的信息量,进而能够减少配置切换所带来的时间和功耗开销。目前在粗粒度可重构系统研究领域,常见的配置定义方案是每一条配置对应一个RC( Reconfigurable Cell ,可重构单元)。这种配置定义的方式意味着配置切换的对象是每一个RC,而每一条配置所包括的内容及格式上的定义又都是一致的,因此在重新配置的过程中配置和配置之间存在很多的重复信息。然而,在粗粒度可重构阵列进行配置映射的过程中,配置切换时通常是多个RC同时进行配置的切换,而很少针对单个RC进行配置切换,因而, RC间的重复配置信息可以通过设计配置定义方案及相应的配置切换方法来压缩和减少。综上可知,一种新的配置设计的方案显得很有必要,它不是以RC为配置对象,而是以一条由多个数据相互依赖的RC组成的数据链路为配置对象,重构的对象是数据链路而不是RC,相对于传统以RC为配置对象的配置设计方法,它利用了多个RC之间存在的配置大量重复并以及配置切换通常是多个RC同时进行切换的特点,而这些特点意味着较大的配置压缩空间,因而在对配置信息进行合理的格式定义后,可以有效减少配置切换的配置信息量,降低配置切换的时间开销。
发明内容
技术问题:本发明提供一种可以压缩配置信息量、降低配置切换过程中的功耗开销、减少配置切换时间的应用于粗粒度可重构阵列的配置方法。
技术方案:本发明的一种应用于粗粒度可重构阵列的配置方法,在以数据链路为基本描述对象的配置定义基础上,首先对粗粒度可重构阵列上执行的程序所对应的每条配置进行配置生成,所述的程序是采用C源代码进行描述的应用对象,然后根据所述程序的C源代码的执行顺序对所有配置对应的数据链路进行配置映射;
所述的配置定义为:编译器读取程序的C源代码后经过编译生成多条配置,一条配置对应一条数据链路,该数据链路的定义为:每一条数据链路由多个存在数据依赖关系的节点组成,每个节点对应一个可重构单元RC,且每一条数据链路都能够一次性映射于粗粒度可重构阵列CGRA之上;所述的数据依赖关系是指数据链路中除第一个节点以外的每一个节点的输入都依赖于前一个节点的输出,第一个节点的输入来自于全局存储资源;所述的能够一次性映射于粗粒度可重构阵列CGRA之上是指数据链路中所包括的节点的个数不多于粗粒度可重构阵列CGRA实际所拥有的可重构单元RC的数量;
并且,一条配置由一条路由及功能配置和一条或多条数据配置组成,多条数据配置共用一条路由及功能配置,即配置的切换过程中只切换新的数据配置,而保留原来己加载的路由及功能配置的内容不变;
所述的配置生成包括以下步骤:
步骤1,将所述程序的C源代码输入编译器前端,生成数据流图DFG;
步骤2,将数据流图DFG输入编译器后端,编译器后端基于硬件资源的约束,将输入的每一张数据流图DFG切割为多张数据流图DFG子图,这些数据流图DFG子图都能够一次性映射到粗粒度可重构阵列CGRA之上;所述的基于硬件资源的约束包括可重构单元RC的个数,局部存储资源的大小,全局存储资源的大小;
步骤3,编译器后端按照配置定义中所述的数据链路定义,将每一张数据流图DFG子图切分为多条数据链路;
步骤4,编译器后端将每一条数据链路分割为两部分,即一部分对应一条路由及功能配置,另一部分对应一条数据配置,路由及功能配置和数据配置的内容如配置定义中所述;编译器后端根据路由及功能配置和数据配置的内容,按照所述对应关系对数据链路分割而成的两部分分别进行配置编码,从而生成配置的二进制码;
所述的配置映射要求在粗粒度可重构阵列CGRA上采用一块片上存储器来存放数据配置,即数据配置存储器,一块片上存储器来存放路由及功能配置,即路由及功能配置存储器;配置映射具体包括以下步骤:
1)当可重构处理单元RPU开始启动时,由配置总线接口初始化路由及功能配置存储器和数据配置存储器;
2)粗粒度可重构阵列CGRA从路由及功能配置存储器中读出一条新的路由及功能配置并将该配置加载到多个可重构单元RC上;
3)粗粒度可重构阵列CGRA从数据配置存储器中读出一条新的数据配置并将该配置加载到上一步骤中刚加载了路由及功能配置的可重构单元RC上;
4)粗粒度可重构阵列CGRA基于加载的配置进行计算,当计算开始后即进入步骤5);
5)当粗粒度可重构阵列CGRA检测到在所有己加载配置的可重构单元RC中,有一条数据链路的最后一个节点所对应的可重构单元RC完成计算时,则判断有一个配置完成计算,并进入下一步,同时粗粒度可重构阵列CGRA记录当前检测到的己完成计算的配置的地址信息;否则粗粒度可重构阵列CGRA等待一个系统时钟周期结束后,进入步骤7);
6)如果己完成计算的配置中,己加载过的数据配置的个数小于该配置的数据配置个数,则粗粒度可重构阵列CGRA判断需要切换新的一条数据配置,并回到步骤3),否则进入到步骤7);
7)如果己完成加载的配置的个数小于粗粒度可重构阵列上执行的程序所对应的配置的个数,则粗粒度可重构阵列CGRA判断需要切换新的一条路由及功能配置,并进入步骤8),否则进入到步骤9);
8)如果尚未加载新配置且己完成上一条己加载配置的运算的可重构单元RC的个数大于或等于下一条将要加载的配置所对应的可重构单元RC的个数,则粗粒度可重构阵列CGRA判定可以切换新的一条路由及功能配置,并回到步骤2),否则回到步骤5);
9)配置映射结束,粗粒度可重构阵列CGRA输出计算结果。
本发明中,所述的配置定义中,每一条所述路由及功能配置包括以下内容:
计算资源的个数,即该条配置所需要的可重构单元RC个数;
对操作数的本地资源描述,即操作数来自或写入哪一个可重构单元RC,或者操作数来自或写入于哪一个局部存储资源;
对条件输入位的描述,即条件输入位来自于哪一个可重构单元RC,或者条件输入位来自于哪一个局部存储资源;
对操作码的描述,即可重构单元RC具体要作哪一种运算;
每一条所述数据配置包括:对操作数的全局资源描述,即操作数来自或写入哪一个全局存储资源。
本发明的配置定义方案中,粗粒度可重构阵列上执行的程序对应多条配置,每条配置对应一条数据链路,数据链路由多个存在数据依赖关系的RC(Reconfigurable Cell,可重构单元)组成。此外,一条描述数据链路的配置由一条路由及功能配置和一条或多条数据配置组成,多条数据配置共用一条路由及功能配置信息,一条配置的切换包括一次路由及功能配置的切换后一次或多次数据配置的切换。
该配置方法实现的平台是粗粒度可重构系统架构模板RESarch(Reconfigurable System Architecture)。该模板具有传统粗粒度可重构系统的基本特点,即架构由主控核加粗粒度可重构阵列组成。
RESarch包括可剪裁的若干个RPU(Reconfigurable Processing Unit,可重构处理单元)。每个RPU包括四个部分,分别为CGRA(Coarse-Grained Reconfigurable Array,粗粒度可重构阵列),DFC(Data Flow Controller,数据流控制单元),CFC(Context Flow Controller,控制流处理单元),和SCN(System Connect Matrix,系统互连矩阵),一块路由及功能配置片上存储器,一块数据配置片上存储器;。每个CGRA阵列内包括多个RC(Reconfigurable Cell,可重构单元),RC间通过阵列内路由资源实现互连。此外,RESarch还包括一个CPU(Central Processing Unit,中央处理器单元)来作为主控核。CGRA是一个动态可重构的硬件运算单元阵列,它具有近似ASIC(Application Specific Integrated Circuit,专用集成电路)的性能,对于各种数据密集型的算法方便配置重构。对比ASIC,它大大拓宽了应用,减小了硬件面积开销。
传统的粗粒度可重构阵列配置设计格式是每一条配置描述一个RC( Reconfigurable Cell ,可重构单元),并且每一条配置的格式基本一致。然而系统重构的过程中往往是针对多个RC或整个阵列来统一切换和加载配置,而多个RC之间的配置信息存在大量重复,因而,这意味着通过重新设计配置定义方案可以有效利用重复配置。
此外,根据二进制编码的原理,针对一条包括多个RC的数据链路进行配置和编码,其编码效率远高于针对一个RC来进行配置编码,也就是说前一方法编码后的配置信息量要远小于后者。
因此,本文提出了一种新的配置设计方案,该方案重构的对象是数据链路而不是RC,数据链路由一系列存在数据间依赖关系的RC组成,它是配置定义的基本单元。
此外,在传统粗粒度可重构阵列中,根据所配置硬件资源的不同,相应的配置信息主要可分为两类:一类为路由及功能配置,即该信息主要用于配置阵列中的RC的计算功能,RC之间的互连,及RC与局部存储资源之间的互连;一类为数据配置,即该信息主要用于配置阵列中RC的全局操作数。在许多算法映射的过程中,往往存在第一类配置信息多次重复使用的特点,比如在循环算法映射过程中,重复利用路由及功能配置并只切换数据配置则可以大大减少配置切换的信息量和时间开销。相应的,本发明将一条描述数据链路的配置分离为两部分:路由及功能配置,数据配置,如图2所示。
本发明中,RC意为可重构单元(Reconfigurable Cell),CGRA意为粗粒度可重构阵列(Coarse-Grained Reconfigurable Array),DFG意为数据流图(Data Flow Graph),RPU意为可重构处理单元(Reconfigurable Processing Unit)。
有益效果:本文明的配置定义方案不是以RC为配置对象,而是以一条由多个数据相互依赖的RC组成的数据链路为配置对象。传统的配置定义方案所配置的对象是每一个RC,而每一条配置所包括的内容及定义又都是一致的,因此在重新配置的过程中配置和配置之间存在很多的重复信息。然而,在粗粒度可重构阵列进行配置映射的过程中,配置切换时又通常是多个RC同时进行配置的切换,而很少针对单个RC进行配置切换。因而, 本方法利用多个RC之间存在的配置大量重复并以及配置切换通常是多个RC同时进行切换的特点,对配置信息进行了进一步的压缩处理,即将不同的RC配置间存在信息重复的部分进行统一编码。假定对一个RC的配置进行单独二进制编码的信息量为2x,则配置位长为x,那么对2n个RC的配置分别进行单独二进制编码的信息量为2x+n,配置信息的总位长为x*2n,然而,若是对这2n个RC的配置进行统一二进制编码,那么若需编码的信息量仍为2x+n,则配置信息的总位长只需要大于或等于x+n。相比较而言,前一种方案的配置信息的总位长为x*2n,后一种方案的配置信息的总位长则为x+n,而配置信息的位长决定了配置信息所占存储空间的大小,因此,前一种方案中配置所占存储空间随着RC的个数呈指数级增长,而后一种方案中配置所占存储空间随着RC的个数呈线性增长,前后比较发现配置所占存储空间有了巨大的压缩。所以,综上可知,本配置定义方案能够有效减少配置所占存储空间的大小,降低了配置切换的时间开销,并且数据链路中所包括的RC数目越多,配置信息的压缩量也就越大。
此外,为进一步重复利用配置,本方案基于循环算法中一次迭代多次运算的特点,将一条配置分离为一条路由及功能配置和一条或多条数据配置两部分,这样在进行多次迭代计算的过程中,多条数据配置可以共用一条路由及功能配置,即配置的切换过程中可以只切换新的数据配置,而保留原来己加载的路由及功能配置的内容不变,这样配置切换时所需更新的信息量就只包括了数据配置的部分,这时CGRA也就只需要通过访问数据配置存储器来更新数据配置,而不需要访问路由及功能配置存储器。然而,配置切换时的信息量决定了配置切换所需要的时间,即决定了CGRA访问配置存储器的时间。并且,在CGRA的功耗开销中,对配置存储器的访问所带来的功耗开销占主要地位。因此,通过以上这一方案,就能够较大减少配置切换时的信息量,减少对路由及功能配置存储器的访问次数,进而降低配置切换所带来的时间和功耗开销。
附图说明
图1是本发明所述的数据链路结构示意图;
图2是本发明所述的数据链路的配置信息组成的示意图;图中,A为路由及功能配置,它包括:RC间互连配置,RC对局部存储资源的读写配置,RC的功能配置;B0、B1、…Bn分别为数据配置,一条数据配置的信息包括RC对全局存储资源读写的全部内容;
图3是本发明粗粒度可重构阵列配置方法的总流程图;
图4是本发明粗粒度可重构阵列配置方法的配置生成流程图;
图5是本发明粗粒度可重构阵列配置方法的配置映射流程图。
具体实施方式
本发明的一种应用于粗粒度可重构阵列的配置方法,在以数据链路为基本描述对象的配置定义基础上,首先对粗粒度可重构阵列上执行的程序所对应的每条配置进行配置生成,所述的程序是采用C源代码进行描述的应用对象,然后根据所述程序的C源代码的执行顺序对所有配置对应的数据链路进行配置映射;
所述的配置定义为:编译器读取程序的C源代码后经过编译生成多条配置,一条配置对应一条数据链路,该数据链路的定义为:每一条数据链路由多个存在数据依赖关系的节点组成,每个节点对应一个可重构单元RC,且每一条数据链路都能够一次性映射于粗粒度可重构阵列CGRA之上;所述的数据依赖关系是指数据链路中除第一个节点以外的每一个节点的输入都依赖于前一个节点的输出,第一个节点的输入来自于全局存储资源;所述的能够一次性映射于粗粒度可重构阵列CGRA之上是指数据链路中所包括的节点的个数不多于粗粒度可重构阵列CGRA实际所拥有的可重构单元RC的数量;
并且,一条配置由一条路由及功能配置和一条或多条数据配置组成,多条数据配置共用一条路由及功能配置,即配置的切换过程中只切换新的数据配置,而保留原来己加载的路由及功能配置的内容不变;
所述的配置生成包括以下步骤:
步骤1,将所述程序的C源代码输入编译器前端,生成数据流图DFG;
步骤2,将数据流图DFG输入编译器后端,编译器后端基于硬件资源的约束,将输入的每一张数据流图DFG切割为多张数据流图DFG子图,这些数据流图DFG子图都能够一次性映射到粗粒度可重构阵列CGRA之上;所述的基于硬件资源的约束包括可重构单元RC的个数,局部存储资源的大小,全局存储资源的大小;
步骤3,编译器后端按照配置定义中所述的数据链路定义,将每一张数据流图DFG子图切分为多条数据链路;
步骤4,编译器后端将每一条数据链路分割为两部分,即一部分对应一条路由及功能配置,另一部分对应一条数据配置,路由及功能配置和数据配置的内容如配置定义中所述;编译器后端根据路由及功能配置和数据配置的内容,按照所述对应关系对数据链路分割而成的两部分分别进行配置编码,从而生成配置的二进制码;
所述的配置映射要求在粗粒度可重构阵列CGRA上采用一块片上存储器来存放数据配置,即数据配置存储器,一块片上存储器来存放路由及功能配置,即路由及功能配置存储器;配置映射具体包括以下步骤:
1)当可重构处理单元RPU开始启动时,由配置总线接口初始化路由及功能配置存储器和数据配置存储器;
2)粗粒度可重构阵列CGRA从路由及功能配置存储器中读出一条新的路由及功能配置并将该配置加载到多个可重构单元RC上;
3)粗粒度可重构阵列CGRA从数据配置存储器中读出一条新的数据配置并将该配置加载到上一步骤中刚加载了路由及功能配置的可重构单元RC上;
4)粗粒度可重构阵列CGRA基于加载的配置进行计算,当计算开始后即进入步骤5);
5)当粗粒度可重构阵列CGRA检测到在所有己加载配置的可重构单元RC中,有一条数据链路的最后一个节点所对应的可重构单元RC完成计算时,则判断有一个配置完成计算,并进入下一步,同时粗粒度可重构阵列CGRA记录当前检测到的己完成计算的配置的地址信息;否则粗粒度可重构阵列CGRA等待一个系统时钟周期结束后,进入步骤7);
6)如果己完成计算的配置中,己加载过的数据配置的个数小于该配置的数据配置个数,则粗粒度可重构阵列CGRA判断需要切换新的一条数据配置,并回到步骤3),否则进入到步骤7);
7)如果己完成加载的配置的个数小于粗粒度可重构阵列上执行的程序所对应的配置的个数,则粗粒度可重构阵列CGRA判断需要切换新的一条路由及功能配置,并进入步骤8),否则进入到步骤9);
8)如果尚未加载新配置且己完成上一条己加载配置的运算的可重构单元RC的个数大于或等于下一条将要加载的配置所对应的可重构单元RC的个数,则粗粒度可重构阵列CGRA判定可以切换新的一条路由及功能配置,并回到步骤2),否则回到步骤5);
9)配置映射结束,粗粒度可重构阵列CGRA输出计算结果。
本发明中,所述的配置定义中,每一条所述路由及功能配置包括以下内容:
计算资源的个数,即该条配置所需要的可重构单元RC个数;
对操作数的本地资源描述,即操作数来自或写入哪一个可重构单元RC,或者操作数来自或写入于哪一个局部存储资源;
对条件输入位的描述,即条件输入位来自于哪一个可重构单元RC,或者条件输入位来自于哪一个局部存储资源;
对操作码的描述,即可重构单元RC具体要作哪一种运算;
每一条所述数据配置包括:对操作数的全局资源描述,即操作数来自或写入哪一个全局存储资源。
下面对本发明的技术方案做进一步的详细描述。
本发明的配置定义中,路由及功能配置主要负责RC与RC之间的路由配置,RC与局部存储资源之间的路由配置,以及RC的功能配置。数据配置主要负责全局数据的搬运。
本发明的配置生成中,如图4所示,编译器读取粗粒度可重构阵列上执行的程序的C源代码后,经过一系列编译过程生成多条配置,一条配置对应一条数据链路。基于以上所述的对数据链路的定义、路由及功能配置的内容、数据配置的内容,配置生成包括以下步骤:
步骤1,将粗粒度可重构阵列上执行的程序的C源代码输入编译器前端,生成DFG;编译器前端首先需要基于己有的编译技术生成抽象语法树,这些编译技术包括词法分析技术、语法分析技术,然后基于抽象语法树生成DFG,DFG的内容与结构和传统编译技术中的DFG是一致的;
步骤2,将DFG输入编译器后端,编译器后端基于硬件资源的约束,将输入的每一张DFG切割为多张DFG子图,这些DFG子图都能够一次性映射到粗粒度可重构阵列之上;所述的基于硬件资源的约束包括RC的个数,局部存储资源的大小,全局存储资源的大小;所生成的DFG子图的内容与结构和DFG的内容与结构是一致的;
步骤3,编译器后端按照配置定义中所述的数据链路定义,将每一张DFG子图切分为多条数据链路;这些数据链路的内容与结构和DFG的内容与结构也是相一致的。具体切分的过程中,则根据以上所述的数据链路的定义来对DFG子图进行切分;
步骤4,编译器后端将每一条数据链路分割为两部分,即一部分对应一条路由及功能配置,另一部分对应一条数据配置,路由及功能配置和数据配置的内容如配置定义中所述;编译器后端根据路由及功能配置和数据配置的内容,按照所述对应关系对数据链路分割而成的两部分分别进行配置编码,从而生成配置的二进制码;编译器后端在处理每一条数据链路后最终生成了两部分的二进制码;所有数据链路所对应的二进制码最终将由RPU写入到配置存储器当中,二进制码的存放顺序由所对应数据链路的执行顺序决定,而数据链路的执行顺序则与粗粒度可重构阵列上执行的程序的C源代码中代码的执行顺序相一致。
本发明的配置映射如图5所示,包括以下步骤:
1)当RPU开始启动时,由配置总线接口初始化配置存储器。在初始化配置存储器过程中,配置的二进制码根据程序的C源代码执行顺序依次存放在配置存储器当中;配置存储器由两块片上存储器组成,其中一块片上存储器存放路由及功能配置,即路由及功能配置存储器,另一块片上存储器则存放数据配置,即数据配置存储器;
2)CGRA从路由及功能配置存储器中读出一条新的路由及功能配置并将该配置加载到多个RC之上;具体配置CGRA中的哪些RC由路由及功能配置信息决定,同时CGRA会记录当前所加载的路由及功能配置在路由及功能配置存储器当中的存放地址;
3)CGRA从数据配置存储器中读出一条新的数据配置并将该数据配置加载到上一步中刚加载了路由及功能配置的RC上;
4)CGRA基于加载的配置进行计算,即CGRA中已加载配置的RC开始进行计算,计算开始后即进入第五步;
5)CGRA检查是否有配置完成计算。CGRA检测到在所有己加载配置的RC中,其中有一条数据链路的最后一个节点所对应的RC计算完成时,则判定在己加载的多条配置中,有配置完成计算,并进入下一步,同时CGRA记录当前检测到的己完成计算的配置的地址信息;否则CGRA等待一个系统时钟周期结束后,进入第七步;
6)CGRA判断是否需要切换数据配置。CGRA根据第五步检测到的己完成计算的配置中,己加载过数据配置个数是否小于该配置所包含的数据配置个数来判断是否需要切换新的一条数据配置,如果己完成加载的数据配置的个数小于配置中的数据配置个数,则判定为需要切换,并回到第三步,反之则判定为不需要切换,并进入到下一步;
7)CGRA判断是否需要切换新的一条路由及功能配置。即CGRA会先根据粗粒度可重构阵列上执行的程序的配置个数来检查是否还有新的路由及功能配置需要加载,如果己完成加载的配置的个数小于程序所对应的配置的个数,则判定为是,并进入第八步,反之则判定为否,并进入第九步;此处的己完成加载的配置,是指该配置的路由及功能配置和全部数据配置均已进行了加载;
8)CGRA判断是否能够切换新的一条路由及功能配置。CGRA检查尚未加载新配置且己完成上一条己加载配置的运算的RC的个数是否大于或等于下一条将要加载的配置所对应的RC的个数,若是,则判断可以切换新的一条路由及功能配置,并回到第二步,否则回到第五步;本步骤中的下一条将要加载的配置是指下一条将要加载的路由及功能配置所属的配置,而下一条将要加载的路由及功能配置是根据程序中的执行顺序来确定的将要加载的路由及功能配置。
9)配置映射结束,CGRA输出计算结果。
本发明提出的一种应用粗粒度可重构系统的配置方法虽然以RESarch为其实现平台,然而并非以此限定本发明的保护范围,在不脱离本发明范围所做的修改,均应包含在本发明的保护范围内。
Claims (2)
1. 一种应用于粗粒度可重构阵列的配置方法,其特征在于,该方法在以数据链路为基本描述对象的配置定义基础上,首先对粗粒度可重构阵列上执行的程序所对应的每条配置进行配置生成,所述的程序是采用C源代码进行描述的应用对象,然后根据所述程序的C源代码的执行顺序对所有配置对应的数据链路进行配置映射;
所述的配置定义为:编译器读取程序的C源代码后经过编译生成多条配置,一条配置对应一条数据链路,该数据链路的定义为:每一条数据链路由多个存在数据依赖关系的节点组成,每个节点对应一个可重构单元RC,且每一条数据链路都能够一次性映射于粗粒度可重构阵列CGRA之上;所述的数据依赖关系是指数据链路中除第一个节点以外的每一个节点的输入都依赖于前一个节点的输出,第一个节点的输入来自于全局存储资源;所述的能够一次性映射于粗粒度可重构阵列CGRA之上是指数据链路中所包括的节点的个数不多于粗粒度可重构阵列CGRA实际所拥有的可重构单元RC的数量;
并且,一条配置由一条路由及功能配置和一条或多条数据配置组成,多条数据配置共用一条路由及功能配置,即配置的切换过程中只切换新的数据配置,而保留原来己加载的路由及功能配置的内容不变;
所述的配置生成包括以下步骤:
步骤1,将所述程序的C源代码输入编译器前端,生成数据流图DFG;
步骤2,将数据流图DFG输入编译器后端,编译器后端基于硬件资源的约束,将输入的每一张数据流图DFG切割为多张数据流图DFG子图,这些数据流图DFG子图都能够一次性映射到粗粒度可重构阵列CGRA之上;所述的基于硬件资源的约束包括可重构单元RC的个数,局部存储资源的大小,全局存储资源的大小;
步骤3,编译器后端按照配置定义中所述的数据链路定义,将每一张数据流图DFG子图切分为多条数据链路;
步骤4,编译器后端将每一条数据链路分割为两部分,即一部分对应一条路由及功能配置,另一部分对应一条数据配置,路由及功能配置和数据配置的内容如配置定义中所述;编译器后端根据路由及功能配置和数据配置的内容,按照所述对应关系对数据链路分割而成的两部分分别进行配置编码,从而生成配置的二进制码;
所述的配置映射要求在粗粒度可重构阵列CGRA上采用一块片上存储器来存放数据配置,即数据配置存储器,一块片上存储器来存放路由及功能配置,即路由及功能配置存储器;配置映射具体包括以下步骤:
1)当可重构处理单元RPU开始启动时,由配置总线接口初始化路由及功能配置存储器和数据配置存储器;
2)粗粒度可重构阵列CGRA从路由及功能配置存储器中读出一条新的路由及功能配置并将该配置加载到多个可重构单元RC上;
3)粗粒度可重构阵列CGRA从数据配置存储器中读出一条新的数据配置并将该配置加载到上一步骤中刚加载了路由及功能配置的可重构单元RC上;
4)粗粒度可重构阵列CGRA基于加载的配置进行计算,当计算开始后即进入步骤5);
5)当粗粒度可重构阵列CGRA检测到在所有己加载配置的可重构单元RC中,有一条数据链路的最后一个节点所对应的可重构单元RC完成计算时,则判断有一个配置完成计算,并进入下一步,同时粗粒度可重构阵列CGRA记录当前检测到的己完成计算的配置的地址信息;否则粗粒度可重构阵列CGRA等待一个系统时钟周期结束后,进入步骤7);
6)如果己完成计算的配置中,己加载过的数据配置的个数小于该配置的数据配置个数,则粗粒度可重构阵列CGRA判断需要切换新的一条数据配置,并回到步骤3),否则进入到步骤7);
7)如果己完成加载的配置的个数小于粗粒度可重构阵列上执行的程序所对应的配置的个数,则粗粒度可重构阵列CGRA判断需要切换新的一条路由及功能配置,并进入步骤8),否则进入到步骤9);
8)如果尚未加载新配置且己完成上一条己加载配置的运算的可重构单元RC的个数大于或等于下一条将要加载的配置所对应的可重构单元RC的个数,则粗粒度可重构阵列CGRA判定可以切换新的一条路由及功能配置,并回到步骤2),否则回到步骤5);
9)配置映射结束,粗粒度可重构阵列CGRA输出计算结果。
2. 根据权利要求1所述的应用于粗粒度可重构阵列的配置方法,其特征在于,所述的配置定义中,每一条所述路由及功能配置包括以下内容:
计算资源的个数,即该条配置所需要的可重构单元RC个数;
对操作数的本地资源描述,即操作数来自或写入哪一个可重构单元RC,或者操作数来自或写入于哪一个局部存储资源;
对条件输入位的描述,即条件输入位来自于哪一个可重构单元RC,或者条件输入位来自于哪一个局部存储资源;
对操作码的描述,即可重构单元RC具体要作哪一种运算;
每一条所述数据配置包括:对操作数的全局资源描述,即操作数来自或写入哪一个全局存储资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110360639.7A CN102508816B (zh) | 2011-11-15 | 2011-11-15 | 一种应用于粗粒度可重构阵列的配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110360639.7A CN102508816B (zh) | 2011-11-15 | 2011-11-15 | 一种应用于粗粒度可重构阵列的配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102508816A true CN102508816A (zh) | 2012-06-20 |
CN102508816B CN102508816B (zh) | 2014-05-07 |
Family
ID=46220907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110360639.7A Expired - Fee Related CN102508816B (zh) | 2011-11-15 | 2011-11-15 | 一种应用于粗粒度可重构阵列的配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508816B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116493A (zh) * | 2013-01-21 | 2013-05-22 | 东南大学 | 一种应用于粗粒度可重构阵列的自动映射方法 |
CN103914429A (zh) * | 2014-04-18 | 2014-07-09 | 东南大学 | 用于粗粒度动态可重构阵列的多模式数据传输互连器 |
CN104615488A (zh) * | 2015-01-16 | 2015-05-13 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
CN104615474A (zh) * | 2014-09-02 | 2015-05-13 | 清华大学 | 用于粗粒度可重构处理器的编译优化方法 |
CN104915213A (zh) * | 2015-06-19 | 2015-09-16 | 东南大学 | 一种可重构系统的局部重构控制器 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN105760784A (zh) * | 2016-02-22 | 2016-07-13 | 清华大学无锡应用技术研究院 | 多元化配置信息压缩方法及装置 |
CN105790809A (zh) * | 2016-02-24 | 2016-07-20 | 东南大学 | 面向mimo信道检测系统中粗粒度可重构阵列及路由结构 |
CN105975251A (zh) * | 2016-05-19 | 2016-09-28 | 东南大学—无锡集成电路技术研究所 | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 |
CN107241603A (zh) * | 2017-07-27 | 2017-10-10 | 许文远 | 一种多媒体编解码处理器 |
CN107402745A (zh) * | 2017-07-04 | 2017-11-28 | 清华大学 | 数据流图的映射方法及装置 |
CN107506329A (zh) * | 2017-08-18 | 2017-12-22 | 浙江大学 | 一种自动支持循环迭代流水线的粗粒度可重构阵列及其配置方法 |
CN109672524A (zh) * | 2018-12-12 | 2019-04-23 | 东南大学 | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 |
CN112306500A (zh) * | 2020-11-30 | 2021-02-02 | 上海交通大学 | 一种针对粗粒度可重构结构的降低多类访存冲突编译方法 |
US11144822B1 (en) | 2021-01-04 | 2021-10-12 | Edgecortix Pte. Ltd. | Neural network accelerator run-time reconfigurability |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100273612B1 (ko) * | 1997-04-04 | 2000-12-15 | 포만 제프리 엘 | 입/출력을 재구성할 수 있는 동적 랜덤 액세스 메모리 |
US20010048625A1 (en) * | 2000-05-25 | 2001-12-06 | Robert Patti | Dynamically configurated storage array with improved data access |
US20020120826A1 (en) * | 2001-02-23 | 2002-08-29 | Siva Venkatraman | Method and apparatus for reconfigurable memory |
CN101095283A (zh) * | 2004-10-29 | 2007-12-26 | 通用电气公司 | 用于传感器元件可重构阵列的转换电路 |
CN101512529A (zh) * | 2006-08-31 | 2009-08-19 | Ip菲力股份有限公司 | 用于在可重构器件中安装电路设计的方法以及系统 |
-
2011
- 2011-11-15 CN CN201110360639.7A patent/CN102508816B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100273612B1 (ko) * | 1997-04-04 | 2000-12-15 | 포만 제프리 엘 | 입/출력을 재구성할 수 있는 동적 랜덤 액세스 메모리 |
US20010048625A1 (en) * | 2000-05-25 | 2001-12-06 | Robert Patti | Dynamically configurated storage array with improved data access |
US20020120826A1 (en) * | 2001-02-23 | 2002-08-29 | Siva Venkatraman | Method and apparatus for reconfigurable memory |
CN101095283A (zh) * | 2004-10-29 | 2007-12-26 | 通用电气公司 | 用于传感器元件可重构阵列的转换电路 |
CN101512529A (zh) * | 2006-08-31 | 2009-08-19 | Ip菲力股份有限公司 | 用于在可重构器件中安装电路设计的方法以及系统 |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116493A (zh) * | 2013-01-21 | 2013-05-22 | 东南大学 | 一种应用于粗粒度可重构阵列的自动映射方法 |
CN103116493B (zh) * | 2013-01-21 | 2016-01-06 | 东南大学 | 一种应用于粗粒度可重构阵列的自动映射方法 |
CN103914429A (zh) * | 2014-04-18 | 2014-07-09 | 东南大学 | 用于粗粒度动态可重构阵列的多模式数据传输互连器 |
CN103914429B (zh) * | 2014-04-18 | 2016-11-23 | 东南大学 | 用于粗粒度动态可重构阵列的多模式数据传输互连器 |
CN104615474B (zh) * | 2014-09-02 | 2018-06-22 | 清华大学 | 用于粗粒度可重构处理器的编译优化方法 |
CN104615474A (zh) * | 2014-09-02 | 2015-05-13 | 清华大学 | 用于粗粒度可重构处理器的编译优化方法 |
WO2016112701A1 (zh) * | 2015-01-16 | 2016-07-21 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
US10552222B2 (en) | 2015-01-16 | 2020-02-04 | Huawei Technologies Co., Ltd. | Task scheduling method and apparatus on heterogeneous multi-core reconfigurable computing platform |
CN104615488B (zh) * | 2015-01-16 | 2018-01-19 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
CN104615488A (zh) * | 2015-01-16 | 2015-05-13 | 华为技术有限公司 | 异构多核可重构计算平台上任务调度的方法和装置 |
CN104915213A (zh) * | 2015-06-19 | 2015-09-16 | 东南大学 | 一种可重构系统的局部重构控制器 |
CN104915213B (zh) * | 2015-06-19 | 2018-05-18 | 东南大学 | 一种可重构系统的局部重构控制器 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN105335331B (zh) * | 2015-12-04 | 2018-08-21 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN105760784B (zh) * | 2016-02-22 | 2018-11-16 | 清华大学无锡应用技术研究院 | 多元化配置信息压缩方法及装置 |
CN105760784A (zh) * | 2016-02-22 | 2016-07-13 | 清华大学无锡应用技术研究院 | 多元化配置信息压缩方法及装置 |
CN105790809B (zh) * | 2016-02-24 | 2018-08-21 | 东南大学 | 面向mimo信道检测系统中粗粒度可重构阵列及路由结构 |
CN105790809A (zh) * | 2016-02-24 | 2016-07-20 | 东南大学 | 面向mimo信道检测系统中粗粒度可重构阵列及路由结构 |
CN105975251A (zh) * | 2016-05-19 | 2016-09-28 | 东南大学—无锡集成电路技术研究所 | 一种基于粗粒度可重构架构的des算法轮迭代系统及迭代方法 |
CN107402745B (zh) * | 2017-07-04 | 2020-05-22 | 清华大学 | 数据流图的映射方法及装置 |
CN107402745A (zh) * | 2017-07-04 | 2017-11-28 | 清华大学 | 数据流图的映射方法及装置 |
CN107241603A (zh) * | 2017-07-27 | 2017-10-10 | 许文远 | 一种多媒体编解码处理器 |
CN107506329B (zh) * | 2017-08-18 | 2018-06-19 | 浙江大学 | 一种自动支持循环迭代流水线的粗粒度可重构阵列及其配置方法 |
CN107506329A (zh) * | 2017-08-18 | 2017-12-22 | 浙江大学 | 一种自动支持循环迭代流水线的粗粒度可重构阵列及其配置方法 |
CN109672524A (zh) * | 2018-12-12 | 2019-04-23 | 东南大学 | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 |
CN109672524B (zh) * | 2018-12-12 | 2021-08-20 | 东南大学 | 基于粗粒度可重构架构的sm3算法轮迭代系统及迭代方法 |
CN112306500A (zh) * | 2020-11-30 | 2021-02-02 | 上海交通大学 | 一种针对粗粒度可重构结构的降低多类访存冲突编译方法 |
CN112306500B (zh) * | 2020-11-30 | 2022-06-07 | 上海交通大学 | 一种针对粗粒度可重构结构的降低多类访存冲突编译方法 |
US11144822B1 (en) | 2021-01-04 | 2021-10-12 | Edgecortix Pte. Ltd. | Neural network accelerator run-time reconfigurability |
Also Published As
Publication number | Publication date |
---|---|
CN102508816B (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508816B (zh) | 一种应用于粗粒度可重构阵列的配置方法 | |
Qin et al. | Sigma: A sparse and irregular gemm accelerator with flexible interconnects for dnn training | |
Rahman et al. | Graphpulse: An event-driven hardware accelerator for asynchronous graph processing | |
Valiant | A bridging model for multi-core computing | |
CN109284131B (zh) | 具有可编程优化的存储器-网络处理器 | |
Grigori et al. | Parallel symbolic factorization for sparse LU with static pivoting | |
Sterling et al. | Gilgamesh: A multithreaded processor-in-memory architecture for petaflops computing | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
JP2009512089A (ja) | データフローマシンにおけるデッドロックを回避するための方法 | |
Chen et al. | Flexminer: A pattern-aware accelerator for graph pattern mining | |
Mihhailov et al. | Parallel FPGA-based implementation of recursive sorting algorithms | |
EP4283475A2 (en) | Moving data in a memory and command for memory control | |
Wang et al. | A framework for distributed data-parallel execution in the Kepler scientific workflow system | |
JP2022548114A (ja) | ユーザ仕様に基づく再構成可能アーキテクチャ上でのオペレーション・ユニット・グラフの効率的な実行 | |
CN116627892B (zh) | 一种数据近存储计算方法、装置和存储介质 | |
Skliarova et al. | Recursion in reconfigurable computing: A survey of implementation approaches | |
Buck | A dynamic dataflow model suitable for efficient mixed hardware and software implementations of dsp applications | |
Amestoy et al. | PARASOL An integrated programming environment for parallel sparse matrix solvers | |
CN105608046A (zh) | 基于MapReduce编程模型的多核处理器架构 | |
Levine et al. | Efficient application representation for HASTE: hybrid architectures with a single, transformable executable | |
Kavi et al. | Concurrency, Synchronization, and Speculation—The Dataflow Way | |
Shee et al. | Architectural exploration of heterogeneous multiprocessor systems for JPEG | |
Ratto et al. | Multithread accelerators on FPGAs: a Dataflow-based Approach | |
Luo et al. | Improving parallel efficiency for asynchronous graph analytics using Gauss‐Seidel‐based matrix computation | |
Qiao | Customized Computing: Acceleration of Big-Data Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140507 Termination date: 20161115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |