CN101620524B - 支持矩阵整体读写操作的矩阵寄存器文件 - Google Patents
支持矩阵整体读写操作的矩阵寄存器文件 Download PDFInfo
- Publication number
- CN101620524B CN101620524B CN2009100438265A CN200910043826A CN101620524B CN 101620524 B CN101620524 B CN 101620524B CN 2009100438265 A CN2009100438265 A CN 2009100438265A CN 200910043826 A CN200910043826 A CN 200910043826A CN 101620524 B CN101620524 B CN 101620524B
- Authority
- CN
- China
- Prior art keywords
- read
- write
- vector
- row
- matrix
- 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
本发明公开了一种支持矩阵整体读写操作的矩阵寄存器文件,要解决的技术问题是提供一种支持整体矩阵的所有行或列数据的一次性读操作和整体矩阵的所有行或列数据的一次性写操作的矩阵寄存器文件。技术方案是它由矩阵寄存器文件存储体、1个读访问端口和1个写访问端口组成;读访问端口由读行列地址译码器、读出数据缓冲器和读出控制器组成,读出控制器由1个读状态机、1个读计数器和1个读加法器组成;写访问端口由写地址译码器和写入控制器组成,写入控制器由1个写状态机、一个写计数器和1个写加法器组成。使用本发明时,采用单条矩阵指令就能实现整体的矩阵运算,从而提高了代码密度,降低了存储器开销和系统功耗。
Description
技术领域:本发明涉及向量微处理器中支持矩阵整体读写操作的矩阵寄存器文件。
背景技术:图像处理和现代通信等媒体应用领域需要进行大量的矩阵运算,如图像处理中的二维卷积、小波变换,现代通信领域调制解调系统中的空时编码(STBC)、信道估计和FFT算法都需要使用矩阵乘法、矩阵加法运算。面向这类数据密集型应用的向量微处理器通常采用单指令流多数据流(SIMD)、超常指令字体系结构(VLIW),设置向量运算指令、向量寄存器文件和向量运算阵列来支持矩阵或向量数据运算,以加快数据处理的速度。
向量微处理器执行向量操作指令时,其指令译码部件完成指令译码,并将执行何种指令操作、源操作数位置、以及目的操作数位置等译码结果发送到向量寄存器文件和向量运算阵列。源操作数从向量寄存器文件读出并送往向量运算阵列进行运算,运算结果被写入由译码结果指定的目的向量寄存器文件或片内存储器中。需要时,向量寄存器文件和向量运算阵列通过直接存储器访问控制器(DMA)访问片外主存。
向量寄存器文件存放和提供向量运算所需的向量数据,是由N个(N为正整数,且为2的整数次幂)行向量寄存器构成的向量寄存器组。每个行向量寄存器又由M个B(B为正整数)位的字组成。向量寄存器文件的大小以N*M个字表示,即向量寄存器文件最多能存放N*M个数据,最多可存 放如式1所示的矩阵数据,也可存放大小为J*H(1≤J≤N、1≤H≤M,且为整数)的任意矩阵数据。
对于存放式1所示矩阵数据的向量寄存器文件,共有N个行向量,M个列向量,其行向量VRi={xj1,xj2,...,xjM}(1≤j≤N,且为整数),列向量CVRh={x1h,x2h,...,xNh}(1≤h≤M,且为整数)。
目前已有支持按行向量或列向量访问的向量寄存器文件,可实现矩阵转置、行列向量的运算操作。但向量微处理器要完成一次矩阵运算,仍需执行多条向量寄存器文件的行、列向量操作指令。
例如实现矩阵VA(J*H)(式2)与矩阵VB(H*K)(式3)(1≤K≤M,且为整数)的矩阵乘法操作,VA*VB结果中的每个元素等于VA一个行向量(如aj1,aj2,...,ajH,1≤j≤J)乘以VB的一个列向量(如b1k,b2k,...,bHk,1≤k≤K),并将H个乘积累加的结果。即,VA*VB的第j行第k(1≤k≤K)列元素就等于 见式4。
以目前只支持行或列访问的向量寄存器文件结构看,完成VA*VB的矩阵乘法需要发出J*K次向量运算指令;进行J*K次向量指令取指和译码操作;然后分别访问向量寄存器文件VA和VB各J*K次,才能分别将VA的每个行向量和VB的每个列向量读出并送往向量运算阵列进行向量运算。VA矩阵的每一行向量与VB矩阵的所有列向量分别进行K次行列向量乘加运算后,可得到结果矩阵的一个行向量,需将其写入目的向量寄存器文件的某一行向量中。所以完成VA*VB的矩阵乘法运算,向量运算阵列需要进行J*K次向量运算,运算结果需要向目的向量寄存器文件进行J次行向量的写操作方可完成。
因此这种向量寄存器文件存在这样的问题:虽然可直接支持向量运算指令,但要完成一次矩阵运算,需要分别执行多次向量寄存器文件的行、列向量的访问及其运算指令操作,多次的向量指令取指、译码操作增加了系统功耗,降低了矩阵指令的执行效率。
发明内容:本发明要解决的技术问题是提供一种支持矩阵整体读写操作的矩阵寄存器文件,使其不仅支持向量运算,而且直接支持矩阵运算,即支持整体矩阵的所有行或列数据的一次性读操作和整体矩阵的所有行或列数据的一次性写操作,使用单条矩阵指令就能实现整体的矩阵运算,从而提高代码密度,降低存储器开销,降低系统功耗。
本发明的技术方案是:
本发明矩阵寄存器文件由矩阵寄存器文件存储体、1个读访问端口和1个写访问端口组成。矩阵寄存器文件存储体由N个行向量寄存器VR0~VRN-1或N个列向量寄存器CVR0~CVRN-1构成;每个行向量寄存器VRi(i=0,1~N-1)又由N个寄存器(VRi[j],j=0,1~N-1)和一个行写片选信号组成,每个列向量寄存器CVRm(m=0,1~N-1)又由N个寄存器(VRk[m],k=0,1~N-1)和一个列写片选信号组成,每个寄存器有B(B为正整数)位。每个行向量寄存器和每个列向量寄存器既与读访问端口相连,又与写访问端口相连。矩阵寄存器文件能存放J行*H列大小的矩阵数据(1≤J≤N、1≤H≤N,且为整数)。
读访问端口由读译码选择器、读出数据缓冲器和读出控制器组成。读译码选择器与读出数据缓冲器、读出控制器和矩阵寄存器文件存储体相连,即读译码选择器的输入既与矩阵寄存器文件存储体中的每个行向量寄存器相连,又与每个列向量寄存器相连,输出与读出数据缓冲器相连。读译码选择器从向量微处理器的指令译码部件接受读行列模式信号,从读出控制器接受读向量地址,根据读行列模式信号和读向量地址进行行或列向量地址译码并选择存储体中的某一行向量(或列向量)数据作为输出送给读出数据缓冲器。
读出数据缓冲器由1个缓冲器空满标志位和N个B位的寄存器构成,既与读译码选择器的输出相连,又与读出控制器相连。当系统复位有效时,读出数据缓冲器置缓冲器空满标志位为空;当接收到读出控制器发来的数据缓冲器写信号有效时,读译码选择器的输出值被写入读出数据缓冲器, 并输出到读出数据总线等待向量运算阵列或存储器读取,同时置缓冲器空满标志位为满。
读出控制器与读译码选择器和读出数据缓冲器相连,由1个读状态机、1个读计数器和1个读加法器组成。它从向量微处理器的指令译码部件接受读请求、读行列模式、行读起始地址、列读起始地址、行读向量数、列读向量数和系统复位信号,从向量运算阵列或存储器接受向量读使能信号,控制读译码选择器和读出数据缓冲器的操作。读状态机和读计数器控制矩阵的读访问过程,读加法器负责改变读访问过程中读译码选择器的读向量地址。
读状态机由读端口空闲、读地址译码和读出三个状态组成,其状态转换过程是:当从指令译码部件收到系统复位信号有效时,读状态机置读端口忙信号无效,置缓冲器空满标志位为空,读计数器清0,进入读端口空闲状态;在空闲状态若收到来自指令译码部件的读请求信号有效,则启动读操作,置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根据读行列模式选择行读向量数或列读向量数作为读向量数,根据读行列模式选择行读起始地址或列读起始地址作为读向量地址,输出到读译码选择器,读译码选择器根据读行列模式和读向量地址完成行向量或列向量地址译码和向量的选择,并输出选中的某一行向量或列向量。此时若缓冲器空满标志位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选择器的输出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满标志位为满,读加法器对读向量地址进行加1操作,读计数器加1;若检测到向量读使能有效,则判断读计数器是否达到读向量数,如果没有达到读 向量数,下一拍置缓冲器空满标志位为空,回到读地址译码状态;如果达到读向量数,下一拍置读端口忙信号为无效,置缓冲器空满标志位为空,读计数器清0,返回读端口空闲状态,结束本次矩阵读操作。
读访问端口能根据来自指令译码部件和向量运算阵列(或存储器)的控制信号,用多个时钟周期(时钟周期数大于等于矩阵的行读向量数或列读向量数+3拍)来完成矩阵的整体读操作,即在读出控制器的控制下,以流水方式每一拍读出矩阵寄存器的某一行或列向量寄存器,同时按顺序递增行/列地址,直到行/列向量全部读出,完成整个矩阵的读访问。
写访问端口由写地址译码器和写入控制器组成。写地址译码器既与矩阵寄存器文件存储体内所有行向量寄存器和所有列向量寄存器相连,又与写入控制器相连,它从指令译码部件接受写行列模式信号,从向量运算阵列或存储器接受写数据和写数据有效信号,根据写行列模式和写入控制器产生的写向量地址完成地址译码,向矩阵寄存器文件存储体输出一个有效的行写片选信号或1个有效的列写片选信号,当收到写入控制器输出的数据写使能信号有效时,将写数据总线上的数据写入行写片选信号或列写片选信号选中的行向量或列向量寄存器中。
写入控制器与写地址译码器相连,它由1个写状态机、一个写计数器和1个写加法器组成。写入控制器从向量微处理器的指令译码部件接受写请求、写行列模式、行写起始地址、列写起始地址、行写向量数、列写向量数和系统复位信号,从向量运算阵列或存储器接受写数据有效信号。写状态机和写计数器控制矩阵的写访问过程,写加法器在写状态机的控制下改变写访问过程中写地址译码器的写向量地址。
写状态机由写端口空闲、写地址译码和写入三个状态组成,其状态转换过程是:当从指令译码部件收到系统复位信号有效时,置写端口忙信号无效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若检测到来自指令译码部件的写请求有效,启动写操作:置写端口忙信号有效,进入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行列模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据写行列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列模式选择行写起始地址或列写起始地址作为写向量地址,将写向量地址发送给写地址译码器进行写地址译码,若检测到写数据有效信号有效,则向写地址译码器输出数据写使能信号有效,进入写入状态;将写数据总线上的数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或列向量寄存器中,同时写加法器对写向量地址加1,写计数器加1,并判断写计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不等于,则下一拍置写端口忙信号为无效,清写计数器为0,回到写端口空闲状态,结束本次矩阵的写访问。
写访问端口根据能根据来自指令译码部件和向量运算阵列(或存储器)的控制信号,用多个时钟周期(时钟周期数大于等于矩阵的行写向量数(列写向量数)+2拍)完成矩阵的行或列向量的写入,即用流水的方式每拍写入矩阵寄存器的一个行或向量,同时按顺序递增写向量地址,直到写入全部行或向量寄存器,完成整个矩阵的一次写入操作。
采用本发明的向量微处理器直接支持矩阵运算和操作,其指令集增加以下四条矩阵指令:矩阵乘法、矩阵加法、矩阵装载、矩阵存储指令。
1、矩阵乘法指令:
MRMUL MAR1[J,H,Vadd1,CVadd1],MAR2[H,K,Vadd2,CVadd2],MAR3[J,K,Vadd3,CVadd3]意思是将矩阵寄存器文件MAR1中行读起始地址为Vadd1、列读起始地址为CVadd1、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2中行读起始地址为Vadd2、列读起始地址为CVadd2、行读向量数为H、列读向量数为K的矩阵相乘,结果矩阵存入行读起始地址为Vadd3、列读起始地址为CVadd3的矩阵寄存器文件MAR3中,矩阵数据为J行、K列。
2、矩阵加法指令:
MRADD MAR1[J,H,Vadd1,CVadd1],MAR2[J,H,Vadd2,CVadd2],MAR3[J,H,Vadd3,CVadd3]意思是将矩阵寄存器文件MAR1中行读起始地址为Vadd1、列读起始地址为CVadd1、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2中行读起始地址为Vadd2、列读起始地址CVadd2、行读向量数为J、列读向量数为H的矩阵相加,结果存入起始行地址为Vadd3、列起始地址为CVadd3的矩阵寄存器文件MAR3中,矩阵数据仍为J行、H列。
3、矩阵装载指令:
(1)LDVMR MARn[J,H,Vadd1,CVadd1],AR(n为正整数)意思是将AR寄存器给出的起始地址开始对应的J个行向量数据(每个行向量有H个有效数据)按行写操作模式载入行起始地址为Vadd1、列起始地址为CVadd1的第n个矩阵寄存器文件MARn中;矩阵有效数据J行、H列。
(2)LDCMR MARn[J,H,Vadd1,CVadd1],AR(n为正整数)意思是将AR寄存器给出的起始地址开始对应的H个列向量数据(每个列向量有J个有效数据)按列载入列起始地址为CVadd1、行起始地址为Vadd1的第n个矩阵寄存器文件MARn中;矩阵有效数据J行、H列。
4、矩阵存储指令:
(1)STVMR MARn[J,H,Vadd1,CVadd1],Rd
意思是将矩阵寄存器文件MARn中行起始地址为Vadd1、列起始地址为CVadd1的J个行向量数据(每个行向量有H个有效数据)按行写操作模式写入由Rd寄存器给出的起始地址对应的存储器中。
(2)STCMR MARn[J,H,Vadd1,CVadd1],Rd
意思是将矩阵寄存器文件MARn中列起始地址为CVadd1、行起始地址为Vadd1、H个列向量数据(每个列向量有J个有效数据)按列写操作模式写入由Rd寄存器给出的起始地址对应的存储器中。
涉及以上矩阵操作指令的矩阵寄存器文件的读操作过程是:
1指令译码部件对矩阵读操作指令译码,从指令中抽取指定源矩阵寄存器文件的读请求、读行列模式、行读起始地址、行读向量数、列读起始地址、列读向量数、系统复位这些信号,同时检测读端口忙信号是否为无效(即读访问端口不忙),是则将抽取的这些信号送往指定矩阵寄存器文件的读访问端口。
2读访问端口的读出控制器接到读请求信号,置读端口忙信号有效,启动矩阵读操作:
2.1根据读行列模式选择是行向量读操作还是列向量读操作,若是行向量读操作,则以行读起始地址为读向量地址,行读向量数为读向量数,若是列向量读操作,则以列读起始地址作为读向量地址,列读向量数为读向量数;
2.2读译码选择器根据读向量地址进行译码,将输出选择的一个行向量 或列向量寄存器的数据在缓冲器空满标志位为空时写入读出数据缓存器,然后置读数据有效信号有效,置缓冲器空满标志位为满,等待外部的向量读使能信号有效;
2.3若向量读使能有效,表示数据被读走,则下一拍置读数据有效信号无效,置缓冲器空满标志位为空;读出控制器对读向量地址加1,读计数器加1。
3读出控制器内的读状态机判断其读计数器的值是否达到读向量数,若未达到则重复步骤2.2和2.3;否则结束本次矩阵读操作,置读端口忙信号无效,表示读访问端口空闲,回到步骤1,准备接收下一次矩阵读操作。
矩阵寄存器文件的写操作步骤具体如下:
(1)指令译码部件对矩阵写操作指令译码,从指令中抽取目标矩阵寄存器文件写请求、写行列模式、行写起始地址、行写向量数,列写起始地址、列写向量数、系统复位信号,同时检测写访问端口的写端口忙信号是否无效(即写访问端口不忙),是则将抽取的这些信号送往目标矩阵寄存器文件的写访问端口。
(2)写访问端口的写入控制器接收到写请求信号有效时,置写端口忙信号有效,(表示写访问端口忙,不再接收新的写请求)启动矩阵写操作:(2.1)根据写行列模式选择是行向量写操作还是列向量写操作,若是行向量写操作,则以行写起始地址为写向量地址,行写向量数为写向量数,若是列向量写操作,则以列写起始地址作为写向量地址,列写向量数为写向量数;
(2.2)写地址译码器根据写行列模式和写向量地址进行行向量或列向量地址译码。当来自存储器或向量运算阵列的写数据有效信号有效时,写入控制器置数据写使能信号有效,将写数据写入写地址译码器选中的行向量或列向量寄存器中,同时将写向量地址加1,写计数器加1;
(2.3)写入控制器内的写状态机判断写计数器的值是否达到矩阵的写向量数,若没达到,则重复步骤(2.2)和(2.3);否则置写端口忙信号无效,回到步骤(1),完成本次矩阵写操作,准备接收下一次矩阵写操作。
由上述过程可知,本发明直接支持整体矩阵数据的读写访问操作,实现矩阵操作指令时不需要分别读取和译码多条矩阵的行、列向量操作指令,使用单条矩阵操作指令就可实现整个矩阵所有的行、列的读操作和所有矩阵行的写操作。
采用本发明能产生如下技术效果:
(1)不仅支持向量运算,还可直接支持单指令形式的矩阵操作指令,即支持单条指令对矩阵整体的行/列读操作,或单条指令对矩阵整体的写操作。将同等规模大小的矩阵运算需进行的多次取指、译码操作减少为一次取值、译码,降低了同等规模大小矩阵运算的功耗,提高了矩阵运算的效率。对于VA(J行H列)和矩阵VB(H行K列)的矩阵乘法运算只需一条矩阵运算指令即可完成,比原来的向量寄存器文件少J*K-1条。
(2)节省了代码量,提高了代码密度,降低了存储器开销。
(3)支持矩阵寄存器文件的行、列向量的读访问使得矩阵运算不需要进行额外的矩阵转置操作。
附图说明
图1是现有向量寄存器文件与向量微处理器其他部件接口示意图。
图2是本发明矩阵寄存器文件的逻辑结构框图。
图3是本发明矩阵寄存器文件存储体逻辑结构图。
图4是本发明读出控制器中读状态机的状态转换图。
图5是本发明写入控制器中写状态机的状态转换图。
具体实施方式
图1是现有向量寄存器文件与向量微处理器中其他部件的接口示意图。该向量微处理器包括指令译码部件、一个向量运算阵列、片内存储器、直接存储器访问控制器(DMA)和n个向量寄存器文件。指令译码部件对从取指部件来的矩阵指令进行译码,将译码后的各控制信号分别发送到向量寄存器文件和向量运算阵列。向量运算阵列、片内存储器、DMA和向量寄存器文件通过片内资源总线交换数据。DMA实现成组的片内外存储器数据传输。向量寄存器文件存放和提供向量微处理器运行时所需的矩阵数据。若需要进行向量寄存器文件的读操作,源操作数从指定源向量寄存器文件的位置中读出,通过片内资源总线或送往向量运算阵列进行运算、或写入片内存储器、或通过DMA写入片外存储器。若需要进行向量寄存器文件的加载或写访问操作,则将片内存储器读出的向量数据或向量运算阵列的运算结果写入向量指令指定的向量寄存器文件的相应行中。
图2是本发明矩阵寄存器文件的逻辑结构框图。它与向量微处理器中其他部件的连接方式与图1所示向量寄存器文件的一样。矩阵寄存器文件由1个读访问端口、1个写访问端口和矩阵寄存器文件存储体组成。
读访问端口由读译码选择器、读出控制器、读出数据缓冲器组成。其中,输入端口信号读请求、读行列模式、行读起始地址、行读向量数、列读起始地址、列读向量数,向量读使能,系统复位均与读出控制器相连;输出信号读端口忙信号、读数据有效与读出控制器相连,读出数据总线与读出数据缓冲器相连。读译码选择器还与矩阵寄存器文件存储体的每个行向量寄存器、列向量寄存器相连,它根据读向量地址进行读向量地址译码,输出选中的行向量或列向量寄存器。读出控制器由读状态机、读计数器和读加法器组成,它与读出控制器和读出数据缓冲器相连,控制读操作的复位、启动、结束。
写访问端口由写地址译码器、写入控制器组成。其中,输入信号:写请求、写数据有效、写行列模式、行写起始地址、列写起始地址、行写向量数、列写向量数、系统复位与写入控制器相连;输出信号写端口忙信号与写入控制器相连。写数据总线与矩阵寄存器文件内所有的行向量和列向量寄存器相连;写地址译码器根据写行列模式和写向量地址完成地址译码,输出有效的行写片选信号或列写片选信号,选择欲写的行向量或列向量。写入控制器由写状态机、写计数器和写激发起组成,与写地址译码器相连,控制写操作的复位、启动、结束。
图3是矩阵寄存器文件存储体逻辑结构图。该存储体由N个行向量寄存器VR0~VRN-1(或N个列向量CVR0~CVRN-1)组成。每个行向量寄存器VRi(i=0,1~N-1)又由N个寄存器(VRi[j],j=0,1~N-1)和一个行写片选信号组成,每个列向量寄存器CVRm(m=0,1~N-1)又由N个寄存器(VRk[m],k=0,1~N-1)和一个列写片选信号组成。每个寄存器有B位。每 个行向量寄存器和每个列向量寄存器均与读访问端口相连。每个行向量寄存器和每个列向量寄存器均与写数据总线和写地址译码器相连。N个行向量寄存器分别与写地址译码器的N条行写片选信号线(第0,1,......N-1条)相连;N个列向量寄存器分别与写地址译码器的N条列写片选信号线(第0,1,......N-1条)相连。通过写访问端口内的写入控制器控制矩阵数据中所有的行向量或列向量寄存器的连续写入。每个行向量、列向量寄存器与读访问端口的读译码选择器相连,并通过读出控制器控制矩阵的读访问过程。
图4是矩阵寄存器文件的读访问端口读出控制器中读状态机的状态转换图,由读端口空闲、读地址译码和读出三个状态组成,其状态转换过程是:当从指令译码部件收到系统复位信号有效时,读状态机置读端口忙信号无效,置缓冲器空满标志位为空,读计数器清0,进入读端口空闲状态;在空闲状态若收到来自指令译码部件的读请求信号有效,则启动读操作,置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根据读行列模式选择行读向量数或列读向量数作为读向量数,根据读行列模式选择行读起始地址或列读起始地址作为读向量地址,输出到读译码选择器,读译码选择器根据读行列模式和读向量地址完成行向量或列向量地址译码和向量的选择,并输出选中的某一行向量或列向量。此时若缓冲器空满标志位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选择器的输出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满标志位为满,读加法器对读向量地址进行加1操作,读计数器加1;若检测到向量读使能有效,则判断读计数器是否达到读向量数,若没有,下一拍置缓冲器空满标志位为空,回到读地址译码状态;若达到读向量数,下一拍置读 端口忙信号为无效,置缓冲器空满标志位为空,读计数器清0,返回读端口空闲状态,结束本次矩阵读操作。
图5是矩阵寄存器文件写访问端口的写入控制器中写状态机的状态转换图,共有3个状态:写端口空闲、写地址译码和写入状态。其状态转换过程是:当从指令译码部件收到系统复位信号有效时,置写端口忙信号无效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若检测到来自指令译码部件的写请求有效,启动写操作:置写端口忙信号有效,进入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行列模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据写行列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列模式选择行写起始地址或列写起始地址作为写向量地址,将写向量地址发送给写地址译码器进行写地址译码,若检测到写数据有效信号有效,则向写地址译码器输出数据写使能信号有效,进入写入状态;将写数据总线上的数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或列向量寄存器中,同时写加法器对写向量地址加1,写计数器加1,并判断写计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不等于,则下一拍置写端口忙信号为无效,清写计数器为0,回到写端口空闲状态,结束本次矩阵的写访问。
Claims (7)
1.一种支持矩阵整体读写操作的矩阵寄存器文件,它由矩阵寄存器文件存储体、1个读访问端口和1个写访问端口组成;矩阵寄存器文件存储体由N个行向量寄存器VR0~VRN-1或N个列向量寄存器CVR0~CVRN-1构成,每个行向量寄存器VRi又由N个寄存器VRi[j]组成,每个列向量寄存器CVRm又由N个寄存器VRk[m]组成,每个寄存器有B位其中B为正整数,i、j、m、k均为大于等于0小于等于N-1的整数;矩阵寄存器文件存储体的每个行向量寄存器和每个列向量寄存器既与读访问端口相连,又与写访问端口相连;其特征在于:
读访问端口由读译码选择器、读出数据缓冲器和读出控制器组成;读译码选择器与读出数据缓冲器、读出控制器和矩阵寄存器文件存储体相连,读译码选择器从向量微处理器的指令译码部件接受读行列模式信号,从读出控制器接受读向量地址,根据读行列模式信号和读向量地址进行行或列向量地址译码并选择存储体中的某一行向量或列向量数据作为输出送给读出数据缓冲器;
读出数据缓冲器由1个缓冲器空满标志位和N个B位的寄存器构成,既与读译码选择器的输出相连,又与读出控制器相连,当系统复位有效时,读出数据缓冲器置缓冲器空满标志位为空;当接收到读出控制器发来的数据缓冲器写信号有效时,读译码选择器的输出值被写入读出数据缓冲器,并输出到读出数据总线等待向量运算阵列或存储器读取,同时置缓冲器空满标志位为满;
读出控制器与读译码选择器和读出数据缓冲器相连,由1个读状态机、1个读计数器和1个读加法器组成,它从向量微处理器的指令译码部件接受读请求、读行列模式、行读起始地址、列读起始地址、行读向量数、列读向量数和系统复位信号,从向量运算阵列或存储器接受向量读使能信号,控制读译码选择器和读出数据缓冲器的操作,读状态机和读计数器控制矩阵的读访问过程,读加法器负责改变读访问过程中读译码选择器的读向量地址;
写访问端口由写地址译码器和写入控制器组成,写地址译码器既与矩阵寄存器文件存储体内所有行向量寄存器和所有列向量寄存器相连,又与写入控制器相连,它从指令译码部件接受写行列模式信号,从向量运算阵列或存储器接受写数据和写数据有效信号,根据写行列模式和写入控制器产生的写向量地址完成地址译码,向矩阵寄存器文件存储体输出1个有效的行写片选信号或1个有效的列写片选信号,当收到写入控制器输出的数据写使能信号有效时,将写数据总线上的数据写入行写片选信号或列写片选信号选中的行向量或列向量寄存器中;
写入控制器与写地址译码器相连,它由1个写状态机、一个写计数器和1个写加法器组成;写入控制器从向量微处理器的指令译码部件接受写请求、写行列模式、行写起始地址、列写起始地址、行写向量数、列写向量数和系统复位信号,从向量运算阵列或存储器接受写数据有效信号;写状态机和写计数器控制矩阵的写访问过程,写加法器在写状态机的控制下改变写访问过程中写地址译码器的写向量地址;
向量微处理器的指令集增加矩阵乘法、矩阵加法、矩阵装载、矩阵存储四种矩阵指令。
2.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述读状态机由读端口空闲、读地址译码和读出三个状态组成,其状态转换过程是:当从指令译码部件收到系统复位信号有效时,读状态机置读端口忙信号无效,置缓冲器空满标志位为空,读计数器清0,进入读端口空闲状态;在空闲状态若收到来自指令译码部件的读请求信号有效,则启动读操作,置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根据读行列模式选择行读向量数或列读向量数作为读向量数,根据读行列模式选择行读起始地址或列读起始地址作为读向量地址,输出到读译码选择器,读译码选择器根据读行列模式和读向量地址完成行向量或列向量地址译码和向量的选择,并输出选中的某一行向量或列向量,此时若缓冲器空满标志位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选择器的输出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满标志位为满,读加法器对读向量地址进行加1操作,读计数器加1;若检测到向量读使能有效,则判断读计数器是否达到读向量数,如果没有达到读向量数,下一拍置缓冲器空满标志位为空,回到读地址译码状态;如果达到读向量数,下一拍置读端口忙信号为无效,置缓冲器空满标志位为空,读计数器清0,返回读端口空闲状态,结束本次矩阵读操作;
3.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述写状态机由写端口空闲、写地址译码和写入三个状态组成,其状态转换过程是:当从指令译码部件收到系统复位信号有效时,置写端口忙信号无效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若检测到来自指令译码部件的写请求有效,启动写操作:置写端口忙信号有效, 进入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行列模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据写行列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列模式选择行写起始地址或列写起始地址作为写向量地址,将写向量地址发送给写地址译码器进行写地址译码,若检测到写数据有效信号有效,则向写地址译码器输出数据写使能信号有效,进入写入状态;在写入状态,将写数据总线上的数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或列向量寄存器中,同时写加法器对写向量地址加1,写计数器加1,并判断写计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不等于,则下一拍置写端口忙信号为无效,清写计数器为0,回到写端口空闲状态,结束本次矩阵的写访问。
4.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵乘法指令为MRMUL MAR1[J,H,Vadd1,CVadd1],MAR2[H,K,Vadd2,CVadd2],MAR3[J,K,Vadd3,CVadd3]意思是将矩阵寄存器文件MAR1中行读起始地址为Vadd1、列读起始地址为CVadd1、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2中行读起始地址为Vadd2、列读起始地址为CVadd2、行读向量数为H、列读向量数为K的矩阵相乘,结果矩阵存入行读起始地址为Vadd3、列读起始地址为CVadd3的矩阵寄存器文件MAR3中,矩阵数据为J行、K列。
5.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵加法指令为
MRADD MAR1[J,H,Vadd1,CVadd1],MAR2[J,H,Vadd2,CVadd2],MAR3[J,H,Vadd3,CVadd3]意思是将矩阵寄存器文件MAR1中行读起始地址为Vadd1、列读起始地址为 CVadd1、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2中行读起始地址为Vadd2、列读起始地址CVadd2、行读向量数为J、列读向量数为H的矩阵相加,结果存入起始行地址为Vadd3、列起始地址为CVadd3的矩阵寄存器文件MAR3中,矩阵数据仍为J行、H列。
6.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵装载指令有两条:
第一条为LDVMR MARn[J,H,Vadd1,CVadd1],AR,n为正整数,意思是将AR寄存器给出的起始地址开始对应的J个行向量数据-每个行向量有H个有效数据,按行写操作模式载入行起始地址为Vadd1、列起始地址为CVadd1的第n个矩阵寄存器文件MARn中;
第二条为LDCMR MARn[J,H,Vadd1,CVadd1],AR,意思是将AR寄存器给出的起始地址开始对应的H个列向量数据-每个列向量有J个有效数据,按列载入列起始地址为CVadd1、行起始地址为Vadd1的第n个矩阵寄存器文件MARn中。
7.如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵存储指令有两条:
第一条为STVMR MARn[J,H,Vadd1,CVadd1],Rd,意思是将矩阵寄存器文件MARn中行起始地址为Vadd1、列起始地址为CVadd1的J个行向量数据-每个行向量有H个有效数据,按行写操作模式写入由Rd寄存器给出的起始地址对应的存储器中;
第二条为STCMR MARn[J,H,Vadd1,CVadd1],Rd,意思是将矩阵寄存器文件MARn中列起始地址为CVadd1、行起始地址为Vadd1、H个列向量数据-每 个列向量有J个有效数据,按列写操作模式写入由Rd寄存器给出的起始地址对应的存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100438265A CN101620524B (zh) | 2009-07-03 | 2009-07-03 | 支持矩阵整体读写操作的矩阵寄存器文件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100438265A CN101620524B (zh) | 2009-07-03 | 2009-07-03 | 支持矩阵整体读写操作的矩阵寄存器文件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101620524A CN101620524A (zh) | 2010-01-06 |
CN101620524B true CN101620524B (zh) | 2011-08-10 |
Family
ID=41513776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100438265A Active CN101620524B (zh) | 2009-07-03 | 2009-07-03 | 支持矩阵整体读写操作的矩阵寄存器文件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101620524B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
CN102012893B (zh) * | 2010-11-25 | 2012-07-18 | 中国人民解放军国防科学技术大学 | 一种可扩展向量运算装置 |
CN102541814B (zh) * | 2010-12-27 | 2015-10-14 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
JP4862100B1 (ja) * | 2011-03-25 | 2012-01-25 | 好一 北岸 | 中央演算処理装置及びマイクロコンピュータ |
CN103440121B (zh) * | 2013-08-20 | 2016-06-29 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
CN104317554B (zh) * | 2014-10-14 | 2017-02-15 | 中国航天科技集团公司第九研究院第七七一研究所 | 用于simd处理器的寄存器文件数据读写装置和方法 |
CN104391801B (zh) * | 2014-11-07 | 2018-09-25 | 北京海尔集成电路设计有限公司 | Ddrii控制器的读写、状态转换、物理地址分配方法 |
CN104899182B (zh) * | 2015-06-09 | 2017-10-31 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN107704433A (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种矩阵运算指令及其方法 |
CN108491359B (zh) * | 2016-04-22 | 2019-12-24 | 北京中科寒武纪科技有限公司 | 子矩阵运算装置及方法 |
CN111104164A (zh) * | 2016-04-26 | 2020-05-05 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
CN109117184A (zh) | 2017-10-30 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 人工智能处理器及使用处理器执行平面旋转指令的方法 |
US11990137B2 (en) | 2018-09-13 | 2024-05-21 | Shanghai Cambricon Information Technology Co., Ltd. | Image retouching method and terminal device |
CN110087088B (zh) * | 2019-05-09 | 2020-10-16 | 集美大学 | 一种基于运动估计的数据存储方法、终端设备及存储介质 |
CN111782273B (zh) * | 2020-07-16 | 2022-07-26 | 中国人民解放军国防科技大学 | 一种提高重复程序执行性能的软硬件协同缓存装置 |
CN112433760B (zh) * | 2020-11-27 | 2022-09-23 | 海光信息技术股份有限公司 | 数据排序方法和数据排序电路 |
CN114565075A (zh) * | 2020-11-27 | 2022-05-31 | 安徽寒武纪信息科技有限公司 | 支援多种访问模式的设备、方法及可读存储介质 |
CN112434256B (zh) * | 2020-12-03 | 2022-09-13 | 海光信息技术股份有限公司 | 矩阵乘法器和处理器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150860A (zh) * | 1995-04-13 | 1997-05-28 | 塞瑞斯逻辑公司 | 用于成组存取的半导体存储装置 |
US6188633B1 (en) * | 1998-04-28 | 2001-02-13 | Hewlett-Packard Company | Multi-port computer register file having shared word lines for read and write ports and storage elements that power down or enter a high-impedance state during write operations |
US6260136B1 (en) * | 1997-08-20 | 2001-07-10 | Matsushita Electric Industrial Co., Ltd. | Substitute register for use in a high speed data processor |
CN1501292A (zh) * | 2002-09-11 | 2004-06-02 | �����ɷ� | 寄存器文件和设计寄存器文件的方法 |
CN1684058A (zh) * | 2004-04-16 | 2005-10-19 | 索尼株式会社 | 处理器 |
CN101324837A (zh) * | 2008-07-21 | 2008-12-17 | 北京大学 | 一种微处理器内部寄存器堆的设计和访问方法 |
-
2009
- 2009-07-03 CN CN2009100438265A patent/CN101620524B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150860A (zh) * | 1995-04-13 | 1997-05-28 | 塞瑞斯逻辑公司 | 用于成组存取的半导体存储装置 |
US6260136B1 (en) * | 1997-08-20 | 2001-07-10 | Matsushita Electric Industrial Co., Ltd. | Substitute register for use in a high speed data processor |
US6188633B1 (en) * | 1998-04-28 | 2001-02-13 | Hewlett-Packard Company | Multi-port computer register file having shared word lines for read and write ports and storage elements that power down or enter a high-impedance state during write operations |
CN1501292A (zh) * | 2002-09-11 | 2004-06-02 | �����ɷ� | 寄存器文件和设计寄存器文件的方法 |
CN1684058A (zh) * | 2004-04-16 | 2005-10-19 | 索尼株式会社 | 处理器 |
CN101324837A (zh) * | 2008-07-21 | 2008-12-17 | 北京大学 | 一种微处理器内部寄存器堆的设计和访问方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101620524A (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101620524B (zh) | 支持矩阵整体读写操作的矩阵寄存器文件 | |
US6434689B2 (en) | Data processing unit with interface for sharing registers by a processor and a coprocessor | |
US20060101231A1 (en) | Semiconductor signal processing device | |
US11894045B2 (en) | Processing in memory implementing VLIW controller | |
JP2006012163A5 (zh) | ||
CN102279818B (zh) | 支持有限共享的向量数据访存控制方法及向量存储器 | |
CN101482811B (zh) | 用于增强的计算能力的处理器体系结构 | |
US20070239970A1 (en) | Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File | |
JPH04299436A (ja) | メモリ回路および機能ユニットのグループを備えた処理装置 | |
EP2179350A1 (en) | Compound instructions in a multi-threaded processor | |
CN101122851A (zh) | 一种数据处理方法及处理器 | |
CN101609715A (zh) | 行列访问端口分离的矩阵寄存器文件 | |
CN102567246A (zh) | 一种支持操作乱序执行的与非型快闪存储控制器 | |
US20210241806A1 (en) | Streaming access memory device, system and method | |
EP1512069A2 (en) | An address generation unit for a processor | |
CN102262611B (zh) | 一种16位的risc cpu系统结构 | |
WO2009055909A1 (en) | Data processing with time-based memory access | |
Herz et al. | Memory addressing organization for stream-based reconfigurable computing | |
CN101615113A (zh) | 一条指令完成一次蝶形运算的微处理器实现方法 | |
CN101398784A (zh) | 一种二维寻址方法及装置 | |
US20080244240A1 (en) | Semiconductor device | |
US8316215B2 (en) | Vector processor with plural arithmetic units for processing a vector data string divided into plural register banks accessed by read pointers starting at different positions | |
CN100383729C (zh) | 运算装置 | |
CN101615114B (zh) | 完成两次乘法两次加法两次位移的微处理器实现方法 | |
WO2014169477A1 (zh) | 具有多态指令集体系结构的处理器 |
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 |