一种用于执行矩阵乘运算的装置和方法制造方法及图纸

技术编号:20160109 阅读:20 留言:0更新日期:2019-01-19 00:12
本发明专利技术公开了一种用于执行矩阵乘运算的装置,其特征在于,包括:存储单元,用于存储矩阵运算指令相关的矩阵数据;寄存器单元,用于存储矩阵运算指令相关的标量数据;控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;矩阵运算单元,用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵乘运算操作;其中,所述矩阵运算单元为定制的硬件电路。

【技术实现步骤摘要】
一种用于执行矩阵乘运算的装置和方法
本专利技术涉及计算机领域,尤其涉及一种用于执行矩阵乘运算的装置和方法。
技术介绍
当前计算机领域,伴随着大数据、机器学习等新兴技术的成熟,越来越多的任务中包含了各种各样的矩阵乘运算,尤其是大矩阵的乘运算,这些往往成为算法速度和效果提高的瓶颈。以目前火热的深度学习为例,其中就包含着大量的矩阵乘运算。在深度学习的人工神经网络全连接层中,输出神经元的运算表达式为y=f(wx+b),其中w是权值矩阵,x是输入向量,b是偏置向量,计算输出矩阵y的过程为矩阵w与向量x相乘,加上向量b,然后对得到的向量进行激活函数运算(即对矩阵中的每个元素进行激活函数运算)。在这个过程中,矩阵乘向量运算的复杂度远高于之后的加偏置和做激活的操作,高效的实现前者对于整个运算过程有着最重要的影响。由此可见,高效实现矩阵乘运算是提升许多计算机算法的有效方法。在现有技术中,一种进行矩阵运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行矩阵乘运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行矩阵运算时运算性能较低。而使用多个通用处理器并行执行时,处理器的个数较少提升的效果不做够显著;处理器个数较高时它们之间的相互通讯又有可能成为性能瓶颈。在另一种现有技术中,使用图形处理器(GPU)来进行一系列矩阵乘计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。在另一种现有技术中,使用专门定制的矩阵运算装置来进行矩阵乘运算,其中,使用定制的寄存器堆和定制的处理单元进行矩阵运算。然而根据这种方法,目前已有的专用矩阵运算装置受限于寄存器堆的设计,不能够灵活地支持不同长度的矩阵运算。综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联图形处理器都无法进行高效的矩阵乘运算,并且这些现有技术在处理矩阵乘运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的矩阵规模不够灵活等问题。
技术实现思路
基于此,本专利技术提供了一种执行矩阵乘运算的装置和方法。根据本专利技术一方面,提供了一种用于执行矩阵乘运算的装置,其特征在于,包括:存储单元,用于存储矩阵运算指令相关的矩阵数据;寄存器单元,用于存储矩阵运算指令相关的标量数据;控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;矩阵运算单元,用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵乘运算操作;其中,所述矩阵运算单元为定制的硬件电路。根据本专利技术另一方面,提供了一种用于执行矩阵乘运算的装置,其特征在于,包括:取指模块,用于从指令序列中取出下一条要执行的矩阵运算指令,并将该矩阵运算指令传给译码模块;译码模块,用于对该矩阵运算指令进行译码,并将译码后的矩阵运算指令传送给指令队列模块;指令队列模块,用于暂存译码后的矩阵运算指令,并从矩阵运算指令或标量寄存器获得矩阵运算指令运算相关的标量数据;获得所述标量数据后,将所述矩阵运算指令送至依赖关系处理单元;标量寄存器堆,包括多个标量寄存器,用于存储矩阵运算指令相关的标量数据;依赖关系处理单元,用于判断所述矩阵运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述矩阵运算指令送至存储队列模块,如果不存在依赖关系,则将所述矩阵运算指令送至矩阵运算单元;存储队列模块,用于存储与之前运算指令存在依赖关系的矩阵运算指令,并且在所述依赖关系解除后,将所述矩阵运算指令送至矩阵运算单元;矩阵运算单元,用于根据接收到矩阵运算指令对输入矩阵进行矩阵乘运算操作;高速暂存存储器,用于存储输入矩阵和输出矩阵;输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取输出矩阵和写入输入矩阵。本专利技术还提供了执行矩阵乘向量和矩阵乘标量的方法。本专利技术可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。附图说明图1是根据本专利技术实施例的执行矩阵乘运算的装置的结构示意图。图2是根据本专利技术实施例的矩阵运算单元的操作示意图。图3是根据本专利技术实施例的指令集的格式示意图。图4是根据本专利技术实施例的矩阵运算装置的结构示意图。图5是根据本专利技术实施例的矩阵运算装置执行矩阵乘向量指令的流程图。图6是根据本专利技术实施例的矩阵运算装置执行矩阵乘标量指令的流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术作进一步的详细说明。本专利技术提供了一种矩阵乘运算装置,包括:存储单元、寄存器单元、控制单元和矩阵运算单元;所述存储单元存储矩阵;所述寄存器单元中存储有向量地址、向量长度、矩阵地址、矩阵长度以及其他计算过程中需要的标量数据;所述控制单元用于对矩阵运算指令执行译码操作,并根据矩阵运算指令控制各个模块,以控制矩阵乘运算的执行过程;矩阵运算单元在指令中或寄存器单元中获取向量地址、向量长度、矩阵地址、矩阵长度以及其他计算需要的标量数据,然后,根据该输入矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行矩阵乘运算,得到运算结果。本专利技术将参与计算的矩阵数据暂存在存储单元(例如,高速暂存存储器)上,使得矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵乘运算任务的执行性能。本专利技术中,所述矩阵乘运算单元可以实现为定制的硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)。图1是本专利技术提供的用于执行矩阵乘运算的装置的结构示意图,如图1所示,该装置包括:存储单元,用于存储矩阵。在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的矩阵数据;本专利技术将必要的计算数据暂存在高速暂存存储器上(ScratchpadMemory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。寄存器单元,用于存储矩阵地址,其中,矩阵地址为矩阵在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器存储输入矩阵地址、输入矩阵长度、输出矩阵地址。当涉及到矩阵与标量的运算时,矩阵运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。控制单元,用于控制装置中各个模块的行为。在一种实施方式中,控制单元读取准备好的指令,进行译码生成控制信号,发送给装置中的其他模块,其他模块根据得到的控制信号执行相应的操作。矩阵运算单元,用于获取各种矩阵乘运算指令,根据指令在所述寄存器单元中获取矩阵地址,然后,根据该本文档来自技高网
...

【技术保护点】
1.一种用于执行矩阵乘运算的装置,其特征在于,包括:存储单元,用于存储矩阵乘运算指令相关的矩阵数据;控制单元,用于对矩阵乘运算指令进行译码,并控制矩阵乘运算指令的运算过程;矩阵运算单元,用于根据译码后的矩阵乘运算指令,根据所述矩阵乘运算指令矩阵地址以及矩阵长度,根据该矩阵地址以及矩阵长度获取相应的矩阵,对矩阵进行矩阵乘运算操作得到运算结果。

【技术特征摘要】
1.一种用于执行矩阵乘运算的装置,其特征在于,包括:存储单元,用于存储矩阵乘运算指令相关的矩阵数据;控制单元,用于对矩阵乘运算指令进行译码,并控制矩阵乘运算指令的运算过程;矩阵运算单元,用于根据译码后的矩阵乘运算指令,根据所述矩阵乘运算指令矩阵地址以及矩阵长度,根据该矩阵地址以及矩阵长度获取相应的矩阵,对矩阵进行矩阵乘运算操作得到运算结果。2.根据权利要求1所述的装置,其特征在于,所述装置还包括:寄存器单元,用于存储矩阵乘运算指令相关的标量数据、向量地址、向量长度、矩阵地址、矩阵长度。3.如权利要求1所述的装置,其特征在于,所述控制单元包括:指令队列模块,用于对译码后的矩阵乘运算指令进行顺序存储,并获取矩阵乘运算指令相关的标量数据。4.如权利要求1所述的装置,其特征在于,所述控制单元包括:依赖关系处理单元,用于在矩阵运算单元获取当前矩阵运乘算指令前,判断当前矩阵运算乘指令与之前未执行完的矩阵乘运算指令是否存在依赖关系。5.如权利要求4所述的装置,其特征在于,所述控制单元包括:存储队列模块,用于在当前矩阵运乘算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前矩阵乘运算指令,并且在该依赖关系消除时,将暂存的矩阵乘运算指令送往矩阵运算单元执行。6.如权利要求1-5任一项所述的装置,其特征在于,所述装置还包括:指令缓存单元,用于存储待执行的矩阵乘运算指令;输入输出单元,用于将矩阵乘运算指令相关的数据存储于存储单元,或者,从存储单元中获取矩阵乘运算指令的运算结果。7.如权利要求1-4任一项所述的装置,其特征在于,所述存储单元为高速暂存存储器。8.如权利要求1-4任一项所述的装置,其特征在于,所述矩阵运算单元包括一个主运算模块和多个从运算模块,其中:所述从运算模块,用于执行矩阵乘运算中的点积运算得到点积运算结果,将点积运算结果返回给主运算模块;所述主运算模块,用于获取所有从运算模块的点积运算结果,依据该点积运算结果得到运算结果中相应各行。9.根据权利要求8所述的装置,其特征在于,所述从运算模块包括:向量对位乘模块,加法树模块以及累加模块;所述向量对位乘模块,用于执行两个向量的对位相乘得到乘积结果;所述加法树模块,用于将乘积结果相加得到结果;所述累加模块,用于将所述加法树模块的结果累加在之前的部分和得到点积结果。10.根据权利要求8所述的装置,其特征在于,所述主运算模块包括:对位乘法器;所述对位乘法器,用于执行矩阵乘标量的运算。11.一种执行矩阵乘运算的方法,其特征在于,所述方法应用于矩阵乘运算装置,所述装置包括:存储单元、控制单元和矩阵运算单元;所述方法包括如下步骤:存储单元存储矩阵乘运算指令...

【专利技术属性】
技术研发人员:张潇刘少礼陈天石陈云霁
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1