CN101776988B - 一种块大小可变的可重构矩阵寄存器文件 - Google Patents
一种块大小可变的可重构矩阵寄存器文件 Download PDFInfo
- Publication number
- CN101776988B CN101776988B CN2010101171771A CN201010117177A CN101776988B CN 101776988 B CN101776988 B CN 101776988B CN 2010101171771 A CN2010101171771 A CN 2010101171771A CN 201010117177 A CN201010117177 A CN 201010117177A CN 101776988 B CN101776988 B CN 101776988B
- Authority
- CN
- China
- Prior art keywords
- kmax
- row
- code translator
- log
- ranks
- 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.)
- Active
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种块大小可变的可重构矩阵寄存器文件,目的是提供一种大小在运行过程中均可改变的向量寄存器文件。它由矩阵寄存器文件主体、行列分块标志及行分块寄存器、读写端口、三级译码电路组成,行列分块标志及行分块寄存器根据分块指令进行修改,三级译码电路由全局行译码器、全局列译码器、本地译码器组成,根据行列分块标志及行分块寄存器的内容对信号进行译码,生成行列读写地址;矩阵寄存器文件主体根据行列分块标志及行分块寄存器的内容分块。分块指令设计在CPU中。本发明通过指令动态改变分块形式,且分块大小和数量均可改变,能够满足在不同算法运行时、算法运行的不同阶段所需数据块大小不同的需求,且分块方式灵活,开销小。
Description
技术领域:本发明涉及向量微处理器中的向量寄存器文件(也称为矩阵寄存器文件),特别是一种块大小可变的可重构矩阵寄存器文件。
背景技术:图像处理和现代通信等媒体应用领域算法具有大规模并行性,需要进行大量的矩阵运算。而不同算法并行性粒度不同、同一算法在运行的不同阶段并行性粒度也不同,在不同算法运行时、算法运行的不同阶段所需的数据块或矩阵块的大小也不同,这就需要向量寄存器文件的大小和数量在运行不同算法和同一算法运行过程中均可改变。
面向这类数据密集型应用的向量微处理器通常采用单指令流多数据流SIMD(Single Instruction Multiple Data)、超长指令字体系结构VLIW(VeryLong Instruction Words),设置向量运算指令、向量寄存器文件和向量运算阵列来支持矩阵或向量数据运算,以加快数据处理的速度。
向量指令译码部件对向量指令进行译码,将译码结果发送到向量运算部件和向量寄存器文件。向量运算部件由L(L为正整数,且通常为2的幂)个标量运算单元组成,它按照译码结果对来自向量寄存器文件或存储器的源操作数进行运算,并将运算结果写入向量寄存器文件或存储器。
如图2公布的,向量寄存器文件由向量寄存器文件主体和读写端口组成。向量寄存器文件主体由NR个读地址译码器、NR个读出缓冲器、NW个写地址译码器以及存储单元阵列构成,存储单元阵列由N个行向量寄存器VR0-VRN-1或M个列向量寄存器CVR0-CVRM-1构成,N为行向量寄存器的数目,M为列向量寄存器的数目,存储单元阵列包含N*M个元素,N和M为正整数且通 常为2的幂,NR、NW均为正整数。存储单元阵列按行划分为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个写端口。每个读端口都由行列选择信号线、读地址总线、读使能信号线以及读数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行读取,读地址总线的位宽为MAX(log2 N,log2 M),即log2 N和log2 M两者的最大值,读数据总线的位宽为N*B或M*B的最大值。每个写端口都由行列选择信号线、写地址总线、写使能信号线以及写数据总线组成,其中行列选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行写入,写地址总线的位宽为MAX(log2 N,log2 M),即log2 N和log2 M两者的最大值,写数据总线的位宽为N*B或M*B的最大值。
读端口与向量寄存器文件主体中的读地址译码器一一对应,其中每个读端口的行列选择信号线、读地址总线和读使能信号线是相应读地址译码器的输入。每个读地址译码器产生N个行读地址选择信号和M个列读地址选择信号,这些信号通过行读地址选择总线和列读地址选择总线送给存储单元阵列中的N个存储单元行,每一存储单元行存储一个行向量寄存器的所有元素E0-EM-1;M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列,每一存储单元列存储一个列向量寄存器的所有元素。存储单元阵列在行读地址选择信号或列读地址选择信号的作用下,将相应存储单元行或存储单元列的内容读出至相应读端口的读出缓冲器,读出缓冲器将该内容输出至该读端口的读数据总线。
写端口与向量寄存器文件主体中的写地址译码器一一对应,每个写端口的行列选择信号线、写地址总线和写使能信号线是相应写地址译码器的输入。每个写地址译码器产生N个行写地址选择信号和M个列写地址选择信号,这些信号通过行写地址选择总线和列写地址选择总线送给存储单元阵列中的N个存储单元行,M个列读地址选择信号分别控制存储单元阵列中的M个存储单元列。存储单元阵列在这些写地址选择信号的作用下,将写数据总线上的内容写入相应存储单元行或存储单元列。
已有专利讨论了数据在向量寄存器文件中存储方式改变的问题,间接解决了向量寄存器文件的大小和数量在运行不同算法和同一算法运行过程可改变的问题。如美国专利US 6,898,691B2(REARRANGING DATABETWEEN VECTOR AND MATRIX FORMS IN A SIMD MATRIXPROCESSOR)通过指令将向量数据转换为固定大小为4*4的阵列数据,便于 SIMD阵列处理器加速处理。但是它们存在缺点:数据只能转换为固定大小为4*4的数据块,仅满足并行性粒度小的算法的需求,是一种块大小固定的可重构矩阵寄存器文件,不能满足不同算法并行性粒度不同、同一算法在运行的不同阶段并行性粒度不同的灵活需求,处理效率不高。
如何以较低代价实现行向量寄存器和列向量寄存器的灵活分块,即设计出一种块大小可变的可重构矩阵寄存器文件,仍是本领域研究的热点问题。
发明内容:本发明要解决的技术问题是针对应用领域不同算法并行性粒度不同、同一算法在运行的不同阶段并行性粒度不同导致在不同算法运行时或算法运行的不同阶段所需处理的数据块或矩阵块的大小也不同的情况,设计一种大小在运行过程中均可改变的向量寄存器文件,称为块大小可变的可重构矩阵寄存器文件。
本发明的技术方案是:
本发明由矩阵寄存器文件主体、行列分块标志及行分块寄存器、读写端口、三级译码电路组成。行列分块标志及行分块寄存器是存贮行列分块标志和行分块标志的寄存器,与CPU指令部件和三级译码电路相连,它根据CPU指令部件发来的指令进行修改。三级译码电路读取行列分块标志及行分块寄存器的内容,从读写端口接收读写地址、读写使能信号、行列选择信号,对这些信号进行译码,生成读写数据所需的行列读写地址通过行读地址选择总线、列读地址选择总线、行写地址选择总线、列写地址选择总线送矩阵寄存器文件主体。矩阵寄存器文件主体将读写地址所指的存储单元行或存储单元列的内容读出至相应读端口的读出缓冲器,或者将写数据总线上的内容写入读写地址所指的存储单元行或存储单元列。
矩阵寄存器文件主体采用背景技术中支持行列向量访问的向量寄存器文件中的矩阵寄存器文件主体,但它根据行列分块标志及行分块寄存器的内容可以分块。因为支持行列向量访问的向量寄存器行或列的访问使用相同的端口,仅由行列选择信号线来决定对行还是列进行访问,因此仅考虑按列不分块、按行等分块的情况即可,按行不分块、按列等分块的情况是一样的,只是行列选择信号线不同。分块的形式有:①按列不分块,按行等分成k*1块(k为2的幂且 min(M,N)指M和N中的小数),②当k=kmax时行列同时分块,分成kmax*kmax块。矩阵寄存器文件主体共有log2kmax+2种分块情况。当k为2的0次幂时,行列都不分块,此种情况为矩阵寄存器全局映像,与支持行列向量访问的向量寄存器文件相同。分块情况下每个子块作为一个独立的寄存器文件与其它子块并行工作。矩阵寄存器分块情况由行列分块标志及行分块寄存器决定。当行列都分成kmax块时,即矩阵寄存器文件等分成kmax*kmax寄存器文件,此时寄存器文件子块称为本地寄存器文件,本地寄存器文件上的读写端口称为本地读写端口。
行列分块标志及行分块寄存器与CPU指令部件、全局行译码器、kmax个全局列译码器、kmax*kmax个本地译码器相连。它由行分块标志、列分块标志、行分块寄存器组成。行分块标志只有1位宽,为1表示矩阵寄存器文件按行等分成子块工作,为0表示矩阵寄存器文件按行不分块。行分块寄存器共log2kmax位宽,每一位表示一种分块情况,从低位到高位分别表示按行等分成2、4、...、kmax子块。列分块标志也只有1位宽,为0表示矩阵寄存器文件按列不分块,为1时,行分块标志为1且行分块寄存器为kmax, 表示矩阵寄存器文件同时按行按列等分成kmax*kmax块。行列分块标志及行分块寄存器从CPU指令部件接收分块指令,根据分块指令进行修改。行列分块标志及行分块寄存器将其值送给三级译码电路。
读写端口采用支持行列向量访问的向量寄存器文件中的读写端口。当矩阵寄存器文件分成子块工作时,不同分块情况读写端口地址长度不同,不分块地址长度最长,为AddLen(AddLen≤log2(min(M,N))),按行分成k块地址长度为AddLen-log2k,分成kmax*kmax块地址长度为AddLen-2log2kmax,每个子块的读写端口数量与矩阵寄存器全局映像完全相同,且子块的每个端口与该子块的其它端口并行工作。向量寄存器文件总的读端口数量从NR增加到NR*(kmax2+2kmax-1),写端口数量从NW增加到NW*(kmax2+2kmax-1),其中kmax2+2kmax-1是log2kmax+2种分块情况下一共可分成的子块数量。为简化设计、减少硬件实现代价,将log2kmax+2种分块情况下的kmax2+2kmax-1个子块的序号相同的读或写端口分为一组,各组的读端口或写端口相同,一共分为NR组读端口和NW组写端口,每组使用一个三级译码电路统一译码,共有NR+NW个三级译码电路。
三级译码电路由一个全局行译码器、kmax个全局列译码器、kmax*kmax个本地译码器组成。
全局行译码器为第一级译码器,与行列分块标志及行分块寄存器、组内所有读写端口、所有全局列译码器相连。它由log2kmax种译码器和kmax个(log2kmax+1)路选一多路选择器组成。log2kmax种译码器分别对应log2kmax分块情况,kmax*1,kmax*kmax两种分块情况不需要译码器,log2kmax种译码器在功能和数量上是不同的,按行等分k块(1≤k<kmax,k为2的幂) 的情况下,译码器有log2(kmax/k)位输入(kmax/k)位输出,译码器的数量有k个。log2kmax种译码器对log2kmax分块情况分别进行译码:按行等分k块的情况下抽取该组内等分k块情况下的k个读端口或写端口最高P位Haddr(P=log2kmax-log2k=log2(kmax/k))和读写使能信号线,使用k个译码器(该译码器有log2(kmax/k)位输入(kmax/k)位输出),k个译码器在相应读端口或写端口的读写使能信号线的控制下对P位Haddr分别进行译码,共生成(kmax/k)*k=kmax个赋能信号。log 2 kmax种译码器将log2kmax种译码情况所产生的赋能信号送到kmax个log2kmax+1路选一多路选择器,kmax个log2kmax+1路选一多路选择器的另一路输入分别固定为高电平或低电平(对应于kmax*1,kmax*kmax两种分块情况的赋能信号,因为kmax*1,kmax*kmax分块情况下所有全局列译码器并行工作,需要将所有全局列译码器固定置为赋能状态,不需抽取kmax*1,kmax*kmax两种分块情况下的读端口或写端口地址高位(P=0),不需使用译码器。高电平或低电平的选择取决于全局列译码器赋能信号是高有效还是低有效)。多路选择器读取行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的赋能信号,形成kmax个赋能信号Ren0~Renkmax-1,分别送kmax个全局列译码器。
全局列译码器为第二级译码器,每行一个,共kmax个。每行的全局列译码器都与全局行译码器、行列分块标志及行分块寄存器、组内所有读写端口、本行的kmax个本地译码器相连。全局列译码器由一个(log2kmax+1)路选一多路选择器、一个第一译码器和kmax个二选一路选择开关组成。全局列译码器从组内所有读写端口获得行列选择信号Sel和地址低位Laddr进行第二级译码:按行等分成k块情况下,第i(0≤i≤kmax-1)行的全局列 译码器接收第I(I=i mod k,mod为取模)个子块的行列选择信号Sel和地址低位Laddr,送log2kmax+1路选一的多路选择器;多路选择器读取行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的行列选择信号和地址低位,形成本行的行列选择信号Seli和地址低位AdRi,并抽取AdRi的高log2kmax位送第一译码器,将AdRi去掉高log2kmax位后的其余低位Raddri和本行的行列选择信号Seli送本行的所有本地译码器;第一译码器为log2kmax位输入kmax位输出,它接收高log2kmax位地址,在赋能信号Reni的控制下,生成kmax个赋能信号,并送kmax个二选一路选择开关;二选一路选择开关的一路输入为第一译码器送来的赋能信号,另一路输入固定为高电平或低电平(另一路为kmax*kmax分块情况下赋能信号,因为kmax*kmax分块情况下所有本地译码器并行工作,需要将本行的所有本地译码器置为赋能状态,高电平或低电平的选择取决于本地译码器赋能信号为高有效还是低有效),二选一路选择开关使用列分块标志的值作为选择信号,生成kmax个赋能信号Ceni0~Cenikmax-1,分别送第i行的kmax个本地译码器。
本地译码器为第三级译码器,共有kmax2个,与等分成的kmax*kmax个本地寄存器文件一一对应。每个本地译码器都与行列分块标志及行分块寄存器,该本地译码器所在行的全局列译码器、本地译码器对应的组内本地读写端口、本地译码器对应的本地寄存器文件相连。本地译码器由一个二选一路选择开关、一个第二译码器组成。每第ij(i行j列,0≤i≤kmax-1,0≤j≤kmax-1)个本地译码器的二选一路选择开关的一路输入为第i行的全局列译码器送来的Raddri及Seli,另一路输入为组内本地读写端口送过来的addrij及Selij;二选一路选择开关使用列分块标志的值作为选择信号,生成本次读写操作实际要译码的地址及Sel送第二译码器,地址长度为AddLen-2log2kmax;第二译码器在全局列译码器送来的赋能信号Cenij的控制下对二选一路选择开关送来的地址及Sel进行译码,形成本地寄存器文件的行读地址选择信号、列读地址选择信号、行写地址选择信号、列写地址选择信号,送本地译码器所对应的本地寄存器文件。
本发明需要在CPU中设计分块指令才能正确工作。不论矩阵寄存器文件按何种分块模式进行工作,CPU都必需先通过分块指令对矩阵寄存器文件的行列分块标志及行分块寄存器进行设置,本发明才能正确工作。
分块指令格式如下:
BLOCK(Rflag,k,Cflag)
●Rflag是行分块标志,1表示分块,0表示不分块。
●Cflag是列分块标志,1表示分块,0表示不分块。
●当Cflag=1时,要求Rflag一定为1,且k=kmax,表示矩阵寄存器文件按行列同时分成kmax子块,即分成kmax*kmax个子块进行工作。
例如:BLOCK(1,4,0)指令将行分块标志置为1,列分块标志置为0,行分块寄存器置为4,矩阵寄存器文按行等分成4个子块工作;
设kmax=4,则BLOCK(1,4,1)指令将行列分块标志都置为1,行分块寄存器置为4(=Kmax),矩阵寄存器文同时按行按列分别分成4、4个相等的子块工作,即共分成4*4=16个子块进行工作。
BLOCK(0,xx,0)指令将行列分块标志都置为0,矩阵寄存器文件工作时行列都不分块。
采用本发明可以达到以下技术效果:
1.本发明在CPU运行过程中可以通过指令动态改变分块形式,其大小和数量均可改变,能够动态满足在不同算法运行时、算法运行的不同阶段所需数据块或矩阵块大小不同的需求,较好地解决了不同算法并行性粒度不同、同一算法在运行的不同阶段并行性粒度也不同的问题。
2.本发明分块方式灵活,共有(log2kmax+2)种分块情况,可以不分块、均分成1、2、4、...、kmax、kmax*kmax子块进行工作。每种分块情况下每个子块能作为一个独立的寄存器文件与其它子块并行工作。不同分块情况下读写端口除地址长度不同外其它功能相同。每个子块读写端口的数量与背景技术支持行列向量访问的向量寄存器文件完全相同,每个子块的每种端口可以与其它端口并行工作。
3.本发明需要一个寄存器文件体、NR*(kmax2+2kmax-1)个读端口、NW*(kmax2+2kmax-1)个写端口、(NR+NW)个三级译码电路、一位行分块标志、一位列分块标志、log2kmax位宽行分块寄存器,能实现(log2kmax+2)种分块情况下的共(kmax2+2kmax-1)个子块的寄存器文件功能。而分开实现(kmax2+2kmax-1)个图2所示所示的寄存器文件需要(kmax2+2kmax-1)个寄存器文件主体、NR*(kmax2+2kmax-1)个读端口、NW*(kmax2+2kmax-1)个写端口、NR*(kmax2+2kmax-1)个读端口译码器、NW*(kmax2+2kmax-1)个写端口译码器。与分开实现(kmax2+2kmax-1)个寄存器文件相比,本发明大大减少了寄存器文件主体的数量,数量从(kmax2+2kmax-1)减少到一个, 而所需读端口和写端口数量相同,也不需要NR*(kmax2+2kmax-1)个读端口译码器、NW*(kmax2+2kmax-1)个写端口译码器;本发明所需器件开销仅仅为(NR+NW)个三级译码电路、一位行分块标志、一位列分块标志、log2kmax位宽行分块寄存器,这比起(kmax2+2kmax-1)个寄存器文件主体的开销来是很小的,几乎可以忽略不计。,
与分开实现(kmax2+2kmax-1)个图2所示的寄存器文件相比,本发明三级译码电路的本地译码器延迟相当于读端口译码器或写端口译码器延迟,因此本发明的最长延迟开销为全局行译码器和全局列译码器的延迟,仅为两级多路选择器延迟加上两级译码器(具有log2kmax位输入kmax位输出)延迟,延迟开销也非常小。
附图说明
图1是背景技术支持行列向量访问的向量寄存器文件与外部部件的连接示意图;
图2是背景技术支持行列向量访问的向量寄存器文件的逻辑结构示意图;
图3是图2所示向量寄存器文件的存储单元阵列结构示意图;
图4是本发明的总体结构图;
图5是本发明的行列分块标志及行分块寄存器结构示意图
图6是本发明的读端口的三级译码电路总体结构示意图;
图7是本发明三级译码电路中的全局行译码器逻辑结构示意图;
图8是本发明三级译码电路中的全局列译码器逻辑结构示意图;
图9是本发明三级译码电路中的本地译码器地址通路。
图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(log2 N,log2 M),读数据总线的位宽为N*B或M*B。每个写端口都由行列选择信号线、写地址总线、写使能信号线以及写数据总线组成,其中行列 选择信号线用于选择当前是对行向量寄存器进行读取还是对列向量寄存器进行写入,写地址总线的位宽为MAX(log2 N,log2 M),写数据总线的位宽为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是本发明的总体结构示意图。
本发明由矩阵寄存器文件主体、读写端口、三级译码电路、行列分块标志及行分块寄存器组成。
矩阵寄存器文件主体采用图2所示的矩阵寄存器文件主体,但它根据行列分块标志及行分块寄存器的内容可以分块。分块的形式有:①按列不分块,按行等分成k*1块(k为2的幂且 ),②当k=kmax时行列同时分块,分成kmax*kmax块。共有log2kmax+2种分块情况。当k为2的0次幂时,行列都不分块,此种情况为矩阵寄存器全局映像,与图2所示向量寄存器文件相同。分块情况下每个子块作为一个独立的寄存器文件与其它子块并行工作。每个子块的读写端口数量与矩阵寄存器全局映像完全相同,且子块的每个端口与该子块的其它端口并行工作。矩阵寄存器分块情况由行列分块标志及行分块寄存器决定。当行列都分成kmax块时,即矩阵寄存器文件等分成kmax*kmax寄存器文件,此时寄存器文件子块称为本地寄存器文件,本地寄存器文件上的读写端口称为本地读写端口。
读写端口采用背景技术中支持行列向量访问的向量寄存器文件中的读写端口。当矩阵寄存器文件分成子块工作时,不同分块情况读写端口地址长 度不同,不分块地址长度最长,为AddLen(AddLen≤log2(min(M,N))),按行分成k块地址长度为AddLen-log2k,分成kmax*kmax块地址长度为AddLen-2log2kmax,每个子块的读写端口数量与矩阵寄存器全局映像完全相同,且子块的每个端口与该子块的其它端口并行工作。向量寄存器文件总的读端口数量从NR增加到NR*(kmax2+2kmax-1),写端口数量从NW增加到NW*(kmax2+2kmax-1),其中kmax2+2kmax-1是log2kmax+2种分块情况下一共可分成的子块数量。为简化设计、减少硬件实现代价,将log2kmax+2种分块情况下的kmax2+2kmax-1个子块的序号相同的读或写端口分为一组,各组的读端口或写端口相同,一共分为NR组读端口和NW组写端口,每组使用一个三级译码电路统一译码,共有NR+NW个三级译码电路
三级译码电路根据行列分块标志及行分块寄存器的值选择当前分块情况下的各子块读端口的地址及行列地址选择信号进行译码,生成矩阵寄存器文件的行读地址选择信号、列读地址选择信号、行写地址选择信号、列写地址选择信号。
图5是本发明行列分块标志及行分块寄存器结构示意图。
行列分块标志及行分块寄存器由一位宽的行分块标志、一位宽的列分块标志、log2kmax位宽的行分块寄存器组成。行分块标志为1表示矩阵寄存器文件按行等分成子块工作,为0表示矩阵寄存器文件按行不分块。行分块寄存器每一位表示一种分块情况,从低位到高位分别表示按行等分成2、4、...、kmax子块。列分块标志为0表示矩阵寄存器文件按列不分块,为1时,行分块标志为1且行分块寄存器最高位为1(表示按行等分成kmax个子块),矩阵寄存器文件同时按行按列等分成kmax*kmax块工作。行列分块标志及 行分块寄存器接受CPU指令部件对其值的修改,CPU指令部件通过BLOCK分块指令进行修改。行列分块标志及行分块寄存器与CPU指令部件、全局行译码器、kmax个全局列译码器、kmax*kmax个本地译码器相连。
图6是本发明一个读端口的三级译码电路逻辑结构示意图,写端口的三级译码电路逻辑结构与读端口的三级译码电路逻辑结构是相同的。
三级译码电路由一个全局行译码器、kmax个全局列译码器、kmax*kmax个本地译码器组成。
全局行译码器为第一级译码器,与组内所有读写端口、行列分块标志及行分块寄存器、kmax个全局列译码器相连,它接收组内所有读写端口的地址高位Haddr,并进行一级译码,生成所有全局列译码器赋能信号Ren0~Renkmax-1,控制所有全局列译码器的工作。
全局列译码器为第二级译码器,每行一个,共有kmax个。每行的全局列译码器都与全局行译码器、组内所有读写端口、行列分块标志及行分块寄存器、本行的kmax个本地译码器(分别对应于kmax列)相连,它接收组内所有读写端口的地址低位Laddr和行列选择信号Sel、行列分块标志及行分块寄存器的内容,进行第二级译码,生成本行的kmax个本地译码器的赋能信号Ceni0~Cenikmax-1,控制本行的kmax个本地译码器的工作,同时将地址低位去掉高log2kmax位,形成其余低位地址Raddri和本行的行列选择信号Seli送本行的所有本地译码器。
本地译码器为第三级译码器,共有kmax2个,与矩阵寄存器文件等分成的kmax*kmax个本地寄存器文件一一对应。每个本地译码器都与本地译码器所在行的全局列译码器、本地译码器对应的组内本地读写端口、行列分块 标志及行分块寄存器、本地译码器对应的本地寄存器文件相连。它接收列分块标志的内容、该行的全局列译码器送过来的Raddri及Seli,或本地译码器对应的组内本地读写端口送过来的kmaxaddrij及Selij,进行三级译码,生成本地寄存文件的读写赋能信号,控制本地寄存文件的读写工作。
图7是本发明三级译码电路中的全局行译码器逻辑结构示意图;
全局行译码器由log2kmax种译码器和kmax个(log2kmax+1)路选一多路选择器组成。log2kmax种译码器分别对应log2kmax分块情况,kmax*1,kmax*kmax两种分块情况不需要译码器,log2kmax种译码器在功能和数量上是不同的,按行等分k块(1≤k<kmax,k为2的幂)的情况下,译码器有log2(kmax/k)位输入(kmax/k)位输出,译码器的数量有k个。log2kmax种译码器对log2kmax分块情况分别进行译码:按行等分k块的情况下抽取该组内等分k块情况下的k个读端口或写端口最高P位Haddr(P=log2kmax-log2k=log2(kmax/k))和读写使能信号线,使用k个译码器,k个译码器在相应读端口或写端口的读写使能信号线的控制下对P位Haddr分别进行译码,共生成(kmax/k)*k=kmax个赋能信号。log2kmax种译码器将log2kmax种译码情况所产生的赋能信号送到kmax个log2kmax+1路选一多路选择器,kmax个log2kmax+1路选一多路选择器的另一路输入分别固定为高电平或低电平。多路选择器使用行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的赋能信号,形成kmax个赋能信号Ren0~Renkmax-1,分别送kmax个全局列译码器。
图8是本发明三级译码电路中的全局列译码器逻辑结构示意图;
全局列译码器由一个(log2kmax+1)路选一的多路选择器、一个第一译 码器和kmax个二选一路选择开关组成。全局列译码器接收组内所有读写端口获得行列选择信号Sel和地址低位Laddr进行第二级译码:按行等分成k块情况下,第i(0≤i≤kmax-1)行的全局列译码器接收第I(I=i mod k,mod为取模)个子块的行列选择信号Sel和地址低位Laddr,送log2kmax+1路选一的多路选择器;多路选择器使用行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的行列选择信号和地址低位,形成本行的行列选择信号Seli和地址低位AdRi,并抽取AdRi的高log2kmax位送第一译码器,将AdRi去掉高log2kmax位后的其余低位Raddri和本行的行列选择信号Seli送本行的所有本地译码器;第一译码器为log2kmax位输入kmax位输出,它接收高log2kmax位地址,在赋能信号Reni的控制下,生成kmax个赋能信号,并送kmax个二选一路选择开关;二选一路选择开关接收第一译码器送来的kmax个赋能信号,另一路输入固定为1,二选一路选择开关使用列分块标志的值作为选择信号,生成kmax个赋能信号Ceni0~Cenikmax-1,分别送第i行的kmax个本地译码器。
图9是本发明三级译码电路中的本地译码器逻辑结构图。
本地译码器由一个二选一路选择开关、一个第二译码器组成。每第ij(i行j列,0≤i≤kmax-1,0≤j≤kmax-1)个本地译码器的二选一路选择开关的一路输入为该行的全局列译码器送过来的Raddri及Seli,另一路输入为本地译码器对应的组内本地读写端口送过来的kmaxaddrij及Seli;二选一路选择开关使用列分块标志的值作为选择信号,生成本次读写操作实际要译码的地址及Sel送第二译码器,地址长度为AddLen-2log2kmax;第二译码器在Cenij的控制下对二选一路选择开关送来的地址及Sel进行译码,形成本地寄 存器文件的行读地址选择信号、列读地址选择信号、行写地址选择信号、列写地址选择信号,送本地译码器所对应的本地寄存器文件。
Claims (6)
1.一种块大小可变的可重构矩阵寄存器文件,其特征在于它由矩阵寄存器文件主体、行列分块标志及行分块寄存器、读写端口、三级译码电路组成:
矩阵寄存器文件主体将读写地址所指的存储单元行或存储单元列的内容读出至相应读端口的读出缓冲器,或者将写数据总线上的内容写入读写地址所指的存储单元行或存储单元列;矩阵寄存器文件主体采用支持行列向量访问的向量寄存器文件中的矩阵寄存器文件主体,根据行列分块标志及行分块寄存器的内容分块;分块的形式有:①按列不分块,按行等分成k*1块,②当k=kmax时行列同时分块,分成kmax*kmax块;矩阵寄存器文件主体共有log2kmax+2种分块情况;k为2的幂且 min(M,N)指M和N中的小数;当k为2的0次幂时,行列都不分块,此种情况为矩阵寄存器全局映像,与支持行列向量访问的向量寄存器文件相同;分块情况下每个子块作为一个独立的寄存器文件与其它子块并行工作,当行列都分成kmax块时,即矩阵寄存器文件等分成kmax*kmax寄存器文件,此时寄存器文件子块称为本地寄存器文件,本地寄存器文件上的读写端口称为本地读写端口,其中N为行向量寄存器的数目,M为列向量寄存器的数目,N和M为正整数且为2的幂,k是行分块的数量;
行列分块标志及行分块寄存器是存贮行列分块标志和行分块标志的寄存器,由行分块标志、列分块标志、行分块寄存器组成,与CPU指令部件和三级译码电路相连,它根据CPU指令部件发来的分块指令进行修改;
读写端口采用支持行列向量访问的向量寄存器文件中的读写端口,当矩阵寄存器文件分成子块工作时,不同分块情况读写端口地址长度不同,不分块地址长度最长,为AddLen,AddLen≤log2(min(M,N)),按行分成k块地址长度为AddLen-log2k,分成kmax*kmax块地址长度为AddLen-2log2kmax,每个子块的读写端口数量与矩阵寄存器全局映像完全相同,且子块的每个端口与该子块的其它端口并行工作;向量寄存器文件总的读端口数量从NR增加到NR*(kmax2+2kmax-1),写端口数量从NW增加到NW*(kmax2+2kmax-1),其中kmax2+2kmax-1是log2kmax+2种分块情况下一共可分成的子块数量;将log2kmax+2种分块情况下的kmax2+2kmax-1个子块的序号相同的读或写端口分为一组,各组的读端口或写端口相同,一共分为NR组读端口和NW组写端口,每组使用一个三级译码电路统一译码;
三级译码电路读取行列分块标志及行分块寄存器的内容,从读写端口接收读写地址、读写使能信号、行列选择信号,对这些信号进行译码,生成读写数据所需的行列读写地址通过行读地址选择总线、列读地址选择总线、行写地址选择总线、列写地址选择总线送矩阵寄存器文件主体;三级译码电路由一个全局行译码器、kmax个全局列译码器、kmax*kmax个本地译码器组成;全局行译码器为第一级译码器,与行列分块标志及行分块寄存器、组内所有读写端口、所有全局列译码器相连;全局列译码器为第二级译码器,每行一个,共kmax个,每行的全局列译码器都与全局行译码器、行列分块标志及行分块寄存器、组内所有读写端口、本行的kmax个本地译码器相连;本地译码器为第三级译码器,共有kmax2个,与等分成的kmax*kmax个本地寄存器文件一一对应;每个本地译码器都与行列分块标志及行分块寄存器,该本地译码器所在行的全局列译码器、本地译码器对应的组内本地读写端口、本地译码器对应的本地寄存器文件相连。
3.如权利要求1所述的块大小可变的可重构矩阵寄存器文件,其特征在于行分块标志为1位宽,为1表示矩阵寄存器文件按行等分成子块工作,为0表示矩阵寄存器文件按行不分块;行分块寄存器共log2kmax位宽,每一位表示一种分块情况,从低位到高位分别表示按行等分成2、4、...、kmax子块;列分块标志为1位宽,为0表示矩阵寄存器文件按列不分块,为1时,行分块标志为1且行分块寄存器为kmax,表示矩阵寄存器文件同时按行按列等分成kmax*kmax块。
4.如权利要求1所述的块大小可变的可重构矩阵寄存器文件,其特征在于所述全局行译码器由log2kmax种译码器和kmax个(log2kmax+1)路选一多路选择器组成;log2kmax种译码器分别对应log2kmax分块情况,log2kmax种译码器在功能和数量上是不同的,按行等分k块的情况下,译码器有log2(kmax/k)位输入(kmax/k)位输出,译码器的数量有k个,1≤k<kmax,k为2的幂;log2kmax种译码器对log2kmax分块情况分别进行译码:按行等分k块的情况下抽取该组内等分k块 情况下的k个读端口或写端口最高P位Haddr和读写使能信号线,P=log2kmax-log2k=log2(kmax/k),使用k个译码器,k个译码器在相应读端口或写端口的读写使能信号线的控制下对P位Haddr分别进行译码,共生成(kmax/k)*k=kmax个赋能信号;log2kmax种译码器将log2kmax种译码情况所产生的赋能信号送到kmax个log2kmax+1路选一多路选择器,kmax个log2kmax+1路选一多路选择器的另一路输入分别固定为高电平或低电平;多路选择器读取行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的赋能信号,形成kmax个赋能信号Ren0~Renkmax-1,分别送kmax个全局列译码器。
5.如权利要求1所述的块大小可变的可重构矩阵寄存器文件,其特征在于所述全局列译码器由一个(log2kmax+1)路选一多路选择器、一个第一译码器和kmax个二选一路选择开关组成;全局列译码器从组内所有读写端口获得行列选择信号Sel和地址低位Laddr进行第二级译码:按行等分成k块情况下,第i行的全局列译码器接收第I个子块的行列选择信号Sel和地址低位Laddr,送log2kmax+1路选一的多路选择器,0≤i≤kmax-1,I=i mod k;多路选择器读取行列分块标志及行分块寄存器作为选择信号,选择当前分块情况下的行列选择信号和地址低位,形成本行的行列选择信号Seli和地址低位AdRi,并抽取AdRi的高log2kmax位送第一译码器,将AdRi去掉高log2kmax位后的其余低位Raddri和本行的行列选择信号Seli送本行的所有本地译码器;第一译码器为log2kmax位输入kmax位输出,它接收高log2kmax位地址,在赋能信号Reni的控制下,生成kmax个赋能信号,并送kmax个二选一路 选择开关;二选一路选择开关的一路输入为第一译码器送来的赋能信号,另一路输入固定为高电平或低电平,二选一路选择开关使用列分块标志的值作为选择信号,生成kmax个赋能信号Ceni0~Cenikmax-1,分别送第i行的kmax个本地译码器。
6.如权利要求1所述的块大小可变的可重构矩阵寄存器文件,其特征在于所述本地译码器由一个二选一路选择开关、一个第二译码器组成,每第ij个本地译码器即第i行j列个本地译码器的二选一路选择开关的一路输入为第i行的全局列译码器送来的Raddri及Seli,另一路输入为组内本地读写端口送过来的addrij及Selij,0≤i≤kmax-1,0≤j≤kmax-1;二选一路选择开关使用列分块标志的值作为选择信号,生成本次读写操作实际要译码的地址及Sel送第二译码器,地址长度为AddLen-2log2kmax;第二译码器在全局列译码器送来的赋能信号Cenij的控制下对二选一路选择开关送来的地址及Sel进行译码,形成本地寄存器文件的行读地址选择信号、列读地址选择信号、行写地址选择信号、列写地址选择信号,送本地译码器所对应的本地寄存器文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101171771A CN101776988B (zh) | 2010-02-01 | 2010-02-01 | 一种块大小可变的可重构矩阵寄存器文件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101171771A CN101776988B (zh) | 2010-02-01 | 2010-02-01 | 一种块大小可变的可重构矩阵寄存器文件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101776988A CN101776988A (zh) | 2010-07-14 |
CN101776988B true CN101776988B (zh) | 2012-11-07 |
Family
ID=42513462
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101171771A Active CN101776988B (zh) | 2010-02-01 | 2010-02-01 | 一种块大小可变的可重构矩阵寄存器文件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101776988B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012803B (zh) * | 2010-11-25 | 2014-09-10 | 中国人民解放军国防科学技术大学 | 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元 |
CN102023944A (zh) * | 2010-12-18 | 2011-04-20 | 浙江大学 | 一种存储器多模访问控制方法及其片上sram存储器控制系统 |
CN103729225B (zh) * | 2014-01-22 | 2016-09-28 | 中国人民解放军国防科学技术大学 | 一种基于内容分块的远程文件实时更新方法 |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
CN111857821A (zh) * | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于生成服从一定分布的随机向量装置和方法 |
CN111831207B (zh) * | 2019-04-16 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及其设备 |
CN111142808B (zh) * | 2020-04-08 | 2020-08-04 | 浙江欣奕华智能科技有限公司 | 存取设备及存取方法 |
CN117577162B (zh) * | 2024-01-16 | 2024-05-14 | 长鑫存储技术(西安)有限公司 | 一种冗余地址寄存器结构、冗余地址寄存器阵列及存储器 |
Citations (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 |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
-
2010
- 2010-02-01 CN CN2010101171771A patent/CN101776988B/zh active Active
Patent Citations (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 |
CN101609715A (zh) * | 2009-05-11 | 2009-12-23 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101620524A (zh) * | 2009-07-03 | 2010-01-06 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
Also Published As
Publication number | Publication date |
---|---|
CN101776988A (zh) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101776988B (zh) | 一种块大小可变的可重构矩阵寄存器文件 | |
US5410727A (en) | Input/output system for a massively parallel, single instruction, multiple data (SIMD) computer providing for the simultaneous transfer of data between a host computer input/output system and all SIMD memory devices | |
JP7416393B2 (ja) | テンソル並べ替えエンジンのための装置および方法 | |
US8984043B2 (en) | Multiplying and adding matrices | |
JP5945291B2 (ja) | デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置 | |
TWI656533B (zh) | 用於在資料路徑中計算之裝置及方法 | |
US7529139B2 (en) | N-port memory circuits allowing M memory addresses to be accessed concurrently and signal processing methods thereof | |
CN101609715B (zh) | 行列访问端口分离的矩阵寄存器文件 | |
CN102279818B (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN100451949C (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
US6425070B1 (en) | Variable length instruction decoder | |
US7386689B2 (en) | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner | |
JP5126226B2 (ja) | 演算ユニット、プロセッサ及びプロセッサアーキテクチャ | |
EP2130132B1 (en) | Dsp including a compute unit with an internal bit fifo circuit | |
WO2018175121A1 (en) | Apparatuses and methods for in-memory data switching networks | |
US20070255903A1 (en) | Device, system and method of accessing a memory | |
US6496920B1 (en) | Digital signal processor having multiple access registers | |
EP1512069A2 (en) | An address generation unit for a processor | |
CN113270126A (zh) | 流访问存储器设备、系统和方法 | |
US6463518B1 (en) | Generation of memory addresses for accessing a memory utilizing scheme registers | |
EP1066559A1 (en) | A digital signal processor | |
JPH06274528A (ja) | ベクトル演算処理装置 | |
US7284113B2 (en) | Synchronous periodical orthogonal data converter | |
CN116150055B (zh) | 基于片上缓存的数据访问方法、装置及转置方法和装置 | |
Hinrichs et al. | A 1.3-GOPS parallel DSP for high-performance image-processing applications |
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 |