CN104317554A - 用于simd处理器的寄存器文件数据读写装置和方法 - Google Patents
用于simd处理器的寄存器文件数据读写装置和方法 Download PDFInfo
- Publication number
- CN104317554A CN104317554A CN201410542096.4A CN201410542096A CN104317554A CN 104317554 A CN104317554 A CN 104317554A CN 201410542096 A CN201410542096 A CN 201410542096A CN 104317554 A CN104317554 A CN 104317554A
- Authority
- CN
- China
- Prior art keywords
- register
- data
- parallelism
- register file
- write
- 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
Abstract
本发明提供了一种用于SIMD处理器的寄存器文件数据读写装置和方法,设计了一种按照矩阵形式排列的寄存器文件阵列,根据译码单元译码结果,利用寄存器索引地址和当前并行度确定待访问寄存器具体物理地址,在寄存器读写使能有效信号控制下,通过对寄存器中数据写回时的复制排序和读出时整合,大大减少了SIMD处理器的数据通路的复杂性,简化了DSP处理器的数据通路的设计,提高了DSP处理器的执行效率,获得更好的实时性能和资源利用率。
Description
技术领域
本发明属于处理器体系结构设计领域,更具体地,涉及SIMD结构处理器的寄存器文件数据读写方法。
背景技术
数字信号处理领域中,经常涉及对大量数据的处理。由于信号处理中数据量大、处理过程复杂,数字信号处理器不能很好地满足对数据处理实时性要求。随着计算机技术的快速发展,越来越多的数字信号处理器采用基于单指令多数据(SIMD)指令集的数据并行处理技术,即在同一个周期内多个功能单元并行执行数据运算,从而为提高数据处理的实时性提供了一种全新的方式。因此,需要设计出一种支持并行数据处理、高效且简单的寄存器文件读写,使SIMD处理器在进行大量数据处理时,能够实现多组数据并行处理。
现有的SIMD处理器一般采用多发射方式提高数据处理的并行度,这就要求寄存器具有多个读和写端口,来满足执行单元的访问需要。SIMD处理器由于并行数据处理的需要,拥有更多的数据路径,寄存器的读写端口数也变得更多,随着端口数的增多,读写延迟也逐渐增大,限制了处理器的频率,影响了处理器的性能提升。
发明内容
为了克服现有技术的不足,本发明提供一种用于SIMD处理器的寄存器文件读写方法,通过在数据写入寄存器前进行复制和在数据读出寄存器后整合,降低了SIMD处理器的数据通路路径的复杂度,减少了寄存器路径的组合情况,简化了寄存器路径,从而大大降低了SIMD处理器的数据通路的设计难度。此外,本发明用于SIMD处理器寄存器文件读写方式在执行构令指令时具有更好的执行效率。
本发明解决其技术问题所采用的技术方案是:包含数据存储器DRAM、寄存器数据写回单元、寄存器文件RegFIle和寄存器数据读出单元。
所述数据存储器DRAM存储SIMD处理器执行时需要处理的数据;
所述寄存器写回单元对需要写回到寄存器文件中数据进行预处理;根据所述处理器访问执行并行度Para,完成对待写回寄存器文件数据进行复制或者重新排序;SIMD处理器访问并行度为Para,Para=2p,0≤p≤n;所述SIMD处理器每次访问2p组寄存器,一个执行周期并行执行2p组数据处理,SIMD处理器总线最大支持2n组数据处理;
所述寄存器文件包含w个寄存器,其中w=2n+m,n、m为正整数;所述寄存器在物理实现方式上按照N×M矩阵排列,其中N=2n表示列数,代表每组寄存器内具体寄存器个数,N等于所述SIMD处理器支持最大并行度,M=2m表示行数,代表寄存器文件包含组寄存器数;所述寄存器文件索引地址宽度为(n+m-1,0)位,每个寄存器的索引地址按照矩阵形式,先行后列自右向左依次编码,索引名称依次为R0~Rw-1;所述寄存器索引地址(n+m-1,n)位段代表的数值确定矩阵当前行号所在的行寄存器组的使能有效信号;
所述寄存器数据读出单元对寄存器文件中待读出数据进行读取。
本发明中提供了一种用于SIMD处理器的寄存器文件数据读写方法,包括以下步骤:
1.初始化,将需要进行数据处理的数据存储在数据存储单元DRAM指定地址范围中,根据指令译码单元产生并行度Para、寄存器写使能信号、寄存器读使能信号、数据操作类型和待访问寄存器索引;
2.根据译码控制信号,从DRAM指定地址范围中,按照当前执行并行度读出Para=2p组数据,通过总线送至寄存器数据写回单元;
3.寄存器写回单元操作分为两类情况:一类为所述SIMD处理器在执行运算操作过程中不改变并行度Para,对待写回寄存器数据复制2n-p-1份,所有2n-p组数据依次填充总线并输出至寄存器文件;另一类为所述SIMD处理在执行运算操作过程中改变并行度Para,当所述处理器访问并行度为Para=2p时,将当前数据进行一次复制,若当前运算操作要求复制后的数据重新排序,按照操作要求完成该组数据重新排序,将当前两组数据按照输入顺序合并为包含2p+1个数据的组,改变当前执行并行度为Para=2p+1,对合并后的数据组再次进行复制2n-p-1-1份,所有2n-p-1组数据依次填充总线并输出至寄存器文件;
4.寄存器文件根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定具体待访问寄存器具体位置;待访问寄存器索引高(n+m-1,n)位与寄存器文件中行号数值一致,确定该行寄存器写使能有效;根据待访问寄存器索引地址低(n-1,p)位确定具体列寄存器组写使能有效,当p≤n-1时,所述寄存器矩阵中列寄存器地址(n-1,p)与待访问寄存器地址(n-1,p)位段一致时,确定该列寄存器使能有效;当p>n-1时,所述寄存器矩阵中列寄存器使能均有效,当所述寄存器矩阵中寄存器所在行和列均为写使能信号有效时,该寄存器确定为写使能有效,将总线中与索引寄存器对应区间的数据写入目的寄存器中;
5.寄存器读出单元读出寄存器文件待访问寄存器中的数据,根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定待访问寄存器具体位置;当寄存器读使能信号有效时,所述寄存器数据读出单元在寄存器读使能信号的控制下,读出待访问寄存器中的数据,按照寄存器索引地址由低向高依次依次输出至总线低2p个字段,寄存器数据读取完毕,寄存器文件中读出的数据进入到下一个执行单元中进行数据处理。
本发明的有益效果是:设计了一种按照矩阵形式排列的寄存器文件阵列,根据译码单元译码结果,利用寄存器索引地址和当前并行度确定待访问寄存器具体物理地址,在寄存器读写使能有效信号控制下,通过对寄存器中数据写回时的复制排序和读出时整合,大大减少了SIMD处理器的数据通路的复杂性,简化了DSP处理器的数据通路的设计,提高了DSP处理器的执行效率,获得更好的实时性能和资源利用率。
附图说明
图1为寄存器文件阵列结构示意图。
图2为SIMD处理器在执行不同操作指令时的数据读写通路示意图,其中,图2a是并行度Pon=1时寄存器文件数据通路,图2b是并行度Pon=2时寄存器文件数据通路,图2c是并行度Pon=4时寄存器文件数据通路,图2d是执行复数乘时寄存器文件数据通路。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明用于SIMD处理器的寄存器文件数据读写结构包含数据存储器DRAM、寄存器数据写回单元、寄存器文件RegFIle、寄存器数据读出单元和相应的控制电路模块。
所述数据存储器DRAM存储SIMD处理器执行时需要处理的数据。
所述寄存器写回单元对需要写回到寄存器文件中数据进行预处理。根据所述处理器访问执行并行度Para,完成对待写回寄存器文件数据进行复制或者重新排序。SIMD处理器支持多种并行度Para,其中Para=2p,0≤p≤n。SIMD处理器访问并行度为Para,所述SIMD处理器每次访问2p组寄存器,一个执行周期并行执行2p组数据处理,SIMD处理器总线最大支持2n组数据处理。所述寄存器写回方法分为两类:一类为对于SIMD处理器在执行过程中不需要进行并行度改变的运算操作,SIMD处理器访问并行度为Para=2p,将待写回寄存器数据进行复制2n-p-1份,所有2n-p组数据依次填充总线并输出至寄存器文件;另一类为所述SIMD处理在执行过程中并行度改变的运算操作,SIMD处理器访问并行度为Para=2p,对于运算操作需要对数据进行复制或者改变数据顺序时,所述寄存器写回逻辑单元复制一次数据或者完成复制后再进行数据重新排序,并且改变并行度为Para=2p+1,对复制或排序后的数据再次进行复制2n-p-1-1份,所有2n-p-1组数据通过依次填充总线并输出至寄存器文件。
所述寄存器文件结构包含w个寄存器,其中w=2n+m,n,m为正整数。所述寄存器在物理实现方式上按照N×M矩阵排列,其中N=2n表示列数,代表每组寄存器内具体寄存器个数,N等于所述SIMD处理器支持最大并行度,M=2m表示行数,代表寄存器文件包含组寄存器数。所述寄存器文件索引地址宽度为(n+m-1,0)位,每个寄存器的索引地址按照矩阵形式,先行后列自右向左依次编码,索引名称依次为R0~Rw-1。所述寄存器索引地址(n+m-1,n)位段代表的数值确定矩阵当前行号所在的行寄存器组的使能有效信号,所述寄存器矩阵中行寄存器地址(n+m-1,n)与待访问寄存器地址(n+m-1,n)位段一致时,确定该行寄存器使能有效。所述寄存器索引地址(n-1,p)位段表示的数值和当前执行的并行度Para=2p共同确定所述寄存器矩阵中2p个列寄存器的使能有效信号。p≤n-1时,所述寄存器矩阵中列寄存器地址(n-1,p)与待访问寄存器地址(n-1,p)位段一致,确定该列寄存器使能有效,否则该列寄存器使能无效;p>n-1时,所述寄存器矩阵中列寄存器使能均有效。当所述寄存器矩阵中寄存器所在行和列均为使能信号有效时,该寄存器确定为读或写使能有效,否则该寄存器确定为读和写使能无效。所述寄存器文件中寄存器写使能有效时,将总线对应位置上待写回数据写入寄存器文件对应寄存器中;所述寄存器文件中寄存器数据读使能有效时,寄存器读出单元读出寄存器文件中对应寄存器中待读出数据送至总线对应位置上。
所述寄存器数据读出单元对寄存器文件中待读出数据进行读取。首先,所述寄存器文件根据当前执行并行度Para和寄存器文件中待访问寄存器索引(n+m-1,0)确定待访问寄存器在寄存器文件中具体位置,当寄存器读使能有效时,所述寄存器数据读出单元在寄存器读使能信号的控制下,访问相对应索引的寄存器,按照寄存器索引地址由低向高依次读出寄存器中数据并输出至总线低2p个字段。
本发明中提供了一种用于SIMD处理器的寄存器文件数据读写方法,为了实现上述目的,需要进行以下步骤:
1.初始化,将需要进行数据处理的数据存储在数据存储单元DRAM指定地址范围中,根据指令译码单元产生并行度Para、寄存器写使能信号、寄存器读使能信号、数据操作类型和待访问寄存器索引。
2.根据译码控制信号,从DRAM指定地址范围中,按照当前执行并行度读出Para=2p组数据,通过总线送至寄存器数据写回单元。
3.寄存器写回单元操作分为两类情况:一类为所述SIMD处理器在执行运算操作过程中不改变并行度Para,对待写回寄存器数据复制2n-p-1份,所有2n-p组数据依次填充总线并输出至寄存器文件;另一类为所述SIMD处理在执行运算操作过程中改变并行度Para,当所述处理器访问并行度为Para=2p时,将当前数据进行一次复制,若当前运算操作要求复制后的数据重新排序,按照操作要求完成该组数据重新排序,将当前两组数据按照输入顺序合并为包含2p+1个数据的组,改变当前执行并行度为Para=2p+1,对合并后的数据组再次进行复制2n-p-1-1份,所有2n-p-1组数据依次填充总线并输出至寄存器文件。
4.寄存器文件根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定具体待访问寄存器具体位置。待访问寄存器索引高(n+m-1,n)位与寄存器文件中行号数值一致,确定该行寄存器写使能有效。根据待访问寄存器索引地址低(n-1,p)位确定具体列寄存器组写使能有效,当p≤n-1时,所述寄存器矩阵中列寄存器地址(n-1,p)与待访问寄存器地址(n-1,p)位段一致时,确定该列寄存器使能有效;当p>n-1时,所述寄存器矩阵中列寄存器使能均有效,当所述寄存器矩阵中寄存器所在行和列均为写使能信号有效时,该寄存器确定为写使能有效,将总线中与索引寄存器对应区间的数据写入目的寄存器中。
5.寄存器读出单元读出寄存器文件待访问寄存器中的数据。第一步,按照4中所述方法,根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定待访问寄存器具体位置。当寄存器读使能信号有效时,所述寄存器数据读出单元在寄存器读使能信号的控制下,读出待访问寄存器中的数据,按照寄存器索引地址由低向高依次依次输出至总线低2p个字段,寄存器数据读取完毕,寄存器文件中读出的数据进入到下一个执行单元中进行数据处理。
为了更好地说明本发明用于SIMD处理器的寄存器文件数据读写方法,本具体实施例中假定SIMD处理器支持32位数据操作,数据总线宽度为128位。寄存器写回单元和寄存器文件之间总线为WrDataBusA和WrDataBusB,寄存器文件和寄存器读出读出单元之间总线为RdDataBusA和RdDataBusB,算术逻辑单元数据输出总线为DataOutBus,其中算术逻辑单元为寄存器读出单元的下一个执行单元。寄存器文件共包含4×8个寄存器,其中N=4表示列数,M=8表示行数。SIMD处理器支持并行度Pon为1、2和4的数据处理,4列执行单元自右向左排列依次为第0列、第1列、第2列和第3列。并行度为1时,访问第0列;并行度为2时,访问第0、1列;并行度为4时,访问第0、1、2、3列。
寄存器文件的地址总线宽度为(4,0)位,每个寄存器的索引地址按照矩阵形式,先行后列依次编码,寄存器文件行号编码自上向下分别为Row0~Row7,列号编码自右向左分别为Col0~Col3,这里采用先行后列自右向左的编码原则,对应寄存器的地址依次编码为00000~11111,对应索引名称为R0~R31,具体阵列形式见附图1所示。
本具体实施例中寄存器地址(4,2)位段代表的数值表示矩阵中对应寄存器组行号,确定该矩阵行号所在的寄存器组的使能有效信号,寄存器地址(1,0)位段表示的数值和当前执行的并行度共同确定矩阵具体列寄存器使能有效信号,当矩阵中寄存器所在行和列均表示使能信号有效时,该寄存器确定读或写使能有效,否则该寄存器确定读写使能无效。
当并行度为1时,寄存器地址(4,2)位段确定矩阵中行所在寄存器组使能有效,寄存器地址(1,0)位段确定矩阵中列所在寄存器使能有效,当寄存器文件矩阵中一个寄存器所在行和列均为使能有效时,该寄存器使能有效,否则该寄存器使能无效;
当并行度为2时,将寄存器文件行所在一个寄存器组的寄存器按照地址从低向高依次每相邻2个分为一小组,每一小组中寄存器按照该组寄存器地址(1,1)位段进行分组。寄存器地址(4,2)位段确定矩阵中行所在寄存器组使能有效,寄存器地址(1,1)位段确定矩阵中列所在小组寄存器使能有效,当寄存器文件矩阵中一小组寄存器所在行和列均为使能有效时,该小组寄存器使能有效,否则该小组寄存器使能无效;;
当并行度为N=4时,寄存器地址(4,2)位段确定矩阵中行所在寄存器组使能有效,该并行度下,寄存器文件列所在寄存器使能均有效。
本具体实施例中实现用于SIMD处理器的寄存器数据写回和读出具体步骤如下:
1)基本指令寄存器文件数据读写方法
i.并行度为1时的基本指令寄存器数据读写通路
为了便于说明,这里假定源操作数A写入的寄存器为R13,寄存器地址为01101,源操作数B写入的寄存器为R22,寄存器地址为10110。
当并行度Pon为1时,SIMD处理器执行数据处理具体步骤如下:
a)存储控制单元根据指令译码结果,从数据存储器DRAM中的指定地址中分别读出源操作数A和源操作数B;
b)复制3次源操作数A和源操作数B,用4个相同的源操作数A和源操作数B填充128位的总线WrDataBusA和WrDataBusB,为了便于说明,对4个相同的源操作数A和B进行自右向左编号:A3,A2,A1,A0和B3,B2,B1,B0;;
c)根据源操作数A要求写入的寄存器R13的索引地址的高3位(011)确定寄存器R13所在行为第3行,低2位(01)确定寄存器R13所在列数为第1列,即向寄存器文件中第3行第1列所在位置的寄存器R13写入A1;根据源操作数B要求写入的寄存器R22的索引地址的高3(101)位确定寄存器R22所在行为第5行,低2位(10)确定寄存器R22所在列数为第2列,即向寄存器文件中第5行第2列所在位置的寄存器R22写入B2;
d)与源操作数A和B写入寄存器方式相同,根据源操作数A和B所在寄存器索引地址的高3位和低2位分别确定出寄存器所在寄存器文件中的位置,读出寄存器R13存放的源操作数A输出到总线RdDataBusA的低32位,送至算术逻辑单元ALU;读出寄存器R22存放的源操作数B输出到总线RdDataBusB的低32位,送至算术逻辑单元ALU数据输入端口;
e)ALU单元执行第0列运算单元,计算的结果C送入总线DataOutBus的低32位;
f)存储控制单元根据指令译码结果,将计算结果写回到寄存器文件或者直接写回到数据存储器中,具体执行过程见附图2a所示。
ii.并行度为2时的基本指令寄存器数据读写通路
为了便于说明,这里假定源操作数A1,A0写入的寄存器为R13~R12,寄存器索引地址为01101~01100,源操作数B1,B0写入的寄存器为R23~R22,寄存器索引地址为10111~10110。
当并行度Pon为2时,SIMD处理器执行数据处理具体步骤如下:
a)存储控制单元根据指令译码结果,从数据存储器中的指定地址中分别读出源操作数A1,A0和源操作数B1,B0;
b)复制1组源操作数A1,A0和B1,B0,用2组相同的源操作数A1,A0和源操作数B1,B0填充128位的总线WrDataBusA和WrDataBusB,为了便于说明,对2组相同的源操作数A1,A0和B1,B0进行自右向左编号:A1H,A0H,A1L,A0L和B1H,B0H,B1L,B0L;
c)根据源操作数A1,A0要求写入的寄存器R13~R12的索引地址的高3位(011)确定寄存器R13~R12所在行为第3行,索引地址的次低位(0)确定寄存器R13~R12所在列数为第1、0列,即向寄存器文件中第3行第1、0列所在位置的寄存器R13~R12写入A1L,A0L;根据源操作数B1,B0要求写入的寄存器R23~R22的索引地址的高3位(101)确定寄存器R23~R22所在行为第5行,次低位(1)确定寄存器R23~R22所在列数为第2、3列,即向寄存器文件中第5行第2、3列所在位置的寄存器R23~R22写入B1H,B0H;
d)与源操作数A1,A0和B1,B0写入寄存器方式相同,根据源操作数A1,A0和B1,B0所在寄存器索引地址的高3位和次低位分别确定出寄存器所在寄存器文件中的位置,读出寄存器R13~R12存放的源操作数A1,A0输出到总线RdDataBusA的低64位,送至算术逻辑单元ALU;读出寄存器R23~R22存放的源操作数B1,B0输出到总线RdDataBusB的低64位,送至算术逻辑单元ALU数据输入端口;
e)ALU单元执行第0、1列运算单元,计算的结果C1,C0送至总线DataOutBus的低64位;
f)存储控制单元根据指令译码结果,将计算结果写回到寄存器文件或者直接写回到数据存储器中,具体执行过程见附图2b所示。
iii.并行度为4时的基本指令寄存器数据读写通路
为了便于说明,这里假定源操作数A3,A2,A1,A0写入的寄存器为R15~R12,寄存器索引地址为01111~01100,源操作数B3,B2,B1,B0写入的寄存器为R23~R20,寄存器索引地址为10111~10100。
当并行度Pon为4时,SIMD处理器执行数据处理具体步骤如下:
a)存储控制单元根据指令译码结果,从数据存储器中的指定地址中分别读出源操作数A3,A2,A1,A0和源操作数B3,B2,B1,B0;
b)用源操作数A3,A2,A1,A0和源操作数B3,B2,B1,B0填充128位的总线WrDataBusA和WrDataBusB;
c)根据源操作数A3,A2,A1,A0要求写入的寄存器R15~R12索引地址的高3位(011)确定寄存器R15~R12所在行为第3行,即向寄存器文件中第3行第3、2、1、0列所在位置的寄存器R15~R12写入A3,A2,A1,A0;根据源操作数B3,B2,B1,B0要求写入的寄存器R23~R20的索引地址的高3位(101)确定寄存器R23~R20所在行为第5行,即向寄存器文件中第5行第3、2、1、0列所在位置的寄存器R23~R20写入B3,B2,B1,B0;
d)与源操作数A3,A2,A1,A0和B3,B2,B1,B0写入寄存器方式相同,根据源操作数A3,A2,A1,A0和B3,B2,B1,B0所在寄存器索引地址的高3位确定出寄存器所在寄存器文件中的位置,读出寄存器R15~R12存放的源操作数A3,A2,A1,A0输出至总线RdDataBusA,送至算术逻辑单元ALU;读出寄存器R23~R20存放的源操作数B3,B2,B1,B0输出至总线RdDataBusB,送至算术逻辑单元ALU数据输入端口;
e)ALU单元执行第0、1、2、3列运算单元,计算的结果C3,C2,C1,C0送至总线DataOutBus;
f)存储控制单元根据指令译码结果,将计算结果写回到寄存器文件或者直接写回到数据存储器中,具体执行过程见附图2c所示。
2)复杂操作指令寄存器文件数据读写方法
在SIMD处理器进行复数类、蝶形运算等计算时,在源操作数写回寄存器文件前需要对数据进行复制排序,复数类计算和碟形计算仅在数据写回时数据复制顺序不同,这里以复数乘计算为例。
为了便于说明,这里假定源操作数0为复数A=ReA+j*ImA,写入的寄存器为R15~R12,寄存器索引地址为01111~01100,源操作数1为复数B=ReB+j*ImB,写入的寄存器为R23~R20,寄存器索引地址为10111~10100。
当进行复数类计算时,SIMD处理器执行数据处理具体步骤如下:
a)存储控制单元根据指令译码结果,按照并行度为2从数据存储器DRAM中的指定地址中分别读出源操作数ImA,ReA和源操作数ImB,ReB;
b)复制一组源操作数ImA,ReA和ImB,ReB,按照ImA,ReA,ImA,ReA和ReB,ImB,ImB,ReB的形式进行排序并填充128位的总线WrDataBusA和WrDataBusB,更改并行度Pon为4;
c)根据ImA,ReA,ImA,ReA要求写入的寄存器R15~R12的索引地址的高3位(011)确定寄存器R15~R12所在行为第3行,向寄存器文件中第3行第3、2、1、0列所在的寄存器R15~R12写入ImA,ReA,ImA,ReA;根据ReB,ImB,ImB,ReB要求写入的寄存器R23~R20的索引地址的高3位(101)确定寄存器R23~R20所在行为第5行,即向寄存器文件中第5行第3、2、1、0列所在位置的寄存器R23~R20写入ReB,ImB,ImB,ReB;
d)与源操作数ImA,ReA,ImA,ReA和ReB,ImB,ImB,ReB写入寄存器方式相同,根据源操作数ImA,ReA,ImA,ReA和ReB,ImB,ImB,ReB所在寄存器索引地址的高3位确定出寄存器所在寄存器文件中的位置,读出寄存器R15~R12存放的源操作数ImA,ReA,ImA,ReA输出至总线RdDataBusA,送至算术逻辑单元ALU数据输入端口A;读出寄存器R23~R20存放的源操作数ReB,ImB,ImB,ReB输出至寄存器数据读出总线RdDataBusB,送至算术逻辑单元ALU数据输入端口B;
e)ALU单元执行第0、1、2、3列运算单元,计算的结果ImC,ReC送至总线DataOutBus的低64位;
f)存储控制单元根据指令译码结果,将计算结果写回到寄存器文件或者直接写回到数据存储器中,具体执行过程见附图2d所示。
Claims (2)
1.一种用于SIMD处理器的寄存器文件数据读写装置,包括数据存储器DRAM、寄存器数据写回单元、寄存器文件RegFIle和寄存器数据读出单元,其特征在于:
所述数据存储器DRAM存储SIMD处理器执行时需要处理的数据;
所述寄存器写回单元对需要写回到寄存器文件中数据进行预处理;根据所述处理器访问执行并行度Para,完成对待写回寄存器文件数据进行复制或者重新排序;SIMD处理器访问并行度为Para,Para=2p,0≤p≤n;所述SIMD处理器每次访问2p组寄存器,一个执行周期并行执行2p组数据处理,SIMD处理器总线最大支持2n组数据处理;
所述寄存器文件包含w个寄存器,其中w=2n+m,n、m为正整数;所述寄存器在物理实现方式上按照N×M矩阵排列,其中N=2n表示列数,代表每组寄存器内具体寄存器个数,N等于所述SIMD处理器支持最大并行度,M=2m表示行数,代表寄存器文件包含组寄存器数;所述寄存器文件索引地址宽度为(n+m-1,0)位,每个寄存器的索引地址按照矩阵形式,先行后列自右向左依次编码,索引名称依次为R0~Rw-1;所述寄存器索引地址(n+m-1,n)位段代表的数值确定矩阵当前行号所在的行寄存器组的使能有效信号;
所述寄存器数据读出单元对寄存器文件中待读出数据进行读取。
2.一种利用权利要求1所述装置用于SIMD处理器的寄存器文件数据读写的方法,其特征在于包括下述步骤:
1)初始化,将需要进行数据处理的数据存储在数据存储单元DRAM指定地址范围中,根据指令译码单元产生并行度Para、寄存器写使能信号、寄存器读使能信号、数据操作类型和待访问寄存器索引;
2)根据译码控制信号,从DRAM指定地址范围中,按照当前执行并行度读出Para=2p组数据,通过总线送至寄存器数据写回单元;
3)寄存器写回单元操作分为两类情况:一类为所述SIMD处理器在执行运算操作过程中不改变并行度Para,对待写回寄存器数据复制2n-p-1份,所有2n-p组数据依次填充总线并输出至寄存器文件;另一类为所述SIMD处理在执行运算操作过程中改变并行度Para,当所述处理器访问并行度为Para=2p时,将当前数据进行一次复制,若当前运算操作要求复制后的数据重新排序,按照操作要求完成该组数据重新排序,将当前两组数据按照输入顺序合并为包含2p+1个数据的组,改变当前执行并行度为Para=2p+1,对合并后的数据组再次进行复制2n-p-1-1份,所有2n-p-1组数据依次填充总线并输出至寄存器文件;
4)寄存器文件根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定具体待访问寄存器具体位置;待访问寄存器索引高(n+m-1,n)位与寄存器文件中行号数值一致,确定该行寄存器写使能有效;根据待访问寄存器索引地址低(n-1,p)位确定具体列寄存器组写使能有效,当p≤n-1时,所述寄存器矩阵中列寄存器地址(n-1,p)与待访问寄存器地址(n-1,p)位段一致时,确定该列寄存器使能有效;当p>n-1时,所述寄存器矩阵中列寄存器使能均有效,当所述寄存器矩阵中寄存器所在行和列均为写使能信号有效时,该寄存器确定为写使能有效,将总线中与索引寄存器对应区间的数据写入目的寄存器中;
5)寄存器读出单元读出寄存器文件待访问寄存器中的数据,根据待访问寄存器的索引地址(n+m-1,0)和当前并行度Para确定待访问寄存器具体位置;当寄存器读使能信号有效时,所述寄存器数据读出单元在寄存器读使能信号的控制下,读出待访问寄存器中的数据,按照寄存器索引地址由低向高依次依次输出至总线低2p个字段,寄存器数据读取完毕,寄存器文件中读出的数据进入到下一个执行单元中进行数据处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410542096.4A CN104317554B (zh) | 2014-10-14 | 2014-10-14 | 用于simd处理器的寄存器文件数据读写装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410542096.4A CN104317554B (zh) | 2014-10-14 | 2014-10-14 | 用于simd处理器的寄存器文件数据读写装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317554A true CN104317554A (zh) | 2015-01-28 |
CN104317554B CN104317554B (zh) | 2017-02-15 |
Family
ID=52372790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410542096.4A Active CN104317554B (zh) | 2014-10-14 | 2014-10-14 | 用于simd处理器的寄存器文件数据读写装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317554B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433760A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
CN113297111A (zh) * | 2021-06-11 | 2021-08-24 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11862289B2 (en) | 2021-06-11 | 2024-01-02 | International Business Machines Corporation | Sum address memory decoded dual-read select register file |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050024983A1 (en) * | 2002-04-22 | 2005-02-03 | Graham Kirsch | Providing a register file memory with local addressing in a SIMD parallel processor |
US20060242387A1 (en) * | 2001-09-20 | 2006-10-26 | Matsuhita Electric Industrial Co., Ltd. | Processor, compiler and compilation method |
US20080046688A1 (en) * | 2002-09-25 | 2008-02-21 | Tetsuya Tanaka | Processor executing SIMD instructions |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
WO2010139944A1 (en) * | 2009-06-05 | 2010-12-09 | Arm Limited | A data processing apparatus and method for performing a predetermined rearrangement operation |
CN101930355A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 实现寄存器文件分组编址、读写控制方法的寄存器电路 |
CN103168289A (zh) * | 2011-10-14 | 2013-06-19 | 松下电器产业株式会社 | 转置运算装置及其集成电路、以及转置处理方法 |
-
2014
- 2014-10-14 CN CN201410542096.4A patent/CN104317554B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060242387A1 (en) * | 2001-09-20 | 2006-10-26 | Matsuhita Electric Industrial Co., Ltd. | Processor, compiler and compilation method |
US20050024983A1 (en) * | 2002-04-22 | 2005-02-03 | Graham Kirsch | Providing a register file memory with local addressing in a SIMD parallel processor |
US20080046688A1 (en) * | 2002-09-25 | 2008-02-21 | Tetsuya Tanaka | Processor executing SIMD instructions |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
WO2010139944A1 (en) * | 2009-06-05 | 2010-12-09 | Arm Limited | A data processing apparatus and method for performing a predetermined rearrangement operation |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
CN101930355A (zh) * | 2010-08-24 | 2010-12-29 | 中国航天科技集团公司第九研究院第七七一研究所 | 实现寄存器文件分组编址、读写控制方法的寄存器电路 |
CN103168289A (zh) * | 2011-10-14 | 2013-06-19 | 松下电器产业株式会社 | 转置运算装置及其集成电路、以及转置处理方法 |
Non-Patent Citations (2)
Title |
---|
何卫强 等: "基于SystemC的周期精确级处理器DSP建模", 《微电子学与计算机》 * |
张凯 等: "基于SIMD处理器的全定制多粒度矩阵寄存器文件", 《国防科技大学学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433760A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
CN113297111A (zh) * | 2021-06-11 | 2021-08-24 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
CN113297111B (zh) * | 2021-06-11 | 2023-06-23 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104317554B (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105051680B (zh) | 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法 | |
CN102541774B (zh) | 多粒度并行存储系统与存储器 | |
CN102253921B (zh) | 一种动态可重构处理器 | |
CN103970720B (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
US9240237B2 (en) | Semiconductor device and method of writing/reading entry address into/from semiconductor device | |
CN102541749B (zh) | 多粒度并行存储系统 | |
CN101083643A (zh) | 一种低存储器开销的混合基fft处理器及其方法 | |
CN111433758A (zh) | 可编程运算与控制芯片、设计方法及其装置 | |
CN103810111A (zh) | 有源存储器件中的地址生成的方法及其处理元件 | |
CN103927270A (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
Yang et al. | Molecular dynamics range-limited force evaluation optimized for FPGAs | |
CN104008021A (zh) | 针对多数据体系结构的精确的异常信号发送 | |
Paul et al. | MAHA: An energy-efficient malleable hardware accelerator for data-intensive applications | |
CN104317554A (zh) | 用于simd处理器的寄存器文件数据读写装置和方法 | |
CN103699355B (zh) | 一种变阶流水串行乘累加器 | |
CN101930355B (zh) | 实现寄存器文件分组编址、读写控制方法的寄存器电路 | |
CN109614145A (zh) | 一种处理器核心结构及数据访存方法 | |
CN101930356B (zh) | 用于浮点协处理器的寄存器文件分组编址、读写控制方法 | |
CN102541813B (zh) | 一种多粒度并行fft蝶形计算的方法及相应的装置 | |
CN104035898A (zh) | 一种基于vliw类型处理器的访存系统 | |
CN108665940B (zh) | Ecc编码电路、解码电路以及存储器控制器 | |
Kaplan et al. | From processing-in-memory to processing-in-storage | |
CN111124360A (zh) | 一种可配置矩阵乘法的加速器 | |
CN102411557A (zh) | 多粒度并行fft计算装置 | |
US11823771B2 (en) | Streaming access memory device, system and method |
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 |