CN111767997B - 集成电路芯片装置及相关产品 - Google Patents

集成电路芯片装置及相关产品 Download PDF

Info

Publication number
CN111767997B
CN111767997B CN202010617208.3A CN202010617208A CN111767997B CN 111767997 B CN111767997 B CN 111767997B CN 202010617208 A CN202010617208 A CN 202010617208A CN 111767997 B CN111767997 B CN 111767997B
Authority
CN
China
Prior art keywords
data block
processing circuit
basic
data
processed
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
CN202010617208.3A
Other languages
English (en)
Other versions
CN111767997A (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN202010617208.3A priority Critical patent/CN111767997B/zh
Publication of CN111767997A publication Critical patent/CN111767997A/zh
Application granted granted Critical
Publication of CN111767997B publication Critical patent/CN111767997B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本披露提供一种集成电路芯片装置及相关产品,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路或多个基础处理电路中至少一个电路包括:所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。本披露提供的技术方案具有计算量小,功耗低的优点。

Description

集成电路芯片装置及相关产品
技术领域
本披露涉及神经网络领域,尤其涉及一种集成电路芯片装置及相关产品。
背景技术
人工神经网络(Artificial Neural Network,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。现有的神经网络的运算基于CPU(Central Processing Unit,中央处理器)或GPU(英文:Graphics Processing Unit,图形处理器)来实现神经网络的运算,此种运算的计算量大,功耗高。
发明内容
本披露实施例提供了一种集成电路芯片装置及相关产品,可提升计算装置的处理速度,提高效率。
第一方面,提供一种集成电路芯片装置,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路(即部分或全部基础处理电路)包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;
所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;
所述主处理电路,用于获取输入数据块、卷积核数据块以及卷积指令,依据所述卷积指令将所述输入数据块划分为竖向数据块,将所述卷积核数据块划分为横向数据块;依据所述卷积指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述横向数据块和/或所述竖向数据块;依据所述卷积指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述卷积指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,用于将所述运算结果处理得到所述卷积指令的指令结果。
第二方面,提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个第一方面提供的集成电路芯片装置。
第三方面,提供一种组合处理装置,所述组合处理装置包括:第二方面提供的神经网络运算装置、通用互联接口和通用处理装置;
所述神经网络运算装置通过所述通用互联接口与所述通用处理装置连接。
第四方面,提供一种芯片,所述芯片集成第一方面的装置、第二方面的装置或第三方面的装置。
第五方面,提供一种电子设备,所述电子设备包括第四方面的芯片。
第六方面,提供一种神经网络的运算方法,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括:第一方面所述的集成电路芯片装置,所述集成电路芯片装置用于执行神经网络的运算。
可以看出,通过本披露实施例,提供映射电路将数据块压缩处理后再进行运算,节省了传输资源以及计算资源,所以其具有功耗低,计算量小的优点。
附图说明
图1a是一种集成电路芯片装置结构示意图。
图1b是另一种集成电路芯片装置结构示意图。
图1c是一种基础处理电路的结构示意图。
图1d是一种主处理电路的结构示意图。
图2a是一种基础处理电路的使用方法示意图。
图2b是一种主处理电路传输数据示意图。
图2c是矩阵乘以向量的示意图。
图2d是一种集成电路芯片装置结构示意图。
图2e是又一种集成电路芯片装置结构示意图。
图2f是矩阵乘以矩阵的示意图。
图3a为卷积输入数据示意图。
图3b为卷积核示意图。
图3c为输入数据的一个三维数据块的运算窗口示意图。
图3d为输入数据的一个三维数据块的另一运算窗口示意图。
图3e为输入数据的一个三维数据块的又一运算窗口示意图.
图4为本披露实施例流提供的一种神经网络芯片的结构示意图;
图5a-图5b为本申请实施例提供的两种映射电路的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本披露方案,下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
在第一方面提供的装置中,所述主处理电路,用于获取输入数据块、卷积核数据块以及卷积指令,依据所述卷积指令将所述输入数据块划分为竖向数据块,将所述卷积核数据块划分为横向数据块;依据所述卷积指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述横向数据块和/或所述竖向数据块;依据所述卷积指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述卷积指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,用于将所述运算结果处理得到所述卷积指令的指令结果。
在第一方面提供的装置中,当所述第一数据块包括横向数据块和竖向数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述横向数据块和所述竖向数据块进行处理得到处理后的横向数据块以及该横向数据块关联的标识数据块,处理后的竖向数据块以及该竖向数据块关联的标识数据块;将所述处理后的横向数据块以及该横向数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;其中,所述标识数据块具体可用直接索引或者步长索引的方式来表示,可选的还可用列表的列表(List of Lists,LIL)、坐标列表(Coordinatelist,COO)、压缩稀疏行(Compressed Sparse Row,CSR)、压缩稀疏列(Compressed SparseColumn,CSC)、(ELL Pack,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的矩阵/>则对应获得的连接标识数据块为/>
在第一方面提供的装置中,当所述第一数据块包括竖向数据块时,所述主处理电路,具体用于启动所述第一映射电路对所述竖向数据块进行处理,得到处理后的竖向数据块以及该竖向数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述竖向数据块关联的标识数据块对所述竖向数据块进行处理得到处理后的竖向数据块;对所述横向数据块进行拆分处理得到多个基本数据块;将所述多个基本数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的竖向数据块和所述处理后的基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路。
在可选实施例中,所述主处理电路,还具体用于将所述处理后的竖向数据块和该竖向数据块关联的标识数据块进行拆分处理得到多个部分竖向数据块以及所述多个部分竖向数据块关联的标识数据块;将所述多个部分竖向数据块以及所述多个部分竖向数据块各自关联的标识数据块通过一次或多次广播给所述基础处理电路;其中,所述多个部分竖向数据块组合形成所述竖向数据块或处理后的竖向数据块。
相应地,所述基础处理电路具体用于根据所述部分竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分竖向数据块执行内积运算。
在第一方面提供的装置中,所述主处理电路,具体用于将该竖向数据块(具体可为所述竖向数据块或者处理后的竖向数据块)通过一次广播发送至与其连接的所述基础处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于将该基本数据块(同理可为所述基本数据块或处理后的基本数据块)与该竖向数据块执行内积处理得到内积处理结果,将所述内积处理结果累加得到运算结果,将所述运算结果发送至所述主处理电路。
在第一方面提供的装置中,所述基础处理电路,具体用于该基本数据块与该竖向数据块执行乘积运算得到乘积结果,将所述乘积结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果。
在第一方面提供的装置中,所述主处理电路,具体用于将所述竖向数据块分成多个部分竖向数据块,将所述多个部分竖向数据块通过多次广播至所述基础处理电路;所述多个部分竖向数据块组合形成所述竖向数据块。
在第一方面提供的装置中,所述基础处理电路,具体用于将该部分竖向数据块(具体可为部分竖向数据块或者处理后的部分竖向数据块)与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路。这里基本数据块以核3*3为例,该部分竖向数据块以3*3矩阵为例,其分别3*3矩阵与核3*3执行对应位置乘法,那么其对应的内积结果即有3个内积处理结果,将该3个内积处理结果累加得到部分运算结果。3个内积处理结果Out0(3*3矩阵第0行与核3*3第0行的内积)、Out1(3*3矩阵第1行与核3*3第1行的内积)、Out2(3*3矩阵第2行与核3*3第2行的内积)具体可以为:
Out0=r00*k0[0]+r01*k0[1]+r02*k0[2]
Out1=r10*k1[0]+r11*k1[1]+r12*k1[2]
Out2=r20*k2[0]+r21*k2[1]+r22*k2[2]
其中,r00的r表示部分竖向数据块,00表示第0行的第0列元素。
k0[0],的k表示基本数据块,0[0]表示第0行的第0列元素;
部分运算结果=Out0+Out1+Out2。
在第一方面提供的装置中,所述基础处理电路,具体用于复用n次该部分竖向数据块执行该部分竖向数据块与该n个基本数据块内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
这里基本数据块以p个核3*3为例,该部分竖向数据块以3*3矩阵为例,复用p次3*3矩阵分别与核3*3执行p次对应位置乘法,每次运算即对应的内积结果即有p个内积结果,3个内积结果组成一组内积运算结果,将p组中每组的3个内积结果累加得到p个部分运算结果。
在第一方面提供的装置中,所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路。
在第一方面提供的装置中,所述主处理电路包括:向量运算器电路、算数逻辑单元电路、累加器电路、矩阵转置电路、直接内存存取电路或数据重排电路中的一种或任意组合。
在第一方面提供的装置中,所述输入数据块和所述卷积核数据块均可用张量表示,其具体可为:向量、矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
参阅图1a,图1a为本披露提供的一种集成电路芯片装置,该集成电路芯片装置包括:主处理电路和多个基础处理电路,所述多个基础处理电路呈阵列排布(m*n阵列),其中,m、n的取值范围为大于等于1的整数且m、n中至少有一个值大于等于2。对于m*n阵列分布的多个基础处理电路,每个基础处理电路与相邻的基础处理电路连接,所述主处理电路连接多个基础处理电路的k个基础处理电路,所述k个基础处理电路可以为:第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路。如图1a所示的集成电路芯片装置,主处理电路包括第一映射电路,所述第一映射电路用于对数据进行压缩处理,以获得处理后的数据以及标识数据。该标识数据用于指示该数据的绝对值是否大于第一阈值。进一步地,所述主处理电路可仅将处理后的数据(具体可为绝对值大于第一阈值的数据)以及该数据关联的标识数据发送给基础处理电路。优点是:减少发送至基础处理电路中进行数据处理的数据量,提升数据处理速率。该第一阈值为用户侧或装置侧自定义设置的,例如0.05、0.5等等,不做限定。
例如,主处理电路的输入数据为矩阵数据块经过第一映射电路处理后可获得处理后的矩阵数据块为/>该矩阵数据块关联的标识数据块为/>关于第一映射电路的具体处理将在后文进行详述。
相应地,在主处理电路向基础处理电路分发数据时,可仅发送1和0.5这两个数据,并非发送处理后的矩阵数据块,8个数据;同时还需将该矩阵数据块关联的标识数据块一起发送给基础处理电路,以便基础处理电路根据接收的标识数据块和接收的两个数据(1和0.5),对应获知这两个数据位于原矩阵数据块的位置。即是,所述基础处理电路可根据接收的标识数据块以及接收的数据,对应还原出主处理电路中处理后的矩阵数据块。
多个基础电路中的至少一个基础处理电路(即多个基础处理电路中的部分或全部基础处理电路)可以包括第二映射电路。具体的,多个基础处理电路中可以有部分基础处理电路包括第二映射电路,例如在可选方案中,可将k个基础处理电路配置第二映射电路,这样n个基础处理电路可以分别负责对本列的m个基础处理电路的数据进行压缩处理步骤。此设置能够提高运算效率,降低功耗,因为对于第1行的n个基础处理电路来说,由于其最先接收到主处理电路发送的数据,那么将该接收到的数据进行压缩处理可以减少后续基础处理电路的计算量以及与后续基础处理电路的数据传输的量,同理,对于第一列的m个基础处理电路配置第二映射电路也具有计算量小和功耗低的优点。另外,依据该结构,主处理电路可以采用动态的数据发送策略,例如,主处理电路向第1列的m个基础处理电路广播数据,主处理电路向第1行的n个基础处理电路发送分发数据。关于第二映射电路的具体处理将在后文进行详述。
所述主处理电路,用于执行神经网络运算中的各个连续的运算以及和与其相连的所述基础处理电路传输数据;上述连续的运算但不限于:累加运算、ALU运算、激活运算等等运算。
所述多个基础处理电路,用于依据传输的数据以并行方式执行神经网络中的运算,并将运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路。上述并行方式执行神经网络中的运算包括但不限于:内积运算、矩阵或向量乘法运算等等。
主处理电路可以包括:数据发送电路、数据接收电路或接口,该数据发送电路可以集成横向数据分发电路以及竖向数据分发电路,当然在实际应用中,横向数据分发电路以及竖向数据分发电路也可以分别设置。对于横向数据,即需要按照行方向(或者横向)发送给每个基础处理电路的数据,如图1a中将横向数据发送给m行中的任一行或多行中的基础处理电路。对于竖向数据,即需要按照列方向(或竖向)有选择的发送给部分基础处理电路的数据,具体的,如卷积运算,卷积运算的卷积输入数据需要发送给所有的基础处理电路,所有其为竖向数据,卷积核需要有选择的发送给部分基础数据块,所以卷积核为横向数据。横向数据具体的选择发送给那个基础处理电路的方式可以由主处理电路依据负载以及其他分配方式进行具体的确定。对于竖向数据或横向数据的发送方式,可将数据以广播形式发送至每个基础处理电路。(在实际应用中,通过一次广播的方式将横向/竖向数据发送至每个基础处理电路,也可以通过多次广播的方式将横向/竖向数据发送至每个基础处理电路,本披露具体实施方式并不限制上述广播的次数)。可选的,针对上述横向/竖向数据,主处理电路也可有选择的发送给部分基础处理电路。
主处理电路(如图1d所示)可以包括寄存器和/或片上缓存电路,该主处理电路还可以包括:控制电路、向量运算器电路、ALU(arithmetic and logic unit,算数逻辑单元)电路、累加器电路、DMA(Direct Memory Access,直接内存存取)电路等电路,当然在实际应用中,上述主处理电路还可以添加,转换电路(例如矩阵转置电路)、数据重排电路或激活电路等等其他的电路。
每个基础处理电路可以包括基础寄存器和/或基础片上缓存电路;每个基础处理电路还可以包括:内积运算器电路、向量运算器电路、累加器电路等中一个或任意组合。上述内积运算器电路、向量运算器电路、累加器电路都可以是集成电路,上述内积运算器电路、向量运算器电路、累加器电路也可以为单独设置的电路。
可选的,对于第m行n个基础处理电路的累加器电路可以执行内积运算的累加运算,因为对于第m行基础处理电路来说,其能够接收到本列所有的基础处理电路的乘积结果,而将内积运算的累加运算通过第m行的n个基础处理电路执行内积运算的累加运算,这样能够对计算资源进行有效的分配,具有节省功耗的优点。此技术方案尤其对于m数量较大时更为适用。
对于数据的压缩处理可以由主处理电路来分配执行的电路,具体的,可以通过显示或隐式的方式来分配执行的电路,对于显示方式,主处理电路可以配置一个特殊指示或指令,当基础处理电路接收到该特殊指示或指令时,确定执行数据压缩处理,如基础处理电路未接收到特殊指示或指令时,确定不执行数据的压缩处理。又如,可以以暗示的方式来执行,例如,基础处理电路接收到稀疏数据(即含0,或包括小于预设阈值的数据大于预设数量)且确定需要执行内积运算时,将对稀疏数据进行压缩处理。对于显示配置的方式,特殊指令或指示可以配置一个递减序列,该递减序列的每经过一个基础处理电路,数值减1,基础处理电路读取该递减序列的值,如该值大于零,则执行数据压缩处理,如该值等于或小于零,则不执行数据压缩处理。此设置是依据阵列分配的基础处理电路所配置的,例如对于第i列的m个基础处理电路来说,主处理电路需要前面5个基础处理电路执行数据压缩处理,则主处理电路下发一个特殊指令,该特殊指令包含有递减序列,该递减序列的初始值可以为5,则每经过一个基础处理电路,递减序列的值即减1,到第5个基础处理电路时,该递减序列的值为1,到第6个基础处理电路时,该递减序列为0,此时第6个基础处理电路将不在执行该数据压缩处理,此种方式可以使得主处理电路可以动态的配置数据压缩处理的执行主体以及执行次数。
本披露一个实施例提供一种集成电路芯片装置,包括一个主处理电路(也可以称为主单元)和多个基础处理电路(也可以称为基础单元);实施例的结构如图1b所示;其中,虚线框中是所述神经网络运算装置的内部结构;灰色填充的箭头表示主处理电路和基础处理电路阵列之间的数据传输通路,空心箭头表示基础处理电路阵列中各个基础处理电路(相邻基础处理电路)之间的数据传输通路。其中,基础处理电路阵列的长宽长度可以不同,即m、n的取值可以不同,当然也可以相同,本披露并不限制上述取值的具体值。
基础处理电路的电路结构如图1c所示;图中虚线框表示基础处理电路的边界,与虚线框交叉的粗箭头表示数据输入输出通道(指向虚线框内是输入通道,指出虚线框是输出通道);虚线框中的矩形框表示存储单元电路(寄存器和/或片上缓存),包括输入数据1,输入数据2,乘法或内积结果,累加数据;菱形框表示运算器电路,包括乘法或内积运算器,加法器。
本实施例中,所述神经网络运算装置包括一个主处理电路和16个基础处理电路(16个基础处理电路仅仅为了举例说明,在实际应用中,可以采用其他的数值);
本实施例中,基础处理电路有两个数据输入接口,两个数据输出接口;在本例的后续描述中,将横向的输入接口(图1b中指向本单元的横向箭头)称作输入0,竖向的输入接口(图1b中指向本单元的竖向箭头)称作输入1;将每一个横向的数据输出接口(图1b中从本单元指出的横向箭头)称作输出0,竖向的数据输出接口(图1b中从本单元指出的竖向箭头)称作输出1。
每一个基础处理电路的数据输入接口和数据输出接口可以分别连接不同的单元,包括主处理电路与其他基础处理电路;
本例中,基础处理电路0,4,8,12(编号见图1b)这四个基础处理电路的输入0与主处理电路的数据输出接口连接;
本例中,基础处理电路0,1,2,3这四个基础处理电路的输入1与主处理电路的数据输出接口连接;
本例中,基础处理电路12,13,14,15这四个基础处理电路的输出1与主处理电路的数据输入接口相连;
本例中,基础处理电路输出接口与其他基础处理电路输入接口相连接的情况见图1b所示,不再一一列举;
具体地,S单元的输出接口S1与P单元的输入接口P1相连接,表示P单元将可以从其P1接口接收到S单元发送到其S1接口的数据。
本实施例包含一个主处理电路,主处理电路与外部装置相连接(即由输入接口也有输出接口),主处理电路的一部分数据输出接口与一部分基础处理电路的数据输入接口相连接;主处理电路的一部分数据输入接口与一部分基础处理电路的数据输出接口相连。
集成电路芯片装置的使用方法
本披露提供的使用方法中所涉及到的数据可以是经过压缩处理后的数据。需要说明的是,本申请中的数据可以是神经网络中的输入神经元或权值,其具体可为矩阵数据或向量数据等,本申请不做限定。也即是本申请下文阐述的数据或数据块可为神经网络中的输入神经元或权值,它们可以矩阵或向量等形式体现。
本申请涉及的数据压缩处理具体在前文所述的第一映射电路和第二映射电路中执行。应理解的,由于神经网络是一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。特别是,针对权值较小(如为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层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
第四实施中:
所述主处理电路中并不设置映射电路,在所述基础处理电路中设置有第一映射电路和第二映射电路。关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。
可选的,还存在第五实施例。第五实施例中,所述基础处理电路中并不设置映射电路,将所述第一映射电路和第二映射电路均设置在主处理电路中,关于所述第一映射电路和第二映射电路的数据处理具体可参见前述第一实施例至第三实施例所述,这里不再赘述。即是,主处理电路中完成数据的压缩处理,将处理后的输入数据发送给基础处理电路,以便基础处理电路利用处理后的输入数据(具体可为处理后的神经元和处理后权值)执行相应地的运算操作。
下面阐述本申请涉及映射电路的具体结构示意图。如图5a和5b示出两种可能的映射电路。其中,如图5a所示的映射电路包括比较器和选择器。关于所述比较器和选择器的数量本申请不做限定。如图5a示出一个比较器和两个选择器,其中,所述比较器用于判定输入数据是否满足预设条件。该预设条件可为用户侧或设备侧自定义设置的,例如本申请上述的所述输入数据的绝对值大于或等于预设阈值。如果满足预设条件,则比较器可确定允许输出该输入数据,该输入数据对应关联的标识数据为1;否则可确定不输出该输入数据,或者默认该输入数据为0。相应地,此时该输入数据对应关联的标识数据为0。也即是,经过该比较器后,可获知输入数据关联的标识数据。
进一步地,所述比较器对输入数据进行预设条件的判定后,可将获得的标识数据输入至选择器中,以便选择器利用该标识数据来决定是否输出相应地的输入数据,即获得处理后的输入数据。
如图5a,以所述输入数据为矩阵数据块为例,经过比较器可对该矩阵数据块中的每个数据进行预设条件的判定,从而可获得该矩阵数据块关联的标识数据块(mask矩阵)。进一步地,在第一选择器中可利用该标识数据块对所述矩阵数据块进行筛选,将所述矩阵数据块中绝对值大于或等于预设阈值(即满足预设条件)的数据进行保留,其余数据进行删除,以输出处理后的矩阵数据块。可选的,在第二选择器中还可利用该标识数据块对其他输入数据(例如第二矩阵数据块)进行处理,例如进行逐元素与操作,以将该第二矩阵数据块中绝对值大于或等于预设阈值的数据进行保留,以输出处理后的第二矩阵数据块。
应理解的,对应于上述第一和第二实施例中,所述第一映射电路的具体结构可包括至少一个比较器和至少一个选择器,例如上例中图5a中的比较器和第一选择器;所述第二映射电路的具体结果可包括一个或多个选择器,例如上例中图5a的第二选择器。
如图5b,示出另一种映射电路的结构示意图。如图5b,所述映射电路包括选择器,所述选择器的数量不做限定,可为一个,也可为多个。具体的,所述选择器用于根据输入的输入数据所关联的标识数据来对输入的所述输入数据进行选择,以将所述输入数据中绝对值大于或等于预设阈值的数据进行输出,其余数据进行删除/不输出,从而获得处理后的输入数据。
以所述输入数据为矩阵数据块为例,向所述映射电路输入该矩阵数据块以及该矩阵数据块关联的标识数据块,选择器可根据该标识数据块对所述矩阵数据块进行选择,将其绝对值大于或等于0的数据进行输出,其余数据不予输出,从而输出处理后的矩阵数据块。
应理解的,如图5b所示的结构可应用于上述第三实施例中的第二映射电路,即是上述第三实施例中的第二映射电路的具体结果可包括至少一个选择器。同理,对于主处理电路和基础处理电路中设计的第一映射电路和第二映射电路可按照如图5a和图5b所示的功能部件进行交叉组合或部件拆分,本申请不做限定。
基于前述实施例,下面具体阐述主处理电路以及基础处理电路中需完成的操作处理,可使用如下方法进行:
主处理电路先启用第一映射电路对第一输入数据进行处理,以获得处理后的第一输入数据以及该第一输入数据关联的第一标识数据;然后再将处理后的第一输入数据以及该第一输入数据关联的第一标识数据传输给基础处理电路运算。例如,主处理电路可以将待计算的数据(如横向数据块/竖向数据块)进行处理后再传输给基础处理电路,其优点是可以减少传输数据的位宽,减少传输的总比特数量,基础处理电路执行位宽较小的数据运算的效率也更高,功耗更低。
基础处理电路启用第二映射电路利用该第一标识数据对接收的第二输入数据进行处理,得到处理后的第二输入数据然后再对处理后的第一输入数据和第二输入数据执行相关运算操作。例如,基础处理电路收到主处理电路传输过来的第二输入数据(如稀疏数据,竖向数据块),先对其进行压缩处理再进行运算,提高运算效率,降低功耗。
可选的,主处理电路可先将第一输入数据(如基本数据块)、第一输入数据关联的第一标识数据、第二输入数据(如部分竖向数据块等)以及第二输入数据关联的第二标识数据先传输给基础处理电路运算。
相应地,基础处理电路接收数据后,可先启用第二映射电路根据第一标识数据和第二标识数据获得连接标识数据块,然后在利用该连接标识数据对第一输入数据和第二输入数据进行处理,进一步地在基础处理电路中还能完成针对所述处理后的第一输入数据和第二输入数据的运算操作,其好处减少数据运算量,提高运算效率,降低功耗。
可选的,主处理电路发送的第一输入数据关联的第一标识数据以及第二输入数据关联的第二标识数据为预先存储在该主处理电路中的,或者为所述主处理电路启用第一映射电路通过所述第一/第二输入数据获得的,本申请不做限定。
基础处理电路的使用方法(如图2a);
主处理电路从装置外部接收待计算的输入数据;
可选地,主处理电路利用本单元的各种运算电路,向量运算电路,内积运算器电路、累加器电路等对数据进行运算处理;
主处理电路通过数据输出接口向基础处理电路阵列(把所有基础处理电路的集合称作基础处理电路阵列)发送数据(如图2b所示);
此处的发送数据的方式可以是向一部分基础处理电路直接发送数据,即多次广播方式;
此处发送数据的方式可以向不同的基础处理电路分别发送不同的数据,即分发方式;
基础处理电路阵列对数据进行计算;
基础处理电路接收到输入数据后进行运算;
可选地,基础处理电路接收到数据后将该数据从本单元的数据输出接口传输出去;(传输给其他没有直接从主处理电路接收到数据的基础处理电路。)
可选地,基础处理电路将运算结果从数据输出接口传输出去;(中间计算结果或者最终计算结果)
主处理电路接收到从基础处理电路阵列返回的输出数据;
可选地,主处理电路对从基础处理电路阵列接收到的数据继续进行处理(例如累加或激活操作);
主处理电路处理完毕,将处理结果从数据输出接口传输给装置外部。
使用所述电路装置完成张量乘张量运算,所述张量和前文所述的数据块相同,其可为矩阵、向量、三维数据块、四位数据块以及高维数据块中的任一项或多项的组合;下面如图2c和2f分别示出矩阵乘向量和矩阵乘矩阵运算的具体实现方法。
使用所述电路装置完成矩阵乘向量运算;(矩阵乘向量可以是矩阵中的每一行分别与向量进行内积运算,并将这些结果按对应行的顺序摆放成一个向量。)
下面描述计算尺寸是M行L列的矩阵S和长度是L的向量P的乘法的运算,如下图2c所示。
此方法用到所述神经网络计算装置的全部或者一部分基础处理电路,假设用到了K个基础处理电路;
主处理电路将矩阵S的部分或全部行中的数据发送到k个基础处理电路中的每个基础处理电路;
在一种可选的方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于每次发送一个数,可以为对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者对于每次发送一部分数,第1次发送第3行前两个数(即第1、2个数),第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
在一种可选的方案中,主处理电路的控制电路将矩阵S中某几行的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……。)
主处理电路的控制电路将向量P中的数据逐次发送到第0个基础处理电路;
第0个基础处理电路接收到向量P的数据之后,将该数据发送给与其相连接的下一个基础处理电路,即基础处理电路1;
具体的,有些基础处理电路不能直接从主处理电路处获得计算所需的所有的数据,例如,图2d中的基础处理电路1,只有一个数据输入接口与主处理电路相连,所以只能直接从主处理电路获得矩阵S的数据,而向量P的数据就需要依靠基础处理电路0输出给基础处理电路1,同理,基础处理电路1也要收到数据后也要继续把向量P的数据输出给基础处理电路2。
每一个基础处理电路对接收到的数据进行运算,该运算包括但不限于:内积运算、乘法运算、加法运算等等;
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,将结果从数据输出接口传输出去(即传输给与其连接的其他基础处理电路);
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
主处理电路接收到各个基础处理电路内积运算的结果,将该结果处理得到最终结果(该处理可以为累加运算或激活运算等等)。
采用上述计算装置实现矩阵乘向量方法的实施例:
在一种可选方案中,方法所用到的多个基础处理电路按照如下图2d或者图2e所示的方式排列;
如图2c所示,主处理电路可分别获取矩阵S和矩阵P各自对应的mask矩阵(即前文所述的标识数据/标识数据块)。具体的,该矩阵S和矩阵P各自对应的mask矩阵可以是预先存储在主处理电路中的高速存储器中;也可是主处理电路启用第一映射电路分别根据矩阵S和矩阵P获得的各自对应的mask矩阵。主处理单元的控制电路将矩阵S的M行数据分成K组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Ai)的运算;相应地,主处理单元的控制电路同样也会将矩阵S对应的第一mask矩阵的M行数据分成K组,并和矩阵S被划分为K组后新形成的矩阵一起发送给相应地的基础处理电路,以在该基础处理电路中完成相关数据的运算操作。
此处对M行数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:将第j行分给第j%K(%为取余数运算)个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
主处理电路的控制电路每次将矩阵S中部分或全部行中的数据依次发送给对应的基础处理电路;相应地,控制电路还会将矩阵S中这几行数据所对应在第一mask矩阵中的标识数据一起发送给对应的基础处理电路。
例如,矩阵S为50*50的矩阵数据块,主处理电路可将矩阵S分为10个小矩阵,每个小矩阵的尺寸大小为5*50,则主处理电路可将第1个小矩阵S0(5行50列)以及该小矩阵S0关联的标识数据块(5行50列)一起发送给第1个基础处理电路,以在第1个基础处理电路中完成相关数据的运算处理。
在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的一行数据中的一个或多个数据,该第i组数据Mi可以是矩阵S中的数据,也可以是该矩阵S对应的第一mask矩阵中的数据;
在一种可选方案中,主处理电路的控制电路每次向第i个基础处理电路发送其负责的第i组数据Mi中的部分或全部行中的每行的一个或多个数据;
主处理电路的控制电路将向量P中的数据依次向第1个基础处理电路发送;相应地,主处理电路的控制电路可将向量P关联的第二mask矩阵中的数据也一起依次发送给第1个基础处理电路
在一种可选方案中,主处理电路的的控制电路每次可以发送向量P或者向量P关联的第二mask矩阵中的一个或多个数据;
第i个基础处理电路接收到向量P或者第二mask矩阵的数据之后还可发送给与其相连的第i+1个基础处理电路;
每个基础处理电路接收到来自矩阵S中某一行或者某几行中的一个或多个数据以及来自向量P的一个或多个数据后,进行运算(包括但不限于乘法或加法);
具体实现中,每个基础处理电路接收到矩阵S中的数据以及该数据在第一mask矩阵中关联的第一标识数据、向量P中的数据以及该数据在第二mask数据中关联的第二标识数据后;可先根据第一标识数据和第二标识数据获得连接标识数据;然后利用该连接标识数据决定是否对矩阵P中的数据和向量P中的数据执行相关运算操作。该连接标识数据是通过对第一标识数据和第二标识数据进行与操作所获得的,其可为0或1,1表示矩阵S中某个位置的数据和向量P中同一位置的数据均为绝对值大于预设阈值的数据;反之,0表示矩阵S中同一位置的数据和/或向量P中同一位置的数据为绝对值小于或等于预设阈值的数据。
即是,每个基础处理电路启动第二映射电路根据矩阵S的第一mask矩阵和向量P的第二mask矩阵选取同一位置中标识数据为1对应在矩阵S和向量P中的数据执行相关运算操作,例如乘法、加法操作等等。也即是,利用第一mask矩阵和第二mask矩阵对应来选取矩阵S和矩阵P中相同位置上绝对值大于预设阈值的数据执行相关运算操作,如乘法操作。
例如,基础处理电路接收到矩阵S中的某两行的数据为矩阵S0 对应的该矩阵S0关联的第一mask矩阵/>接收到向量P中的某几个数据为向量P0[1 0.01 1.1 0.6]T,该向量P0关联的第二mask向量[1 0 1 1]T;进一步的基础处理电路可启用第二映射电路先对/>和[1 0 1 1]T进行逐元素与操作,获得连接mask矩阵进一步利用该连接mask矩阵对接收的矩阵S0和向量P0进行处理,从而获得处理后的矩阵S0/>和处理后的向量P0[1 0 0 0.6]T,以便基础处理电路针对处理后的矩阵S0和处理后的向量P0执行相关的运算操作。
在一种可选方案中,每个基础处理电路中若接收的数据(具体可为待计算的数据块,如矩阵S或向量P中某几行/列的数据以及对应在mask矩阵中的标识数据)的数据量超过预设阈值时,该基础处理电路将不再接收新的输入数据,如主处理电路将后续发送的矩阵S或向量P某几行/列的数据以及该数据对应在mask矩阵中的标识数据等等,直至基础处理电路中拥有足够的缓存/存储空间,再接收主处理电路新发送的数据。
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路接收到的数据也可以是中间结果,保存在寄存器和或片上缓存上;
基础处理电路将本地的计算结果传输给与其相连接的下一个基础处理电路或者主处理电路;
在一种可选方案中,对应于图2d的结构,只有每列的最后一个基础处理电路的输出接口与主处理电路相连接的,这种情况下,只有最后一个基础处理电路可以直接将本地的计算结果传输给主处理电路,其他基础处理电路的计算结果都要传递给自己的下一个基础处理电路,下一个基础处理电路传递给下下个基础处理电路直至全部传输给最后一个基础处理电路,最后一个基础处理电路将本地的计算结果以及接收到的本列的其他基础处理电路的结果执行累加计算得到中间结果,将中间结果发送至主处理电路;当然还可以为最后一个基础处理电路可以将本列的其他基础电路的结果以及本地的处理结果直接发送给主处理电路。
在一种可选方案中,对应于图2e的结构,每一个基础处理电路都有与主处理电路相连接的输出接口,这种情况下,每一个基础处理电路都直接将本地的计算结果传输给主处理电路;
基础处理电路接收到其他基础处理电路传递过来的计算结果之后,传输给与其相连接的下一个基础处理电路或者主处理电路。
主处理电路接收到M个内积运算的结果,作为矩阵乘向量的运算结果。
使用所述电路装置完成矩阵乘矩阵运算;
下面描述计算尺寸是M行L列的矩阵S和尺寸是L行N列的矩阵P的乘法的运算,(矩阵S中的每一行与矩阵P的每一列长度相同,如图2f所示)
本方法使用所述装置如图1b所示的实施例进行说明;
主处理电路的第一映射电路获取矩阵S和矩阵P各自对应的标识mask矩阵,例如启动第一映射电路分别对矩阵S和矩阵P进行处理以获得该矩阵S对应的第一mask矩阵以及该矩阵P对应的第二mask矩阵;
主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中最上方的灰色填充的竖向数据通路);同时,控制电路还会将对应在第一mask矩阵中的部分或全部行中的标识数据发送到与其连接的基础处理电路中。例如,控制电路将矩阵S中的前两行数据以及该前两行数据对应在第一mask矩阵中的前两行标识数据一起发送到与主处理电路相连的基础电路中。
在一种可选方案中,主处理电路的控制电路将矩阵S中某行的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)
相应地,控制电路同时还将与矩阵S中该行对应在第一mask矩阵中对应行的标识数据每次发送一个或一部分标识数据给某个基础处理电路。
在一种可选方案中,主处理电路的控制电路将矩阵S中某几行的数据以及对应在第一mask矩阵中对应几行的标识数据每次各发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)
主处理电路的控制电路将矩阵P中的部分或全部列中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中基础处理电路阵列左侧的灰色填充的横向数据通路);同时,控制电路还会将对应在第二mask矩阵中的部分或全部行中的标识数据发送到与其连接的基础处理电路中。例如,控制电路将矩阵P中的前两行数据以及该前两行数据对应在第二mask矩阵中的前两行标识数据一起发送到与主处理电路相连的基础电路中。
在一种可选方案中,主处理电路的控制电路将矩阵P中某列的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)相应地,控制电路同时还将与矩阵P中该行对应在第二mask矩阵中对应行的标识数据每次发送一个或一部分标识数据给某个基础处理电路。
在一种可选方案中,主处理电路的控制电路将矩阵P中某几列的数据以及对应在第二mask矩阵中对应几行的标识数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到矩阵S的数据以及矩阵S关联的第一mask矩阵的标识数据之后,将该数据(具体可为矩阵S的数据以及该数据对应在第一mask矩阵中的标识数据)通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;具体的,每个基础处理电路接收到矩阵S中某一行或几行的数据以及该数据对应在第一mask矩阵中关联的第一标识数据、矩阵P中某一列或几列的数据以及该数据对应在第二mask数据中关联的第二标识数据后;可先根据第一标识数据和第二标识数据获得连接标识数据;然后利用该连接标识数据决定是否对矩阵S中的数据和矩阵P中的数据执行相关运算操作。该连接标识数据是通过对第一标识数据和第二标识数据进行与操作所获得的,其可为0或1,1表示矩阵S中某个位置的数据和矩阵P中同一位置的数据均为绝对值大于预设阈值的数据;反之,0表示矩阵S中某一位置的数据和/或矩阵P中同一位置的数据为绝对值小于或等于预设阈值的数据。具体可参见前述实施例所述,这里不再赘述。
即是,每个基础处理电路启动第二映射电路根据矩阵S的第一mask矩阵和矩阵P的第二mask矩阵选取同一位置中标识数据为1的数据执行相关运算操作,例如乘法、加法操作等等。
在一种可选方案中,每个基础处理电路中若接收的数据(具体可为待计算的数据块,如矩阵S或矩阵P中某几行/列的数据以及对应在mask矩阵中的标识数据)的数据量超过预设阈值时,该基础处理电路将不再接收新的输入数据,如主处理电路将后续发送的矩阵S或矩阵P某几行/列的数据以及该数据对应在mask矩阵中的标识数据等等,直至基础处理电路中拥有足够的缓存/存储空间,再接收主处理电路新发送的数据。
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
“矩阵乘矩阵”方法的实施例:
方法用到按照如图1b所示方式排列的基础处理电路阵列;
主处理电路的第一映射电路获取矩阵S和矩阵P各自对应的标识mask矩阵,例如启动第一映射电路分别对矩阵S和矩阵P进行处理以获得该矩阵S对应的第一mask矩阵以及该矩阵P对应的第二mask矩阵,可选的,还可得到处理后的矩阵S和矩阵P,假设处理后的矩阵S有h行,处理主处理电路的控制电路将矩阵S的h行数据分成h组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Hi)的运算;同时,控制电路还会将数据对应在第一mask矩阵中的部分或全部行中的标识数据发送到与其连接的基础处理电路中。例如,控制电路将矩阵S中的前两行数据以及该前两行数据对应在第一mask矩阵中的前两行标识数据一起发送到与主处理电路相连的基础电路中。
此处对h行数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%h个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分行平均分配,对于剩下的行以任意方式分配。
主处理电路的控制电路将矩阵P的W列数据分成w组,分别由第i个基础处理电路负责第i组(该组数据中行的集合记为Wi)的运算;相应地,控制电路同时还将与矩阵P中该列对应在第二mask矩阵中对应列的标识数据每次发送一个或一部分标识数据给某个基础处理电路。
此处对W列数据进行分组的方法是任意不会重复分配的分组方式;
在一种可选方案中,采用如下分配方式:主处理电路的控制电路将第j行分给第j%w个基础处理电路;
在一种可选方案中,对于不能平均分组的情况也可以先对一部分列平均分配,对于剩下的列以任意方式分配。
主处理电路的控制电路将矩阵S的部分或全部行中的数据发送到基础处理电路阵列中每行的第一个基础处理电路;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的一行数据中的一个或多个数据;同时采用相同方法可将第i组数据Hi对应在mask矩阵中的标识数据也发送给第一基础处理电路;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i行的第一个基础处理电路发送其负责的第i组数据Hi中的部分或全部行中的每行的一个或多个数据;同时采用相同方法可将第i组数据Hi对应在mask矩阵中的标识数据也发送给第一基础处理电路;
主处理电路的控制电路将矩阵P的部分或全部列中的数据发送到基础处理电路阵列中每列的第一个基础处理电路;同时,控制电路还会将对应在第二mask矩阵中的部分或全部行中的标识数据发送到与其连接的基础处理电路中。例如,控制电路将矩阵P中的前两行数据以及该前两行数据对应在第二mask矩阵中的前两行标识数据一起发送到与主处理电路相连的基础电路中。
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Wi中的一列数据中的一个或多个数据;
在一种可选方案中,主处理电路的控制电路每次向基础处理电路阵列中第i列的第一个基础处理电路发送其负责的第i组数据Ni中的部分或全部列中的每列的一个或多个数据;
基础处理电路接收到矩阵S的数据之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到矩阵P的数据后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
每一个基础处理电路对接收到的数据进行运算;具体的,每个基础处理电路接收到矩阵S中某一行或几行的数据以及该数据对应在第一mask矩阵中关联的第一标识数据、矩阵P中某一列或几列的数据以及该数据对应在第二mask数据中关联的第二标识数据后;可先根据第一标识数据和第二标识数据获得连接标识数据;然后利用该连接标识数据决定是否对矩阵S中的数据和矩阵P中的数据执行相关运算操作。该连接标识数据是通过对第一标识数据和第二标识数据进行与操作所获得的,其可为0或1,1表示矩阵S中某个位置的数据和矩阵P中同一位置的数据均为绝对值大于预设阈值的数据;反之,0表示矩阵S中某一位置的数据和/或矩阵P中同一位置的数据为绝对值小于或等于预设阈值的数据。具体可参见前述实施例所述,这里不再赘述。
即是,每个基础处理电路启动第二映射电路根据矩阵S的第一mask矩阵和矩阵P的第二mask矩阵选取同一位置中标识数据为1的数据执行相关运算操作,例如乘法、加法操作等等。
在一种可选方案中,每个基础处理电路中若接收的数据(具体可为待计算的数据块,如矩阵S或矩阵P中某几行/列的数据以及对应在mask矩阵中的标识数据)的数据量超过预设阈值时,该基础处理电路将不再接收新的输入数据,如主处理电路将后续发送的矩阵S或矩阵P某几行/列的数据以及该数据对应在mask矩阵中的标识数据等等,直至基础处理电路中拥有足够的缓存/存储空间,再接收主处理电路新发送的数据。
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
以上描述中使用的“横向”,“竖向”等词语只是为了表述图1b所示的例子,实际使用只需要区分出每个单元的“横向”“竖向”接口代表两个不同的接口即可。
使用所述电路装置完成全连接运算:
如果全连接层的输入数据是一个向量(即神经网络的输入是单个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为向量P,按照所述装置的使用矩阵乘以向量方法执行运算;
如果全连接层的输入数据是一个矩阵(即神经网络的输入是多个样本的情况),则以全连接层的权值矩阵作为矩阵S,输入向量作为矩阵P,或者以全连接层的权值矩阵作为矩阵P,输入向量作为矩阵S,按照所述装置的矩阵乘以矩阵执行运算;
使用所述电路装置完成卷积运算:
下面描述卷积运算,下面的图中一个方块表示一个数据,输入数据用图3a表示(N个样本,每个样本有C个通道,每个通道的特征图的高为H,宽为W),权值也即卷积核用图3b表示(有M个卷积核,每个卷积核有C个通道,高和宽分别为KH和KW)。对于输入数据的N个样本,卷积运算的规则都是一样的,下面解释在一个样本上进行卷积运算的过程,在一个样本上,M个卷积核中的每一个都要进行同样的运算,每个卷积核运算得到一张平面特征图,M个卷积核最终计算得到M个平面特征图,(对一个样本,卷积的输出是M个特征图),对于一个卷积核,要在一个样本的每一个平面位置进行内积运算,然后沿着H和W方向进行滑动,例如,图3c表示一个卷积核在输入数据的一个样本中右下角的位置进行内积运算的对应图;图3d表示卷积的位置向左滑动一格和图3e表示卷积的位置向上滑动一格。
本方法使用所述装置如图1b所示的实施例进行说明;
主处理电路的第一映射电路可将权值的部分或全部卷积核中的数据进行处理,得到对应的mask数据以及处理后的权值数据(即是处理后权值的部分或全部卷积核中的数据)。
主处理电路的控制电路将权值的部分或全部卷积核中的数据(该数据可为原来的权值数据或者处理后的权值数据)发送到通过横向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中最上方的灰色填充的竖向数据通路);同时,控制电路将与该数据对应关联的mask数据也一起发送给与主处理电路连接的基础处理电路中;
在一种可选方案中,主处理电路的控制电路将权值中某个卷积核的数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3行第1个数,第2次发送第3行数据中的第2个数,第3次发送第3行的第3个数……,或者第1次发送第3行前两个数,第二次发送第3行第3和第4个数,第三次发送第3行第5和第6个数……;)同时,控制电路将该权值中某个卷积核对应的mask数据也采用上述每次发生一个数或一部分数据给那个基础处理电路;
在一种可选方案中另一种情况是,主处理电路的控制电路将权值中某几个卷积核的数据每次各发送一个数者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5行每行的第1个数,第2次发送第3,4,5行每行的第2个数,第3次发送第3,4,5行每行的第3个数……,或者第1次发送第3,4,5行每行前两个数,第二次发送第3,4,5行每行第3和第4个数,第三次发送第3,4,5行每行第5和第6个数……;)相应地,控制电路将与该权值中某几个卷积核所对应关联的mask数据也采用上述相同的方法每次发生一个数或一部分数据给那个基础处理电路;
主处理电路的控制电路把输入数据按照卷积的位置进行划分,主处理电路的控制电路将输入数据中的部分或全部卷积位置中的数据发送到通过竖向数据输入接口直接与主处理电路相连的那些基础处理电路(例如,图1b中基础处理电路阵列左侧的灰色填充的横向数据通路);相应地,控制电路同样也会按照卷积的位置对于所述输入数据关联的mask数据进行划分,相应地控制电路同时也会将所述输入数据中的部分或全部卷积位置中的数据所对应的mask数据也一起发送给与主处理电路电性连接的基础处理电路中;
在一种可选方案中,主处理电路的控制电路将输入数据中某个卷积位置的数据以及与该数据对应关联的mask数据每次发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3列第1个数,第2次发送第3列数据中的第2个数,第3次发送第3列的第3个数……,或者第1次发送第3列前两个数,第二次发送第3列第3和第4个数,第三次发送第3列第5和第6个数……;)
在一种可选方案中另一种情况是,主处理电路的控制电路将输入数据中某几个卷积位置的数据以及与该数据对应关联的mask数据每次各发送一个数或者一部分数给某个基础处理电路;(例如,对于某一个基础处理电路,第1次发送第3,4,5列每列的第1个数,第2次发送第3,4,5列每列的第2个数,第3次发送第3,4,5列每列的第3个数……,或者第1次发送第3,4,5列每列前两个数,第二次发送第3,4,5列每列第3和第4个数,第三次发送第3,4,5列每列第5和第6个数……;)
基础处理电路接收到权值的数据(具体可为权值中卷积核的数据(简称权值数据)或者与该权值数据对应关联的mask数据)之后,将该数据通过其横向的数据输出接口传输给其相连接下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的横向的数据通路);基础处理电路接收到输入数据的数据(该数据可为主处理电路发送的输入数据以及该输入数据关联的标识mask数据)后,将该数据通过其竖向的数据输出接口传输给与其相连接的下一个基础处理电路(例如,图1b中基础处理电路阵列中间的白色填充的竖向的数据通路);
具体的,主处理电路的控制电路可将输入数据以及该输入数据关联的mask数据一起发送给基处理电路,基础处理电路接收该输入数据以及该输入数据关联的mask数据;
每一个基础处理电路对接收到的数据进行运算;具体的,基础处理电路可启用第二映射电路根据输入数据关联的mask数据以及权值数据关联的mask数据(即权值中卷积核所关联的mask数据)得到连接标识数据;再利用连接标识数据选择输入数据以及权值数据中绝对值大于预设阈值的数据进行乘法运算;
在一种可选方案中,每个基础处理电路中若接收的数据(具体可为待计算的数据块,如权值中卷积核中的数据以及该数据关联的mask数据、输入数据或者该输入数据关联的mask数据)的数据量超过预设阈值时,该基础处理电路将不再接收新的输入数据,如主处理电路将后续发送的权值中某几个卷积核中的数据以及该数据对应关联的mask数据等等,直至基础处理电路中拥有足够的缓存/存储空间,再接收主处理电路新发送的数据。
在一种可选方案中,基础处理电路每次计算一组或多组两个数据的乘法,然后将结果累加到寄存器和/或片上缓存上;
在一种可选方案中,基础处理电路每次计算一组或多组两个向量的内积,然后将结果累加到寄存器和/或片上缓存上;
基础处理电路计算出结果后,可以将结果从数据输出接口传输出去;
在一种可选方案中,该计算结果可以是内积运算的最终结果或中间结果;
具体地,如果该基础处理电路有直接与主处理电路相连接的输出接口则从该接口传输结果,如果没有,则向着能够直接向主处理电路输出的基础处理电路的方向输出结果(例如,图1b中,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果)。
基础处理电路接收到来自其他基础处理电路的计算结果之后,将该数据传输给与其相连接的其他基础处理电路或者主处理电路;
向着能够直接向主处理电路输出的方向输出结果(例如,最下面一行基础处理电路将其输出结果直接输出给主处理电路,其他基础处理电路从竖向的输出接口向下传输运算结果);
主处理电路接收到各个基础处理电路内积运算的结果,即可得到输出结果。
在一个实施例中,本发明公开了一种神经网络运算装置,其包括用于执行如上所述方法实施例中提供的所有或部分实施方式所对应的功能单元。
在一个实施例里,本发明公开了一种芯片(如图4),用于执行如上所述方法实施例中提供的所有或部分实施方式。
在一个实施例里,本发明公开了一种电子装置,其包括用于执行如上所述方法实施例中的所有或部分实施方式的功能单元。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。

Claims (12)

1.一种集成电路芯片装置,其特征在于,所述集成电路芯片装置包括:主处理电路以及多个基础处理电路;所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述第一映射电路以及所述第二映射电路均用于执行神经网络运算中的各个数据的压缩处理;
所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;
所述主处理电路,用于获取输入数据块、卷积核数据块以及卷积指令,依据所述卷积指令将所述输入数据块划分为竖向数据块,将所述卷积核数据块划分为横向数据块;依据所述卷积指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述横向数据块和/或所述竖向数据块;依据所述卷积指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路,用于依据所述卷积指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路,用于将所述运算结果处理得到所述卷积指令的指令结果;
所述基础处理电路,具体用于将基本数据块与该竖向数据块执行乘积运算得到乘积结果,将所述乘积结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路,用于对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果;
所述主处理电路,具体用于将处理后的竖向数据块以及该竖向数据块关联的标识数据块分成多个部分竖向数据块以及所述部分竖向数据块关联的标识数据块,将所述多个部分竖向数据块以及所述多个部分竖向数据块各自关联的标识数据块通过多次广播至所述基础处理电路;所述多个部分竖向数据块组合形成所述竖向数据块;
所述基础处理电路,具体用于启动所述第二映射电路根据所述基本数据块关联的标识数据块以及所述部分竖向数据块关联的标识数据块获得连接标识数据块;根据所述连接标识数据块对所述基本数据块以及所述部分竖向数据块进行处理得到处理后的基本数据块以及处理后的部分广播数据;对所述处理后的基本数据块以及处理后的部分竖向数据块执行卷积运算;
或者,所述基础处理电路,具体用于启动所述第二映射电路根据所述部分竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分竖向数据块执行卷积运算;
所述主处理电路,具体用于将竖向数据块或者处理后的竖向数据块分成多个部分竖向数据块,将所述多个部分竖向数据块通过多次广播至所述基础处理电路;或者,
所述主处理电路,具体用于将所述竖向数据块或者处理后的竖向数据块通过一次广播至所述基础处理电路。
2.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述基础处理电路,具体用于将部分竖向数据块与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路;或者,
所述基础处理电路,具体用于复用n次该部分竖向数据块执行该部分竖向数据块与n个该基本数据块的内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
3.根据权利要求1-2任一项所述的集成电路芯片装置,其特征在于,当所述第一数据块包括横向数据块和竖向数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述横向数据块和所述竖向数据块进行处理得到处理后的横向数据块以及该横向数据块关联的标识数据块,处理后的竖向数据块以及该竖向数据块关联的标识数据块;将所述处理后的横向数据块以及该横向数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述竖向数据块关联的标识数据块和所述基本数据块关联的标识数据获得连接标识数据块,并根据所述连接标识数据块对所述竖向数据块和所述基本数据块进行处理得到处理后的竖向数据块和基本数据块;对所述处理后的竖向数据块和基本数据块执行卷积运算得到运算结果,将所述运算结果发送至所述主处理电路。
4.根据权利要求1-2任一项所述的集成电路芯片装置,其特征在于,当所述第一数据块包括横向数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述横向数据块进行处理得到处理后的横向数据块以及该横向数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述横向数据块关联的标识数据块对所述横向数据块进行处理得到处理后的横向数据块;将所述处理后的横向数据块以及该横向数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述竖向数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述基本数据块关联的标识数据块对所述竖向数据块进行处理,得到处理后的竖向数据块;对所述处理后的竖向数据块和所述处理后的基本数据块执行卷积运算得到运算结果,将所述运算结果发送至所述主处理电路。
5.根据权利要求1-2任一项所述的集成电路芯片装置,其特征在于,当所述第一数据块包括竖向数据块时,
所述主处理电路,具体用于启动所述第一映射电路对所述竖向数据块进行处理,得到处理后的竖向数据块以及该竖向数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述竖向数据块关联的标识数据块对所述竖向数据块进行处理得到处理后的竖向数据块;对所述横向数据块进行拆分处理得到多个基本数据块;将所述多个基本数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路,具体用于启动所述第二映射电路根据所述竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的竖向数据块和所述处理后的基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路。
6.根据权利要求1所述的集成电路芯片装置,其特征在于,
所述主处理电路包括:主寄存器或主片上缓存电路;
所述基础处理电路包括:基本寄存器或基本片上缓存电路;
所述输入数据块为:矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合;
所述卷积核数据块为:矩阵、三维数据块、四维数据块以及n维数据块中一种或任意组合。
7.一种神经网络运算方法,其特征在于,所述方法应用在集成电路芯片装置内,所述集成电路芯片装置包括主处理电路以及多个基础处理电路,所述主处理电路包括第一映射电路,所述多个基础处理电路中至少一个电路包括第二映射电路,所述多个基础处理电路呈阵列分布;每个基础处理电路与相邻的其他基础处理电路连接,所述主处理电路连接第1行的n个基础处理电路、第m行的n个基础处理电路以及第1列的m个基础处理电路;所述方法包括:
所述第一映射电路以及所述第二映射电路均执行神经网络运算中的各个数据的压缩处理;
所述主处理电路获取输入数据块、卷积核数据块以及卷积指令,依据所述卷积指令将所述输入数据块划分为竖向数据块,将所述卷积核数据块划分为横向数据块;依据所述卷积指令的运算控制确定启动第一映射电路对第一数据块进行处理,得到处理后的第一数据块;所述第一数据块包括所述横向数据块和/或所述竖向数据块;依据所述卷积指令将处理后的第一数据块发送至与所述主处理电路相连的基础处理电路中的至少一个基础处理电路;
所述多个基础处理电路依据所述卷积指令的运算控制确定是否启动第二映射电路对第二数据块进行处理,依据处理后的第二数据块以并行方式执行神经网络中的运算得到运算结果,并将该运算结果通过与所述主处理电路连接的基础处理电路传输给所述主处理电路;所述第二数据块为所述基础处理电路确定的接收所述主处理电路发送的数据块,所述第二数据块与所述处理后的第一数据块关联;
所述主处理电路将所述运算结果处理得到所述卷积指令的指令结果;
所述基础处理电路将基本数据块与该竖向数据块执行乘积运算得到乘积结果,将所述乘积结果累加得到运算结果,将所述运算结果发送至所述主处理电路;
所述主处理电路对所述运算结果累加后得到累加结果,将该累加结果排列得到所述指令结果;
所述主处理电路将处理后的竖向数据块以及该竖向数据块关联的标识数据块分成多个部分竖向数据块以及所述部分竖向数据块关联的标识数据块,将所述多个部分竖向数据块以及所述多个部分竖向数据块各自关联的标识数据块通过多次广播至所述基础处理电路;所述多个部分竖向数据块组合形成所述竖向数据块;
所述基础处理电路启动所述第二映射电路根据所述基本数据块关联的标识数据块以及所述部分竖向数据块关联的标识数据块获得连接标识数据块;根据所述连接标识数据块对所述基本数据块以及所述部分竖向数据块进行处理得到处理后的基本数据块以及处理后的部分广播数据;对所述处理后的基本数据块以及处理后的部分竖向数据块执行卷积运算;
或者,所述基础处理电路启动所述第二映射电路根据所述部分竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的基本数据块以及所述部分竖向数据块执行卷积运算;
所述主处理电路将竖向数据块或者处理后的竖向数据块分成多个部分竖向数据块,将所述多个部分竖向数据块通过多次广播至所述基础处理电路;或者,
所述主处理电路将所述竖向数据块或者处理后的竖向数据块通过一次广播至所述基础处理电路。
8.根据权利要求7所述的方法,其特征在于,
所述基础处理电路将部分竖向数据块与该基本数据块执行一次内积处理后得到内积处理结果,将所述内积处理结果累加得到部分运算结果,将所述部分运算结果发送至所述主处理电路;或者,
所述基础处理电路复用n次该部分竖向数据块执行该部分竖向数据块与n个该基本数据块的内积运算得到n个部分处理结果,将n个部分处理结果分别累加后得到n个部分运算结果,将所述n个部分运算结果发送至主处理电路,所述n为大于等于2的整数。
9.根据权利要求7-8任一项所述的方法,其特征在于,当所述第一数据块包括横向数据块和竖向数据块时,
所述主处理电路启动所述第一映射电路对所述横向数据块和所述竖向数据块进行处理得到处理后的横向数据块以及该横向数据块关联的标识数据块,处理后的竖向数据块以及该竖向数据块关联的标识数据块;将所述处理后的横向数据块以及该横向数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路启动所述第二映射电路根据所述竖向数据块关联的标识数据块和所述基本数据块关联的标识数据获得连接标识数据块,并根据所述连接标识数据块对所述竖向数据块和所述基本数据块进行处理得到处理后的竖向数据块和基本数据块;对所述处理后的竖向数据块和基本数据块执行卷积运算得到运算结果,将所述运算结果发送至所述主处理电路。
10.根据权利要求7-8任一项所述的方法,其特征在于,当所述第一数据块包括横向数据块时,
所述主处理电路启动所述第一映射电路对所述横向数据块进行处理得到处理后的横向数据块以及该横向数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述横向数据块关联的标识数据块对所述横向数据块进行处理得到处理后的横向数据块;将所述处理后的横向数据块以及该横向数据块关联的标识数据块进行拆分处理得到多个基本数据块以及所述基本数据块各自关联的标识数据块,将所述多个基本数据块以及所述多个基本数据块各自关联的标识数据块分发至与其连接的基础处理电路,将所述竖向数据块广播至与其连接的基础处理电路;
所述基础处理电路启动所述第二映射电路根据所述基本数据块关联的标识数据块对所述竖向数据块进行处理,得到处理后的竖向数据块;对所述处理后的竖向数据块和所述处理后的基本数据块执行卷积运算得到运算结果,将所述运算结果发送至所述主处理电路。
11.根据权利要求7-8任一项所述的方法,其特征在于,当所述第一数据块包括竖向数据块时,
所述主处理电路启动所述第一映射电路对所述竖向数据块进行处理,得到处理后的竖向数据块以及该竖向数据块关联的标识数据块,或者启动所述第一映射电路根据预存的所述竖向数据块关联的标识数据块对所述竖向数据块进行处理得到处理后的竖向数据块;对所述横向数据块进行拆分处理得到多个基本数据块;将所述多个基本数据块分发至与其连接的基础处理电路,将所述处理后的竖向数据块以及该竖向数据块关联的标识数据块广播至与其连接的基础处理电路;
所述基础处理电路启动所述第二映射电路根据所述竖向数据块关联的标识数据块对所述基本数据块进行处理得到处理后的基本数据块;对所述处理后的竖向数据块和所述处理后的基本数据块执行内积运算得到运算结果,将所述运算结果发送至所述主处理电路。
12.一种芯片,其特征在于,所述芯片集成如权利要求1-6任意一项所述的装置。
CN202010617208.3A 2018-02-27 2018-02-27 集成电路芯片装置及相关产品 Active CN111767997B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010617208.3A CN111767997B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010617208.3A CN111767997B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品
CN201810164331.7A CN110197269B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201810164331.7A Division CN110197269B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Publications (2)

Publication Number Publication Date
CN111767997A CN111767997A (zh) 2020-10-13
CN111767997B true CN111767997B (zh) 2023-08-29

Family

ID=67750912

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810164331.7A Active CN110197269B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品
CN202010617208.3A Active CN111767997B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201810164331.7A Active CN110197269B (zh) 2018-02-27 2018-02-27 集成电路芯片装置及相关产品

Country Status (1)

Country Link
CN (2) CN110197269B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107316078B (zh) * 2016-04-27 2021-05-07 中科寒武纪科技股份有限公司 用于执行人工神经网络自学习运算的装置和方法
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算系统和电子设备
CN106447034B (zh) * 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片
CN107609641B (zh) * 2017-08-30 2020-07-03 清华大学 稀疏神经网络架构及其实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于功能重分化的LUT型胚胎电子阵列进化自修复;朱赛;蔡金燕;孟亚峰;李丹阳;;微电子学与计算机(第09期);全文 *

Also Published As

Publication number Publication date
CN110197269A (zh) 2019-09-03
CN110197269B (zh) 2020-12-29
CN111767997A (zh) 2020-10-13

Similar Documents

Publication Publication Date Title
CN110197270B (zh) 集成电路芯片装置及相关产品
CN109993301B (zh) 神经网络训练装置及相关产品
CN111160542B (zh) 集成电路芯片装置及相关产品
CN109993291B (zh) 集成电路芯片装置及相关产品
CN109993290B (zh) 集成电路芯片装置及相关产品
CN109993292B (zh) 集成电路芯片装置及相关产品
CN110197263B (zh) 集成电路芯片装置及相关产品
CN111767997B (zh) 集成电路芯片装置及相关产品
CN110197274B (zh) 集成电路芯片装置及相关产品
CN111767996B (zh) 集成电路芯片装置及相关产品
CN110197265B (zh) 集成电路芯片装置及相关产品
CN110197275B (zh) 集成电路芯片装置及相关产品
CN110197271B (zh) 集成电路芯片装置及相关产品
WO2019129302A1 (zh) 集成电路芯片装置及相关产品
CN113807510B (zh) 集成电路芯片装置及相关产品
CN109993289B (zh) 集成电路芯片装置及相关产品
CN110197273B (zh) 集成电路芯片装置及相关产品
CN111767998B (zh) 集成电路芯片装置及相关产品
CN110197266B (zh) 集成电路芯片装置及相关产品
CN110197268B (zh) 集成电路芯片装置及相关产品

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
GR01 Patent grant
GR01 Patent grant