WO2017181419A1 - 一种子矩阵运算装置及方法 - Google Patents
一种子矩阵运算装置及方法 Download PDFInfo
- Publication number
- WO2017181419A1 WO2017181419A1 PCT/CN2016/080023 CN2016080023W WO2017181419A1 WO 2017181419 A1 WO2017181419 A1 WO 2017181419A1 CN 2016080023 W CN2016080023 W CN 2016080023W WO 2017181419 A1 WO2017181419 A1 WO 2017181419A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- sub
- matrix
- data
- matrix operation
- instruction
- Prior art date
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/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
- G06F17/175—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
Abstract
一种子矩阵运算装置及方法,装置包括存储单元、寄存器单元和子矩阵运算单元,存储单元中存储有子矩阵数据,寄存器单元中存储有子矩阵信息,子矩阵运算单元根据子矩阵运算指令在寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中获取相应的子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。本方法将参与计算的子矩阵数据暂存在高速暂存存储器上,使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量子矩阵计算任务的执行性能。
Description
本发明属于计算机领域,尤其涉及一种子矩阵运算装置及方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算。
当前计算机领域有越来越多的算法涉及到矩阵运算,包括人工神经网络算法和图形的渲染算法。与此同时,作为矩阵运算中的一个重要组成部分,子矩阵运算也越来越频繁的出现在各种计算任务中。所以对于那些面向解决矩阵运算问题的方案,必须同时考虑子矩阵运算实现的效率和难度。
在现有技术中一种进行子矩阵运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行子矩阵运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行子矩阵运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈,同时,实现子矩阵运算的代码量也大于正常的矩阵运算。
在另一种现有技术中,使用图形处理器(GPU)来进行子矩阵计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行子矩阵运算。然而,上述方案中,GPU片上缓存太小,在进行大规模子矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的矩阵运算装置来进行子矩阵计算,其中,使用定制的寄存器堆和定制的处理单元进行子矩阵运算。然而,目前已有的专用矩阵运算装置受限于寄存器堆,不能够灵活地支
持不同长度的子矩阵运算。
综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联,图形处理器都无法进行高效的子矩阵运算,并且这些现有技术在处理子矩阵运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的子矩阵规模不够灵活等问题。
发明内容
(一)要解决的技术问题
本发明提供一种子矩阵运算装置及方法,能配合子矩阵运算指令集,高效地实现各种子矩阵运算。
(二)技术方案
本发明提供一种子矩阵运算装置,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,装置包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从所述寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在所述存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
本发明还提供一种子矩阵运算方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,方法包括:
S1,存储矩阵数据;
S2,存储子矩阵信息;
S3,获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵信息,然后,根据该子矩阵信息从存储的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
(三)有益效果
本发明提供的子矩阵运算装置,将参与计算的子矩阵数据暂存在高速暂存存储器上(Scratchpad Memory),使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵计算任务的执行性能,本发明采用的指令具有精简的格式,使得指令集使用方便、支持的矩阵长度灵活。
图1是是本发明提供的子矩阵运算装置的示意图。
图2是本发明提供的指令集格式示意图。
图3是本发明一个子矩阵的示意图。
图4是本发明实施例提供的子矩阵运算装置的示意图。
图5是本发明实施例提供的子矩阵运算装置执行子矩阵乘子矩阵指令的流程图。
图6是本发明实施例中矩阵数据和子矩阵数据的示意图。
图7是本发明实施例提供的子矩阵运算装置执行卷积神经网络运算的流程图。
本发明提供一种子矩阵运算装置及方法,包括存储单元、寄存器单元和子矩阵运算单元,存储单元中存储有子矩阵数据,寄存器单元中存储有子矩阵信息,子矩阵运算单元根据子矩阵运算指令在寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中获取相应的子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。本发明将参与计算的子矩阵数据暂存在高速暂存存储器上,使得子矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量子矩阵计算任务的执行性能。其中高速暂存存储器可以通过各
种不同存储器件(SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等)实现。
图1是本发明提供的子矩阵运算装置的示意图,如图1所示,装置包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息,在具体应用中,可以由多个寄存器单元组成一个寄存器堆,每个寄存器单元存储有不同的子矩阵信息,需要说明书的是,子矩阵信息均为标量数据;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
图2是本发明提供的指令集格式示意图,如图2所示,指令集采用Load/Store结构,子矩阵运算单元不会对内存中的数据进行操作。子矩阵指令集采用超长指令集架构(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指令将卷积后的结果矩阵存至片外。
需声明,本实施例采用了一种更加高效的方法实现卷积运算,即将三维的输入图像和卷积核均展开成二维形式,实际上,这不是本发明的装置和方法实现卷积运算的唯一方式,一种更通用的方法是对输入的每一张二维图像,与对应的卷积核中的一个面通过子矩阵指令执行卷积运算,得到输出结果的一个部分和,最终的卷积结果是所有的二维图像和与之相对应的卷积核中的面进行卷积运算得到的部分和的累加。故,子矩阵运算指令可以以多种方式实现卷积操作。
综上所述,本发明提供矩阵运算装置,并配合相应的子矩阵运算指令集,能够很好地解决当前计算机领域越来越多的算法包含大量子矩阵运算的问题,相比于已有的传统解决方案,本发明可以具有指令集精简、使用方便、支持的子矩阵规模灵活、片上缓存充足等优点。本发明可以用于多种包含大量子矩阵运算的计算任务,包括目前表现十分出色的人工神经网络算法的反向训练和正向预测。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
- 一种子矩阵运算装置,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,其特征在于,装置包括:存储单元,用于存储矩阵数据;寄存器单元,用于存储子矩阵信息;子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从所述寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在所述存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
- 根据权利要求2所述的子矩阵运算装置,其特征在于,所述数据信息为寄存器单元的编号,所述子矩阵运算单元根据寄存器单元的编号访问对应的寄存器单元,从而获取子矩阵信息。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,还包括:指令处理单元,用于获取子矩阵运算指令,并对该子矩阵运算指令进行处理后,提供给所述子矩阵运算单元。
- 根据权利要求5所述的子矩阵运算装置,其特征在于,所述指令处理单元包括:取指模块,用于获取子矩阵运算指令;译码模块,用于对获取的子矩阵运算指令进行译码;指令队列,用于对译码后的子矩阵运算指令进行顺序存储;依赖关系处理单元,用于在所述子矩阵运算单元获取子矩阵运算指令前,判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在所述存储队列中,等待前一子矩阵运算指令执行完毕后,再将所述存储队列中的该子矩阵运算指令提供给所述子矩阵运算单元,否则,直接将该子矩阵运算指令提供给所述子矩阵运算单元。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元还用于存储所述子矩阵运算结果。
- 根据权利要求7所述的子矩阵运算装置,其特征在于,还包括:输入输出单元,用于将矩阵数据存储于所述存储单元,或者,从所述存储单元中获取子矩阵运算结果。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元为高速暂存存储器。
- 根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元包括子矩阵加法部件、子矩阵乘法部件、大小比较部件、非线性运算部件和子矩阵标量乘法部件。
- 根据权利要求10所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元为多流水级结构,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,所述子矩阵加法部件和子矩阵乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和子矩阵标量乘法部件处于第三流水级。
- 一种子矩阵运算方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,其特征在于,方法包括:S1,存储矩阵数据;S2,存储子矩阵信息;S3,获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵信息,然后,根据该子矩阵信息从存储的矩阵数据中获取子矩阵数据,接 着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
- 根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
- 根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
- 根据权利要求12所述的子矩阵运算方法,其特征在于,在所述步骤S3之前,还包括:获取子矩阵运算指令;对获取的子矩阵运算指令进行译码;判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在一存储队列中,等待前一子矩阵运算指令执行完毕后,再将执行所述步骤S3,否则,直接执行所述步骤S3。
- 根据权利要求12所述的子矩阵运算方法,其特征在于,所述步骤S3还包括,存储所述子矩阵运算结果。
- 根据权利要求16所述的子矩阵运算方法,其特征在于,还包括:步骤S4,获取存储的子矩阵运算结果。
- 根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵运算包括子矩阵加法运算、子矩阵乘法运算、大小比较运算、非线性运算和子矩阵标量乘法运算。
- 根据权利要求18所述的子矩阵运算方法,其特征在于,采用多流水级结构进行子矩阵运算,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,在所述第一流水级进行子矩阵加法运算和子矩阵乘法运算,在所述第二流水级进行大小比较运算,在所述第三流水级进行非线性运算和子矩阵标量乘法运算。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16899006.7A EP3447653A4 (en) | 2016-04-22 | 2016-04-22 | SUBMATRIX OPERATING DEVICE AND METHOD |
PCT/CN2016/080023 WO2017181419A1 (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
US16/167,425 US10534841B2 (en) | 2016-04-22 | 2018-10-22 | Appartus and methods for submatrix operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/080023 WO2017181419A1 (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/167,425 Continuation-In-Part US10534841B2 (en) | 2016-04-22 | 2018-10-22 | Appartus and methods for submatrix operations |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017181419A1 true WO2017181419A1 (zh) | 2017-10-26 |
Family
ID=60115442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2016/080023 WO2017181419A1 (zh) | 2016-04-22 | 2016-04-22 | 一种子矩阵运算装置及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10534841B2 (zh) |
EP (1) | EP3447653A4 (zh) |
WO (1) | WO2017181419A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109978131A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
US10534841B2 (en) | 2016-04-22 | 2020-01-14 | Cambricon Technologies Corporation Limited | Appartus and methods for submatrix operations |
KR20200137843A (ko) * | 2019-05-31 | 2020-12-09 | 한국전자통신연구원 | 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 |
CN113724127A (zh) * | 2021-08-02 | 2021-11-30 | 成都统信软件技术有限公司 | 一种图像矩阵卷积的实现方法、计算设备及储存介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190228809A1 (en) * | 2019-03-29 | 2019-07-25 | Intel Corporation | Technologies for providing high efficiency compute architecture on cross point memory for artificial intelligence operations |
CN112446007A (zh) * | 2019-08-29 | 2021-03-05 | 上海华为技术有限公司 | 一种矩阵运算方法、运算装置以及处理器 |
CN112579971B (zh) * | 2019-09-29 | 2024-04-16 | 广州希姆半导体科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
WO2021088569A1 (en) * | 2019-11-05 | 2021-05-14 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Convolution method and device, electronic device |
CN111865804B (zh) * | 2020-06-15 | 2022-03-11 | 烽火通信科技股份有限公司 | 一种通过硬件发包机制提升路由下发效率的方法及系统 |
WO2022000225A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 一种卷积神经网络数据处理方法及其相关设备 |
CN112067015B (zh) * | 2020-09-03 | 2022-11-22 | 青岛歌尔智能传感器有限公司 | 基于卷积神经网络的计步方法、装置及可读存储介质 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN102253925A (zh) * | 2010-05-18 | 2011-11-23 | 江苏芯动神州科技有限公司 | 一种矩阵转置的方法 |
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
CN100545804C (zh) | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
JP4657998B2 (ja) * | 2006-07-21 | 2011-03-23 | ルネサスエレクトロニクス株式会社 | シストリックアレイ |
US8473539B1 (en) * | 2009-09-01 | 2013-06-25 | Xilinx, Inc. | Modified givens rotation for matrices with complex numbers |
CN103699360B (zh) | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
WO2017181419A1 (zh) | 2016-04-22 | 2017-10-26 | 北京中科寒武纪科技有限公司 | 一种子矩阵运算装置及方法 |
-
2016
- 2016-04-22 WO PCT/CN2016/080023 patent/WO2017181419A1/zh active Application Filing
- 2016-04-22 EP EP16899006.7A patent/EP3447653A4/en not_active Ceased
-
2018
- 2018-10-22 US US16/167,425 patent/US10534841B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253925A (zh) * | 2010-05-18 | 2011-11-23 | 江苏芯动神州科技有限公司 | 一种矩阵转置的方法 |
CN102214160A (zh) * | 2011-07-08 | 2011-10-12 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN103530276A (zh) * | 2013-09-25 | 2014-01-22 | 中国科学技术大学 | 一种基于龙芯3b的自适应矩阵乘法优化方法 |
Non-Patent Citations (1)
Title |
---|
See also references of EP3447653A4 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10534841B2 (en) | 2016-04-22 | 2020-01-14 | Cambricon Technologies Corporation Limited | Appartus and methods for submatrix operations |
CN109978131A (zh) * | 2017-12-28 | 2019-07-05 | 北京中科寒武纪科技有限公司 | 集成电路芯片装置及相关产品 |
CN109978131B (zh) * | 2017-12-28 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置、方法及相关产品 |
KR20200137843A (ko) * | 2019-05-31 | 2020-12-09 | 한국전자통신연구원 | 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 |
KR102416325B1 (ko) * | 2019-05-31 | 2022-07-04 | 한국전자통신연구원 | 확장 명령어 생성 및 처리 방법 및 이를 이용한 장치 |
CN113724127A (zh) * | 2021-08-02 | 2021-11-30 | 成都统信软件技术有限公司 | 一种图像矩阵卷积的实现方法、计算设备及储存介质 |
CN113724127B (zh) * | 2021-08-02 | 2023-05-05 | 成都统信软件技术有限公司 | 一种图像矩阵卷积的实现方法、计算设备及储存介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3447653A4 (en) | 2019-11-13 |
EP3447653A1 (en) | 2019-02-27 |
US20190057063A1 (en) | 2019-02-21 |
US10534841B2 (en) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388541B (zh) | 卷积运算装置及方法 | |
WO2017181419A1 (zh) | 一种子矩阵运算装置及方法 | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
CN107315574B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN109542515B (zh) | 运算装置及方法 | |
CN108427990B (zh) | 神经网络计算系统和方法 | |
KR102166775B1 (ko) | 스파스 연결용 인공 신경망 계산 장치와 방법 | |
JP7335231B2 (ja) | Simd命令を用いた効率的な直接畳み込み | |
CN109313556B (zh) | 可中断和可重启矩阵乘法指令、处理器、方法和系统 | |
WO2017185418A1 (zh) | 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法 | |
CN111580865B (zh) | 一种向量运算装置及运算方法 | |
KR102486029B1 (ko) | 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치 | |
US20180341484A1 (en) | Tensor Processor Instruction Set Architecture | |
US9141386B2 (en) | Vector logical reduction operation implemented using swizzling on a semiconductor chip | |
WO2017185393A1 (zh) | 一种用于执行向量内积运算的装置和方法 | |
KR20230109791A (ko) | 패킹된 데이터 정렬 플러스 계산 명령어, 프로세서,방법, 및 시스템 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
EP3447690A1 (en) | Maxout layer operation apparatus and method | |
CN112348182B (zh) | 一种神经网络maxout层计算装置 | |
KR20230018361A (ko) | 벡터 연산들을 위한 회전식 누산기 | |
TWI508023B (zh) | 平行及向量式吉伯特-詹森-科西(gilbert-johnson-keerthi)圖形處理技術 | |
KR20230082621A (ko) | 얕은 파이프라인을 갖는 고도의 병렬 처리 아키텍처 | |
WO2018192161A1 (zh) | 运算装置及方法 | |
CN118051168A (zh) | 数据读取方法、装置、计算机设备、存储介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2016899006 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2016899006 Country of ref document: EP Effective date: 20181122 |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 16899006 Country of ref document: EP Kind code of ref document: A1 |