CN107305538B - 一种子矩阵运算装置及方法 - Google Patents
一种子矩阵运算装置及方法 Download PDFInfo
- Publication number
- CN107305538B CN107305538B CN201610258546.6A CN201610258546A CN107305538B CN 107305538 B CN107305538 B CN 107305538B CN 201610258546 A CN201610258546 A CN 201610258546A CN 107305538 B CN107305538 B CN 107305538B
- Authority
- CN
- China
- Prior art keywords
- matrix
- sub
- submatrix
- instruction
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种子矩阵运算装置及方法,其中,装置包括存储单元、寄存器单元和子矩阵运算单元,存储单元中存储有子矩阵数据,寄存器单元中存储有子矩阵信息,子矩阵运算单元根据子矩阵运算指令在寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中获取相应的子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。本公开将参与计算的子矩阵数据暂存在高速暂存存储器上,使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量子矩阵计算任务的执行性能。
Description
技术领域
本公开属于计算机领域,尤其涉及一种子矩阵运算装置及方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算。
背景技术
当前计算机领域有越来越多的算法涉及到矩阵运算,包括人工神经网络算法和图形的渲染算法。与此同时,作为矩阵运算中的一个重要组成部分,子矩阵运算也越来越频繁的出现在各种计算任务中。所以对于那些面向解决矩阵运算问题的方案,必须同时考虑子矩阵运算实现的效率和难度。
在现有技术中一种进行子矩阵运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行子矩阵运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行子矩阵运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈,同时,实现子矩阵运算的代码量也大于正常的矩阵运算。
在另一种现有技术中,使用图形处理器(GPU)来进行子矩阵计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行子矩阵运算。然而,上述方案中,GPU片上缓存太小,在进行大规模子矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的矩阵运算装置来进行子矩阵计算,其中,使用定制的寄存器堆和定制的处理单元进行子矩阵运算。然而,目前已有的专用矩阵运算装置受限于寄存器堆,不能够灵活地支持不同长度的子矩阵运算。
综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联,图形处理器都无法进行高效的子矩阵运算,并且这些现有技术在处理子矩阵运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的子矩阵规模不够灵活等问题。
发明内容
(一)要解决的技术问题
本公开提供一种子矩阵运算装置及方法,能配合子矩阵运算指令集,高效地实现各种子矩阵运算。
(二)技术方案
本公开提供一种子矩阵运算装置,包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从所述寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在所述存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
在进一步的实施方案中,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,所述操作域用于指示该子矩阵运算指令的数据信息。
在进一步的实施方案中,所述数据信息包括寄存器单元的编号,所述子矩阵运算单元根据寄存器单元的编号访问对应的寄存器单元,从而获取子矩阵信息。
在进一步的实施方案中,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
在进一步的实施方案中,还包括:指令处理单元,用于获取子矩阵运算指令,并对该子矩阵运算指令进行处理后,提供给所述子矩阵运算单元。
在进一步的实施方案中,所述指令处理单元包括:取指模块,用于获取子矩阵运算指令;译码模块,用于对获取的子矩阵运算指令进行译码;指令队列,用于对译码后的子矩阵运算指令进行顺序存储;依赖关系处理单元,用于在所述子矩阵运算单元获取子矩阵运算指令前,判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在所述存储队列中,等待前一子矩阵运算指令执行完毕后,再将所述存储队列中的该子矩阵运算指令提供给所述子矩阵运算单元,否则,直接将该子矩阵运算指令提供给所述子矩阵运算单元。
在进一步的实施方案中,所述存储单元还用于存储所述子矩阵运算结果。
在进一步的实施方案中,还包括:输入输出单元,用于将矩阵数据存储于所述存储单元,或者,从所述存储单元中获取子矩阵运算结果。
在进一步的实施方案中,所述存储单元为高速暂存存储器。
在进一步的实施方案中,所述子矩阵运算单元包括子矩阵加法部件、子矩阵乘法部件、大小比较部件、非线性运算部件和子矩阵标量乘法部件。
在进一步的实施方案中,所述子矩阵运算单元为多流水级结构,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,所述子矩阵加法部件和子矩阵乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和子矩阵标量乘法部件处于第三流水级。
在进一步的实施方案中,所述子矩阵运算指令包括以下至少一种:
子矩阵乘向量指令,根据该指令,从存储单元的指定起始地址,根据指令中子矩阵的行宽、列宽和行间距取出指定的子矩阵数据,同时取出向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将结果写回至存储单元的指定地址;
向量乘子矩阵指令,根据该指令,从存储单元的指定地址取出向量数据,同时根据指令中的子矩阵起始地址、子矩阵的行宽和列宽以及子矩阵的行间距取出指定的子矩阵,在矩阵单元中进行向量乘子矩阵的乘法运算,并将结果写回至存储单元的指定地址;
子矩阵乘标量指令,根据该指令,从存储单元的指定地址,根据指令中的子矩阵的行宽和列宽以及子矩阵的行间距,取出指定的子矩阵数据,从寄存器单元的指定地址中取出指定的标量数据,在矩阵运算单元中进行子矩阵乘标量的运算,并将结果写回至存储单元的指定地址;
张量运算指令,根据该指令,从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行张量运算,并将计算结果写回至存储单元的指定地址;
子矩阵加法指令(SMA),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行加法运算,并将计算结果写回至存储单元的指定地址;
子矩阵减法指令(SMS),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行减法运算,并将计算结果写回至存储单元的指定地址;
子矩阵乘法指令(SMM),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行对位乘法运算,并将计算结果写回至存储单元的指定地址;
卷积指令(CONV),根据该指令,实现用卷积核对矩阵进行卷积滤波,装置从存储单元取出指定的卷积核矩阵,从待卷积矩阵存储的起始地址开始,对当前位置下卷积核覆盖的子矩阵数据进行滤波,得到当前位置的滤波结果,将结果写回至存储单元的指定地址,然后根据指令中给定的位移参数,在待卷积矩阵上移动至下一位置,重复上面的运算,直到移动至结束位置;
子矩阵搬运指令,根据该指令,将存储单元中存储的指定子矩阵存至存储单元的另一处地址。
本公开还提供一种应用以上任一所述子矩阵运算装置极性子矩阵运算方法,方法包括:
存储单元存储矩阵数据;
寄存器单元存储子矩阵信息;
子矩阵运算单元获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵信息,然后,根据该子矩阵信息从存储的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
在进一步的实施方案中,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
在进一步的实施方案中,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
在进一步的实施方案中,在寄存器单元存储子矩阵信息之后,还包括:
通过取指模块获取子矩阵运算指令;
通过译码模块对获取的子矩阵运算指令进行译码;
依赖关系处理单元判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在一存储队列中,等待前一子矩阵运算指令执行完毕后,再将执行下一步骤,否则,直接执行下一步骤。
在进一步的实施方案中,包括步骤,在得到子矩阵运算结果后,在存储单元存储所述子矩阵运算结果。
在进一步的实施方案中,还包括:步骤:存储所述子矩阵运算结果后,通过输入输出单元获取存储的子矩阵运算结果。
在进一步的实施方案中,所述子矩阵运算包括子矩阵加法运算、子矩阵乘法运算、大小比较运算、非线性运算和子矩阵标量乘法运算。
在进一步的实施方案中,采用多流水级结构进行所述子矩阵运算,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,在所述第一流水级进行子矩阵加法运算和子矩阵乘法运算,在所述第二流水级进行大小比较运算,在所述第三流水级进行非线性运算和子矩阵标量乘法运算。
在进一步的实施方案中,所述子矩阵运算指令包括以下至少一种:
子矩阵乘向量指令,根据该指令,从存储单元的指定起始地址,根据指令中子矩阵的行宽、列宽和行间距取出指定的子矩阵数据,同时取出向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将结果写回至存储单元的指定地址;
向量乘子矩阵指令,根据该指令,从存储单元的指定地址取出向量数据,同时根据指令中的子矩阵起始地址、子矩阵的行宽和列宽以及子矩阵的行间距取出指定的子矩阵,在矩阵单元中进行向量乘子矩阵的乘法运算,并将结果写回至存储单元的指定地址;
子矩阵乘标量指令,根据该指令,从存储单元的指定地址,根据指令中的子矩阵的行宽和列宽以及子矩阵的行间距,取出指定的子矩阵数据,从寄存器单元的指定地址中取出指定的标量数据,在矩阵运算单元中进行子矩阵乘标量的运算,并将结果写回至存储单元的指定地址;
张量运算指令,根据该指令,从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行张量运算,并将计算结果写回至存储单元的指定地址;
子矩阵加法指令(SMA),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行加法运算,并将计算结果写回至存储单元的指定地址;
子矩阵减法指令(SMS),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行减法运算,并将计算结果写回至存储单元的指定地址;
子矩阵乘法指令(SMM),根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行对位乘法运算,并将计算结果写回至存储单元的指定地址;
卷积指令(CONV),根据该指令,实现用卷积核对矩阵进行卷积滤波,装置从存储单元取出指定的卷积核矩阵,从待卷积矩阵存储的起始地址开始,对当前位置下卷积核覆盖的子矩阵数据进行滤波,得到当前位置的滤波结果,将结果写回至存储单元的指定地址,然后根据指令中给定的位移参数,在待卷积矩阵上移动至下一位置,重复上面的运算,直到移动至结束位置;
子矩阵搬运指令,根据该指令,将存储单元中存储的指定子矩阵存至存储单元的另一处地址。
(三)有益效果
本公开提供的子矩阵运算装置,将参与计算的子矩阵数据暂存在高速暂存存储器上(Scratchpad Memory),使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵计算任务的执行性能,本公开采用的指令集使用方便、支持的矩阵长度灵活。
附图说明
图1是是本公开提供的子矩阵运算装置的示意图。
图2是本公开提供的指令集格式示意图。
图3是本公开一个子矩阵的示意图。
图4是本公开实施例提供的子矩阵运算装置的示意图。
图5是本公开实施例提供的子矩阵运算装置执行子矩阵乘子矩阵指令的流程图。
图6是本公开实施例中矩阵数据和子矩阵数据的示意图。
图7是本公开实施例提供的子矩阵运算装置执行卷积神经网络运算的流程图。
具体实施方式
本公开提供一种子矩阵运算装置及方法,包括存储单元、寄存器单元和子矩阵运算单元,存储单元中存储有子矩阵数据,寄存器单元中存储有子矩阵信息,子矩阵运算单元根据子矩阵运算指令在寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中获取相应的子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。本公开将参与计算的子矩阵数据暂存在高速暂存存储器上,使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量子矩阵计算任务的执行性能。其中高速暂存存储器可以通过各种不同存储器件(SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等)实现。
图1是本公开提供的子矩阵运算装置的示意图,如图1所示,装置包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息,在具体应用中,可以包括由多个寄存器单元组成一个寄存器堆,每个寄存器单元存储有不同的子矩阵信息,需要说明书的是,子矩阵信息均为标量数据;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
本公开实施例中,所述存储单元优选的为高速暂存存储器。
图2是本公开提供的指令集格式示意图,如图2所示,子矩阵指令集采用超长指令集架构(Very Long Instruction Word)。子矩阵运算指令包括一操作码和多个操作域,其中,操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息,数据信息为寄存器单元的编号或者立即数,子矩阵运算单元根据寄存器单元的编号访问对应的寄存器单元,从而获取子矩阵信息,或者,子矩阵运算单元也可以直接将立即数作为子矩阵数据进行相应的子矩阵运算。
需要说明的是,针对不同功能的运算指令,其操作码也不同,具体地,在本公开提供的一套指令集中,包含有不同功能的子矩阵运算指令:
子矩阵乘向量指令(SMMV),根据该指令,装置从高速暂存存储器的指定起始地址,根据指令中子矩阵的行宽、列宽和行间距取出指定的子矩阵数据,同时取出向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
向量乘子矩阵指令(VMSM),根据该指令,装置从高速暂存存储器的指定地址取出向量数据,同时根据指令中的子矩阵起始地址、子矩阵的行宽和列宽以及子矩阵的行间距取出指定的子矩阵,在矩阵单元中进行向量乘子矩阵的乘法运算,并将结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
子矩阵乘标量指令(SMMS),根据该指令,装置从高速暂存存储器的指定地址,根据指令中的子矩阵的行宽和列宽以及子矩阵的行间距,取出指定的子矩阵数据,从标量寄存器堆的指定地址中取出指定的标量数据,在矩阵运算单元中进行子矩阵乘标量的运算,并将结果写回至高速暂存存储器的指定地址,需要说明的是,标量寄存器堆不仅存储有子矩阵的各种数据信息(包括起始地址、行宽、列宽和行间距),还存有标量数据本身。
张量运算指令(TENS),根据该指令,装置从高速暂存存储器取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行张量运算,并将计算结果写回至高速暂存存储器的指定地址。
子矩阵加法指令(SMA),根据该指令,装置从高速暂存存储器取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行加法运算,并将计算结果写回至高速暂存存储器的指定地址。
子矩阵加法指令(SMS),根据该指令,装置从高速暂存存储器取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行减法运算,并将计算结果写回至高速暂存存储器的指定地址。
子矩阵乘法指令(SMM),根据该指令,装置从高速暂存存储器取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行对位乘法运算,并将计算结果写回至高速暂存存储器的指定地址。
卷积指令(CONV),根据该指令,实现用卷积核对矩阵进行卷积滤波。装置从高速暂存存储器取出指定的卷积核矩阵,从待卷积矩阵存储的起始地址开始,对当前位置下卷积核覆盖的子矩阵数据进行滤波,即在矩阵运算单元中对卷积核和子矩阵进行对位乘法运算,并对得到的矩阵进行元素求和,得到当前位置的滤波结果,将结果写回至高速暂存存储器的指定地址。然后根据指令中给定的位移参数,在待卷积矩阵上移动至下一位置,重复上面的运算,直到移动至结束位置。
子矩阵搬运指令(SMMOVE),根据该指令,装置将高速暂存存储器中存储的指定子矩阵存至高速暂存存储器的另一处地址。
另外,寄存器单元中存储的子矩阵信息包括子矩阵数据在存储单元中的起始地址(start_addr)、子矩阵数据的行宽(iter1)、子矩阵数据的列宽(iter2)、以及行间隔(stride1),其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。如图3所示,矩阵数据实际在存储单元中是以一维的方式存储的,子矩阵的起始地址即图3中子矩阵左上角元素的地址,子矩阵的行宽即图3中子矩阵每一行元素的个数,子矩阵的列宽即图3中子矩阵每一列元素的个数,子矩阵的行间距即图3中子矩阵上一行最后一个元素到下一行第一个元素之间的地址间距。则装置在实际读取子矩阵数据时,只需要从start_addr开始,每读取iter1个数据后跳过stride1个数据再读取iter1个数据,重复iter2次即可获得完整的子矩阵数据。
进一步,子矩阵运算装置还包括指令处理单元,用于获取子矩阵运算指令,并对该子矩阵运算指令进行处理后,提供给子矩阵运算单元。具体地,指令处理单元包括取指模块、译码模块、指令队列及依赖关系处理单元,其中,取指模块获取子矩阵运算指令,译码模块对获取的子矩阵运算指令进行译码,指令队列对译码后的子矩阵运算指令进行顺序存储,依赖关系处理单元在子矩阵运算单元获取子矩阵运算指令前,判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在存储队列中,等待前一子矩阵运算指令执行完毕后,再将所述存储队列中的该子矩阵运算指令提供给所述子矩阵运算单元,否则,直接将该子矩阵运算指令提供给所述子矩阵运算单元。
进一步,存储单元还用于存储子矩阵运算结果,优选地,可采用高速暂存存储器作为存储单元,另外,本公开还包括输入输出单元,其与存储单元直接连接,输入输出单元用于将矩阵数据存储于存储单元,或者,从存储单元中获取子矩阵运算结果。
进一步,子矩阵运算单元包括子矩阵加法部件、子矩阵乘法部件、大小比较部件、非线性运算部件和子矩阵标量乘法部件。并且,子矩阵运算单元为多流水级结构,多流水级结构包括第一流水级、第二流水级和第三流水级,其中,子矩阵加法部件和子矩阵乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和子矩阵标量乘法部件处于第三流水级。
本公开还提供一种子矩阵运算方法,包括:
S1,存储矩阵数据;
S2,存储子矩阵信息;
S3,获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵信息,然后,根据该子矩阵信息从存储的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
进一步,在步骤S3之前,还包括:
获取子矩阵运算指令;
对获取的子矩阵运算指令进行译码;
判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在一存储队列中,等待前一子矩阵运算指令执行完毕后,再将执行所述步骤S3,否则,直接执行步骤S3。
进一步,步骤S3还包括,存储子矩阵运算结果。
进一步,方法还包括:步骤S4,获取存储的子矩阵运算结果。
进一步,子矩阵运算包括子矩阵加法运算、子矩阵乘法运算、大小比较运算、非线性运算和子矩阵标量乘法运算。并且,采用多流水级结构进行子矩阵运算,多流水级结构包括第一流水级、第二流水级和第三流水级,其中,在第一流水级进行子矩阵加法运算和子矩阵乘法运算,在第二流水级进行大小比较运算,在第三流水级进行非线性运算和子矩阵标量乘法运算。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图4是本公开实施例提供的子矩阵运算装置的示意图,如图4所示,装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、矩阵运算单元、高速暂存器、IO内存存取模块,其中:
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列,考虑到不同指令在包含的标量寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令;
标量寄存器堆,提供装置在运算过程中所需的多个标量寄存器;
依赖关系处理单元,该模块处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
矩阵运算单元,该模块负责装置的所有子矩阵运算,包括但不限于子矩阵加法操作、子矩阵加标量操作、子矩阵减法操作、子矩阵减标量操作、子矩阵乘法操作、子矩阵乘标量操作、子矩阵除法(对位相除)操作、子矩阵与操作和子矩阵或操作,子矩阵运算指令被送往该运算单元执行;
高速暂存存储器器,该模块是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图5是本公开实施例提供的矩阵运算装置执行子矩阵乘向量执行的流程图,如图5所示,执行子矩阵乘向量指令的过程包括:
S1,取指模块取出该条子矩阵乘向量指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
S3,在指令队列中,该子矩阵乘向量指令需要从标量寄存器堆中获取指令中操作域所对应的标量寄存器里的数据,包括输入向量地址、输入向量长度、输入子矩阵地址、输入子矩阵行宽、输入子矩阵列宽、输入子矩阵行间距、输出向量地址、输出向量长度。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5,依赖关系不存在后,该条子矩阵乘向量指令被送往矩阵运算单元。矩阵运算单元根据所需数据的位置信息从高速暂存器中取出需要的子矩阵和向量数据,然后在矩阵运算单元中完成乘法运算。
S6,运算完成后,将结果写回至高速暂存存储器的指定地址。
图6为本公开实施例提供的矩阵运算单元进行卷积神经网络运算的方法的流程图,该方法主要由子矩阵运算指令实现。卷积神经网络的运算特征是:对于n×y×x规模的特征图像输入(其中n是输入特征图像数,y是特征图像长,x是特征图像宽),有n×h×w规模的卷积核,卷积核在输入图像上不断移动,在每个位置卷积核与自己所覆盖的输入图像的数据进行卷积运算,得到输出图像上对应的一个点的值。针对这种运算特征,卷积神经网络可以由一条子矩阵卷积指令循环实现。在实际的存储中,如图6所示,数据存储时在图像个数的维度上展开,输入数据图像由n×y×x的三维数组变成y×(x×n)的二维矩阵,相同地,卷积核数据变成h×(w×n)的二维矩阵。如图7所示,实现卷积神经网络的过程包括:
S1,通过IO指令将待卷积的矩阵数据和卷积核矩阵数据存至矩阵专用高速暂存存储器的指定地址;
S2,译码器取出CONV运算指令,根据该指令,矩阵运算单元从高速暂存存储器中读取卷积核矩阵数据和该卷积核在输入图像起始位置的子矩阵数据。
S3,两矩阵数据在矩阵运算单元中进行对位相乘和元素累加求和的运算,并写回结果。然后矩阵运算单元继续读入卷积核,同时根据指令中位移参数得到的下一个待卷积的子矩阵的起始地址,读取数据。
S4,在CONV指令执行过程中,上面过程不断循环,直到完成卷积核在待卷积矩阵最后一个位置上的卷积运算。
S5,通过IO指令将卷积后的结果矩阵存至片外。
需声明,本实施例采用了一种更加高效的方法实现卷积运算,即将三维的输入图像和卷积核均展开成二维形式,实际上,这不是本公开的装置和方法实现卷积运算的唯一方式,一种更通用的方法是对输入的每一张二维图像,与对应的卷积核中的一个面通过子矩阵指令执行卷积运算,得到输出结果的一个部分和,最终的卷积结果是所有的二维图像和与之相对应的卷积核中的面进行卷积运算得到的部分和的累加。故,子矩阵运算指令可以以多种方式实现卷积操作。
综上所述,本公开提供矩阵运算装置,并配合相应的子矩阵运算指令集,能够很好地解决当前计算机领域越来越多的算法包含大量子矩阵运算的问题,相比于已有的传统解决方案,本公开可以具有指令集精简、使用方便、支持的子矩阵规模灵活、片上缓存充足等优点。本公开可以用于多种包含大量子矩阵运算的计算任务,包括目前表现十分出色的人工神经网络算法的反向训练和正向预测。
本公开中各功能单元模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (16)
1.一种子矩阵运算装置,其特征在于,包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、行宽、列宽、以及行间隔,所述行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔,所述子矩阵数据为矩阵数据的子矩阵数据;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从所述寄存器单元中获取子矩阵数据在所述存储单元中的起始地址、行宽、列宽、以及行间隔,然后,从所述起始地址开始,每读取所述行宽个数的数据后跳过所述行间隔个数的数据再读取所述行宽个数的数据,重复列宽个数的次数,获取所述子矩阵数据,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果;
所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,所述操作域用于指示该子矩阵运算指令的数据信息;
其中,所述子矩阵运算指令包括以下至少一种:
子矩阵乘向量指令,根据该指令,从存储单元的指定起始地址,根据指令中子矩阵的行宽、列宽和行间距取出指定的子矩阵数据,同时取出向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将结果写回至存储单元的指定地址;
向量乘子矩阵指令,根据该指令,从存储单元的指定地址取出向量数据,同时根据指令中的子矩阵起始地址、子矩阵的行宽和列宽以及子矩阵的行间距取出指定的子矩阵,在矩阵单元中进行向量乘子矩阵的乘法运算,并将结果写回至存储单元的指定地址;
子矩阵乘标量指令,根据该指令,从存储单元的指定地址,根据指令中的子矩阵的行宽和列宽以及子矩阵的行间距,取出指定的子矩阵数据,从寄存器单元的指定地址中取出指定的标量数据,在矩阵运算单元中进行子矩阵乘标量的运算,并将结果写回至存储单元的指定地址;
张量运算指令,根据该指令,从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行张量运算,并将计算结果写回至存储单元的指定地址;
子矩阵加法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行加法运算,并将计算结果写回至存储单元的指定地址;
子矩阵减法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行减法运算,并将计算结果写回至存储单元的指定地址;
子矩阵乘法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行对位乘法运算,并将计算结果写回至存储单元的指定地址;
卷积指令,根据该指令,实现用卷积核对矩阵进行卷积滤波,装置从存储单元取出指定的卷积核矩阵,从待卷积矩阵存储的起始地址开始,对当前位置下卷积核覆盖的子矩阵数据进行滤波,得到当前位置的滤波结果,将结果写回至存储单元的指定地址,然后根据指令中给定的位移参数,在待卷积矩阵上移动至下一位置,重复上面的运算,直到移动至结束位置;
子矩阵搬运指令,根据该指令,将存储单元中存储的指定子矩阵存至存储单元的另一处地址。
2.根据权利要求1所述的子矩阵运算装置,其特征在于,所述数据信息包括寄存器单元的编号,所述子矩阵运算单元根据寄存器单元的编号访问对应的寄存器单元,从而获取子矩阵信息。
3.根据权利要求1所述的子矩阵运算装置,其特征在于,还包括:
指令处理单元,用于获取子矩阵运算指令,并对该子矩阵运算指令进行处理后,提供给所述子矩阵运算单元。
4.根据权利要求3所述的子矩阵运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于获取子矩阵运算指令;
译码模块,用于对获取的子矩阵运算指令进行译码;
指令队列,用于对译码后的子矩阵运算指令进行顺序存储;
依赖关系处理单元,用于在所述子矩阵运算单元获取子矩阵运算指令前,判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在所述存储队列中,等待前一子矩阵运算指令执行完毕后,再将所述存储队列中的该子矩阵运算指令提供给所述子矩阵运算单元,否则,直接将该子矩阵运算指令提供给所述子矩阵运算单元。
5.根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元还用于存储所述子矩阵运算结果。
6.根据权利要求4所述的子矩阵运算装置,其特征在于,还包括:
输入输出单元,用于将矩阵数据存储于所述存储单元,或者,从所述存储单元中获取子矩阵运算结果。
7.根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元为高速暂存存储器,和/或所述寄存器单元为标量寄存器堆。
8.根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元包括子矩阵加法部件、子矩阵乘法部件、大小比较部件、非线性运算部件和子矩阵标量乘法部件。
9.根据权利要求8所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元为多流水级结构,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,所述子矩阵加法部件和子矩阵乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和子矩阵标量乘法部件处于第三流水级。
10.一种应用权利要求1-9任一所述子矩阵运算装置的子矩阵运算方法,其特征在于,方法包括:
存储单元存储矩阵数据;
寄存器单元存储子矩阵信息,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、行宽、列宽、以及行间隔,所述行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔,所述子矩阵数据为矩阵数据的子矩阵数据;
子矩阵运算单元获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵数据在所述存储单元中的起始地址、行宽、列宽、以及行间隔,然后,从所述起始地址开始,每读取所述行宽个数的数据后跳过所述行间隔个数的数据再读取所述行宽个数的数据,重复列宽个数的次数,获取所述子矩阵数据,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果;
所述子矩阵运算指令包括以下至少一种:
子矩阵乘向量指令,根据该指令,从存储单元的指定起始地址,根据指令中子矩阵的行宽、列宽和行间距取出指定的子矩阵数据,同时取出向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将结果写回至存储单元的指定地址;
向量乘子矩阵指令,根据该指令,从存储单元的指定地址取出向量数据,同时根据指令中的子矩阵起始地址、子矩阵的行宽和列宽以及子矩阵的行间距取出指定的子矩阵,在矩阵单元中进行向量乘子矩阵的乘法运算,并将结果写回至存储单元的指定地址;
子矩阵乘标量指令,根据该指令,从存储单元的指定地址,根据指令中的子矩阵的行宽和列宽以及子矩阵的行间距,取出指定的子矩阵数据,从标量寄存器堆的指定地址中取出指定的标量数据,在矩阵运算单元中进行子矩阵乘标量的运算,并将结果写回至存储单元的指定地址;
张量运算指令,根据该指令,从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行张量运算,并将计算结果写回至存储单元的指定地址;
子矩阵加法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行加法运算,并将计算结果写回至存储单元的指定地址;
子矩阵减法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行减法运算,并将计算结果写回至存储单元的指定地址;
子矩阵乘法指令,根据该指令,装置从存储单元取出指定的两块子矩阵数据,在矩阵运算单元中对两子矩阵数据进行对位乘法运算,并将计算结果写回至存储单元的指定地址;
卷积指令,根据该指令,实现用卷积核对矩阵进行卷积滤波,装置从存储单元取出指定的卷积核矩阵,从待卷积矩阵存储的起始地址开始,对当前位置下卷积核覆盖的子矩阵数据进行滤波,得到当前位置的滤波结果,将结果写回至存储单元的指定地址,然后根据指令中给定的位移参数,在待卷积矩阵上移动至下一位置,重复上面的运算,直到移动至结束位置;
子矩阵搬运指令,根据该指令,将存储单元中存储的指定子矩阵存至存储单元的另一处地址。
11.根据权利要求10所述的子矩阵运算方法,其特征在于,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
12.根据权利要求10所述的子矩阵运算方法,其特征在于,在寄存器单元存储子矩阵信息之后,还包括:
通过取指模块获取子矩阵运算指令;
通过译码模块对获取的子矩阵运算指令进行译码;
依赖关系处理单元判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在一存储队列中,等待前一子矩阵运算指令执行完毕后,再将执行下一步骤,否则,直接执行下一步骤。
13.根据权利要求10所述的子矩阵运算方法,其特征在于包括步骤,在得到子矩阵运算结果后,在存储单元存储所述子矩阵运算结果。
14.根据权利要求13所述的子矩阵运算方法,其特征在于,还包括:步骤:存储所述子矩阵运算结果后,通过输入输出单元获取存储的子矩阵运算结果。
15.根据权利要求10所述的子矩阵运算方法,其特征在于,所述子矩阵运算包括子矩阵加法运算、子矩阵乘法运算、大小比较运算、非线性运算和子矩阵标量乘法运算。
16.根据权利要求15所述的子矩阵运算方法,其特征在于,采用多流水级结构进行所述子矩阵运算,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,在所述第一流水级进行子矩阵加法运算和子矩阵乘法运算,在所述第二流水级进行大小比较运算,在所述第三流水级进行非线性运算和子矩阵标量乘法运算。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810236767.2A CN108388541B (zh) | 2016-04-22 | 2016-04-22 | 卷积运算装置及方法 |
CN201810236769.1A CN108491359B (zh) | 2016-04-22 | 2016-04-22 | 子矩阵运算装置及方法 |
CN201610258546.6A CN107305538B (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610258546.6A CN107305538B (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810236769.1A Division CN108491359B (zh) | 2016-04-22 | 2016-04-22 | 子矩阵运算装置及方法 |
CN201810236767.2A Division CN108388541B (zh) | 2016-04-22 | 2016-04-22 | 卷积运算装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107305538A CN107305538A (zh) | 2017-10-31 |
CN107305538B true CN107305538B (zh) | 2020-07-31 |
Family
ID=60150790
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810236769.1A Active CN108491359B (zh) | 2016-04-22 | 2016-04-22 | 子矩阵运算装置及方法 |
CN201610258546.6A Active CN107305538B (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
CN201810236767.2A Active CN108388541B (zh) | 2016-04-22 | 2016-04-22 | 卷积运算装置及方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810236769.1A Active CN108491359B (zh) | 2016-04-22 | 2016-04-22 | 子矩阵运算装置及方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810236767.2A Active CN108388541B (zh) | 2016-04-22 | 2016-04-22 | 卷积运算装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN108491359B (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN108121688B (zh) * | 2017-12-15 | 2020-06-23 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN107943756B (zh) * | 2017-12-15 | 2021-03-23 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN108108189B (zh) * | 2017-12-15 | 2020-10-30 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108108190B (zh) * | 2017-12-15 | 2020-01-24 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN112463115A (zh) * | 2017-12-15 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108037908B (zh) * | 2017-12-15 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN108021393B (zh) * | 2017-12-15 | 2020-10-27 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
US11663002B2 (en) | 2018-02-13 | 2023-05-30 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
KR102252137B1 (ko) * | 2018-02-13 | 2021-05-13 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 계산 장치 및 방법 |
KR102065672B1 (ko) * | 2018-03-27 | 2020-01-13 | 에스케이텔레콤 주식회사 | 합성곱 연산을 위한 장치 및 방법 |
CN110727911B (zh) * | 2018-07-17 | 2022-09-02 | 展讯通信(上海)有限公司 | 一种矩阵的运算方法及装置、存储介质、终端 |
US11093580B2 (en) * | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
CN109858261A (zh) * | 2019-01-18 | 2019-06-07 | 芜湖智久机器人有限公司 | 一种数据存储介质、加密方法 |
CN111523652B (zh) * | 2019-02-01 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
CN110018851A (zh) * | 2019-04-01 | 2019-07-16 | 北京中科寒武纪科技有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN110008440B (zh) * | 2019-04-15 | 2021-07-27 | 恒烁半导体(合肥)股份有限公司 | 一种基于模拟矩阵运算单元的卷积运算及其应用 |
US11010202B2 (en) * | 2019-08-06 | 2021-05-18 | Facebook, Inc. | Distributed physical processing of matrix sum operation |
WO2021035397A1 (en) * | 2019-08-23 | 2021-03-04 | Alibaba Group Holding Limited | Method and apparatus for data-move task optimizing |
CN112446007A (zh) * | 2019-08-29 | 2021-03-05 | 上海华为技术有限公司 | 一种矩阵运算方法、运算装置以及处理器 |
CN110780849B (zh) * | 2019-10-29 | 2021-11-30 | 中昊芯英(杭州)科技有限公司 | 矩阵处理方法、装置、设备及计算机可读存储介质 |
CN111008040B (zh) * | 2019-11-27 | 2022-06-14 | 星宸科技股份有限公司 | 缓存装置及缓存方法、计算装置及计算方法 |
CN110728367B (zh) * | 2019-12-18 | 2020-05-05 | 深圳鲲云信息科技有限公司 | 用于神经网络的数据存储方法及装置 |
CN113050988A (zh) * | 2019-12-27 | 2021-06-29 | 上海商汤智能科技有限公司 | 数据处理方法和装置 |
CN111160570A (zh) * | 2019-12-31 | 2020-05-15 | 山东浪潮人工智能研究院有限公司 | 用于预测性维护的基于卷积算子的特征构造方法及*** |
CN111340680B (zh) * | 2020-03-20 | 2023-06-02 | 光子算数(北京)科技有限责任公司 | 一种卷积计算方法及卷积运算电路 |
CN114692075A (zh) * | 2020-12-30 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 用于矩阵乘操作的集成电路装置、计算设备、***和方法 |
CN114764615A (zh) * | 2021-01-13 | 2022-07-19 | 华为技术有限公司 | 卷积运算的实现方法、数据处理方法及装置 |
CN113077829B (zh) * | 2021-04-20 | 2023-04-28 | 清华大学 | 基于忆阻器阵列的数据处理方法、电子装置 |
CN113724127B (zh) * | 2021-08-02 | 2023-05-05 | 成都统信软件技术有限公司 | 一种图像矩阵卷积的实现方法、计算设备及储存介质 |
CN113435586B (zh) * | 2021-08-03 | 2021-11-30 | 北京大学深圳研究生院 | 用于卷积神经网络的卷积运算装置、***和图像处理装置 |
CN115658146B (zh) * | 2022-12-14 | 2023-03-31 | 成都登临科技有限公司 | 一种ai芯片、张量处理方法及电子设备 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971537A (zh) * | 2005-11-25 | 2007-05-30 | 杭州中天微***有限公司 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
CN101449256A (zh) * | 2006-04-12 | 2009-06-03 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
WO2011044398A3 (en) * | 2009-10-07 | 2011-09-01 | Qsigma, Inc. | Computer for amdahl-compliant algorithms like matrix inversion |
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
WO2012037472A2 (en) * | 2010-09-17 | 2012-03-22 | William Marsh Rice University | Gpu-based fast dose calculator for cancer therapy |
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
CN104063357A (zh) * | 2013-03-22 | 2014-09-24 | 富士通株式会社 | 处理器以及处理方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3157740B2 (ja) * | 1997-03-13 | 2001-04-16 | 甲府日本電気株式会社 | ベクトルデータ処理装置 |
JP4933693B2 (ja) * | 1998-08-24 | 2012-05-16 | マイクロユニティ システムズ エンジニアリング インコーポレイテッド | ワイド・オペランド・アーキテクチャを含むシステムおよび方法 |
US6477555B1 (en) * | 1999-07-07 | 2002-11-05 | Lucent Technologies Inc. | Method and apparatus for performing rapid convolution |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
CN101620524B (zh) * | 2009-07-03 | 2011-08-10 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
CN102207692A (zh) * | 2011-07-06 | 2011-10-05 | 清华大学 | 一种确定掩膜版经光刻***后所成像光照强度分布的方法 |
CN102360344B (zh) * | 2011-10-10 | 2014-03-12 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式*** |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
CN104216866B (zh) * | 2013-05-31 | 2018-01-23 | 深圳市海思半导体有限公司 | 一种数据处理装置 |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
CN104899182B (zh) * | 2015-06-09 | 2017-10-31 | 中国人民解放军国防科学技术大学 | 一种支持可变分块的矩阵乘加速方法 |
-
2016
- 2016-04-22 CN CN201810236769.1A patent/CN108491359B/zh active Active
- 2016-04-22 CN CN201610258546.6A patent/CN107305538B/zh active Active
- 2016-04-22 CN CN201810236767.2A patent/CN108388541B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1971537A (zh) * | 2005-11-25 | 2007-05-30 | 杭州中天微***有限公司 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
CN101449256A (zh) * | 2006-04-12 | 2009-06-03 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
CN103646009A (zh) * | 2006-04-12 | 2014-03-19 | 索夫特机械公司 | 对载明并行和依赖运算的指令矩阵进行处理的装置和方法 |
WO2011044398A3 (en) * | 2009-10-07 | 2011-09-01 | Qsigma, Inc. | Computer for amdahl-compliant algorithms like matrix inversion |
WO2012037472A2 (en) * | 2010-09-17 | 2012-03-22 | William Marsh Rice University | Gpu-based fast dose calculator for cancer therapy |
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN104063357A (zh) * | 2013-03-22 | 2014-09-24 | 富士通株式会社 | 处理器以及处理方法 |
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108388541A (zh) | 2018-08-10 |
CN108491359A (zh) | 2018-09-04 |
CN108491359B (zh) | 2019-12-24 |
CN108388541B (zh) | 2020-12-11 |
CN107305538A (zh) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305538B (zh) | 一种子矩阵运算装置及方法 | |
CN107315574B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
WO2017181419A1 (zh) | 一种子矩阵运算装置及方法 | |
CN110073329B (zh) | 访存设备、计算设备和应用于卷积神经网络运算的设备 | |
US11803377B2 (en) | Efficient direct convolution using SIMD instructions | |
US20180107630A1 (en) | Processor and method for executing matrix multiplication operation on processor | |
CN107315718B (zh) | 一种用于执行向量内积运算的装置和方法 | |
KR102556033B1 (ko) | 패킹된 데이터 정렬 플러스 계산 명령어, 프로세서, 방법, 및 시스템 | |
CN111580866A (zh) | 一种向量运算装置及运算方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
JP2011141823A (ja) | データ処理装置および並列演算装置 | |
CN112348182A (zh) | 一种神经网络maxout层计算装置 | |
JP7439276B2 (ja) | ベクトル演算の回転累算器 | |
Yousefzadeh et al. | Energy-efficient in-memory address calculation | |
JP7136343B2 (ja) | データ処理システム、方法、およびプログラム | |
US9569218B2 (en) | Decomposing operations in more than one dimension into one dimensional point operations | |
CN118051168A (zh) | 数据读取方法、装置、计算机设备、存储介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, scientific research complex, No. 6, South Road, Academy of Sciences, Haidian District, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |