用于可重构处理系统的配置的方法和装置与流程

文档序号:13661281阅读:252来源:国知局
用于可重构处理系统的配置的方法和装置与流程

本公开涉及一种用于可重构处理系统的配置的方法和装置。



背景技术:

可重构处理系统既具有专用集成电路(applicationspecificintegratedcircuit,asic)的高性能和高速度,又具有微处理器的高度通用性,并且具有强大的可重构功能,在各个领域具有广泛的应用前景,因此成为热门的研究方向之一。

然而,可重构处理系统的编程配置往往非常复杂,为实现任务需求,通常需要人工分析可重构处理系统中的各个硬件单元,手动配置这些单元的属性和连接关系等。这不仅要求技术人员具有很强的专业知识,而且操作效率低,还容易出错。



技术实现要素:

本公开的一个方面提供了一种用于可重构处理系统的配置的方法。所述方法包括:确定任务信息中的至少一个功能元素,其中,所述任务信息用于指示所述可重构处理系统要执行的任务,所述至少一个功能元素用于共同指示所述任务中的数据流向;将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,以生成所述可重构处理系统的布线信息,其中,所述布线信息用于表示所述至少一个硬件单元之间的连接关系,所述连接关系与所述数据流向相对应;至少根据所述布线信息生成配置信息,所述配置信息用于配置所述可重构处理系统执行所述任务。

可选地,所述任务信息为与所述任务对应的程序代码;或者,所述任务信息为有向流程图,所述有向流程图是基于与所述任务对应的程序代码而生成的,所述有向流程图用于反映所述任务的运行过程。

可选地,所述至少一个功能元素包括以下各项中的至少一项:输入、输出以及函数运算。所述将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,包括:在所述至少一个功能元素包括所述输入时,将所述输入映射到所述可重构处理系统中的输入单元;在所述至少一个功能元素包括所述输出时,将所述输出映射到所述可重构处理系统中的输出单元;在所述至少一个功能元素包括所述函数运算时,将所述函数运算映射到所述可重构处理系统中的至少一个算子。

可选地,将所述函数运算映射到所述可重构处理系统中的至少一个算子,包括:确定所述函数运算所调用的运算表达式,以及将所述运算表达式映射到所述至少一个算子,使得所述运算表达式中的每个运算符功能由一个算子来执行,所述运算表达式的运算顺序与所述至少一个算子之间的连接关系相对应。

可选地,所述输入单元和所述输出单元中的至少一个采用先入先出算法。

可选地,所述至少一个功能元素还包括以下各项中的至少一项:常量以及变量。所述将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,包括:在所述至少一个功能元素包括所述常量时,将所述常量映射到所述可重构处理系统中的存储器模块中;在所述至少一个功能元素包括所述变量时,将所述变量映射到所述存储器单元中。

可选地,根据所述任务信息中与所述至少一个功能元素相关联的参数设置元素,生成设置信息,所述设置信息用于指示所述至少一个硬件单元的设置参数。所述至少根据所述布线信息生成配置信息,包括根据所述布线信息和所述设置信息,生成所述配置信息。

可选地,所述布线信息是以至少一张可视图的形式来呈现的。

本公开的另一方面提供了一种用于可重构处理系统的配置的装置,包括确定模块、映射模块和配置信息生成模块。其中确定模块用于确定任务信息中的至少一个功能元素,其中,所述任务信息用于指示所述可重构处理系统要执行的任务,所述至少一个功能元素用于共同指示所述任务中的数据流向。映射模块用于将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,以生成所述可重构处理系统的布线信息,其中,所述布线信息用于表示所述至少一个硬件单元之间的连接关系,所述连接关系与所述数据流向相对应。配置信息生成模块用于至少根据所述布线信息生成配置信息,所述配置信息用于配置所述可重构处理系统执行所述任务。

可选地,所述任务信息为与所述任务对应的程序代码;或者,所述任务信息为有向流程图,所述有向流程图是基于与所述任务对应的程序代码而生成的,所述有向流程图用于反映所述任务的运行过程。

可选地,所述至少一个功能元素包括以下各项中的至少一项:输入、输出以及函数运算。所述映射模块将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,包括:在所述至少一个功能元素包括所述输入时,将所述输入映射到所述可重构处理系统中的输入单元;在所述至少一个功能元素包括所述输出时,将所述输出映射到所述可重构处理系统中的输出单元;在所述至少一个功能元素包括所述函数运算时,将所述函数运算映射到所述可重构处理系统中的至少一个算子。

可选地,将所述函数运算映射到所述可重构处理系统中的至少一个算子,包括:确定所述函数运算所调用的运算表达式,以及将所述运算表达式映射到所述至少一个算子,使得所述运算表达式中的每个运算符功能由一个算子来执行,所述运算表达式的运算顺序与所述至少一个算子之间的连接关系相对应。

可选地,所述输入单元和所述输出单元中的至少一个采用先入先出算法。

可选地,所述至少一个功能元素还包括以下各项中的至少一项:常量以及变量。所述映射模块将所述至少一个功能元素分别映射到所述可重构处理系统中的至少一个硬件单元,还包括:在所述至少一个功能元素包括所述常量时,将所述常量映射到所述可重构处理系统中的存储器模块中;在所述至少一个功能元素包括所述变量时,将所述变量映射到所述存储器单元中。

可选地,所述装置还包括设置信息生成模块。设置信息生成模块用于根据所述任务信息中与所述至少一个功能元素相关联的参数设置元素,生成设置信息,所述设置信息用于指示所述至少一个硬件单元的设置参数。所述配置信息生成模块还用于根据所述布线信息和所述设置信息,生成所述配置信息。

可选地,所述布线信息是以至少一张可视图的形式来呈现的。

本公开的另一方面提供了一种用于可重构处理系统的配置的装置,包括一个或多个处理器,以及一个或多个存储器。该一个或多个存储器用于存储一个或多个程序。其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的用于可重构处理系统的配置的方法。

本公开实施例还提供了一种计算机可读存储介质,其上存储有指令,所述指令在由处理器执行时使得所述处理器执行上述方法中的各个操作。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开实施例的用于可重构处理系统的配置的方法和装置的应用场景的一个例子;

图2示意性示出了根据本公开实施例的用于可重构处理系统的配置的方法的流程图;

图3示意性示出了根据本公开另一实施例的用于可重构处理系统的配置的方法的流程图;

图4a示意性示出了根据本公开一个实施例的有向流程图中的功能元素的例子;

图4b示意性示出了根据本公开实施例的md5算法的部分过程的有向流程图的示意图;

图5示意性示出了根据公开实施例的用于可重构处理系统的配置的方法中将输入映射到ififo寄存器单元的示例;

图6示意性示出了根据本公开实施例的md5算法中将常量映射到mem单元的示例;

图7示意性示出了根据本公开实施例的md5算法中将变量映射到mem单元的示例;

图8示意性示出了根据公开实施例的用于可重构处理系统的配置的方法中将一函数运算映射到算子的示例;

图9示意性示出了根据本公开实施例的md5算法中将部分函数运算映射到算子的示例;

图10a和图10b示意性示出了根据本公开实施例的以可视图方式呈现的布线信息的效果图;

图11示意性示出了根据本公开实施例的用于可重构处理系统的配置的装置的方框图;以及

图12示意性示出了根据本公开另一实施例的用于可重构处理系统的配置的装置的方框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

可重构处理系统是一种新生的处理器架构,其通常可以具有可重构计算阵列的形式。可重构计算阵列可以包括多个算术逻辑单元(也可以称为算子)。算术逻辑单元可以实现多种算术逻辑等功能,因此,通过动态地配置这些算术逻辑单元(例如,动态地改变算术逻辑单元之间的互联关系等),使得可重构处理系统能够灵活地实现各种算法功能,而且利用硬件运算电路也能够极大地提高运算性能。

除了算子以外,可重构计算阵列还可以包括输入单元、输出单元、存储器单元等。例如,输入单元可以用于接收来自外部的输入等,输出单元可以用于输出处理结果等,存储器单元可以用于存储与执行计算任务相关的数据或者信息等。

为了实现对可重构处理系统的配置,需要配置可重构计算阵列中的相关硬件单元的属性以及它们之间的布线,得到可重构计算阵列的配置信息,然后基于配置信息来配置可重构计算阵列完成相应的计算任务。目前主要依赖于手动方式完成对可重构计算阵列中的硬件单元的配置,这种方式不仅对技术人员的专业知识要求高,而且效率低下,容易出错。

鉴于此,本公开的各个实施例提供了一种用于可重构处理系统的配置的方法和装置。该方法包括确定任务信息中的至少一个功能元素,其中,该任务信息用于指示该可重构处理系统要执行的任务,该至少一个功能元素用于共同指示该任务中的数据流向;将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,以生成该可重构处理系统的布线信息,其中,该布线信息用于表示该至少一个硬件单元之间的连接关系,该连接关系与该数据流向相对应;至少根据该布线信息生成配置信息,该配置信息用于配置该可重构处理系统执行该任务。

根据本公开的实施例,该用于可重构处理系统的配置的方法和装置能够根据该任务信息,通过该任务信息中的至少一个功能元素与该可重构处理系统中的硬件单元的映射,自动生成该可重构处理系统的配置信息,从而可以根据该配置信息来配置该可重构处理系统以执行该任务。这样,无需人工分析各个硬件单元以及手动布线,能够极大地提高获得可重构处理系统的布线以及配置信息的效率,并且减小甚至消除出错率。

图1示意性示出了根据本公开实施例的用于可重构处理系统的配置的方法和装置的应用场景的一个例子。

如图1所示,该应用场景包括计算设备110和显示设备120。显示设备120可以连接到计算设备110上。

计算设备110可以用于执行根据本公开实施例所描述的方法的各个方面。

显示设备120作为人机交互界面,可以用于显示根据本公开实施例的用于可重构处理系统的配置的方法中生成的该可重构阵列系统的布线信息的可视图等。

可以理解,该计算设备110和显示设备120可以是如图1所示的分体式结构,也可是至少部分集成一起的结构。图1所示的应用场景可以是能够实现本公开实施例的技术方案的各种合适的设备,例如台式计算机、笔记本计算机、手机、平板设备等。另外,虽然这里示出了一个显示设备120,但本公开的实施例可以应用于多个显示设备的情况。

根据本公开实施例的用于可重构处理系统的配置的方法可以应用于该计算设备110中。例如,根据本公开实施例的用于可重构处理系统的配置的装置可以位于该计算设备110中。

图2示意性示出了根据本公开的实施例的用于可重构处理系统的配置的方法的流程图。

如图2所示,该方法包括操作s201~s203。

在操作s201,确定任务信息中的至少一个功能元素。其中,该任务信息用于指示该可重构处理系统要执行的任务,该至少一个功能元素用于共同指示该任务中的数据流向。

具体地,该可重构处理系统要执行的任务可以是各种数据处理任务或者非数据处理任务。例如,该任务可以是各种加解密任务,例如md5(messagedigestalgorithm5,消息摘要算法5)、sm3、sha256(securehashalgorithm256,安全哈希算法256)之类的哈希算法,sm4、des(dataencryptionstandard,数据加密标准)以及高级加密标准(advancedencryptionstandard,aes)之类的分组算法等。再例如,该任务还可以是采用各种图像处理算法的图像处理任务等。

该任务信息可以是该可重构处理系统要执行的任务的数据信息,例如反映该任务的执行逻辑的程序代码、数据表、或者流程图等。

该至少一个功能元素可以是该任务执行过程中的具有独立功能、能够独立处理数据的元素,例如输入、输出、数据运算、条件判断等。

对于该至少一个功能元素中的任意一个功能元素,可能需要从其他功能元素(如果有的话)获取数据、和/或在对该数据进行处理后可能需要将处理后的数据输出至另外的功能元素(如果有的话)。从而,数据在该任意一个功能元素的输入和/或输出过程指示出了该任务中数据在该任意一个功能元素的流向。

将该至少一个功能元素中的所有的功能元素的数据流向汇总,就能够共同指示该任务中的数据流向。

在操作s202,将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,以生成该可重构处理系统的布线信息。其中,该布线信息用于表示该至少一个硬件单元之间的连接关系,该连接关系与该数据流向相对应。

具体地,对于将某一功能元素映射到对应的硬件单元而言,实际上是确定可重构处理系统中能够执行该功能元素的功能的硬件单元。

例如,当该至少一个功能元素中包括输入时,可以将该输入元素映射到该可重构处理系统中的具有输入功能的硬件单元,比如输入单元。该输入单元可以例如是输入先入先出(inputfirstinfirstout,ififo)寄存器单元。通常,ififo寄存器单元可以具有一定的深度和宽度,ififo寄存器单元能够存储的数据量可以等于其深度乘以宽度。例如,ififo寄存器单元的宽度是128比特,深度是10比特,那么该ififo寄存器单元可以存储1280比特的数据。

另外,在本公开实施例中,可以是将该输入元素映射到一个输入先入先出寄存器,还可以是根据该输入元素中的数据量大小,映射到多个先入先出寄存器。

由于该至少一个功能元素用于共同指示该任务中的数据流向,那么将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,然后按照该至少一个功能元素中的各功能元素之间的数据流向关系,相应地布置可重构阵列系统中的至少一个硬件单元中的各硬件单元之间的连接关系,从而就可以生成该可重构阵列系统的布线信息。

即,该布线信息可以用于表示该至少一个硬件单元之间的连接关系,该连接关系与该任务的数据流向相对应。

在操作s203,至少根据该布线信息生成配置信息。该配置信息用于配置该可重构处理系统执行该任务。

具体地,对于一些简单的任务,例如进行数据缓存、简单运算、或者数据交换等任务,可以仅通过该布线信息生成配置信息来配置该可重构阵列系统。从而,配置后的可重构处理系统就可以执行该任务。

对于另一些复杂的任务,配置信息的生成除了根据该布线信息获得该至少一个硬件单元之间的连接关系外,还可能需要其他一些信息(例如对该可重构处理系统中的至少一个硬件单元的内部参数进行设置等)。具体情况根据实际需要而定。

根据本公开的实施例,通过任务信息中的至少一个功能元素与该可重构处理系统中的硬件单元的映射,自动生成该可重构处理系统的硬件单元的布线信息,从而进一步生成用于对可重构处理系统的配置信息。这样,无需人工分析各个硬件单元以及手动布线,能够极大地提高获得可重构处理系统的布线以及配置信息的效率,并且减小甚至消除出错率。

根据本公开的实施例,该任务信息可以为与该任务对应的程序代码,或者,该任务信息可以为有向流程图,该有向流程图是基于与该任务对应的程序代码而生成的,该有向流程图用于反映该任务的运行过程。

根据本公开的实施例,当该任务信息为与该任务对应的程序代码时,在操作s201中确定任务信息中的至少一个功能元素,可以是通过解析该程序代码获得其中的各个功能元素,例如输入、常量、变量、函数运算、和/或输出等。

然后,在操作s202中将解析得到的各个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,以生成该可重构处理系统的布线信息。

最后,在操作s203中获得执行该任务对应的可重构处理系统的配置信息。

根据本公开的实施例,当该任务信息为该任务的有向流程图时,由于该有向流程图是基于与该任务对应的程序代码而生成的,在操作s201中从该有向流程图中解析得到的功能元素与该任务的程序代码相类似。然后,经过操作s202和操作s203,最终获得执行该任务对应的可重构处理系统的配置信息。

该任务信息的有向流程图是基于与该任务对应的程序代码而生成的,具体可以是例如人工根据该程序代码在相应的软件上绘制而得的,或者通过一定的解析方法和绘制方法自动获得的。

该有向流程图可以直观地反映出该任务的运行过程。因此,相对于直接基于程序代码解析功能元素而言,基于有向流程图解析功能元素可能更为简单高效。

根据本公开的实施例,该至少一个功能元素包括以下各项中的至少一项:输入、输出以及函数运算。

在操作s202中该将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,可以是将不同的功能元素分别映射到该可重构处理系统的相应的硬件单元中。

在该至少一个功能元素包括该输入的功能元素时,将该输入映射到该可重构处理系统中的输入单元。

在该至少一个功能元素包括该输出的功能元素时,将该输出映射到该可重构处理系统中的输出单元。

根据本公开的实施例,该输入单元和该输出单元中的至少一个可以采用先入先出算法,例如该输入单元可以是ififo寄存器单元,输出单元可以是输出先入先出(outputfirstinfirstout,ofifo)寄存器单元。

在该至少一个功能元素包括该函数运算的功能元素时,将该函数运算映射到该可重构处理系统中的至少一个算子。

例如,在可重构处理系统中,算子可以包括:bfu(basicfunctionunit,基本功能单元)、sbox(substitutionbox,s盒)、或者benes(以人名命名的算子)等。

bfu算子可以用于实现一些数学运算,包括算术运算和逻辑运算。例如,将函数运算的运算表达式拆解成至少一个数学表达式。数学表达式可以包含算术表达式和逻辑表达式。每个bfu算子执行一个数学表达式。实际上,每个bfu算子执行一个运算表达式中的一个运算符功能,就是执行运算表达式中的一步。

各个表达式之间的逻辑关系可以通过各个算子之间的连线来体现。

sbox算子可以用于实现查表运算。例如,sbox可以应用于对称加密算法中,可以将输入的数据进行查表,然后输出查表的结果。

benes算子可以用于比特置换运算。比如,按照一定的规则将计算所得的数据中的每一个比特进行相应的调换。

根据本公开的实施例,将所述函数运算映射到所述可重构处理系统中的至少一个算子,可以包括确定该函数运算所调用的运算表达式,以及将该运算表达式映射到该至少一个算子,使得该运算表达式中的每个运算符功能由一个算子来执行,该运算表达式的运算顺序与该至少一个算子之间的连接关系相对应。

例如,对于函数运算d=a+b+c,由于bfu算子可以做加法运算,并且每一bfu算子能做一个加号运算,因此需要用到两个bfu算子,并且将这两个bfu算子的通过au模式(即加法模式)连接,并且相应地配置每个bfu算子,就可以将该函数运算d=a+b+c映射到该两个bfu算子。

根据本公开的实施例,该至少一个功能元素还包括以下各项中的至少一项:常量以及变量。

在操作s202中该将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,可以是将该常量和/或该变量对应映射到该可重构处理系统的相应的硬件单元中。

具体地,在该至少一个功能元素包括该常量时,将该常量映射到该可重构处理系统中的对应的存储器单元中。

在该至少一个功能元素包括该变量时,将该变量映射到对应的存储器单元中。

在可重构处理系统中,存储器单元可以用于存储常量、变量或者一些中间临时数据等相关信息。可重构处理系统可以包括一个或多个存储器单元,这可以根据实际需求来设置。

图3示意性示出了根据本公开另一实施例的用于可重构处理系统的配置的方法的流程图。

如图3所示,该用于可重构处理系统的配置的方法除操作s201~操作s203外,还包括操作s303。其中操作s303在操作s203之前执行。

在操作s303中,根据该任务信息中与该至少一个功能元素相关联的参数设置元素,生成设置信息,该设置信息用于指示该至少一个硬件单元的设置参数。

例如在该至少一个功能元素包括变量时,如前所述可以将该变量映射到对应的至少一个存储器单元中。该任务信息中可能包括不影响数据流向的一些元素,比如参数设置元素。

这些参数设置元素例如可以包括反映出栈信息的元素,是用于该输入单元和/或存储器单元寻址的元素。例如,输入单元或者存储器单元中的每个数据都有相应的地址。当前运算使用了某个数据a,在下次运算时候需要使用数据b,那么出栈信息元素可以在当前运算结束后指向数据b。这样,在下次运算时,可以基于出栈信息元素提取数据b。

再例如,参数设置元素可以包括表示移位运算的元素,该元素可以作为相应算子的设置参数。

由于这些参数设置元素并不会影响数据流向,其表示的是相应硬件单元的内部设置参数,所以这些参数设置元素不会体现在布线信息中,但是可以基于这些元素生成相应的设置信息。

那么,在操作s203中,可以根据该布线信息和该设置信息,生成该配置信息。例如,配置信息可以包括布线信息以及硬件单元的参数设置等信息。

在本公开一个实施例中,布线信息可以是以至少一张可视图的形式来呈现的。例如,可以通过图1所描述的显示设备120来显示可视图。这样,可以直观地向用户提供可重构处理系统中的各个硬件单元之间的连接关系,便于用户进行相应处理,能够提高用户体验。

下面参考图4a-10b,结合md5算法任务中的一部分过程,对根据本公开实施例的用于可重构处理系统的配置的方法的实施做进一步说明。应当理解的是,该例子仅是为了帮助本领域技术人员更好地理解本公开实施例,而并非限制本公开实施例的范围。

图4a和图4b示意性示出了根据本公开实施例的md5算法中的一部分过程的有向流程图的示意图。

如图4a所示为有向图流程图中可能出现的的部分功能元素。当然,可以理解的是在每种算法中,这些功能元素并不一定都会出现。下面对图4a中的各个功能元素进行简单说明。

输入a1,其表示外部输入的数据,例如,md5算法中的待处理的数据。例如,每个输入a1可以表示32比特的数据。

输出a2,其表示输出结果,例如,使用md5算法对数据进行加密或者解密之后得到的结果。例如,每个输出a2可以表示32比特的数据。

常量a3,其表示算法任务中的常量。通常,此功能元素中的数据只能读不能写。

变量a4,其表示算法任务内部自定义的变量。通常,此功能元素中的数据可读可写。

条件判断a5,其用于判断某些量是否符合条件。条件判断可以分成两种数据流向(一种符合条件的数据流向,一种不符合条件的数据流向)。

no(否)条件分支a6,其表示不符合条件判断的数据流向分支连接线。

yes(是)条件分支a7,其表示符合条件判断的数据流向分支连接线。

数据流向a8,其表示在没有任何条件判断的情况下的数据流向连接线。

函数运算a9,其可以调用下述的子函数运算a10,以完成相应的函数运算,例如,算术逻辑运算等。

子函数运算a10,其表示函数。例如,该功能元素可以表示从任务中提取的函数。在被函数运算a9调用时,进行相应的实例化。在本实施例中,将子函数运算a10作为一个功能元素,能够将相同的布线信息进行配置归类,从而优化分析过程,提高效率。

如图4b所示为md5算法的部分过程的有向流程图400。

在操作s201中确定该有向流程图400中的至少一个功能元素。

具体地,该有向流程图400中包括如图4a中所列示出的各个功能元素,并且图4b中的各个功能元素中还显示有包括在该功能元素中的数据和/或数据处理信息。

在操作s202中,将该有向流程图400中的每一个功能元素对应映射到可重构处理系统的至少一个硬件单元中。

下面分别描述各个功能元素到可重构处理系统的硬件单元的映射过程。

(1)输入元素到输入单元的映射

将输入a1映射到该可重构阵列系统的输入单元中,例如图5所示的ififo寄存器单元。例如,该ififo寄存器单元的宽度可以是128比特,深度可以是10比特,那么该ififo寄存器单元可以存储1280比特的数据。

例如,在图4b中,存在4个输入,每个输入可以是32比特,那么共有128比特的输入。例如,4个输入可以是m0-m3、m4-m7、m8-m11、m12-m15。如图5所示,可以将这4个输入映射到ififo寄存器单元中。

(2)常量到存储器单元的映射

将常量a3映射到该可重构阵列系统的对应的至少一个存储器单元,例如,可重构处理系统的通用寄存器数据通路单元。

例如,在图4b中,常量a3中包括t[64]。可以将常量a3映射到可重构处理系统的至少一个存储器单元。在图6中,将该存储器单元表示为mem,其也可以称为通用寄存器数据通路单元。例如,可以将常量t[64]映射到该mem单元中。

例如,mem单元的宽度可以是128比特,深度可以是10比特,那么该mem单元可以存储1280比特的数据。

(3)变量到存储器单元的映射

可以将变量a4映射到映射该可重构阵列系统的对应的至少一个存储器单元。

基于对上述有向流程图400的解析,可以确定该流程图中的变量。例如,变量a4可以包括流程图400中的a、b、c、d、aa、bb、cc和dd。这些变量可以被映射到存储器单元中。例如,可以将这些变量映射到如图6所示的mem单元中,那么映射结果可以如图7所示。如图7所示,该mem单元中可以存储有变量t[64]和上述a、b、c、d、aa、bb、cc和dd。

(4)函数运算到算子的映射

在该有向流程图400中包括多个具体操作不同的函数运算a9,将该多个函数运算a9中的每一个分别映射到该可重构处理系统中的至少一个算子。其中不同的函数运算a9所映射到的算子可能不同。在本实施例中,函数运算a9映射到的算子主要是bfu算子。

例如,结合有向流程图400,在图8中示意性地示出了将一函数运算映射到该可重构处理系统中的至少一个算子的示例。

该示例中,子函数运算的表达式为:

a=b+((a+f(b,c,d)+x[0]+t[0])<<<7)

如图4b所示,分别有四个函数运算元素a9调用了该子函数运算。可以将表达式映射到该可重构处理系统中的多个bfu算子,使得每个bfu算子执行该表达式中的一个运算符功能。例如,映射结果如图8所示。在图8中,以4个bfu为一组,数据流向为从上到下,从左到右。

再例如,图4b的有向流程图400中的a=a+aa;b=b+bb;c=c+cc;d=d+dd的函数运算a9到算子的映射如图9所示。例如,可以将输入数据a映射到第一行最左侧的bfu算子,其输出是a,然后将该输出a作为第二行最左侧的bfu算子的输入,同时输入aa也作为第二行最左侧的bfu算子的输入。第二行最左侧的bfu算子可以对a和aa进行加法运算,然后输出a+aa的结果。同理,可以通过其它bfu算子得到b+bb、c+cc和d+dd。可以将a+aa、b+bb、c+cc和d+dd作为benes算子是输入,benes算子对其进行比特置换。例如,benes算子可以将a+aa、b+bb、c+cc和d+dd按照大小顺序排列,然后输出到ofifo寄存器单元。

应当理解的是,在图8和图9的例子中,示出了可重构计算阵列中的每行可以设置8个算子,例如,8个bfu算子;但是在其它实现中,可重构计算阵列中的每行可以设置不同数量的算子或者不同类型的算子,本公开实施例对此不作限定。

还可以理解的是,每个函数运算可能不会用到可重构计算阵列中的每一行的所有算子,例如,在图9中,使用了第一行的4个bfu算子、第二行的4个bfu算子以及一个benes算子。

(5)输出元素到输出单元的映射

可以将输出映射到可重构处理系统的输出单元,例如,ofifo寄存器单元。例如,在上面的例子中,可以将benes算子得到的4个输出a’、b’、c’和d’映射到ofifo寄存器单元。

在进行上述功能元素的映射之后,基于no条件分支a6、yes条件分支a7和/或数据流向a8所指示的数据流向,可以得到可重构处理系统的硬件单元的布线信息。根据本公开的实施例,该布线信息可以是至少一张可视图的形式呈现,例如图10a和10b中的示例。在本文中,可以将布线信息的可视图称为布线图。

图10a和10b示意性示出了根据本公开实施例的以可视图方式呈现的布线信息的效果图。

图10a示出的是有向流程图400的表达式为fun(abcdk17i1)的函数运算映射到对应的算子的布线图。

在一种情况中,为了便于组织和配置算子,可以将多个算子划分为相应的单元。例如,如图10a所示,每行算子可以组成一个行运算单元(rowcalculatedunit,rcu),每四个rcu可以组成一个基本运算单元(basiccalculatedunit,bcu)。当然,在其它情况下,可以根据需求,以不同方式来划分算子。

fun(abcdk17i1)的函数运算a9是有向流程图400中的一个中间过程,所以在图10a的布线图中,rcu3中的算子的输出端口并没有连接到ofifo寄存器单元,其产生的结果作为中间临时数据存储在mem单元中。

在图10a中,为了便于描述,在布线图的基础上增加了椭圆虚线框,椭圆虚线框中的方块均表示mem单元,其中,在图10a中,分别存在与bfu算子的输入端口相连接的mem单元以及与bfu算子的输出端口相连接的mem单元。应当理解的是,在实际的布线图中,并不存在这样的椭圆虚线框。

另外,在图10a中,infifo可以表示ififo寄存器单元,outfifo可以表示ofifo寄存器单元。

相应地,对于有向流程图400中的其它函数运算fun(dabck212i2)、fun(cdabk317i3)和fun(bcdak422i4),也可以生成与图10a相似的布线图,在此不再赘述。

在进行a=a+aa、b=b=bb、c=c+cc、d=d+dd的函数运算之后,得到的结果映射到ofifo寄存器单元,由此形成图10b所示的对应布线图。

同样,在图10b中,为了便于描述,在布线图的基础上增加了椭圆虚线框,椭圆虚线框中的方块均表示mem单元,其中,在图10b中,分别存在与bfu算子的输入端口相连接的mem单元以及与bfu算子的输出端口相连接的mem单元。应当理解的是,在实际的布线图中,并不存在这样的椭圆虚线框。

另外,在图10b中,infifo可以表示ififo寄存器单元,outfifo可以表示ofifo寄存器单元。

图10a和图10b中各种连线就代表了各个硬件单元之间的连接关系,这与有向流程图400中的数据流向是相对应的。

需要说明的是,图10a和图10b中仅是示例性示出了该布线信息的可视图的一种可能的效果,以便于对布线信息的可视图有一定的感性认识。其中,所展示的该可视图可能并不等同于根据本公开实施例的方法执行上述md5算法最终输出的布线图。

另外,如上所述,有向流程图400中的某些功能元素可能不会体现数据流向,其可能表示一些硬件单元的设置参数。这种情况下,可以基于这些功能元素生成设置信息。例如,在有向流程图400中,元素k1、i1、k2、i2、k3、i3、k4和i4表示ififo寄存器单元和mem单元的出栈信息,因此,可以将这些元素设置为ififo寄存器单元和mem单元的内部参数。

再例如,在有向流程图400中,条件判断a5并不涉及数据流向,其属于与函数运算a9相关的参数设置元素,因此可以基于该元素生成相应的设置信息。这样,基于该设置信息,会使得图10a中进行的运算进行四次循环结束。

再例如,在有向流程图400中,元素s可以表示移位运算,其也不涉及数据流向,因此也可以基于其生成设置信息。

可以理解的是,由于一张布线图中的算子个数可能是有限的,在一张布线图无法完整地表示一个算法任务时,可能通过多张布线图来表示一个算法任务。例如,针对有向流程图400而言,可以得到5张布线图。

以此方式,就可以得到执行md5算法的部分过程的布线信息以及设置信息。

接着,在操作s203中,可以根据以上获得的md5算法的布线信息和设置信息生成该可重构处理系统的配置信息。例如,配置信息可以包括布线信息以及硬件单元的参数设置等信息。

图11示意性示出了根据本公开实施例的用于可重构处理系统的配置的装置的方框图。

如图11所示,该装置1100包括确定模块1110、映射模块1120和配置信息生成模块1130。该装置1100可用于实现图2和图3所描述的用于可重构处理系统的配置的方法的各个过程,在此不再赘述。

确定模块1110用于确定任务信息中的至少一个功能元素,其中,该任务信息用于指示该可重构处理系统要执行的任务,该至少一个功能元素用于共同指示该任务中的数据流向。

映射模块1120用于将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,以生成该可重构处理系统的布线信息,其中,该布线信息用于表示该至少一个硬件单元之间的连接关系,该连接关系与该数据流向相对应。

配置信息生成模块1130用于至少根据该布线信息生成配置信息,该配置信息用于配置该可重构处理系统执行该任务。

该任务信息为与该任务对应的程序代码;或者,该任务信息为有向流程图,该有向流程图是基于与该任务对应的程序代码而生成的,该有向流程图用于反映该任务的运行过程。

根据本公开的实施例,该至少一个功能元素包括以下各项中的至少一项:输入、输出以及函数运算。该映射模块1120将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,包括:在该至少一个功能元素包括该输入时,将该输入映射到该可重构处理系统中的输入单元;在该至少一个功能元素包括该输出时,将该输出映射到该可重构处理系统中的输出单元;在该至少一个功能元素包括该函数运算时,将该函数运算映射到该可重构处理系统中的至少一个算子。

根据本公开的实施例,该映射模块1120将该函数运算映射到该可重构处理系统中的至少一个算子,包括:确定该函数运算所调用的运算表达式,以及将该运算表达式映射到该至少一个算子,使得该运算表达式中的每个运算符功能由一个算子来执行,该运算表达式的运算顺序与该至少一个算子之间的连接关系相对应。

根据本公开的实施例,该输入单元和该输出单元中的至少一个采用先入先出算法。

根据本公开的实施例,该至少一个功能元素还包括以下各项中的至少一项:常量以及变量。该映射模块1120将该至少一个功能元素分别映射到该可重构处理系统中的至少一个硬件单元,还包括:在该至少一个功能元素包括该常量时,将该常量映射到该可重构处理系统中的存储器模块中;在该至少一个功能元素包括该变量时,将该变量映射到该存储器单元中。

根据本公开实的实施例,该装置还包括设置信息生成模块1140。设置信息生成模块1140用于根据该任务信息中与该至少一个功能元素相关联的参数设置元素,生成设置信息,该设置信息用于指示该至少一个硬件单元的设置参数。该配置信息生成模块1130还用于根据该布线信息和该设置信息,生成该配置信息。

可选地,该布线信息是以至少一张可视图的形式来呈现的。

根据本公开的实施例,该用于可重构处理系统的配置的装置能够根据该任务信息,通过该任务信息中的至少一个功能元素与该可重构处理系统中的硬件单元的映射,自动生成该可重构处理系统的配置信息,从而可以根据该配置信息来配置该可重构处理系统以执行该任务。这样,无需人工分析各个硬件单元以及手动布线,能够极大地提高获得可重构处理系统的布线以及配置信息的效率,并且减小甚至消除出错率

可以理解的是,确定模块1110、映射模块1120、配置信息生成模块1130、以及设置信息生成模块1140可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,确定模块1110、映射模块1120、配置信息生成模块1130、以及设置信息生成模块1140中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,确定模块1110、映射模块1120、配置信息生成模块1130、以及设置信息生成模块1140中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。

图12示意性示出了根据本公开另一实施例的用于可重构处理系统的配置的装置1200的方框图。

如图12所示,该装置1200包括处理器1210、以及计算机可读存储介质1220。该装置1200可以执行上面参考图2和图3描述的方法,以实现用于可重构处理系统的配置。

具体地,处理器1210例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic)),等等。处理器1210还可以包括用于缓存用途的板载存储器。处理器1210可以是用于执行参考图2和图3描述的根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

计算机可读存储介质1220,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

计算机可读存储介质1220可以包括计算机程序1221,该计算机程序1221可以包括代码/计算机可执行指令,其在由处理器1210执行时使得处理器1210执行例如上面结合图2和图3所描述的方法流程及其任何变形。

计算机程序1221可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1221中的代码可以包括一个或多个程序模块,例如包括1221a、模块1221b、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1210执行时,使得处理器1210可以执行例如上面结合图2和图3所描述的方法流程及其任何变形。

根据本发明的实施例,确定模块1110、映射模块1120、配置信息生成模块1130、以及设置信息生成模块1140中的至少一个可以实现为参考图12描述的计算机程序模块,其在被处理器1210执行时,可以实现上面描述的相应操作。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1