支持矩阵整体读写操作的矩阵寄存器文件的制作方法

文档序号:6482207阅读:133来源:国知局
专利名称:支持矩阵整体读写操作的矩阵寄存器文件的制作方法
技术领域
本发明涉及向量微处理器中支持矩阵整体读写操作的矩阵 寄存器文件。
背景技术
图像处理和现代通信等媒体应用领域需要进行大量的矩阵 运算,如图像处理中的二维卷积、小波变换,现代通信领域调制解调系统 中的空时编码(STBC)、信道估计和FFT算法都需要使用矩阵乘法、矩阵加 法运算。面向这类数据密集型应用的向量微处理器通常釆用单指令流多数 据流(SIMD)、超常指令字体系结构(VLIW),设置向量运算指令、向量寄
存器文件和向量运算阵列来支持矩阵或向量数据运算,以加快数据处理的 速度。
向量微处理器执行向量操作指令时,其指令译码部件完成指令译码, 并将执行何种指令搡作、源操作数位置、以及目的操作数位置等译码结果 发送到向量寄存器文件和向量运算阵列。源搡作数从向量寄存器文件读出 并送往向量运算阵列进行运算,运算结果被写入由译码结果指定的目的向 量寄存器文件或片内存储器中。需要时,向量寄存器文件和向量运算阵列 通过直接存储器访问控制器(DMA)访问片外主存。
向量寄存器文件存放和提供向量运算所需的向量数据,是由^个(N 为正整数,且为2的整数次幂)行向量寄存器构成的向量寄存器组。每个 行向量寄存器又由M个S (B为正整数)位的字组成。向量寄存器文件的大 小以^M个字表示,即向量寄存器文件最多能存放^M个数据,最多可存放如式l所示的矩阵数据,也可存放大小为J*H (KJ《N、 1《H《M,且为 整数)的任意矩阵数据。
<formula>formula see original document page 9</formula>(式1)
層乂
对于存放式1所示矩阵数据的向量寄存器文件,共有N个行向量,M 个列向量,其行向量VR^ (x力x,} (1《j《N,且为整数),列向 量CVRh- {~, x2A,…,xM} (1《h《M,且为整数)。
目前已有支持按行向量或列向量访问的向量寄存器文件,可实现矩阵 转置、行列向量的运算操作。但向量微处理器要完成一次矩阵运算,仍需
执行多条向量寄存器文件的行、列向量操作指令。
例如实现矩阵VA ( J*H)(式2)与矩阵VB (H*K)(式3) (1《K《M,
且为整数)的矩阵乘法操作,VA*VB结果中的每个元素等于VA —个行向量
(如 a^,ap,…,a辨,1《j《J )乘以VB的 一个歹寸向量(如614,62)(:,...,6报,1《k《K ), 并将H个乘积累加的结果。即,VA*VB的第j行第k (1《k《K)列元素就等
于|>#*^'见式4。<formula>formula see original document page 9</formula>
(式2)
<formula>formula see original document page 9</formula>
(式3)
欣乂<formula>formula see original document page 10</formula>
以目前只支持行或列访问的向量寄存器文件结构看,完成VA*VB的矩 阵乘法需要发出"K次向量运算指令;进行J《次向量指令取指和译码操 作;然后分别访问向量寄存器文件VA和VB各J化次,才能分别将VA的每 个行向量和VB的每个列向量读出并送往向量运算阵列进行向量运算。VA 矩阵的每一行向量与VB矩阵的所有列向量分别进行K次行列向量乘加运算 后,可得到结果矩阵的一个行向量,需将其写入目的向量寄存器文件的某 一行向量中。所以完成VA*VB的矩阵乘法运算,向量运算阵列需要进行J*K 次向量运算,运算结果需要向目的向量寄存器文件进行J次行向量的写操 作方可完成。
因此这种向量寄存器文件存在这样的问题虽然可直接支持向量运算 指令,但要完成一次矩阵运算,需要分别执行多次向量寄存器文件的行、 列向量的访问及其运算指令操作,多次的向量指令取指、译码搡作增加了 系统功耗,降低了矩阵指令的执行效率。

发明内容
本发明要解决的技术问题是提供 一种支持矩阵整体读写操 作的矩阵寄存器文件,使其不仅支持向量运算,而且直接支持矩阵运算, 即支持整体矩阵的所有行或列数据的一次性读操作和整体矩阵的所有行或 列数据的一次性写操作,使用单条矩阵指令就能实现整体的矩阵运算,从 而提高代码密度,降低存储器开销,降低系统功耗。本发明的技术方案是
本发明矩阵寄存器文件由矩阵寄存器文件存储体、1个读访问端口和1
个写访问端口组成。矩阵寄存器文件存储体由W个行向量寄存器VR。 ~ VRh 或^个列向量寄存器CVR。 ~ CVRw构成;每个行向量寄存器VRi( i-0, 1 ~ N-l) 又由N个寄存器(VRi[j], j=0,l~N-l)和一个行写片选信号组成,每个列 向量寄存器CVRm (m=0, 1 ~ N-l )又由N个寄存器(VRk [m], k=0, 1 ~ N-l)和 一个列写片选信号组成,每个寄存器有B (B为正整数)位。每个行向量寄 存器和每个列向量寄存器既与读访问端口相连,又与写访问端口相连。矩 阵寄存器文件能存放J行^列大小的矩阵数据(1《J《N、 1《H《N,且为 整数)。
读访问端口由读译码选择器、读出数据缓冲器和读出控制器组成。读 译码选择器与读出数据缓冲器、读出控制器和矩阵寄存器文件存储体相连, 即读译码选择器的输入既与矩阵寄存器文件存储体中的每个行向量寄存器 相连,又与每个列向量寄存器相连,输出与读出数据缓冲器相连。读译码 选择器从向量微处理器的指令译码部件接受读行列模式信号,从读出控制 器接受读向量地址,根据读行列模式信号和读向量地址进行行或列向量地 址译码并选择存储体中的某一行向量(或列向量)数据作为输出送给读出
数据缓冲器。
读出数据缓冲器由1个缓冲器空满标志位和N个B位的寄存器构成, 既与读译码选择器的输出相连,又与读出控制器相连。当系统复位有效时, 读出数据缓冲器置缓冲器空满标志位为空;当接收到读出控制器发来的数 据缓冲器写信号有效时,读译码选择器的输出值被写入读出数据缓冲器,并输出到读出数据总线等待向量运算阵列或存储器读取,同时置缓冲器空 满标志位为满。
读出控制器与读译码选择器和读出数据缓冲器相连,由l个读状态机、 1个读计数器和1个读加法器组成。它从向量微处理器的指令译码部件接受 读请求、读行列模式、行读起始地址、列读起始地址、行读向量数、列读 向量数和系统复位信号,从向量运算阵列或存储器接受向量读使能信号, 控制读译码选择器和读出数据缓冲器的操作。读状态机和读计数器控制矩 阵的读访问过程,读加法器负责改变读飞方问过程中读译码选择器的读向量 地址。
读状态机由读端口空闲、读地址译码和读出三个状态组成,其状态转
换过程是当从指令译码部件收到系统复位信号有效时,读状态机置读端 口忙信号无效,置缓冲器空满标志位为空,读计数器清O,进入读端口空闲
状态;在空闲状态若收到来自指令译码部件的读请求信号有效,则启动读 搡作,置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根 据读行列模式选择行读向量数或列读向量数作为读向量数,根据读行列模 式选择行读起始地址或列读起始地址作为读向量地址,输出到读译码选择 器,读译码选择器根据读行列模式和读向量地址完成行向量或列向量地址 译码和向量的选择,并输出选中的某一行向量或列向量。此时若缓冲器空 满标志位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选 择器的输出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满 标志位为满,读加法器对读向量地址进行加l操作,读计数器加l;若检测 到向量读使能有效,则判断读计数器是否达到读向量数,若没有,下一拍置缓冲器空满标志位为空,回到读地址译码状态;若达到读向量数,下一 拍置读端口忙信号为无效,置缓冲器空满标志位为空,读计数器清o,返回 读端口空闲状态,结束本次矩阵读操作。
读访问端口能根据来自指令译码部件和向量运算阵列(或存储器)的 控制信号,用多个时钟周期(时钟周期数大于等于矩阵的行读向量数或列 读向量数+3拍)来完成矩阵的整体读操作,即在读出控制器的控制下,以
流水方式每一拍读出矩阵寄存器的某一行或列向量寄存器,同时按顺序递 增行/列地址,直到行/列向量全部读出,完成整个矩阵的读访问。
写访问端口由写地址译码器和写入控制器组成。写地址译码器既与矩 阵寄存器文件存储体内所有行向量寄存器和所有列向量寄存器相连,又与
写入控制器相连,它从指令译码部件接受写行列模式信号,从向量运算阵 列或存储器接受写数据和写数据有效信号,根据写行列模式和写入控制器 产生的写向量地址完成地址译码,向矩阵寄存器文件存储体输出一个有效 的行写片选信号或l个有效的列写片选信号,当收到写入控制器输出的数 据写使能信号有效时,将写数据总线上的数据写入行写片选信号或列写片 选信号选中的行向量或列向量寄存器中。
写入控制器与写地址译码器相连,它由l个写状态机、 一个写计数器 和1个写加法器组成。写入控制器从向量微处理器的指令译码部件接受写 请求、写行列模式、行写起始地址、列写起始地址、行写向量数、列写向 量数和系统复位信号,从向量运算阵列或存储器接受写数据有效信号。写 状态机和写计数器控制矩阵的写访问过程,写加法器在写状态机的控制下 改变写访问过程中写地址译码器的写向量地址。写状态机由写端口空闲、写地址译码和写入三个状态组成,其状态转 换过程是当从指令译码部件收到系统复位信号有效时,置写端口忙信号 无效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若检测
到来自指令译码部件的写请求有效,启动写操作置写端口忙信号有效, 进入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行 列模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据 写行列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列 模式选择行写起始地址或列写起始地址作为写向量地址,将写向量地址发 送给写地址译码器进行写地址译码,若检测到写数据有效信号有效,则向 写地址译码器输出数据写使能信号有效,进入写入状态;将写数据总线上 的数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或 列向量寄存器中,同时写加法器对写向量地址加l,写计数器加l,并判断 写计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不 等于,则下一拍置写端口忙信号为无效,清写计数器为0,回到写端口空闲 状态,结東本次矩阵的写访问。
写访问端口根据能根据来自指令译码部件和向量运算阵列(或存储器) 的控制信号,用多个时钟周期(时钟周期数大于等于矩阵的行写向量数(列 写向量数)+2拍)完成矩阵的行或列向量的写入,即用流水的方式每拍写 入矩阵寄存器的一个行或向量,同时按顺序递增写向量地址,直到写入全 部行或向量寄存器,完成整个矩阵的一次写入操作。
釆用本发明的向量微处理器直接支持矩阵运算和操作,其指令集增加 以下四条矩阵指令矩阵乘法、矩阵加法、矩阵装载、矩阵存储指令。1、 矩阵乘法指令
MRMUL MAR1[J,H,Vaddl,CVaddl], MAR2[H,K,Vadd2,CVadd2], MAR3[J,H,Vadd3,CV"dd3] 意思是将矩阵寄存器文件MAR1中行读起始地址为Vaddl、列读起始地址为 CVaddl、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2 中行读起始地址为Vadd2、列读起始地址为CVadd2、行读向量数为H、列读 向量数为K的矩阵相乘,结果矩阵存入行读起始地址为Vadd3、列读起始地 址为CVadd3的矩阵寄存器文件MAR3中,矩阵数据为J行、H列。
2、 矩阵加法指令
MRADD MAR1[J, H, Vaddl, CVflddl], MAR2[J, H, V。dd2, CV"dd2], MAR3[J, H, Vadd3, CVfldd3] 意思是将矩阵寄存器文件MAR1中行读起始地址为Vaddl、列读起始地址为
CVaddl、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2
中行读起始地址为Vadd2、列读起始地址CVadd2、行读向量数为J、列读向
量数为H的矩阵相加,结果存入起始行地址为Vadd3、列起始地址为CVadd3
的矩阵寄存器文件MAR3中,矩阵数据仍为J行、H列。
3、 矩阵装载指令
(1 ) LDVMR MARn [J, H, Vaddl, CVaddl] , AR ( n为正整数) 意思是将AR寄存器给出的起始地址开始对应的J个行向量数据(每个行向 量有H个有效数据)按行写操作模式载入行起始地址为Vaddl、列起始地址 为CVaddl的第n个矩阵寄存器文件MARn中;矩阵有效数据J行、H列。
(2 ) LDCMR MARn [J, H, Vaddl, CVaddl] , AR ( n为正整数) 意思是将AR寄存器给出的起始地址开始对应的H个列向量数据(每个列向 量有J个有效数据)按列载入列起始地址为CVaddl、行起始地址为Vaddl 的第n个矩阵寄存器文件MARn中;矩阵有效数据J行、H列。4、矩阵存储指令
(1) STVMR MARn [J, H, Vaddl, CVaddl], Rd
意思是将矩阵寄存器文件MARn中行起始地址为Vaddl、列起始地址为 CVaddl的J个行向量数据(每个行向量有H个有效数据)按行写操作模式 写入由Rd寄存器给出的起始地址对应的存储器中。 (2 ) STCMR MARn [J,H,Vaddl,CVaddl], Rd
意思是将矩阵寄存器文件MARn中列起始地址为CVaddl、行起始地址为 Vaddl、 H个列向量数据(每个列向量有J个有效数据)按列写搡作模式写 入由Rd寄存器给出的起始地址对应的存储器中。
涉及以上矩阵操作指令的矩阵寄存器文件的读搡作过程是
1 指令译码部件对矩阵读搡作指令译码,从指令中抽取指定源矩阵寄 存器文件的读请求、读行列模式、行读起始地址、行读向量数、列 读起始地址、列读向量数、系统复位这些信号,同时检测读端口忙 信号是否为无效(即读访问端口不忙),是则将抽取的这些信号送往 指定矩阵寄存器文件的读访问端口 。
2 读访问端口的读出控制器接到读请求信号,置读端口忙信号有效, 启动矩阵读操作
2. 1根据读行列模式选择是行向量读操作还是列向量读操作,若是行向 量读操作,则以行读起始地址为读向量地址,行读向量数为读向量数, 若是列向量读操作,则以列读起始地址作为读向量地址,列读向量数为
读向量数;
2. 2读译码选择器根据读向量地址进行译码,将输出选择的一个行向量或列向量寄存器的数据在缓冲器空满标志位为空时写入读出数据缓存 器,然后置读数据有效信号有效,置缓冲器空满标志位为满,等待外部 的向量读使能信号有效;
2.3若向量读使能有效,表示数据被读走,则下一拍置读数据有效信号 无效,置缓冲器空满标志位为空;读出控制器对读向量地址加1,读计 数器加l。
3 读出控制器内的读状态机判断其读计数器的值是否达到读向量数,
若未达到则重复步骤2.2和2. 3;否则结東本次矩阵读操作,置读端
口忙信号无效,表示读访问端口空闲,回到步骤l,准备接收下一次
矩阵读操作。 矩阵寄存器文件的写操作步骤具体如下
(1) 指令译码部件对矩阵写操作指令译码,从指令中抽取目标矩阵寄存器 文件写请求、写行列模式、行写起始地址、行写向量数,列写起始地 址、列写向量数、系统复位信号,同时检测写访问端口的写端口忙信 号是否无效(即写访问端口不忙),是则将抽取的这些信号送往目标 矩阵寄存器文件的写访问端口 。
(2) 写访问端口的写入控制器接收到写请求信号有效时,置写端口忙信号 有效,(表示写访问端口忙,不再接收新的写请求)启动矩阵写搡作:
(2.1)根据写行列模式选择是行向量写操作还是列向量写操作,若是
行向量写操作,则以行写起始地址为写向量地址,行写向量数为写向量 数,若是列向量写操作,则以列写起始地址作为写向量地址,列写向量 数为写向量数;(2.2)写地址译码器根据写行列模式和写向量地址进行行向量或列向 量地址译码。当来自存储器或向量运算阵列的写数据有效信号有效时, 写入控制器置数据写使能信号有效,将写数据写入写地址译码器选中的
行向量或列向量寄存器中,同时将写向量地址加l,写计数器加l; (2. 3)写入控制器内的写状态机判断写计数器的值是否达到矩阵的写 向量数,若没达到,则重复步骤(2.2)和(2. 3);否则置写端口忙信 号无效,回到步骤(l),完成本次矩阵写操作,准备接收下一次矩阵写 操作。
由上述过程可知,本发明直接支持整体矩阵数据的读写访问搡作,实 现矩阵操作指令时不需要分别读取和译码多条矩阵的行、列向量操作指令, 使用单条矩阵操作指令就可实现整个矩阵所有的行、列的读操作和所有矩 阵行的写操作。
釆用本发明能产生如下技术效果
(1) 不仅支持向量运算,还可直接支持单指令形式的矩阵操作指令,即支 持单条指令对矩阵整体的行/列读操作,或单条指令对矩阵整体的写操作。 将同等规模大小的矩阵运算需进行的多次取指、译码操作减少为 一次取值、 译码,降低了同等规模大小矩阵运算的功耗,提高了矩阵运算的效率。对 于VA (J行H列)和矩阵VB (H行K列)的矩阵乘法运算只需一条矩阵运 算指令即可完成,比原来的向量寄存器文件少J化-l条。
(2) 节省了代码量,提高了代码密度,降低了存储器开销。
(3) 支持矩阵寄存器文件的行、列向量的读访问使得矩阵运算不需要进行 额外的矩阵转置搡作。


图1是现有向量寄存器文件与向量微处理器其他部件接口示意图。
图2是本发明矩阵寄存器文件的逻辑结构框图。 图3是本发明矩阵寄存器文件存储体逻辑结构图。 图4是本发明读出控制器中读状态机的状态转换图。 图5是本发明写入控制器中写状态机的状态转换图。
图l是现有向量寄存器文件与向量微处理器中其他部件的接口示意图。 该向量微处理器包括指令译码部件、 一个向量运算阵列、片内存储器、直 接存储器访问控制器(DMA)和n个向量寄存器文件。指令译码部件对从取 指部件来的矩阵指令进行译码,将译码后的各控制信号分别发送到向量寄 存器文件和向量运算阵列。向量运算阵列、片内存储器、DMA和向量寄存器 文件通过片内资源总线交换数据。DMA实现成组的片内外存储器数据传输。 向量寄存器文件存放和提供向量微处理器运行时所需的矩阵数据。若需要 进行向量寄存器文件的读操作,源搡作数从指定源向量寄存器文件的位置 中读出,通过片内资源总线或送往向量运算阵列进行运算、或写入片内存 储器、或通过DMA写入片外存储器。若需要进行向量寄存器文件的加载或 写访问操作,则将片内存储器读出的向量数据或向量运算阵列的运算结果 写入向量指令指定的向量寄存器文件的相应行中。
图2是本发明矩阵寄存器文件的逻辑结构框图。它与向量微处理器中
其他部件的连接方式与图l所示向量寄存器文件的一样。矩阵寄存器文件 由l个读访问端口、l个写访问端口和矩阵寄存器文件存储体组成。读访问端口由读译码选择器、读出控制器、读出数据缓冲器组成。其 中,输入端口信号读请求、读行列模式、行读起始地址、行读向量数、列 读起始地址、列读向量数,向量读使能,系统复位均与读出控制器相连; 输出信号读端口忙信号、读数据有效与读出控制器相连,读出数据总线与 读出数据缓冲器相连。读译码选择器还与矩阵寄存器文件存储体的每个行 向量寄存器、列向量寄存器相连,它根据读向量地址进行读向量地址译码, 输出选中的行向量或列向量寄存器。读出控制器由读状态机、读计数器和 读加法器组成,它与读出控制器和读出数据缓冲器相连,控制读操作的复 位、启动、结東。
写访问端口由写地址译码器、写入控制器组成。其中,输入信号写
请求、写数据有效、写行列模式、行写起始地址、列写起始地址、行写向
量数、列写向量数、系统复位与写入控制器相连;输出信号写端口忙信号
与写入控制器相连。写数据总线与矩阵寄存器文件内所有的行向量和列向
量寄存器相连;写地址译码器根据写行列模式和写向量地址完成地址译码,
输出有效的行写片选信号或列写片选信号,选择欲写的行向量或列向量。 写入控制器由写状态机、写计数器和写激发起组成,与写地址译码器相连, 控制写操作的复位、启动、结東。
图3是矩阵寄存器文件存储体逻辑结构图。该存储体由N个行向量寄 存器VR广VRh (或N个列向量CVR广CVRh)组成。每个行向量寄存器VRi
(i =0,1~N-1)又由N个寄存器(VRi[j], j=0,l~N-1)和一个行写片选 信号组成,每个列向量寄存器CVl (m=0,l~N-l)又由N个寄存器
(VRk[m],k-0,l~N-l)和一个列写片选信号组成。每个寄存器有B位。每端口相连。每个行向量寄 存器和每个列向量寄存器均与写数据总线和写地址译码器相连。N个行向量 寄存器分别与写地址译码器的N条行写片选信号线(第0, 1, ......N-l条)
相连;N个列向量寄存器分别与写地址译码器的N条列写片选信号线(第0, 1, ......N-l条)相连。通过写访问端口内的写入控制器控制矩阵数据中所
有的行向量或列向量寄存器的连续写入。每个行向量、列向量寄存器与读 访问端口的读译码选择器相连,并通过读出控制器控制矩阵的读访问过程。 图4是矩阵寄存器文件的读访问端口读出控制器中读状态机的状态转 换图,由读端口空闲、读地址译码和读出三个状态组成,其状态转换过程 是当从指令译码部件收到系统复位信号有效时,读状态机置读端口忙信 号无效,置缓冲器空满标志位为空,读计数器清O,进入读端口空闲状态; 在空闲状态若收到来自指令译码部件的读请求信号有效,则启动读操作, 置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根据读行 列模式选择行读向量数或列读向量数作为读向量数,根据读行列模式选择 行读起始地址或列读起始地址作为读向量地址,输出到读译码选择器,读 译码选择器根据读行列模式和读向量地址完成行向量或列向量地址译码和
向量的选择,并输出选中的某一行向量或列向量。此时若缓冲器空满标志 位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选择器的 输出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满标志位 为满,读加法器对读向量地址进行加l操作,读计数器加l;若检测到向量 读使能有效,则判断读计数器是否达到读向量数,若没有,下一拍置缓冲 器空满标志位为空,回到读地址译码状态;若达到读向量数,下一拍置读端口忙信号为无效,置缓冲器空满标志位为空,读计数器清o,返回读端口 空闲状态,结東本次矩阵读搡作。
图5是矩阵寄存器文件写访问端口的写入控制器中写状态机的状态转
换图,共有3个状态写端口空闲、写地址译码和写入状态。其状态转换
过程是当从指令译码部件收到系统复位信号有效时,置写端口忙信号无
效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若检测到 来自指令译码部件的写请求有效,启动写操作置写端口忙信号有效,进 入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行列 模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据写 行列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列模 式选择行写起始地址或列写起始地址作为写向量地址,将写向量地址发送 给写地址译码器进行写地址译码,若检测到写数据有效信号有效,则向写 地址译码器输出数据写使能信号有效,进入写入状态;将写数据总线上的 数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或列 向量寄存器中,同时写加法器对写向量地址加l,写计数器加l,并判断写 计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不等 于,则下一拍置写端口忙信号为无效,清写计数器为0,回到写端口空闲状 态,结東本次矩阵的写访问。
权利要求
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. 如权利要求l所述的支持矩阵整体读写操作的矩阵寄存器文件,其 特征在于所述读状态机由读端口空闲、读地址译码和读出三个状态组成,其 状态转换过程是当从指令译码部件收到系统复位信号有效时,读状态机置 读端口忙信号无效,置缓冲器空满标志位为空,读计数器清O,进入读端口空闲状态;在空闲状态若收到来自指令译码部件的读请求信号有效,则启动 读操作,置读端口忙信号有效,进入读地址译码状态;在读地址译码状态根 据读行列模式选择行读向量数或列读向量数作为读向量数,根据读行列模式 选择行读起始地址或列读起始地址作为读向量地址,输出到读译码选择器, 读译码选择器根据读行列模式和读向量地址完成行向量或列向量地址译码 和向量的选择,并输出选中的某一行向量或列向量,此时若缓冲器空满标志 位为空,则置数据缓冲器写信号有效,进入读出状态;将读译码选择器的输 出写入读出数据缓冲器,置读数据有效信号有效,置缓冲器空满标志位为满, 读加法器对读向量地址进行加l搡作,读计数器加l;若检测到向量读使能 有效,则判断读计数器是否达到读向量数,若没有,下一拍置缓冲器空满标 志位为空,回到读地址译码状态;若达到读向量数,下一拍置读端口忙信号 为无效,置缓冲器空满标志位为空,读计数器清0,返回读端口空闲状态, 结東本次矩阵读操作;
3. 如权利要求l所述的支持矩阵整体读写操作的矩阵寄存器文件,其 特征在于所述写状态机由写端口空闲、写地址译码和写入三个状态组成,其 状态转换过程是当从指令译码部件收到系统复位信号有效时,置写端口忙 信号无效,清写计数器为0,进入写端口空闲状态;在写端口空闲状态,若 检测到来自指令译码部件的写请求有效,启动写操作置写端口忙信号有效,进入写地址译码状态;在写地址译码状态,接收来自指令译码部件的写行列 模式、行写起始地址、列写起始地址、行写向量数,列写向量数,根据写行 列模式选择行写向量数或列写向量数作为写向量数,同时根据写行列模式选 择行写起始地址或列写起始地址作为写向量地址,将写向量地址发送给写地 址译码器进行写地址译码,若检测到写数据有效信号有效,则向写地址译码器输出数据写使能信号有效,进入写入状态;在写入状态,将写数据总线上的数据写入写地址译码器输出的行写片选信号或列写片选信号选中的行或 列向量寄存器中,同时写加法器对写向量地址加l,写计数器加l,并判断 写计数器是否等于写向量数,若等于,下一拍回到写地址译码状态,若不等于,则下一拍置写端口忙信号为无效,清写计数器为o,回到写端口空闲状态,结束本次矩阵的写访问。
4. 如权利要求l所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵乘法指令为MRMUL MARl[J,H,Va础,CVcrddl],MAR2[H,K,Vodd2,CVadd2],MAR3[J,H,Vadd3,CVadd3〗意思是将矩阵寄存器文件MAR1中行读起始地址为Vaddl、列读起始地址为CVaddl、 行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2中行读起始 地址为Vadd2、列读起始地址为CVadd2、行读向量数为H、列读向量数为K 的矩阵相乘,结果矩阵存入行读起始地址为Vadd3、列读起始地址为CVadd3 的矩阵寄存器文件MAR3中,矩阵数据为J行、H列。
5. 如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其特征在于所述矩阵加法指令为MRADD MAR1[J, H, Vaddl, CVaddl〗,MAR2[J, H, Vadd2, CVadd2], MAR3[J, H, Vadd3, CVadd3]意思是将矩阵寄存器文件MAR1中行读起始地址为Vaddl、列读起始地址为CVaddl、行读向量数为J、列读向量数为H的矩阵与矩阵寄存器文件MAR2 中行读起始地址为Vadd2、列读起始地址CVadd2、行读向量数为J、列读向 量数为H的矩阵相加,结果存入起始行地址为Vadd3、列起始地址为CVadd3 的矩阵寄存器文件MAR3中,矩阵数据仍为J行、H列。
6. 如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其 特征在于所述矩阵装载指令有两条第一条为L,R MARn [J, H, Vaddl, CVaddl] , AR , n为正整数,意思是 将AR寄存器给出的起始地址开始对应的J个行向量数据一每个行向量有H 个有效数据,按行写操作模式载入行起始地址为Vaddl、列起始地址为CVaddl 的第n个矩阵寄存器文件MARn中;第二条为LDCMR MARn [J, H, Vaddl, CVaddl] , AR,意思是将AR寄存器给 出的起始地址开始对应的H个列向量数据一每个列向量有J个有效数据,按 列载入列起始地址为CVaddl、行起始地址为Vaddl的第n个矩阵寄存器文件 MARn中。
7. 如权利要求1所述的支持矩阵整体读写操作的矩阵寄存器文件,其 特征在于所述矩阵存储指令有两条第一条为STVMR MARn [J, H, Vaddl, CVaddl] , Rd,意思是将矩阵寄存器文 件MARn中行起始地址为Vaddl 、列起始地址为CVaddl的J个行向量数据一 每个行向量有H个有效数据,按行写操作模式写入由Rd寄存器给出的起始 地址对应的存储器中;第二条为STCMRMARn [J, H, Vaddl, CVaddl] , Rd,意思是将矩阵寄存器文 件MARn中列起始地址为CVaddl 、行起始地址为Vaddl 、 H个列向量数据一每个列向量有J个有效数据,按列写操作模式写入由Rd寄存器给出的起始地址对应的存储器中。
全文摘要
本发明公开了一种支持矩阵整体读写操作的矩阵寄存器文件,要解决的技术问题是提供一种支持整体矩阵的所有行或列数据的一次性读操作和整体矩阵的所有行或列数据的一次性写操作的矩阵寄存器文件。技术方案是它由矩阵寄存器文件存储体、1个读访问端口和1个写访问端口组成;读访问端口由读行列地址译码器、读出数据缓冲器和读出控制器组成,读出控制器由1个读状态机、1个读计数器和1个读加法器组成;写访问端口由写地址译码器和写入控制器组成,写入控制器由1个写状态机、一个写计数器和1个写加法器组成。使用本发明时,采用单条矩阵指令就能实现整体的矩阵运算,从而提高了代码密度,降低了存储器开销和系统功耗。
文档编号G06F9/30GK101620524SQ20091004382
公开日2010年1月6日 申请日期2009年7月3日 优先权日2009年7月3日
发明者万江华, 刘衡竹, 孙永节, 彭元喜, 陈书明, 陈吉华, 陈海燕, 陈跃跃 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1