CN114201140A - 指数函数处理单元、方法和神经网络芯片 - Google Patents
指数函数处理单元、方法和神经网络芯片 Download PDFInfo
- Publication number
- CN114201140A CN114201140A CN202111540869.1A CN202111540869A CN114201140A CN 114201140 A CN114201140 A CN 114201140A CN 202111540869 A CN202111540869 A CN 202111540869A CN 114201140 A CN114201140 A CN 114201140A
- Authority
- CN
- China
- Prior art keywords
- product
- value
- bit
- multiplexer
- adder
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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 for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例提供了一种指数函数处理单元、方法和神经网络芯片,其中所述指数函数处理单元包括:浮点乘法器,其输入端用于分别获取待计算指数函数的指数和将所述待计算指数函数转换为以2为底数的目标指数函数的转换常数;第一移位模块,其输入端用于获取所述浮点乘法器输出的乘积,并输出乘积的整数部分和小数部分;加法器,其输入端用于分别获取所述小数部分和固定常数1;第二移位模块,其输入端用于分别获取乘积的整数部分和所述加法器的输出值,并根据所述整数部分,对所述加法器的输出值进行移位处理。
Description
技术领域
本发明涉及电数字数据处理技术领域,具体涉及一种指数函数处理单元、方法和神经网络芯片。
背景技术
指数函数是一个特别常见且非常重要的非线性函数,例如在多层神经网络中上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数,诸如sigmoid、tanh等函数,对于这些激活函数而言,指数函数是其关键部分。
当前,采用硬件方法实现指数函数处理非常消耗系统资源,运算速度慢且占用芯片面积大。例如,现有技术中存在一种通过采用多项式运算来实现指数函数处理的方案,然而该方案需要大量的指令数,且延迟时间长。现有技术中还存在一种指数函数处理方案,其通过查值表并结合其他运算来进行指数函数运算,然而该方案中查值表的存储需要占用芯片面积,并且频繁的查值过程也会造成大量时延。
发明内容
有鉴于此,本发明实施例提供了一种指数函数处理单元、方法和神经网络芯片,以解决现有技术中指数函数处理速度慢且占用芯片面积大的问题。
根据第一方面,本发明实施例提供了一种指数函数处理单元,包括:浮点乘法器,所述浮点乘法器的输入端用于分别获取待计算指数函数的指数和将所述待计算指数函数转换为以2为底数的目标指数函数的转换常数,所述浮点乘法器的输出端用于输出所述指数与所述转换常数的乘积;第一移位模块,所述第一移位模块的输入端用于获取所述浮点乘法器输出的所述乘积,并根据所述乘积的阶码,对所述乘积的尾数进行移位处理,所述第一移位模块的输出端用于输出所述乘积的整数部分和小数部分;加法器,所述加法器的输入端用于分别获取所述小数部分和固定常数,所述加法器的输出端用于输出所述小数部分与所述固定常数之和,其中所述固定常数为1;第二移位模块,所述第二移位模块的输入端用于分别获取所述乘积的整数部分和所述加法器的输出值,并根据所述整数部分,对所述加法器的输出值进行移位处理。
可选地,所述指数函数处理单元还包括:规格化模块,所述规格化模块的输入端与所述第二移位模块的输出端连接,用于将所述第二移位模块的输出值转换为预定格式。
可选地,所述第一移位模块用于在所述乘积的阶码的真实值为正时,将所述乘积的尾数的小数点向右移动,向右移动的位数等于所述乘积的阶码的真实值,其中所述乘积的阶码的真实值为所述乘积的阶码与偏移值之差;或者所述第一移位模块用于在所述乘积的阶码的真实值为负时,将所述乘积的尾数的小数点向左移动,向左移动的位数等于所述乘积的阶码的真实值。
可选地,所述第二移位模块用于在所述乘积的真实值为正时,将所述加法器的输出值的小数点向右移动,向右移动的位数等于所述整数部分的值;或者所述第二移位模块用于在所述乘积的真实值为负时,将所述加法器的输出值的小数点向左移动,向左移动的位数等于所述整数部分的值。
可选地,所述第一移位模块用于根据所述乘积的阶码的最高位来确定所述乘积的阶码的真实值的符号,在所述乘积的阶码的最高位为1时,确定所述乘积的阶码的真实值为正;在所述乘积的阶码的最高位为0时,确定所述乘积的阶码的真实值为负;或者所述第二移位模块用于根据所述整数部分的最高位来确定所述乘积的真实值的符号,在所述整数部分的最高位为1时,确定所述乘积的真实值为正;在所述整数部分的最高位为0时,确定所述乘积的真实值为负。
可选地,所述第一移位模块包括:第一多路复用器,包括2n个输入端,其中n为所述乘积的阶码的位宽,所述第一多路复用器的第一路输入信号的各个数据位均为0,所述第一多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入所述乘积的尾数的高位并移出高位的0;第二多路复用器,包括2n个输入端,所述第二多路复用器的第一路输入信号为所述乘积的尾数,所述第二多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出所述乘积的尾数的高位并在低位补0;所述第一多路复用器和所述第二多路复用器的控制端用于获取所述乘积的阶码,以使得所述第一多路复用器和所述第二多路复用器的输出端输出与所述乘积的阶码对应的输入端的输入信号。
可选地,所述第二移位模块包括:第三多路复用器,包括2n个输入端,其中n为所述整数部分的位宽,所述第三多路复用器的第一路输入信号的各个数据位均为0,所述第三多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入所述加法器的输出值的高位并移出高位的0;第四多路复用器,包括2n个输入端,所述第四多路复用器的第一路输入信号为所述加法器的输出值,所述第四多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出所述加法器的输出值的高位并在低位补0;所述第三多路复用器和所述第四多路复用器的控制端用于获取所述整数部分,以使得所述第三多路复用器和所述第四多路复用器的输出端输出与所述整数部分对应的输入端的输入信号。
根据第二方面,本发明实施例提供了一种指数函数处理方法,包括:通过浮点乘法器,获取待计算指数函数的指数与将所述待计算指数函数转换为以2为底数的目标指数函数的转换常数的乘积;通过第一移位模块,根据所述乘积的阶码,对所述乘积的尾数进行移位处理,以获取所述乘积的整数部分和小数部分;通过加法器,获取所述乘积的小数部分与固定常数之和,其中所述固定常数为1;通过第二移位模块,根据所述乘积的整数部分,对所述加法器的输出值进行移位处理。
可选地,所述指数函数处理方法还包括:将所述第二移位模块的输出值转换为预定格式。
可选地,所述通过第一移位模块,根据所述乘积的阶码,对所述乘积的尾数进行移位处理,以获取所述乘积的整数部分和小数部分,包括:在所述乘积的阶码的真实值为正时,将所述乘积的尾数的小数点向右移动,向右移动的位数等于所述乘积的阶码的真实值,其中所述乘积的阶码的真实值为所述乘积的阶码与偏移值之差;或者在所述乘积的阶码的真实值为负时,将所述乘积的尾数的小数点向左移动,向左移动的位数等于所述乘积的阶码的真实值。
可选地,所述通过第二移位模块,根据所述乘积的整数部分,对所述加法器的输出值进行移位处理,包括:在所述乘积的真实值为正时,将所述加法器的输出值的小数点向右移动,向右移动的位数等于所述整数部分的值;或者在所述乘积的真实值为负时,将所述加法器的输出值的小数点向左移动,向左移动的位数等于所述整数部分的值。
可选地,所述第一移位模块根据所述乘积的阶码的最高位来确定所述乘积的阶码的真实值的符号,在所述乘积的阶码的最高位为1时,确定所述乘积的阶码的真实值为正;在所述乘积的阶码的最高位为0时,确定所述乘积的阶码的真实值为负;或者所述第二移位模块根据所述整数部分的最高位来确定所述乘积的真实值的符号,在所述整数部分的最高位为1时,确定所述乘积的真实值为正;在所述整数部分的最高位为0时,确定所述乘积的真实值为负。
根据第三方面,本发明实施例提供了一种神经网络芯片,包括上述第一方面中任一项所述的指数函数处理单元。
本发明实施例的指数函数处理单元、方法和神经网络芯片,仅通过浮点乘法器、加法器和两个移位模块实现了指数函数的快速计算,与现有技术中的指数函数处理方案相比,无需复杂的运算指令,也无需占用大量芯片面积的查值表,大幅提升了指数函数运算的处理速度且节省了芯片面积。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了根据本发明实施例的指数函数处理单元的硬件结构示意图;
图2示出了根据本发明实施例的指数函数处理单元中的第一移位模块的硬件结构示意图;
图3示出了根据本发明实施例的指数函数处理单元中的加法器的硬件结构示意图;以及
图4示出了根据本发明实施例的指数函数处理方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了根据本发明实施例的指数函数处理单元,如图1所示,该指数函数处理单元可以包括如下模块:
浮点乘法器11,其输入端用于分别获取待计算指数函数的指数和将该待计算指数函数转换为以2为底数的目标指数函数的转换常数,其输出端用于输出该指数与该转换常数的乘积。
本实施例的指数函数处理单元可以计算任意指定底数的指数函数,对于某个指数函数处理单元而言,其所计算的指数函数的底数可以是固定的,相应地,将所计算的指数函数转换为以2为底数的目标指数函数的转换常数也是固定的。以某个指数函数处理单元用于计算以自然常数e为底数的指数函数ex为例,其中,该待计算指数函数ex的指数为x,将该待计算指数函数ex转换为以2为底数的目标指数函数如下公式(1):
ex=2Ax (2)
在本实施例中,可以视不同精度要求选择合适的转换常数A的近似值,例如可以将转换常数近似为1.44。对于计算其他底数的指数函数处理单元而言,其浮点乘法器接收对应的转换常数。转换常数例如可以存储到存储器中,在指数函数处理单元进行计算时,其浮点乘法器可以从存储器中读取该转换常数。
在IEEE-754标准下,浮点数V由符号S、阶码E和尾数M这三个部分组成,浮点数V可以由如下公式(3)来表示:
V=(-1)S×M×2E (3)
在IEEE-754标准下,通过调整阶码E,使得尾数M为1≤M<2的二进制数,即尾数M的真实值为1.m0m1m2m3…的二进制数,其中m0、m1、m2、m3……分别为0或1,在IEEE-754标准格式下隐含了尾数M的最高位1,即仅存储尾数M的小数部分。IEEE-754标准的浮点数格式包括单精度、单精度扩展、双精度和双精度扩展,在本文中以单精度浮点数为例,单精度浮点数位宽为32,包括1位符号位、8位阶码位和23位尾数位。
待计算指数函数的指数x和转换常数A均为浮点数,每个浮点数均由符号S、阶码E和尾数M这三个部分组成。需要说明的是,在IEEE-754标准中,为了使得两个浮点数的指数大小的比较更为容易,因此对于指数引入了偏移的概念,即将实际的指数加上固定的偏移值,以使得指数均为正值,在单精度浮点数标准中,这个偏移值为127。在本发明实施例的一种可选实施方式中,转换常数A为正数,虽然待计算指数函数的指数x的真实值可以是正数,也可以是负数,但是在加上偏移值bias之后,指数x为正数。因此在IEEE-754标准下,输入到浮点乘法器11的指数x和转换常数A均为正数,两个正数相乘,其结果也必然是正数。因此,在本实施方式中,可以仅向浮点乘法器11输入指数x和转换常数A的阶码E和尾数M,如图1所示,即浮点乘法器仅需要进行两个无符号数的乘法运算,由此可以提升浮点乘法器11的运算速度。进一步地,在本实施方式的浮点乘法器的电路中,可以去除与符号S相关的电路,从而进一步减小芯片面积。
在本实施例,浮点乘法器11对所输入的待计算指数函数的指数x和转换常数A执行浮点乘法运算,从而得到乘积W,如下公式(4):
W=Ax (4)
在仅输入指数x和转换常数A的阶码E和尾数M的情况下,浮点乘法器11对于两个无符号数进行乘法运算,输出的乘积W也为无符号数,仅包括乘积的阶码E1和尾数M1这两个部分。但是乘积W的真实值可以为正数或是负数,在此情况下,可以通过乘积W的最高位来判断,当乘积W的最高位为1时,乘积W的真实值为正,而当乘积W的最高位为0时,乘积W的真实值为负。
第一移位模块12,其输入端用于获取浮点乘法器11输出的乘积W,并根据乘积W的阶码E1,对乘积W的尾数M1进行移位处理,其输出端用于输出该乘积W的整数部分W1和小数部分W2。
浮点乘法器11输出的乘积W包括阶码E1和尾数M1,其中阶码E1的真实值可以是正数或是负数。如上文所述,IEEE-754标准对于浮点数的阶码引入了偏移的概念,浮点乘法器11输出的乘积W的阶码E1被加上偏移值bias,从而使得阶码均为正数,第一移位模块12在进行移位时,需要将阶码E1减去偏移值bias以得到阶码E1的真实值,在单精度浮点数中,偏移值bias为127,需要将阶码E1减去127以得到阶码E1的真实值。
当阶码E1的真实值是正数时,第一移位模块12将尾数M1的小数点向右移动E1位,当阶码E1的真实值是负数时,则第一移位模块12将尾数M1的小数点向左移动E1位,小数点以左的部分即为整数部分W1,小数点以右的部分即为小数部分W2。进一步地,第一移位模块12可以根据阶码E1的最高位来判断左移或右移。仍以单精度浮点数格式为例,阶码E1的位宽为8位,若阶码E1的真实值是正数,阶码E1的真实值加上127之后得到的二进制数的最高位一定为1;若阶码E1的真实值是负数,阶码E1的真实值加上127之后得到的二进制数的最高位一定为0,因此第一移位模块12可以根据阶码E1的最高位来判断左移或右移。
举例说明,对于二进制数为1.m0m1m2m3,其中m0、m1、m2、m3……分别为0或1,若阶码E1的真实值为2,第一移位模块12将该二进制数的小数点向右移动2位,从而得到1m0m1.m2m3,从而整数部分W1为1m0m1,小数部分W2为m2m3;若阶码E1的真实值为-2,第一移位模块12将该二进制数的小数点向左移动2位,从而得到0.01m0m1m2m3,从而整数部分W1为0,小数部分W2为01m0m1m2m3,即第一移位模块12在该二进制数的高位侧补零。在单精度浮点数格式下,尾数M1的位宽为23位,当在尾数M1的高位侧被补零时,尾数M1的低位被舍弃,以保持位宽不变。由此,仅需要诸如双向移位寄存器的硬件电路就可以实现乘积W的整数部分W1和小数部分W2的获取,提升了指数函数运算的处理速度且节省了芯片面积。
加法器13,其输入端用于分别获取小数部分W2和固定常数,其输出端用于输出小数部分W2和固定常数之和,其中固定常数为1。
如上文所述,浮点乘法器的输出结果W被第一移位模块12分为整数部分W1和小数部分W2,如下公式(5)所示:
其中,对于利用泰勒展开近似可以为1+W2,从而可以获得指数函数处理单元的芯片面积、处理速度与计算精度的折中。本领域技术人员应当理解,也可以牺牲芯片面积和处理速度以获得更高的精度。在本实施例中,仅采用加法运算就实现了的指数运算,大幅减小了指数函数处理单元的芯片面积,并提升了处理速度。近似后的指数运算如下公式(6)所示:
由于固定常数1和小数部分W2均为定点数,为了提升运算速度且节省芯片面积,在本实施例中的加法器13例如可以是定点加法器。
第二移位模块14,其输入端用于分别获取浮点乘法器11输出的乘积W的整数部分W1和加法器13的输出值1+W2,并根据整数部分W1,对加法器的输出值1+W2进行移位处理。
对于二进制数而言,向右移动二进制数的小数点1位相当于将该二进制数乘以2,而向左移动二进制数的小数点1位相当于将该二进制数除以2,即乘以2-1。因此,在本实施例中,可以通过第二移位模块14快速地进行上述公式(6)的计算。第二移位模块14在乘积W的真实值为正时,将加法器的输出值1+W2的小数点向右移动,向右移动的位数等于整数部分W1的值;在乘积W的真实值为负时,将加法器的输出值1+W2的小数点向左移动,向左移动的位数等于整数部分W1的值。与第一移位模块12类似,在IEEE-754标准下,第二移位模块14同样可以通过整数部分的最高位来确定乘积W的真实值的符号,在整数部分W1的最高位为1时,确定乘积W的真实值为正;在整数部分W1的最高位为0时,确定乘积W的真实值为负。由此,仅需要诸如双向移位寄存器的硬件电路就可以实现上述公式(6)的计算,提升了指数函数运算的处理速度且节省了芯片面积。
在本发明实施例的指数函数处理单元中,仅通过浮点乘法器、加法器和两个移位模块实现了指数函数的快速计算,与现有技术中的指数函数处理方案相比,无需复杂的运算指令,也无需占用大量芯片面积的查值表,大幅提升了指数函数运算的处理速度且节省了芯片面积。
作为本发明实施例的一种可选实施方式,如图1所示,上述指数函数处理单元还可以包括规格化模块15,规格化模块15的输入端与第二移位模块14的输出端连接,用于将第二移位模块14的输出值转换为预定格式,例如转化为上述的IEEE-754标准的浮点数格式。在IEEE-754标准下,由于指数函数运算的结果为正,因此,规格化模块15的输出值的符号S为0,并且如上文所述,规格化模块15可以根据第二移位模块14的输出值确定规格化模块15的输出值的阶码E和尾数M。
在本实施方式中,第二移位模块14的输出值通过规格化模块15转化成了诸如IEEE-754标准等的预定格式,从而便于后续的数据处理模块对数据进行进一步的处理。
作为本发明实施例的一些可选实施方式,上述浮点乘法器11例如可以是串行乘法器、阵列乘法器或全并行乘法器。其中,串行乘法器计算并行度较低,但结构简单,能够节省芯片面积;全并行乘法器计算并行度较高,但结构复杂,占用芯片面积大;阵列乘法器对于计算并行度和结构复杂度进行了折中,性能比较为均衡,本领域技术人员可以根据实际情况合理选择相应的浮点乘法器。
作为本发明实施例的一种可选实施方式,本发明实施例的第一移位模块12可以如图2所示。在IEEE-754标准的单精度浮点数中,尾数M1的位宽为23位,阶码E1的位宽为8位,为了简化起见,在本文中以尾数M1为8位,E1为2位为例来进行详细说明,本领域技术人员可以在此基础上,将其扩展为IEEE-754标准的单精度、单精度扩展、双精度或双精度扩展浮点数格式。
如图2所示,阶码E1作为第一多路复用器MUX1和第二多路复用器MUX2的选通信号分别输入到第一多路复用器MUX1和第二多路复用器MUX2的控制端,阶码E1的位宽为2位,即阶码E1可以为00、01、10、11以选通多路复用器MUX1和MUX2中的一路输入信号,因此多路复用器MUX1和MUX2可以有22个输入端,即4个输入端。在图2的示例中,尾数M1为8位的m0m1m2m3m4m5m6m7的二进制数,其中m0、m1、m2、m3……分别为0或1,第一多路复用器MUX1输出整数部分W1,整数部分W1的位宽为4位,第二多路复用器MUX2输出小数部分W2,小数部分W2的位宽为8位。第一多路复用器MUX1的第一路输入端直接接地,即第一路输入信号I0=0000,第一多路复用器MUX1的第二路至第四路输入信号相对于前一路输入信号依次从数据位低位移入尾数M1的高位,为了保持各路输入信号的位宽不变,第二路至第四路输入信号相对于前一路输入信号依次移出高位的0,即第二路输入信号I1=000m0,第三路输入信号I2=00m0m1,第四路输入信号I3=0m0m1m2。第二多路复用器MUX2的第一路输入信号为尾数M1,即第一路输入信号F0=m0m1m2m3m4m5m6m7,第二多路复用器MUX2的第二路至第四路输入信号相对于前一路输入信号依次从数据位高位移出尾数M1的高位,为了保持各路输入信号的位宽不变,第二路至第四路输入信号相对于前一路输入信号依次在低位补0,即第二路输入信号F1=m1m2m3m4m5m6m70,第三路输入信号F2=m2m3m4m5m6m700,第四路输入信号F3=m3m4m5m6m7000。阶码E1作为选通信号,使得第一多路复用器MUX1和第二多路复用器MUX2的输出端输出与阶码E1对应的输入端的输入信号。当阶码E1为00时,对应十进制数0,此时无需移位,选通多路复用器MUX1和MUX2的第一路输入信号,多路复用器MUX1和MUX2的输出W1=I0=0000,W2=F0=m0m1m2m3m4m5m6m7;当阶码E1为01时,对应十进制数1,此时小数点右移一位,选通多路复用器MUX1和MUX2的第二路输入信号,多路复用器MUX1和MUX2的输出W1=I1=000m0,W2=F1=m1m2m3m4m5m6m70;当阶码E1为10时,对应十进制数2,此时小数点右移两位,选通多路复用器MUX1和MUX2的第三路输入信号,多路复用器MUX1和MUX2的输出W1=I2=00m0m1,W2=F2=m2m3m4m5m6m700;当阶码E1为11时,对应十进制数3,此时小数点右移三位,选通多路复用器MUX1和MUX2的第三路输入信号,多路复用器MUX1和MUX2的输出W1=I3=0m0m1m2,W2=F3=m3m4m5m6m7000。
类似地,本发明实施例的第二移位模块14也可以采用图2所示的电路结构,当整数部分W1的位宽为2位,加法器的输出值1+W2的位宽为8位时,第二移位模块14可以包括第三多路复用器和第四多路复用器,第三多路复用器和第四多路复用器分别可以包括4个输入端,第三多路复用器的第一路输入信号的各个数据位均为0,第二路至第四路输入信号相对于前一路输入信号依次从数据位低位移入加法器的输出值1+W2的高位并移出高位的0;第四多路复用器的第一路输入信号为加法器的输出值1+W2,第四多路复用器的第二路至第四路输入信号相对于前一路输入信号依次从数据位高位移出加法器的输出值1+W2的高位并在低位补0。
以上出于简化起见对本发明实施例进行了详细说明,一般而言,本发明实施例的第一移位模块12可以包括:
第一多路复用器,包括2n个输入端,其中n为阶码E1的位宽,第一多路复用器的第一路输入信号的各个数据位均为0,第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入尾数M1的高位并移出高位的0;
第二多路复用器,包括2n个输入端,第二多路复用器的第一路输入信号为尾数M1,第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出尾数M1的高位并在低位补0;
第一多路复用器和第二多路复用器的控制端用于获取阶码E1,以使得第一多路复用器和第二多路复用器的输出端输出与阶码E1对应的输入端的输入信号。
相应地,本发明实施例的第二移位模块14可以包括:
第三多路复用器,包括2n个输入端,其中n为整数部分W1的位宽,第三多路复用器的第一路输入信号的各个数据位均为0,第三多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入加法器的输出值1+W2的高位并移出高位的0;
第四多路复用器,包括2n个输入端,第四多路复用器的第一路输入信号为加法器的输出值1+W2,第四多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出加法器的输出值1+W2的高位并在低位补0;
第三多路复用器和第四多路复用器的控制端用于获取整数部分W1,以使得第三多路复用器和第四多路复用器的输出端输出与整数部分W1对应的输入端的输入信号。
由此,本实施方式分别通过两个多路复用器模块就可以实现第一移位模块12和第二移位模块14的移位功能,且能够保持输出信号的位宽不变。
作为本发明实施例的一种可选实施方式,本发明实施例的加法器13可以是如图3所示的定点加法器,为了简化起见,以小数部分W2有3位为例,则小数部分W2可以表示为0.A2A1A0,其中A2、A1、A0分别为0或1,相应地,固定常数1可以表示为1.000,以使得位宽保持一致。在图3中以行波进位加法器(RCA)为例,该定点加法器13可以包括4个全加器FA,固定常数1的各数据位分别输入各个全加器FA的第一输入端,小数部分W2的各个数据位分别输入各个全加器FA的第二输入端,Ci表示各个全加器FA向高位的进位,Si表示各个全加器FA的输出,其中i表示0至3的整数。需要说明的是,本发明实施例的加法器13并不限于图2中所例示的行波进位加法器RCA,其他定点加法器也是可行的,本领域技术人员可以根据需要将其替换为超前进位加法器CLA、选择进位加法器CSeA、进位完成检测加法器CCSA等。
相应地,本发明实施例还提供了一种指数函数处理方法,如图4所示,该方法可以包括如下步骤:
S11.通过浮点乘法器,获取待计算指数函数的指数与将待计算指数函数转换为以2为底数的目标指数函数的转换常数的乘积W。具体内容可以参考上文中浮点乘法器11的相关描述。
S12.通过第一移位模块,根据乘积W的阶码,对乘积W的尾数进行移位处理,以获取乘积W的整数部分W1和小数部分W2。具体内容可以参考上文中第一移位模块12的相关描述。
S13.通过加法器,获取乘积W的小数部分W2与固定常数之和,其中固定常数为1。具体内容可以参考上文中加法器13的相关描述。
S14.通过第二移位模块,根据乘积W的整数部分W1,对加法器的输出值进行移位处理。具体内容可以参考上文中第二移位模块14的相关描述。
在本发明实施例的指数函数处理方法中,仅通过浮点乘法器、加法器和两个移位模块实现了指数函数的快速计算,与现有技术中的指数函数处理方案相比,无需复杂的运算指令,也无需占用大量芯片面积的查值表,大幅提升了指数函数运算的处理速度且节省了芯片面积。
作为本发明实施例的一种可选实施方式,如图4所示,上述指数函数处理方法还可以包括:
S15.将第二移位模块的输出值转换为预定格式。具体内容可以参考上文中规格化模块15的相关描述。
在步骤S15中,由于第二移位模块的输出值被转化成了诸如IEEE-754标准等的预定格式,从而便于后续的数据处理模块对数据进行进一步的处理。
作为本发明实施例的一些可选实施方式,上述步骤S11中所采用的浮点乘法器例如可以是串行乘法器、阵列乘法器或全并行乘法器。其中,串行乘法器计算并行度较低,但结构简单,能够节省芯片面积;全并行乘法器计算并行度较高,但结构复杂,占用芯片面积大;阵列乘法器对于计算并行度和结构复杂度进行了折中,性能比较为均衡,本领域技术人员可以根据实际情况合理选择相应的浮点乘法器。
作为本发明实施例的一种可选实施方式,上述步骤S12具体可以包括:
在乘积W的阶码的真实值为正时,将乘积W的尾数的小数点向右移动,向右移动的位数等于乘积W的阶码的真实值,其中乘积W的阶码的真实值为乘积W的阶码与偏移值bias之差;
在乘积W的阶码的真实值为负时,将乘积W的尾数的小数点向左移动,向左移动的位数等于乘积W的阶码的真实值。
通过采用上述步骤,仅需要一个诸如移位寄存器的硬件模块就实现了乘积W的整数部分W1和小数部分W2的获取,提升了指数函数运算的处理速度且节省了芯片面积。
更进一步地,在IEEE-754浮点数格式标准下,上述可选实施方式中的第一移位模块12可以根据乘积W的阶码的最高位来确定乘积W的阶码的真实值的符号,在乘积W的阶码的最高位为1时,确定乘积W的阶码的真实值为正;在乘积W的阶码的最高位为0时,确定乘积W的阶码的真实值为负。
作为本发明实施例的一种可选实施方式,上述步骤S14具体可以包括:
在乘积W的真实值为正时,将加法器的输出值1+W2的小数点向右移动,向右移动的位数等于整数部分W1的值;
在乘积W的真实值为负时,将加法器的输出值1+W2的小数点向左移动,向左移动的位数等于整数部分W1的值。
通过采用上述步骤,仅需要一个诸如移位寄存器的硬件模块就实现了上文中公式(6)的计算,提升了指数函数运算的处理速度且节省了芯片面积。
更进一步地,在IEEE-754浮点数格式标准下,上述可选实施方式中的第二移位模块14可以根据整数部分W1的最高位来确定乘积W的真实值的符号,在整数部分W1的最高位为1时,确定乘积W的真实值为正;在整数部分W1的最高位为0时,确定乘积W的真实值为负。
上述方法实施例中各个步骤的具体细节可以对应参阅图1至图3所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本发明实施例还提供了一种神经网络芯片,该神经网络芯片包括图1至图3所示的实施例的指数函数处理单元。多层神经网络中上层节点的输出和下层节点的输入之间的函数关系被称为激活函数,激活函数本质是对输出信息进行非线性变换,然后将变换后的输出信息作为输入信息传给下一层神经元。现有技术中,大部分硬件实现激活操作使用的是ReLU函数,之所以这样选择,一方面是由于ReLU函数结构函数特征特别简单,另一方面是用ReLU作为激活函数的效果也很好,与诸如sigmoid函数或其他通过组合产生的激活函数相比,在结果上不会产生大的误差。本发明实施例的神经网络芯片采用上述图1至图3所示的实施例的指数函数处理单元,在硬件层面上对指数函数进行逼近,尽管与现有技术中进行高精度指数函数处理的硬件模块相比在精度上有所折中,然而本发明的发明人通过研究后发现,尽管本发明实施例的指数函数处理单元没有采用复杂的运算指令,也也没采用占用大量芯片面积的查值表,但对于神经网络的训练和使用均未产生任何不良影响,且与ReLU这种由分段直线构成的简单函数相比,有着更好的区分度。
因此,本发明实施例的神经网络芯片由于采用了本发明实施例的指数函数处理单元,除了具有无需复杂的运算指令,也无需占用大量芯片面积的查值表,大幅提升指数函数运算的处理速度且节省芯片面积的优点之外,能够快速处理神经网络中的激活函数,芯片面积小,运行功耗低,且对于神经网络的训练和使用均未产生任何不良影响,与ReLU这种由分段直线构成的简单函数相比,有着更好的区分度。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (13)
1.一种指数函数处理单元,其特征在于,包括:
浮点乘法器,所述浮点乘法器的输入端用于分别获取待计算指数函数的指数和将所述待计算指数函数转换为以2为底数的目标指数函数的转换常数,所述浮点乘法器的输出端用于输出所述指数与所述转换常数的乘积;
第一移位模块,所述第一移位模块的输入端用于获取所述浮点乘法器输出的所述乘积,并根据所述乘积的阶码,对所述乘积的尾数进行移位处理,所述第一移位模块的输出端用于输出所述乘积的整数部分和小数部分;
加法器,所述加法器的输入端用于分别获取所述小数部分和固定常数,所述加法器的输出端用于输出所述小数部分与所述固定常数之和,其中所述固定常数为1;
第二移位模块,所述第二移位模块的输入端用于分别获取所述乘积的整数部分和所述加法器的输出值,并根据所述整数部分,对所述加法器的输出值进行移位处理。
2.根据权利要求1所述的指数函数处理单元,其特征在于,还包括:
规格化模块,所述规格化模块的输入端与所述第二移位模块的输出端连接,用于将所述第二移位模块的输出值转换为预定格式。
3.根据权利要求1所述的指数函数处理单元,其特征在于,所述第一移位模块用于在所述乘积的阶码的真实值为正时,将所述乘积的尾数的小数点向右移动,向右移动的位数等于所述乘积的阶码的真实值,其中所述乘积的阶码的真实值为所述乘积的阶码与偏移值之差;或者
所述第一移位模块用于在所述乘积的阶码的真实值为负时,将所述乘积的尾数的小数点向左移动,向左移动的位数等于所述乘积的阶码的真实值。
4.根据权利要求1所述的指数函数处理单元,其特征在于,所述第二移位模块用于在所述乘积的真实值为正时,将所述加法器的输出值的小数点向右移动,向右移动的位数等于所述整数部分的值;或者
所述第二移位模块用于在所述乘积的真实值为负时,将所述加法器的输出值的小数点向左移动,向左移动的位数等于所述整数部分的值。
5.根据权利要求3或4所述的指数函数处理单元,其特征在于,所述第一移位模块用于根据所述乘积的阶码的最高位来确定所述乘积的阶码的真实值的符号,在所述乘积的阶码的最高位为1时,确定所述乘积的阶码的真实值为正;在所述乘积的阶码的最高位为0时,确定所述乘积的阶码的真实值为负;或者
所述第二移位模块用于根据所述整数部分的最高位来确定所述乘积的真实值的符号,在所述整数部分的最高位为1时,确定所述乘积的真实值为正;在所述整数部分的最高位为0时,确定所述乘积的真实值为负。
6.根据权利要求1-5中任一项所述的指数函数处理单元,其特征在于,所述第一移位模块包括:
第一多路复用器,包括2n个输入端,其中n为所述乘积的阶码的位宽,所述第一多路复用器的第一路输入信号的各个数据位均为0,所述第一多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入所述乘积的尾数的高位并移出高位的0;
第二多路复用器,包括2n个输入端,所述第二多路复用器的第一路输入信号为所述乘积的尾数,所述第二多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出所述乘积的尾数的高位并在低位补0;
所述第一多路复用器和所述第二多路复用器的控制端用于获取所述乘积的阶码,以使得所述第一多路复用器和所述第二多路复用器的输出端输出与所述乘积的阶码对应的输入端的输入信号。
7.根据权利要求1-5中任一项所述的指数函数处理单元,其特征在于,所述第二移位模块包括:
第三多路复用器,包括2n个输入端,其中n为所述整数部分的位宽,所述第三多路复用器的第一路输入信号的各个数据位均为0,所述第三多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位低位移入所述加法器的输出值的高位并移出高位的0;
第四多路复用器,包括2n个输入端,所述第四多路复用器的第一路输入信号为所述加法器的输出值,所述第四多路复用器的第二路至第2n路输入信号相对于前一路输入信号依次从数据位高位移出所述加法器的输出值的高位并在低位补0;
所述第三多路复用器和所述第四多路复用器的控制端用于获取所述整数部分,以使得所述第三多路复用器和所述第四多路复用器的输出端输出与所述整数部分对应的输入端的输入信号。
8.一种指数函数处理方法,其特征在于,包括:
通过浮点乘法器,获取待计算指数函数的指数与将所述待计算指数函数转换为以2为底数的目标指数函数的转换常数的乘积;
通过第一移位模块,根据所述乘积的阶码,对所述乘积的尾数进行移位处理,以获取所述乘积的整数部分和小数部分;
通过加法器,获取所述乘积的小数部分与固定常数之和,其中所述固定常数为1;
通过第二移位模块,根据所述乘积的整数部分,对所述加法器的输出值进行移位处理。
9.根据权利要求8所述的指数函数处理方法,其特征在于,还包括:
将所述第二移位模块的输出值转换为预定格式。
10.根据权利要求8所述的指数函数处理方法,其特征在于,所述通过第一移位模块,根据所述乘积的阶码,对所述乘积的尾数进行移位处理,以获取所述乘积的整数部分和小数部分,包括:
在所述乘积的阶码的真实值为正时,将所述乘积的尾数的小数点向右移动,向右移动的位数等于所述乘积的阶码的真实值,其中所述乘积的阶码的真实值为所述乘积的阶码与偏移值之差;或者
在所述乘积的阶码的真实值为负时,将所述乘积的尾数的小数点向左移动,向左移动的位数等于所述乘积的阶码的真实值。
11.根据权利要求8所述的指数函数处理方法,其特征在于,所述通过第二移位模块,根据所述乘积的整数部分,对所述加法器的输出值进行移位处理,包括:
在所述乘积的真实值为正时,将所述加法器的输出值的小数点向右移动,向右移动的位数等于所述整数部分的值;或者
在所述乘积的真实值为负时,将所述加法器的输出值的小数点向左移动,向左移动的位数等于所述整数部分的值。
12.根据权利要求10或11所述的指数函数处理方法,其特征在于,所述第一移位模块根据所述乘积的阶码的最高位来确定所述乘积的阶码的真实值的符号,在所述乘积的阶码的最高位为1时,确定所述乘积的阶码的真实值为正;在所述乘积的阶码的最高位为0时,确定所述乘积的阶码的真实值为负;或者
所述第二移位模块根据所述整数部分的最高位来确定所述乘积的真实值的符号,在所述整数部分的最高位为1时,确定所述乘积的真实值为正;在所述整数部分的最高位为0时,确定所述乘积的真实值为负。
13.一种神经网络芯片,其特征在于,包括权利要求1-8中任一项所述的指数函数处理单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540869.1A CN114201140B (zh) | 2021-12-16 | 2021-12-16 | 指数函数处理单元、方法和神经网络芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540869.1A CN114201140B (zh) | 2021-12-16 | 2021-12-16 | 指数函数处理单元、方法和神经网络芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114201140A true CN114201140A (zh) | 2022-03-18 |
CN114201140B CN114201140B (zh) | 2022-08-16 |
Family
ID=80654363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111540869.1A Active CN114201140B (zh) | 2021-12-16 | 2021-12-16 | 指数函数处理单元、方法和神经网络芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201140B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023178860A1 (zh) * | 2022-03-22 | 2023-09-28 | 奥比中光科技集团股份有限公司 | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101242A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose multiply-add functional unit |
CN109739470A (zh) * | 2018-12-30 | 2019-05-10 | 南京大学 | 一种基于2型双曲cordic任意指数函数的计算系统 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN112685693A (zh) * | 2020-12-31 | 2021-04-20 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
CN112783469A (zh) * | 2020-12-29 | 2021-05-11 | 深圳信息职业技术学院 | 一种用于执行浮点指数运算的方法及装置 |
CN113296732A (zh) * | 2020-06-16 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
-
2021
- 2021-12-16 CN CN202111540869.1A patent/CN114201140B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101242A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose multiply-add functional unit |
CN109739470A (zh) * | 2018-12-30 | 2019-05-10 | 南京大学 | 一种基于2型双曲cordic任意指数函数的计算系统 |
CN112241291A (zh) * | 2019-07-18 | 2021-01-19 | 国际商业机器公司 | 用于指数函数实施的浮点单元 |
CN113296732A (zh) * | 2020-06-16 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
CN112783469A (zh) * | 2020-12-29 | 2021-05-11 | 深圳信息职业技术学院 | 一种用于执行浮点指数运算的方法及装置 |
CN112685693A (zh) * | 2020-12-31 | 2021-04-20 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
Non-Patent Citations (2)
Title |
---|
ERNEST JAMRO等: "" FPGA implementation of 64-bit exponential function for HPC"", 《FIELD PROGRAMMABLE LOGIC AND APPLICATIONS, 2007》 * |
杨立: "《简明计算机组成原理》", 31 October 2008 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023178860A1 (zh) * | 2022-03-22 | 2023-09-28 | 奥比中光科技集团股份有限公司 | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN114201140B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
US20200218509A1 (en) | Multiplication Circuit, System on Chip, and Electronic Device | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
US20070266072A1 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
TW202109319A (zh) | 曲線函數裝置及其操作方法 | |
RU2408057C2 (ru) | Умножитель с фиксированной точкой с предварительным насыщением | |
US7725522B2 (en) | High-speed integer multiplier unit handling signed and unsigned operands and occupying a small area | |
KR20170008149A (ko) | 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법 | |
KR100465371B1 (ko) | 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치 | |
US20150113027A1 (en) | Method for determining a logarithmic functional unit | |
CN114201140B (zh) | 指数函数处理单元、方法和神经网络芯片 | |
JP4273071B2 (ja) | 除算・開平演算器 | |
KR20170138143A (ko) | 단일 곱셈-누산 방법 및 장치 | |
US20230086090A1 (en) | Methods and Apparatus for Quotient Digit Recoding in a High-Performance Arithmetic Unit | |
CN115034163A (zh) | 一种支持两种数据格式切换的浮点数乘加计算装置 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
US20100146031A1 (en) | Direct Decimal Number Tripling in Binary Coded Adders | |
US10289413B2 (en) | Hybrid analog-digital floating point number representation and arithmetic | |
Gowtham et al. | Design of approximate restoring dividers for error resilient applications | |
Prasanna et al. | An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics | |
Yadav et al. | Design of 32-bit floating point unit for advanced processors | |
CN113703717B (zh) | 二进制浮点数乘法运算电路及其控制方法、计算装置 | |
EP1710690A1 (en) | Multiplication circuitry | |
Jalaja et al. | Retime Low Power Approximate Multiplier for Image Sharpening and Smoothing | |
Kumar et al. | Simulation And Synthesis Of 32-Bit Multiplier Using Configurable Devices |
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 |