CN102402415A - 一种动态可重构阵列内数据缓存的装置及方法 - Google Patents
一种动态可重构阵列内数据缓存的装置及方法 Download PDFInfo
- Publication number
- CN102402415A CN102402415A CN2011103227136A CN201110322713A CN102402415A CN 102402415 A CN102402415 A CN 102402415A CN 2011103227136 A CN2011103227136 A CN 2011103227136A CN 201110322713 A CN201110322713 A CN 201110322713A CN 102402415 A CN102402415 A CN 102402415A
- Authority
- CN
- China
- Prior art keywords
- data
- array
- processing unit
- register file
- buffer
- 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
Abstract
本申请提供了一种动态可重构阵列内数据缓存的装置和方法,其中的装置具体包括:输入数据缓存器,用于从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;处理单元阵列,用于从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;通用寄存器堆,用于与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;输出数据缓存器,用于缓存经过所述处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。本申请可以减少动态可重构阵列与外部存储器之间的数据读写次数,从而提高动态可重构处理器的性能。
Description
技术领域
本申请涉及嵌入式系统技术领域,特别是涉及一种动态可重构阵列内数据缓存的装置及方法。
背景技术
动态可重构处理器是一种新型的处理器构架,其结合了软件的灵活性和硬件的高效性,和传统单核微处理器相比,不仅可以改变控制流,还可以改变数据通路,具有高性能、低功耗、灵活性好、扩展性好的优点,尤其适合于处理计算密集型的算法,例如媒体处理、模式识别、基带处理等。因此动态可重构处理器也成为目前处理器结构的一个重要发展方向,如欧洲微电子中心(IMEC)的ADRES处理器和惠普(HP)的CHESS处理器,前者由紧耦合的超长指令字(Very Long Instruction Word,VLIW)处理器内核和粗颗粒度并行矩阵计算的可重构硬件构成,后者由大量可重构算术计算单元阵列构成。
动态可重构处理器的核心一般为一个二维的可重构算术逻辑单元(ALU)阵列,该结构是并行计算以提高处理能力的基础。同时,可重构算术逻辑单元间需要拥有较为灵活的互联结构以保证运算通用性,这种可配置的互联结构使得动态可重构处理器可以改变数据流,实现了对数据流的高速并行处理,相对于传统单核、少核处理器大大的提升了计算性能。
由于可重构阵列规模的限制,很容易出现算法的部分结构无法布局进阵列,此时就要求对这类算法流图进行分割,增加配置次数,而配置之间的数据是相关的,上次配置的计算结果需要先写入外部存储器中,下次配置调用这些数据时再从外部存储器中读出,外部存储器的读写速度比较慢,从而影响了动态可重构处理器的计算性能。
总之,本领域技术人员需要迫切解决的一个技术问题就是:如何能够实现动态可重构阵列内数据的缓存,有效提高动态可重构处理器的性能。
发明内容
本申请所要解决的技术问题是提供一种动态可重构阵列内数据缓存的装置及方法,通过在动态可重构阵列内添加通用寄存器堆,使通用寄存器堆与处理单元阵列全互联,实现动态可重构阵列内数据的缓存,减少动态可重构阵列与外部存储器之间的数据读写次数,从而提高动态可重构处理器的性能。
为了解决上述问题,本申请公开了一种动态可重构阵列内数据缓存的装置,包括:
输入数据缓存器,用于从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;
处理单元阵列,用于从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆,用于与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器,用于缓存经过所述处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
优选的,所述通用寄存器堆包含多个寄存器堆子单元,将所述寄存器堆子单元分成n行×m列的形式,n和m的规模等同于处理单元阵列内处理单元的规模;
所述寄存器堆子单元用于缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据。
优选的,所述处理单元阵列包括:
处理单元,用于完成对输入数据的逻辑运算操作;
路由单元,用于完成处理单元以及寄存器堆子单元间的数据连接。
优选的,所述处理单元包括:
输入寄存器,用于寄存当前运算所需要的操作数;
算术逻辑单元,用于执行所述操作数的算术或者逻辑运算;
输出寄存器,用于寄存当前运算的计算结果。
优选的,所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据。
另一方面,本申请还公开了一种动态可重构阵列内数据缓存的方法,包括:
输入数据缓存器从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;
处理单元阵列从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器缓存经过处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
优选的,所述通用寄存器堆包含多个寄存器堆子单元,将所述寄存器堆子单元分成n行×m列的形式,n和m的规模等同于处理单元阵列内处理单元的规模;
所述寄存器堆子单元缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据。
优选的,所述处理单元阵列从输入数据缓存器读入数据,并对数据进行逻辑运算操作的步骤包括:
处理单元对输入数据进行逻辑运算操作;
路由单元将处理单元以及寄存器堆子单元间的数据进行连接。
优选的,所述处理单元对输入数据进行逻辑运算操作的步骤包括:
输入寄存器寄存当前运算所需要的操作数;
算术逻辑单元对所述操作数执行算术或者逻辑运算;
输出寄存器寄存当前运算的计算结果。
优选的,所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据。
与现有技术相比,本申请包括以下优点:
首先,通过通用寄存器堆缓存动态可重构阵列内的中间数据,在数据相关的两个配置之间实现数据传递,减少了可重构阵列与外部存储器之间传递数据的次数,利用寄存器快速的读写能力,提高了数据的读写速度、配置之间的切换效率。
其次,通过通用寄存器堆缓存中间数据,可增加动态可重构阵列额外的数据通路,实现阵列扩展,使阵列的配置更加灵活,可以将多个配置合并为一个配置,减少配置次数,从而也减少了可重构阵列与外部存储器之间传递数据的次数,提高动态可重构处理器性能。
再次,对于可流水的多个配置之间,可通过通用寄存器堆缓存数据,从而实现数据流图的变形来提高流水线效率。
附图说明
图1是本申请一种动态可重构阵列内数据缓存装置的简单结构框图;
图2是本申请动态可重构阵列内处理单元阵列与通用寄存器堆的连接示意图;
图3表示使用本申请的配置1数据流图;
图4表示使用本申请的配置2数据流图;
图5表示未使用本申请的配置3数据流图;
图6表示使用本申请后的配置3数据流图;
图7表示未使用本申请的配置4数据流图;
图8表示使用本申请后的配置4数据流图;
图9表示未使用本申请的配置4完成4级流水消耗周期图;
图10表示使用本申请后配置4完成4级流水消耗周期图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的核心构思之一在于,在动态可重构阵列内部添加通用寄存器堆,由于寄存器堆可高速暂存指令、数据和地址,是系统获取资料最快捷的途径,同时寄存器的读写速度也非常快,因此通过通用寄存器堆可实现可重构阵列内数据的缓存,从而可实现阵列扩展,减少可重构阵列与外部存储器之间传递数据的次数,还可通过通用寄存器堆缓存数据,实现数据流图的变形,从而提高动态可重构处理器性能。
动态可重构阵列是动态可重构处理器的核心部分,用于对数据进行逻辑运算操作,该结构是并行计算以提高处理能力的基础。
参照图1,示出了本申请一种动态可重构阵列内数据缓存装置的简单结构框图。
该装置具体包括:
输入数据缓存器(Input FIFO),用于从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列(RCA);
处理单元阵列(RCA),用于从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆(Temp_reg),用于与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器(Output FIFO),用于缓存经过处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
其中,外部存储器用于存储动态可重构处理器待处理的数据,待需要时将数据输出至输入数据缓存器。
通用寄存器堆位于动态可重构阵列内,可提高阵列的读写速度;通用寄存器堆与动态可重构阵列内的处理单元实现全互联,阵列中的所有运算逻辑单元都可以对该寄存器堆实现读写操作。
当数据输入到动态可重构阵列中,动态可重构阵列通过输入缓存器(Input FIFO)和输出缓存器(Output FIFO)进行数据的管理。针对每一个映射到硬件上的数据流图来说,输入数据首先导入输入缓存器(Input FIFO),再进入处理单元阵列(RCA)进行逻辑运算操作,当需要时,利用动态可重构阵列内的通用寄存器堆(Temp_reg)与处理单元阵列进行数据读写操作,对数据进行缓存,以及实现数据扩展或数据流图的变形,将结果数据输出至输出缓存器(Output FIFO),最后将数据存储到外部存储器。
具体地,参照图2示出了本申请动态可重构阵列内处理单元阵列与通用寄存器堆的连接示意图。
本申请在动态可重构阵列内添加了通用寄存器堆,并将通用寄存器堆与处理单元阵列进行全互联,以保证它们之间的数据读写操作。
一个处理单元阵列中包含多个处理单元,同样,寄存器堆中也包含了多个寄存器堆子单元。将通用寄存器堆分成n行×m列形式的子单元,n和m的规模等同于处理单元阵列内处理单元的规模。这样寄存器堆子单元在逻辑上就可以和处理单元一一对应起来,当某一行或者某一列的数据传输路径不够用时,就可以通过相应的寄存器堆子单元来传递这些数据。
例如,图2中所示的处理单元阵列的规模为4×4,即每行和每列均包括四个处理单元,这样在对寄存器堆进行设置时,将其也分成了4×4的形式,即通用寄存器堆中的每行和每列也都包含了四个寄存器堆子单元。每个寄存器堆子单元对应一个处理单元,实现与处理单元的一一对应,进而与处理单元进行数据传递。
具体地,将通用寄存器堆与处理单元阵列连接后,对数据进行处理的过程主要由两部分完成,包括:
第一部分,处理单元阵列,包括,
处理单元,用于完成对输入数据的逻辑运算操作;
处理单元是一个算术逻辑运算单元,可实现基本的算术运算功能和逻辑运算功能,以及一些定制的算术逻辑运算功能。处理单元之间通过路由单元连接,以实现处理单元之间的灵活且快速的数据传递。整个处理单元阵列通过时序控制单元控制,以协调处理单元阵列的输入、运算、输出之间的时序关系。处理单元阵列可实现对大批量数据进行循环操作的快速处理。
一个处理单元阵列包含很多的处理单元,每个处理单元包括2个输入寄存器、1个算术逻辑单元和1个输出寄存器;
其中,
所述输入寄存器,用于寄存当前运算所需要的操作数,所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据;
所述算术逻辑单元用于执行所述操作数的算术或者逻辑运算;
所述输出寄存器,用于寄存当前运算的计算结果;计算结果可以作为下一行处理单元的操作数,也可以输出到输出数据缓存器进行缓存,还可以输出到下一行中的某一寄存器堆子单元中进行缓存。
路由单元,主要负责完成处理单元以及寄存器堆子单元间的数据连接。
通过路由单元,可以实现数据的分配,具体可以包括:
路由单元不仅可以从输入数据缓存器中输入信息,还可以将上一行处理单元的运算结果分配给当前行参与运算的处理单元或者当前行的寄存器堆子单元,或者将上一行寄存器堆子单元中缓存的数据分配给当前行参与运算的处理单元或者当前行的寄存器堆子单元,完成数据流图中的数据传递。
上述路由单元分配数据的过程,具体可以分为以下三种情况:
情况1:通过路由单元,可以将来自输入数据缓存器的数据或者来自上一行处理单元的计算结果或者来自上一行寄存器堆子单元的缓存数据分配给指定的处理单元或者寄存器堆子单元;处理单元将接收的数据放入输入寄存器;
情况2:通过路由单元,每一行的任意一个处理单元或者寄存器堆子单元都可以接收上一行任意一个处理单元的运算结果或者寄存器堆子单元中的缓存数据;
情况3:通过路由单元,第一行的任意一个处理单元或者寄存器堆子单元都可以接收最后一行任意一个处理单元的运算结果或者寄存器堆子单元中的缓存数据。
第二部分,通用寄存器堆,通用寄存器堆包含多个寄存器堆子单元,主要用于缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据;
通用寄存器堆中每个寄存器堆子单元都通过路由单元与处理单元连接,并通过路由单元与其他寄存器堆子单元连接,从而实现数据的传递。
实施例一:
数据流图中的圆形表示处理单元,方形表示寄存器堆子单元。
参照图3和图4示出了使用本申请的配置1和配置2的数据流图。配置1和配置2是顺序执行的,它们的数据具有相关性,即配置1中的数据流图经逻辑运算操作后输出的四个结果数据将用作配置2中数据流图的输入数据。
在没有引入通用寄存器堆(Temp_reg)时,配置1中输出的四个结果数据要先输入至输出数据缓存器(Output FIFO),再输出至外部存储器,当配置2需要运算时,将这四个数据从外部存储器输出至输入数据缓存器(InputFIFO),再输入处理单元阵列(RCA)进行逻辑运算操作。
但是,引入通用寄存器堆(Temp_reg)后,配置1中得到的四个结果数据缓存在寄存器堆中,当运行配置2时,直接从寄存器堆中取数据作为配置2中数据流图的输入数据。
因此,通过通用寄存器堆可缓存动态可重构阵列内的中间数据,在数据相关的两个配置之间实现数据传递,减少了可重构阵列与外部存储器之间传递数据的次数,利用寄存器快速的读写能力,提高了数据的读写速度、配置之间的切换效率。
具体地,利用本申请提出的一种动态可重构阵列内数据缓存装置对配置1进行数据处理的过程包括:
S11,外部存储器将数据输出至输入数据缓存器;
S12,输入数据缓存器将数据输出至处理单元阵列的第一行进行运算;按照数据流图的映射轨迹,第一行的计算结果传递给第二行;如此继续到第四行完成对数据流图的逻辑运算操作;
S13,将运算结果数据保存到寄存器堆的第一行子单元中。
对配置2进行数据处理的过程包括:
S21,寄存器堆的第一行子单元将数据输出至处理单元阵列的第一行进行运算,第一行的计算结果按照图4的形式传递给第二行;如此继续到第三行完成逻辑运算操作;
S22,将运算结果数据输出到输出数据缓存器;
S23,输出数据缓存器将结果数据输出到外部存储器。
实施例二:
参照图5和图6分别示出了未使用本申请的配置3数据流图和使用本申请后的配置3数据流图。由于图5中所述数据流图的数据通路的并行宽度为6,大于处理单元阵列的宽度4,因此需要将其分解成两个子图再进行运算,即需要进行两次运算操作。但是如图6中所示加入通用寄存器堆后,利用寄存器堆缓存中间数据,即可将额外的两条路径通过通用寄存器堆放入其中,与其它四条路径同步完成逻辑运算操作。
因此,通过通用寄存器堆可增加动态可重构阵列额外的数据通路实现阵列扩展,使阵列的配置更加灵活,可以将多个配置合并为一个配置,减少配置次数,从而也减少了可重构阵列与外部存储器之间传递数据的次数,提高动态可重构处理器性能。
未使用本申请对配置3进行数据处理的过程包括:
S31,外部存储器将数据IN0-IN7输出至输入数据缓存器;
S32,输入数据缓存器将数据IN0-IN7输出至处理单元阵列的第一行进行运算;第一行的计算结果传递给第二行,第二行完成对数据的逻辑运算操作,得到结果数据OUT0-OUT3;
S33,将运算结果数据OUT0-OUT3和第一行的4个计算结果输出到输出数据缓存器;
S34,输出数据缓存器将结果数据输出到外部存储器。
S35,外部存储器将第一行的4个计算结果输出到输入数据缓存器;
S36,输入数据缓存器将数据输出至处理单元阵列的第二行进行运算,得到结果数据OUT4-OUT5;
S37,将运算结果数据OUT4-OUT5输出到输出数据缓存器;
S38,输出数据缓存器将结果数据OUT4-OUT5输出到外部存储器,与原来OUT0-OUT3合并,得到最终结果,计算完成。
使用本申请对配置3进行数据处理的过程包括:
S301,外部存储器将数据IN0-IN7输出至输入数据缓存器;
S302,输入数据缓存器将数据输出至处理单元阵列的第一行进行运算;第一行的计算结果传递给第二行,同时输出到寄存器堆的第二行子单元;
S303,处理单元阵列的第二行对数据进行逻辑运算操作,将结果数据输出至寄存器堆的第三行子单元,得到OUT0-OUT3;同时寄存器堆的第二行子单元将数据传递到处理单元阵列的第三行进行计算,得到OUT4-OUT5;
S304,将运算结果数据OUT0-OUT3和OUT4-OUT5输出到输出数据缓存器;
S305,输出数据缓存器将结果数据OUT0-OUT5输出到外部存储器,计算完成。
实施例三:
参照图7和图8分别示出了未使用本申请的配置4数据流图和使用本申请后的配置4数据流图。
未使用本申请对配置4进行数据处理的过程包括:
S41,外部存储器将数据IN0-IN8输出至输入数据缓存器;
S42,输入数据缓存器将数据IN0-IN7输出至处理单元阵列的第一行进行运算;第一行的计算结果传递给第二行;如此继续到第三行将结果数据传递给第四行;
S43,输入数据缓存器将数据IN8输出至处理单元阵列的第四行,第四行对从第三行输入的结果数据和IN8进行逻辑运算操作,得到结果数据OUT0-OUT1;
S44,将运算结果数据OUT0-OUT1输出到输出数据缓存器;
S45,输出数据缓存器将结果数据输出到外部存储器,计算结束。
使用本申请对配置4进行数据处理的过程包括:
S401,外部存储器将数据IN0-IN8输出至输入数据缓存器;
S402,输入数据缓存器将数据IN0-IN7输出至处理单元阵列的第一行进行运算,同时将IN8经处理单元阵列中的路由单元输出至第一行的寄存器堆子单元;第一行的计算结果传递给第二行,同时第一行的寄存器堆子单元将数据传递给第二行;如此继续到第三行;
S403,处理单元阵列的第三行将计算结果传递到第四行,同时第三行的寄存器堆子单元将数据传递给第四行的处理单元,第四行的处理单元对数据进行逻辑运算操作,得到结果数据OUT0-OUT1;
S404,将运算结果数据OUT0-OUT1输出到输出数据缓存器;
S405,输出数据缓存器将结果数据输出到外部存储器,计算结束。
动态可重构处理器的结构特点决定了阵列上主要执行数据计算密集的操作,比如循环。而循环可以通过流水的处理方法来提高效率。比如图4中的数据,假定有4个批次:
不流水:则第一批次的数据输入,等待3个周期执行完毕;再输入第二批次的数据,等待3个周期;再输入第三批次的数据。如此往复,需要4x3=12个周期。
流水:第一批次的数据输入,等到第二个周期(第一批数据已经完成一次计算)接着输入第二批次的数据;等到第三个周期(第一批数据已经完成二次计算,第二批次数据已经完成一次计算)输入第三批次的数据。如此往复,需要4+1+1+1=7个周期。
可见,流水的处理方法很有效,但并不是所有的数据流图都可以高效的流水。
比如图7,第二个周期并不能输入第二批数据,因为第一批数据中IN8还没有用完,要等到第四个周期才用完,即要等到第4个周期之后才能输入第二批次的数据,因此完成配置4的4次流水处理所需要消耗的周期数为4+4+4+6=18,如图9所示。
但是,使用了本申请后,由于通过寄存器堆子单元来存储数据IN8,所以第一批数据中IN8会和其它数据同时输入,这样,在第二个周期就可以输入第二批数据,因此对配置4完成4次流水所消耗周期数为1+1+1+6=9,如图10所示。
因此,对于可流水的多个配置之间,可通过通用寄存器堆缓存数据,从而实现数据流图的变形来减少消耗的周期数,提高流水线效率。
本申请还公开了一种动态可重构阵列内数据缓存的方法,具体包括:
输入数据缓存器从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;
处理单元阵列从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器缓存经过处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
其中,
所述通用寄存器堆包含多个寄存器堆子单元,将所述寄存器堆子单元分成n行×m列的形式,n和m的规模等同于处理单元阵列内处理单元的规模;
所述寄存器堆子单元缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据。
处理单元阵列从输入数据缓存器读入数据,并对数据进行逻辑运算操作的步骤包括两个步骤:
第一,处理单元对输入数据进行逻辑运算操作;
具体步骤包括:
输入寄存器寄存当前运算所需要的操作数;所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据;
算术逻辑单元对所述操作数执行算术或者逻辑运算;
输出寄存器寄存当前运算的计算结果;计算结果可以作为下一行处理单元的操作数,也可以输出到输出数据缓存器进行缓存,还可以输出到下一行中的某一寄存器堆子单元中进行缓存。
第二,路由单元将处理单元以及寄存器堆子单元间的数据进行连接。
对于方法实施例而言,由于其与装置实施例基本相似,所以描述的比较简单,相关之处参见装置实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种动态可重构阵列内数据缓存的装置及方法,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种动态可重构阵列内数据缓存的装置,其特征在于,包括:
输入数据缓存器,用于从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;
处理单元阵列,用于从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆,用于与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器,用于缓存经过所述处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
2.根据权利要求1所述的装置,其特征在于,
所述通用寄存器堆包含多个寄存器堆子单元,将所述寄存器堆子单元分成n行×m列的形式,n和m的规模等同于处理单元阵列内处理单元的规模;
所述寄存器堆子单元用于缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据。
3.根据权利要求2所述的装置,其特征在于,所述处理单元阵列包括:
处理单元,用于完成对输入数据的逻辑运算操作;
路由单元,用于完成处理单元以及寄存器堆子单元间的数据连接。
4.根据权利要求3所述的装置,其特征在于,所述处理单元包括:
输入寄存器,用于寄存当前运算所需要的操作数;
算术逻辑单元,用于执行所述操作数的算术或者逻辑运算;
输出寄存器,用于寄存当前运算的计算结果。
5.根据权利要求4所述的装置,其特征在于,所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据。
6.一种动态可重构阵列内数据缓存的方法,其特征在于,包括:
输入数据缓存器从外部存储器中读入数据,并进行缓存,待需要时将数据输出至处理单元阵列;
处理单元阵列从输入数据缓存器或通用寄存器堆读入数据,并对数据进行逻辑运算操作;
通用寄存器堆与处理单元阵列互联,从所述处理单元阵列读入数据进行缓存,待需要时将数据输出至所述处理单元阵列;
输出数据缓存器缓存经过处理单元阵列处理后的结果数据,需要时将数据读出到外部存储器。
7.根据权利要求6所述的方法,其特征在于,
所述通用寄存器堆包含多个寄存器堆子单元,将所述寄存器堆子单元分成n行×m列的形式,n和m的规模等同于处理单元阵列内处理单元的规模;
所述寄存器堆子单元缓存上一行处理单元输出的结果数据或缓存上一行中某一寄存器堆子单元中输出的数据。
8.根据权利要求7所述的方法,其特征在于,所述处理单元阵列从输入数据缓存器读入数据,并对数据进行逻辑运算操作的步骤包括:
处理单元对输入数据进行逻辑运算操作;
路由单元将处理单元以及寄存器堆子单元间的数据进行连接。
9.根据权利要求8所述的方法,其特征在于,所述处理单元对输入数据进行逻辑运算操作的步骤包括:
输入寄存器寄存当前运算所需要的操作数;
算术逻辑单元对所述操作数执行算术或者逻辑运算;
输出寄存器寄存当前运算的计算结果。
10.根据权利要求9所述的方法,其特征在于,所述操作数来自输入数据缓存器,或者来自上一行处理单元的运算结果,或者来自上一行中寄存器堆子单元中存储的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110322713 CN102402415B (zh) | 2011-10-21 | 2011-10-21 | 一种动态可重构阵列内数据缓存的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110322713 CN102402415B (zh) | 2011-10-21 | 2011-10-21 | 一种动态可重构阵列内数据缓存的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402415A true CN102402415A (zh) | 2012-04-04 |
CN102402415B CN102402415B (zh) | 2013-07-17 |
Family
ID=45884653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110322713 Active CN102402415B (zh) | 2011-10-21 | 2011-10-21 | 一种动态可重构阵列内数据缓存的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102402415B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761072A (zh) * | 2014-02-10 | 2014-04-30 | 东南大学 | 一种粗粒度可重构层次化的阵列寄存器文件结构 |
CN106650923A (zh) * | 2015-10-08 | 2017-05-10 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元阵列与定序器的神经网络单元 |
CN107632965A (zh) * | 2017-10-17 | 2018-01-26 | 中国科学院计算技术研究所 | 可重构的s型运算装置及运算方法 |
CN108537331A (zh) * | 2018-04-04 | 2018-09-14 | 清华大学 | 一种基于异步逻辑的可重构卷积神经网络加速电路 |
CN108717402A (zh) * | 2018-05-16 | 2018-10-30 | 清华大学 | 用于可重构处理系统的存储器和可重构处理系统 |
CN111523282A (zh) * | 2020-05-07 | 2020-08-11 | 深圳探科技术有限公司 | 集成电路仿真中数据处理的方法、模块、存储介质及系统 |
CN112419140A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
CN113129961A (zh) * | 2021-04-21 | 2021-07-16 | 中国人民解放军战略支援部队信息工程大学 | 一种面向密码逻辑阵列局部动态重构的配置电路 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133688A1 (en) * | 2001-01-29 | 2002-09-19 | Ming-Hau Lee | SIMD/MIMD processing on a reconfigurable array |
CN101496283A (zh) * | 2006-07-27 | 2009-07-29 | 松下电器产业株式会社 | 半导体集成电路、程序变换装置以及映射装置 |
CN102253921A (zh) * | 2011-06-14 | 2011-11-23 | 清华大学 | 一种动态可重构处理器 |
-
2011
- 2011-10-21 CN CN 201110322713 patent/CN102402415B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020133688A1 (en) * | 2001-01-29 | 2002-09-19 | Ming-Hau Lee | SIMD/MIMD processing on a reconfigurable array |
CN101496283A (zh) * | 2006-07-27 | 2009-07-29 | 松下电器产业株式会社 | 半导体集成电路、程序变换装置以及映射装置 |
CN102253921A (zh) * | 2011-06-14 | 2011-11-23 | 清华大学 | 一种动态可重构处理器 |
Non-Patent Citations (2)
Title |
---|
于苏东,刘雷波,魏少军: "流水线配置技术在可重构处理器中的应用", 《计算机工程》 * |
蔡启先 ,蔡洪波 ,黄晓璐 ,蔡启仲: "基于FPGA的动态可重构体系结构", 《计算机应用》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761072B (zh) * | 2014-02-10 | 2016-08-31 | 东南大学 | 一种粗粒度可重构层次化的阵列寄存器文件结构 |
CN103761072A (zh) * | 2014-02-10 | 2014-04-30 | 东南大学 | 一种粗粒度可重构层次化的阵列寄存器文件结构 |
CN106650923B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元与定序器的神经网络单元 |
CN106650923A (zh) * | 2015-10-08 | 2017-05-10 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元阵列与定序器的神经网络单元 |
CN108170640B (zh) * | 2017-10-17 | 2020-06-09 | 中国科学院计算技术研究所 | 神经网络运算装置及应用其进行运算的方法 |
CN108170640A (zh) * | 2017-10-17 | 2018-06-15 | 中国科学院计算技术研究所 | 神经网络运算装置及应用其进行运算的方法 |
CN107632965B (zh) * | 2017-10-17 | 2019-11-29 | 中国科学院计算技术研究所 | 可重构的s型运算装置及运算方法 |
CN107632965A (zh) * | 2017-10-17 | 2018-01-26 | 中国科学院计算技术研究所 | 可重构的s型运算装置及运算方法 |
CN108537331A (zh) * | 2018-04-04 | 2018-09-14 | 清华大学 | 一种基于异步逻辑的可重构卷积神经网络加速电路 |
CN108717402A (zh) * | 2018-05-16 | 2018-10-30 | 清华大学 | 用于可重构处理系统的存储器和可重构处理系统 |
CN111523282A (zh) * | 2020-05-07 | 2020-08-11 | 深圳探科技术有限公司 | 集成电路仿真中数据处理的方法、模块、存储介质及系统 |
CN112419140A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
CN112419140B (zh) * | 2020-12-02 | 2024-01-23 | 海光信息技术股份有限公司 | 数据处理装置、数据处理方法及电子设备 |
CN113129961A (zh) * | 2021-04-21 | 2021-07-16 | 中国人民解放军战略支援部队信息工程大学 | 一种面向密码逻辑阵列局部动态重构的配置电路 |
Also Published As
Publication number | Publication date |
---|---|
CN102402415B (zh) | 2013-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402415B (zh) | 一种动态可重构阵列内数据缓存的装置及方法 | |
CN114238204B (zh) | 可重构并行处理 | |
US7568086B2 (en) | Cache for instruction set architecture using indexes to achieve compression | |
CN107590085B (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
CN101482811B (zh) | 用于增强的计算能力的处理器体系结构 | |
CN102253921B (zh) | 一种动态可重构处理器 | |
CN102279818B (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN1713137A (zh) | 含有多级寄存器文件的数字数据处理设备 | |
CN101533387A (zh) | 基于fpga的边角块稀疏矩阵并行lu分解器 | |
CN102541809A (zh) | 一种动态可重构处理器 | |
US20060015701A1 (en) | Arithmetic node including general digital signal processing functions for an adaptive computing machine | |
US10659396B2 (en) | Joining data within a reconfigurable fabric | |
CN104317770A (zh) | 用于众核处理系统的数据存储结构及数据访问方法 | |
CN113407483B (zh) | 一种面向数据密集型应用的动态可重构处理器 | |
CN108874730A (zh) | 一种数据处理器及数据处理方法 | |
Song et al. | Gpnpu: Enabling efficient hardware-based direct convolution with multi-precision support in gpu tensor cores | |
CN103365821A (zh) | 一种异构多核处理器的地址生成器 | |
CN102289424B (zh) | 一种动态可重构阵列处理器的构令流工作方法 | |
JP2022028579A (ja) | 命令取得、解読、実行と論理アドレスとバスネットの回路が有る記憶装置 | |
CN112506853A (zh) | 零缓冲流水的可重构处理单元阵列及零缓冲流水方法 | |
JP6164616B2 (ja) | データ供給装置及びデータ処理装置 | |
JP2006515446A (ja) | 関連アプリケーションを相互参照するカルテシアンコントローラを有するデータ処理システム | |
RU2179333C1 (ru) | Синергическая вычислительная система | |
WO2019006119A1 (en) | COMBINING DATA IN A RECONFIGURABLE MATRIX | |
Hoffmann et al. | Hardware support for 3D cellular processing |
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 |