CN111930674A - 乘累加运算装置及方法、异构智能处理器及电子设备 - Google Patents

乘累加运算装置及方法、异构智能处理器及电子设备 Download PDF

Info

Publication number
CN111930674A
CN111930674A CN202010798225.1A CN202010798225A CN111930674A CN 111930674 A CN111930674 A CN 111930674A CN 202010798225 A CN202010798225 A CN 202010798225A CN 111930674 A CN111930674 A CN 111930674A
Authority
CN
China
Prior art keywords
bit
data
result
exponent
circuit
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.)
Granted
Application number
CN202010798225.1A
Other languages
English (en)
Other versions
CN111930674B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202010798225.1A priority Critical patent/CN111930674B/zh
Publication of CN111930674A publication Critical patent/CN111930674A/zh
Application granted granted Critical
Publication of CN111930674B publication Critical patent/CN111930674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • 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/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Abstract

本公开提供了一种乘累加运算装置、组合运算电路、运算方法、异构智能处理器及电子设备,包括:乘运算电路和累加运算电路;所述乘运算电路,用于对输入数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;所述累加运算电路,用于对所述多个中间结果进行循环累加运算,得到计算结果;其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。可提高数据处理效率。

Description

乘累加运算装置及方法、异构智能处理器及电子设备
技术领域
本公开涉及数据处理技术领域,尤其涉及一种乘累加运算装置、组合运算电路、运算方法、异构智能处理器及电子设备。
背景技术
数据处理是神经网络中进行的必要步骤,而神经网络运算中通常存在大量的数据,同时现有神经网络的复杂度越来越高,计算时通常采用功耗消耗巨大的浮点数或定点数乘法计算,数据处理效率低、速度慢。
发明内容
本公开的主要目的在于提供一种乘累加运算装置、组合运算电路、运算方法、异构智能处理器及电子设备,可提高数据处理效率。
为实现上述目的,本公开实施例第一方面提供一种乘累加运算装置,包括:乘运算电路和累加运算电路;
所述乘运算电路,用于对输入数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;
所述累加运算电路,用于对所述多个中间结果进行循环累加运算,得到计算结果;
其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。
可选的,所述乘运算电路包括:指数计算子电路和移位计算子电路;
所述指数计算子电路,用于根据所述输入数据的指数位数据和非均匀位数据,得到指数位结果;
所述移位计算子电路,用于根据所述输入数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算后,得到所述中间结果。
可选的,所述指数计算子电路包括:第一加法器、第二加法器、第三加法器、第四加法器、第五加法器和第六加法器;
所述第一加法器,用于将所述输入数据的指数位数据相加,得到第一和结果;
所述第二加法器,用于将所述第一和结果与-6相加,得到所述指数位结果的第一行指数位;
所述第三加法器,用于将所述第一和结果与-9相加,得到所述指数位结果的第二行指数位;
所述第四加法器,用于将所述第二行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第三行指数位;
所述第五加法器,用于将所述第二行指数位与另一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第四行指数位;
所述第六加法器,用于将所述第四行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第五行指数位。
可选的,所述移位计算子电路包括:乘法器、第一移位器、第七加法器、第二移位器、第八加法器、第三移位器、第九加法器、第四移位器和第五移位器;
所述乘法器,用于将所述输入数据的尾数位数据相乘,得到乘结果;所述第一移位器,用于将所述乘结果按照所述第五行指数位进行移位运算;
所述第七加法器,用于将所述乘结果与一个所述输入数据的尾数位数据相加,得到第二和结果;所述第二移位器,用于将所述第二和结果按照所述第三行指数位进行移位运算;
所述第八加法器,用于将所述乘结果与另一个所述输入数据的尾数位数据相加,得到第三和结果;所述第三移位器,用于将所述第三和结果按照所述第四行指数位进行移位运算;
所述第九加法器,用于将所述第三和结果与另一个所述输入数据的尾数位数据相加,得到第四和结果;所述第四移位器,用于将所述第四和结果按照所述第二行指数位进行移位运算;
所述第五移位器,用于将1按照所述第一行指数位进行移位运算。
可选的,对于一个运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,
在接收到中间结果的第一运算周期,将所述中间结果与第一运算周期的第一中间数据相加,得到第一累加结果;
将所述第一累加结果存储为下一运算周期的第一中间数据;
在未收到中间结果的第二运算周期时,将第二运算周期的第一中间数据确定为所述计算结果;
其中,初始运算周期的第一中间数据的值为0。
可选的,对于两个及以上运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,
在接收到中间结果的第三运算周期,将所述中间结果与第三运算周期的第三中间数据相加,得到第二累加结果;
将第三运算周期的第二中间数据存储为下一运算周期的第三中间数据,以及,将所述第二累加结果存储为下一运算周期的第二中间数据;
在未收到中间结果的第四运算周期时,将第四运算周期的第二中间数据与第四运算周期的第三中间数据相加,得到所述计算结果;
其中,初始运算周期的第二中间数据和第三中间数据的值为0。
可选的,所述输入数据包括输入神经元数据和权值数据。
可选的,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;
所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;
所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;
所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;
所述1位非均匀位,用于增强有效数据表示精度。
本公开实施例第二方面提供一种组合运算电路,包括本公开实施例第一方面提供的乘累加运算装置;
当所述组合运算电路包括多个所述乘累加运算装置时,所述多个所述乘累加运算装置相互连接并传输数据。
可选的,多个所述乘累加运算装置共享一个寄存器或各自连接一个寄存器;
所述寄存器用于存储第一中间数据、第二中间数据和第三中间数据中的至少一个。
本公开实施例第三方面提供了一种异构智能处理器,包括通用处理器,和/或,至少一个智能处理器,所述智能处理器包括如本公开实施例第一方面所述乘累加运算装置或如本公开实施例第二方面所述的组合运算电路。
本公开实施例第四方面提供了一种电子设备,包括本公开实施例第三方面提供的异构智能处理器。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一实施例提供的乘累加运算装置的结构示意图;
图2为本公开一实施例提供的8位非均匀数的结构示意图;
图3为本公开一实施例提供的指数计算子电路的计算示意图;
图4为本公开一实施例提供的移位计算子电路的计算示意图;
图5为本公开一实施例提供的组合运算电路的结构示意图;
图6为本公开一实施例提供的运算方法的流程示意图;
图7为本公开一实施例提供的智能处理器的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开的说明书和权利要求书及所述附图中的术语″第一″、″第二″、″第三″和″第四″等是用于区别不同对象,而不是用于描述特定顺序。此外,术语″包括″和″具有″以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
请参阅图1,图1为本公开一实施例提供的乘累加运算装置的结构示意图,该乘累加运算装置包括乘运算电路101和累加运算电路102;所述乘运算电路101,用于对输入数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路102;所述累加运算电路102,用于对所述多个中间结果进行循环累加运算,得到计算结果;其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。
其中,累加运算电路102进行循环累加可以在任意运算周期的加法器下无空泡的执行累加运算。
在一种可能的实现方式中,可以根据装置的计算能力等实际需要对累加运算电路102的循环累加过程中进行设置,需要说明的是,本领域技术人员可以根据实际需要对循环累加过程进行设置,本公开对此不作限制。
在本实施例中,对于输入数据的数据类型为非均匀数的乘累加运算装置,通过对多个中间结果进行循环累加可以降低数据访存量和计算量,提高数据处理效率。
在本公开其中一个实施例中,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;所述1位非均匀位,用于增强有效数据表示精度。
其中,非均匀数数据数据类型是一种二进制表示方式。非均匀数数据位数包括8位(以下以LOGNN8表示8位非匀均数数据类型)。
具体的,如图2所示,8位非均匀数中包括1比特符号位SIGN、3比特指数位EXPONENT、3比特尾数位MANTISSA和1比特非均匀位EQU。8位非均匀数定义如下:
当3位指数位等于23-1并且3位尾数位不等于0时,8位非均匀数表示的是非数(NAN);
当3位指数位等于23-1并且3位尾数位等于0时,8位非均匀数表示的是无穷数(INF)。其中,符号位为0时表示正无穷数,符号位为1时,符号位为1时表示负无穷数;
当3位指数位不等于23-1或者0时,为8位非均匀数的标准模式,8位非均匀数表示的数据a=(-1)SIGN×2EXPONENT-3×(1+MATISSA×2-3×(1+2-EQU));
当3位指数位不等于0时,为8位非均匀数的非标准模式8位非均匀数表示的数据a=(-1)SIGN×2-3×1+MATISSA×2-3×(1+2-EQU)。
在本实施例中,8位非均匀数仅使用了8位二进制序列用来表示数据。相比较于传统深度神经网络中使用的32位浮点数,数据存储量减少到四分之一,极大的缓解了深度神经网络算法在CPU、GPU等传统计算机硬件系统中的访存瓶颈问题。数据存储量的减少也使得深度神经网络模型在移动终端设备中的运行成为了可能。8位非均匀数能够表示从较高精度的小数数据以及跨越从负44到正44的实数范围。可较好的适配32位浮点数表示的深度神经网络模型中不同层数据各自独立的高斯分布特点,对于较高精度小数数据的支持也满足了不同深度神经网络模型的特异性需求。
在本实施例中,数据类型为非均匀数的数据规避了功耗消耗巨大的浮点数乘法计算,使用尽可能简单的逻辑完成非均匀数数据乘法运算操作。非均匀数数据乘法运算相比较于传统数据表示方法的乘法运算减少了完成1次等效乘法运算的功耗,减小了乘法器单元的数字电路面积。且数据类型为非均匀数的数据在人工神经网络模型中,可以实现与数据类型为浮点数的数据的人工神经网络模型相同的神经网络识别精度。
在本公开其中一个实施例中,输入数据包括输入神经元数据和权值数据。可适用于神经网络运算,以下以输入数据为输入神经元数据和权值数据对本公开进行示意性说明。
在本公开其中一个实施例中,所述乘运算电路101包括:指数计算子电路和移位计算子电路;所述指数计算子电路,用于根据所述输入数据的指数位数据和非均匀位数据,得到指数位结果;所述移位计算子电路,用于根据所述输入数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。
在本公开其中一个实施例中,所述指数计算子电路包括:第一加法器、第二加法器、第三加法器、第四加法器、第五加法器和第六加法器;所述第一加法器,用于将所述输入数据的指数位数据相加,得到第一和结果;所述第二加法器,用于将所述第一和结果与-6相加,得到所述指数位结果的第一行指数位;所述第三加法器,用于将所述第一和结果与-9相加,得到所述指数位结果的第二行指数位;所述第四加法器,用于将所述第二行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第三行指数位;所述第五加法器,用于将所述第二行指数位与另一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第四行指数位;所述第六加法器,用于将所述第四行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第五行指数位。
在本实施例中,数据类型为非均匀数的神经元数据A乘以数据类型为非均匀数的权值数据B,该乘法运算过程共需要3个定点数加法器和3个1比特定点数加法器。神经元数据A的指数位Ea、非均匀位EQUa和权值数据B的指数位Eb、非均匀位EQUb经过图3运算,得到计算结果为5个中间结果的指数位,第1行指数位、第2行指数位直到第5行指数位。该指数位结果留待移位计算子电路使用。
具体的,请参阅图3,第一加法器将神经元数据A的指数位Ea和权值数据B的指数位Eb相加,得到第一和结果。第二加法器将第一和结果与-6相加,得到指数位结果的第一行指数位(First Line Exp)。第三加法器将第一和结果与-9相加,得到指数位结果的第二行指数位(Second Line Exp)。第四加法器将第二行指数位与神经元数据A的非均匀位的负数-EQUa相加,得到指数位结果的第三行指数位(Third Line Exp)。第五加法器将第二行指数位与权值数据B的非均匀位的负数-EQUb相加,得到指数位结果的第四行指数位(FourthLine Exp)。第六加法器将第四行指数位与神经元数据A的非均匀位的负数-EQUa相加,得到指数位结果的第五行指数位(Fiveth Line Exp)。
在本公开其中一个实施例中,所述移位计算子电路包括:乘法器、第一移位器、第七加法器、第二移位器、第八加法器、第三移位器、第九加法器、第四移位器和第五移位器;所述乘法器,用于将所述输入数据的尾数位数据相乘,得到乘结果;所述第一移位器,用于将所述乘结果按照所述第五行指数位进行移位运算;所述第七加法器,用于将所述乘结果与一个所述输入数据的尾数位数据相加,得到第二和结果;所述第二移位器,用于将所述第二和结果按照所述第三行指数位进行移位运算;所述第八加法器,用于将所述乘结果与另一个所述输入数据的尾数位数据相加,得到第三和结果;所述第三移位器,用于将所述第三和结果按照所述第四行指数位进行移位运算;所述第九加法器,用于将所述第三和结果与另一个所述输入数据的尾数位数据相加,得到第四和结果;所述第四移位器,用于将所述第四和结果按照所述第二行指数位进行移位运算;所述第五移位器,用于将1按照所述第一行指数位进行移位运算。
在本实施例中,请参阅图4,该移位计算子电路使用指数计算子电路计算得到的指数位结果作为移位计算子电路的移位位数,共包括1个3比特定点数乘法电路和3个3比特定点数加法电路以及相应的移位运算数字电路。神经元数据A的尾数Ma和神经元数据B的尾数Mb经过图3所示加法运算,以及3比特乘法运算结果并将结果按照第1行指数位、第2行指数位等指数位结果进行移位得到LOGNN8乘法运算结果存储到中间结果(32bitaccumulation)之中。
具体的,请参阅图4,乘法器将神经元数据A的尾数位数据Ma和权值数据B的尾数位数据Mb的相乘,得到乘结果。第一移位器将乘结果按照第五行指数位(Fiveth Line Exp)进行移位运算。第七加法器将乘结果与神经元数据A的尾数位数据Ma相加,得到第二和结果。第二移位器将第二和结果按照第三行指数位(Third Line Exp)进行移位运算。第八加法器,用于将乘结果与权值数据B的尾数位数据Mb相加,得到第三和结果。第三移位器,用于将第三和结果按照第四行指数位(Fourth Line Exp)进行移位运算。第九加法器将第三和结果与权值数据B的尾数位数据Mb相加,得到第四和结果。第四移位器,用于将第四和结果按照第二行指数位(Second Line Exp)进行移位运算。第五移位器,用于将1按照第一行指数位(First Line Exp)进行移位运算。
在本公开其中一个实施例中,对于一个运算周期可以执行完毕的累加运算,所述累加运算电路102具体用于,在接收到中间结果的第一运算周期,将所述中间结果与第一运算周期的第一中间数据相加,得到第一累加结果;将所述第一累加结果存储为下一运算周期的第一中间数据;在未收到中间结果的第二运算周期时,将第二运算周期的第一中间数据确定为所述计算结果;其中,初始运算周期的第一中间数据的值为0。
在本实施例中,接收到中间结果的第一运算周期可以是累加运算电路102接收到中间结果的任意一个运算周期,未收到中间结果的第二运算周期可以是在累加子模块未接收到中间结果的一个运算周期。接收到中间结果的第一运算周期所描述的是累加运算电路102循环反复执行的过程,未收到中间结果的第二运算周期是累加运算电路102最终确定计算结果的过程。累加运算电路102可以循环执行多个接收到中间结果的第一运算周期,执行一个未收到中间结果的第二运算周期,已完成对多个中间结果的运算。
以下以多个中间结果分别为1、2、3,第一个运算周期、第二个运算周期和第三个运算周期为第一运算周期,第四个运算周期为第二运算周期,对累加运算电路102对于多个中间结果进行循环累加的过程进行示意性说明。
在第一个运算周期中,累加运算电路102接收到中间结果1,将中间结果1与第一个运算周期的第一中间数据0相加,得到第一个运算周期的第一累加结果0+1,然后将第一个运算周期的第一累加结果0+1存储为第二个运算周期(也即下一运算周期)的第一中间数据0+1。在第二个运算周期中,累加运算电路102接收到中间结果2,将中间结果2与第二个运算周期的第一中间数据0+1相加,得到第二个运算周期的第一累加结果0+1+2,然后将第二个运算周期的第一累加结果0+1+2存储为第三个运算周期(也即下一运算周期)的第一中间数据0+1+2。在第三个运算周期中,累加运算电路102接收到中间结果3,将中间结果3与第三个运算周期的第一中间数据0+1+2相加,得到第三个运算周期的第一累加结果0+1+2+3,然后将第二个运算周期的第一累加结果0+1+2+3存储为第四个运算周期(也即下一运算周期)的第一中间数据“0+1+2+3”。在第四个运算周期中,累加运算电路102未接收到中间结果,将第四个运算周期的第一中间数据0+1+2+3确定为计算结果。
在本公开其中一个实施例中,对于两个及以上运算周期可以执行完毕的累加运算,所述累加运算电路102具体用于,在接收到中间结果的第三运算周期,将所述中间结果与第三运算周期的第三中间数据相加,得到第二累加结果;将第三运算周期的第二中间数据存储为下一运算周期的第三中间数据,以及,将所述第二累加结果存储为下一运算周期的第二中间数据;在未收到中间结果的第四运算周期时,将第四运算周期的第二中间数据与第四运算周期的第三中间数据相加,得到所述计算结果;其中,初始运算周期的第二中间数据和第三中间数据的值为0。
在本实施例中,接收到中间结果的第三运算周期可以是累加运算电路102接收到中间结果的任意一个运算周期,未收到中间结果的第四运算周期可以是在累加子模块未接收到中间结果的一个运算周期。接收到中间结果的第三运算周期所描述的是累加运算电路102循环反复执行的过程,未收到中间结果的第四运算周期是累加运算电路102最终确定计算结果的过程。累加运算电路102可以循环执行多个接收到中间结果的第三运算周期,执行一个未收到中间结果的第二运算周期,已完成对多个中间结果的运算。
以下以多个中间结果分别为1、2、3、4,第一个运算周期、第二个运算周期、第三个运算周期、第四个运算周期为第三运算周期,第五个运算周期为第四运算周期,对累加运算电路102对于多个中间结果进行循环累加的过程进行示意性说明。
在第一个运算周期中,累加运算电路102接收到中间结果1,将中间结果1与第一个运算周期的第三中间数据0相加,得到第一个运算周期的第二累加结果0+1,然后将第一个运算周期的第二中间数据0存储为第二个运算周期(也即下一运算周期)的第三中间数据,以及将第一个运算周期的第二累加结果0+1存储为第二个运算周期(也即下一运算周期)的第二中间数据。
在第二个运算周期中,累加运算电路102接收到中间结果2,将中间结果2与第二个运算周期的第三中间数据0相加,得到第二个运算周期的第二累加结果0+2,然后将第二个运算周期的第二中间数据0+1存储为第三个运算周期(也即下一运算周期)的第三中间数据,以及将第二个运算周期的第二累加结果0+1存储为第三个运算周期(也即下一运算周期)的第二中间数据。
在第三个运算周期中,累加运算电路102接收到中间结果3,将中间结果3与第三个运算周期的第三中间数据0+1相加,得到第三个运算周期的第二累加结果0+1+3,然后将第三个运算周期的第二中间数据0+2存储为第四个运算周期(也即下一运算周期)的第三中间数据,以及将第三个运算周期的第二累加结果0+1+3存储为第四个运算周期(也即下一运算周期)的第二中间数据。
在第四个运算周期中,累加运算电路102接收到中间结果4,将中间结果4与第四个运算周期的第三中间数据0+2相加,得到第四个运算周期的第二累加结果0+2+4,然后将第四个运算周期的第二中间数据0+1+3存储为第五个运算周期(也即下一运算周期)的第三中间数据,以及将第四个运算周期的第二累加结果0+2+4存储为第五个运算周期(也即下一运算周期)的第二中间数据。
在第五个运算周期中,累加运算电路102未接收到中间结果,将第五个运算周期的第二中间数据0+2+4确定为计算结果与将第五个运算周期的第三中间数据0+1+3相加,得到第五个运算周期的第二累加结果0+1+2+3+4,将第五个运算周期的第二累加结果0+1+2+3+4确定为计算结果。
本公开实施例还提供了一种组合运算电路,该组合运算电路包括至少一个如图1所示的乘累加运算装置。当所述组合运算电路包括多个所述乘累加运算装置时,所述多个所述乘累加运算装置相互连接并传输数据。
本公开不对乘累加运算装置的数量做出限制,本领域技术人员可以根据需要进行其它选择。
请参阅图5,图5中以乘累加运算装置为16个为例,每个乘累加运算装置(LADD)与上下左右4个乘累加运算装置通过互联网络互联,边界处的乘累加运算装置与最远端的乘累加运算装置通过互联网络互联。通过互联网络每个乘累加运算装置可以单独完成运算任务,和/或,与其它一个或者多个乘累加运算装置一起完成运算任务。
在本公开其中一个实施例中,多个所述乘累加运算装置共享一个寄存器(REG)或各自连接一个寄存器;所述寄存器用于存储第一中间数据、第二中间数据和第三中间数据中的至少一个。
可理解的,图5中仅以每个乘累加运算装置各自连接一个寄存器对本公开的组合运算电路进行示意性说明,本公开提高的组合运算电路中的多个乘累加运算装置还可共享一个寄存器,或任意几个乘累加运算装置共享一个寄存器。本公开对此不做限制。
请参阅图6,图6为本公开一实施例提供的运算方法的流程示意图,该运算方法可以适用于如图1所示的乘累加运算装置以及如图5所示的组合运算电路。该运算方法包括:
S601、对输入数据进行指数计算和移位计算,得到多个中间结果;
S602、对所述多个中间结果进行循环累加运算,得到计算结果。
其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。
在本公开其中一个实施例中,数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;所述1位非均匀位,用于增强有效数据表示精度。
在本公开其中一个实施例中,输入数据包括输入神经元数据和权值数据。
在本公开其中一个实施例中,所述步骤S601包括:根据所述输入数据的指数位数据和非均匀位数据,得到指数位结果;根据所述输入数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。
在本公开其中一个实施例中,指数计算子电路通过根据所述输入数据的指数位数据和非均匀位数据,得到指数位结果。该指数计算子电路包括:第一加法器、第二加法器、第三加法器、第四加法器、第五加法器和第六加法器;所述第一加法器,用于将所述输入数据的指数位数据相加,得到第一和结果;所述第二加法器,用于将所述第一和结果与-6相加,得到所述指数位结果的第一行指数位;所述第三加法器,用于将所述第一和结果与-9相加,得到所述指数位结果的第二行指数位;所述第四加法器,用于将所述第二行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第三行指数位;所述第五加法器,用于将所述第二行指数位与另一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第四行指数位;所述第六加法器,用于将所述第四行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第五行指数位。
在本公开其中一个实施例中,移位计算子电路通过根据所述输入数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算,得到所述中间结果。所述移位计算子电路包括:乘法器、第一移位器、第七加法器、第二移位器、第八加法器、第三移位器、第九加法器、第四移位器和第五移位器;所述乘法器,用于将所述输入数据的尾数位数据相乘,得到乘结果;所述第一移位器,用于将所述乘结果按照所述第五行指数位进行移位运算;所述第七加法器,用于将所述乘结果与一个所述输入数据的尾数位数据相加,得到第二和结果;所述第二移位器,用于将所述第二和结果按照所述第三行指数位进行移位运算;所述第八加法器,用于将所述乘结果与另一个所述输入数据的尾数位数据相加,得到第三和结果;所述第三移位器,用于将所述第三和结果按照所述第四行指数位进行移位运算;所述第九加法器,用于将所述第三和结果与另一个所述输入数据的尾数位数据相加,得到第四和结果;所述第四移位器,用于将所述第四和结果按照所述第二行指数位进行移位运算;所述第五移位器,用于将1按照所述第一行指数位进行移位运算。
在本公开其中一个实施例中,对于一个运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,在接收到中间结果的第一运算周期,将所述中间结果与第一运算周期的第一中间数据相加,得到第一累加结果;将所述第一累加结果存储为下一运算周期的第一中间数据;在未收到中间结果的第二运算周期时,将第二运算周期的第一中间数据确定为所述计算结果;其中,初始运算周期的第一中间数据的值为0。
在本公开其中一个实施例中,对于两个及以上运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,在接收到中间结果的第三运算周期,将所述中间结果与第三运算周期的第三中间数据相加,得到第二累加结果;将第三运算周期的第二中间数据存储为下一运算周期的第三中间数据,以及,将所述第二累加结果存储为下一运算周期的第二中间数据;在未收到中间结果的第四运算周期时,将第四运算周期的第二中间数据与第四运算周期的第三中间数据相加,得到所述计算结果;其中,初始运算周期的第二中间数据和第三中间数据的值为0。
本公开还提供了一种异构智能处理器,该异构智能处理器包括通用处理器,和/或,至少一个智能处理器,所述智能处理器包括如图1所示乘累加运算装置或如图5所示的组合运算电路。
所述通用处理器,用于生成程序指令;所述智能处理器,用于接收所述程序指令,以根据所述程序指令完成运算。
在一可选实施例中,请参阅图7,该智能处理器包括:内存电路701、直接内存访问电路702、控制电路703以及运算电路704。
其中该运算电路704可以为如图1所示乘累加运算装置或如图5所示的组合运算电路。图7中,运算电路704以组合运算电路为例进行示意性示例。
所述内存电路701,与所述控制电路703相连,用于存储神经网络中模型参数的数据;所述直接内存访问电路702,与所述内存电路701相连,用于将所述数据从所述内存电路701搬运到所述运算电路704;所述控制电路703,与所述直接内存访问电路702和所述内存电路701相连,用于接收所述神经网络专用的运算指令,并将所述运算指令转换为可直接控制所述运算电路704、直接内存访问电路702、内存电路701的控制信号;所述运算电路704,与所述直接内存访问电路702相连,用于执行数据类型为非均匀数的数据的运算任务。
在一可选实施例中,异构智能处理器包括:存储器、缓存器和运算内核;其中,所述存储器,用于存储神经网络运算的待运算数据(也即输入数据)和运算指令(以下简称指令);所述缓存器,通过存储器总线与所述存储器连接;所述运算内核,通过缓存器总线与所述缓存器连接,通过缓存器读取神经网络运算的数据和指令,完成神经网络运算,并将计算结果送回到缓存器,控制缓存器将计算结果写回到存储器。其中,运算内核的数量为一个或多个,用于执行神经网络运算或神经网络层运算。
本公开还提供了一种电子设备,包括上述异构智能处理器。
在一些实施例中,电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器((RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROMD、随机存取器(英文:Random Access Memory,简称:RAMD、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。

Claims (13)

1.一种乘累加运算装置,其特征在于,包括:乘运算电路和累加运算电路;
所述乘运算电路,用于对输入数据进行指数计算和移位计算,得到多个中间结果,并将所述多个中间结果发送给所述累加运算电路;
所述累加运算电路,用于对所述多个中间结果进行循环累加运算,得到计算结果;
其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。
2.根据权利要求1所述的乘累加运算装置,其特征在于,所述乘运算电路包括:指数计算子电路和移位计算子电路;
所述指数计算子电路,用于根据所述输入数据的指数位数据和非均匀位数据,得到指数位结果;
所述移位计算子电路,用于根据所述输入数据的尾数位数据,得到尾数位结果,并将所述尾数位结果按照所述指数位结果进行移位运算后,得到所述中间结果。
3.根据权利要求2所述的乘累加运算装置,其特征在于,所述指数计算子电路包括:第一加法器、第二加法器、第三加法器、第四加法器、第五加法器和第六加法器;
所述第一加法器,用于将所述输入数据的指数位数据相加,得到第一和结果;
所述第二加法器,用于将所述第一和结果与-6相加,得到所述指数位结果的第一行指数位;
所述第三加法器,用于将所述第一和结果与-9相加,得到所述指数位结果的第二行指数位;
所述第四加法器,用于将所述第二行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第三行指数位;
所述第五加法器,用于将所述第二行指数位与另一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第四行指数位;
所述第六加法器,用于将所述第四行指数位与一个所述输入数据的非均匀位的负数相加,得到所述指数位结果的第五行指数位。
4.根据权利要求3所述的运算电路,其特征在于,所述移位计算子电路包括:乘法器、第一移位器、第七加法器、第二移位器、第八加法器、第三移位器、第九加法器、第四移位器和第五移位器;
所述乘法器,用于将所述输入数据的尾数位数据相乘,得到乘结果;所述第一移位器,用于将所述乘结果按照所述第五行指数位进行移位运算;
所述第七加法器,用于将所述乘结果与一个所述输入数据的尾数位数据相加,得到第二和结果;所述第二移位器,用于将所述第二和结果按照所述第三行指数位进行移位运算;
所述第八加法器,用于将所述乘结果与另一个所述输入数据的尾数位数据相加,得到第三和结果;所述第三移位器,用于将所述第三和结果按照所述第四行指数位进行移位运算;
所述第九加法器,用于将所述第三和结果与另一个所述输入数据的尾数位数据相加,得到第四和结果;所述第四移位器,用于将所述第四和结果按照所述第二行指数位进行移位运算;
所述第五移位器,用于将1按照所述第一行指数位进行移位运算。
5.根据权利要求3所述的乘累加运算装置,其特征在于,对于一个运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,
在接收到中间结果的第一运算周期,将所述中间结果与第一运算周期的第一中间数据相加,得到第一累加结果;
将所述第一累加结果存储为下一运算周期的第一中间数据;
在未收到中间结果的第二运算周期时,将第二运算周期的第一中间数据确定为所述计算结果;
其中,初始运算周期的第一中间数据的值为0。
6.根据权利要求3所述的乘累加运算装置,其特征在于,对于两个及以上运算周期可以执行完毕的累加运算,所述累加运算电路具体用于,
在接收到中间结果的第三运算周期,将所述中间结果与第三运算周期的第三中间数据相加,得到第二累加结果;
将第三运算周期的第二中间数据存储为下一运算周期的第三中间数据,以及,将所述第二累加结果存储为下一运算周期的第二中间数据;
在未收到中间结果的第四运算周期时,将第四运算周期的第二中间数据与第四运算周期的第三中间数据相加,得到所述计算结果;
其中,初始运算周期的第二中间数据和第三中间数据的值为0。
7.根据权利要求1所述的乘累加运算装置,其特征在于,所述输入数据包括输入神经元数据和权值数据。
8.根据权利要求1所述的乘累加运算装置,其特征在于,所述数据类型为非均匀数的数据包括1位符号位、3位指数位、3位尾数位和1位非均匀位;
所述1位符号位,用于表示数据的正负,其中,当所述1位符号位为0时表示正数,当符号位为1时表示负数;
所述3位指数位,用于表示数据的数值,所述3位指数位为无符号定点数,所述数值的范围从0到7;
所述3位尾数位,用于表示数据的精度,所述3位尾数位为无符号定点数,数值范围从0到7;
所述1位非均匀位,用于增强有效数据表示精度。
9.一种组合运算电路,其特征在于,包括:至少一个如权利要求1至7所述的乘累加运算装置;
当所述组合运算电路包括多个所述乘累加运算装置时,所述多个所述乘累加运算装置相互连接并传输数据。
10.根据权利要求9所述的组合运算电路,其特征在于,多个所述乘累加运算装置共享一个寄存器或各自连接一个寄存器;
所述寄存器用于存储第一中间数据、第二中间数据和第三中间数据中的至少一个。
11.一种乘累加运算方法,其特征在于,包括:
对所述输入数据进行指数计算和移位计算,得到多个中间结果;
对所述多个中间结果进行循环累加运算,得到计算结果。
其中,所述输入数据的数据类型为非均匀数,所述输入数据包括符号位数据、指数位数据、尾数位数据和非均匀位数据。
12.一种异构智能处理器,其特征在于,包括通用处理器,和/或,至少一个智能处理器,所述智能处理器包括如权利要求1至8任意一项所述乘累加运算装置或如权利要求9或10所述的组合运算电路。
13.一种电子设备,包括如权利要求12所述异构智能处理器。
CN202010798225.1A 2020-08-10 2020-08-10 乘累加运算装置及方法、异构智能处理器及电子设备 Active CN111930674B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010798225.1A CN111930674B (zh) 2020-08-10 2020-08-10 乘累加运算装置及方法、异构智能处理器及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010798225.1A CN111930674B (zh) 2020-08-10 2020-08-10 乘累加运算装置及方法、异构智能处理器及电子设备

Publications (2)

Publication Number Publication Date
CN111930674A true CN111930674A (zh) 2020-11-13
CN111930674B CN111930674B (zh) 2024-03-05

Family

ID=73308152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010798225.1A Active CN111930674B (zh) 2020-08-10 2020-08-10 乘累加运算装置及方法、异构智能处理器及电子设备

Country Status (1)

Country Link
CN (1) CN111930674B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023231363A1 (zh) * 2022-06-01 2023-12-07 寒武纪(西安)集成电路有限公司 乘累加操作数的方法及其设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN109902811A (zh) * 2017-12-11 2019-06-18 北京中科寒武纪科技有限公司 神经网络运算设备和方法
CN111047022A (zh) * 2018-10-12 2020-04-21 中科寒武纪科技股份有限公司 一种计算装置及相关产品
US10713013B1 (en) * 2016-02-24 2020-07-14 Xilinx, Inc. Apparatus and method for an exponential operator for a half-precision floating-point format
US20200242474A1 (en) * 2019-01-24 2020-07-30 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713013B1 (en) * 2016-02-24 2020-07-14 Xilinx, Inc. Apparatus and method for an exponential operator for a half-precision floating-point format
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN109902811A (zh) * 2017-12-11 2019-06-18 北京中科寒武纪科技有限公司 神经网络运算设备和方法
CN111047022A (zh) * 2018-10-12 2020-04-21 中科寒武纪科技股份有限公司 一种计算装置及相关产品
US20200242474A1 (en) * 2019-01-24 2020-07-30 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023231363A1 (zh) * 2022-06-01 2023-12-07 寒武纪(西安)集成电路有限公司 乘累加操作数的方法及其设备

Also Published As

Publication number Publication date
CN111930674B (zh) 2024-03-05

Similar Documents

Publication Publication Date Title
CN110084361B (zh) 一种运算装置和方法
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
CN110163363B (zh) 一种计算装置及方法
JP2020126596A (ja) 計算装置と計算方法
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
TWI763079B (zh) 用於浮點運算的乘法器、方法、積體電路晶片和計算裝置
CN111626413A (zh) 一种计算装置及方法
CN110673823B (zh) 乘法器、数据处理方法及芯片
CN109583579B (zh) 计算装置及相关产品
CN111930674A (zh) 乘累加运算装置及方法、异构智能处理器及电子设备
CN111258541B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111930670B (zh) 异构智能处理量化装置、量化方法、电子设备及存储介质
CN112801276B (zh) 数据处理方法、处理器及电子设备
CN210109789U (zh) 数据处理器
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN210006030U (zh) 数据处理器
CN210006031U (zh) 乘法器
CN111258542B (zh) 乘法器、数据处理方法、芯片及电子设备
CN109582279B (zh) 数据运算装置及相关产品
CN111258545B (zh) 乘法器、数据处理方法、芯片及电子设备
CN110647307A (zh) 数据处理器、方法、芯片及电子设备
JP2020067897A (ja) 演算処理装置、学習プログラム及び学習方法
CN209962284U (zh) 乘法器、装置、芯片及电子设备
CN210006082U (zh) 乘法器、装置、神经网络芯片及电子设备
CN111930671A (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