CN108108190B - 一种计算方法及相关产品 - Google Patents

一种计算方法及相关产品 Download PDF

Info

Publication number
CN108108190B
CN108108190B CN201711362410.0A CN201711362410A CN108108190B CN 108108190 B CN108108190 B CN 108108190B CN 201711362410 A CN201711362410 A CN 201711362410A CN 108108190 B CN108108190 B CN 108108190B
Authority
CN
China
Prior art keywords
matrix
instruction
stage
pipeline
result
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
Application number
CN201711362410.0A
Other languages
English (en)
Other versions
CN108108190A (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
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201711362410.0A priority Critical patent/CN108108190B/zh
Publication of CN108108190A publication Critical patent/CN108108190A/zh
Application granted granted Critical
Publication of CN108108190B publication Critical patent/CN108108190B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供了一种信息处理方法,所述方法应用于计算装置内,所述计算装置包括:存储介质、寄存器单元和矩阵计算单元;所述方法包括如下步骤:所述计算装置控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;所述计算装置控制所述运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;所述计算装置控制所述运算单元依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。本申请提供的技术方案具有计算速度快,效率高的优点。

Description

一种计算方法及相关产品
技术领域
本申请涉及数据处理技术领域,具体涉及一种计算方法及相关产品。
背景技术
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行矩阵数据的计算时速度慢,效率低。
申请内容
本申请实施例提供了一种计算方法及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种计算方法,应用于计算装置内,所述计算装置包括存储介质、寄存器单元和矩阵运算单元,所述方法包括:
所述计算装置控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与向量之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;
所述计算装置控制所述矩阵运算单元采用批量读取方式从所述存储介质中读取所述矩阵读取指示所对应的矩阵,并对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
在一些可能的实施例中,所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器。
在一些可能的实施例中,所述多级流水级中的每个流水级所包括的固定运算器以及所述固定运算器的数量是由用户侧或所述计算装置侧自定义设置的。
在一些可能的实施例中,所述多级流水级中每个流水级中的运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器以及矩阵比较运算器。
在一些可能的实施例中,所述第一运算指令包括以下中的任一项:矩阵求均值向量指令MMEAN、矩阵求和向量指令MSUM、矩阵生成超向量指令MSUP、矩阵求最值向量指令MMUM。
在一些可能的实施例中,所述第一运算指令的指令格式包括操作码和至少一个操作域,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。可选地,可在相应寄存器中获取以下中信息中的任一项或多项的组合:所述指令所需矩阵的行数、列数、数据类型、标识、存储地址(首地址)以及维数长度,所述维数长度是指矩阵行的长度和/或矩阵列的长度。
在一些可能的实施例中,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求均值向量指令MMEAN,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵加法运算器对所述矩阵进行行求和计算得到第一结果,将所述第一结果输入至第三级流水级中的矩阵标量乘法运算器对所述第一结果进行向量乘标量运算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求和向量指令MSUM,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器判断是对所述矩阵进行行求和还是列求和计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器对应进行矩阵的行求和或列求和计算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵生成超向量指令MSUP,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第三级流水级中的非线性运算器进行向量搬移和拼接计算得到第一结果;将所述第一结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求最值向量指令MMUM,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器判断是对所述矩阵进行求最大值向量还是最小值向量计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵比较运算器中对应进行矩阵求最大值向量或最小值向量计算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
在一些可能的实施例中,所述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
在一些可能的实施例中,当所述矩阵读取指示为所述指令所需矩阵的标识时,
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令包括:
所述计算装置控制所述矩阵运算单元依据所述标识从所述寄存器单元中采用单位读取方式读取所述标识对应的存储地址;
所述计算装置控制所述矩阵运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
在一些可能的实施例中,所述计算装置还包括:缓存单元,所述方法还包括:
所述计算装置将待执行的运算指令缓存于所述缓存单元内。
在一些可能的实施例中,在所述计算装置控制所述矩阵运算单元获取第一运算指令之前,所述方法还包括:
所述计算装置确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如果所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存于所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如果所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如果所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
第二方面,提供一种计算装置,所述计算装置包括用于执行上述第一方面的方法的功能单元。
第三方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第四方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。
第五方面,提供了一种芯片,所述芯片包括如上第二方面提供的计算装置。
第六方面,提供了一种芯片封装结构,所述芯片封装结构包括如上第五方面提供的芯片。
第七方面,提供了一种板卡,所述板卡包括如上第六方面提供的芯片封装结构。
第八方面,提供了一种电子设备,所述电子设备包括如上第七方面提供的板卡。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
实施本申请实施例,具有如下有益效果:
可以看出,通过本申请实施例,计算装置设置有寄存器单元和存储介质,分别用于存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的一种运算单元的结构示意图。
图3是本发明实施例提供的一种计算方法的流程示意图。
图4是本申请实施例提供的一种流水级的架构示意图。
图5是本申请实施例提供的流水级的结构示意图。
图6A和图6B是本申请实施例提供的两种指令集的格式示意图。
图7是本申请实施例提供的另一种计算装置的结构示意图。
图8是本申请实施例提供的计算装置执行矩阵求均值向量指令的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
需要说明的是,本申请涉及的矩阵具体可以为m*n矩阵,其中,m和N为大于等于1的整数,当m或n为1时,可表示为1*n矩阵或m*1矩阵,也可以称为向量;当m和n同时为1时,可以视为1*1的特殊矩阵。下述矩阵均可以为上述三种类型矩阵中的任意一种,下面不在赘述。
本申请实施例提供一种计算方法,该计算方法可应用于计算装置中。如图1,是本发明实施例示出的一种可能的计算装置的结构示意图。如图1所示的计算装置包括:
存储介质201、用于存储矩阵。优选的该存储介质可以是高速暂存存储器,能够支持不同长度的矩阵数据;本申请将必要的计算数据暂存在高速暂存存储器上(ScratchpadMemory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储介质还可以为片外数据库、数据库或其他的能够存储的介质等等。
寄存器单元202,用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据(本申请也称为矩阵)在存储介质201的存储地址以及矩阵与向量运算时的标量。在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。应理解的,矩阵地址(即矩阵的存储地址,如首地址)也为标量。当涉及到矩阵与向量的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量,例如矩阵的行数、列数、矩阵数据的类型(也可称为数据类型)、矩阵维数长度(具体可为矩阵行的长度、矩阵列的长度等)。
运算单元203(本申请也称为矩阵运算单元203),用于获取并执行第一运算指令。如图2所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器2031、矩阵乘法运算器2032、大小比较运算器2033(也可为矩阵比较运算器)、非线性运算器2034和矩阵标量乘法运算器2035。
该方法如图3所示,包括如下步骤:
步骤S301、运算单元203获取第一运算指令,所述第一运算指令用于实现矩阵与向量的运算,所述第一运算指令包括:执行该指令所需的矩阵读取指示。
在步骤S301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例如,在本申请一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的存储地址。又如,在本申请另一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式可以为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元的寄存器号或存储地址。
下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需的矩阵读取指示,这里假设该矩阵运算公式为f(x)=A+B,其中,A、B均为矩阵。那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公式所需矩阵的存储地址,具体的,例如A的存储地址为0000-0FFF,B的存储地址为1000-1FFF。又如,可以携带A以及B的标识,例如A的标识为0101,B的标识为1010。
步骤S302、运算单元203依据该矩阵读取指示向所述存储介质201发送读取命令。
上述步骤S302的实现方法具体可以为:
如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识从寄存器单元处采用单位读取方式读取该标识对应的存储地址,然后运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
上述单个读取方式具体可以为,每次读取均为单位的数据,即1bit数据。此时设置单位读取方式即1位读取方式的原因为,对于标量数据来说,其占用的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单位读取方式来读取以减少带宽的浪费。
步骤S303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该矩阵执行所述第一运算指令。
上述步骤S303中批量读取方式具体可以为,每次读取均为多位的数据,例如每次读取的数据位数为16bit、32bit或64bit,即无论其所需的数据量是多少,其每次读取的均为固定多位数的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多位的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本申请提供的技术方案的计算装置设置有寄存器单元和存储介质,其分别存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
运算单元203可采用多级流水级的计算方式来实现,其中,该多级流水级可为用户侧或所述计算装置侧预先自定义设置的,即是固定设计好的。例如本申请所述计算装置中设计有i级流水级。以下为具体实施方式:
运算单元可根据所述第一运算指令对应的计算网络拓扑,选择利用第K1级流水级中的选择运算器对所述矩阵执行计算得到第一结果,然后再选择利用第K2级流水级中的选择运算器对所述第一结果执行计算得到第二结果,以此类推,选择第Kj级流水级中的选择运算器对第i-1个结果执行计算得到第i个结果,直至完成所述第一运算指令的运算。这里第i个结果即为输出结果(具体为输出矩阵)。进一步地,运算单元203可将该输出结果存储至存储介质201。
其中,所述多级流水级的数量i、所述多级流水级的执行顺序(即选择Kj级流水级)以及所述第Kj级流水级中的选择运算器都具体是根据所述第一运算指令的计算拓扑结构确定的,i为正整数。通常,i=3。每个流水级中可设置有相应地的运算器,该运算器包括但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵标量乘法运算器、非线性运算器、矩阵比较运算器以及其他矩阵运算器。即是,每个流水级中所包含的固定运算器以及固定运算器的数量可以是有用户侧或所述计算装置侧自定义设置的,不做限定。
应理解的,本申请中上述计算装置中,每次选择执行的第K1、K2…Kj级流水级以及流水级中的选择运算器都可被重复选择,即是不限定每个流水级的执行次数。后文将以所述第一运算指令为矩阵求均值向量指令为例,进行详述。
具体实现中,如图4示出一种流水级的架构示意图。如图4,i级流水级之间可存在全连接的旁路设计(即图示的旁路电路),用于根据第一运算指令对应的计算网络拓扑,选择当前所需使用的流水级以及该流水级中某个运算器(即本申请中的选择运算器)。可选地,还用于多个流水级之间的数据传输,例如将第三级流水级的输出结果转发至第一级流水级作为输入,原始输入可以作为三级流水级的任意一级的输入,任意一级的输出可以作为运算单元的最终输出等。
以i=3,三级流水为例,运算单元可通过旁路电路,分别选择流水级的执行顺序以及流水级中各自所需使用的运算器(也可称为运算部件)。如图5示出一种流水级的操作流程示意图。相应地,运算单元对该矩阵执行第一流水级的计算得到第一结果,(可选的)将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,(可选的)将第二结果输入到第三流水级执行第三流水级计算得到第三结果,(可选的)将第三结果存储至存储介质201。
上述第一流水级包括但不限于:矩阵乘法运算器等等。
上述第二流水级包括但不限于:矩阵加法运算器、大小比较运算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法运算器等等。
将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本申请的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本申请另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。即是,本申请中设计的i个流水级支持任意多个流水级并联、串联以及合并,以构成不同的排列组合,本申请不做限定。
需要说明的是,上述计算装置中每个流水级中的运算器是预先自定义设置好的,一旦确定不容更改;即i级流水级可设计为任意运算器的排列组合,i级流水级一经驱动不再更改,不同的运算指令可设计不同的i级流水级装置。其中,该计算装置可根据具体指令的需求,适应性增加/较少流水级的数量。最后,可将为不同指令设计的流水级装置组合在一起,形成所述计算装置。
采用上述计算装置(即每级流水级中的运算器/运算部件设计固定),具有以下以下有益效果:除提高带宽外,无额外的选择信号判断开销,不同流水级之间无相同的运算部件重叠和冗余,复用性高,面积小。
可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将背提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
可选的,上述方法在步骤S301之前还可以包括:
确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将第一运算指令传递至运算单元。
上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系的具体实现方法可以为:
依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间,依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。
此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问A矩阵存储区域、B矩阵存储区域和C矩阵存储区域,如果A、B存储区域相邻或A、C存储区域相邻,则第二运算指令访问的存储区域为,A、B存储区域以及C存储区域,或A、C存储区域以及B存储区域。这种情况下,如果第一运算指令访问的为A矩阵与D矩阵的存储区域,那么第一运算指令访问的矩阵的存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第一运算指令与第二运算指令属于关联关系,所以本申请通过是否有重叠区域来判断是否为关联关系的条件,能够避免上述情况的误判。
下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关联关系。这里假设第一运算指令所需的矩阵为A矩阵和D矩阵,其中A矩阵的存储区域为【0001,0FFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【0001,0FFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域具有重叠区域【0001,0FFF】,所以第一运算指令与第二运算指令具有关联关系。
这里假设第一运算指令所需的矩阵为E矩阵和D矩阵,其中A矩阵的存储区域为【C000,CFFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【C000,CFFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。
本申请中,如图6A是本申请提供的一种指令(具体可为第一运算指令,或操作指令)的指令集的格式示意图,如图6A所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
即第一运算指令可以包括:操作域以及至少一个操作码,以矩阵运算指令为例,如表1所示,其中,寄存器0、寄存器1、寄存器堆2、寄存器3、寄存器4可以为操作域。其中,每个寄存器0、寄存器1、寄存器2、寄存器3、寄存器4用于标识寄存器的编号,其可以是一个或者多个寄存器。应理解的,操作码中寄存器的数量并不做限定,每个寄存器均用于存储运算指令的相关数据信息。
Figure BDA0001510440630000131
如图6B是本申请提供的另一种指令(可为第一运算指令,也可称为操作指令)的指令集的格式示意图,如图6B所示,指令包括至少两个操作码和至少一操作域,其中,所述至少两个操作码包括第一操作码和第二操作码(图示分别为操作码1和操作码2)。所述操作码1用于指示指令的类型(即某大类指令),例如可具体可为IO指令、逻辑指令或者运算指令等等,所述操作码2用于指示指令的功能(即大类指令下的具体指令的解释),例如运算指令中的矩阵运算指令(如矩阵乘向量指令MMUL、矩阵求逆指令MINV等)、向量运算指令(如向量求导指令VDIER等)等等,本申请不做限定。
应理解的,指令的格式可以是用户侧或所述计算装置侧自定义设置的。指令的操作码可设计为固定长度,例如8bit、16bit等等。如图6A示出的指令格式具有以下优势特征:操作码占用位数少、译码系统设计简单。如图6B示出的指令格式具有以下优势特征:可变长、译码平均效率更高,当某大类指令下具体指令较少且调用频次高的情况下,设计其第二操作码(即操作码2)的长度短小,可提高译码效率;此外,还能增强指令的可读性和可扩展性,优化指令的编码结构。
本申请实施例中,指令集包含有不同功能的运算指令,具体可为:
矩阵求均值向量指令(MMEAN),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵求均值向量的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵求和向量指令(MSUM),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵每一行或每一列求和生成一个和向量的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵生成超向量指令(MSUP),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵所有列向量拼接为一个超向量的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵求最值向量指令(MMUM),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,在运算单元中进行对矩阵每一行求最大或最小值生成一个最值向量的运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。可选地,矩阵求最值向量指令具体可包括矩阵求行最值向量指令和矩阵求列最值向量指令。
应理解的,本申请提出的操作/运算指令主要用于矩阵行(列)间数值运算及拼接、筛选操作。因此,每级流水级中设计的运算器包含但不限于以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器、矩阵比较运算器。
下面举例说明本申请涉及的运算指令(即第一运算指令)的计算。
以所述第一运算指令为矩阵求均值向量指令MMEAN为例,计算给定矩阵的均值向量。具体实现时,给定一个矩阵A,按照如下公式计算每一行元素的均值,并生成均值向量。
Figure BDA0001510440630000151
其中,xmi为矩阵A中第m行第i列的元素,m和i均为正整数。
相应地,矩阵求均值向量指令MMEAN的指令格式具体为:
Figure BDA0001510440630000152
Figure BDA0001510440630000161
结合前述实施例,运算单元可获取矩阵求均值向量指令MMEAN,并对其译码后,通过旁路电路选择利用第一流水级中的矩阵加法运算器对矩阵进行行求和计算得到第一结果,然后输入第二流水级的矩阵标量乘法运算器中进行向量乘标量运算得到第二结果(即输出结果)。可选地,将该第二结果存储至存储介质中。
以所述第一运算指令为矩阵求和向量指令MSUM为例,计算给定矩阵的和向量。具体实现时,给定一个矩阵A,按照如下公式计算每一行元素的均值并生成行和向量。
Figure BDA0001510440630000162
相应地,给定一个矩阵A,按照如下公式计算每一列元素的均值,并生成列和向量。
Figure BDA0001510440630000163
其中,xmi为矩阵A中第m行第i列的元素,m和i均为正整数。
相应地,矩阵求和向量指令MSUM的指令格式具体为:
Figure BDA0001510440630000164
Figure BDA0001510440630000171
结合前述实施例,运算单元可获取矩阵求和向量指令MSUM,并对其译码后,通过旁路电路选择利用第一流水级中的矩阵比较运算器判断是对矩阵进行行求和还是列求和计算得到第一结果,然后输入第二流水级的矩阵加法运算器中进行对应的矩阵行求和或矩阵列求和计算得到第二结果(即输出结果)。可选地,将该第二结果存储至存储介质中。
以所述第一运算指令为矩阵生成超向量指令MSUP为例,将给定矩阵的所有列按顺序拼接为超向量。具体实现时,给定一个矩阵A,按照如下公式将矩阵各列进行拼接生成对应的超向量。
其中,
Figure BDA0001510440630000173
为由矩阵A中第n列的所有元素组成的列向量,n为正整数。
相应地,矩阵生成超向量指令MSUP的指令格式具体为:
Figure BDA0001510440630000174
Figure BDA0001510440630000181
结合前述实施例,运算单元可获取矩阵生成超向量指令MSUP,并对其译码后,通过旁路电路选择利用第一流水级中的非线性运算器对矩阵进行向量搬移和拼接计算得到第一结果(即输出结果)。可选地,将该第一结果存储至存储介质中。
以所述第一运算指令为矩阵求最值向量指令MMUM为例,计算给定矩阵的最值向量。具体实现如下矩阵求行最值向量指令和矩阵求列最值向量指令。
矩阵求行最大值向量指令:给定一个矩阵A,按照如下公式计算每一行元素的最大值,并生成行最大值向量。
Figure BDA0001510440630000182
其中,xmi为矩阵A中第m行第i列的元素,m和i均为正整数。
矩阵求行最小值向量指令:给定一个矩阵A,按照如下公式计算每一行元素的最小值,并生成行最小值向量。
Figure BDA0001510440630000183
矩阵求列最大值向量指令:给定一个矩阵A,按照如下公式计算每一列元素的最大值,并生成列最大值向量。
矩阵求行最小值向量指令:给定一个矩阵A,按照如下公式计算每一列元素的最小值,并生成列最小值向量。
相应地,矩阵求最值向量指令MMUM的指令格式具体为:
Figure BDA0001510440630000193
Figure BDA0001510440630000201
结合前述实施例,运算单元可获取矩阵求最值向量指令MMUM,并对其译码后,通过旁路电路选择利用第一流水级中的矩阵比较运算器判断是对矩阵进行如下计算中的任一项:行最大值、行最小值、列最大值以及列最小值;得到第一结果,然后输入第二流水级的矩阵比较运算器中进行对应的矩阵求最值计算得到第二结果(即输出结果)。可选地,将该第二结果存储至存储介质中。
需要说明的是,上述各种运算指令的获取以及译码将在后文进行详细阐述。应理解的,采用上述计算装置的结构来实现各运算指令(如矩阵求均值向量指令MMEAN等)的计算,可获得如下有益效果:矩阵的规模可变,可以减少指令数量,简化指令的使用;可以处理不同存储格式(行主序和列主序)的矩阵,避免了对矩阵进行变换的开销;支持按照一定间隔存储的矩阵格式,避免了对矩阵存储格式进行变换的执行开销和存储中间结果的空间占用。
上述运算指令(即矩阵运算指令/第一运算指令)中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本申请具体实施方式并不限定该设定长度的具体值以及个数。为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
参阅图7,图7为本申请具体实施方式提供的另一种计算装置50。图7所示,计算装置50包括:存储介质501、寄存器单元502(优选的为标量数据存储单元、标量寄存器单元)、运算单元503(也可称矩阵运算单元503)和控制单元504;
存储介质501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
控制单元504,用于控制所述运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与向量间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令。
可选的,所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
运算单元503,具体用于根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求均值向量指令MMEAN,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵加法运算器对所述矩阵进行行求和计算得到第一结果,将所述第一结果输入至第三级流水级中的矩阵标量乘法运算器对所述第一结果进行向量乘标量运算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求和向量指令MSUM,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器判断是对所述矩阵进行行求和还是列求和计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器对应进行矩阵的行求和或列求和计算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵生成超向量指令MSUP,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第三级流水级中的非线性运算器进行向量搬移和拼接计算得到第一结果;将所述第一结果输入至所述存储介质进行存储。
可选的,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求最值向量指令MMUM,
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器判断是对所述矩阵进行求最大值向量还是最小值向量计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵比较运算器中对应进行矩阵求最大值向量或最小值向量计算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元504 ,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元504 可以划分为三个模块,分别为:取指模块、译码模块和指令队列模块,
取指模块,用于从指令缓存单元中获取运算指令;
译码模块,用于对获取的运算指令进行译码;
指令队列,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图8,图8是本申请实施例提供的计算装置执行运算指令的流程图,如图8所示,该计算装置的硬件结构参阅图7所示的结构,如图7所示的存储介质以高速暂存存储器为例,执行矩阵求均值向量指令MMEAN的过程包括:
步骤S601,计算装置控制取指模块取出矩阵求均值向量指令,并将该矩阵求均值向量指令送往译码模块。
步骤S602,译码模块对该矩阵求均值向量指令译码,并将该矩阵求均值向量指令送往指令队列。
步骤S603,在指令队列中,该矩阵求均值向量指令需要从标量寄存器堆中获取指令中四个操作域所对应的标量寄存器里的数据,该数据包括输入矩阵地址、输入矩阵规模(长、宽)、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵求均值向量指令与矩阵求均值向量指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵求均值向量指令存入到缓存单元,如不存在关联管理,将该矩阵求均值向量指令传输至运算单元。
步骤S605,运算单元根据四个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵数据,然后在运算单元中完成求均值运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵求均值向量指令被提交。
可选的,上述步骤S605中在运算单元执行求均值运算时,所述计算装置可采用矩阵加法运算器执行矩阵行求和计算,再利用矩阵标量乘法运算器进行求均值运算以获得均值向量。
具体实现中,当译码模块对该矩阵求均值向量指令译码后,根据译码所产生的控制信号,利用旁路电路选择将S603所获取的矩阵输入至第二级流水级中的矩阵加法运算器执行矩阵行求和计算得到第一结果,然后根据控制信号的控制利用旁路电路选择将第一结果输入至第三级流水级中的矩阵标量乘法运算器中执行向量乘标量计算得到第二结果,最后根据控制信号可获知所述第二结果即为输出结果。相应地,将所述第二结果作为运算单元的输出写回,或直接传输至输出端。
上述图8中的运算指令以矩阵求均值向量指令为例,在实际应用中,如图8所示实施例中的矩阵求均值向量指令可以用矩阵求和向量指令、矩阵求行最值指令、矩阵求列最值指令、矩阵求超向量指令等矩阵运算/操作指令替换,这里不一一赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任意实施部分或全部步骤。
本申请实施例还提供了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述方法实施例所记载的实施例进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(CPU)或者图形处理器(GPU);还可以包括在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。
在一些实施例里,还公开了一种芯片,其包括了上述用于执行上述方法实施例所对应的神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (9)

1.一种计算方法,其特征在于,应用于计算装置内,所述计算装置包括存储介质、寄存器单元和矩阵运算单元,所述方法包括:
所述计算装置控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与向量之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述计算装置控制所述矩阵运算单元依据所述矩阵读取指示向所述存储介质发送读取命令;
所述计算装置控制所述矩阵运算单元采用批量读取方式从所述存储介质中读取所述矩阵读取指示所对应的矩阵,并采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令;所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器;
所述i个流水级包括:旁路电路,用于根据第一运算指令对应的计算网络拓扑,选择当前所需使用的流水级以及该流水级中运算器。
2.根据权利要求1所述的方法,其特征在于,所述多级流水级中的每个流水级所包括的固定运算器以及所述固定运算器的数量是由用户侧或所述计算装置侧自定义设置的;或者,所述多级流水级中每个流水级中的固定运算器包括以下中的任一项或多项的组合:矩阵加法运算器、矩阵乘法运算器、矩阵标量乘法运算器、非线性运算器以及矩阵比较运算器。
3.根据权利要求1-2中任一项所述的方法,其特征在于,所述第一运算指令包括以下中的任一项:矩阵求均值向量指令MMEAN、矩阵求和向量指令MSUM、矩阵生成超向量指令MSUP、矩阵求最值向量指令MMUM;
所述第一运算指令的指令格式包括至少一个操作码和至少一个操作域,所述至少一个操作码用于指示所述第一运算指令的功能,所述至少一个操作域用于指示所述第一运算指令的数据信息,所述数据信息包括立即数或寄存器号,用于存储所述矩阵读取指示以及所述矩阵的长度;其中,所述至少一个操作码包括第一操作码和第二操作码,所述第一操作码用于指示所述第一运算指令的类型,所述第二操作码用于指示所述第一运算指令的功能。
4.根据权利要求1所述的方法,其特征在于,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求均值向量指令MMEAN,
所述采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵加法运算器对所述矩阵进行行求和计算得到第一结果,将所述第一结果输入至第三级流水级中的矩阵标量乘法运算器对所述第一结果进行向量乘标量运算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
5.根据权利要求1所述的方法,其特征在于,所述多级流水级为三级流水级,第一级流水级中包括预先设置的矩阵乘法运算器,第二级流水级中包括预先设置的矩阵加法运算器和矩阵比较运算器,第三级流水级中包括预先设置的非线性运算器和矩阵标量乘法运算器;所述第一运算指令为矩阵求和向量指令MSUM,
所述采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元将所述矩阵输入至第二级流水级中的矩阵比较运算器判断是对所述矩阵进行行求和还是列求和计算得到第一结果,将所述第一结果输入至第二级流水级中的矩阵加法运算器对应进行矩阵的行求和或列求和计算得到第二结果;将所述第二结果输入至所述存储介质进行存储。
6.一种计算装置,其特征在于,所述计算装置包括存储介质、寄存器单元、矩阵运算单元以及控制器单元;
所述存储介质,用于存储矩阵;
所述寄存器单元,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
所述控制器单元,用于控制所述矩阵运算单元获取第一运算指令,所述第一运算指令用于实现矩阵与向量之间的运算,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同或长度不同的矩阵;
所述矩阵运算单元,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令;
所述多级流水级中每个流水级中包括有预先设置的固定运算器,每个流水级中的固定运算器不相同;
所述计算装置控制所述矩阵运算单元采用多级流水级的计算方式,对所述矩阵执行所述第一运算指令包括:
所述计算装置控制所述矩阵运算单元根据所述第一运算指令对应的计算网络拓扑,利用第K1级流水级中的选择运算器对所述矩阵进行计算得到第一结果,再将所述第一结果输入到第K2级流水级中的选择运算器执行计算得到第二结果,以此类推,直至将第i-1个结果输入到第Kj级流水级中的选择运算器执行计算得到第i个结果;
将所述第i个结果输入至所述存储介质进行存储;
其中,Kj属于i个流水级中的任一流水级,j小于等于i,且j和i均为正整数,所述多级流水级的数量i、所述多级流水级被选择的执行顺序Kj以及所述第Kj级流水级中的选择运算器均是根据所述第一运算指令的计算拓扑结构确定的,所述选择运算器是所述固定运算器中的运算器;
所述i个流水级包括:旁路电路,用于根据第一运算指令对应的计算网络拓扑,选择当前所需使用的流水级以及该流水级中运算器。
7.一种芯片,其特征在于,所述芯片包括如上权利要求6所述的计算装置。
8.一种电子设备,其特征在于,所述电子设备包括如上权利要求7所述的芯片。
9.一种计算机可读存储介质,其特征在于,所述计算机可读 存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-5任一项所述的方法。
CN201711362410.0A 2017-12-15 2017-12-15 一种计算方法及相关产品 Active CN108108190B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711362410.0A CN108108190B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711362410.0A CN108108190B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Publications (2)

Publication Number Publication Date
CN108108190A CN108108190A (zh) 2018-06-01
CN108108190B true CN108108190B (zh) 2020-01-24

Family

ID=62209810

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711362410.0A Active CN108108190B (zh) 2017-12-15 2017-12-15 一种计算方法及相关产品

Country Status (1)

Country Link
CN (1) CN108108190B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111353124A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353125B (zh) * 2018-12-20 2022-04-22 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN109886398A (zh) * 2019-01-03 2019-06-14 曾集伟 神经网络矩阵乘法运算方法及相关产品
CN111428879B (zh) * 2020-03-04 2024-02-02 中昊芯英(杭州)科技有限公司 数据处理方法、装置、芯片以及计算机可读存储介质
CN111651207B (zh) * 2020-08-06 2020-11-17 腾讯科技(深圳)有限公司 一种神经网络模型运算芯片、方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262525A (zh) * 2011-08-29 2011-11-30 孙瑞琛 基于矢量运算的矢量浮点运算装置及方法
CN103902507A (zh) * 2014-03-28 2014-07-02 中国科学院自动化研究所 一种面向可编程代数处理器的矩阵乘法计算装置及方法
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262525A (zh) * 2011-08-29 2011-11-30 孙瑞琛 基于矢量运算的矢量浮点运算装置及方法
CN103902507A (zh) * 2014-03-28 2014-07-02 中国科学院自动化研究所 一种面向可编程代数处理器的矩阵乘法计算装置及方法
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置
CN107305538A (zh) * 2016-04-22 2017-10-31 北京中科寒武纪科技有限公司 一种子矩阵运算装置及方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法

Also Published As

Publication number Publication date
CN108108190A (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
CN108009126B (zh) 一种计算方法及相关产品
CN107957976B (zh) 一种计算方法及相关产品
CN108121688B (zh) 一种计算方法及相关产品
CN108108190B (zh) 一种计算方法及相关产品
CN111291880B (zh) 计算装置以及计算方法
CN110688157B (zh) 一种计算装置及计算方法
CN109284823B (zh) 一种运算装置及相关产品
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
CN107315715B (zh) 一种用于执行矩阵加/减运算的装置和方法
US20240078285A1 (en) Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements
CN107957977B (zh) 一种计算方法及相关产品
CN110163363B (zh) 一种计算装置及方法
CN107943756B (zh) 一种计算方法及相关产品
CN107957975B (zh) 一种计算方法及相关产品
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
CN107315716B (zh) 一种用于执行向量外积运算的装置和方法
CN108090028B (zh) 一种计算方法及相关产品
CN107977231B (zh) 一种计算方法及相关产品
CN108108189B (zh) 一种计算方法及相关产品
CN108037908B (zh) 一种计算方法及相关产品
CN108021393B (zh) 一种计算方法及相关产品
US10127040B2 (en) Processor and method for executing memory access and computing instructions for host matrix operations
US20210192353A1 (en) Processing unit, processor core, neural network training machine, and method
CN115438777A (zh) 对神经元数据执行Winograd卷积正变换的装置

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: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant after: Zhongke Cambrian Technology Co., Ltd

Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant