一种动态可重构处理器内数据流运转的方法转让专利

申请号 : CN201110140357.6

文献号 : CN102184089B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘雷波王延升朱敏戚斌杨军曹鹏时龙兴尹首一魏少军

申请人 : 清华大学

摘要 :

本发明提供了一种动态可重构处理器内数据流运转的方法,根据数据的不同作用范围对数据进行分类且对数据进行判定操作,按照判定结果采用不同的方式将其送至处理单元阵列进行处理,待处理完成后按照配置信息,选用相应的通路将处理单元阵列将处理完的运算结果发送到指定位置,有效避免了数据冲突,保证数据流结构的清晰,各模块之间可以高效的协同,便于控制。

权利要求 :

1.一种动态可重构处理器内数据流运转的方法,其特征在于,所述方法包括:动态可重构处理器到数据后,判定该数据是否仅被使用一次且将在下一次处理单元阵列运算中被使用同时满足作为处理单元阵列操作数的要求;所述动态可重构处理器中数据划分为外部数据,片内交互数据和处理单元阵列内部数据;若是,则内外部数据转换装置将该数据直接送到处理单元阵列进行处理;若否,则内外部数据转换装置将该数据写出到内部数据存储器,由内部数据读入装置将数据从内部数据存储器中读入,送到处理单元阵列进行处理;处理单元阵列完成数据处理完毕后,根据配置信息将处理单元阵列内部数据的运算结果发送到指定位置。

2.如权利要求1所述的方法,其特征在于:

所述处理单元阵列内部数据的来源包括处理单元阵列的上一次运算结果、片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入的片内交互数据、内外部数据转换装置从外部数据缓存器读入的外部数据、以及内部数据存储器中的数据。

3.如权利要求1所述的方法,其特征在于:

所述配置信息所指定的位置包括传递到自身处理单元阵列的输入端、处理器外部存储器、子单元间数据交互暂存器、处理器间数据交互暂存器、以及内部数据存储器。

4.如权利要求1所述的方法,其特征在于:

所述处理单元阵列内部数据为处理单元阵列的上一次运算结果、片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入的片内交互数据、内外部数据转换装置从外部数据缓存器读入的外部数据、以及内部数据存储器中的数据中的一种或多种。

5.如权利要求1所述的方法,其特征在于:

对于外部数据,处理单元阵列处理完数据后,内部数据写出装置从处理单元阵列读入数据处理结果,将需要送往外部的数据写出到内部数据缓存器,然后外部数据写出装置将数据从内部数据缓存器中读入,写出到处理器外部存储器。

6.如权利要求5所述的方法,其特征在于:

所述外部数据在被读入和写出处理单元阵列的过程中,分别要经过外部数据缓存器和内部数据缓存器。

7.如权利要求6所述的方法,其特征在于:

读入外部数据时,外部数据读入装置只需关注外部数据缓存器是否处于可写状态。

8.如权利要求6所述的方法,其特征在于:

写出外部数据时,外部数据写出装置只需关注内部数据缓存器是否处于可读状态。

说明书 :

一种动态可重构处理器内数据流运转的方法

技术领域

[0001] 本发明涉及嵌入式系统领域中的动态可重构处理器技术领域,特别是涉及一种动态可重构处理器内数据流运转的方法。

背景技术

[0002] 动态可重构处理器是一种新生的处理器构架,其较之以往的单核处理器、专用芯片、现场可编程逻辑阵列有着显著的优势,是未来电路结构发展的一个方向。
[0003] 首先,动态可重构处理器内往往含有多个算术逻辑单元,且数量巨大,称之为众核阵列。阵列内部配以灵活度高的路由单元,实现算术逻辑单元之间多样化的互联。因此,经路由单元连接后的众核阵列可实现对数据流的高速处理,较传统的单核以及少核处理器在性能上有着巨大的优势。同时,较固化的专用电路在灵活性上也有着巨大的优势。
[0004] 其次,较传统的静态可重构电路——现场可编程逻辑阵列而言,动态可重构处理器有动态的特点,即在电路运行过程中可动态的切换电路的功能,而非以往静态可重构电路一成不变的不改变电路功能,只是在电路运行之前烧写电路功能,对电路进行初始化。这样做的好处在于通过时分复用的方式减少了电路的规模,原因在于之前的电路结构的全映射现在变为分块映射,而块与块之间恰好采取了动态切换的方式。
[0005] 动态可重构处理器在进行计算时会产生大量的数据流动,因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新地提出一种有效的措施,以解决现有技术中存在的问题,有效避免数据冲突,保证各个模块之间正确高效的协同工作。

发明内容

[0006] 本发明所要解决的技术问题是提供一种动态可重构处理器内数据流运转的方法,有效避免动态可重构处理器进行计算时的数据冲突,保证各个模块之间正确高效的协同工作。
[0007] 为了解决上述问题,本发明公开了一种动态可重构处理器内数据流运转的方法,所述方法包括:
[0008] 动态可重构处理器到数据后,判定该数据是否仅被使用一次且将在下一次处理单元阵列运算中被使用同时满足作为处理单元阵列操作数的要求;所述动态可重构处理器中数据划分为片外数据,片内交互数据和处理单元阵列内部数据;
[0009] 若是,则内外部数据转换装置将该数据直接送到处理单元阵列进行处理;
[0010] 若否,则内外部数据转换装置将该数据写出到内部数据存储器,由内部数据读入装置将数据从内部数据存储器中读入,送到处理单元阵列进行处理;
[0011] 处理单元阵列完成数据处理完毕后,根据配置信息将处理单元阵列内部数据的运算结果发送到指定位置。
[0012] 优选的,所述处理单元阵列内部数据的来源包括处理单元阵列的上一次运算结果、片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入的片内交互数据、内外部数据转换装置从外部数据缓存器读入的外部数据、以及内部数据存储器中的数据。
[0013] 优选的,所述配置信息所指定的位置包括传递到自身处理单元阵列的输入端、处理器外部存储器、子单元间数据交互暂存器、处理器间数据交互暂存器、以及内部数据存储器。
[0014] 优选的,所述处理单元阵列内部数据为处理单元阵列的上一次运算结果、片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入的片内交互数据、内外部数据转换装置从外部数据缓存器读入的外部数据、以及内部数据存储器中的数据中的一种或多种。
[0015] 优选的,对于片外数据,处理单元阵列处理完数据后,内部数据写出装置从处理单元阵列读入数据处理结果,将需要送往片外的数据写出到内部数据缓存器,然后外部数据写出装置将数据从内部数据缓存器中读入,写出到处理器外部存储器。
[0016] 优选的,所述外部数据在被读入和写出处理单元阵列的过程中,分别要经过外部数据缓存器和内部数据缓存器。
[0017] 优选的,读入片外数据时,外部数据读入装置只需关注外部数据缓存器是否处于可写状态。
[0018] 优选的,写出片外数据时,外部数据写出装置只需关注内部数据缓存器是否处于可读状态。
[0019] 与现有技术相比,本发明具有以下优点:
[0020] 本发明根据数据的不同作用范围对数据进行分类且对数据进行判定操作,按照判定结果采用不同的方式将其送至处理单元阵列进行处理,待处理完成后按照配置信息,选用相应的通路将处理单元阵列将处理完的运算结果发送到指定位置,有效避免了数据冲突,保证数据流结构的清晰,各模块之间可以高效的协同,便于控制。

附图说明

[0021] 图1是本发明具体实施方式中所述的一种典型的动态可重构处理器的数据流示意图;
[0022] 图2是本发明具体实施方式中所述的一种动态可重构处理器间的数据交互示意图;
[0023] 图3是本发明实施例中所述的一种动态可重构处理器内数据流运转的方法流程图;
[0024] 图4是本发明实施例中所述的动态可重构处理器数据流运转示意图;
[0025] 图5是本发明实施例中所述的一个处理单元阵列的运算流程图。

具体实施方式

[0026] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0027] 一种典型的动态可重构处理器的数据流示意图如图1所示。结合图1,动态可重构处理器的数据运转流程可概括如下:处理器外部存储器中的数据被分发至处理器内部多个子单元内,多个子单元同时进行数据处理,以达并行处理的效果。各子单元处理完后,处理结果被写出到处理器外部存储器;同一个可重构处理器内部的各个子单元之间存在数据交互,即子单元B可以使用子单元A的计算结果。对于子单元间的数据交互,是通过子单元间同步控制器来进行控制的;可重构处理器之间也存在数据交互,即处理器B的子单元可以使用处理器A的子单元的计算结果。
[0028] 处理器间的数据交互示意图如图2所示。动态可重构处理器在结构上可分为以下四个部分:
[0029] 1.数据存储装置
[0030] a)存储待处理数据。
[0031] b)存储运算的中间结果。
[0032] c)存储运算的最终结果。
[0033] d)用于数据交互的缓存。
[0034] 2.数据转移装置
[0035] 用于数据存储装置之间的数据搬运。
[0036] 3.运算单元
[0037] a)运算单元即处理单元阵列,具体参见图1。
[0038] b)处理单元是一个算术逻辑运算单元,可实现基本的算术运算功能和逻辑运算功能以及一些定制的算术逻辑运算功能。
[0039] c)处理单元之间通过路由单元连接,以实现处理单元之间的灵活且快速的数据传递。
[0040] d)整个处理单元阵列通过时序控制单元控制,以协调处理单元阵列的输入、运算、输出之间的时序关系。
[0041] e)处理单元阵列可实现对大批量数据进行循环操作的快速处理。
[0042] 4.同步控制装置
[0043] a)同步控制装置即子单元间同步控制器。
[0044] b)在其控制下,多个子单元(1个至N个,N为子单元个数)均完成各自的指定子任务后多个子单元(此处的多个可与之前的多个不一致)才可执行其各自子任务序列中的下一个子任务。
[0045] c)子单元间同步控制器实现了某任务在被划分为多个子任务后,分发至多个子单元并行执行,多个子单元并行执行完多个子任务后的同步,同步后才可开始下一任务的并行化执行。
[0046] 实施例:
[0047] 参照图3,示出了本发明的一种动态可重构处理器内数据流运转的方法流程图,所述方法具体包括:
[0048] 步骤S301,动态可重构处理器到数据后,判定该数据是否仅被使用一次且将在下一次处理单元阵列运算中被使用同时满足作为处理单元阵列操作数的要求;所述动态可重构处理器中数据划分为片外数据,片内交互数据和处理单元阵列内部数据;
[0049] 本实施例中,根据数据在动态可重构处理器内部的作用范围,将数据分为片外数据,片内交互数据以及处理单元阵列内部数据。具体的,片外数据是指从处理器外部存储器读入的数据以及写出到处理器外部存储器的数据,其数据通路会在后面的内容中详细介绍。片内交互数据是指处理器内部各子单元间共享的数据以及不同处理器之间共享的数据,其数据通路会在后面的内容中详细介绍。处理单元阵列内部数据是指处理单元阵列在进行运算的过程中涉及到的读入数据和写出数据,其数据通路会在后面的内容中详细介绍。
[0050] 若是,则执行步骤S302;
[0051] 若否,则执行步骤S303;
[0052] 步骤S302,内外部数据转换装置将该数据直接送到处理单元阵列进行处理;
[0053] 步骤S303,内外部数据转换装置将该数据写出到内部数据存储器,由内部数据读入装置将数据从内部数据存储器中读入,送到处理单元阵列进行处理;
[0054] 步骤S304,处理单元阵列完成数据处理完毕后,根据配置信息将处理单元阵列内部数据的运算结果发送到指定位置。
[0055] 按照所划分的数据类别,处理单元阵列将处理完的运算结果按照配置信息,选用相应的通路发送到指定位置,各条通路拥有数据存储装置和数据转移装置,具体的,可参照图4示出的动态可重构处理器数据流运转示意图,其中数据存储装置分为5个,具体说明如下:外部数据缓存器,用于将读入的外部数据缓存,待需要时被读出。内部数据存储器,用于暂存处理单元阵列运算所要使用的数据,待需要时数据被读出,输出到处理单元阵列。内部数据缓存器,用于对处理单元阵列的结果数据进行缓存,待输出至处理器外。子单元间数据交互暂存器,用于暂存子单元A的结果数据,待子单元B读出,以实现子单元间的数据交互。处理器间数据交互暂存器,用于暂存处理器A子单元a的结果数据,待处理器B子单元b读出,以实现处理器间的数据交互。进一步说明的,所述子单元间数据交互暂存器由处理器的内的全部子单元共享;处理器间数据交互暂存器由全部处理器包含的全部子单元共享。
[0056] 数据转移装置用于将数据从数据存储装置读出,并写入另一数据存储装置,使数据在数据存储装置之间转移,最终实现将数据写入处理单元阵列。或者将数据从数据存储装置读出,直接写入处理单元阵列。处理单元阵列运行完后,将处理单元阵列的结果数据读出。据转移装置分为6个:外部数据读入装置,片内数据交互装置,内外部数据转换装置,内部数据读入装置,内部数据写出装置和外部数据写出装置。
[0057] 按数据流的流动方向进行具体的说明,外部数据读入装置,用于将动态可重构处理器外待处理的数据读入动态可重构处理器内,缓存于外部数据缓存器。片内数据交互装置,用于将子单元间数据交换暂存器或者处理器间数据交互暂存器内存储的其他子单元的结果数据读出,分发至当前子单元的内部数据存储器或直接分发至处理单元阵列,这取决于此子单元的结果数据是否可直接被处理单元阵列处理。内外部数据转换装置,用于将外部数据缓存器内缓存的外部数据分发至内部数据存储器或直接分发至处理单元阵列,这取决于此外部数据是否可直接被处理单元阵列处理。内部数据读入装置,用于将内部数据存储器里存储的当前子单元的内部数据读出,并且在需要时将多块2D数据拼接成一块2D数据,最终将拼接后的数据(如果需要拼接的话)发送到处理单元阵列。内部数据写出装置,用于将处理单元阵列的结果数据读出,再写入至处理单元阵列供紧接着运行处理单元阵列时使用,或写入至内部数据存储器将数据缓存起来,或写入子单元间数据交互暂存器供子单元间数据交互使用,或写入处理器间数据交互暂存器供处理器间数据交互使用,或写入内部数据缓存器待输出至处理器外。外部数据写出装置,用于将缓存于内部数据缓存器的子单元的结果数据输出至处理器外。
[0058] 本实施例中以2D的方式描述数据,一块2D数据块每行数据个数相同,并且以行对齐的方式存储在存储器中。
[0059] 具体到各类数据,其数据流的运转情况如下:
[0060] 片外数据的数据流运转,以图4为对象进行说明。外部数据读入装置将片外数据从处理器外部存储器中读入,然后根据配置信息把数据写出到指定的处理单元阵列的外部数据缓存器。内外部数据转换装置将数据从外部数据缓存器中读入,分两种情况对数据进行处理:
[0061] 当从外部数据缓存器中读入的数据同时满足下面三个条件时,内外部数据转换装置会把数据直接送到处理单元阵列进行处理:1该数据仅被使用一次;2该数据需要被处理单元阵列立即使用(即在下一处理单元阵列运算中被使用);3该数据无需和内部数据存储器中的数据进行拼接操作(即满足作为处理单元阵列操作数的要求)。
[0062] 如果从外部数据缓存器中读入的数据不能同时满上述的三个条件,内外部数据转换装置会把数据写出到内部数据存储器,再由内部数据读入装置将数据从内部数据存储器中读入,送到处理单元阵列进行处理。
[0063] 数据处理完毕后,内部数据写出装置从处理单元阵列读入数据处理结果,将需要送往片外的数据写出到内部数据缓存器,然后外部数据写出装置将数据从内部数据缓存器中读入,写出到处理器外部存储器。
[0064] 外部数据在被读入和写出处理单元阵列的过程中,分别要经过外部数据缓存器和内部数据缓存器,它们对数据流运转的作用为:隔离了片外的数据读写和片内的数据处理,使控制变得简单。读入片外数据时,外部数据读入装置只需要关注外部数据缓存器是否处于可写状态;写出片外数据时,外部数据写出装置只需要关注内部数据缓存器是否处于可读状态。数据缓存器具有数据预取功能,可以滤除数据流量尖峰,克服数据流量的不稳定性所造成的影响。
[0065] 同样的,片内交互数据的数据流运转以图4为对象进行说明。片内数据交互装置根据配置信息从子单元间数据交互暂存器或者处理器间数据交互暂存器读入所需要的数据,分两种情况对数据进行处理:
[0066] 当从子单元间数据交互暂存器或者处理器间数据交互暂存器读入的数据同时满足下面三个条件时,片内数据交互装置会把数据直接送到处理单元阵列进行处理:1该数据仅被使用一次;2该数据需要被处理单元阵列立即使用;3该数据无需和内部数据存储器中的数据进行拼接操作。
[0067] 如果从子单元间数据交互暂存器或者处理器间数据交互暂存器读入的数据不能同时满足上述的三个条件,片内数据交互装置会把数据写出到内部数据存储器,再由内部数据读入装置将数据从内部数据存储器中读入,送到处理单元阵列进行处理。
[0068] 数据处理完毕后,内部数据写出装置从处理单元阵列读入数据处理结果,分两种情况对数据进行处理:
[0069] 如果数据需要被同一个可重构处理器内的其他子单元使用,则内部数据写出装置将数据写出到子单元间数据交互暂存器。
[0070] 如果数据需要被其他可重构处理处理器使用,则内部数据写出装置将数据写出到处理器间数据交互暂存器。
[0071] 同样的,处理单元阵列内部数据的数据流运转以图4为对象进行说明。
[0072] 处理单元阵列输入端的数据来源按照图示从上到下的顺序有四种情况:当前运算需要立即使用自身处理单元阵列的上一次运算结果,并且该运算结果仅被使用一次,同时该运算结果无需和内部数据存储器中的数据进行拼接操作,则处理单元阵列的输出端直接将运算结果传递到自身的输入端;当前运算需要立即使用片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入的片内交互数据,并且该数据仅被使用一次,同时该数据无需和内部数据存储器中的数据进行拼接操作,则片内数据交互装置直接将数据传递给处理单元阵列的输入端;当前运算需要立即使用内外部数据转换装置从外部数据缓存器读入的外部数据,并且该数据仅被使用一次,同时该数据无需和内部数据存储器中的数据进行拼接操作,则内外部数据转换装置直接将数据传递给处理单元阵列的输入端;当前运算需要使用内部数据存储器中的数据(该数据可能是之前存储的外部数据,之前存储的片内交互数据,或者自身处理单元阵列之前的运算结果),内部数据读入装置将所需数据从内部数据存储器中读入,传递到处理单元阵列的输入端。处理单元阵列的输入可以是以上四种情况的任意组合。
[0073] 内部数据写出装置将处理单元阵列的运算结果读入,然后根据配置信息将运算结果发送到指定位置,数据的流向按照图示从上到下的顺序有五种情况:当前运算的结果同时满足下面三个条件时,内部数据写出装置直接将运算结果传递到自身处理单元阵列的输入端:1该运算结果仅被使用一次;2该运算结果需要被处理单元阵列在下一次运算中立即使用;3该运算结果无需和内部数据存储器中的数据进行拼接操作;当前运算的结果需要输出到处理器外部存储器,内部数据写出装置首先将运算结果写出到内部数据缓存器,然后外部数据写出装置从内部数据缓存器中读入运算结果,再写出到处理器外部存储器;当前运算的结果需要被同一个可重构处理器内的其他子单元使用,则内部数据写出装置将运算结果写出到子单元间数据交互暂存器;当前运算的结果需要被其他可重构处理器使用,则内部数据写出装置将运算结果写出到处理器间数据交互暂存器;如果当前运算的结果需要被自身处理单元阵列使用,但是不能同时满足上述的三个条件,内部数据写出装置将运算结果写出到内部数据存储器。处理单元阵列的输出可以是以上五种情况中某几种的组合。如上所述,处理单元阵列的输入端共有四种数据来源,输出端共有五种数据流向,可组合成二十种数据通路。
[0074] 下面以一个简单的流程图为例来说明与此流程图对应的动态可重构处理器内部的数据流运转。
[0075] 一个处理单元阵列的运算流程图如图5所示,每个方框代表处理单元阵列的一次运算。
[0076] 第N次运算的结果需要和第N+2次运算的结果进行拼接操作,所以内部数据写出装置将其存储到内部数据存储器。
[0077] 第N+1次运算的输入包括片外数据和片内交互数据。
[0078] 片外数据需要立即参与第N次运算,且不再反复使用,同时不需要进行拼接操作,所以内外部数据转换装置将其直接送到处理单元阵列输入端。
[0079] 片内交互数据由片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入,但是该数据不能立即参与运算,所以片内数据交互装置将其存储到内部数据存储器。当进行到第N+1次运算时,内部数据读入装置再将其传送到处理单元阵列输入端。
[0080] 第N+1次运算的结果不参与第N+2次运算,但是需要参与第N+3次运算,所以内部数据写出装置将其存储到内部数据存储器。
[0081] 第N+2次运算的输入包括片外数据和片内交互数据。
[0082] 片外数据被读入后不能立即参与运算,所以内外部数据转换装置将其存储到内部数据存储器。当进行到第N+2次运算时,内部数据读入装置再将其传送到处理单元阵列输入端。
[0083] 片内交互数据由片内数据交互装置从子单元间数据交互暂存器或者处理器间数据交互暂存器中读入,该数据需要立即参与第N+2次运算,且不再反复使用,同时不需要进行拼接操作,所以被直接送到处理单元阵列输入端。
[0084] 第N+2次运算的结果需要与第N次运算的结果进行拼接操作,所以内部数据写出装置将其存储到内部数据存储器。
[0085] 第N+3次运算的输入包括第N+1次运算的结果以及第N次和第N+2次运算结果的拼接。
[0086] 第N+1次运算的结果存储在内部数据存储器中,内部数据读入装置将其读入并送到处理单元阵列的输入端。
[0087] 第N次和第N+2次运算的结果也存储在内部数据存储器中,经过拼接操作后,由内部数据读入装置将拼接结果读入并送到处理单元阵列的输入端。
[0088] 整个流程图的最终运算结果需要输出到处理单元阵列外部,分为以下三种情况:输出到处理器外部存储器,内部数据写出装置将运算结果写出到内部数据缓存器,外部数据写出装置再从内部数据缓存器中读入运算结果,将其写出到处理器外部存储器;输出供同一个可重构处理器内的其他子单元使用,内部数据写出装置将运算结果写出到子单元间数据交互暂存器;输出供其他可重构处理器使用,内部数据写出装置将运算结果写出到处理器间数据交互暂存器。
[0089] 以上对本发明所提供的一种动态可重构处理器内数据流运转的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。