CN107291419A - 用于神经网络处理器的浮点乘法器及浮点数乘法 - Google Patents
用于神经网络处理器的浮点乘法器及浮点数乘法 Download PDFInfo
- Publication number
- CN107291419A CN107291419A CN201710311728.XA CN201710311728A CN107291419A CN 107291419 A CN107291419 A CN 107291419A CN 201710311728 A CN201710311728 A CN 201710311728A CN 107291419 A CN107291419 A CN 107291419A
- Authority
- CN
- China
- Prior art keywords
- mantissa
- operands
- floating
- product
- operand
- 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
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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了用于神经网络处理器的浮点乘法器及浮点数乘法。该浮点乘法器对待相乘的两个操作数的尾数进行匹配以选择不同的操作模式来获得乘积的尾数,在两个操作数的尾数高四位相匹配时直接输出其中一个操作数的尾数,在两个操作数的尾数高三位相匹配时先截取这两个操作数的尾数的部分位并在所截取的数的高位处补1,然后再进行乘法计算并输出结果,如果不满足上述条件才对这两个操作数的尾数进行乘法运算以得到所述乘积的尾数。该浮点乘法器在执行乘法操作时采用近似计算和精确计算结合的方式,采用数据替换和部分位相乘等具有较低能量损耗的工作在不牺牲较大工作精度的同时提高了乘法操作的工作能效,也使得神经网络处理系统性能更加高效。
Description
技术领域
本发明涉及神经网络处理器,尤其涉及神经网络处理器内的乘法运算。
背景技术
目前神经网络处理器通常采用已训练好的权重数据作为输入信号进行神经网络模型的运算操作。乘法和加法操作是神经网络运算操作中的重要环节,大部分专用硬件加速器为了降低设计复杂度并提高运算效率,通常运用定点乘法器进行乘法操作,而训练得到的权重数据大多在以浮点计算环境下得到,训练环境与硬件加速环境之间数据存储及计算形式的不匹配导致在硬件加速处理结果与训练结果产生较大差异。然而,如果在硬件加速器中采用传统浮点乘法器,又会造成加速效率降低、硬件开销大和运行功耗提高等问题,严重阻碍了神经网络处理器在嵌入式设备的应用,同于也无法满足在未来超低功耗物联网端节点中采用神经网络处理器实时分析处理数据的需求。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新的用于神经网络处理器的浮点乘法器及浮点数乘法。
本发明的目的是通过以下技术方案实现的:
一方面,本发明提供了一种浮点乘法器,包括:
符号位运算单元,其对输入的两个操作数的符号位进行异或运算以得到这两个操作数的乘积的符号位;阶码运算单元,其对输入的两个操作数的阶码进行加法运算,以得到所述乘积的阶码;尾数运算单元,其对输入的两个操作数的尾数进行匹配以从多个计算模式中选择相应模式来计算所述乘积的尾数;规格化单元,其对自尾数运算单元输出的尾数和自阶码运算单元输出的阶码进行规格化处理,并输出经规格化后的阶码和尾数;
其中,所述多个计算模式包括第一模式、第二模式和第三模式,在第一模式中直接选取其中一个操作数的尾数作为所述乘积的尾数,在第二模式中,分别从这两个操作数的尾数的高位开始截取部分位并在所截取的数的高位处补1,接着对所得到两个数进行乘法运算以得到所述乘积的尾数,在第三模式中,对这两个操作数的尾数进行乘法运算以得到所述乘积的尾数;所述尾数运算单元在输入的两个操作数的尾数高四位相匹配时选择第一模式,否则在这两个操作数的尾数高三位相匹配时选择第二模式,否则选择第三模式。
在上述浮点乘法器中,还可以包括特殊值判断单元,其判断输入的两个操作数中是否存在特殊值并向阶码运算单元和尾数运算单元发出指示所述判断的结果的特殊值指示信号,以及当判断这两个操作数中存在特殊值时,直接输出预先设定的与所检测的特殊值对应的结果作为这两个操作数的乘积。
在上述浮点乘法器中,其中所述阶码运算单元和所述尾数运算单元可以在收到来自特殊值判断单元指示操作数中存在特殊值的特殊值指示信号时,不再继续进行相关运算。
在上述浮点乘法器中,所述尾数计算单元可以包括模式匹配单元、乘法器和选择器,其中所述模式匹配单元对输入的两个操作数的尾数进行匹配并基于匹配的结果直接输出结果给选择器或指示乘法器进行相应运算;乘法器根据来自模式匹配单元的指示从输入的两个操作数的尾数中选择相应位数进行乘法运算并将结果提供给选择器;选择器根据来自模式匹配单元的选择信号选择将源自模式匹配单元的结果还是源自乘法器的结果作为输出。
在上述浮点乘法器中,从两个操作数尾数所截取的部分位的位数可以为其中M为整数,表示操作数尾数的位数。
又一方面,本发明提供了一种浮点数乘法,包括:
步骤a1,将待相乘的两个操作数的符号位进行异或运算,得到这两个操作数的乘积的符号位;
步骤a2,将这两个操作数的阶码进行加法运算,以得到所述乘积的阶码;
步骤a3,判断这两个操作数的尾数高四位是否匹配,如果匹配,则选择其中一个操作数的尾数作为乘积的尾数,跳转至步骤a6,如果不匹配,则继续至步骤a4;
步骤a4,判断这两个操作数的尾数高三位是否匹配,如果匹配,则从这两个操作数尾数的高位开始截取部分位并在所截取的数的高位补1,对所得到的数进行乘法运算以得到乘积的尾数,跳转至步骤a6;如果不匹配,则继续步骤a5;
步骤a5,对这两个操作数的尾数进行乘法运算以得到乘积的尾数;
步骤a6,对所述乘积的尾数和阶码进行规格化处理,并以所述乘积的符号位、经规格化后的尾数与阶码作为最终输出。
在上述浮点数乘法中,在步骤a1-a6之前还可以包括步骤a0,判断待相乘的两个操作数中是否存在特殊值,若有特殊值,则直接输出预先设定的与所述特殊值对应的结果值作为这两个操作数的乘积,否则继续至步骤a1。
在上述浮点数乘法的步骤a0中:
如果这两个操作数中存在零值,则直接输出零值;
如果这两个操作数相同且均为浮点表示范围内的最大值或最小值,则直接输出最大值;
如果这两个操作数中一个为最大值且另一个为最小值,则直接输出最小值;
如果这两个操作数中仅存在一个最大值或最小值,则直接输出该最大值或最小值。
在上述浮点数乘法中,从两个操作数尾数所截取的部分位的位数可以为其中M为整数,表示操作数尾数的位数。
与现有技术相比,本发明的优点在于:
在进行乘法操作时采用近似计算和精确计算结合的工作模式,在近似计算的工作模式下采用数据替换和部分位相乘等具有较低能量损耗的工作方式代替乘法操作,在不牺牲较大工作精度的同时提高了乘法操作的工作能效,也使得神经网络处理系统性能更加高效。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明一个实施例的浮点乘法器的结构示意图;
图2为根据本发明一个实施例的浮点乘法器的结构示意图;
图3为根据本发明一个实施例的尾数运算单元的结构示意图;
图4为根据本发明一个实施例的用于尾数运算单元中的乘法器的结构示意图;
图5为根据本发明一个实施例的浮点乘法器工作流程示例;
图6为根据本发明一个实施例的浮点乘法的计算方法的流程示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为根据本发明的一个实施例的浮点乘法器的结构示意图。该浮点乘法器包括符号位运算单元、阶码运算单元、尾数运算单元和规格化单元。如图1所示,该浮点乘法器接收两个要进行相乘的操作数A和B,并输出其乘积(可记为C)。其中操作数A和B及其乘积均为浮点数,在机器中每个浮点数以“符号位+阶码+尾数”的形式来存储和表示。例如,可采用IEEE标准754格式,其中符号位为1位,当其0时表示正数,当其为1时表示负数;阶码用整数形式表示,指明小数点在数据中的位置,其决定浮点数的表示范围;尾数以定位小数表示,其给出的有效数字的位数决定了浮点数的表示精度。例如对于32位的浮点数,符号位S为1位,S=0时为整数,S=1时为负数;尾数M共23位,用小数表示,小数点放在尾数域的最前面;阶码E为8位,阶符采用隐含方式,即采用移码方式来表示正负指数。在采用这种方式时,浮点数的指数真值e要变成阶码E时,应将该指数e加上一个固定的偏移量,例如当E为8位时,该偏移量为28-1-1=127(01111111),即E=e+127。为提高数据的表示精度,需要采用修改阶码同时左右移小数点的办法,使尾数域(包含隐藏位1)变成最高有效位为1的表示形式,这也称为浮点数的规格化表示,这一过程也称为规格化处理。在IEEE 754标准中,一个规格化的32位浮点数x的真值可表示为:x=(-1)s×(1.M)×2e,e=E-127。应理解,上文仅是对浮点数进行举例说明而非进行任何限制,也可根据神经网络运算过程的实际需求采用不同的浮点数格式,也可取决于所涉及的操作数的精度及数值范围。
参考图1,当该浮点乘法器收到操作数A和B时,通过符号位运算单元得到A与B的乘积C的符号位,通过阶码运算单元计算乘积C的阶码,通过尾数运算单元计算乘积C的尾数。其中,符号位运算单元对A的符号位与B的符号位进行异或运算,得到乘积C的符号位。该符号位运算单元例如可以通过常见的异或门电路来实现。阶码运算单元将A的阶码与B的阶码进行相加,以得到A与B的乘积C的阶码。该阶码运算单元例如可以采用加法器来实现。尾数运算单元通常可以通过将A的尾数与B的尾数直接相乘来得到乘积C的尾数,但这样的乘法操作计算量大且效率不高。在本发明的实施例中,尾数运算单元采用基于操作数的模式匹配方法来计算乘积的尾数。
表1
表1给出了根据本发明一个实施例的尾数运算单元的三种工作模式。其中在工作模式1中,如果操作数A的尾数与操作数B的尾数高四位一致,则尾数运算单元直接选取其中一个操作数的尾数作为输出。在工作模式2中,如果操作数A的尾数与操作数B的尾数高三位一致,则尾数运算单元分别截取操作数A的尾数和操作数B的尾数的高位,并在所截取的尾数部分位的高位处补1,然后以所得到的两个长度的数进行乘法运算并输出结果,这里M指代操作数A和B尾数的位数。工作模式3是指操作数A和操作数B不满足上述两种工作模式时,尾数运算单元取操作数A和操作数B的尾数进行乘法运算并输出结果。应理解,这里仅是以截取高位为例来进行举例说明,而非进行任何限制,可以根据对计算精度的实际需求来适当调整从尾数中所截取的部分位的尾数,例如可以是等等。
继续参考图1,该浮点乘法器还包括规格化单元,按照浮点数规格化规则对来自尾数运算单元和阶码运算单元的结果进行规格化处理。例如,如上述提到的,需要修改阶码同时左右移小数点的办法,使尾数域(包含隐藏位1)变成最高有效位为1的表示形式。在本发明中采用尾数部分高位补1再进行乘法运算的方式,其具体规格化方法为,将两个(M+1)位操作数相乘得到的(2M+2)位乘积的低M位舍去,剩下的(M+2)位中,当最高位(第M+2位)为1时,阶码加1,将最高位去除,将其余位数后移一位后取低M位作为尾数乘积结果;当最高位(第M+2位)为0时,直接取低M位作为尾数乘积结果。在这里,当来自阶码运算单元的阶码值被修改之后,还需要根据修改后的阶码值判断运算结果是否引起上溢出或下溢出,如果有,则规格化单元输出溢出提示。如果没有,则规格化单元输出修改后的阶码与尾数作为最终乘积C的阶码和尾数。
图2为根据本发明的又一个实施例的浮点乘法器的结构示意图。该浮点乘法器包括符号位运算单元、阶码运算单元、尾数运算单元、规格化单元、特殊值判断单元和选择器。如结合图1所介绍的相类似,当该浮点乘法器收到操作数A和B时,可以通过符号位运算单元得到A与B的乘积C的符号位,通过阶码运算单元计算乘积C的阶码,通过尾数运算单元计算乘积C的尾数,通过规格化单元对于阶码运算单元和尾数运算单元的输出进行修正。图2的浮点乘法器与图1所示的浮点乘法器的主要不同在于图2的浮点乘法器还包括了特殊值判断单元。在进行阶码运算和尾数运算之前,可以通过特殊值判断单元判断操作数A和操作数B中是否存在特殊值,例如零值,浮点表示范围中最大值或最小值等。如果特殊值判断单元确定收到的操作数中存在特殊值,则可以跳过不进行阶码运算和尾数运算,直接进行特殊值处理输出乘积。这是考虑到神经网络模型中的数据具有稀疏性,即存在大量数值为零的操作数,由此本实施例通过判断操作数是否为诸如零、浮点表示范围内的最大值(通常为正数)或最小值(通常为负数)之类的特殊值来直接得到乘积,从而提高计算速度,尽量降低功耗。例如,如果参与乘法运算的是数值为零的操作数,可直接将乘积C赋值为零值;如果是对浮点表示范围中最大值或最小值的数值进行乘法操作,也可以直接输出相应的结果作为乘积C。表2给出了操作数中存在特殊值时输出的相应乘积的示例说明:
表2
应指出,表2中设置的上述与各特殊值情况对应的乘积仅是举例而非进行任何限制。如图2所示,特殊值判断单元与阶码运算单元、尾数运算单元及选择器相连,其会向阶码运算单元、尾数运算单元及选择器输出特殊值指示信号以指示操作数中是否存在特殊值,并将相应的特殊值处理结果(如表2所示)输出至选择器。例如当操作数存在特殊值时,该特殊值指示信号为高电平,如果操作数中不存在特殊值,则该特殊值指示信号为低电平。当特殊值判断单元检测到该浮点乘法器收到的两个操作数中存在特殊值时,阶码运算单元和尾数运算单元根据相应的特殊值指示信号停止相关计算,选择器根据相应的特殊值指示信号,选择来自特殊值判断单元的输出作为最终的乘积C。当特殊值判断单元没有检测到该浮点乘法器收到的两个操作数中存在特殊值时,阶码运算单元和尾数运算单元根据相应的特殊值指示信号进行相关计算,选择器根据相应的特殊值指示信号,选择来自阶码运算单元、尾数运算单元和符号位运算单元的输出作为最终的乘积C。特殊值判断单元例如可以通过比较器或编码器等电路来实现。
继续参考图2,当阶码运算单元收到指示操作数中不存在特殊值的特殊值指示信号时,将操作数A的阶码与操作数B的阶码进行相加,以得到A与B的乘积C的阶码。在图2所示的浮点乘法器中,尾数运算单元采用基于操作数的模式匹配方法来计算乘积的尾数。
表3
表3给出了根据该实施例的尾数运算单元的四种工作模式。其中当尾数运算单元收到来自特殊值判断单元的指示操作数中存在特殊值的特殊值指示信号时进入工作模式0,在该工作模式0中,尾数运算单元不进行操作。如果操作数A的尾数与操作数B的尾数高四位一致,则进入工作模式1,尾数运算单元直接选取其中一个操作数的尾数作为输出。如果操作数A的尾数与操作数B的尾数高三位一致,则进入工作模式2,尾数运算单元分别截取操作数A的尾数和操作数B的尾数的高位,并在所截取的尾数部分位的高位处补1,然后以所得到的两个长度的数进行乘法运算并输出结果,这里M指代操作数A和B尾数的位数。如果操作数A和操作数B不满足上述三种工作模式时,则进入工作模式3,尾数运算单元取操作数A和操作数B的尾数进行乘法运算并输出结果。
图3为根据本发明一个实施例的尾数运算单元的结构示意图。该尾数运算单元包括模式匹配单元、乘法器和选择器。其中模式匹配单元根据来自特殊值判断单元的特殊值指示信号判断操作数A和操作数B中是否有特殊值,如果有特殊值,则进入工作模式0。当模式匹配单元根据来自特殊值判断单元的特殊值指示信号判断操作数A和操作数B中没有特殊值时,对这两个操作数的尾数进行匹配以判断操作数A和操作数B满足上述的工作模式1、2、3中的哪个模式。当操作数A和操作数B满足工作模式1时,由模式匹配单元直接将操作数A或B的尾数提供给选择器并同时发出选择信号指示选择器选择来自模式匹配单元的数据作为其输出。当操作数A和操作数B满足工作模式2或3时,由模式匹配单元指示乘法器从操作数A的尾数和操作数B的尾数选择相应的位数进行乘法运算,相应乘法结果提供给选择器。选择器根据来自模式匹配单元的选择信号选择将源自模式匹配单元的结果还是源自乘法器的结果作为最终输出的乘积C的尾数。从图2可以看出,如果操作数A和操作数B满足工作模式0时,该尾数运算单元不进行运算,如果操作数A和操作数B满足工作模式1时,该尾数运算单元将由模式匹配单元直接生成的结果作为最终输出;若操作数A和操作数B满足工作模式2或工作模式3,则将由乘法器单元生成的结果作为最终输出。
图4为根据本发明一个实施例的尾数计算单元采用的乘法器示意图。可以根据用于进行乘法运算的两个数的位数来灵活地选择该乘法器中参与运算的乘法单元。其中N实际上等于上述尾数的位数M+1。例如,当尾数运算单元处于工作模式2时,该乘法器中仅有阴影部分参与运算;当尾数运算单元处于工作模式3时,该乘法器所有部分参与运算。
以图5为例,举例说明根据本发明实施例提供的浮点乘法器的工作流程。两操作数具有1位符号位,8位阶码,9位尾数。如图5所示,这两个操作数都不是特殊值,因此进行的是正常的计算过程。通过符号位运算单元将这两个操作数的符号位进行异或操作,以及通过阶码运算单元对这两个操作数的阶码进行相加得到乘积的阶码(10000110)。由于这两个操作数的尾数的高三位数字相同,因此尾数运算单元进入工作模式2,截取这两个操作数的尾数的前四位(即),根据浮点数计算规则,通常在进行尾数计算时需要在高位补充1,即尾数的格式为(1.M),因此在所截取的尾数部分位的高位再补上1,这样得到了长度为5的两个数来进行乘法运算。也就是说,选取这两个操作数的尾数高四位作为新的操作数(1110和1111),将新的操作数进行高位扩展,在高位补充数值1;接着,将扩展后的数据(11110和11111)进行乘法操作,结果为1110100010。最后,进行规格化操作。为了适用于部分位乘法,本发明扩展了浮点数规格化规则,具体为将两个(Q+1)位乘数相乘将得到的(2Q+2)位乘积的低(2Q-M)位舍去(其中,Q表示新的操作数的位数,若2Q小于或等于M,则无需舍去,同时将乘积低位补零补足M+2位),剩下的(M+2)位中,当最高位(第M+2位)为1时,阶码加1,将最高位去除,将其余位数后移一位后取低M位作为尾数乘积结果;当最高位(第M+2位)为0时,直接取低M位为作为尾数乘积结果。依据浮点数规格化规则,将该数除去最高位后,其余位右移一位,同时将阶码(10000110)加一,这样最终得到的这两个操作数的乘积的符号位为1,其阶码为10000111,尾数为110100010。
可以看出,在根据本发明实施例的浮点乘法器中,根据待相乘的操作数的不同模式,将用于浮点数尾数相乘操作划分不同的工作模式,采用了特殊值判断、操作数替换、固定值输出和部分位相乘等相结合的近似计算方式,减少了尾数计算单元乘法操作的计算量,提高了计算效率,降低了计算功耗。
图6为根据本发明一个实施例的浮点乘法的计算方法的流程示意图。该方法主要包括下列步骤:
步骤S1,判断接收到的待相乘的两个操作数中是否存在特殊值,若有特殊值,则直接进行如上文介绍的特殊值处理,直接输出相应的乘积(如表2所示);若没有特殊值,则继续至步骤S2;
步骤S2,对两个操作数的符号位进行异或运算,得到这两个操作数的乘积的符号位;
步骤S3,对两个操作数的阶码进行加法运算,以得到这两个操作数的乘积的阶码;
步骤S4,判断两个操作数的尾数高四位或高三位是否一致,如果高四位一致,则选择其中一个操作数的尾数作为乘积的尾数,如果高三位一致,则选取操作数A和操作数B的尾数的高位并在高位补1,然后进行乘法运算以得到乘积的尾数,如果都不一致,则选择两个操作数的尾数进行乘法运算以得到乘积的尾数;
步骤S5,依据浮点数规格化规则对所述乘积的尾数和阶码进行规格化操作,并以所述乘积的符号位、经规格化后的尾数与阶码作为最终输出。
应理解,尽管上文实施例中描述的是用于神经网络处理器的浮点乘法器及浮点数乘法,但根据本发明的浮点乘法器和浮点乘法并非仅适用于神经网络处理器,也可以适用于对计算噪声具有一定的容忍性且需要节约电路运行功耗的其他高能效电路系统或处理器系统。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所做出的各种改变以及变化。
Claims (9)
1.一种浮点乘法器,包括:符号位运算单元,其对输入的两个操作数的符号位进行异或运算以得到这两个操作数的乘积的符号位;阶码运算单元,其对输入的两个操作数的阶码进行加法运算,以得到所述乘积的阶码;尾数运算单元,其对输入的两个操作数的尾数进行匹配以从多个计算模式中选择相应模式来计算所述乘积的尾数;规格化单元,其对自尾数运算单元输出的尾数和自阶码运算单元输出的阶码进行规格化处理,并输出经规格化后的阶码和尾数;
其中,所述多个计算模式包括第一模式、第二模式和第三模式,在第一模式中直接选取其中一个操作数的尾数作为所述乘积的尾数,在第二模式中,分别从这两个操作数的尾数的高位开始截取部分位并在所截取的数的高位处补1,接着对所得到两个数进行乘法运算以得到所述乘积的尾数,在第三模式中,对这两个操作数的尾数进行乘法运算以得到所述乘积的尾数;所述尾数运算单元在输入的两个操作数的尾数高四位相匹配时选择第一模式,否则在这两个操作数的尾数高三位相匹配时选择第二模式,否则选择第三模式。
2.根据权利要求1所述的浮点乘法器,还包括特殊值判断单元,其判断输入的两个操作数中是否存在特殊值并向阶码运算单元和尾数运算单元发出指示所述判断的结果的特殊值指示信号,以及当判断这两个操作数中存在特殊值时,直接输出预先设定的与所检测的特殊值对应的结果作为这两个操作数的乘积。
3.根据权利要求2所述的浮点乘法器,其中所述阶码运算单元和所述尾数运算单元在收到来自特殊值判断单元指示操作数中存在特殊值的特殊值指示信号时,不再继续进行相关运算。
4.根据权利要求1或2所述的浮点乘法器,其中所述尾数计算单元包括模式匹配单元、乘法器和选择器,其中所述模式匹配单元对输入的两个操作数的尾数进行匹配并基于匹配的结果直接输出结果给选择器或指示乘法器进行相应运算;乘法器根据来自模式匹配单元的指示从输入的两个操作数的尾数中选择相应位数进行乘法运算并将结果提供给选择器;选择器根据来自模式匹配单元的选择信号选择将源自模式匹配单元的结果还是源自乘法器的结果作为输出。
5.根据权利要求1-4中任一项所述的浮点乘法器,其中从两个操作数尾数所截取的部分位的位数其中M为整数,表示操作数尾数的位数。
6.一种浮点数乘法,包括:
步骤a1,将待相乘的两个操作数的符号位进行异或运算,得到这两个操作数的乘积的符号位;
步骤a2,将这两个操作数的阶码进行加法运算,以得到所述乘积的阶码;
步骤a3,判断这两个操作数的尾数高四位是否匹配,如果匹配,则选择其中一个操作数的尾数作为乘积的尾数,跳转至步骤a6,如果不匹配,则继续至步骤a4;
步骤a4,判断这两个操作数的尾数高三位是否匹配,如果匹配,则从这两个操作数尾数的高位开始截取部分位并在所截取的数的高位补1,对所得到的数进行乘法运算以得到乘积的尾数,跳转至步骤a6;如果不匹配,则继续步骤a5;
步骤a5,对这两个操作数的尾数进行乘法运算以得到乘积的尾数;
步骤a6,对所述乘积的尾数和阶码进行规格化处理,并以所述乘积的符号位、经规格化后的尾数与阶码作为最终输出。
7.根据权利要求6所述的浮点数乘法,在步骤a1-a6之前还包括步骤a0,判断待相乘的两个操作数中是否存在特殊值,若有特殊值,则直接输出预先设定的与所述特殊值对应的结果值作为这两个操作数的乘积,否则继续至步骤a1。
8.根据权利要求7所述的浮点数乘法,在步骤a0中:
如果这两个操作数中存在零值,则直接输出零值;
如果这两个操作数相同且均为浮点表示范围内的最大值或最小值,则直接输出最大值;
如果这两个操作数中一个为最大值且另一个为最小值,则直接输出最小值;
如果这两个操作数中仅存在一个最大值或最小值,则直接输出该最大值或最小值。
9.根据权利要求6-8中任一项所述的浮点数乘法,其中从两个操作数尾数所截取的部分位的位数其中M为整数,表示操作数尾数的位数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311728.XA CN107291419B (zh) | 2017-05-05 | 2017-05-05 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710311728.XA CN107291419B (zh) | 2017-05-05 | 2017-05-05 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291419A true CN107291419A (zh) | 2017-10-24 |
CN107291419B CN107291419B (zh) | 2020-07-31 |
Family
ID=60095252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710311728.XA Active CN107291419B (zh) | 2017-05-05 | 2017-05-05 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291419B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108364063A (zh) * | 2018-01-24 | 2018-08-03 | 福州瑞芯微电子股份有限公司 | 一种基于权值分配资源的神经网络训练方法和装置 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
CN109754066A (zh) * | 2017-11-02 | 2019-05-14 | 三星电子株式会社 | 用于生成定点型神经网络的方法和装置 |
CN110210611A (zh) * | 2019-05-13 | 2019-09-06 | 西安交通大学 | 一种用于卷积神经网络计算的动态自适应数据截断方法 |
CN110337658A (zh) * | 2018-04-26 | 2019-10-15 | 深圳市大疆创新科技有限公司 | 神经网络加速装置与方法 |
CN111258534A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381805A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381803A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381804A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381806A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
CN111937010A (zh) * | 2018-03-23 | 2020-11-13 | 亚马逊技术股份有限公司 | 加速的量化乘法和加法运算 |
CN112189184A (zh) * | 2019-09-29 | 2021-01-05 | 深圳市大疆创新科技有限公司 | 浮点数处理方法、设备和可移动平台 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
CN112596697A (zh) * | 2019-10-02 | 2021-04-02 | 脸谱公司 | 使用分解的分量数字的浮点乘法硬件 |
CN113590195A (zh) * | 2021-07-22 | 2021-11-02 | 中国人民解放军国防科技大学 | 支持浮点格式乘加的存算一体化dram计算部件设计 |
CN115291834A (zh) * | 2022-07-07 | 2022-11-04 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN111260044B (zh) * | 2018-11-30 | 2023-06-20 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN116594589A (zh) * | 2019-12-31 | 2023-08-15 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305248A (en) * | 1993-04-23 | 1994-04-19 | International Business Machines Corporation | Fast IEEE double precision reciprocals and square roots |
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
US6233595B1 (en) * | 1998-05-08 | 2001-05-15 | Advanced Micro Devices, Inc. | Fast multiplication of floating point values and integer powers of two |
CN101317152A (zh) * | 2005-10-05 | 2008-12-03 | 高通股份有限公司 | 具有可选择的子精确度的浮点处理器 |
CN101986264A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
CN104636114A (zh) * | 2015-02-12 | 2015-05-20 | 中国科学院自动化研究所 | 一种浮点数乘法的舍入方法及装置 |
-
2017
- 2017-05-05 CN CN201710311728.XA patent/CN107291419B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305248A (en) * | 1993-04-23 | 1994-04-19 | International Business Machines Corporation | Fast IEEE double precision reciprocals and square roots |
CN1225468A (zh) * | 1998-02-02 | 1999-08-11 | 国际商业机器公司 | 基本函数的高精度估算 |
US6233595B1 (en) * | 1998-05-08 | 2001-05-15 | Advanced Micro Devices, Inc. | Fast multiplication of floating point values and integer powers of two |
CN101317152A (zh) * | 2005-10-05 | 2008-12-03 | 高通股份有限公司 | 具有可选择的子精确度的浮点处理器 |
CN101986264A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
CN104636114A (zh) * | 2015-02-12 | 2015-05-20 | 中国科学院自动化研究所 | 一种浮点数乘法的舍入方法及装置 |
Cited By (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109754066A (zh) * | 2017-11-02 | 2019-05-14 | 三星电子株式会社 | 用于生成定点型神经网络的方法和装置 |
CN109754066B (zh) * | 2017-11-02 | 2024-05-14 | 三星电子株式会社 | 用于生成定点型神经网络的方法和装置 |
CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
CN108364063B (zh) * | 2018-01-24 | 2019-09-27 | 福州瑞芯微电子股份有限公司 | 一种基于权值分配资源的神经网络训练方法和装置 |
CN108364063A (zh) * | 2018-01-24 | 2018-08-03 | 福州瑞芯微电子股份有限公司 | 一种基于权值分配资源的神经网络训练方法和装置 |
CN111937010B (zh) * | 2018-03-23 | 2021-09-21 | 亚马逊技术股份有限公司 | 加速的量化乘法和加法运算 |
US10983754B2 (en) | 2018-03-23 | 2021-04-20 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
CN111937010A (zh) * | 2018-03-23 | 2020-11-13 | 亚马逊技术股份有限公司 | 加速的量化乘法和加法运算 |
CN110337658A (zh) * | 2018-04-26 | 2019-10-15 | 深圳市大疆创新科技有限公司 | 神经网络加速装置与方法 |
CN111258534A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111258534B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111260044B (zh) * | 2018-11-30 | 2023-06-20 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381804A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381806A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381803A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
CN111381805A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据比较器、数据处理方法、芯片及电子设备 |
WO2020140766A1 (zh) * | 2019-01-04 | 2020-07-09 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、控制方法、电子设备及存储介质 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
CN109739555B (zh) * | 2019-01-04 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
CN110210611A (zh) * | 2019-05-13 | 2019-09-06 | 西安交通大学 | 一种用于卷积神经网络计算的动态自适应数据截断方法 |
CN112189184A (zh) * | 2019-09-29 | 2021-01-05 | 深圳市大疆创新科技有限公司 | 浮点数处理方法、设备和可移动平台 |
CN112596697A (zh) * | 2019-10-02 | 2021-04-02 | 脸谱公司 | 使用分解的分量数字的浮点乘法硬件 |
CN116594589A (zh) * | 2019-12-31 | 2023-08-15 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
CN116594589B (zh) * | 2019-12-31 | 2024-03-26 | 华为技术有限公司 | 浮点数乘法计算的方法、装置和算术逻辑单元 |
CN112558918A (zh) * | 2020-12-11 | 2021-03-26 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
CN113590195A (zh) * | 2021-07-22 | 2021-11-02 | 中国人民解放军国防科技大学 | 支持浮点格式乘加的存算一体化dram计算部件设计 |
CN113590195B (zh) * | 2021-07-22 | 2023-11-07 | 中国人民解放军国防科技大学 | 支持浮点格式乘加的存算一体化dram计算部件 |
CN115291834A (zh) * | 2022-07-07 | 2022-11-04 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN115291834B (zh) * | 2022-07-07 | 2023-08-22 | 华东师范大学 | N进制浮点加法运算系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107291419B (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291419A (zh) | 用于神经网络处理器的浮点乘法器及浮点数乘法 | |
CN107273090A (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
CN106897046B (zh) | 一种定点乘累加器 | |
CN103677736B (zh) | 数字信号处理器的数据路径电路 | |
US11216250B2 (en) | Dynamic, variable bit-width numerical precision on field-programmable gate arrays for machine learning tasks | |
CN104111816B (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN108287681A (zh) | 一种单精度浮点融合点乘运算单元 | |
CN101326486B (zh) | 进行浮点数的除法运算或平方根运算的运算装置和运算方法 | |
CN101650642B (zh) | 基于补码舍入的浮点加法装置 | |
CN107769791A (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
CN113722966B (zh) | 一种集成电路板仿真多级分布式并行计算方法 | |
CN102722352A (zh) | 一种Booth乘法器 | |
CN106528044A (zh) | 处理器、指令执行方法和计算系统 | |
CN102629189A (zh) | 基于fpga的流水浮点乘累加方法 | |
WO2009056783A1 (en) | Apparatus and method for performing magnitude detection for arithmetic operations | |
CN103984522A (zh) | Gpdsp中定点和浮点混合除法的实现方法 | |
CN108351762A (zh) | 使用重叠位的数值的冗余表示 | |
CN101770355B (zh) | 兼容双精度和双单精度的浮点乘加器及其兼容处理方法 | |
CN105930128A (zh) | 一种利用浮点数计算指令实现大整数乘法计算加速方法 | |
CN101371221A (zh) | 预饱和固定点乘法器 | |
CN104636114B (zh) | 一种浮点数乘法的舍入方法及装置 | |
CN110187866A (zh) | 一种基于双曲cordic的对数乘法计算系统及方法 | |
CN108664464A (zh) | 一种语义相关度的确定方法及确定装置 | |
CN108351763A (zh) | 重叠传播操作 | |
CN1020170C (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 |