CN101609715A - 行列访问端口分离的矩阵寄存器文件 - Google Patents
行列访问端口分离的矩阵寄存器文件 Download PDFInfo
- Publication number
- CN101609715A CN101609715A CNA2009100433435A CN200910043343A CN101609715A CN 101609715 A CN101609715 A CN 101609715A CN A2009100433435 A CNA2009100433435 A CN A2009100433435A CN 200910043343 A CN200910043343 A CN 200910043343A CN 101609715 A CN101609715 A CN 101609715A
- Authority
- CN
- China
- Prior art keywords
- row
- read
- write
- address
- port
- 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
本发明公开了一种行列访问端口分离的矩阵寄存器文件,目的是提供一种行列访问端口分离、支持行列向量分段访问和行列向量同时读写的矩阵寄存器文件。它由矩阵寄存器文件主体和读写端口组成,矩阵寄存器文件主体由行读地址译码器、行读出数据缓冲器、行写地址译码器、列读地址译码器、列读出数据缓冲器、列写地址译码器以及存储单元阵列构成;存储单元阵列按行划分为N个存储单元行,N个存储单元行构成N个行向量寄存器;存储单元阵列按列划分为M个存储单元列,M个存储单元列构成M个列向量寄存器;读写端口由分离的行读端口、行写端口、列读端口和列写端口构成。本发明降低了同时访问行向量和列向量寄存器的代价,消除了矩阵转置操作,提高了运算效率。
Description
技术领域:
本发明涉及向量微处理器中的向量寄存器文件,特别是一种行列访问端口分离的向量寄存器文件(简称矩阵寄存器文件)。
背景技术:
为了支持矩阵或块运算,已有向量微处理器中的向量指令译码部件和向量运算部件利用支持行列向量访问的向量寄存器文件实现矩阵转置以及不同数据大小的行列向量访问。
向量指令译码部件对向量指令进行译码,将译码结果(执行何种指令、源操作数位置、以及目的操作数位置等)发送到向量运算部件和向量寄存器文件。向量运算部件由L(L为正整数,且通常为2的整数次幂)个标量运算单元组成,它按照译码结果对来自向量寄存器文件或存储器的源操作数进行运算,并将运算结果写入由译码结果指定的向量寄存器或存储器。
支持行列向量访问的向量寄存器文件存放和提供向量微处理器运行时所需的向量数据。
支持行列向量访问的向量寄存器文件由向量寄存器文件主体和读写端口组成。向量寄存器文件主体由NR个读地址译码器、NR个读出缓冲器、NW个写地址译码器以及存储单元阵列构成,存储单元阵列由N个行向量寄存器VR0-VRN-1或M个列向量寄存器CVR0-CVRM-1构成,N为行向量寄存器的数目,M为列向量寄存器的数目,N和M为正整数且通常为2的整数次幂,因此存储单元阵列包含N*M个元素。存储单元阵列按行划分为N个M*B位的存储单元行,每行由M个元素组成,每个元素的位宽为B。这N个存储单元行与N个行向量寄存器VR0-VRN-1一一对应,用于实现行向量寄存器的存取;该存元阵列按列划分为M个N*B位的存储单元列,每列由N个同列的元素组成。这M个存储单元列与M个列向量寄存器CVR0-CVRM-1一一对应,用于实现列向量寄存器的存取。以CVRM-1为例,该列向量寄存器包括所有行向量寄存器VR0-VRN-1的最后一个元素EM-1。由于存储单元阵列的组成方式,已有支持行列向量访问的向量寄存器文件不仅可视作由N个行向量寄存器构成,还可视作由M个列向量寄存器构成。
读写端口是向量寄存器文件与向量微处理器中其他部件的接口,它允许向量微处理器中其他部件访问向量寄存器文件主体存储的数据。已有支持行列向量访问的向量寄存器文件中,读写端口均为行列向量访问复用的端口,即一个读端口不仅支持对行向量寄存器进行读取,还支持对列向量寄存器进行读取,而一个写端口不仅支持对行向量寄存器进行写入,还支持对列向量寄存器进行写入。
为了支持多个向量部件同时工作,即同时从向量寄存器中获取多个源操作数和写入多个目的操作数,向量寄存器文件需要多个读端口和多个写端口,而不同读端口或写端口之间的访问相互独立。因此,已有支持行列向量访问的向量寄存器文件具有多个读写端口,即NR个读端口和NW个写端口构成,其中NR≥1且NW≥1。每个读端口都由行列选择信号线、读地址总线、读使能信号线以及读数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行读取,读地址总线的位宽为MAX(log2N,log2M),即log2N和log2M两者的最大值,读数据总线的位宽为N*B或M*B。每个写端口都由行列选择信号线、写地址总线、写使能信号线以及写数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行写入,写地址总线的位宽为MAX(log2N,log2M),即log2N和log2M两者的最大值,写数据总线的位宽为N*B或M*B。
读端口与向量寄存器文件主体中的读地址译码器一一对应,其中每个读端口的行列选择信号线、读地址总线和读使能信号线是相应读地址译码器的输入。每个读地址译码器产生N个行读地址选择信号和M个列读地址选择信号,这些信号分别形成行读地址选择总线和列读地址选择总线。N个行读地址选择信号分别控制存储单元阵列中的N个存储单元行,每一存储单元行存储了一个行向量寄存器的所有元素E0-EM-1;M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列,每一存储单元列存储了一个列向量寄存器的所有元素。存储单元阵列在这些读地址选择信号的作用下,将相应存储单元行或存储单元列的内容读出至相应读端口的读出缓冲器,读出缓冲器将该内容输出至该读端口的读出数据总线上。
写端口与向量寄存器文件主体中的写地址译码器一一对应,每个写端口的行列选择信号线、写地址总线和写使能信号线是相应写地址译码器的输入。每个写地址译码器产生N个行写地址选择信号和M个列写地址选择信号,这些信号分别形成行写地址选择总线和列写地址选择总线。N个行写地址选择信号分别控制存储单元阵列中的N个存储单元行,M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列。存储单元阵列在这些写地址选择信号的作用下,将写数据总线上的内容写入相应存储单元行或存储单元列。
科学计算和图像处理等大量算法需要对数据块或矩阵的行向量和列向量同时读取,矩阵乘法就是最典型的算法之一。矩阵乘法X*Y可由下面的公式表达,其中X*Y中的每个元素等于X中一个行向量(如x11,x12,...,x1D)乘以Y中的一个列向量(如y11,y21,...,yD1)并将D个乘积累加的结果。例如,X*Y的第a行第b列元素就等于即X中第a个行向量与Y中第b个列向量相乘,并将D个乘积累加。
由上述计算公式可知,矩阵乘法需要大量同时使用矩阵的行向量和列向量,已有一些专利讨论了矩阵行向量和列向量访问的实现方法。如美国专利US 6,084,771 B1(Processor PROCESSOR WITH REGISTER FILE ACCESSIBLE BYROW COLUMN TO ACHIEVE DATA ARRAY TRANSPOSITION)通过在向量寄存器文件中增加列读地址译码器、转置控制以及行列读地址复用器,使得同一个端口既可以读取行向量寄存器,又可以在转置模式下读取列向量寄存器。该专利通过列加载指令利用行列复用的端口读取列向量寄存器的内容,并将其写入行向量寄存器,从而加速矩阵转置操作。美国专利US20060036801 A1(SCAIABLE MATRIX REGISTER FILE)提出利用硬件查找表实现逻辑行/列元素到物理行/列元素的映射,使得任意逻辑行中的任意两个元素不处于同一个物理行,且任意逻辑列中的任意两个元素不处于同一个物理列。这样,该向量寄存器文件可以通过同一个端口既读取行向量寄存器,又读取列向量寄存器。这两项专利均通过端口复用机制,使得一个端口既能访问行向量寄存器,又能访问列向量寄存器。尽管这两种行列端口复用机制降低了端口数目,但是它们存在两个缺点:
1)实现行、列向量寄存器同时访问的代价较大。一方面,采用行列访问复用机制的端口由于同时实现了行列访问机制,其实现代价比非复用的行访问端口或列访问端口大。另一方面,实现行、列向量寄存器同时访问至少需要两个端口,若全部或部分端口采用行列复用机制,则相对端口完全采用非复用机制的,采用复用机制的向量寄存器的面积、功耗以及延时较大。
2)行列向量访问机制在某些情况下不能工作。一方面,向量寄存器文件中行向量寄存器和列向量寄存器中元素的数目分别为M和
N,而M和N往往不相等。因此,行列向量寄存器的长度不同,不能直接进行运算。已有文献和专利未对该情况提出解决方法。另一方面,已有专利读取行向量寄存器或列向量寄存器时是将其所有元素取出,而M或N往往大于向量运算部件中标量运算单元的数目L,因此,即便M和N相等,向量运算部件也不能一次性处理源操作数中的所有元素。已有文献和专利也未对这种情况提出解决方法。
综上所述,如何以较低代价实现行向量寄存器和列向量寄存器的同时访问,并为向量运算部件提供与之运算能力匹配的源操作数带宽仍是本领域研究的热点问题。
发明内容:本发明要解决的技术问题是针对现有向量寄存器文件实现时访问行向量和列向量寄存器的代价较大以及行列向量的元素数目与向量运算部件处理能力不匹配的问题,提供一种行列访问端口分离、支持行列向量分段访问且支持行列向量同时读写的矩阵寄存器文件,该矩阵寄存器文件通过分离的行向量访问端口和列向量访问端口以及行列向量分段访问机制,不仅降低实现同时访问行向量和列向量寄存器的代价,消除矩阵处理过程中的矩阵转置操作,提高矩阵运算的效率;还完善了行列向量访问机制,解决已有矩阵寄存器文件的数据带宽与向量运算部件运算能力不匹配的问题。
本发明的技术方案是:
本发明由矩阵寄存器文件主体和读写端口组成。
矩阵寄存器文件主体由NRR个行读地址译码器、NRR个行读出缓冲器、NRW个行写地址译码器、NCR个列读地址译码器、NCR个列读出缓冲器、NCW个列写地址译码器以及包含N*M个元素的存储单元阵列构成,其中NRR、NRW、NCR、NCW均为正整数且NRR≥1且NCR≥1且NRW≥0且NCW≥0且NRW+NCW≥1。N为矩阵寄存器文件中行向量寄存器的数目,且N为向量运算部件中标量运算部件数目的倍数,即N=nL,n和L为正整数且为2的整数次幂,L为向量运算部件中标量运算单元的数目,M为矩阵寄存器文件中列向量寄存器的数目,且M为向量运算部件中标量运算部件的数目的倍数,即M=mL,其中m为正整数且为2的整数次幂。
存储单元阵列按行划分为N个存储单元行,每行由M个同行的元素E0-EM-1组成,每个元素的位宽为B,B为正整数,这样,每个存储单元行有M*B位。这N个存储单元行即构成N个行向量寄存器VR0-VRN-1,实现相应行矩阵寄存器的存取。每个存储单元行由m个子行组成,每个子行包含连续的L个元素。第i个行向量寄存器的第j个子行用VRi[j]表示,该子行由元素EjL-EjL+L-1构成,其中i≥0且i<n且j≥0且j<m;该存储单元阵列按列划分为M个存储单元列,每列由N个同列的元素组成,每个存储单元列有N*B位。这M个存储单元列即构成M个列向量寄存器CVR0-CVRM-1,实现相应列向量寄存器的存取。每个存储单元列由n个子列组成,每个子列包含连续的L个元素。第u个列向量寄存器的第v个子列用CVRu[v]表示,其中u≥0且v<m且u≥0且v<n。
为了区分行向量寄存器访问和列向量寄存器访问,读写端口由分离的行读写端口和列读写端口组成,行读写端口由NRR个行读端口、NRW个行写端口组成,列读写端口由NCR个列读端口和NCW个列写端口组成:
每个行读端口由行读地址总线、行读使能信号线以及行读数据总线组成。每个行写端口由行写地址总线、行写使能信号线以及行写数据总线组成。行读地址总线和行写地址总线的宽度为log2(m*N)位,支持向量处理器对矩阵寄存器文件中任意行向量寄存器的任意子行进行访问。行读数据总线和行写数据总线的宽度为L*B位,即一次访问可为L个标量功能单元提供源操作数或将L个标量功能单元产生的结果写入矩阵寄存器文件。
行读端口与矩阵寄存器文件主体中的行读地址译码器一一对应,每个行读端口的行读地址总线和行读使能信号线是相应行读地址译码器的输入。行读地址译码器根据行读地址总线上的地址译码出m*N个子行读地址选择信号,这些子行读地址选择信号形成子行读地址选择总线。每个子行读地址选择信号控制存储单元阵列中的一个存储单元子行。当行读使能信号线有效时,与行读地址对应的子行读地址选择信号有效,而其他子行读地址选择信号无效。当行读使能信号线无效时,m*N个子行读地址选择信号均无效。当某一子行读地址选择信号有效时,相应存储单元子行的内容被读出至该端口的行读出缓冲器,而行读出缓冲器又将该内容输出至行读端口的行读出数据总线上。
行写端口与矩阵寄存器文件主体中的行写地址译码器一一对应,每个行写端口的写地址总线和写使能信号线是相应行写地址译码器的输入。行写地址译码器根据行写地址总线上的地址译码出m*N个子行写地址选择信号,这些子行写地址选择信号形成子行写地址选择总线。每个子行写地址选择信号控制存储单元阵列中的一个存储单元子行。当行写使能信号线有效时,与行写地址对应的子行写地址选择信号有效,而其他子行写地址选择信号无效。当行写使能信号线无效时,m*N个子行写地址选择信号均无效。当某一行写地址选择信号有效时,行写数据总线上的内容写入相应存储单元行。
每个列读端口由列读地址总线、列读使能信号线以及列读数据总线组成。每个列写端口由列写地址总线、列写使能信号线以及列写数据总线组成。列读地址总线和列写地址总线的宽度为log2(n*M)位,支持向量处理器对矩阵寄存器文件中任意列向量寄存器的任意子列进行访问。列读数据总线和列写数据总线的宽度为L*B位,即一次访问可为L个标量功能单元提供源操作数或将L个标量功能单元产生的结果写入矩阵寄存器文件。
列读端口与矩阵寄存器文件主体中的列读地址译码器一一对应,每个列读端口的读地址总线和读使能信号线是相应列读地址译码器的输入。列读地址译码器根据列读地址总线上的地址译码出n*M个子列读地址选择信号,这些子列读地址选择信号形成子列读地址选择总线。每个子列读地址选择信号控制存储单元阵列中的一个存储单元子列。当列读使能信号线有效时,与列读地址对应的子列读地址选择信号有效,而其他子列读地址选择信号无效。当列读使能信号线无效时,n*M个子列读地址选择信号均无效。当某一子列读地址选择信号有效时,相应存储单元子列的内容被读出至该端口的列读出缓冲器,而列读出缓冲器又将该内容输出至列读端口的列读出数据总线上。
列写端口与矩阵寄存器文件主体中的列写地址译码器一一对应,每个列写端口的写地址总线和写使能信号线是相应列写地址译码器的输入。列写地址译码器根据列写地址总线上的地址译码出n*M个子列写地址选择信号,这些子列写地址选择信号形成子列写地址选择总线。每个子列写地址选择信号控制存储单元阵列中的一个存储单元子列。当列写使能信号线有效时,与列写地址对应的子列写地址选择信号有效,而其他子列写地址选择信号无效。当列写使能信号线无效时,n*M个子列写地址选择信号均无效。当某一列写地址选择信号有效时,列写数据总线上的内容写入相应存储单元列。
矩阵寄存器文件主体满足:2*D≤N且2*D≤M且D≤L,D为矩阵X的行向量或列向量数目。若D不满足这个条件,则将X按高等教育出版社出版的高等代数(张禾瑞等著,2007年,第5版)中的矩阵分块计算方法拆分成多个满足这一条件的子矩阵,再分别对子矩阵进行运算,最后综合各子矩阵的运算结果形成最终结果。
以矩阵乘法X*Y的一次行列乘法为例,若矩阵X已经按行连续存放于矩阵寄存器文件中行向量寄存器VRA-VRA+D-1的第r个子行,且矩阵Y已经按列连续存放于列向量寄存器CVRB-CVRB+D-1的第s个子列,其中r、s、A和B为正整数,满足A≤D且B≤D且r<M且s<N,则矩阵X的第p行乘以矩阵Y的第q列按如下步骤进行,其中p和q均为正整数,满足p<D且q<D。
1程序发出矩阵乘法指令:VMUL VRA+p[r],CVRB+q[s],VRC+k[t],意思是将矩阵寄存器文件中的第A+p个行向量寄存器中第r个子行的所有元素分别与第B+q个列向量寄存器中第s个子列的所有元素相乘,所得乘法结果放入第C+k个行向量寄存器中第t个子行中。
1.1向量指令译码部件从指令中抽取源操作数地址p和r以及q和s,并同时完成如下两个操作:
1.1.1将行读地址(A+p和r)发送到矩阵寄存器文件的某一行读端口RPR,同时将其行读使能信号置为有效;
1.1.2将列读地址(B+q和s)发送到矩阵寄存器文件的某一列读端口RPC,同时将其列读使能信号置为有效。
1.2矩阵寄存器文件行读端口RPR中的行读地址和行读使能信号通过行读地址译码器形成m*N个子行读地址选择信号,其中第m*(A+p)+r个子行读地址选择信号有效,而其他子行读地址选择信号均无效。因此,存储单元阵列将第A+p行存储单元中第r个子行,即行向量寄存器VRA+p中第r个子行所在的存储单元子行,的内容读取到行读端口RPR中的行读数据总线上。
1.3矩阵寄存器文件列读端口RPC中的列读地址和列读使能信号通过列读地址译码器形成n*M个子列读地址选择信号,其中第n*(B+q)+s个子列读地址选择信号有效,而其他子列读地址选择信号均无效。因此,存储单元阵列将第B+q列存储单元中第s个子列,即列向量寄存器CVRB+q中第s个子列所在的存储单元子列,的内容读取到列读端口RPC中的列读数据总线上。
1.4向量运算部件从行读端口RPR的行读数据总线和列读端口RPC的列读数据总线上分别获取到两个源操作数,并对这两个源操作数中的元素分别做乘法运算,得到D个乘法运算结果。
1.5向量运算部件完成如下步骤:
1.5.1将向量指令译码部件从指令中抽取的目的行向量寄存器地址C+k以及子行地址t作为行写地址发送到矩阵寄存器文件的某一行写端口RPW。
1.5.2将乘法运算结果作为写入数据发送到行写端口RPW。
1.5.3置行写端口RPW的行写使能信号为有效
1.6行写端口RPW中的行写地址和行写使能信号通过行写地址译码器形成m*N个子行写地址选择信号,其中第m*(C+k)+t个子行写地址选择信号有效,而其他子行写地址选择信号均无效。因此,存储单元阵列将行写端口RPW中行写数据总线上的数据写入存储单元阵列第C+k行存储单元的第t个子行,即行向量寄存器VRC+k中第t行所在的存储单元子行。
由上述过程可知,本发明进行矩阵乘法操作时不需要进行矩阵转置操作,也不需要加载转置矩阵,而且使矩阵寄存器文件的读数据总线和写数据总线宽度与向量运算部件的运算能力匹配。因此,采用本发明能产生如下有益技术效果:
本发明通过分离的行向量访问端口和列向量访问端口以及行列向量分段访问机制,不仅降低实现同时访问行向量和列向量寄存器的代价,消除矩阵处理过程中的矩阵转置操作,提高矩阵运算的效率;还完善了行列向量访问机制,解决了已有矩阵寄存器文件的数据带宽与向量运算部件运算能力不匹配的问题。
附图说明
图1是目前通用向量微处理器的部分逻辑结构示意图;
图2是目前通用向量微处理器中支持行列向量访问的向量寄存器文件的逻辑结构示意图;
图3是图2所示向量寄存器文件的存储单元阵列结构示意图;
图4是本发明矩阵寄存器文件的逻辑结构示意图;
图5是本发明矩阵寄存器文件的存储单元阵列逻辑结构示意图;
图6是矩阵X和Y在本发明矩阵寄存器文件中的存放示意图;
图7是基于本发明矩阵寄存器文件的行、列向量进行乘法操作示意图。
图1是目前通用向量微处理器的部分逻辑结构示意图。向量微处理器通常包括向量寄存器文件、向量指令译码部件和向量运算部件。向量指令译码部件完成对向量指令的译码,将译码结果(需要执行何种指令、需要读取哪些向量寄存器等)发送到向量运算部件和向量寄存器文件。向量运算部件按照译码结果对向量寄存器文件提供的源操作数进行运算,并将运算的结果写入由译码结果指定的向量寄存器或存储器。向量寄存器文件用于存放和提供向量微处理器运行时所需的向量数据。
图2目前通用向量微处理器中支持行列向量访问的向量寄存器文件的逻辑结构示意图。这种向量寄存器文件由向量寄存器文件主体和读写端口组成。向量寄存器文件主体由NR个读地址译码器、NR个读出缓冲器、NW个写地址译码器以及包含N*M个元素的存储单元阵列构成,存储单元阵列由N个行向量寄存器VR0-VRN-1或M个列向量寄存器CVR0-CVRM-1构成,N为行向量寄存器的数目,M为列向量寄存器的数目,因此存储单元阵列包含N*M个元素。读写端口均为行列向量访问复用的端口,即一个读端口不仅支持对行向量寄存器进行读取,还支持对列向量寄存器进行读取,而一个写端口不仅支持对行向量寄存器进行写入,还支持对列向量寄存器进行写入。为了支持多个向量部件同时工作,读写端口由NR个读端口和NW个写端口构成,其中NR≥1且NW≥1。每个读端口都由行列选择信号线、读地址总线、读使能信号线以及读数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行读取,读地址总线的位宽为MAX(log2N,log2M),即log2N和log2M两者的最大值,读数据总线的位宽为N*B或M*B。每个写端口都由行列选择信号线、写地址总线、写使能信号线以及写数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行写入,写地址总线的位宽为MAX(log2N,log2M),即log2N和log2M两者的最大值,写数据总线的位宽为N*B或M*B。
图3是图2所示向量寄存器文件的存储单元阵列结构示意图。存储单元阵列按行划分为N个M*B位的存储单元行,每行由M个同行的元素组成,每个元素的位宽为B。这N个存储单元行与N个行向量寄存器VR0-VRN-1一一对应,用于实现相应行向量寄存器的存取功能;该存储单元阵列按列划分为M个N*B位的存储单元列,每列由N个同列的元素组成。这M个存储单元列与M个列向量寄存器CVR0-CVRM-1一一对应,用于实现相应列向量寄存器的存取功能。以CVRM-1为例,该列向量寄存器包括所有行向量寄存器VR0-VRN-1的最后一个元素EM-1。读端口与向量寄存器文件主体中的读地址译码器一一对应,其中每个读端口的行列选择信号线、读地址总线和读使能信号线是相应读地址译码器的输入。每个读地址译码器产生N个行读地址选择信号和M个列读地址选择信号,这些信号分别形成行读地址选择总线和列读地址选择总线。N个行读地址选择信号分别控制存储单元阵列中的N个存储单元行,每一存储单元行存储了一个行向量寄存器的所有元素E0-EM-1;M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列,每一存储单元列存储了一个列向量寄存器的所有元素。存储单元阵列在这些读地址选择信号的作用下,将相应存储单元行或存储单元列的内容读出至相应读端口的读出缓冲器,而读出缓冲器又将该内容输出至该读端口的读出数据总线上。写端口与向量寄存器文件主体中的写地址译码器一一对应,每个写端口的行列选择信号线、写地址总线和写使能信号线是相应写地址译码器的输入。每个写地址译码器产生N个行写地址选择信号和M个列写地址选择信号,这些信号分别形成行写地址选择总线和列写地址选择总线。N个行写地址选择信号分别控制存储单元阵列中的N个存储单元行,M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列。存储单元阵列在这些写地址选择信号的作用下,将写数据总线上的内容写入相应存储单元行或存储单元列。
图4是本发明矩阵寄存器文件的逻辑结构示意图。本发明由读写端口和矩阵寄存器文件主体组成。
读写端口是矩阵寄存器文件与向量微处理器中其他部件的接口,读写端口由NRR个行读端口、NRW个行写端口、NCR个列读端口和NCW个列写端口构成,其中NRR≥1且NCR≥1且NRW≥0且NCW≥0且NRW+NCW≥1。
矩阵寄存器文件主体由NRR个行读地址译码器、NRR个行读出缓冲器、NRW个行写地址译码器、NCR个列读地址译码器、NCR个列读出缓冲器、NCW个列写地址译码器以及包含N*M个元素的存储单元阵列构成。
每个行读端口由行读地址总线、行读使能信号线以及行读数据总线组成。每个行写端口由行写地址总线、行写使能信号线以及行写数据总线组成。行读地址总线和行写地址总线的宽度为log2(m*N)位,支持向量处理器对矩阵寄存器文件中任意行向量寄存器的任意子行进行访问。行读数据总线和行写数据总线的宽度为L*B位,即一次访问可为L个标量功能单元提供源操作数或将L个标量功能单元产生的结果写入矩阵寄存器文件。
行读端口与矩阵寄存器文件主体中的行读地址译码器一一对应,每个行读端口的行读地址总线和行读使能信号线是相应行读地址译码器的输入。行读地址译码器根据行读地址总线上的地址译码出m*N个子行读地址选择信号,这些子行读地址选择信号形成子行读地址选择总线。每个子行读地址选择信号控制存储单元阵列中的一个存储单元子行。当行读使能信号线有效时,与行读地址对应的子行读地址选择信号有效,而其他子行读地址选择信号无效。当行读使能信号线无效时,m*N个子行读地址选择信号均无效。当某一子行读地址选择信号有效时,相应存储单元子行的内容被读出至该端口的行读出缓冲器,而行读出缓冲器又将该内容输出至行读端口的行读出数据总线上。
行写端口与矩阵寄存器文件主体中的行写地址译码器一一对应,每个行写端口的写地址总线和写使能信号线是相应行写地址译码器的输入。行写地址译码器根据行写地址总线上的地址译码出m*N个子行写地址选择信号,这些子行写地址选择信号形成子行写地址选择总线。每个子行写地址选择信号控制存储单元阵列中的一个存储单元子行。当行写使能信号线有效时,与行写地址对应的子行写地址选择信号有效,而其他子行写地址选择信号无效。当行写使能信号线无效时,m*N个子行写地址选择信号均无效。当某一行写地址选择信号有效时,行写数据总线上的内容写入相应存储单元行。
每个列读端口由列读地址总线、列读使能信号线以及列读数据总线组成。每个列写端口由列写地址总线、列写使能信号线以及列写数据总线组成。列读地址总线和列写地址总线的宽度为log2(n*M)位,支持向量处理器对矩阵寄存器文件中任意列向量寄存器的任意子列进行访问。列读数据总线和列写数据总线的宽度为L*B位,即一次访问可为L个标量功能单元提供源操作数或将L个标量功能单元产生的结果写入矩阵寄存器文件。
列读端口与矩阵寄存器文件主体中的列读地址译码器一一对应,每个列读端口的读地址总线和读使能信号线是相应列读地址译码器的输入。列读地址译码器根据列读地址总线上的地址译码出n*M个子列读地址选择信号,这些子列读地址选择信号形成子列读地址选择总线。每个子列读地址选择信号控制存储单元阵列中的一个存储单元子列。当列读使能信号线有效时,与列读地址对应的子列读地址选择信号有效,而其他子列读地址选择信号无效。当列读使能信号线无效时,n*M个子列读地址选择信号均无效。当某一子列读地址选择信号有效时,相应存储单元子列的内容被读出至该端口的列读出缓冲器,而列读出缓冲器又将该内容输出至列读端口的列读出数据总线上。
列写端口与矩阵寄存器文件主体中的列写地址译码器一一对应,每个列写端口的写地址总线和写使能信号线是相应列写地址译码器的输入。列写地址译码器根据列写地址总线上的地址译码出n*M个子列写地址选择信号,这些子列写地址选择信号形成子列写地址选择总线。每个子列写地址选择信号控制存储单元阵列中的一个存储单元子列。当列写使能信号线有效时,与列写地址对应的子列写地址选择信号有效,而其他子列写地址选择信号无效。当列写使能信号线无效时,n*M个子列写地址选择信号均无效。当某一列写地址选择信号有效时,列写数据总线上的内容写入相应存储单元列。
图5是本发明矩阵寄存器文件的存储单元阵列结构的示意图。
存储单元阵列按行划分为N个M*B位的存储单元行,每行由M个同行的元素E0-EM-1组成,每个元素的位宽为B。这N个存储单元行与N个行向量寄存器VR0-VRN-1一一对应,实现相应行矩阵寄存器的存取。每个存储单元行由m个子行组成,每个子行包含连续的L个元素。由此,矩阵寄存器文件中第i个行向量寄存器的第j个子行用VRi[j]表示,该子行由元素EjL-EjL+L-1构成,其中i≥0且i<n且j≥0且j<m;该存储单元阵列按列划分为M个N*B位的存储单元列,每列由N个同列的元素组成。这M个存储单元列与M个列向量寄存器CVR0-CVRM-1一一对应,实现相应列向量寄存器的存取。每个存储单元列由n个子列组成,每个子列包含连续的L个元素。由此,矩阵寄存器文件中第u个列向量寄存器的第v个子列用CVRu[v]表示,其中u≥0且v<m且u≥0且v<n。例如,图中存储单元阵列右下角的灰色部分,可以用CVRM-1[n-1]表示。
每个行读地址译码器产生的m*N个子行读地址选择信号分别控制存储单元阵列中的m*N个存储单元子行,每一存储单元子行存储了一个行向量寄存器中一个子行的所有元素。当某一子行读地址选择信号有效时,相应存储单元子行的内容被读出至该端口的行读出缓冲器,而行读出缓冲器又将该内容输出至行读端口的行读出数据总线上。
每个行写地址译码器产生的m*N个子行写地址选择信号分别控制存储单元阵列中的m*N个存储单元子行,每一存储单元子行存储了一个行向量寄存器中一个子行的所有元素。当某一行写地址选择信号有效时,行写数据总线上的内容写入相应存储单元行。
每个列读地址译码器产生的n*M个子列读地址选择信号分别控制存储单元阵列中的n*M个存储单元子列,每一存储单元子列存储了一个列向量寄存器中一个子列的所有元素。当某一子列读地址选择信号有效时,相应存储单元子列的内容被读出至该端口的列读出缓冲器,而列读出缓冲器又将该内容输出至列读端口的列读出数据总线上。
每个列写地址译码器产生的n*M个子列写地址选择信号分别控制存储单元阵列中的n*M个存储单元子列,每一存储单元子列存储了一个列向量寄存器中一个子列的所有元素。当某一列写地址选择信号有效时,列写数据总线上的内容写入相应存储单元列。
图6是矩阵X和Y在本发明矩阵寄存器文件中的存放示意图。X矩阵按行连续存放在行向量寄存器VR0-VRD-1的第零个子行,即先在行向量寄存器VR0第零个子行中存放矩阵X的第一行数据(x11,x12,...,x1D),然后在行向量寄存器VR1第零个子行中存放矩阵X的第二行数据(x21,x22,...,x2D),以此类推。Y矩阵按列连续存放在列向量寄存器CVRD-CVR2*D-1的第零个子列,即先在列向量寄存器CVRD第零个子列中存放矩阵Y的第一列数据(y11,y21,...,yD1),然后在列向量寄存器CVRD+1第零个子列中存放矩阵Y的第二列数据(y12,y22,...,yD2),以此类推。
图7基于本发明矩阵寄存器文件的行、列向量进行乘法操作示意图。向量运算单元执行行列向量乘法指令VMUL VR1[0],CVRD[0],VRD[0],意思是将矩阵寄存器文件中行向量寄存器VR1的第零个子行的所有元素分别与列向量寄存器CVRD的第零个子列的所有元素相乘,所得乘法结果放入行向量寄存器VRD的第零个子行。向量微处理器利用矩阵寄存器文件提供的行读端口和列读端口同时读取矩阵寄存器文件行向量寄存器VR1的第零个子行(对应于X矩阵的第二行)和列向量寄存器CVRD的第零个子列(对应于Y矩阵的第一列),两个源向量数据在向量运算部件中相乘,所得乘法结果通过矩阵寄存器文件提供的行写端口写入行向量寄存器VRD的第零个子行。
Claims (1)
1.一种行列访问端口分离的矩阵寄存器文件,由矩阵寄存器文件主体和读写端口组成,其特征在于:
所述矩阵寄存器文件主体由NRR个行读地址译码器、NRR个行读出缓冲器、NRW个行写地址译码器、NCR个列读地址译码器、NCR个列读出缓冲器、NCW个列写地址译码器以及包含N*M个元素的存储单元阵列构成,其中NRR、NRW、NCR、NCW均为正整数且NRR≥1且NCR≥1且NRW≥0且NCW≥0且NRW+NCW≥1,N为矩阵寄存器文件中行向量寄存器的数目,且N为向量运算部件中标量运算部件数目的倍数,即N=nL,n为正整数且为2的幂,L为向量运算部件中标量运算单元的数目,M为矩阵寄存器文件中列向量寄存器的数目,且M为向量运算部件中标量运算部件的数目的倍数,即M=mL,其中m为正整数且为2的幂;
存储单元阵列按行划分为N个存储单元行,每行由M个同行的元素E0-EM-1组成,每个元素的位宽为B,B为正整数,每个存储单元行有M*B位,这N个存储单元行即构成N个行向量寄存器VR0-VRN-1;每个存储单元行由m个子行组成,每个子行包含连续的L个元素,第i个行向量寄存器的第j个子行用VRi[j]表示,该子行由元素EjL-EjL+L-1构成,其中i≥0且i<n且j≥0且j<m;该存储单元阵列按列划分为M个存储单元列,每列由N个同列的元素组成,每个存储单元列有N*B位,这M个存储单元列即构成M个列向量寄存器CVR0-CVRM-1,每个存储单元列由n个子列组成,每个子列包含连续的L个元素,第u个列向量寄存器的第v个子列用CVRu[v]表示,其中u≥0且v<m且u≥0且v<n;
读写端口由分离的行读写端口和列读写端口组成,行读写端口由NRR个行读端口、NRW个行写端口组成,列读写端口由NCR个列读端口和NCW个列写端口组成:
每个行读端口由行读地址总线、行读使能信号线以及行读数据总线组成,每个行写端口由行写地址总线、行写使能信号线以及行写数据总线组成;行读地址总线和行写地址总线的宽度为log2(m*N)位,行读数据总线和行写数据总线的宽度为L*B位;
行读端口与矩阵寄存器文件主体中的行读地址译码器一一对应,每个行读端口的行读地址总线和行读使能信号线是相应行读地址译码器的输入,行读地址译码器根据行读地址总线上的地址译码出m*N个子行读地址选择信号,这些子行读地址选择信号形成子行读地址选择总线,每个子行读地址选择信号控制存储单元阵列中的一个存储单元子行;当行读使能信号线有效时,与行读地址对应的子行读地址选择信号有效,而其他子行读地址选择信号无效,当行读使能信号线无效时,m*N个子行读地址选择信号均无效;当某一子行读地址选择信号有效时,相应存储单元子行的内容被读出至该端口的行读出缓冲器,而行读出缓冲器将该内容输出至行读端口的行读出数据总线上;
行写端口与矩阵寄存器文件主体中的行写地址译码器一一对应,每个行写端口的写地址总线和写使能信号线是相应行写地址译码器的输入,行写地址译码器根据行写地址总线上的地址译码出m*N个子行写地址选择信号,这些子行写地址选择信号形成子行写地址选择总线,每个子行写地址选择信号控制存储单元阵列中的一个存储单元子行;当行写使能信号线有效时,与行写地址对应的子行写地址选择信号有效,而其他子行写地址选择信号无效,当行写使能信号线无效时,m*N个子行写地址选择信号均无效;当某一行写地址选择信号有效时,行写数据总线上的内容写入相应存储单元行;
每个列读端口由列读地址总线、列读使能信号线以及列读数据总线组成,每个列写端口由列写地址总线、列写使能信号线以及列写数据总线组成;列读地址总线和列写地址总线的宽度为log2(n*M)位,列读数据总线和列写数据总线的宽度为L*B位;
列读端口与矩阵寄存器文件主体中的列读地址译码器一一对应,每个列读端口的读地址总线和读使能信号线是相应列读地址译码器的输入,列读地址译码器根据列读地址总线上的地址译码出n*M个子列读地址选择信号,这些子列读地址选择信号形成子列读地址选择总线,每个子列读地址选择信号控制存储单元阵列中的一个存储单元子列;当列读使能信号线有效时,与型读地址对应的子列读地址选择信号有效,而其他子列读地址选择信号无效,当列读使能信号线无效时,n*M个子列读地址选择信号均无效;当某一子列读地址选择信号有效时,相应存储单元子列的内容被读出至该端口的列读出缓冲器,而列读出缓冲器又将该内容输出至列读端口的列读出数据总线上;
列写端口与矩阵寄存器文件主体中的列写地址译码器一一对应,每个列写端口的写地址总线和写使能信号线是相应列写地址译码器的输入,列写地址译码器根据列写地址总线上的地址译码出n*M个子列写地址选择信号,这些子列写地址选择信号形成子列写地址选择总线,每个子列写地址选择信号控制存储单元阵列中的一个存储单元子列;当列写使能信号线有效时,与列写地址对应的子列写地址选择信号有效,而其他子列写地址选择信号无效,当列写使能信号线无效时,n*M个子列写地址选择信号均无效;当某一列写地址选择信号有效时,列写数据总线上的内容写入相应存储单元列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910043343A CN101609715B (zh) | 2009-05-11 | 2009-05-11 | 行列访问端口分离的矩阵寄存器文件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910043343A CN101609715B (zh) | 2009-05-11 | 2009-05-11 | 行列访问端口分离的矩阵寄存器文件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101609715A true CN101609715A (zh) | 2009-12-23 |
CN101609715B CN101609715B (zh) | 2012-09-05 |
Family
ID=41483418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910043343A Expired - Fee Related CN101609715B (zh) | 2009-05-11 | 2009-05-11 | 行列访问端口分离的矩阵寄存器文件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101609715B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004672A (zh) * | 2010-11-25 | 2011-04-06 | 中国人民解放军国防科学技术大学 | 一种可配置归约目标自增间隔的归约装置 |
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
CN104317554A (zh) * | 2014-10-14 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于simd处理器的寄存器文件数据读写装置和方法 |
CN105527609A (zh) * | 2015-12-02 | 2016-04-27 | 西安电子工程研究所 | 基于dsp的pd雷达系统矩阵转置方法 |
WO2017185388A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于生成服从一定分布的随机向量的装置和方法 |
CN109376113A (zh) * | 2016-11-03 | 2019-02-22 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
CN110018847A (zh) * | 2018-01-10 | 2019-07-16 | 北京思朗科技有限责任公司 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
CN110704018A (zh) * | 2019-08-26 | 2020-01-17 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
CN112905954A (zh) * | 2020-12-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种利用fpga bram的cnn模型卷积运算加速计算方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146696B2 (en) | 2011-12-31 | 2015-09-29 | Institute Of Automation, Chinese Academy Of Sciences | Multi-granularity parallel storage system and storage |
US9171593B2 (en) | 2011-12-31 | 2015-10-27 | Institute Of Automation, Chinese Academy Of Sciences | Multi-granularity parallel storage system |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804771B1 (en) * | 2000-07-25 | 2004-10-12 | University Of Washington | Processor with register file accessible by row column to achieve data array transposition |
US20060036801A1 (en) * | 2004-08-11 | 2006-02-16 | Jones Christpher S | Scalable matrix register file |
CN100454438C (zh) * | 2005-12-27 | 2009-01-21 | 中国科学院计算技术研究所 | 适合矩阵转置的ddr存储控制器及矩阵行列访问方法 |
-
2009
- 2009-05-11 CN CN200910043343A patent/CN101609715B/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
CN102012893A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算簇 |
CN102012893B (zh) * | 2010-11-25 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算装置 |
CN102004672B (zh) * | 2010-11-25 | 2012-12-05 | 中国人民解放军国防科学技术大学 | 一种可配置归约目标自增间隔的归约装置 |
CN102004672A (zh) * | 2010-11-25 | 2011-04-06 | 中国人民解放军国防科学技术大学 | 一种可配置归约目标自增间隔的归约装置 |
CN104317554B (zh) * | 2014-10-14 | 2017-02-15 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于simd处理器的寄存器文件数据读写装置和方法 |
CN104317554A (zh) * | 2014-10-14 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于simd处理器的寄存器文件数据读写装置和方法 |
CN105527609A (zh) * | 2015-12-02 | 2016-04-27 | 西安电子工程研究所 | 基于dsp的pd雷达系统矩阵转置方法 |
WO2017185388A1 (zh) * | 2016-04-26 | 2017-11-02 | 北京中科寒武纪科技有限公司 | 一种用于生成服从一定分布的随机向量的装置和方法 |
CN109376113A (zh) * | 2016-11-03 | 2019-02-22 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
CN110018847A (zh) * | 2018-01-10 | 2019-07-16 | 北京思朗科技有限责任公司 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
CN110018847B (zh) * | 2018-01-10 | 2021-01-12 | 北京思朗科技有限责任公司 | 可配置寄存器及基于可配置寄存器的数据存取方法 |
CN110704018A (zh) * | 2019-08-26 | 2020-01-17 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
CN110704018B (zh) * | 2019-08-26 | 2020-11-06 | 深圳芯英科技有限公司 | 一种数据缓存器及数据处理方法 |
CN112905954A (zh) * | 2020-12-28 | 2021-06-04 | 北京计算机技术及应用研究所 | 一种利用fpga bram的cnn模型卷积运算加速计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101609715B (zh) | 2012-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101609715B (zh) | 行列访问端口分离的矩阵寄存器文件 | |
CN1914592B (zh) | 执行具有单元大小控制的紧缩数据操作的方法和设备 | |
US6343356B1 (en) | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision | |
CN100385432C (zh) | 执行部分宽度压缩数据指令的方法和设备 | |
TWI656533B (zh) | 用於在資料路徑中計算之裝置及方法 | |
US6301653B1 (en) | Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks | |
CN108008974A (zh) | 基于动态随机存取存储器的处理单元架构 | |
EP0743594A1 (en) | Matrix transposition | |
CN101482811B (zh) | 用于增强的计算能力的处理器体系结构 | |
CN105612582A (zh) | 可独立寻址的存储器阵列地址空间 | |
CN103646009A (zh) | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 | |
CN101776988B (zh) | 一种块大小可变的可重构矩阵寄存器文件 | |
JPH06103599B2 (ja) | 半導体集積回路装置 | |
JPH05508499A (ja) | 特殊目的ブール演算装置のための方法およびその装置 | |
GB2451845A (en) | Executing multiple threads using a shared register | |
CN108010551A (zh) | 用于dpu运算的软件栈和编程 | |
CN108734623A (zh) | 在低功率结构中维护数据的系统和方法 | |
Al-Hawaj et al. | Towards a reconfigurable bit-serial/bit-parallel vector accelerator using in-situ processing-in-sram | |
WO1995032466A1 (en) | Flexible register mapping scheme | |
US20090300310A1 (en) | Memory Architecture | |
CN107545914A (zh) | 用于智能存储器接口的方法和设备 | |
US8513975B2 (en) | Device and method for enabling multi-value digital computation and control | |
JPH06274528A (ja) | ベクトル演算処理装置 | |
JPS63201851A (ja) | バッファ記憶アクセス方法 | |
CN116126779A (zh) | 一种9t存算电路、乘累加运算电路、存内运算电路及芯片 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120905 Termination date: 20160511 |
|
CF01 | Termination of patent right due to non-payment of annual fee |