运算方法、装置及相关产品制造方法及图纸

技术编号:24454764 阅读:24 留言:0更新日期:2020-06-10 15:13
本公开涉及一种运算方法、装置及相关产品。机器学习装置包括一个或多个指令处理装置,从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果传递给其他处理装置;当机器学习运算装置包含多个指令处理装置时,多个指令处理装置间可以通过特定的结构进行连接并传输数据。多个指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据;多个指令处理装置共享同一控制系统或拥有各自的控制系统、且共享内存或者拥有各自的内存;多个指令处理装置的互联方式是任意互联拓扑。本公开实施例所提供的运算方法、装置及相关产品,对多个中间结果进行循环累加运算,降低了数据访存量和计算量,保证了计算精度。

Calculation method, device and related products

【技术实现步骤摘要】
运算方法、装置及相关产品
本公开涉及计算机
,尤其涉及一种数据处理装置、方法及相关产品。
技术介绍
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大,对如运算器的数量等硬件的要求也不断提高。相关技术中,通过减少或降低数据访存量、计算量的方式降低硬件需求,但会对计算的精度造成损失。如何在保证精度的前提下,降低数据访存量、计算量是亟待解决的问题。
技术实现思路
有鉴于此,本公开提供了一种数据处理装置、方法及相关产品,以解决保证计算精度与降低数据访存量、计算量无法同时满足的问题。根据本公开的第一方面,提供了一种数据处理装置,所述装置用于执行机器学习计算,所述装置包括控制模块和处理模块,所述处理模块包括数据传递子模块和累加子模块:所述控制模块用于获取计算指令,并获取执行所述计算指令所需的输入数据;所述数据传递子模块用于根据所述计算指令对所述输入数据进行处理,得到多个中间结果,并将所述多个中间结果依次发送至所述累加子模块;所述累加子模块用于对所述多个中间结果进行循环累加运算,得到所述计算指令的计算结果。根据本公开的第二方面,提供了一种机器学习运算装置,所述装置包括:一个或多个上述第一方面所述的数据处理装置,用于从其他处理装置中获取输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行连接并传输数据;其中,多个所述数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数据处理装置的互联方式是任意互联拓扑。根据本公开的第三方面,提供了一种组合处理装置,所述装置包括:上述第二方面所述的机器学习运算装置、通用互联接口和其他处理装置;所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。根据本公开的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。根据本公开的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。根据本公开的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。根据本公开的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。根据本公开的第八方面,提供了一种数据处理方法,所述方法应用于数据处理装置,所述装置用于执行机器学习计算,所述方法包括:获取计算指令,并获取执行所述计算指令所需的输入数据;根据所述计算指令对所述输入数据进行处理,得到多个中间结果,并将所述多个中间结果依次发出;对所述多个中间结果进行循环累加运算,得到所述计算指令的计算结果。本公开实施例所提供的数据处理装置、方法及相关产品,该装置包括:控制模块和处理模块,处理模块包括数据传递子模块和累加子模块。控制模块用于获取计算指令,并获取执行计算指令所需的输入数据。数据传递子模块用于根据计算指令对输入数据进行处理,得到多个中间结果,并将多个中间结果依次发送至累加子模块。累加子模块用于对多个中间结果进行循环累加运算,得到计算指令的计算结果。本公开实施例所提供的数据处理装置、方法及相关产品,通过对多个中间结果进行循环累加的方式降低了数据访存量和计算量,同时保证计算的精度无损,且能够有效提高数据处理速度。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。附图说明包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。图1示出根据本公开一实施例的数据处理装置的框图。图2示出根据本公开一实施例的数据处理装置的应用场景的示意图。图3示出根据本公开一实施例的数据处理装置的框图。图4示出根据本公开一实施例的数据处理装置的框图。图5a-图5d示出根据本公开一实施例的数据处理装置中处理模块的框图。图6a、图6b示出根据本公开一实施例的组合处理装置的框图。图7示出根据本公开一实施例的板卡的结构示意图。图8示出根据本公开一实施例的数据处理方法的流程图。具体实施方式以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。图1示出根据本公开一实施例的数据处理装置的框图。该装置用于执行机器学习计算。如图1所示,该装置包括控制模块11和处理模块12。处理模块12包括数据传递子模块121和累加子模块122。控制模块11用于获取计算指令,并获取执行计算指令所需的输入数据。数据传递子模块121用于根据计算指令对输入数据进行处理,得到多个中间结果,并将多个中间结果依次发送至累加子模块122。累加子模块122用于对多个中间结果进行循环累加运算,得到计算指令的计算结果。在本实施例中,循环累加运算可以是将“当前运算周期”对中间结果进行加法计算得到的累加结果,在“之后运算周期”的对中间结果进行加法运算时,将中间结果与累加结果相加得到新的累加结果。“之后运算周期”可以是“当前运算周期”之后的第一个、第二个、第三个等运算周期,可以根据装置的计算能力等时机需要对“之后运算周期”是“当前运算周期”之后的第几个运算周期进行设置,本公开对此不作限制。在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。本公开实施例所提供的数据处理装置,包括:控制模块和处理模块,处理模块包括数据传递子模块和累加子模块。控制模块用于获取计算指令,并获取执行计算指令所需的输入数据。数据传递子模块用于根据计算指令对输入数据进行处理,得到多个中间结果,并将多个中间结果依次发送至累加子模块。累加子模块用于对多个中间结果进行循环累加运算本文档来自技高网...

【技术保护点】
1.一种数据处理装置,其特征在于,所述装置用于执行机器学习计算,所述装置包括控制模块和处理模块,所述处理模块包括数据传递子模块和累加子模块:/n所述控制模块用于获取计算指令,并获取执行所述计算指令所需的输入数据;/n所述数据传递子模块用于根据所述计算指令对所述输入数据进行处理,得到多个中间结果,并将所述多个中间结果依次发送至所述累加子模块;/n所述累加子模块用于对所述多个中间结果进行循环累加运算,得到所述计算指令的计算结果。/n

【技术特征摘要】
1.一种数据处理装置,其特征在于,所述装置用于执行机器学习计算,所述装置包括控制模块和处理模块,所述处理模块包括数据传递子模块和累加子模块:
所述控制模块用于获取计算指令,并获取执行所述计算指令所需的输入数据;
所述数据传递子模块用于根据所述计算指令对所述输入数据进行处理,得到多个中间结果,并将所述多个中间结果依次发送至所述累加子模块;
所述累加子模块用于对所述多个中间结果进行循环累加运算,得到所述计算指令的计算结果。


2.根据权利要求1所述的装置,其特征在于,所述累加子模块对所述多个中间结果进行循环累加运算,包括:
在接收到中间结果的第一运算周期,将所述中间结果与第一运算周期的第一中间数据相加,得到第一累加结果;
将所述第一累加结果存储为下一个运算周期的第一中间数据;
在未接收到中间结果的第二运算周期,将第二运算周期的第一中间数据确定为所述计算结果,
其中,初始运算周期的第一中间数据的值为零。


3.根据权利要求1所述的装置,其特征在于,所述累加子模块对所述多个中间结果进行循环累加运算,包括:
在接收到中间结果的第三运算周期,将所述中间结果与第三运算周期的第三中间数据相加,得到第二累加结果;
将第三运算周期的第二中间数据存储为下一个运算周期的第三中间数据,并将所述第二累加结果存储为下一个运算周期的第二中间数据;
在未接收到中间结果的第四运算周期,将第四运算周期的第二中间数据与第四运算周期的第三中间数据相加,得到所述计算结果,
其中,初始运算周期的第二中间数据及第三中间数据的值为零。


4.根据权利要求1-3任一项所述的装置,其特征在于,所述机器学习计算包括:人工神经网络运算,所述输入数据包括:输入神经元数据和权值数据;所述计算结果为输出神经元数据。


5.根据权利要求4所述的装置,其特征在于,所述输入数据的数据类型包括指数型和动态定点型中的至少一项,所述输入神经元数据和所述权值数据的数据类型不同,
其中,所述数据传递子模块用于根据所述计算指令对所述输入数据进行处理,得到多个中间结果,包括:
所述数据传递子模块用于根据所述计算指令对权值数据或所述输入神经元数据进行移位运算,得到中间结果,
其中,所述指数型的输入数据包括指数位,以指定值为底数、指数位存储的数据为指数进行计算所得到的数据表示所述指数型的输入数据的数值,
所述动态定点型的输入数据包括小数点位和整数位,所述小数点位所存储数据用于标记所述动态定点型的输入数据的小数点在所述整数位所存储数据中的位置,以区分所述整数位的数据中的整数部分和小数部分,
其中,所述指数型的输入数据所对应的指定值与所述输入数据的进位制相同。


6.根据权利要求1所述的装置,其特征在于,所述处理模块包括主处理子模块和多个从处理子模块,所述主处理子模块包括所述数据传递子模块和所述累加子模块,
所述控制模块,还用于解析所述计算指令得到多个运算指令,并将所述输入数据以及所述多个运算指令发送至所述主处理子模块;
所述主处理子模块,用于对所述输入数据执行前序处理,以及与所述多个从处理子模块进行数据和运算指令的传输;
所述多个从处理子模块,用于根据从所述主处理子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理子模块;
所述主处理子模块,还用于对所述多个中间结果执行后续处理,得到所述计算指令的计算结果。


7.根据权利要求1所述的装置,其特征在于,
所述装置还包括:存储模块,用于存储所述输入数据;
其中,所述控制模块,包括:
指令存储子模块,用于存储所述计算指令;
指令处理子模块,用于对所述计算指令进行解析,得到所述计算指令的多个运算指令;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述多个运算指令;
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。


8.一种机器学习运算装置,其特征在于,所述装置包括:
一个或多个如权利要求1-7任一项所述的数据处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述数据处理装置时,所述多个所述数据处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述数据处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据处理装置共享内存或者拥有各自的内存;多个所述数据处理装置的...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海;31

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

1