集成电路芯片装置及相关产品的制作方法

文档序号:18602226发布日期:2019-09-03 22:48阅读:141来源:国知局
集成电路芯片装置及相关产品的制作方法

本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。



背景技术:

人工神经网络(artificialneuralnetwork,即ann),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于cpu(centralprocessingunit,中央处理器)或gpu(英文:graphicsprocessingunit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。



技术实现要素:

本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。

第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路(即部分或全部基础处理电路)包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;

所述主处理电路,用于获取输入数据块、权值数据块以及乘法指令,依据所述乘法指令将所述输入数据块划分成分发数据块,将所述权值数据块划分成广播数据块;依据所述乘法指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述乘法指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;

所述多个基础处理电路,用于依据所述乘法指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;

所述主处理电路,用于将所述运算结果处理得到所述乘法指令的指令结果。

第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。

第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;

所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。

第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。

第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。

第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。

可以看出,通过本披露实施例,提供映射电路将数据块压缩处理后再进行运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。

附图说明

图1a是一种集成电路芯片装置结构示意图。

图1b是另一种集成电路芯片装置结构示意图。

图1c是一种基础处理电路的结构示意图。

图2为一种矩阵乘以向量流程示意图。

图2a是矩阵乘以向量的示意图。

图2b为一种矩阵乘以矩阵流程示意图。

图2c是矩阵ai乘以向量b的示意图。

图2d是矩阵a乘以矩阵b的示意图。

图2e是矩阵ai乘以矩阵b的示意图。

图3为本披露实施例流提供的一种神经网络芯片的结构示意图;

图4a-图4b为本申请实施例提供的两种映射电路的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

在第一方面提供的装置中,所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;

所述主处理电路,用于获取输入数据块、权值数据块以及乘法指令,依据所述乘法指令将所述输入数据块划分成分发数据块,将所述权值数据块划分成广播数据块;依据所述乘法指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述分发数据块和/或所述广播数据块;依据所述乘法指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;

所述多个基础处理电路,用于依据所述乘法指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;所述主处理电路,用于将所述运算结果处理得到所述乘法指令的指令结果。

在第一方面提供的装置中,当所述第一数据块包括分发数据块和广播数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块和所述广播数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块、处理后的广播数据块以及该广播数据块关联的标识数据块;将所述处理后分发数据块和该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;

所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块以及所述广播数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据块对所述基本数据块以及所述广播数据块进行处理,对处理后的基本数据块以及处理后的广播数据块执行乘积运算得到运算结果,将所述运算结果发送至所述主处理电路。

其中,所述标识数据块具体可用直接索引或者步长索引的方式来表示,可选的还可用列表的列表(listoflists,lil)、坐标列表(coordinatelist,coo)、压缩稀疏行(compressedsparserow,csr)、压缩稀疏列(compressedsparsecolumn,csc)、(ellpack,ell)以及混合(hybird,hyb)等方式表示,本申请不做限定。

以所述标识数据块用直接索引的方式表示为例,所述标识数据块具体可为是由0和1构成的数据块,其中,0表示数据块中包含的数据(如权值或输入神经元)的绝对值小于或等于第一阈值,1表示数据块中包含的数据(如权值或输入神经元)的绝对值大于第一阈值,第一阈值为用户侧或装置侧自定义随机设置的,例如0.05、0等等。

为节省数据传输量、提高数据传输效率,在所述主处理电路向所述基础处理电路发送数据的过程中,具体可将所述多个基本数据块中的目标数据以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;可选,还可将所述处理后的广播数据块中的目标数据以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路。其中,所述目标数据是指数据块中绝对值大于第一阈值的数据,或者是指数据块(这里具体可为处理后的分发数据块或处理后的广播数据块)中的非0数据。

例如,分发数据块为m1行n1列的矩阵,基本数据块为m2行n2列的矩阵,其中m1>m2,n1>n2。相应地,该分发数据块关联的标识数据块同样也为m1行n1列的矩阵,该基本数据块关联的标识数据块同样为m2行n2列的矩阵。以基本数据块为2*2的矩阵为例,设为第一阈值为0.05,则该基本数据块关联的标识数据块为关于第一映射电路和第二映射电路对数据块的处理将在后文进行具体阐述。

在第一方面提供的装置中,当所述第一数据块包括分发数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述分发数据块进行处理得到处理后的分发数据块以及该分发数据块关联的标识数据块,或者启动所述第一映射电路根据预存所述分发数据块关联的标识数据块对所述分发数据块进行处理得到处理后的分发数据块;将所述处理后的分发数据块以及该分发数据块关联的标识数据块进行拆分得到多个基本数据块以及所述多个基本数据块各自关联的标识数据块;将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路;将所述广播数据块广播至与其连接的基础处理电路;

所述基础处理电路,用于启动所述第二映射电路依据所述基本数据块关联的标识数据块对所述广播数据块进行处理,对处理后的广播数据块以及所述基本数据块执行乘积运算得到运算结果,将所述运算结果发送至所述主处理电路。

在可选实施例中,所述主处理电路,还具体用于将所述广播数据块或处理后的广播数据块以及该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。

相应地,所述基础处理电路,具体用于启动所述第二映射电路根据所述部分广播数据块关联的标识数据块以及所述基本数据块关联的标识数据块得到连接标识数据块;根据所述连接标识数据对所述部分广播数据块以及所述基本数据块进行处理得到处理后的部分广播数据块以及处理后的基本数据块;对所述处理后的部分广播数据块以及所述处理后的基本数据块执行内积运算。

其中,该连接标识数据块是通过对所述基本数据块关联的标识数据块和所述部分广播数据块关联的标识数据块进行逐元素与操作而获得的数据块。可选的,该连接标识数据块用于表示两个数据块(具体为基本数据块以及广播数据块)中数据均大于绝对值的数据。具体在后文进行详述。

例如,分发数据块关联的标识数据块为2*3的矩阵部分广播数据块关联的标识数据块为2*2的矩阵则对应获得的连接标识数据块为

在可选实施例中,所述主处理电路,还具体用于将所述广播数据块进行拆分处理得到多个部分广播数据块;将所述多个部分广播数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。

相应地,所述基础处理电路具体用于根据所述基本数据块关联的标识数据块对所述部分广播数据块进行处理得到处理后的部分广播数据块;对所述基本数据块以及所述处理后的部分广播数据块执行内积运算。

在第一方面提供的装置中,当所述第一数据块包括广播数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述广播数据块进行处理得到处理后的广播数据块以及该广播数据块关联的标识数据块,或者启动所述第一映射电路依据预存的所述广播数据块关联的标识数据块对所述广播数据块进行处理得到处理后的广播数据块;将所述分发数据块进行拆分得到多个基本数据块;将所述多个基本数据分发至与其连接的基础处理电路;将所述处理后的广播数据块以及该广播数据块关联的标识数据块广播至与其连接的基础处理电路;

所述基础处理电路,用于启动所述第二映射电路依据所述广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述处理后的广播数据块执行乘积运算得到运算结果,将所述运算结果发送至所述主处理电路。

在可选实施例中,所述主处理电路,还具体用于将所述处理后的广播数据块和该广播数据块关联的标识数据块进行拆分处理得到多个部分广播数据块以及所述多个部分广播数据块关联的标识数据块;将所述多个部分广播数据块以及所述多个部分广播数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分广播数据块组合形成所述广播数据块或处理后的广播数据块。

相应地,所述基础处理电路具体用于根据所述部分广播数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分广播数据块执行内积运算。

在第一方面提供的装置中,所述基础处理电路,具体用于对该基本数据块与该广播数据块执行乘积运算得到乘积结果,将所述乘积结果累加得到运算结果,将所述运算结果发送至所述主处理电路;所述主处理电路,用于在对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果。

在第一方面提供的装置中,所述主处理电路,具体用于将该广播数据块(具体可为所述广播数据块或者处理后的广播数据块)通过一次广播发送至与其连接的所述基础处理电路。

在第一方面提供的装置中,所述基础处理电路,具体用于将该基本数据块(同理可为所述基本数据块或处理后的基本数据块)与该广播数据块执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路。

在第一方面提供的装置中,所述主处理电路,用于在如所述运算结果为内积处理的结果时,对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果。

在第一方面提供的装置中,所述主处理电路,具体用于将所述广播数据块分成多个部分广播数据块,将所述多个部分广播数据块通过多次广播至所述基础处理电路;所述多个部分广播数据块组合形成所述广播数据块。

在第一方面提供的装置中,所述基础处理电路,具体用于将该部分广播数据块(具体可为部分广播数据块或者处理后的部分广播数据块)与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。上述内积处理具体可以为:如部分广播数据块的元素为矩阵b的前2个元素,即为b10和b11;该基本数据块为输入数据矩阵a的第一行的前2个元素,即a10和a11,则内积=a10*b10+a11*b11。

在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分广播数据块执行该部分广播数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。

在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;

所述基础处理电路包括:基本寄存器或基本片上缓存电路。

在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路、第一映射电路或数据重排电路中的一种或任意组合。

在第一方面提供的装置中,所述分支处理电路包含多个分支处理电路,所述主处理电路与所述多个分支处理电路分别连接,每个分支处理电路与至少一个基础处理电路连接。

在第一方面提供的装置中,所述基础处理电路,还具体用于将该广播数据块和基本数据块转发给其他基础处理电路以先进行数据处理再执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路;

所述主处理电路,用于对所述运算结果处理得到所述待计算的数据块以及运算指令的指令结果。

在第一方面提供的装置中,所述数据块可用张量表示,其具体可为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。

在第一方面提供的装置中,如所述运算指令为乘法指令,所述主处理电路确定乘数数据块为广播数据块,被乘数数据块为分发数据块;

如所述运算指令为卷积指令,所述主处理电路确定输入数据块为广播数据块,卷积核为分发数据块。

在第六方面提供的方法中,所述神经网络的运算包括:卷积运算、矩阵乘矩阵运算、矩阵乘向量运算、偏执运算、全连接运算、gemm运算、gemv运算、激活运算中的一种或任意组合。

参阅图1a,图1a为一种集成电路芯片装置的结构示意图,如图1a所示,该芯片装置包括:主处理电路、基本处理电路和分支处理电路(可选的)。其中,

主处理电路可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、alu(arithmeticandlogicunit,算数逻辑单元)电路、累加器电路、dma(directmemoryaccess,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路;

可选的,主处理电路可以包括:第一映射电路,第一映射电路可以用于对接收或发送的数据进行处理,以得到处理后的数据以及该数据关联的标识mask数据,该标识mask数据用于指示该数据的绝对值是否大于预设阈值,可选的,该mask数据可为0或1,其中0表示数据的绝对值小于或等于预设阈值;反之,1表示数据的绝对值大于预设阈值。该预设阈值为用户侧或终端设备侧自定义设置的,例如0.1或0.05等等。在实际应用中,通过第一映射电路可将数据为0或者不大于预设阈值(如0.1)的数据进行剔除,或将这些数据置为0。其优点是,减少主处理电路向基础处理电路传输的数据量、减少基础处理电路中数据运算的计算量,提升数据处理效率。本发明并不限制上述第一映射电路的具体形式。关于所述第一映射电路的具体实现将在下文进行阐述。

例如,主处理电路的输入数据为矩阵数据块经过第一映射电路处理后可获得处理后的矩阵数据块为该矩阵数据块关联的标识数据块为关于第一映射电路的具体处理将在后文进行详述。

相应地,在主处理电路向基础处理电路分发数据时,可仅发送1和0.5这两个数据,并非发送处理后的矩阵数据块,8个数据;同时还需将该矩阵数据块关联的标识数据块一起发送给基础处理电路,以便基础处理电路根据接收的标识数据块和接收的两个数据(1和0.5),对应获知这两个数据位于原矩阵数据块的位置。即是,所述基础处理电路可根据接收的标识数据块以及接收的数据,对应还原出主处理电路中处理后的矩阵数据块。

主处理电路还包括数据发送电路、数据接收电路或接口,该数据发送电路可以集成数据分发电路以及数据广播电路,当然在实际应用中,数据分发电路以及数据广播电路也可以分别设置;在实际应用中上述数据发送电路以及数据接收电路也可以集成在一起形成数据收发电路。对于广播数据,即需要发送给每个基础处理电路的数据。对于分发数据,即需要有选择的发送给部分基础处理电路的数据,具体的选择方式可以由主处理电路依据负载以及计算方式进行具体的确定。对于广播发送方式,即将广播数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将广播数据发送至每个基础处理电路,也可以通过多次广播的方式将广播数据发送至每个基础处理电路,本申请具体实施方式并不限制上述广播的次数),对于分发发送方式,即将分发数据有选择的发送给部分基础处理电路。

在实现分发数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据(该数据可以相同,也可以不同,具体的,如果采用分发的方式发送数据,各个接收数据的基础处理电路收到的数据可以不同,当然也可以有部分基础处理电路收到的数据相同;

具体地,广播数据时,主处理电路的控制电路向部分或者全部基础处理电路传输数据,各个接收数据的基础处理电路可以收到相同的数据。

可选的,上述主处理电路的向量运算器电路可以执行向量运算,包括但不限于:两个向量加减乘除,向量与常数加、减、乘、除运算,或者对向量中的每个元素执行任意运算。其中,连续的运算具体可以为,向量与常数加、减、乘、除运算、激活运算、累加运算等等。

每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。

该芯片装置可选的还可以包括一个或多个分支处理电路,如具有分支处理电路时,其中主处理电路与分支处理电路连接,该分支处理电路与基本处理电路连接,该基本处理电路的内积运算器电路用于执行数据块之间的内积运算,该主处理电路的控制电路控制数据接收电路或数据发送电路收发外部数据,以及通过控制电路控制数据发送电路将外部数据分发至分支处理电路,该分支处理电路用于收发主处理电路或基本处理电路的数据。如图1a所示的结构适合复杂数据的计算,因为对于主处理电路来说,其连接的单元的数量有限,所以需要在主处理电路与基本处理电路之间添加分支处理电路以实现更多的基本处理电路的接入,从而实现对复杂数据块的计算。分支处理电路和基础处理电路的连接结构可以是任意的,不局限在图1a的h型结构。可选的,主处理电路到基础处理电路是广播或分发的结构,基础处理电路到主处理电路是收集(gather)的结构。广播,分发和收集的定义如下,对于分发或广播结构,此时的基础处理电路的数量大于主处理电路,即1个主处理电路对应多个基础处理电路,即从主处理电路到多个基础处理电路为广播或分发的结构,反之,从多个基础处理电路到主处理电路可以为收集结构。

基础处理电路,接收主处理电路分发或者广播的数据保存到基础处理电路的片上缓存中,可以进行运算产生结果,可以向主处理电路发送数据。可选的,基础处理电路还可先对接收的数据进行处理,将处理后的数据保存至片上缓存中,还可利用处理后的数据进行运算产生结果,可选的还可将处理后的数据发送给其他基础处理电路或主处理电路等,本申请不做限定。

可选的,每个基础处理电路均可以包括第二映射电路,也可以在部分基础处理电路中配置第二映射电路;第二映射电路可以用于对接收或发送的数据进行处理(即压缩处理)。本发明并不限制上述第二映射电路的具体形式。关于第二映射电路的具体实施将在下文进行详述。

可选的,该基础处理电路的向量运算器电路可以对两个向量(两个向量中的任一个或两个均可为处理后的向量)执行的向量运算,当然在实际应用中,基础处理电路的内积运算器电路可以对两个向量执行内积运算,累加器电路也可以对内积运算的结果进行累加。

在一种可选方案中,两个向量可以存放在片上缓存和/或寄存器中,基础处理电路可以根据实际计算的需要提取两个向量执行运算。该运算包括但不限于:内积运算、乘法运算、加法运算或其他的运算。

在一种可选方案中,内积运算的结果可以累加到片上缓存和/或寄存器上;其可选方案的优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。

在一种可选方案中,内积运算的结果不进行累加,直接作为结果传输;此技术方案的优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

在一种可选方案中,每个基础处理电路可以执行多组两个向量的内积运算,也可以对多组内积运算的结果分别进行累加;

在一种可选方案中,多组的两个向量数据可以存放在片上缓存和/或寄存器中;

在一种可选方案中,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;

在一种可选方案中,各组内积运算的结果可以不进行累加,直接作为结果传输;

在一种可选方案中,每个基础处理电路可以执行同一个向量与多个向量分别进行内积运算的操作(“一对多”内积,即多组内积里每组的两个向量中有一个向量是共享的),并将每个向量对应的内积结果分别进行累加。此技术方案可以实现同一套权值对不同的输入数据进行多次计算,增加了数据复用,减少基础处理电路内部数据的数据传输量,提高计算效率,降低功耗。

具体地,计算内积使用的数据中,各组共享的向量和每组的另一个向量(即每组之间不同的那个向量)的数据来源可以不同:

在一种可选方案中,在计算内积时,各组共享的向量来自主处理电路或者分支处理电路的广播或者分发;

在一种可选方案中,在计算内积时,各组共享的向量来自片上缓存;

在一种可选方案中,在计算内积时,各组共享的向量来自寄存器;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自主处理电路或者分支处理电路的广播或者分发;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自从片上缓存;

在一种可选方案中,在计算内积时,每组的另一个非共享向量来自寄存器;

在一种可选方案中,在进行多组的内积运算时,每组共享的向量在基础处理电路的片上缓存和/寄存器中保留任意份数;

在一种可选方案中,共享向量可以对应每组内积各保留一份;

在一种可选方案中,共享向量可以只保留一份;

具体地,多组内积运算的结果可以分别累加到片上缓存和/或寄存器中;

具体地,各组内积运算的结果可以不进行累加,直接作为结果传输;

在一种可选方案中,基础处理电路中涉及的向量或矩阵可为经过第二映射电路处理后的向量或矩阵,具体将在后文阐述。

参阅图1a所示的结构,其包含一主处理电路(可以执行向量操作),多基础处理电路(可以执行内积操作)。这样组合的好处是:装置不仅能使用基础处理电路执行矩阵和向量乘法运算,也能使用主处理电路执行其他任意的向量运算,使装置在有限的硬件电路的配置下,能够更快的完成更多的运算,减少了与装置外部进行数据传输的次数,提高了计算效率,降低了功耗。另外,本芯片在主处理电路中可设置第一映射电路,以执行神经网络中数据的处理,如将小于或等于预设阈值的第一输入数据剔除,同时还可得到该第一输入数据对应关联的标识mask数据,该mask数据用于表示第一输入数据的绝对值是否大于预设阈值。具体可参见前述实施例所述,这里不再赘述。这样设计的优点,可减少向基础处理电路传输的数据量,减少基础处理电路数据的计算量,提高数据处理速率、降低功耗。

在基础处理电路中可设置第二映射电路,以执行神经网络中数据的处理,例如根据第一输入数据关联的mask数据对第二输入数据进行处理或者根据第一输入数据关联的mask数据和第二输入数据关联的mask数据选取绝对值大于预设阈值的第一输入数据和第二输入数据执行相应的运算操作的等等。关于第一映射电路和第二映射电路对数据的具体处理可参见后文详述。

可选的,所述第一映射电路和所述第二映射电路均用于对数据进行处理,其具体可设计到以下电路中的任一项或多项中:主处理电路、分支处理电路以及基础处理电路等。这样在进行神经网络计算时能够减少计算的数据量,并且本芯片可以依据各个电路(主要是主处理电路和基础处理电路)的运算量(即负载量)动态的分配由哪个电路来进行数据压缩处理,这样能够减少数据计算的复杂程序,降低功耗,并且动态的分配数据处理能够实现不影响芯片的计算效率。该分配的方式包括但不限于:负载均衡、负载最小值分配等等方式。

参阅图1b所示的装置,图1b所示的装置为无分支处理电路的计算装置,如图1b所示的装置,其包括:主处理电路以及n个基础处理电路,其中,主处理电路(具体的结构如图1c所示)与n个基础处理电路可以直接或间接连接,如为间接连接的方式时,一种可选的方案如图1a所示可以包括n/4个分支处理电路,每个分支处理电路分别连接4个基础处理电路,对于主处理电路以及n个基础处理电路分别包含的电路可以参见上述如图1a所示的描述,这里不再赘述,这里需要说明的是,上述基础处理电路还可以设置在分支处理电路内,另外,每个分支处理电路连接基础处理电路的数量也可以不局限于4个,厂家可以根据实际需要进行配置。该上述主处理电路和n个基础处理电路中可分别设计有第一映射电路和第二映射电路,具体的,可以是主处理电路包括第一映射电路,所述n个基础处理电路或其中的一部分包括第二映射电路;也可以是主处理电路包括第一映射电路和第二映射电路,还可以是指所述n个基础处理电路或其中的一部分包括第一映射电路和第二映射电路。上述主处理电路可以根据神经网络计算指令动态的分配数据压缩处理步骤的操作实体,具体的,主处理电路可以根据自身的负载确定是否对接收到的数据执行压缩处理步骤,具体的,可以将负载的值设置多个区间,每个区间对应分配数据压缩处理步骤的执行主体,例如,以3个区间为例,区间1的负载值较低,可以由n个基础处理电路执行数据压缩处理步骤。主处理电路单独执行数据压缩处理步骤,区间2负载值位于区间1以及区间3之间,可以由主处理电路单独执行数据压缩处理步骤,区间3负载值较高,可以由主处理电路或n个基础处理电路共同执行数据压缩处理步骤。对此,可以以明示的方式来执行,例如主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据压缩处理步骤,如基础处理电路未接收到特殊指示或指令时,确定不执行数据压缩处理步骤。又如,可以以暗示的方式来执行,例如,基础处理电路接收到稀疏数据(即含0,或包括小于预设阈值的数据大于预设数量)且确定需要执行内积运算时,将该稀疏数据进行压缩处理。

本申请涉及的数据压缩处理具体在前文所述的第一映射电路和第二映射电路中执行。应理解的,由于神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。特别是,针对权值较小(如为0,或小于设定数值的权值)的情况下,为提高计算速率、减小开销需对这些权值较小的数据进行压缩处理。在实际应用中,数据压缩处理在稀疏神经网络中应用,效果最为明显,如减小数据计算的工作量、减小数据额外开销,提高数据计算速率等。

以输入数据为例,阐述数据压缩处理涉及的具体实施例。所述输入数据包括但不限于至少一个输入神经元和/或至少一个权值。

第一实施例中:

第一映射电路接收到第一输入数据(具体可为主处理电路发送的待计算的数据块,如分发数据块或者广播数据块等)后,所述第一映射电路可对所述第一输入数据进行处理,以获得处理后的第一输入数据以该第一输入数据关联的标识mask数据,该mask数据用于指示该第一输入数据的绝对值是否大于第一阈值,如0.5、0等等。

具体的,当所述第一输入数据的绝对值大于第一阈值,则保留该输入数据;否则删除该第一输入数据或将该第一输入数据置为0。例如,输入的矩阵数据块为第一阈值为0.05,则经过第一映射电路处理后可获得处理后的矩阵数据块与该矩阵数据块关联的标识数据块(也可称为mask矩阵)为

进一步地,为减少数据传输量,所述主处理电路再向与其连接的基础处理电路中分发数据时,可发送所述处理后的矩阵数据块中的目标数据(本例中即为1,0.06和0.5)以及该矩阵数据块关联的标识数据块。具体实施时,所述主处理电路可按照设定规则将所述处理后的矩阵数据块中的目标数据分发至基础处理电路中,例如按照行顺序依次发送或者按照列顺序依次等等,本申请不做限定。相应地,基础处理电路在接收到所述目标数据以及该目标数据对应关联的标识数据块后,按照设定规则(例如行顺序)将其还原为处理后的矩阵数据块。例如本例中,基础处理电路可根据接收的数据(1,0.06和0.5)以及标识数据块可获知该数据对应的矩阵数据块(即主处理电路中第一映射电路处理后的矩阵数据块)为

在本发明实施例中,该第一输入数据可为分发数据块和/或广播数据块。

相应地,第二映射电路可利用第一输入数据关联的标识数据对第二输入数据进行处理,从而获得处理后的第二输入数据;其中第一输入数据与所述第二输入数据不同。例如当所述第一输入数据为至少一个权值时,则所述第二输入数据可为至少一个输入神经元;或者,当所述第一输入数据为至少一个输入神经元时,则所述第二输入数据可为至少一个权值。

在本发明实施例中,该第二输入数据与所述第一输入数据不同,所述第二输入数据可为以下中的任一个:分发数据块、基本数据块、广播数据块以及部分广播数据块。

例如,当所述第一输入数据为分发数据块时,则第二输入数据为部分广播数据块。假设第二输入数据为矩阵数据块相应地利用上例中mask矩阵处理后,获得处理后的部分广播数据块为由于在实际应用中,输入数据涉及的矩阵数据块维数较大,本申请这里仅为示意,本不构成限定。

第二实施例中:

所述第一映射电路可用于对第一输入数据和第二输入数据进行处理,以得到处理后的第一输入数据以及所述第一输入数据关联的第一标识mask数据、处理后的第二输入数据以及所述第二输入数据关联的第二标识mask数据。其中,所述第一mask数据或者第二mask数据用于指示第一或第二输入数据的绝对值是否大于第二阈值,该第二阈值为用户侧或装置侧自定义设置的,例如0.05、0等等。

所述处理后的第一输入数据或第二输入数据可为处理后的输入数据,也可为未处理前的输入数据。例如,第一输入数据为分发数据块,如上述例子中的矩阵数据块经过第一映射电路处理后可获得处理后的分发数据块,这里处理后的分发数据块可为原矩阵数据块也可为压缩处理后的矩阵数据块应理解的,本申请为减少数据量的传输以及基础处理电路中数据处理效率,优选地所述处理后的输入数据(如处理后的基本数据块或部分广播数据块等)应为压缩处理后的数据。优选地,主处理电路向基础处理电路中发送的数据,具体可为所述处理后的输入数据中的目标数据,该目标数据具体可为绝对值大于预设阈值的数据,也可为非0数据等等。

相应地在基础处理电路中,第二映射电路可根据所述第一输入数据关联的第一标识数据以及所述第二输入数据关联的第二标识数据得到连接标识数据;该连接标识数据用于指示所述第一输入数据和所述第二输入数据中绝对值均大于第三阈值的数据,其中第三阈值为用户侧或装置侧自定义设置的,如0.05、0等。进一步地,所述第二映射电路可根据所述连接标识数据分别对接收的第一输入数据和第二输入数据进行处理,从而获得处理后的第一输入数据和处理后的第二输入数据。

例如,第一输入数据为矩阵数据块第二输入数据块同样也为矩阵数据块经过第一映射电路处理后可获得该第一输入数据关联的第一标识数据块以及处理后的第一输入数据块相应地获得该第二输入数据关联的第二标识数据块处理后的第二输入数据块为相应地,为提高数据传输速率,主处理电路中仅可将处理后的第一输入数据块中的目标数据1,0.06和0.5、以及该第一输入数据块关联的第一标识数据块发送给基础处理电路;同时,将处理后的第二输入数据块中的目标数据1,1.1,0.6,0.3和0.5,以及该第二输入数据块关联的第二标识数据块发送给基础处理电路。

相应地,基础处理电路在接收到上述数据后,可通过第二映射电路对上述第一标识数据块和第二标识数据块进行逐元素与操作,得到连接标识数据块相应地,第二映射电路利用该连接标识数据块分别对所述处理后的第一输入数据块和处理后的第二输入数据块分别进行处理,从而获得处理后的第一输入数据块为处理后的第二输入数据块为其中,在基础处理电路中可根据第一标识数据块以及接收的第一数据块中的目标数据,确定出该目标数据对应所在的第一数据块(即经过第一映射电路处理后的第一数据块);相应地,根据第二标识数据块以及接收的第二数据块中的目标数据,确定出该目标数据对应所在的第二数据块(即经过第一映射电路处理后的第二数据块);然后,在第二映射电路获知连接标识数据块后,利用该连接标识数据块分别与确定的第一数据块和确定的第二数据块进行逐元素与操作,以获得经由第二映射电路处理后的第一数据块和处理后的第二数据块。

第三实施例中:

所述主处理电路中并不会设置第一映射电路,但所述主处理电路可将第三输入数据以及预存的所述第三输入数据关联的第三标识数据发送至与其连接的基础处理电路中。该基础处理电路中设置有第二映射电路。下面阐述第二映射电路涉及的数据压缩处理的具体实施例。

应理解的,所述第三输入数据包括但不限于基础数据块、部分广播数据块、广播数据块等。同样地,在神经网络处理器中,该第三输入数据也可为至少一个权值,和/或至少一个输入神经,本申请不做限定。

在第二映射电路中,所述第二映射电路可根据接收的第三输入数据关联的第三标识数据对所述第三输入数据进行处理,从而获得处理后的第三输入数据,以便后续对处理后的第三输入数据执行相关运算操作,如内积运算等。

例如,第二映射电路接收的第三输入数据为矩阵数据块相应地预存的该第三输入数据关联的第三标识数据块(也成mask矩阵数据块)为进一步地,第二映射电路根据第三标识数据块对第三输入数据块进行处理得到处理后的第三输入数据块具体为

此外,本发明实施例中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有l层,k=1,2,3…l-1,对于第k层和第k+1层来说,第k层被称为输入层,该层中的神经元为上述输入神经元,第k+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。

第四实施中:

所述主处理电路中并不设置映射电路,在所述基础处理电路中设置有第一映射电路和第二映射电路。关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。

可选的,还存在第五实施例。第五实施例中,所述基础处理电路中并不设置映射电路,将所述第一映射电路和第二映射电路均设置在主处理电路中,关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。即是,主处理电路中完成数据的压缩处理,将处理后的输入数据发送给基础处理电路,以便基础处理电路利用处理后的输入数据(具体可为处理后的神经元和处理后权值)执行相应地的运算操作。

下面阐述本申请涉及映射电路的具体结构示意图。如图4a和4b示出两种可能的映射电路。其中,如图4a所示的映射电路包括比较器和选择器。关于所述比较器和选择器的数量本申请不做限定。如图4a示出一个比较器和两个选择器,其中,所述比较器用于判定输入数据是否满足预设条件。该预设条件可为用户侧或设备侧自定义设置的,例如本申请上述的所述输入数据的绝对值大于或等于预设阈值。如果满足预设条件,则比较器可确定允许输出该输入数据,该输入数据对应关联的标识数据为1;否则可确定不输出该输入数据,或者默认该输入数据为0。相应地,此时该输入数据对应关联的标识数据为0。也即是,经过该比较器后,可获知输入数据关联的标识数据。

进一步地,所述比较器对输入数据进行预设条件的判定后,可将获得的标识数据输入至选择器中,以便选择器利用该标识数据来决定是否输出相应地的输入数据,即获得处理后的输入数据。

如图4a,以所述输入数据为矩阵数据块为例,经过比较器可对该矩阵数据块中的每个数据进行预设条件的判定,从而可获得该矩阵数据块关联的标识数据块(mask矩阵)。进一步地,在第一选择器中可利用该标识数据块对所述矩阵数据块进行筛选,将所述矩阵数据块中绝对值大于或等于预设阈值(即满足预设条件)的数据进行保留,其余数据进行删除,以输出处理后的矩阵数据块。可选的,在第二选择器中还可利用该标识数据块对其他输入数据(例如第二矩阵数据块)进行处理,例如进行逐元素与操作,以将该第二矩阵数据块中绝对值大于或等于预设阈值的数据进行保留,以输出处理后的第二矩阵数据块。

应理解的,对应于上述第一和第二实施例中,所述第一映射电路的具体结构可包括至少一个比较器和至少一个选择器,例如上例中图4a中的比较器和第一选择器;所述第二映射电路的具体结果可包括一个或多个选择器,例如上例中图4a的第二选择器。

如图4b,示出另一种映射电路的结构示意图。如图4b,所述映射电路包括选择器,所述选择器的数量不做限定,可为一个,也可为多个。具体的,所述选择器用于根据输入的输入数据所关联的标识数据来对输入的所述输入数据进行选择,以将所述输入数据中绝对值大于或等于预设阈值的数据进行输出,其余数据进行删除/不输出,从而获得处理后的输入数据。

以所述输入数据为矩阵数据块为例,向所述映射电路输入该矩阵数据块以及该矩阵数据块关联的标识数据块,选择器可根据该标识数据块对所述矩阵数据块进行选择,将其绝对值大于或等于0的数据进行输出,其余数据不予输出,从而输出处理后的矩阵数据块。

应理解的,如图4b所示的结构可应用于上述第三实施例中的第二映射电路,即是上述第三实施例中的第二映射电路的具体结果可包括至少一个选择器。同理,对于主处理电路和基础处理电路中设计的第一映射电路和第二映射电路可按照如图4a和图4b所示的功能部件进行交叉组合或部件拆分,本申请不做限定。

下面提供一种采用如图1a所示神经网络的正向运算,神经网的装置实现计算的方法,该计算的方法具体可以为神经网络的计算方式,例如络的训练,在实际应用中,正向运算依据不同的输入数据可以执行矩阵乘矩阵、卷积运算、激活运算、变换运算等等运算,上述运算均可以采用如图1a所示的装置实现。

主处理电路的第一映射电路先对数据进行压缩处理然后由控制电路传输给基础处理电路运算,例如,主处理电路的第一映射电路可以对数据进行压缩处理后再传输给基础处理电路,其优点是可以减少传输数据的数据量,减少传输的总比特数量,基础处理电路执行数据运算的效率也更高,功耗更低。

主处理电路将待计算的数据传输到全部或者一部分基础处理电路上;以矩阵乘以向量计算为例,主处理电路的控制电路可以将矩阵数据拆分每列作为一个基础数据,例如m*n矩阵,可以拆分成n个m行的向量,主处理电路的控制电路将拆分后的n个m行的向量分发给多个基础处理电路。对于向量,主处理电路的控制电路可以将向量整体广播给每个基础处理电路。如果m的值比较大,那么控制电路可以先将m*n矩阵拆分成x*n个向量,以x=2为例,具体的可以拆分成,2n个向量,每个向量包含m/2行,即将n个m行的向量中每个向量均分成2个向量,以第一行为例,如n个m行的向量的第一个向量为1000行,那么均分成2个向量可以为,将前500行组成第一向量,将后500行组成第二向量,控制电路通过2个广播将2个向量广播给多个基础处理电路。

所述数据传输的方式可以是广播或者分发,或者其他任何可能的传输方式;

基础处理电路接收到数据后,先通过第二映射电路对数据进行处理,再执行运算,得到运算结果;

基础处理电路将运算结果传输回主处理电路;

所述运算结果可以是中间运算结果,也可以是最终运算结果。

使用如图1a所示装置可完成张量乘张量的运算,所述张量和前文所述的数据块相同,其可为矩阵、向量、三维数据块、四位数据块以及高维数据块中的任一项或多项的组合;下面如图2和2b分别示出矩阵乘向量和矩阵乘矩阵运算的具体实现方法。

使用如图1a所示装置完成矩阵乘向量的运算;(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)

下面描述计算尺寸是m行l列的矩阵s和长度是l的向量p的乘法的运算,如下图2a所示,(矩阵s中的每一行与向量p长度相同,他们中的数据按位置一一对应)所述神经网络计算装置拥有k个基础处理电路:

参阅图2,图2提供了了一种矩阵乘向量的实现方法,具体可以包括:

步骤s201、主处理电路的控制电路将矩阵s中的每一行数据分发到k个基础处理电路中的某一个上,基础处理电路将接收到的分发数据保存在基础处理电路的片上缓存和/或寄存器中;

在一种可选的方案中,所述矩阵s的数据为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵s进行处理,从而获得处理后的矩阵s以及该矩阵s关联的第一标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵s关联的第一mask矩阵对矩阵s进行处理,得到处理后的矩阵s。进一步地,通过控制电路将处理后的矩阵s中的每一行数据以及该行数据对应在第一mask矩阵中对应关联的标识数据一起发送给k个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵s中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。例如,分发到第i个基础处理电路中处理后的矩阵s中的行的集合为ai,共有mi行;相应地,同时也分发有与ai对应的标识矩阵bi,bi为第一mask矩阵的一部分,共有大于或等于mi行。

在一种可选方案中,如果矩阵s的行数m<=k则,主处理电路的控制电路给k个基础处理电路分别分发s矩阵的一行;可选的,同时还发送由该行对应在第一标识矩阵中的行的标识数据;

在一种可选方案中,如果矩阵s的行数m>k,则主处理电路的控制电路给每个基础处理电路分别分发s矩阵中一行或多行的数据。可选的,同时还发送由该一行或几行对应在第一标识矩阵中的行的标识数据;

分发到第i个基础处理电路的s中的行的集合为ai,共有mi个行,如图2c表示第i个基础处理电路上将要执行的计算。

在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中,可以将接收到的分发数据例如矩阵ai保存在第i个基础处理电路的寄存器和/或片上缓存中;优点是减少了之后的分发数据的数据传输量,提高了计算效率,降低了功耗。

步骤s202、主处理电路的控制电路将向量p中的各部分以广播的方式传输给k个基础处理电路;

在一种可选方案中,所述向量p的数据(各部分)可为处理后的数据。具体的,主处理电路启用第一映射电路对向量p进行处理,从而获得处理后的向量p以及该向量p关联的第二标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的向量p关联的第二mask矩阵对向量p进行处理,得到处理后的向量p。进一步地,通过控制电路将处理后的向量p中的数据(即各部分)以及该数据对应在第二mask矩阵中对应关联的标识数据一起发送给k个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的向量p中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的向量p的数据进行充分地复用,完成对应与矩阵ai中每一行的内积运算。优点是,减少从主处理电路到基础处理电路的向量p的重复传输的数据传输量,提高执行效率,降低传输功耗。

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量p的数据不进行复用,分次完成对应于矩阵ai中的每一行的内积运算;优点是,减少基础处理电路内部的单次传输的向量p的数据传输量,并可以降低基础处理电路缓存和/或寄存器的容量,提高执行效率,降低传输功耗,降低成本。

在一种可选方案中,主处理电路的控制电路可以将向量p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的向量p的数据进行部分复用,完成对应于矩阵ai中的每一行的内积运算;优点是,减少从主处理电路到基础处理电路的数据传输量,也减少基础处理电路内部的数据传输量,提高执行效率,降低传输功耗。

步骤s203、k个基础处理电路的内积运算器电路计算矩阵s和向量p的数据的内积,例如第i个基础处理电路,计算矩阵ai的数据和向量p的数据的内积;

在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵s中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的向量p中的数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据对接收的向量p的数据进行处理,得到处理后的向量p的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵s中的数据和处理后的向量p的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵ai、该ai关联的标识矩阵bi以及向量p;此时可启用第二映射电路利用bi对向量p进行处理得到处理后的向量p;再启用内积运算器电路对矩阵ai和处理后的向量p进行内积运算。

在一种具体实施方案中,所述基础处理电路接收到处理后的向量p中的数据以及该数据对应在第二mask矩阵中关联的标识数据;同时还接收到处理后的矩阵s中的数据。相应地,基础处理电路启用第二映射电路根据接收的第二mask矩阵中的标识数据对接收的矩阵s的数据进行处理,得到处理后的矩阵s的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的向量p的数据和处理后的矩阵s中的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵ai、处理后的向量p以及该向量p关联的第二标识矩阵;此时可启用第二映射电路利用第二标识矩阵对ai进行处理得到处理后的矩阵ai;再启用内积运算器电路对处理后的矩阵ai和处理后的向量p进行内积运算。

在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵s中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的向量p中的数据以及该数据对应在第二mask矩阵中关联的标识数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据和第二mask矩阵中的标识数据得到关系标识矩阵;然后利用关系标识矩阵中的标识数据分别对接收的矩阵s中的数据和向量p中的数据进行处理,得到处理后的矩阵s的数据和处理后的向量p的数据。进一步地,启用内积运算器电路对处理后的矩阵s中的数据和处理后的向量p的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵ai、该ai关联的标识矩阵bi、向量p以及向量p关联的第二标识矩阵;此时可启用第二映射电路利用bi和第二标识矩阵获得关系标识矩阵,再利用该关系标识矩阵同时或分别对矩阵ai和向量p进行处理,得到处理后的矩阵ai和处理后的向量p。接着,启用内积运算器电路对处理后的矩阵ai和处理后的向量p进行内积运算。

步骤s204、k个基础处理电路的累加器电路将内积运算的结果进行累加得到累加结果,将累加结果以定点类型形式传输回主处理电路。

在一种可选方案中,可以将每次基础处理电路执行内积运算得到的部分和(部分和即累加结果的一部分,例如累加结果为:f1*g1+f2*g2+f3*g3+f4*g4+f5*g5,那么部分和可以为:f1*g1+f2*g2+f3*g3的值)传输回主处理电路进行累加;优点是,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗。

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路;优点是,减少了基础处理电路和主处理电路之间的数据传输量,提高了运算效率,降低了数据传输功耗,减少了基础处理电路内部的运算量,提高基础处理电路的运算效率。

参阅图2b,使用如图1a所示的装置完成矩阵乘矩阵的运算;

下面描述计算尺寸是m行l列的矩阵s和尺寸是l行n列的矩阵p的乘法的运算,(矩阵s中的每一行与矩阵p的每一列长度相同,如图2d所示)所述神经网络计算装置拥有k个基础处理电路:

步骤s201b、主处理电路的控制电路将矩阵s中的每一行数据分发到k个基础处理电路中的某一个上,基础处理电路将接收到的数据保存在片上缓存和/或寄存器中;

在一种可选的方案中,所述矩阵s的数据为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵s进行处理,从而获得处理后的矩阵s以及该矩阵s关联的第一标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵s关联的第一mask矩阵对矩阵s进行处理,得到处理后的矩阵s。进一步地,通过控制电路将处理后的矩阵s中的每一行数据以及该行数据对应在第一mask矩阵中对应关联的标识数据一起发送给k个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵s中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。

在一种可选方案中,如果s的行数m<=k则,主处理电路的控制电路给m个基础处理电路分别分发s矩阵的一行;可选的,同时还发送由该行对应在第一标识矩阵中的行的标识数据;

在一种可选方案中,如果s的行数m>k,主处理电路的控制电路给每个基础处理电路分别分发s矩阵中一行或多行的数据。可选的,同时还发送由该一行或几行对应在第一标识矩阵中的行的标识数据;

s中有mi行分发到第i个基础处理电路,这mi行的集合称为ai,如图2e表示第i个基础处理电路上将要执行的计算。

在一种可选方案中,在每个基础处理电路中,例如第i个基础处理电路中:

接收的由主处理电路分发的矩阵ai,将矩阵ai保存在第i个基础处理电路寄存器和/或片上缓存中;优点是减少了之后的数据传输量,提高了计算效率,降低了功耗。

步骤s202b、主处理电路的控制电路将矩阵p中各部分以广播的方式传输给各个基础处理电路;

在一种可选方案中,所述矩阵p的数据(各部分)可为处理后的数据。具体的,主处理电路启用第一映射电路对矩阵p进行处理,从而获得处理后的矩阵p以及该矩阵p关联的第二标识(mask)矩阵。或者,主处理电路的第一映射电路根据预存的矩阵p关联的第二mask矩阵对矩阵p进行处理,得到处理后的矩阵p。进一步地,通过控制电路将处理后的矩阵p中的数据(即各部分)以及该数据对应在第二mask矩阵中对应关联的标识数据一起发送给k个基础处理电路中的某一个或多个中。在主处理电路向基础处理电路发送数据时,具体可将处理后的矩阵p中绝对值大于预设阈值的数据,或者非0数据发送给基础处理电路,以减少数据传输量。

在一种可选方案中,可以将矩阵p中各部分只广播一次到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对这一次得到的矩阵p的数据进行充分地复用,完成对应与矩阵ai中每一行的内积运算;本实施例中的复用具体可以为基础处理电路在计算中重复使用,例如矩阵p的数据的复用,可以是对矩阵p的数据在多次使用。

在一种可选方案中,主处理电路的控制电路可以将矩阵p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵p的数据不进行复用,分次完成对应于矩阵ai中的每一行的内积运算;

在一种可选方案中,主处理电路的控制电路可以将矩阵p中各部分多次广播到各个基础处理电路的寄存器或者片上缓存中,第i个基础处理电路对每次得到的矩阵p的数据进行部分复用,完成对应于矩阵ai中的每一行的内积运算;

在一种可选方案中,每个基础处理电路,例如第i个基础处理电路,计算矩阵ai的数据和矩阵p的数据的内积;

步骤s203b、每个基础处理电路的累加器电路将内积运算的结果进行累加并传输回主处理电路。

可选的,步骤s203b之前,基础处理电路的内积运算器需计算矩阵s和矩阵p的数据的内积,具体存在以下几种实施方案。

在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵s中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的矩阵p中的数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据对接收的矩阵p的数据进行处理,得到处理后的矩阵p的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵s中的数据和处理后的矩阵p的数据执行内积运算,得到内积运算的结果。

在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵p中的数据以及该数据对应在第二mask矩阵中关联的标识数据;同时还接收到处理后的矩阵s中的数据。相应地,基础处理电路启用第二映射电路根据接收的第二mask矩阵中的标识数据对接收的矩阵s的数据进行处理,得到处理后的矩阵s的数据。进一步地,该基础处理电路启用内积运算器电路对接收的处理后的矩阵p的数据和处理后的矩阵s中的数据执行内积运算,得到内积运算的结果。

在一种具体实施方案中,所述基础处理电路接收到处理后的矩阵s中的数据以及该数据对应在第一mask矩阵中关联的标识数据;同时还接收到处理后的矩阵p中的数据以及该数据对应在第二mask矩阵中关联的标识数据。相应地,基础处理电路启用第二映射电路根据接收的第一mask矩阵中的标识数据和第二mask矩阵中的标识数据得到关系标识矩阵;然后利用关系标识矩阵中的标识数据分别对接收的矩阵s中的数据和矩阵p中的数据进行处理,得到处理后的矩阵s的数据和处理后的矩阵p的数据。进一步地,启用内积运算器电路对处理后的矩阵s中的数据和处理后的矩阵p的数据执行内积运算,得到内积运算的结果。例如,第i个基础处理电路,接收到矩阵ai、该ai关联的标识矩阵bi、矩阵p以及矩阵p关联的第二标识矩阵;此时可启用第二映射电路利用bi和第二标识矩阵获得关系标识矩阵,再利用该关系标识矩阵同时或分别对矩阵ai和矩阵p进行处理,得到处理后的矩阵ai和处理后的矩阵p。接着,启用内积运算器电路对处理后的矩阵ai和处理后的矩阵p进行内积运算。

在一种可选方案中,基础处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和保存在基础处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;

在一种可选方案中,也可以将每次基础处理电路执行的内积运算得到的部分和在部分情况下保存在基础处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。

本发明还提供一种芯片,该芯片包含计算装置,该计算装置包括:

包括一个主处理电路,主处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。

在一种可选方案中,主处理电路包括第一映射电路;

在一种可选方案中,主处理电路包括执行数据压缩处理的运算单元,如向量运算单元等;

具体地,包含接收输入数据的数据输入接口;

在一种可选方案中,所述接收的数据来源可以是:所述神经网络运算电路装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;

在一种可选方案中,所述数据输入接口可以有多个;具体地,可以包含输出数据的数据输出接口;

在一种可选方案中,所述输出的数据的去向可以是:所述神经网络运算装置的外部或所述神经网络运算电路装置的部分或全部基础处理电路;

在一种可选方案中,所述数据输出接口可以有多个;

在一种可选方案中,所述主处理电路包括片上缓存和/或寄存器;

在一种可选方案中,所述主处理电路中包含运算单元,可以执行数据运算;

在一种可选方案中,所述主处理电路中包含算术运算单元;

在一种可选方案中,所述主处理电路中包含向量运算单元,可以同时对一组数据执行运算;具体地,所述算术运算和/或向量运算可以是任意类型的运算,包括但不限于:两个数相加减乘除,一个数与常数加减乘除,对一个数执行指数运算,幂次运算,对数运算,以及各种非线性运算,对两个数执行比较运算,逻辑运算等。两个向量相加减乘除,一个向量中的每一个元素与常数加减乘除,对向量中的每一个元素执行指数运算,幂次运算,对数运算,以及各种非线性运算等,对一个向量中的每两个对应的元素执行比较运算,逻辑运算等。

在一种可选方案中,所述主处理电路包括数据重排列单元,用于按照一定的顺序向基础处理电路传输数据,或者按照一定的顺序原地重新排列数据;

在一种可选方案中,所述数据排列的顺序包括:对一个多维数据块进行维度顺序的变换;所述数据排列的顺序还可以包括:对一个数据块进行分块以发送到不同的基础处理电路。

该计算装置还包括多个基础处理电路:每一个基础处理电路用于计算两个向量的内积,计算的方法是,基础处理电路收到的两组数,将这两组数中的元素对应相乘,并且将相乘的结果累加起来;内积的结果传输出去,这里传输出去根据基础处理电路的位置,有可能传输给其他基础处理电路,也可以直接传输给主处理电路。

基础处理电路中所涉及到的数据可以是压缩处理后的数据,在一种可选实施例中,所述压缩处理后的数据包括至少一个输入神经元或至少一个权值,所述至少一个神经元中的每个神经元大于第一阈值或者,所述至少一个权值中的每个权值大于第二阈值。所述第一阈值和所述第二阈值为用户侧自定义设置的,它们可以相同,也可不同。

在一种可选方案中,基础处理电路包括第二映射电路;

在一种可选方案中,基础处理电路包括执行数据压缩处理的向量运算单元;

具体地,包括由片上缓存和/或寄存器构成的存储单元;

具体地,包括一个或多个接收数据的数据输入接口;

在一种可选方案中,包括两个数据输入接口,每次从两个数据输入接口处可以分别获得一个或多个数据;

在一种可选方案中,基础处理电路可以将从数据输入接口接收到输入数据后保存在寄存器和/或片上缓存中;

上述数据输入接口接收数据的来源可以是:其他基础处理电路和/或主处理电路。

所述神经网络运算电路装置的主处理电路;

所述神经网络运算电路装置的其他基础处理电路(所述神经网络运算电路装置拥有多个基础处理电路);

具体地,包括一个或多个传输输出数据的数据输出接口;

在一种可选方案中,可以将一个或多个数据从数据输出接口传输出去;

具体地,通过数据输出接口传输出去的数据可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果或内积运算器运算结果中的一种或任意组合。

在一种可选方案中,包含三个数据输出接口,其中的两个分别对应于两个数据输入接口,每一层出上一层从数据输入接口接收到的数据,第三个数据输出接口负责输出运算结果;

具体地,所述数据输出接口传输数据的去向可以是:上文数据来源和此处的数据去向决定了基础处理电路在装置中的连接关系。

所述神经网络运算电路装置的主处理电路;

所述神经网络运算电路装置的其他基础处理电路,所述神经网络运算电路装置拥有多个基础处理电路;

具体地,包括算术运算电路:该算术运算电路具体可以为:一个或多个乘法器电路、一个或多个累加器电路、一个或多个执行两组数内积运算的电路中的一个或任意组合。

在一种可选方案中,可以执行两个数的乘法运算,其结果可以保存在片上缓存和/或寄存器上,也可以直接累加到寄存器和/或片上缓存中;

在一种可选方案中,可以执行两组数据的内积运算,其结果可以保存在片上缓存和/或寄存器中,也可以直接累加到寄存器和/或片上缓存中;

在一种可选方案中,可以执行数据的累加运算,将数据累加到片上缓存和或寄存器中;

具体地,累加器电路被累加的数据,可以是:从数据输入接口接收到的数据、保存在片上缓存和/或寄存器中的数据、乘法器运算结果、累加器运算结果、内积运算器运算结果中的一个或任意组合。

需要说明的是,上述对基础处理电路的描述中所用到的“数据输入接口”和“数据输出接口”是指每一个基础处理电路的数据输入与输出接口,而不是整个装置的数据输入与输出接口。

在一个实施例中,本发明公开了一种神经网络运算装置,其包括用于执行如上所述方法实施例中提供的所有或部分实施方式所对应的功能单元。

在一个实施例里,本发明公开了一种芯片,用于执行如上所述方法实施例中提供的所有或部分实施方式。

在一个实施例里,本发明公开了一种电子装置,其包括用于执行如上所述方法实施例中的所有或部分实施方式的功能单元。

电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1