用于配置可重构计算阵列的方法及其系统转让专利

申请号 : CN201810072695.2

文献号 : CN108228529B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘雷波朱敏魏少军

申请人 : 清华大学无锡应用技术研究院

摘要 :

本公开提供了一种用于配置可重构计算阵列的方法,该方法包括:确定存储体中的第一命令地址,其中,存储体为可重构计算阵列的专用存储设备,存储体存储有用于对可重构计算阵列进行配置的配置命令集合;以及控制存储体将第一命令地址处的第一配置命令发送给可重构计算阵列,其中,第一配置命令属于配置命令集合。本公开还提供了一种用于配置可重构计算阵列的系统。

权利要求 :

1.一种用于配置可重构计算阵列的方法,包括:

确定存储体中的第一命令地址,其中,所述存储体为可重构计算阵列的专用存储设备,所述存储体存储有用于对所述可重构计算阵列进行配置的配置命令集合,其中,确定存储体中的第一命令地址包括:读取由总线主设备配置的循环信息,其中,所述循环信息包括关于预先设定的至少一层循环体进行计数的信息;

基于所述循环信息,利用所述至少一层循环体进行计数,以得到第一计数值;以及根据所述第一计数值,确定所述第一命令地址;以及控制所述存储体将所述第一命令地址处的第一配置命令发送给所述可重构计算阵列,其中,所述第一配置命令属于所述配置命令集合。

2.根据权利要求1所述的方法,其中:

所述配置命令集合用于实现对所述可重构计算阵列的一次完整配置;以及所述存储体的位宽使得所述配置命令集合能够在一个时钟周期中被发送给所述可重构计算阵列,以实现在所述一个时钟周期中完成对所述可重构计算阵列的一次完整配置。

3.根据权利要求1所述的方法,其中:

所述配置命令集合中的配置命令是按照执行顺序存储在所述存储体中的;以及根据所述第一计数值,确定所述第一命令地址,包括:将所述第一计数值作为所述第一命令地址。

4.根据权利要求1所述的方法,其中:

所述配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在所述存储体中的;以及根据所述第一计数值,确定所述第一命令地址,包括:在查找表中查找与所述第一计数值对应的所述第一命令地址,所述查找表用于存储计数值与所述存储体中的地址之间的对应关系。

5.根据权利要求1至4中任一项所述的方法,其中:所述至少一层循环体包括:内层循环体和外层循环体,其中,所述内层循环体嵌套在所述外层循环体内;以及所述循环信息包括:所述内层循环体的起始点、结束点和循环次数,以及所述外层循环体的起始点、结束点和循环次数。

6.根据权利要求1至4中任一项所述的方法,其中,对所述存储体的写入或者修改操作是在第三方认证机构的授权下进行的。

7.一种用于配置可重构计算阵列的系统,包括:

确定模块,用于确定存储体中的第一命令地址,其中,所述存储体为可重构计算阵列的专用存储设备,所述存储体存储有用于对所述可重构计算阵列进行配置的配置命令集合,其中,所述确定模块包括:读取单元,用于读取由总线主设备配置的循环信息,其中,所述循环信息包括关于预先设定的至少一层循环体进行计数的信息;

计算单元,用于基于所述循环信息,利用所述至少一层循环体进行计数,以得到第一计数值;以及确定单元,用于根据所述第一计数值,确定所述第一命令地址;以及控制模块,用于控制所述存储体将所述第一命令地址处的第一配置命令发送给所述可重构计算阵列,其中,所述第一配置命令属于所述配置命令集合。

8.根据权利要求7所述的系统,其中:

所述配置命令集合用于实现对所述可重构计算阵列的一次完整配置;以及所述存储体的位宽使得所述配置命令集合能够在一个时钟周期中被发送给所述可重构计算阵列,以实现在所述一个时钟周期中完成对所述可重构计算阵列的一次完整配置。

9.根据权利要求7所述的系统,其中:

所述配置命令集合中的配置命令是按照执行顺序存储在所述存储体中的;以及所述确定单元还用于:将所述第一计数值作为所述第一命令地址。

10.根据权利要求7所述的系统,其中:

所述配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在所述存储体中的;以及所述确定单元还用于:在查找表中查找与所述第一计数值对应的所述第一命令地址,所述查找表用于存储计数值与所述存储体中的地址之间的对应关系。

11.根据权利要求7至10中任一项所述的系统,其中:所述至少一层循环体包括:内层循环体和外层循环体,其中,所述内层循环体嵌套在所述外层循环体内;以及所述循环信息包括:所述内层循环体的起始点、结束点和循环次数,以及所述外层循环体的起始点、结束点和循环次数。

12.根据权利要求7至10中任一项所述的系统,其中,对所述存储体的写入或者修改操作是在第三方认证机构的授权下进行的。

13.一种非易失性计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如权利要求1至6中任一项所述的方法。

说明书 :

用于配置可重构计算阵列的方法及其系统

技术领域

[0001] 本公开涉及一种用于配置可重构计算阵列的方法及其系统。

背景技术

[0002] 可重构计算阵列,又称为可重构计算电路,以其优越的可动态配置的灵活性在实际电路中应用越来越广泛。随着可重构计算阵列执行的计算任务越来越复杂,对其进行动态配置的数据也越来越多。那么,在将这些数据配置到可重构计算阵列时,需要较长的配置时间,这样不仅配置效率降低,而且也会严重影响可重构计算阵列的执行效率。

发明内容

[0003] 本公开的一个方面提供了一种用于配置可重构计算阵列的方法,包括:确定存储体中的第一命令地址,其中,上述存储体为可重构计算阵列的专用存储设备,上述存储体存储有用于对上述可重构计算阵列进行配置的配置命令集合;以及控制上述存储体将上述第一命令地址处的第一配置命令发送给上述可重构计算阵列,其中,上述第一配置命令属于上述配置命令集合。
[0004] 可选地,上述配置命令集合用于实现对上述可重构计算阵列的一次完整配置;以及上述存储体的位宽使得上述配置命令集合能够在一个时钟周期中被发送给上述可重构计算阵列,以实现在上述一个时钟周期中完成对上述可重构计算阵列的一次完整配置。
[0005] 可选地,确定存储体中的第一命令地址,包括:读取由总线主设备配置的循环信息,其中,上述循环信息包括关于预先设定的至少一层循环体进行计数的信息;基于上述循环信息,利用上述至少一层循环体进行计数,以得到第一计数值;以及根据上述第一计数值,确定上述第一命令地址。
[0006] 可选地,上述配置命令集合中的配置命令是按照执行顺序存储在上述存储体中的;以及根据上述第一计数值,确定上述第一命令地址,包括:将上述第一计数值作为上述第一命令地址。
[0007] 可选地,上述配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在上述存储体中的;以及根据上述第一计数值,确定上述第一命令地址,包括:在查找表中查找与上述第一计数值对应的上述第一命令地址,上述查找表用于存储计数值与上述存储体中的地址之间的对应关系。
[0008] 可选地,上述至少一层循环体包括:内层循环体和外层循环体,其中,上述内层循环体嵌套在上述外层循环体内;以及上述循环信息包括:上述内层循环体的起始点、结束点和循环次数,以及上述外层循环体的起始点、结束点和循环次数。
[0009] 可选地,对上述存储体的写入或者修改操作是在第三方认证机构的授权下进行的。
[0010] 本公开的另一个方面提供了一种用于配置可重构计算阵列的系统,包括:确定模块,用于确定存储体中的第一命令地址,其中,上述存储体为可重构计算阵列的专用存储设备,上述存储体存储有用于对上述可重构计算阵列进行配置的配置命令集合;以及控制模块,用于控制上述存储体将上述第一命令地址处的第一配置命令发送给上述可重构计算阵列,其中,上述第一配置命令属于上述配置命令集合。
[0011] 可选地,上述配置命令集合用于实现对上述可重构计算阵列的一次完整配置;以及上述存储体的位宽使得上述配置命令集合能够在一个时钟周期中被发送给上述可重构计算阵列,以实现在上述一个时钟周期中完成对上述可重构计算阵列的一次完整配置。
[0012] 可选地,上述确定模块包括:读取单元,用于读取由总线主设备配置的循环信息,其中,上述循环信息包括关于预先设定的至少一层循环体进行计数的信息;计算单元,用于基于上述循环信息,利用上述至少一层循环体进行计数,以得到第一计数值;以及确定单元,用于根据上述第一计数值,确定上述第一命令地址。
[0013] 可选地,上述配置命令集合中的配置命令是按照执行顺序存储在上述存储体中的;以及上述确定单元还用于:将上述第一计数值作为上述第一命令地址。
[0014] 可选地,上述配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在上述存储体中的;以及上述确定单元还用于:在查找表中查找与上述第一计数值对应的上述第一命令地址,上述查找表用于存储计数值与上述存储体中的地址之间的对应关系。
[0015] 可选地,上述至少一层循环体包括:内层循环体和外层循环体,其中,上述内层循环体嵌套在上述外层循环体内;以及上述循环信息包括:上述内层循环体的起始点、结束点和循环次数,以及上述外层循环体的起始点、结束点和循环次数。
[0016] 可选地,对上述存储体的写入或者修改操作是在第三方认证机构的授权下进行的。
[0017] 本公开的另一方面提供了一种非易失性计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现如所述的方法。
[0018] 本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现如上所述的方法。

附图说明

[0019] 为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
[0020] 图1示意性示出了根据本公开实施例的适于用于配置可重构计算阵列的方法及其系统的场景图;
[0021] 图2示意性示出了根据本公开实施例的用于配置可重构计算阵列的方法的流程图;
[0022] 图3示意性示出了根据本公开实施例的确定存储体中的第一命令地址的流程图;
[0023] 图4示意性示出了根据本公开实施例的具有两层循环体的循环控制方法的流程图;
[0024] 图5示意性示出了根据本公开实施例的用于配置可重构计算阵列的系统的框图;
[0025] 图6示意性示出了根据本公开实施例的确定模块的框图;以及
[0026] 图7示意性示出了根据本公开实施例的适用于配置可重构计算阵列的方法的系统的框图。

具体实施方式

[0027] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0028] 在此使用的术语仅仅是为了描述具体实施例,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
[0029] 在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0030] 附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
[0031] 因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
[0032] 在本公开实施例中,可重构计算阵列可以包括多个算子,即能够执行各种算术逻辑等运算的基本单元。例如,可重构计算阵列可以包括用于实现数学运算、查表运算、比特置换运算等的多个算子。可以理解的是,在本公开实施例中,在对可重构计算阵列进行配置时,实际上是对可重构计算阵列中的相应算子进行配置,以使得其完成期望的计算任务。
[0033] 本公开的实施例提供了一种用于配置可重构计算阵列的方法以及能够应用该方法的用于配置可重构计算阵列的系统。该方法包括确定存储体中的第一命令地址,其中,存储体为可重构计算阵列的专用存储设备,存储体存储有用于对可重构计算阵列进行配置的配置命令集合;以及控制存储体将第一命令地址处的第一配置命令发送给可重构计算阵列,其中,第一配置命令属于配置命令集合。
[0034] 图1示意性示出了本公开实施例的适于用于配置可重构计算阵列的方法及其系统的场景图。
[0035] 如图1所示,该应用场景包括总线主设备110和可重构处理系统120。可重构处理系统120可以包括可重构计算阵列的控制单元121、可重构计算阵列122以及存储体123。
[0036] 总线主设备110可以通过总线与可重构处理系统120相连接。在一个实施例中,总线主设备110可以利用本领域已知的各种通用或者专用处理器来实现,例如,中央处理单元(Central Processing Unit,CPU)。
[0037] 总线主设备110可以对可重构处理系统120进行控制,例如,调度分配需要可重构处理系统120执行的计算任务等。
[0038] 控制单元121可以对可重构计算阵列122进行配置以及其它相关的控制功能,以使得其执行相应的计算任务。例如,控制单元121可以获取总线主设备110的指示信息,例如,该指示信息可以指示可重构计算阵列需要执行的计算任务等。然后,控制单元121可以对可重构计算阵列122进行相应的配置。
[0039] 如下文将详细描述的,在本公开实施例中,存储体123可以是可重构计算阵列122专用的存储设备,其可以存储用于对可重构计算阵列122进行配置的配置命令。这样,控制单元121可以利用存储体123中存储的配置命令来对可重构计算阵列122进行配置。
[0040] 在一个实施例中,控制单元121可以是微控制单元(Microcontroller Unit,MCU),其可以利用本领域已知的各种处理器来实现。
[0041] 图2示意性示出了根据本公开实施例的用于配置可重构计算阵列的方法的流程图。例如,图2所示的方法可以由可重构计算阵列的控制单元来实现,比如,图1所示的总线主设备110或者控制单元121。如图2所示,该方法包括操作S210和S220:
[0042] 在操作S210,确定存储体中的第一命令地址,其中,存储体为可重构计算阵列的专用存储设备,存储体存储有用于对可重构计算阵列进行配置的配置命令集合。
[0043] 在操作S220,控制存储体将第一命令地址处的第一配置命令发送给可重构计算阵列,其中,第一配置命令属于配置命令集合。
[0044] 需要说明的是,此处的存储体不同于现有的内存(例如,在图1中的总线主设备为CPU的情况下,与CPU相连接的内存)。该存储体是专门设置的由可重构计算阵列专用的存储设备。例如,可以通过高速专线(比如通过硬连接的方式)将存储体和可重构计算阵列两者连接在一起。存储体可以存储有用于对可重构计算阵列进行配置的配置命令。例如,可以根据实际需要,预先将相应的配置命令存储在该存储体中。
[0045] 例如,对可重构计算阵列进行配置的配置流程如下:控制单元可以确定当前所需要的配置命令的存储地址,即第一命令地址,进一步,控制单元可以将确定的第一命令地址发送给存储体,使得存储体能够基于该地址,通过前述的专线将相应的配置命令发送给可重构计算阵列,以对可重构计算阵列进行配置。例如,第一命令地址可以作为存储体的输入,而存储体可以基于该输入,将该地址处的配置命令输出给可重构计算阵列。
[0046] 可以理解的是,上述存储体实际上是命令池,该存储体可以利用所已知的各种合适的存储器来实现。
[0047] 如前所述,可重构计算阵列(又称为可重构计算电路)以其优越的灵活性在实际电路中应用越来越广泛,然而,随着可重构计算阵列需要执行的计算任务的复杂度增加,在对可重构计算阵列进行配置时可能会有大量的配置数据(又称为配置命令)。通常在配置时,会将配置命令存储在与总线相连接的内存中,总线主设备通过总线将配置命令传送给可重构处理系统,然后由可重构计算阵列的控制单元配置到可重构计算阵列。这样,会导致可重构计算阵列的配置时间很长,配置效率低,也会严重影响执行效率。此外,这种方式也会长时间占用总线主设备以及总线,严重影响总线主设备的处理性能和效率。
[0048] 鉴于此,在本公开实施例中,可以将配置命令存储在可重构计算阵列专用的存储体中。在一个实施例中,可以将配置命令从总线主设备的内存导入该存储体中;在其它实施例中,可以直接将配置命令存储在存储体中。这样,在对可重构计算阵列进行配置时,能够将配置命令直接从存储体输出至可重构计算阵列,而无需由总线主设备通过总线传送相应的配置命令,由此能够有效地缩短可重构阵列的配置时间,使得一次配置能够在很短的时间内完成,从而能够提高执行效率。此外,由于不再长时间占用总线主设备及主线,也能够极大地提高总线主设备的处理性能和效率。
[0049] 可见,通过本公开实施例,通过利用可重构计算阵列专用的存储体来存储以及输出可重构计算阵列的配置命令,因而能够达到缩短可重构计算阵列的配置时间的目的,提高其配置效率以及执行效率。
[0050] 可选地,配置命令可以是预先存储在存储体中的。例如,可以根据实际需求,将用于实现可重构计算阵列进行配置的部分或者全部配置命令预先存储在存储体中。比如,可以将用于实现对可重构计算阵列进行一次或多次完整配置的配置命令预先存储在存储体中。
[0051] 作为一种可选的实施例,上述配置命令集合用于实现对可重构计算阵列的一次完整配置;以及存储体的位宽使得配置命令集合能够在一个时钟周期中被发送给可重构计算阵列,以实现在一个时钟周期中完成对可重构计算阵列的一次完整配置。
[0052] 也即,配置命令集合中可以包含实现对可重构计算阵列的一次完整配置所需要的全部配置命令。
[0053] 例如,为了实现在一个时钟周期中完成对可重构计算阵列的一次完整配置,存储体的位宽可以是大于或者等于某一阈值的位宽。该阈值可以根据可重构计算阵列的配置命令大小来设置,或者可以根据实际需求来设置。
[0054] 如前所述,在现有的可重构计算阵列的配置方式中,配置命令被存储在总线主设备的内存中,当需要配置可重构计算阵列时,总线主设备通过系统总线读取内存中的配置命令,然后再通过系统总线将读取的配置命令写入到可重构计算阵列中。系统总线一般有位宽限制,而且存在总线竞争、协议开销等,所以可重构计算阵列的一次配置往往会花费较长的时间才能完成。
[0055] 然而,在本公开实施例中,利用一个专用的位宽很宽的存储体来存储配置命令,而且该存储体和可重构计算阵列之间的总线是私有的,即供存储体和可重构计算阵列专用的。比如,存储体和可重构计算阵列之间可以通过大带宽总线接口进行连接。这样,在对可重构计算阵列进行配置时,存储体中的配置命令可以在一个时钟周期内输出到可重构计算阵列,从而能够极大地提高配置效率以及执行效率。
[0056] 另外,在现有技术中,可重构计算阵列的一套配置命令通常会占用内存的多个存储单元。而本公开实施例中的存储体能够存储用于可重构计算阵列的一次完整配置的配置命令,这样能够进一步提高可重构计算阵列的配置效率。
[0057] 本公开还提供了一种配置命令循环控制方法,能够自动地按照配置要求将存储体中的配置命令发送给可重构计算阵列。
[0058] 下面参考图3,结合具体实施例对图2所示的方法中的步骤S210做进一步说明。
[0059] 图3示意性示出了根据本公开实施例的确定存储体中的第一命令地址的流程图。例如,图3的方法可以由可重构计算阵列的控制单元(例如,图1中的控制单元121)来实现。
如图3所示,该方法包括操作S211~S213:
[0060] 在操作S211,读取由总线主设备配置的循环信息,其中,循环信息包括关于预先设定的至少一层循环体进行计数的信息;
[0061] 在操作S212,基于循环信息,利用至少一层循环体进行计数,以得到第一计数值;以及
[0062] 在操作S213,根据第一计数值,确定第一命令地址。
[0063] 例如,在操作S211中,总线主设备可以将循环信息写入控制寄存器中,然后可重构计算阵列的控制单元(例如,图1中的控制单元121)可以从控制寄存器中读取该循环信息。
[0064] 控制单元在读取循环信息之后,可以根据相应的循环体进行计数,进而根据计数值确定存储体中对应的命令地址。其中,计数值可以直接作为命令地址使用,或者计数值不直接作为命令地址使用,但是可以与命令地址之间具有一定的对应关系。关于计数值是否直接作为命令地址,可以根据实际需要来设定。例如,可以根据命令地址在存储体中的存储顺序来设置计数值是否直接作为命令地址而使用。
[0065] 可选地,上述循环体可以包括一层或者多层,在此不做限定。优选地,可以设置两层循环体,即内层循环体和外层循环体。两层循环体可以适用于目前的大部分算法,在实现上简单高效。
[0066] 通过本公开实施例,通过读取由总线主设备配置的循环信息,并基于循环信息,利用至少一层循环体进行计数,以得到第一计数值,进而根据第一计数值,确定第一命令地址,可以简化命令地址的确定过程,能够简单快速确定命令地址。此外,总线主设备仅需要配置简单的循环信息,而不再被长时间占用,从而也能够提高总线主设备的处理性能。
[0067] 作为一种可选的实施例,配置命令集合中的配置命令是按照执行顺序存储在存储体中的;以及根据第一计数值,确定第一命令地址,包括:将第一计数值作为第一命令地址。
[0068] 作为一种可选的实施例,配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在存储体中的;以及根据第一计数值,确定第一命令地址,包括:在查找表中查找与第一计数值对应的第一命令地址,查找表用于存储计数值与存储体中的地址之间的对应关系。
[0069] 在本公开实施例中,由于配置命令既可以顺序存储在存储体中,也可以乱序存储在存储体中,因而从存储体中读取配置命令至少有两种方式:一种是递增方式,一个是查找表方式。
[0070] 在递增方式中,可以将计数值直接作为存储体的命令地址来索引出可重构计算阵列的配置命令。
[0071] 在查找表方式中,可以将计数值作为一个查找表的输入信号,通过查找表查出存储体的命令地址,查找表的内容可以由总线主设备(如CPU)写入。
[0072] 递增方式可以适用于存储体中的命令按照配置顺序来存储的情况;查找表方式可以适用于存储体中的命令乱序存放的情况。
[0073] 通过本公开实施例,基于存储体中的配置命令的不同存储顺序,可以灵活地设置计数值与命令地址的对应关系,例如,如果配置命令是顺序存储的,则可以直接将计数值作为命令地址;如果配置命令是乱序存储的,则可以直接将计数值作为查找表的输入信号,将查找表基于计数值的输出信号作为命令地址,从而能够根据实际需求灵活地决定配置命令存储方式。
[0074] 作为一种可选的实施例,至少一层循环体可以包括:内层循环体和外层循环体,其中,内层循环体嵌套在外层循环体内;以及循环信息可以包括:内层循环体的起始点、结束点和循环次数,以及外层循环体的起始点、结束点和循环次数。
[0075] 例如,每层循环体的起始点、结束点和循环次数可以是由总线主设备在控制寄存器中配置的。
[0076] 在一个实施例中,上述循环体可以通过硬件或者软件计数器来实现。为了便于本领域技术人员更好地理解本公开实施例,下面将结合具体例子进行描述。应当理解的是,该例子并不对本公开实施例的范围造成任何限制。图4示出了根据本公开实施例的具有两层循环体的循环控制方法的流程图。
[0077] 如图4所示,可以设置计数器。假设总线主设备将外层循环体的起始点设置为L2_startpiont,结束点为L2_endpoint,以及循环次数为L2_Round cnt。此外,假设总线主设备将内层循环体的起始点设置为L1_startpoint,结束点为L1_endpoint,以及循环次数为L1_Round cnt。
[0078] 该计数器在外层循环体的起始点L2_startpiont开始计数,当计数到内层循环体的起始点L1_startpoint时,继续向下计数;当计数到内层循环体的结束点L1_endpoint时,如果内层循环体的循环次数不为0(即,L1_Round cnt不为0),则计数器重新跳转到内层循环体的起始点L1_startpoint,此时内层循环体的一次循环结束。然后计数器从内层循环体的起始点L1_startpoint重新计数。当内层循环体的循环次数计数到0,且计数器计数到内层循环的结束点L1_endpoint时,会继续向下计数,当计数器计数到外层循环的结束点L2_endpoint时,外层循环体的一次循环结束。如果外层循环体的循环次数不为0(即,L2_Round cnt不为0),则计数器重新跳回外层循环的起始点L2_startpoint开始计数。如果外层循环体的循环次数计数到0且计数器计数到外层循环体的结束点L2_endpoint时,本次循环控制结束。
[0079] 如上所述,从存储体中读取配置命令至少有两种方式:一种是递增方式,一个是查找表方式。在递增方式中,可以将计数值直接作为存储体的命令地址来索引出可重构计算阵列的配置命令。在查找表方式中,可以将计数值作为一个查找表的输入信号,通过查找表查出存储体的命令地址。
[0080] 具体选择何种方式,可以通过如图4中所示的模式命令来指示。该模式命令可以由总线主设备发出,或者由可重构处理系统中的控制单元(例如,图1中的控制单元121)来自主地决定。
[0081] 然后,数据选择器(即,图4所示的MUX)可以根据模式命令,确定是向存储体输出查找表中得到的值还是输出计数值。存储体可以根据MUX输出的结果,来将相应位置处的配置命令输出到可重构计算阵列。
[0082] 可以理解的是,上述计数器、数据选择器、查找表等可以在如图1所示的控制单元121内部实现。
[0083] 可以理解的是,对于每层循环体而言,循环次数可以为0。也就是说,每层的循环次数可以是自然数。在各层循环体次数均为0的情况下,也可以采用上述递增方式或者查找表方式来确定相应的命令地址。本公开实施例对此不作限制。
[0084] 通过本公开实施例,可以使循环体包括两层,即内层循环体和外层循环体,这种方式可以适用于目前的大部分算法,在实现上简单高效。
[0085] 作为一种可选的实施例,对上述存储体的写入或者修改操作是在第三方认证机构的授权下进行的。
[0086] 为了确保存储体的安全性,存储体可以由第三方认证机构授权写入。例如,在普通用户模式下,无法访问或修改存储体的内容,而在第三方认证机构的授权下,可以进行这样的操作。例如,总线主设备可以在第三方认证机构的授权下,对存储体进行写入或者修改操作。这是因为,如果在没有任何安全检查的情况下直接在存储体中写入或者修改配置命令,可能会被间谍软件或者硬件木马等窃取或者篡改配置命令。这样,通过该实施例,可以提高存储体中配置命令的安全性,相应地能够确保可重构计算阵列执行的算法的安全性。
[0087] 图5示意性示出了根据本公开实施例的用于配置可重构计算阵列的系统的框图。例如,图5所示的系统可以由可重构计算阵列的控制单元来实现,比如,图1所示的控制单元
121。
[0088] 该用于配置可重构计算阵列的系统400包括:确定模块410和控制模块420。确定模块410用于确定存储体中的第一命令地址,其中,存储体为可重构计算阵列的专用存储设备,存储体存储有用于对可重构计算阵列进行配置的配置命令集合;以及控制模块420用于控制存储体将第一命令地址处的第一配置命令发送给可重构计算阵列,其中,第一配置命令属于配置命令集合。该用于配置可重构计算阵列的系统400可以执行上面参考图2~图4描述的方法,以实现对可重构计算阵列的配置。为了避免重复,此处不再赘述。
[0089] 在本公开实施例中,可以将配置命令存储在可重构计算阵列专用的存储体中。这样,在对可重构计算阵列进行配置时,能够将配置命令直接从存储体输出至可重构计算阵列,而无需由总线主设备通过总线传送相应的配置命令,由此能够有效地缩短可重构阵列的配置时间,使一次配置能够在很短的时间内完成,从而能够提高执行效率。此外,由于不再长时间占用总线主设备及主线,也能够极大地提高总线主设备的处理性能和效率。
[0090] 作为一种可选的实施例,配置命令集合用于实现对可重构计算阵列的一次完整配置;以及存储体的位宽使得配置命令集合能够在一个时钟周期中被发送给可重构计算阵列,以实现在一个时钟周期中完成对可重构计算阵列的一次完整配置。
[0091] 在本公开实施例中,利用一个专用的位宽很宽的存储体来存储配置命令,而且该存储体和可重构计算阵列之间的总线是私有的,即供存储体和可重构计算阵列专用的。比如,存储体和可重构计算阵列之间可以通过大带宽总线接口进行连接。这样,在对可重构计算阵列进行配置时,存储体中的配置命令可以在一个时钟周期内输出到可重构计算阵列,从而能够极大地提高配置效率以及执行效率。
[0092] 另外,在现有技术中,可重构计算阵列的一套配置命令通常会占用内存的多个存储单元。而本公开实施例中的存储体能够存储用于可重构计算阵列的一次完整配置的配置命令,这样能够进一步提高可重构计算阵列的配置效率。
[0093] 图6示意性示出了根据本公开实施例的确定模块的框图。如图6所示,确定模块410包括:读取单元411、计算单元412和确定单元413。读取单元411用于读取由总线主设备配置的循环信息,其中,循环信息包括关于预先设定的至少一层循环体进行计数的信息;计算单元412用于基于循环信息,利用至少一层循环体进行计数,以得到第一计数值;以及确定单元413用于根据第一计数值,确定第一命令地址。该确定模块410可以执行上面参考图3描述的方法,以实现对可重构计算阵列的配置。为了避免重复,此处不再赘述。
[0094] 作为一种可选的实施例,配置命令集合中的配置命令是按照执行顺序存储在存储体中的;以及确定单元413还用于:将第一计数值作为第一命令地址。
[0095] 作为一种可选的实施例,配置命令集合中的配置命令是按照与执行顺序不同的顺序存储在存储体中的;以及确定单元413还用于:在查找表中查找与第一计数值对应的第一命令地址,查找表用于存储计数值与存储体中的地址之间的对应关系。
[0096] 作为一种可选的实施例,至少一层循环体包括:内层循环体和外层循环体,其中,内层循环体嵌套在外层循环体内;以及循环信息包括:内层循环体的起始点、结束点和循环次数,以及外层循环体的起始点、结束点和循环次数。
[0097] 例如,每层循环体的起始点、结束点和循环次数可以是由总线主设备在控制寄存器中配置的。
[0098] 通过本公开实施例,可以使循环体包括两层,即内层循环体和外层循环体,这种方式可以适用于目前的大部分算法,在实现上简单高效。
[0099] 作为一种可选的实施例,对存储体的写入或者修改操作是在第三方认证机构的授权下进行的。
[0100] 为了确保存储体的安全性,存储体可以由第三方认证机构授权写入。例如,在普通用户模式下,无法访问或修改存储体的内容,而在第三方认证机构的授权下,可以进行这样的操作。例如,总线主设备可以在第三方认证机构的授权下,对存储体进行写入或者修改操作。这是因为,如果在没有任何安全检查的情况下直接在存储体中写入或者修改配置命令,可能会被间谍软件或者硬件木马等窃取或者篡改配置命令。这样,通过该实施例,可以提高存储体中配置命令的安全性,相应地能够确保可重构计算阵列执行的算法的安全性。
[0101] 可以理解的是,确定模块410和控制模块420可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,确定模块410和控制模块420中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,确定模块410和控制模块420的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。
[0102] 本公开的另一方面提供了一种非易失性计算机可读存储介质,存储有计算机可执行指令,上述指令在被执行时用于实现方法部分实施例所述的方法。
[0103] 本公开的另一方面提供了一种计算机程序,上述计算机程序包括计算机可执行指令,上述指令在被执行时用于实现方法部分实施例所述的方法。
[0104] 图7示意性示出了根据本公开实施例的适用于配置可重构计算阵列的方法的系统的框图。
[0105] 如图7所示,系统500包括处理器510、存储器520。该系统500可以执行上面参考图2~图4描述的方法,以实现可重构计算阵列的配置。
[0106] 具体地,处理器510例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器510还可以包括用于缓存用途的板载存储器。处理器510可以是用于执行参考图2~图4描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。例如,处理器510可以实现图1中的控制单元的各种功能。
[0107] 存储器520是计算机可读存储介质,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
[0108] 存储器520可以包括计算机程序521,该计算机程序521可以包括代码/计算机可执行指令,其在由处理器510执行时使得处理器510执行例如上面结合图2~图4所描述的方法流程及其任何变形。
[0109] 计算机程序521可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序521中的代码可以包括一个或多个程序模块,例如包括521A、模块521B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器510执行时,使得处理器510可以执行例如上面结合图2~图4所描述的方法流程及其任何变形。
[0110] 根据本发明的实施例,确定模块410和控制模块420中的至少一个可以实现为参考图7描述的计算机程序模块,其在被处理器510执行时,可以实现上面描述的相应操作。
[0111] 本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0112] 尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。