一种能支持不同位宽运算数据的运算单元、方法及装置制造方法及图纸

技术编号:17265790 阅读:48 留言:0更新日期:2018-02-14 13:26
本发明专利技术提供了一种运算单元、运算方法及运算装置,通过配置指令中的位宽域来配置参与运算的运算数据位宽,在根据指令执行运算时,首先判断是否存在与指令中操作数所指示的运算数据位宽相同的运算器,如果是,将该操作数直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该操作数的位宽,并将该操作数传给该新的运算器;再令获得该操作数的运算器执行神经网络运算/矩阵运算/向量运算。本发明专利技术能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。

\u4e00\u79cd\u80fd\u652f\u6301\u4e0d\u540c\u4f4d\u5bbd\u8fd0\u7b97\u6570\u636e\u7684\u8fd0\u7b97\u5355\u5143\u3001\u65b9\u6cd5\u53ca\u88c5\u7f6e

【技术实现步骤摘要】
一种能支持不同位宽运算数据的运算单元、方法及装置
本专利技术涉及计算机领域,尤其涉及一种运算单元、运算方法及运算装置,支持不同位宽运算数据的运算。
技术介绍
人工神经网络(ANNs),简称神经网络(NNs),是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。目前,神经网络在智能控制、机器学习等很多领域均获得长足发展。由于神经网络属于算法数学模型,其涉及大量的数学运算,因此如何快速、准确地执行神经网络运算是当前迫切需要解决的问题。其中,神经网络运算中各个参数在不同的层次中进行表示和运算时所需的位宽不同,使用不同位宽的运算器,可以减少实际的运算量,降低功耗;通过将低位宽的运算器合并成高位宽的运算器可以重复利用低位宽的运算器,减少运算器的数量,减少装置的面积。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种运算单元、运算方法及运算装置,支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算。本专利技术提供的运算单元、运算方法及运算装置,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算器执行神经网络运算/矩阵运算/向量运算。另外,本专利技术根据指令执行不同位宽运算数据的运算,指令采用了两种方式进行实现:一种为直接采用一条指令的方式,该指令中同时包括操作数和位宽域,运算单元能够直接根据该指令获取操作数和相应位宽的运算器,以执行相应的运算;另一种为采用两条指令的方式,运算单元先根据位宽配置指令获取或构造相应位宽的运算器,再根据运算指令获取操作数以执行相应的运算。本专利技术具有以下有益效果:1、本专利技术通过指令中的位宽域来指定运算数据的位宽,使得运算数据的位宽能够根据需要任意配置,针对某一位宽的运算数据,如果存在与该位宽符合的运算器,可直接调用该运算器执行运算,如果该运算数据的位宽过大,没有符合该位宽的运算器,可对多个较低位宽的运算器进行合并,以构造新的运算器,并利用新的运算器执行运算,能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。2、本专利技术采用高速暂存存储器,其能够实现对不同长度和不同位宽的运算数据(如:神经元、向量、矩阵)的存储。附图说明图1是本专利技术提供的运算装置的结构示意图。图2是本专利技术提供的运算单元的结构示意图。图3为本专利技术采用一条指令的方式执行运算的指令格式示意图。图4是本专利技术的神经网络运算指令的格式示意图。图5是本专利技术的矩阵-矩阵运算指令的格式示意图。图6是本专利技术的向量-向量运算指令的格式示意图。图7是本专利技术的矩阵-向量运算指令的格式示意图。图8是本专利技术实施例的运算装置的结构示意图。图9是本专利技术实施例中译码模块的结构示意图。图10是本专利技术实施例的运算装置采用一条指令的方式执行运算的流程图。图11是本专利技术采用两条指令的方式执行运算中位宽配置指令的格式示意图。图12是本专利技术采用两条指令的方式执行运算中运算指令的格式示意图。图13是本专利技术的神经网络位宽配置指令的格式示意图。图14是本专利技术的神经网络运算指令的格式示意图。图15是本专利技术的矩阵-矩阵位宽配置指令的格式示意图。图16是本专利技术的矩阵-矩阵运算指令的格式示意图。图17是本专利技术的向量-向量位宽配置指令的格式示意图。图18是本专利技术的向量-向量运算指令的格式示意图。图19是本专利技术的矩阵-向量位宽配置指令的格式示意图。图20是本专利技术的矩阵-向量运算指令的格式示意图。图21是本专利技术实施例的运算装置采用两条指令的方式执行运算的流程图。具体实施方式本专利技术公开了一种能支持不同位宽运算数据的运算单元、运算方法及运算装置,通过配置指令中的位宽域来配置参与运算的运算数据位宽,在根据指令执行运算时,首先判断是否存在与运算数据位宽相同的运算器,如果是,将该运算数据直接传给相应的运算器,否则,生成运算器合并策略,并根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合该运算数据的位宽,并将该运算数据传给该新的运算器;再令获得该运算数据的运算器执行神经网络运算/矩阵运算/向量运算。本专利技术能够支持不同位宽运算数据的运算,以实现高效的神经网络运算、矩阵运算及向量运算,同时,节省运算器的数量,减少硬件面积。为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术进一步详细说明。图1是本专利技术提供的运算装置的结构示意图,如图1所示,该运算装置包括:存储单元,用于存储神经元/矩阵/向量,在一实施方式中,该存储单元可以是高速暂存存储器(ScratchpadMemory),能够支持不同长度和不同位宽的神经元/矩阵/向量数据,将必要的运算数据暂存在高速暂存存储器上,使本运算装置在进行神经网络运算以及矩阵/向量运算过程中可以更加灵活有效地支持不同长度和不同位宽的数据。高速暂存存储器可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。寄存器单元,用于存储神经元/矩阵/向量地址,其中:神经元地址为神经元在存储单元中存储的地址、矩阵地址为矩阵在存储单元中存储的地址、向量地址为向量在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放神经元/矩阵/向量地址,还存放有标量数据。当涉及到矩阵/向量与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵/向量地址,还要从寄存器单元中获取相应的标量。控制单元,用于控制装置中各个模块的行为。在一实施方式中,控制单元读取准备好的指令,进行译码生成多条微指令,发送给装置中的其他模块,其他模块根据得到的微指令执行相应的操作。运算单元,用于获取指令,根据指令在寄存器单元中获取神经元/矩阵/向量地址,然后,根据该神经元/矩阵/向量地址在存储单元中获取相应的神经元/矩阵/向量,从而对该运算数据(神经元/矩阵/向量)执行运算。运算单元执行的运算包括但不限于:卷积神经网络正向运算操作、卷积神经网络训练操作、神经网络Pooling运算操作、fullconnection神经网络正向运算操作、fullconnection神经网络训练操作、batchnormalization运算操作、RBM神经网络运算操作、矩阵-向量乘运算操作、矩阵-矩阵加/减运算操作、向量外积(张量)运算操作、向量内积运算操作、向量四则运算操作、向量逻辑运算操作、向量超越函数运算操作、向量比较运算操作、求向量最大/最小值运算操作、向量循环移位运算操作、生成服从一定分布的随机向量运算操作。运算单元在执行运算的过程中,根据指令中操作数所指示的运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,一个或多个运算器具有不同的位宽,例如,有的运算器支持16位的数据运算,有的运算器支持32位的数据运算,运算器实质上可以是向量乘法部件、累加部件和标量乘法部件等。本文档来自技高网...
一种能支持不同位宽运算数据的运算单元、方法及装置

【技术保护点】
一种运算单元,用于根据运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,所述一个或多个运算器具有不同的位宽,其特征在于,运算单元包括判断子模块、运算器合并子模块和运算子模块;判断子模块用于判断是否存在与该运算数据位宽相同的运算器,如果是,将该运算数据传给相应的运算器,否则,将运算器合并策略及该运算数据传递给运算器合并子模块;运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合运算数据的位宽,并将该运算数据传给该新的运算器;运算子模块用于令获得该运算数据的运算器执行运算。

【技术特征摘要】
1.一种运算单元,用于根据运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,所述一个或多个运算器具有不同的位宽,其特征在于,运算单元包括判断子模块、运算器合并子模块和运算子模块;判断子模块用于判断是否存在与该运算数据位宽相同的运算器,如果是,将该运算数据传给相应的运算器,否则,将运算器合并策略及该运算数据传递给运算器合并子模块;运算器合并子模块用于根据运算器合并策略将多个运算器合并成一个新的运算器,以使该新的运算器的位宽符合运算数据的位宽,并将该运算数据传给该新的运算器;运算子模块用于令获得该运算数据的运算器执行运算。2.根据权利要求1所述的运算单元,其特征在于,所述运算单元根据一指令执行运算,其中,所述指令包括:操作码,用于指示该指令的运算类型;操作数,用于作为运算数据或用于指示运算数据的存储地址;位宽域,用于指示运算数据的位宽;所述运算单元执行该指令,根据指令中的位宽域确定运算数据的位宽,并选择相应的运算器,然后将指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。3.根据权利要求1所述的运算单元,其特征在于,所述运算单元根据位宽配置指令和运算指令执行运算,所述位宽配置指令包括操作码和位宽域,所述运算指令包括操作码和操作数,其中,所述操作码用于指示该指令的运算类型;所述操作数用于作为运算数据或用于指示运算数据的存储地址;所述位宽域用于指示指令中各个操作数的位宽;所述运算单元依次执行位宽配置指令和运算指令,根据位宽配置指令中的位宽域确定运算指令中操作数的位宽,并选择相应的运算器,然后将运算指令中的操作数传给相应的运算器,运算器根据操作数获取运算数据,并执行操作码所指示的运算。4.根据权利要求1所述的运算单元,其特征在于,所述运算器合并策略为,合并一个或多个最接近运算数据位宽的运算器。5.根据权利要求1所述的运算单元,其特征在于,所述操作数为运算数据或运算数据存储位置,所述运算器根据该操作数获得相应的运算数据后,执行运算。6.根据权利要求1所述的运算单元,其特征在于,所述运算数据为向量、矩阵和神经元中的一种。7.一种运算方法,用于根据运算数据的位宽,选择相应的一个或多个运算器以执行运算,其中,所述一个或多个运算器具有不同的位宽,其特征在于,方法包括:S1,判断是否存在与该运算数据位宽相同...

【专利技术属性】
技术研发人员:陈天石郭崎杜子东
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

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

1