CN107305538A - 一种子矩阵运算装置及方法 - Google Patents

一种子矩阵运算装置及方法 Download PDF

Info

Publication number
CN107305538A
CN107305538A CN201610258546.6A CN201610258546A CN107305538A CN 107305538 A CN107305538 A CN 107305538A CN 201610258546 A CN201610258546 A CN 201610258546A CN 107305538 A CN107305538 A CN 107305538A
Authority
CN
China
Prior art keywords
submatrix
data
operational order
matrix
computing
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.)
Granted
Application number
CN201610258546.6A
Other languages
English (en)
Other versions
CN107305538B (zh
Inventor
刘少礼
张潇
陈云霁
陈天石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Beijing Zhongke Cambrian Technology Co Ltd
Original Assignee
Beijing Zhongke Cambrian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Zhongke Cambrian Technology Co Ltd filed Critical Beijing Zhongke Cambrian Technology Co Ltd
Priority to CN201610258546.6A priority Critical patent/CN107305538B/zh
Priority to CN201810236767.2A priority patent/CN108388541B/zh
Priority to CN201810236769.1A priority patent/CN108491359B/zh
Publication of CN107305538A publication Critical patent/CN107305538A/zh
Application granted granted Critical
Publication of CN107305538B publication Critical patent/CN107305538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix 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片上缓存太小,在进行大规模子矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的矩阵运算装置来进行子矩阵计算,其中,使用定制的寄存器堆和定制的处理单元进行子矩阵运算。然而,目前已有的专用矩阵运算装置受限于寄存器堆,不能够灵活地支持不同长度的子矩阵运算。
综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联,图形处理器都无法进行高效的子矩阵运算,并且这些现有技术在处理子矩阵运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的子矩阵规模不够灵活等问题。
发明内容
(一)要解决的技术问题
本发明提供一种子矩阵运算装置及方法,能配合子矩阵运算指令集,高效地实现各种子矩阵运算。
(二)技术方案
本发明提供一种子矩阵运算装置,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,装置包括:
存储单元,用于存储矩阵数据;
寄存器单元,用于存储子矩阵信息;
子矩阵运算单元,用于获取子矩阵运算指令,并根据该子矩阵运算指令从所述寄存器单元中获取子矩阵信息,然后,根据该子矩阵信息在所述存储单元中的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
本发明还提供一种子矩阵运算方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,方法包括:
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所述的子矩阵运算装置,其特征在于,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
3.根据权利要求2所述的子矩阵运算装置,其特征在于,所述数据信息为寄存器单元的编号,所述子矩阵运算单元根据寄存器单元的编号访问对应的寄存器单元,从而获取子矩阵信息。
4.根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
5.根据权利要求1所述的子矩阵运算装置,其特征在于,还包括:
指令处理单元,用于获取子矩阵运算指令,并对该子矩阵运算指令进行处理后,提供给所述子矩阵运算单元。
6.根据权利要求5所述的子矩阵运算装置,其特征在于,所述指令处理单元包括:
取指模块,用于获取子矩阵运算指令;
译码模块,用于对获取的子矩阵运算指令进行译码;
指令队列,用于对译码后的子矩阵运算指令进行顺序存储;
依赖关系处理单元,用于在所述子矩阵运算单元获取子矩阵运算指令前,判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在所述存储队列中,等待前一子矩阵运算指令执行完毕后,再将所述存储队列中的该子矩阵运算指令提供给所述子矩阵运算单元,否则,直接将该子矩阵运算指令提供给所述子矩阵运算单元。
7.根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元还用于存储所述子矩阵运算结果。
8.根据权利要求7所述的子矩阵运算装置,其特征在于,还包括:
输入输出单元,用于将矩阵数据存储于所述存储单元,或者,从所述存储单元中获取子矩阵运算结果。
9.根据权利要求1所述的子矩阵运算装置,其特征在于,所述存储单元为高速暂存存储器。
10.根据权利要求1所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元包括子矩阵加法部件、子矩阵乘法部件、大小比较部件、非线性运算部件和子矩阵标量乘法部件。
11.根据权利要求10所述的子矩阵运算装置,其特征在于,所述子矩阵运算单元为多流水级结构,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,所述子矩阵加法部件和子矩阵乘法部件处于第一流水级,大小比较部件处于第二流水级,非线性运算部件和子矩阵标量乘法部件处于第三流水级。
12.一种子矩阵运算方法,用于根据子矩阵运算指令从矩阵数据中获取子矩阵数据,并根据该子矩阵数据执行子矩阵运算,其特征在于,方法包括:
S1,存储矩阵数据;
S2,存储子矩阵信息;
S3,获取子矩阵运算指令,并根据该子矩阵运算指令获取子矩阵信息,然后,根据该子矩阵信息从存储的矩阵数据中获取子矩阵数据,接着,根据获取的子矩阵数据进行子矩阵运算,得到子矩阵运算结果。
13.根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵运算指令包括一操作码和至少一操作域,其中,所述操作码用于指示该子矩阵运算指令的功能,操作域用于指示该子矩阵运算指令的数据信息。
14.根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵信息包括子矩阵数据在所述存储单元中的起始地址、子矩阵数据的行宽、子矩阵数据的列宽、以及行间隔,其中,行间隔是指子矩阵数据相邻两行间,上一行的行末数据到下一行的行首数据的数据间隔。
15.根据权利要求12所述的子矩阵运算方法,其特征在于,在所述步骤S3之前,还包括:
获取子矩阵运算指令;
对获取的子矩阵运算指令进行译码;
判断该子矩阵运算指令与前一子矩阵运算指令是否访问相同的子矩阵数据,若是,则将该子矩阵运算指令存储在一存储队列中,等待前一子矩阵运算指令执行完毕后,再将执行所述步骤S3,否则,直接执行所述步骤S3。
16.根据权利要求12所述的子矩阵运算方法,其特征在于,所述步骤S3还包括,存储所述子矩阵运算结果。
17.根据权利要求16所述的子矩阵运算方法,其特征在于,还包括:步骤S4,获取存储的子矩阵运算结果。
18.根据权利要求12所述的子矩阵运算方法,其特征在于,所述子矩阵运算包括子矩阵加法运算、子矩阵乘法运算、大小比较运算、非线性运算和子矩阵标量乘法运算。
19.根据权利要求18所述的子矩阵运算方法,其特征在于,采用多流水级结构进行子矩阵运算,所述多流水级结构包括第一流水级、第二流水级和第三流水级,其中,在所述第一流水级进行子矩阵加法运算和子矩阵乘法运算,在所述第二流水级进行大小比较运算,在所述第三流水级进行非线性运算和子矩阵标量乘法运算。
CN201610258546.6A 2016-04-22 2016-04-22 一种子矩阵运算装置及方法 Active CN107305538B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201610258546.6A CN107305538B (zh) 2016-04-22 2016-04-22 一种子矩阵运算装置及方法
CN201810236767.2A CN108388541B (zh) 2016-04-22 2016-04-22 卷积运算装置及方法
CN201810236769.1A CN108491359B (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 true CN107305538A (zh) 2017-10-31
CN107305538B CN107305538B (zh) 2020-07-31

Family

ID=60150790

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201810236767.2A Active CN108388541B (zh) 2016-04-22 2016-04-22 卷积运算装置及方法
CN201610258546.6A Active CN107305538B (zh) 2016-04-22 2016-04-22 一种子矩阵运算装置及方法
CN201810236769.1A Active CN108491359B (zh) 2016-04-22 2016-04-22 子矩阵运算装置及方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810236767.2A Active CN108388541B (zh) 2016-04-22 2016-04-22 卷积运算装置及方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810236769.1A Active CN108491359B (zh) 2016-04-22 2016-04-22 子矩阵运算装置及方法

Country Status (1)

Country Link
CN (3) CN108388541B (zh)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107943756A (zh) * 2017-12-15 2018-04-20 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN107957976A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108021393A (zh) * 2017-12-15 2018-05-11 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108037908A (zh) * 2017-12-15 2018-05-15 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108108189A (zh) * 2017-12-15 2018-06-01 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108108190A (zh) * 2017-12-15 2018-06-01 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108121688A (zh) * 2017-12-15 2018-06-05 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN110018851A (zh) * 2019-04-01 2019-07-16 北京中科寒武纪科技有限公司 数据处理方法、相关设备及计算机可读介质
CN110383300A (zh) * 2018-02-13 2019-10-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110727911A (zh) * 2018-07-17 2020-01-24 展讯通信(上海)有限公司 一种矩阵的运算方法及装置、存储介质、终端
CN110780849A (zh) * 2019-10-29 2020-02-11 深圳芯英科技有限公司 矩阵处理方法、装置、设备及计算机可读存储介质
CN111902813A (zh) * 2018-03-27 2020-11-06 Sk电信有限公司 用于卷积运算的装置以及方法
CN112346852A (zh) * 2019-08-06 2021-02-09 脸谱公司 矩阵求和运算的分布式物理处理
CN112446007A (zh) * 2019-08-29 2021-03-05 上海华为技术有限公司 一种矩阵运算方法、运算装置以及处理器
CN113435586A (zh) * 2021-08-03 2021-09-24 北京大学深圳研究生院 用于卷积神经网络的卷积运算装置、系统和图像处理装置
CN113724127A (zh) * 2021-08-02 2021-11-30 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
WO2022143799A1 (zh) * 2020-12-30 2022-07-07 中科寒武纪科技股份有限公司 用于矩阵乘操作的集成电路装置、计算设备、系统和方法
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 阿里巴巴集团控股有限公司 处理器及其数据处理方法、摄像装置
CN110008440B (zh) * 2019-04-15 2021-07-27 恒烁半导体(合肥)股份有限公司 一种基于模拟矩阵运算单元的卷积运算及其应用
CN114041116A (zh) * 2019-08-23 2022-02-11 阿里巴巴集团控股有限公司 数据移动任务优化的方法和装置
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 光子算数(北京)科技有限责任公司 一种卷积计算方法及卷积运算电路
CN114764615A (zh) * 2021-01-13 2022-07-19 华为技术有限公司 卷积运算的实现方法、数据处理方法及装置
CN113077829B (zh) * 2021-04-20 2023-04-28 清华大学 基于忆阻器阵列的数据处理方法、电子装置
CN115658146B (zh) * 2022-12-14 2023-03-31 成都登临科技有限公司 一种ai芯片、张量处理方法及电子设备
CN116795432B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 运算指令的执行方法、装置、电路、处理器及设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584824A (zh) * 2003-08-18 2005-02-23 上海海尔集成电路有限公司 一种基于cisc结构的微处理器构架及指令实现方式
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 富士通株式会社 处理器以及处理方法
CN104216866A (zh) * 2013-05-31 2014-12-17 深圳市海思半导体有限公司 一种数据处理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3157740B2 (ja) * 1997-03-13 2001-04-16 甲府日本電気株式会社 ベクトルデータ処理装置
EP2302510B1 (en) * 1998-08-24 2012-05-09 MicroUnity Systems Engineering, Inc. A processor and method performed by a processor for executing a matrix multipy operation using a wide operand
US6477555B1 (en) * 1999-07-07 2002-11-05 Lucent Technologies Inc. Method and apparatus for performing rapid convolution
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 北京中科晶上科技有限公司 一种向量处理器及其进行向量数据存取、交互的方法
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 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1584824A (zh) * 2003-08-18 2005-02-23 上海海尔集成电路有限公司 一种基于cisc结构的微处理器构架及指令实现方式
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 富士通株式会社 处理器以及处理方法
CN104216866A (zh) * 2013-05-31 2014-12-17 深圳市海思半导体有限公司 一种数据处理装置
CN103530276A (zh) * 2013-09-25 2014-01-22 中国科学技术大学 一种基于龙芯3b的自适应矩阵乘法优化方法

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109754062A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754062B (zh) * 2017-11-07 2024-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061B (zh) * 2017-11-07 2023-11-24 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN109754061A (zh) * 2017-11-07 2019-05-14 上海寒武纪信息科技有限公司 卷积扩展指令的执行方法以及相关产品
CN108121688B (zh) * 2017-12-15 2020-06-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN107957976B (zh) * 2017-12-15 2020-12-18 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108121688A (zh) * 2017-12-15 2018-06-05 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108108189A (zh) * 2017-12-15 2018-06-01 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108037908A (zh) * 2017-12-15 2018-05-15 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN107957976A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108021393A (zh) * 2017-12-15 2018-05-11 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108108190B (zh) * 2017-12-15 2020-01-24 中科寒武纪科技股份有限公司 一种计算方法及相关产品
CN112230994A (zh) * 2017-12-15 2021-01-15 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN108108190A (zh) * 2017-12-15 2018-06-01 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN107943756A (zh) * 2017-12-15 2018-04-20 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108021393B (zh) * 2017-12-15 2020-10-27 安徽寒武纪信息科技有限公司 一种计算方法及相关产品
CN110383300A (zh) * 2018-02-13 2019-10-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN110383300B (zh) * 2018-02-13 2024-03-05 上海寒武纪信息科技有限公司 一种计算装置及方法
US11740898B2 (en) 2018-02-13 2023-08-29 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN111902813B (zh) * 2018-03-27 2024-05-07 Sapeon韩国株式会社 用于卷积运算的装置以及方法
CN111902813A (zh) * 2018-03-27 2020-11-06 Sk电信有限公司 用于卷积运算的装置以及方法
CN110727911A (zh) * 2018-07-17 2020-01-24 展讯通信(上海)有限公司 一种矩阵的运算方法及装置、存储介质、终端
CN110018851A (zh) * 2019-04-01 2019-07-16 北京中科寒武纪科技有限公司 数据处理方法、相关设备及计算机可读介质
CN112346852A (zh) * 2019-08-06 2021-02-09 脸谱公司 矩阵求和运算的分布式物理处理
CN112446007A (zh) * 2019-08-29 2021-03-05 上海华为技术有限公司 一种矩阵运算方法、运算装置以及处理器
CN110780849A (zh) * 2019-10-29 2020-02-11 深圳芯英科技有限公司 矩阵处理方法、装置、设备及计算机可读存储介质
WO2022143799A1 (zh) * 2020-12-30 2022-07-07 中科寒武纪科技股份有限公司 用于矩阵乘操作的集成电路装置、计算设备、系统和方法
CN113724127B (zh) * 2021-08-02 2023-05-05 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
CN113724127A (zh) * 2021-08-02 2021-11-30 成都统信软件技术有限公司 一种图像矩阵卷积的实现方法、计算设备及储存介质
CN113435586B (zh) * 2021-08-03 2021-11-30 北京大学深圳研究生院 用于卷积神经网络的卷积运算装置、系统和图像处理装置
CN113435586A (zh) * 2021-08-03 2021-09-24 北京大学深圳研究生院 用于卷积神经网络的卷积运算装置、系统和图像处理装置

Also Published As

Publication number Publication date
CN107305538B (zh) 2020-07-31
CN108388541B (zh) 2020-12-11
CN108491359B (zh) 2019-12-24
CN108388541A (zh) 2018-08-10
CN108491359A (zh) 2018-09-04

Similar Documents

Publication Publication Date Title
CN107305538A (zh) 一种子矩阵运算装置及方法
JP3639323B2 (ja) メモリ分散型並列計算機による連立1次方程式計算処理方法および計算機
CN106991077A (zh) 一种矩阵计算装置
CN107315574B (zh) 一种用于执行矩阵乘运算的装置和方法
CN106990940A (zh) 一种向量计算装置
EP3447653A1 (en) Submatrix operation device and method
CN107844322A (zh) 用于执行人工神经网络正向运算的装置和方法
WO2019010183A1 (en) PROCESSOR OF DEEP VISION
CN107329734A (zh) 一种用于执行卷积神经网络正向运算的装置和方法
CN101084483A (zh) 用于simd阵列处理机的位串行处理元件
JPH0652530B2 (ja) ベクトル・プロセッサ
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
Rostrup et al. Parallel hyperbolic PDE simulation on clusters: Cell versus GPU
D'Amore et al. Towards a parallel component in a GPU–CUDA environment: a case study with the L-BFGS Harwell routine
CN111859277B (zh) 一种稀疏矩阵向量乘法向量化实现方法
US20190213006A1 (en) Multi-functional execution lane for image processor
CN107305486A (zh) 一种神经网络maxout层计算装置
Anzt et al. Variable-size batched LU for small matrices and its integration into block-Jacobi preconditioning
CN104615516B (zh) 面向GPDSP的大规模高性能Linpack测试基准实现的方法
Mambu et al. Dedicated instruction set for pattern-based data transfers: an experimental validation on systems containing in-memory computing units
Panda et al. Reconfigurable Vector Register Windows for fast matrix computation on the orthogonal multiprocessor
Anzt et al. Variable-size batched gauss-huard for block-jacobi preconditioning
Demmel et al. Implementing communication-optimal parallel and sequential qr factorizations
McLay et al. Maximizing sparse matrix–vector product performance on RISC based MIMD computers
Ha et al. Bandwidth Efficient Summed Area Table Generation for CUDA

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