一种可重构处理器及配置方法与流程

文档序号:25721818发布日期:2021-07-02 21:06阅读:64来源:国知局
一种可重构处理器及配置方法与流程

本发明涉及可重构计算的技术领域,尤其涉及一种可重构处理器及配置方法。



背景技术:

可重构计算是指计算系统能够利用可重用的硬件资源,根据不同的应用需求,灵活的对自身计算路径重构,以便为每个特定的应用需求提供与之相匹配的计算结构。粗粒度可重构处理器作为一种新的高性能计算结构,兼具通用计算与专用计算的优势,在编程灵活性和计算能效上具有较好的折中。可重构阵列作为可重构处理器的计算核心,其效率和灵活性,将对可重构系统的性能产生极大影响。现有的粗粒度可重构处理器的可重构阵列结构很少考虑内部的流水性质,使得复杂操作成为可重构阵列的计算速度瓶颈,时钟频率不高,计算效率较低。

在粗粒度的可重构体系结构中,可重构阵列包括功能完整的计算单元,如加减法器、乘法器、除法器、开方器、三角函数计算器等。为了保证可重构处理器较高的时钟频率与计算效率,这些计算单元大都采用流水化设计。由于要实现的计算复杂度不同,不同计算单元的计算流水深度往往不同,从而导致可重构阵列难以实现整体流水化的数据处理,限制可重构处理器的流水线计算性能的提升。



技术实现要素:

为了解决上述技术问题,本发明技术方案公开一种自适应配置流水线深度的可重构处理器,对可重构阵列采用多级流水线控制,具体技术方案包括:

一种可重构处理器,所述可重构处理器包括重构配置单元和可重构阵列;重构配置单元,用于根据当前应用场景匹配的算法,提供用于重构可重构阵列内的计算结构的重构信息;可重构阵列包括至少两级计算阵列,可重构阵列用于根据重构配置单元提供的重构信息,将相邻两级的计算阵列连接出满足所述当前应用场景匹配的算法的计算需求的数据通路流水线结构;在同一级计算阵列内,接入数据通路流水线结构的不同的计算模块的流水线深度都相等,使得接入数据通路流水线结构的不同的计算模块都同步输出数据;每一级计算阵列的内部设置至少一个计算模块;其中,在一个可重构阵列的每一列上,设置有一个计算阵列,每一个计算阵列是一级计算阵列,计算阵列的数目是预先设定的,这些计算阵列是以级联的结构存在于可重构阵列;其中,所述数据通路流水线结构的每一级流水线分别对应一级计算阵列;在每一级计算阵列中,接入数据通路的所述计算模块相当于接入所述数据通路流水线结构的对应一级流水线;其中,流水线深度是数据流经所述数据通路流水线结构的相应的数据通路所耗费的时间。

与现有技术相比,所述可重构处理器以用于执行计算指令的相邻互连的计算模块为基础,重构调节数据经过每一级计算阵列的流水线深度都相同且满足算法的计算需求的数据通路流水线结构,从而让可重构处理器根据不同的算法配置出适应的流水线深度,并在此基础上实现可重构阵列的数据处理操作的整体流水化,提高了可重构处理器的吞吐率,充分发挥可重构处理器的计算性能,也减小现有技术的流水线设计所需配置的硬件资源。

进一步地,所述可重构处理器还包括输入fifo组和输出fifo组;输入fifo组的输出端分别与可重构阵列的输入端对应连接,可重构阵列用于根据所述重构信息接收来自所述输入fifo组传输的待计算数据,并将待计算数据传输给所述数据通路流水线结构;输出fifo组的输入端分别与可重构阵列的输出端对应连接,可重构阵列还用于根据所述重构信息向所述输出fifo组提供所述数据通路流水线结构的最后一级流水线所对应的一级计算阵列的输出数据。该技术方案设置输入fifo组作为外部数据进入所述可重构处理器的缓存,设置输出fifo组作为所述可重构处理器向外部输出数据的缓存,以匹配所述算法对于所述可重构处理器与外部的系统元件的数据交换、存储要求。

进一步地,在所述可重构阵列中,所述将相邻级的计算阵列连接出满足算法的计算需求的数据通路流水线结构的方式包括:互不相邻级的两个计算阵列之间不通过数据通路跨级连接,以使得互不相邻的两级计算阵列不直接连接成所述数据通路流水线结构;且同一级计算阵列内的不同计算模块之间不存在数据通路;第一级计算阵列内的计算模块的输入端作为所述可重构阵列的输入端,用于基于所述重构信息,配置为与所述输入fifo组相匹配的输出端连接;当前一级计算阵列内的计算模块的输入端用于基于所述重构信息,配置为与其相邻的前一级计算阵列内的相匹配一行的计算模块的输出端相连接,其中,当前一级计算阵列在所述可重构阵列中不是第一级计算阵列;当前一级计算阵列内的计算模块的输出端用于基于所述重构信息,配置为与其相邻的后一级计算阵列内的相匹配一行计算模块的输入端相连接,其中,当前一级计算阵列在所述可重构阵列中不是最后一级计算阵列;最后一级计算阵列内的计算模块的输出端作为所述可重构阵列的输出端,用于基于所述重构信息,配置为与所述输出fifo组相匹配的输入端连接;其中,相邻的前一级计算阵列的级别比当前一级计算阵列的级别小一级,相邻的后一级计算阵列的级别比当前一级计算阵列的级别大一级;所述数据通路是数据传输的路径。该技术方案按照所述重构信息将所述可重构阵列的彼此相邻两级的计算阵列内的计算模块串行连接为所述数据通路流水线结构,降低了互联网络通路的复杂度,同时还能简单高效的实现多级流水线控制。在此基础上可重构阵列用于根据所述重构信息连接出多路的数据通路流水线结构,以满足同步执行的多种算法的数目应用需求。

进一步地,所述重构配置单元提供的计算模块的重构信息包括第二配置信息、第一配置信息、第三配置信息;计算模块包括计算控制单元、补偿单元、第一互联单元、第二互联单元;第一互联单元,用于根据所述第一配置信息,将第一互联单元和计算控制单元接入所述数据通路流水线结构的当前一级流水线,其中,第一互联单元用于在当前一级流水线对应于第一级计算阵列时,将所述输入fifo组内相匹配的输出端输出的待计算数据输入给所述计算控制单元;第一互联单元还用于在当前一级流水线不是对应于第一级计算阵列时,将相邻的前一级计算阵列内相匹配的计算模块所输出的计算结果输入给所述计算控制单元;计算控制单元,用于根据第二配置信息,选择连接成数据直通通路以控制输入所述计算控制单元的数据在不执行计算的前提下直接通过并传输给补偿单元、或选择连接成数据计算通路以控制输入所述计算控制单元的数据在执行计算后传输给补偿单元;其中,所述数据通路包括数据直通通路和数据计算通路;补偿单元,用于根据第三配置信息,选择相应的延时差值将同一计算模块的流水线深度延时补偿为当前一级计算阵列所允许的最大流水线深度;第二互联单元,用于根据所述第一配置信息,将第二互联单元和补偿单元接入所述数据通路流水线结构的当前一级流水线,其中,第二互联单元用于在当前一级流水线对应于最后一级计算阵列时,将经过所述补偿单元延时补偿处理的数据传输给所述输出fifo组内相匹配的输出fifo;第二互联单元还用于在当前一级流水线不是对应于最后一级计算阵列时,将经过所述补偿单元延时补偿处理的数据传输给相邻的后一级计算阵列内相匹配的计算模块;其中,在当前一级计算阵列的同一计算模块内,第一互联单元的输入端是计算模块的输入端,第一互联单元的输出端与计算控制单元的输入端,计算控制单元的输出端与补偿单元的输入端连接,补偿单元的输出端与第二互联单元的输入端连接,第二互联单元的输出端是计算模块的输出端。

在该技术方案中,计算模块通过第一互联单元与相邻的前一级计算阵列连接,计算模块通过第二互联单元与相邻的后一级计算阵列连接,在第一互联单元与第二互联单元之间连接有计算控制单元和补偿单元,形成基于所述重构信息的流水线,从而将所述计算模块按相邻列设置成可重构的互联逻辑模式,硬件结构简单;

同时,在确定当前一级的计算阵列实际执行计算功能的计算模块的基础上确定当前一级的计算阵列的最大流水线深度,然后利用这个最大流水深度与同一级的计算阵列的计算控制单元的流水线深度之差,对相应的计算控制单元进行流水线深度的补偿,使数据通过每一级计算阵列的不同计算模块的流水线深度都相同,进而解决现有技术的粗粒度可重构处理器(所述可重构处理器的一种类型)中迭代处理数据效率低、硬件资源配置开销过大的问题。

进一步地,所述第三配置信息是一种选通信号,用于在所述重构配置单元确定所述数据通路流水线结构的当前一级流水线中耗费流水线深度最大的所述计算控制单元后,在当前一级流水线的所有计算模块内,选通所述补偿单元内部设置的相匹配的用于产生所述延时差值的寄存器路径,再控制当前一级流水线的计算控制单元的输出数据在所述寄存器路径传输,直至输出相应的计算模块,才确定:当前一级流水线的计算模块的流水线深度都延时补偿为当前一级计算阵列所允许的最大流水线深度;其中,所述补偿单元是采用选择器和寄存器实现;其中,当前一级计算阵列所允许的最大流水线深度是数据流经所述数据通路流水线结构的相应的数据通路所耗费时间最大的计算控制单元的流水线深度。从而对没有达到当前一级计算阵列的流水线深度的所述计算控制单元做流水补偿,在多级流水线结构上支持可重构阵列的数据处理整体流水化。

进一步地,在所述补偿单元内,所述用于补偿延时差值的寄存器路径是由预设数量的寄存器组成的,且这些寄存器在所述第三配置信息的触发作用下,寄存同一计算模块内的所述计算控制单元输出的数据;其中,寄存所产生的延时差值是等于:所述当前一级计算阵列内所允许的最大流水线深度减去同一计算模块内与所述补偿单元相连接的所述计算控制单元的流水线深度而获得的时间差值。该技术方案基于所述第三配置信息控制所述补偿单元内部的选择器将所述计算控制单元接入用于产生合适的延时差值的寄存器路径中,使得任意数据都以相等流水线深度通过同一级计算阵列内接入所述数据通路流水线结构的不同计算模块。

进一步地,所述第一配置信息包括:将第一级计算阵列内的所述第一互联单元和所述输入fifo组内部设置的相匹配的输入fifo连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将当前一级计算阵列内的所述第一互联单元和相邻的前一级的计算阵列内的相匹配所述第二互联单元连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将当前一级计算阵列内的所述第二互联单元和相邻的后一级的计算阵列内的相匹配所述第一互联单元连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将最后一级计算阵列内的所述第一互联单元和所述输出fifo组内部设置的相匹配的输出fifo连接到所述数据通路流水线结构中所需的访问地址信息和时间信息;其中,所述第一互联单元和所述第二互联单元都支持在所述可重构阵列内或所述数据通路流水线结构内形成所述计算模块之间互联的拓扑结构,以满足所述算法的完整功能。该技术方案基于所述第一配置信息的要求,把数据送到多级流水线的第一级计算阵列的相应输入端,使得数据经过多级流水线上的计算阵列运算处理后,送到相应的输出fifo,从而在不同的计算应用需求下,当重构配置单元从提供一种重构信息切换为另一种重构信息时,保证在相邻级的计算阵列之间形成具有完整互连逻辑的流水线结构。

进一步地,所述第二配置信息也是一种选通信号,用于控制所述第一互联单元传输的数据在所述数据直通通路和所述数据计算通路之间选通输出,以满足所述算法在所述数据通路流水线结构的每一级流水线的计算需求;其中,计算控制单元采用数据选择器和算术逻辑电路实现。从而确定计算控制单元当前是否执行计算功能。

进一步地,所述计算控制单元所执行的计算类型包括加减法、乘法、除法、开方、三角计算;其中,每一级计算阵列内的计算控制单元的类型不全相同、或全部相同;其中,相邻两级计算阵列之间的计算控制单元的类型不全相同、或全部相同。在本技术方案中,每一级计算阵列内的所述计算控制单元的类型与个数,可根据具体的应用领域与性能需求加以调整,在此基础上,所述可重构阵列通过改变计算模块的加减乘除计算方式,使得所述可重构阵列互联的各级计算控制单元适用于多种算法,可根据不同算法的需求进行灵活配置,从而改变了传统的计算阵列中一个算法配合一个固定阵列的模式,极大的提高了计算成本和效率。

进一步地,所述可重构阵列设置六级计算阵列,每一级计算阵列都设置有四行的计算模块,六级计算阵列在所述重构配置单元提供的重构信息的配置作用下连接成六级流水线,以形成所述数据通路流水线结构并支持特定粒度的计算操作;其中,同一级计算阵列内每一行只设置一个计算模块;其中,第一级计算阵列设置的四个计算模块的输入端基于所述重构信息分别连接上所述输入fifo组内设置的四个不同的输入fifo的输出端,第六级计算阵列设置的一个计算模块的输出端基于所述重构信息连接上所述输出fifo组内设置的一个输出fifo的输出端。该技术方案在所述可重构阵列内,设置6列计算阵列,且在每列计算阵列内分行设置4个计算单元,总共24个计算单元,以形成6*4级流水线,再在6*4级流水线内重构出符合所述重构信息的数据通路流水线结构。

一种基于所述可重构处理器的配置方法,包括:根据当前应用场景匹配算法的计算需求,将所述可重构阵列的相邻级的计算阵列连接出支持数据以相等流水线深度通过同一级计算阵列内不同计算模块、且满足当前应用场景匹配的算法的计算需求的数据通路流水线结构;其中,所述数据通路流水线结构的每一级流水线分别对应一级计算阵列;当前一级计算阵列中接入数据通路的计算模块是接入所述数据通路流水线结构的当前一级流水线;其中,流水线深度是数据流经所述数据通路流水线结构的相应的数据通路所耗费的时间。

与现有技术相比,所述配置方法以用于执行计算指令的相邻互连的计算模块为基础,重构调节数据经过每一级计算阵列的流水线深度都相同且满足算法的计算需求的数据通路流水线结构,从而让可重构处理器根据不同的算法配置出适应的流水线深度,并在此基础上实现可重构阵列的数据处理操作的整体流水化,提高了可重构处理器的吞吐率,充分发挥可重构处理器的计算性能。

进一步地,所述配置方法还包括:配置所述可重构阵列接收来自所述输入fifo组传输的待计算数据,并将待计算数据传输给所述数据通路流水线结构,同时配置所述可重构阵列向所述输出fifo组输出所述数据通路流水线结构的最后一级所对应的计算阵列的计算结果。该技术方案配置外部数据进入所述可重构处理器的缓存,同时设置所述可重构处理器向外部输出数据的缓存,以匹配所述算法对于所述可重构处理器与外部的系统元件的数据交换、存储要求。

进一步地,连接成所述数据通路流水线结构的具体配置方法包括:在当前一级计算阵列的一个计算模块内,判断当前一级计算阵列是否被检测为对应所述数据通路流水线结构的第一级流水线,是则将第一互联单元和所述计算控制单元接成所述数据通路流水线结构的第一级流水线,并配置第一互联单元将所述输入fifo组内相匹配的输出端输出的待计算数据;否则将第一互联单元和所述计算控制单元接成所述数据通路流水线结构的当前一级流水线,并配置第一互联单元将相邻的前一级计算阵列内相匹配的计算模块所输出的计算结果输入给所述计算控制单元;判断当前一级计算阵列是否被检测为对应最后一级流水线,是则将第二互联单元和补偿单元接成所述数据通路流水线结构的最后一级流水线,并配置所述第二互联单元将经过所述补偿单元延时补偿处理的数据传输给所述输出fifo组内相匹配的输出fifo;否则将第二互联单元和补偿单元接成所述数据通路流水线结构的当前一级流水线,并配置所述第二互联单元将经过所述补偿单元延时补偿处理的数据传输给相邻的后一级计算阵列内相匹配的计算模块;判断计算控制单元是否检测到计算选通信号,是则配置输入所述计算控制单元的数据在执行计算后输出给补偿单元,否则配置输入所述计算控制单元的数据在不执行计算的前提下直接通过并传输给补偿单元;然后配置补偿单元选择相应的延时差值对同一计算模块内的所述计算控制单元的输出数据进行延时处理,以将同一计算模块的流水线深度延时补偿为当前一级计算阵列所允许的最大流水线深度;其中,当前一级计算阵列所允许的最大流水线深度是当前一级计算阵列中,数据流经所述数据通路所耗费的时间最大的计算控制单元的流水线深度;其中,计算模块包括计算控制单元、补偿单元、第一互联单元、第二互联单元;在每一级计算阵列的同一计算模块内,第一互联单元的输入端是计算模块的输入端,第一互联单元的输出端与计算控制单元的输入端,计算控制单元的输出端与补偿单元的输入端连接,补偿单元的输出端与第二互联单元的输入端连接,第二互联单元的输出端是计算模块的输出端。

该技术方案可以确定当前一级的计算阵列实际执行计算功能的计算模块并确定当前一级的计算阵列的最大流水线深度,然后利用这个最大流水深度与同一级的计算阵列的计算控制单元的流水线深度之差,对相应的计算控制单元进行流水线补偿,使数据通过每一级计算阵列的不同计算模块流水深度都相同,进而解决粗粒度可重构处理器(所述可重构处理器的一种类型)的时钟频率不高,计算效率较低的问题。

同时,通过配置第一互联单元与第二互联单元在计算模块内外部的连接方式,来将计算控制单元和补偿单元连接成为所述数据通路流水线结构的一级流水线结构,进而实现多级流水控制。

进一步地,在所述可重构阵列中,互不相邻级的两个计算阵列之间不通过数据通路跨级连接,以使得互不相邻级的两个计算阵列不直接连接成所述数据通路流水线结构;且同一级计算阵列内的不同计算模块之间不存在数据通路,其中,数据通路是数据传输的路径。与现有技术相比,既保证了所述可重构阵列的灵活性,又简化互联网络通路的复杂度。

附图说明

图1为本发明实施例公开的一种可重构处理器的结构示意图。

图2为本发明一可重构处理器实施例中,由六级计算阵列(每级计算阵列内存在四行计算模块)构成的具有6级流水线的可重构阵列的示意图,其中,图2的可重构阵列设置4个不同输入端分别连接4个不同的输入fifo,图2的可重构阵列存在一个输出端连接一个输出fifo。

图3为本发明一实施例中第(a-1)级计算阵列内的第b1行的计算模块(a-1)b1、第a级计算阵列内的第b2行的计算模块ab2、第(a+1)级计算阵列内的第b3行的计算模块(a+1)b3之间的互联逻辑结构的示意图。

图4是本发明另一实施例公开的一种基于可重构处理器的配置方法的流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步说明。以下实施方式中所涉及到的各单元模块均为逻辑电路,一个逻辑电路可以是一个物理单元、也可以是由多个逻辑器件按照一定的读写时序和信号逻辑变化组合而成的状态机,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本发明实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本发明实施方式中不存在其它的单元。

作为一种实施例,本发明公开一种可重构处理器,所述可重构处理器包括重构配置单元和可重构阵列;重构配置单元,用于根据当前应用场景匹配的算法,提供计算模块的重构信息,其中,所述重构信息是根据所述算法的需求配置的用于重构所述可重构阵列内部的计算结构的信息,实际上是所述可重构处理器针对当前数据处理应用场景,接受外部的用于改变计算模块的互联逻辑的重构信息(包括逻辑电路的组合参数、时序参数),所述可重构处理器再基于重构信息改变多个计算模块连接组成的物理架构,然后所述可重构处理器输出计算结果,等效于在当前数据处理应用场景下软件编程调用算法(算法库函数)去计算出相应的计算结果。对不同的应用需求,当可重构处理器从一种配置变为另一种配置时,可重构阵列可根据不同的应用需求连接出与之相匹配的计算结构,从而不仅可以面对特定领域的几种算法而设计,而且接受移植入其他领域算法的重构信息,提高灵活度。

可重构阵列包括至少两级计算阵列,在一个可重构阵列内,至少存在两个计算阵列分级排列,即至少存在两个计算阵列级联连接,或者理解为至少存在两列相邻的计算阵列,或者理解为至少存在相邻两级的计算阵列,其中,在一个可重构阵列的每一列上只设置有一个计算阵列,每列上的一个计算阵列是一级计算阵列;在这个可重构阵列内的计算阵列的数目是预先设定的,这些计算阵列是以级联的结构存在于可重构阵列。下面为与流水线对应描述,都是使用一级计算阵列来描述一列计算阵列。从而便于后续在硬件上连接成所述可重构阵列的互连架构。

可重构阵列用于根据重构配置单元提供的重构信息,将相邻两级的计算阵列连接出满足算法的计算需求的数据通路流水线结构。其中,所述数据通路流水线结构的每一级流水线分别对应于一级计算阵列,即在所述数据通路流水线结构中,以一级计算阵列作为单位来描述对应的一级流水线;需要强调的是,在当前一级计算阵列内,只有接入所述数据通路的计算模块才视为所述数据通路流水线结构的当前一级流水线,因为计算阵列的级数或计算阵列的数目是预先设定的,计算阵列是预先存在于可重构阵列内的硬件资源,而所述数据通路流水线结构是在已有的计算阵列的基础上,根据所述重构配置单元提供的重构信息配置相邻的计算阵列之间的互连逻辑形成的。

在一个可重构阵列内,将相邻两级的计算阵列通过两两相邻互连(等同于两两互联)的方式连接出满足算法的计算需求的数据通路流水线结构。当所述重构信息发生变化时,相对应执行算法的计算需求也发生相应的改变,则基于变化后的所述重构信息对相邻列的计算阵列进行重新连线,实现以硬件电路的方式执行当前应用场景匹配的算法。同时,相邻两级的计算阵列连接出数据通路流水线结构的流水线深度也自动调整,即数据通路流水线结构的流水线深度可以是发生变化,数据通路流水线结构的流水线深度也可以是不发生变化,使得所述数据通路流水线结构的流水线深度跟随所述重构信息的变化而自适应变化。

在数据通路流水线结构中,同一级计算阵列内不同的计算模块的流水线深度都相等,都等于同一级的计算阵列所允许的最大流水线深度,由于相对小的流水线深度的计算模块执行计算操作的耗时需要延时等待相对大的流水线深度的计算模块执行计算操作,所以同一级的计算阵列所允许的最大流水线深度是同一级的计算阵列内用于流水线中执行计算操作的计算模块中的最大流水线深度或这个属于计算模块的最大流水线深度的预设倍数,但考虑到数据计算效率和时钟频率,一般设置为用于流水线中执行计算操作的计算模块中的最大流水线深度即可。这样保证同一级计算阵列内不同的计算模块同步输出(并行输出)数据,提高可重构处理器的吞吐率。

需要注意的是,由本领域普通技术人员可知,本发明所有的流水线深度是数据经过数据通路流水线结构的相应的数据通路中所耗费的时间,包括数据传输时间和计算处理时间;所述数据通路流水线结构的每一级流水线分别对应于一级计算阵列,即第n级计算阵列是属于第n级流水线,第n级计算阵列中接入数据通路的计算模块(硬件资源)才是接入第n级流水线,即接入所述数据通路流水线结构。

值得注意的是,在一个可重构阵列内,数据通路流水线结构的流水线深度是:可重构阵列内接入数据通路流水线结构(或接入所述数据通路)的所有级的计算阵列的流水线深度之和。

与现有技术相比,本实施例公开的可重构处理器以用于执行计算指令的相邻互连的计算模块为基础,重构调节数据经过每一级计算阵列的流水线深度都相同且满足算法的计算需求的数据通路流水线结构,从而让可重构处理器根据不同的算法配置出适应的流水线深度,并在此基础上实现可重构阵列的数据处理操作的整体流水化,提高了可重构处理器的吞吐率,充分发挥可重构处理器的计算性能。也减小现有技术的流水线设计所需配置的硬件资源。其中,所述数据通路流水线结构的流水线深度跟随所述重构信息的变化而自适应变化表现为:在不同的计算应用需求下,当重构配置单元从提供一种重构信息切换为另一种重构信息时,数据在可重构阵列内访问通过的数据通路流水线结构发生变化,实现自适应地调整所述数据通路流水线结构的流水线深度。

如图1所示,所述可重构处理器还包括输入fifo组和输出fifo组;输入fifo组的输出端分别与可重构阵列的输入端对应连接,这里的对应连接是由所述重构信息配置所述可重构阵列的第一级计算阵列的接入所述数据通路流水线结构的计算模块的输入端与输入fifo组的相匹配的输出端连接,则可重构阵列用于根据所述重构信息接收来自所述输入fifo组传输的待计算数据,并将待计算数据传输给所述数据通路流水线结构。输出fifo组的输入端分别与可重构阵列的输出端对应连接,这里的对应连接是由所述重构信息配置所述可重构阵列的最后一级计算阵列的接入所述数据通路流水线结构的计算模块的输出端与输出fifo组的相匹配的输入端连接,则可重构阵列还用于根据所述重构信息向所述输出fifo组提供所述数据通路流水线结构的最后一级流水线所对应的一级计算阵列的输出数据。其中,所述可重构处理器将输入的待处理数据先存放到对应的输入fifo组中。本实施例设置输入fifo组作为外部数据进入所述可重构处理器的缓存,设置输出fifo组作为所述可重构处理器向外部输出数据的缓存,以匹配所述算法对于所述可重构处理器与外部的系统元件的数据交换、存储要求。其中,第一级计算阵列是可重构阵列内级联的计算阵列的第一级(或第一列计算阵列)。依次类推,当前一级计算阵列是可重构阵列内级联的计算阵列的当前一级(或当前一列计算阵列),最后一级计算阵列是可重构阵列内级联的计算阵列的最后一级(或最后一列计算阵列)。

具体地,在所述可重构阵列中,所述将相邻级的计算阵列连接出满足算法的计算需求的数据通路流水线结构的方式包括:互不相邻级(互不相邻列)的两个计算阵列之间不通过数据通路跨级连接,以使得互不相邻的两级计算阵列不直接连接成所述数据通路流水线结构;且同一级计算阵列内的不同计算模块之间不存在数据通路;值得注意的是,若只存在不相邻设置的两级计算阵列,则不能将这两级的计算阵列连接入满足算法的计算需求的数据通路流水线结构;在一个可重构阵列内,若存在不相邻设置的两级计算阵列,则不能通过跨级建立数据通路的直连方式将这两级的计算阵列连接入所述数据通路流水线结构;因此,所述数据通路流水线结构不允许不相邻设置的两级计算阵列直接连接成数据通路。

第一级计算阵列内的计算模块的输入端作为所述可重构阵列的输入端,用于基于所述重构信息,配置为与所述输入fifo组相匹配的输出端连接;其中,第一级计算阵列是可重构阵列内级联的计算阵列的第一级;当前一级计算阵列内的计算模块的输入端用于基于所述重构信息,配置为与其相邻的前一级计算阵列内的相匹配一行的计算模块的输出端相连接,其中,当前一级计算阵列在所述可重构阵列中不是第一级计算阵列;当前一级计算阵列内的计算模块的输出端用于基于所述重构信息,配置为与其相邻的后一级计算阵列内的相匹配一行计算模块的输入端相连接,其中,当前一级计算阵列在所述可重构阵列中不是最后一级计算阵列;最后一级计算阵列内的计算模块的输出端作为所述可重构阵列的输出端,用于基于所述重构信息,配置为与所述输出fifo组相匹配的输入端连接;其中,相邻的前一级计算阵列的级别比当前一级计算阵列的级别小一级,相邻的后一级计算阵列的级别比当前一级计算阵列的级别大一级;所述数据通路是数据传输的路径。本实施例按照所述重构信息将所述可重构阵列的彼此相邻两级的计算阵列内的计算模块串行连接为所述数据通路流水线结构,降低了互联网络通路的复杂度,同时还能简单高效的实现多级流水线控制。在此基础上可重构阵列用于根据所述重构信息连接出多路的数据通路流水线结构,以满足同步执行的多种算法的数目应用需求。因此在外部的配置作用下,为了连接成数据通路流水线结构,同一级计算阵列内部的计算模块之间以及不相邻级阵列计算单元之间不进行数据通路连接,每一级计算阵列(不包括第一级计算阵列)内部的计算模块的输入端均支持配置为相邻的前一级计算阵列的任意一计算模块的输出端相连。

如图1所示的可重构处理器内,可重构阵列与重构配置单元之间的连接方式包括但不限于直接耦合、间接耦合或通信连接,可以是电性,机械或其它的形式,用于传输计算模块的重构信息。在图1所示的所述可重构阵列内,存在m级计算阵列,m是大于或等于2的正数;第一级计算阵列内,设置有计算模块1_1、计算模块1_2、......、计算模块1_n1,这些计算模块之间不存在数据通路,其中,n1是大于或等于1的正数。对于1_n1,“1”表示第一级计算阵列的级数,“n1”表示第一级计算阵列内排列的计算模块所处的行数,综合表示为排列在第一级计算阵列的第n1行的计算模块,即图1所述可重构阵列内的第一列第n1行的计算模块;本实施例配置数据通过第一级计算阵列内的每一个计算模块的流水线深度都相等,本领域技术人员可知,若控制数据流经第一级计算阵列内的一个计算模块,则确定将这个计算模块连接入数据通路流水线结构的第一级流水线。需要说明的是,每一级计算阵列的内部设置至少一个计算模块。

第二级计算阵列内,设置有计算模块2_1、......、计算模块2_n2,这些计算模块之间不存在数据通路,但与第一级计算阵列内的被配置互联(互连)的计算模块之间存在数据通路,其中,n2是大于或等于1的数字,n2是不一定等于n1;对于2_n2,“2”表示第二级计算阵列的级数,“n2”表示第二级计算阵列内排列的计算模块所处的行数,综合表示为排列在第二级计算阵列的第n2行的计算模块,即图1所述可重构阵列内的第2列第n2行的计算模块。本实施例配置数据通过第二级计算阵列内的每一个计算模块的流水线深度都相等,本领域技术人员可知,若控制数据流经第二级计算阵列内的一个计算模块,则确定将这个计算模块连接入所述数据通路,即将这个计算模块接入所述数据通路流水线结构的第二级流水线。因此,如图1所示,第二级计算阵列与第一级计算阵列相邻设置在所述可重构阵列内;第二级计算阵列与第一级计算阵列是相邻的两级级联结构,第二级计算阵列与第一级计算阵列也连接为所述数据通路流水线结构中相邻两级流水线,第二级计算阵列相当于第一级计算阵列的相邻的后一级计算阵列,第一级计算阵列相当于第二级计算阵列的相邻的前一级计算阵列。

第m级计算阵列内,设置有计算模块m_1、......、计算模块m_nm,其中,nm大于或等于1,nm不一定等于n1,且nm也不一定等于n1n2;对于m_nm,“m”表示第m级计算阵列的级数,“nm”表示第m级计算阵列内排列的计算模块所处的行数,综合表示为排列在第m级计算阵列的第nm行的计算模块,即图1所述可重构阵列内的第m列第nm行的计算模块。m大于或等于2,在图1所示的实施例中m大于2,且在硬件上属于所述可重构阵列内分级排列的最后一级计算阵列。本实施例配置数据通过第m级计算阵列内的每一个计算模块的流水线深度都相等,本领域技术人员可知,若控制数据通过第m级计算阵列内的一个计算模块,则确定将这个计算模块连接入所述数据通路,即连接入所述数据通路流水线结构的第m级流水线,从而基于所述重构信息配置依次将第一级计算阵列至第m级计算阵列中相应的计算模块连接成为所述数据通路流水线结构,使得第m级流水线成为最后一级流水线。第m级计算阵列与第一级计算阵列不是相邻设置在所述可重构阵列内,它们之间没有通过跨级直连的方式建立所述数据通路,但第m级计算阵列与其相邻的前一级建立所述数据通路以连接为所述数据通路流水线结构中相邻两级流水线。则由图1可知,所述可重构阵列内所有的计算阵列内接入所述数据通路的计算模块连接成所述数据通路流水线结构,则所述数据通路流水线结构的每一级流水线分别与所述可重构阵列内每一级计算阵列一一对应,因此,图1所示的可重构阵列内,所述数据通路流水线结构的流水线深度是所有级的计算阵列的流水线深度之和,即m级计算阵列的流水线深度之和。

作为一种实施例,所述重构配置单元提供的计算模块的重构信息包括第二配置信息、第一配置信息、第三配置信息;计算模块包括计算控制单元、补偿单元、第一互联单元、第二互联单元。

结合图3可知,在计算模块a_b2中,注意这个计算模块a_b2表示第a级计算阵列内的第b2行的计算模块,具体识别方法参照前述实施例,在此不再赘述。后续的计算模块、计算模块内部划分出的逻辑单元的标记也是参照前述实施例对其在所述可重构阵列内的位置进行识别,在此不再赘述。需要补充的是,在当前一级计算阵列的同一计算模块内,第一互联单元的输入端是计算模块的输入端,第一互联单元的输出端与计算控制单元的输入端,计算控制单元的输出端与补偿单元的输入端连接,补偿单元的输出端与第二互联单元的输入端连接,第二互联单元的输出端是计算模块的输出端。

结合图3可知:第一互联单元a_b2用于根据所述第一配置信息,将第一互联单元a_b2和计算控制单元a_b2接入所述数据通路流水线结构的当前一级流水线(对应于图3的第a级流水线)。结合图3可知,第一互联单元(a-1)_b1在第一级计算阵列且接入第一级流水线时,第一互联单元(a-1)_b1将所述输入fifo组内相匹配的输出端输出的待计算数据输入给计算控制单元(a-1)_b1。第一互联单元a_b2不在第一级计算阵列时,第一互联单元a_b2将相邻的前一级计算阵列内相匹配的计算模块(a-1)_b1所输出的计算结果输入给计算控制单元a_b2;同理,第一互联单元(a+1)_b3不在第一级计算阵列时,第一互联单元(a+1)_b3将相邻的前一级计算阵列内相匹配的计算模块a_b2所输出的计算结果输入给计算控制单元(a+1)_b3。需要说明的是,在本实施例中,数据通过前述的第一互联单元是作不计流水线深度处理的。

计算控制单元a_b2用于根据第二配置信息选择连接成所述数据直通通路以控制输入所述计算控制单元a_b2的数据在不被使能触发执行计算的前提下直接通过并传输给补偿单元a_b2、或选择连接成数据计算通路以控制输入所述计算控制单元a_b2的数据在执行计算后传输给补偿单元a_b2;图3所示的计算控制单元(a+1)_b3、计算控制单元(a-1)_b1也是在第二配置信息的作用下选择连接成所述数据直通通路和数据计算通路。其中,所述数据通路包括数据直通通路和数据计算通路。需要说明的是,所述计算控制单元所执行的计算类型包括加减法、乘法、除法、开方、三角计算,这些具体的计算操作是在计算控制单元连接成数据计算通路时执行的,且耗费一定的时间而产生对应计算类型的的流水线深度,比如:计算控制单元为加减法器时,若连接成数据计算通路则将其流水线深度配置为1;计算控制单元为乘法器时,若连接成数据计算通路则将其流水线深度配置为4;计算控制单元为除法器时,若连接成数据计算通路则将其流水线深度配置为6;计算控制单元为开方器时,若连接成数据计算通路则将其流水线深度配置为4;计算控制单元为三角函数计算器时,若连接成数据计算通路则将其流水线深度配置为12;当计算控制单元连接成数据直通通路时,代表数据直通,直接连接到相邻的后一级计算阵列,则将计算控制单元的流水线深度配置为0。需要注意的是,每一级计算阵列内的计算控制单元的类型不全相同、或全部相同;其中,相邻两级计算阵列之间的计算控制单元的类型不全相同、或全部相同。在本实施例中,每一级计算阵列内的所述计算控制单元的类型与个数,可根据具体的应用领域与性能需求加以调整,在此基础上,所述可重构阵列通过改变计算模块的加减乘除计算方式,使得所述可重构阵列互联的各级计算控制单元适用于多种算法,可根据不同算法的需求进行灵活配置,从而改变了传统的计算阵列中一个算法配合一个固定阵列的模式,极大的提高了计算成本和效率。

优选地,所述第二配置信息也是一种选通信号,用于控制所述第一互联单元传输的数据在所述数据直通通路和所述数据计算通路之间选通输出,以满足所述算法在所述数据通路流水线结构的每一级流水线的计算需求;其中,计算控制单元采用数据选择器和算术逻辑电路实现,数据选择器的选通端是接收第二配置信息,算术逻辑电路所能执行的运算对应上述实施例的加减法、乘法、除法、开方、三角计算;算术逻辑电路的输入端连接上数据选择器的数据输出端,数据选择器用于根据所述第二配置信息将所述第一互联单元传输的数据在所述数据直通通路和所述数据计算通路之间切换输出,以满足所述算法在所述数据通路流水线结构的每一级流水线的计算需求。从而确定计算控制单元当前是否执行计算功能。

补偿单元用于根据第三配置信息选择相应的延时差值将所属的计算模块的流水线深度延时补偿为当前一级计算阵列所允许的最大流水线深度,本实施例是将所述计算控制单元的流水线深度加上所述补偿单元补偿的延时差值对应的流水线深度,获得的和值为当前一级计算阵列所允许的最大流水线深度;其中,当前一级计算阵列所允许的最大流水线深度是数据流经所述数据通路流水线结构的当前一级流水线所耗费时间最大的计算控制单元的流水线深度;因此,图3所示的补偿单元(a+1)_b3将计算控制单元(a+1)_b3的输出数据(理解为计算结果)进行延时处理,将计算模块(a+1)_b3的流水线深度补偿为第(a+1)级计算阵列所允许的最大流水线深度;若计算控制单元(a+1)_b3在第(a+1)级计算阵列中连接形成的数据计算通路中计算传输所耗费的时间,是第(a+1)级计算阵列中所有连接为通路的计算控制单元中最大的,则补偿单元(a+1)_b3产生的延时差值为0,视为不对计算控制单元(a+1)_b3进行延时补偿,使得第(a+1)级计算阵列所允许的最大流水线深度等于计算控制单元(a+1)_b3的流水线深度。同理,在确定第a级计算阵列所允许的最大流水线深度后,补偿单元a_b2也对计算控制单元a_b2执行类似的延时处理;在确定第(a-1)级计算阵列所允许的最大流水线深度后,补偿单元(a-1)_b1也对计算控制单元(a-1)_b1执行类似的延时处理。

结合图3可知:第二互联单元(a+1)_b3用于根据所述第一配置信息,将第二互联单元(a+1)_b3和补偿单元(a+1)_b3接入所述数据通路流水线结构的第(a+1)级流水线。结合图3可知,第二互联单元(a+1)_b3在最后一级(列)计算阵列且接入最后一级流水线时,将经过所述补偿单元(a+1)_b3延时补偿处理的数据传输给所述输出fifo组内相匹配的输出fifo;第二互联单元a_b2不在最后一级计算阵列时,第二互联单元a_b2将经过补偿单元a_b2延时补偿处理的数据传输给相邻的后一级计算阵列内相匹配的计算模块(a+1)_b3;同理地,第二互联单元(a-1)_b1不在最后一级计算阵列时,第二互联单元(a-1)_b1将经过补偿单元(a-1)_b1延时补偿处理的数据传输给相邻的后一级计算阵列内相匹配的计算模块a_b2;需要说明的是,在本实施例中,数据通过前述的第二互联单元是作不计流水线深度处理的。

在前述实施例中,计算模块通过第一互联单元与相邻的前一级计算阵列连接,计算模块通过第二互联单元与相邻的后一级计算阵列连接,在第一互联单元与第二互联单元之间连接有计算控制单元和补偿单元,形成基于所述重构信息的流水线,从而将所述计算模块按相邻列设置成可重构的互联逻辑模式,硬件结构简单;同时,在确定当前一级的计算阵列实际执行计算功能的计算模块的基础上确定当前一级的计算阵列的最大流水线深度,然后利用这个最大流水深度与同一级的计算阵列的计算控制单元的流水线深度之差,对相应的计算控制单元进行流水线深度的补偿,使数据通过每一级计算阵列的不同计算模块流水线深度都相同,进而解决粗粒度可重构处理器(所述可重构处理器的一种类型)的时钟频率不高,计算效率较低的问题。

在前述实施例中,所述第三配置信息是一种选通信号,用于在所述重构配置单元确定所述数据通路流水线结构的当前一级流水线中耗费流水线深度最大的所述计算控制单元后,(即在所述重构配置单元确定当前一级计算阵列中接入所述数据通路流水线结构中耗费的流水线深度最大的所述计算控制单元后),在当前一级流水线的所有计算模块内(在当前一级计算阵列的接入所述数据通路流水线结构的所有计算模块内),选通所述补偿单元内部设置的相匹配的用于补偿延时差值的寄存器路径,再控制当前一级流水线的计算控制单元的输出数据在所述寄存器路径传输(再控制当前一级计算阵列内接入所述数据通路流水线结构的不同计算控制单元的输出数据在所述寄存器路径传输),直至输出相应的计算模块,实现当前一级流水线的计算模块的流水线深度都延时补偿为当前一级计算阵列所允许的最大流水线深度,即同一级计算阵列内接入所述数据通路流水线结构的计算模块的流水线深度都延时补偿为当前一级计算阵列所允许的最大流水线深度,在该实施方式中,数据先经过第一流水线深度的计算控制单元,再被控制通过相匹配的用于补偿延时差值的寄存器路径,其中,数据经过相匹配的用于补偿延时差值的寄存器路径产生的流水线深度为第二流水线深度,则数据所耗费的流水线深度为第一流水线深度与第二流水线深度之和,等于当前一级计算阵列所允许的最大流水线深度,使得同一级计算阵列内接入所述数据通路流水线结构的计算模块都同步输出数据;其中,所述补偿单元是采用选择器和寄存器实现,从而有选择地对没有达到当前一级计算阵列的流水线深度的所述计算控制单元做流水补偿,在多级流水线结构上支持可重构阵列的数据处理整体流水化。

优选地,在所述补偿单元内,所述用于补偿延时差值的寄存器路径是由预设数量的寄存器组成的,且这些寄存器在所述第三配置信息的触发作用下,寄存同一计算模块内的所述计算控制单元输出的数据,当预设数量发生变化,则用于补偿延时差值的寄存器路径产生的延时时间也发生变化,导致数据经过时所产生的流水线深度也不同,从而基于选择器的数据选通作用,为流水线深度不同的计算控制单元提供相匹配的延时差值,这是本领域技术人员基于前述流水线深度的补偿机理,采用选择器和寄存器进行逻辑器件的组合改进可获得的,包括但不限于:选择器的选通端是用于接收所述第三配置信息,选择器的多个数据输出端分别连接上不同数量组成的寄存器路径,则同一个所述补偿单元内存在多种可供选择的寄存器路径,在所述第三配置信息的选通作用下,所述补偿单元选择将同一计算模块内的计算控制单元连接上相匹配的寄存器路径,再控制这个计算控制单元的输出数据在所述寄存器路径传输,直至输出这个计算模块,实现同一级计算阵列内接入所述数据通路流水线结构的计算模块的流水线深度都延时补偿为当前一级计算阵列所允许的最大流水线深度。在本实施例中,寄存所产生的延时差值是等于:所述当前一级计算阵列内所允许的最大流水线深度减去同一计算模块内与所述补偿单元相连接的所述计算控制单元的流水线深度而获得的时间差值。本实施例基于所述第三配置信息控制所述补偿单元内部的选择器将所述计算控制单元接入用于产生合适的延时差值的寄存器路径中,使得任意数据都以相等流水线深度通过同一级计算阵列内接入所述数据通路流水线结构的不同计算模块。

优选地,所述第一配置信息包括:将第一级计算阵列内的所述第一互联单元和所述输入fifo组内部设置的相匹配的输入fifo连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将当前一级计算阵列内的所述第一互联单元和相邻的前一级的计算阵列内的相匹配所述第二互联单元连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将当前一级计算阵列内的所述第二互联单元和相邻的后一级的计算阵列内的相匹配所述第一互联单元连接到所述数据通路流水线结构中所需的访问地址信息和时间信息、将最后一级计算阵列内的所述第一互联单元和所述输出fifo组内部设置的相匹配的输出fifo连接到所述数据通路流水线结构中所需的访问地址信息和时间信息;其中,所述第一互联单元和所述第二互联单元都支持在所述可重构阵列内或所述数据通路流水线结构内形成所述计算模块之间互联的拓扑结构,以满足所述算法的完整功能。本实施例该基于所述第一配置信息的要求,把数据送到多级流水线的第一级计算阵列的相应输入端,使得数据经过多级流水线上的计算阵列运算处理后,送到相应的输出fifo,从而在不同的计算应用需求下,当重构配置单元从提供一种重构信息切换为另一种重构信息时,保证在相邻级的计算阵列之间形成具有完整互连逻辑的流水线结构。

作为一种实施例,如图2所示,所述可重构阵列设置六级计算阵列,即6列计算阵列;每一级计算阵列都设置有四行的计算模块,即每一列计算阵列都分行排列4个计算模块,同一级计算阵列内每一行有一个计算模块,分别使用图2所示的加减法器、乘法器、除法器、开方器、三角函数计算器来表示,而这些计算模块在图2中所带的标记的意义参照图1实施例的“m_nm”的解释,即‘_’之前的标记表示所述可重构阵列的计算阵列的列数、或者所述可重构阵列的计算阵列的级数、所述数据通路流水线结构的流水线级数(每一级计算阵列是每一级流水线),‘_’之后的标记表示所述可重构阵列的计算模块的行数,即计算模块分布在所属的计算阵列的行数。本实施例将六级计算阵列在所述重构配置单元提供的重构信息的配置作用下连接成六级流水线,以形成所述数据通路流水线结构并支持特定粒度的计算操作;其中,同一级计算阵列内每一行只设置一个计算模块;其中,第一级计算阵列设置的四个计算模块的输入端基于所述重构信息分别连接上所述输入fifo组内设置的四个不同的输入fifo的输出端,第六级计算阵列设置的一个计算模块的输出端基于所述重构信息连接上所述输出fifo组内设置的一个输出fifo的输出端。

需要说明的是,在图2中,所述可重构阵列中计算模块都采用流水化设计,计算模块内部的不同类型计算控制单元有不同流水线深度,其中,加减法器内部的计算控制单元的流水线深度为1,乘法器内部的计算控制单元的流水线深度为4,除法器内部的计算控制单元的流水线深度为6,开方器内部的计算控制单元的流水线深度为4,三角函数计算器内部的计算控制单元的流水线深度为12,当所述计算控制单元选择作为数据直通通路连接时,代表数据直通,流水线深度为0。这里的加减法器内部的计算控制单元在连接为所述数据计算通路时,用于执行加法计算或减法计算,由于执行加法计算和执行减法计算所耗费的流水线深度都相同,所以将执行加法计算或减法计算简称为加减法计算。

图2填充斜线的计算模块,用于代表其内部的计算控制单元通过连接成所述数据计算通路来执行相应功能计算;而带箭头的连线指示的且没填充斜线的计算模块,用于代表内部的计算控制单元通过连接成所述数据直通通路而实现数据不经处理而直通。

如图2所示,第一级计算阵列包括加减法器1_1、加减法器1_2、加减法器1_3、加减法器1_4;第一级计算阵列内的加减法器1_1和加减法器1_4的内部的计算控制单元都被所述重构信息所包括的第二配置信息配置作用下连接成数据计算通路,被应用于执行加减法计算;而第一级计算阵列内加减法器1_2和加减法器1_3的内部都在所述重构信息所包括的第二配置信息配置作用下连接成数据直通通路;加减法器1_1、加减法器1_4、加减法器1_2和加减法器1_3都连接为所述数据通路流水线结构的第一级流水线;在所述第三配置信息的配置作用下,第一级计算阵列对应接入的第一级流水线的流水线深度为1。其中,基于第一配置信息,加减法器1_1接收所述输入fifo组的第一输入fifo传输的数据和第二输入fifo传输的数据,加减法器1_2接收所述输入fifo组的第二输入fifo传输的数据,加减法器1_3接收所述输入fifo组的第三输入fifo传输的数据,加减法器1_4接收所述输入fifo组的第三输入fifo传输的数据和第四输入fifo传输的数据。

第二级计算阵列包括乘法器2_1、乘法器2_2、乘法器2_3、乘法器2_4;在第二级计算阵列内,乘法器2_1基于所述第一配置信息分别接收加减法器1_2的输出数据和加减法器1_1的输出数据,乘法器2_3基于所述第一配置信息分别输入加减法器1_2的输出数据和加减法器1_3的输出数据,然后乘法器2_1和乘法器2_3的内部的计算控制单元都在所述重构信息所包括的第二配置信息的配置作用下连接成所述数据计算通路,被应用于执行乘法计算;在第二级计算阵列内,乘法器2_4基于所述第一配置信息分别接收加减法器1_4的输出数据,然后基于所述第二配置信息的配置作用,乘法器2_4内部的计算控制单元连接成所述数据直通通路。综上,乘法器2_1、乘法器2_3和乘法器2_4都连接为所述数据通路流水线结构的第二级流水线;在所述第三配置信息的配置作用下,第二级计算阵列对应接成的第二级流水线的流水线深度为4。

第三级计算阵列包括加减法器3_1、加减法器3_2、加减法器3_3、加减法器3_4;在第三级计算阵列内,加减法器3_1基于所述第一配置信息接收乘法器2_1的输出数据,加减法器3_3基于所述第一配置信息接收乘法器2_3的输出数据,加减法器3_4基于所述第一配置信息接收乘法器2_4的输出数据;加减法器3_1、加减法器3_3和加减法器3_4的内部的计算控制单元都在所述重构信息所包括的第二配置信息配置作用下连接成数据直通通路;加减法器3_1、加减法器3_3和加减法器3_4都连接为所述数据通路流水线结构的第三级流水线;在所述第三配置信息的配置作用下,第三级计算阵列对应接成的第三级流水线的流水线深度为0。

第四级计算阵列包括乘法器4_1、乘法器4_2、乘法器4_3、除法器4_4;在第四级计算阵列内,乘法器4_2基于所述第一配置信息接收加减法器3_1的输出数据和加减法器3_3的输出数据,除法器4_4基于所述第一配置信息接收加减法器3_3的输出数据和加减法器3_4的输出数据;乘法器4_2的内部的计算控制单元在所述第二配置信息的配置作用下连接成所述数据计算通路,应用于执行乘法计算;除法器4_4的内部的计算控制单元在所述第二配置信息的配置作用下连接成所述数据计算通路,应用于执行除法计算;乘法器4_2、除法器4_4都连接为所述数据通路流水线结构的第四级流水线;在所述第三配置信息的配置作用下,由于除法器内部的计算控制单元的流水线深度为6,大于乘法器内部的计算控制单元的流水线深度,所以除法器作为当前一级流水线中耗费流水线深度最大的所述计算控制单元,则将第四级计算阵列对应接成的第四级流水线的流水线深度为6。

同理,第五级计算阵列包括加减法器5_1、加减法器5_2、加减法器5_3、加减法器5_4;在第五级计算阵列内,加减法器5_2基于所述第一配置信息接收乘法器4_2的输出数据和除法器4_4的输出数据;加减法器5_2的内部的计算控制单元在所述第二配置信息的配置作用下连接成所述数据计算通路,应用于执行加减法计算;加减法器连接为所述数据通路流水线结构的第五级流水线;在所述第三配置信息的配置作用下,第五级计算阵列对应接成的第五级流水线的流水线深度为1。

同理,第六级计算阵列包括乘法器6_1、开方器6_2、除法器6_3、三角计算器6_4;在第六级计算阵列内,开方器6_2基于所述第一配置信息接收加减法器5_2的输出数据;开方器6_2的内部的计算控制单元在所述第二配置信息的配置作用下连接成所述数据计算通路,应用于执行开方计算;开方器6_2连接为所述数据通路流水线结构的第六级流水线;在所述第三配置信息的配置作用下,第六级计算阵列对应接成的第六级流水线的流水线深度为4。开方器6_2基于所述第一配置信息输出数据至输出fifo内部的输出fifo组。

综上,在所述第三配置信息的配置作用下,所述可重构处理器连接出的满足算法的计算需求的数据通路流水线结构的流水线深度为前述的六级流水线的流水线深度之和,具体为:1+4+0+6+1+4=16。使得连接成多级流水线的可重构阵列根据当前配置的数据通路,自适应调整流水线深度之和为16。这样,具备多级流水线的可重构阵列整体可看做一个16级流水线深度的复杂计算模块。对不同的应用需求,当所述可重构处理器从一种配置变为另一种配置时,所述可重构阵列可根据每一级计算阵列的流水深度,自适应调整流水线深度之和。

具体地,基于所述第三配置信息的配置作用,第一级计算阵列中的加减法器1_2和加减法器1_3内部的计算控制单元的流水线深度为0,需要控制各自内部的补偿单元做一级的流水补偿,即使用第一预设数量的寄存器对计算控制单元的输出数据完成打一拍延时补偿,为第一级计算阵列延时补偿1级的流水线深度。

第二级计算阵列中的乘法器2_4内部的计算控制单元连接为所述数据直通通路,乘法器2_4内部的计算控制单元的流水线深度为0,需要所述第三配置信息控制内部的补偿单元对乘法器2_4内部的计算控制单元的输出数据做4级的流水线补偿,以将乘法器2_4的流水线深度延时补偿为第二级计算阵列所允许的最大流水线深度,即内部的计算控制单元连接为所述数据计算通路的乘法器2_1或乘法器2_3的流水线深度。

第四级计算阵列中的乘法器4_2的内部的计算控制单元的流水线深度为4,小于内部的计算控制单元连接为所述数据计算通路的除法器4_4的流水线深度6,除法器4_4的流水线深度配置为第四级计算阵列所允许的最大流水线深度;因此需要所述第三配置信息控制内部的补偿单元对乘法器4_2内部的计算控制单元的输出数据做2级的流水线补偿,以将乘法器4_2的流水线深度延时补偿为第二级计算阵列所允许的最大流水线深度。

基于前述的可重构处理器,本发明另一实施例公开一种配置方法,包括:根据当前应用场景匹配算法的计算需求,将所述可重构阵列的相邻级的计算阵列连接出支持数据以相等流水线深度通过同一级计算阵列内不同计算模块、且满足当前应用场景匹配的算法的计算需求的数据通路流水线结构;在同一级计算阵列内,接入数据通路流水线结构的不同的计算模块的流水线深度都相等,使得接入数据通路流水线结构的不同的计算模块都同步输出数据;

在数据通路流水线结构中,配置同一级计算阵列内不同的计算模块的流水线深度都相等,都等于同一级的计算阵列所允许的最大流水线深度。由于相对小的流水线深度的计算模块执行计算操作的耗时需要延时等待相对大的流水线深度的计算模块执行计算操作,所以本实施例配置同一级的计算阵列所允许的最大流水线深度是同一级的计算阵列内用于流水线中执行计算操作的计算模块中的最大流水线深度或这个属于计算模块的最大流水线深度的预设倍数。这样保证同一级计算阵列内不同的计算模块同步输出(并行输出)数据,提高可重构处理器的吞吐率。

每一级计算阵列的内部设置至少一个计算模块;其中,在一个可重构阵列内,每一列上设置的一个计算阵列是一级计算阵列,计算阵列的数目是预先设定的;其中,所述数据通路流水线结构的每一级流水线分别对应一级计算阵列;当前一级计算阵列中接入数据通路的计算模块是接入所述数据通路流水线结构的当前一级流水线;其中,流水线深度是数据流经所述数据通路流水线结构的相应的数据通路所耗费的时间。与现有技术相比,所述配置方法以用于执行计算指令的相邻互连的计算模块为基础,重构调节数据经过每一级计算阵列的流水线深度都相同且满足算法的计算需求的数据通路流水线结构,从而让可重构处理器根据不同的算法配置出适应的流水线深度,并在此基础上实现可重构阵列的数据处理操作的整体流水化,提高了可重构处理器的数据吞吐率。

所述配置方法还包括:基于重构信息还配置所述可重构阵列接收来自所述输入fifo组传输的待计算数据,并将待计算数据传输给所述数据通路流水线结构,同时配置所述可重构阵列向所述输出fifo组输出所述数据通路流水线结构的最后一级所对应的计算阵列的计算结果。所述配置方法配置外部数据进入所述可重构处理器的缓存,同时设置所述可重构处理器向外部输出数据的缓存,以匹配所述算法对于所述可重构处理器与外部的系统元件的数据交换、存储要求。

作为一种实施例,如图4所示,所述配置方法具体包括:

步骤s41、基于前述实施例的重构信息开始对可重构阵列进行配置,然后进入步骤s42。

步骤s42、判断是否遍历完当前一级计算阵列内接入数据通路的所有计算模块,是则进入步骤s413,否则进入步骤s43。需要说明的是,数据通路是数据通路流水线结构的一部分,作为单元去描述所述数据通路流水线结构的每一级流水线。

步骤s43、开始遍历当前一级计算阵列内接入所述数据通路的新的计算模块,然后进入步骤s44。

步骤s44、判断当前一级计算阵列是否被检测为对应所述数据通路流水线结构的第一级流水线,即判断当前一级计算阵列是否存在接入第一级流水线的数据通路的计算模块,是则进入步骤s45,否则进入步骤s46;

步骤s45、将第一互联单元和所述计算控制单元接入所述数据通路流水线结构的第一级流水线,同时将第二互联单元和补偿单元接入所述数据通路流水线结构的第一级流水线,从而在第一级计算阵列内连接成所述数据通路流水线结构的第一级流水线。然后进入步骤s49。

步骤s49、判断计算控制单元是否检测到计算选通信号(对应于前述实施例的第三配置信息的配置作用),是则进入步骤s410,否则进入步骤s411。

步骤s410、配置输入所述计算控制单元的数据在执行计算后输出给补偿单元,然后进入步骤s412。

步骤s411、配置输入所述计算控制单元的数据在不执行计算的前提下直接通过并传输给补偿单元。

步骤s412、配置补偿单元选择相应的延时差值将所述计算控制单元的流水线深度延时补偿为当前一级计算阵列所允许的最大流水线深度,具体补偿方法参照前述可重构处理器的补偿单元的实施例。再返回步骤s42。

步骤s46、判断当前一级计算阵列是否被检测为对应最后一级流水线,是则进入步骤s47,否则进入步骤s48。

步骤s47、将第一互联单元和所述计算控制单元接入所述数据通路流水线结构的最后一级流水线,同时将第二互联单元和补偿单元接入所述数据通路流水线结构的最后一级流水线,然后进入步骤s49。

步骤s48、将第一互联单元和所述计算控制单元接入所述数据通路流水线结构的当前一级流水线,同时将第二互联单元和补偿单元接入所述数据通路流水线结构的当前一级流水线,然后进入步骤s49。

步骤s413、判断是否遍历完可重构阵列内所有的计算阵列,是则进入步骤s415,否则进入步骤s414。

步骤s414、开始遍历相邻的下一级计算阵列,再返回步骤s42。

步骤s415、确定遍历完可重构阵列内所有列(所有级)的计算阵列,则结束对所述可重构阵列的重构配置操作。

其中,计算模块包括计算控制单元、补偿单元、第一互联单元、第二互联单元;在每一级计算阵列的同一计算模块内,第一互联单元的输入端是计算模块的输入端,第一互联单元的输出端与计算控制单元的输入端,计算控制单元的输出端与补偿单元的输入端连接,补偿单元的输出端与第二互联单元的输入端连接,第二互联单元的输出端是计算模块的输出端。

前述步骤可以确定当前一级的计算阵列实际执行计算功能的计算模块并确定当前一级的计算阵列的最大流水线深度,然后利用这个最大流水深度与同一级的计算阵列的计算控制单元的流水线深度之差,对相应的计算控制单元进行流水线补偿,使数据通过每一级计算阵列的不同计算模块流水深度都相同,进而解决粗粒度可重构处理器(所述可重构处理器的一种类型)的时钟频率不高,计算效率较低的问题。同时,通过配置第一互联单元与第二互联单元在计算模块内外部的连接方式,来将计算控制单元和补偿单元连接成为所述数据通路流水线结构的一级流水线结构,进而实现多级流水控制。

需要说明的是,在所述可重构阵列中,互不相邻级的两个计算阵列之间不通过所述数据通路跨级连接,以使得互不相邻级的两个计算阵列不直接连接成所述数据通路流水线结构;且同一级计算阵列内的不同计算模块之间不存在所述数据通路,其中,所述数据通路是数据传输的路径。

在本申请所提供的实施例中,应该理解到,所揭露的系统、芯片,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目。

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