CN113126954A - 浮点数乘法计算的方法、装置和算术逻辑单元 - Google Patents

浮点数乘法计算的方法、装置和算术逻辑单元 Download PDF

Info

Publication number
CN113126954A
CN113126954A CN201911414534.8A CN201911414534A CN113126954A CN 113126954 A CN113126954 A CN 113126954A CN 201911414534 A CN201911414534 A CN 201911414534A CN 113126954 A CN113126954 A CN 113126954A
Authority
CN
China
Prior art keywords
precision
floating point
calculation result
combination
intermediate calculation
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
CN201911414534.8A
Other languages
English (en)
Other versions
CN113126954B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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
Priority to CN201911414534.8A priority Critical patent/CN113126954B/zh
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202310511127.9A priority patent/CN116594589B/zh
Priority to EP20909798.9A priority patent/EP4064036A4/en
Priority to PCT/CN2020/140768 priority patent/WO2021136259A1/zh
Priority to JP2022539150A priority patent/JP7407291B2/ja
Priority to BR112022012566A priority patent/BR112022012566A2/pt
Publication of CN113126954A publication Critical patent/CN113126954A/zh
Priority to US17/855,555 priority patent/US20220334798A1/en
Application granted granted Critical
Publication of CN113126954B publication Critical patent/CN113126954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/57Arithmetic 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
    • 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/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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/487Multiplying; Dividing
    • 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
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本申请实施例公开了一种浮点数乘法计算的方法、装置和算术逻辑单元,属于数据处理领域。所述方法包括:获取多个待计算的第一精度浮点数;对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合;将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果;基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果。采用本申请,可以节省计算资源。

Description

浮点数乘法计算的方法、装置和算术逻辑单元
技术领域
本申请涉及数据处理技术领域,特别涉及一种浮点数乘法计算的方法、装置和算术逻辑单元。
背景技术
浮点数是计算机中一种重要的数字格式,在计算机中浮点数由符号、阶码和尾数三部分组成。为了满足不同业务对数据精度的不同需求,在计算机的处理器中通常需要具有对不同精度浮点数的乘法运算能力。
目前,为了实现对不同精度浮点数的乘法需求,通常会对应精度需求设计多个独立的乘法器。例如,需要处理器同时支持半精度、单精度和双精度的乘法运算,则需要在处理器中独立的至少三个乘法器,使其分别满足半精度、单精度和双精度乘法。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
在处理器中独立设计多个分别支持不同精度的乘法器,当系统只使用其中一种精度的乘法器计算时,其余精度的乘法器处于闲置状态,十分浪费计算资源。
发明内容
为了解决相关技术中计算资源浪费的问题,本申请实施例提供了一种浮点数乘法计算的方法、装置和算术逻辑单元。所述技术方案如下:
第一方面,提供了一种浮点数乘法计算的方法,该方法包括:
获取多个待计算的第一精度浮点数;
对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合;
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果;
基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果。
本申请实施例所示的方案中,浮点数由符号、阶码和尾数三部分组成,而整数为1,在浮点数的表示中可以省略。对于待计算的第一精度浮点数,可以先进行分解。此处,对于第一精度浮点数进行分解,即,将第一精度浮点数的整数和尾数由多个第二精度浮点数的和来表示。这里,第二精度浮点数的精度要低于第一精度的精度。例如,第一精度浮点数为单精度浮点数,则第二精度浮点数可以为半精度浮点数。又例如,第一精度浮点数为双精度浮点数,则第二精度浮点数可以为单精度浮点数或者半精度浮点数。对于分解后的第二精度浮点数,可以将分解自不同的第一精度浮点数的两个第二精度浮点数进行组合,然后,对于得到的每个组合输入到用于计算第二精度浮点数乘法的第二精度乘法器中。则,第二精度乘法器可以输出每组第二精度浮点数对应的中间计算结果。最后,对多个中间计算结果进行处理,即可得到多个待计算的第一精度浮点数的计算结果。
可见,在本申请实施例所示的方案中,计算第一精度浮点数的乘法的过程中,不必使用精度较高的第一精度乘法器,而只需要使用精度相对较低的第二精度乘法器即可。也即是,在仅部署有第二精度乘法器的处理单元中,除了可以正常计算第二精度浮点数乘法外,还可以计算精度更高的第一精度浮点数的乘法,这样可以有效的利用计算资源,可以节省单独部署第一精度乘法器的成本。
在一种可能的实现方式中,所述对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,之后还包括:
确定每个第二精度浮点数对应的阶码位移值;
所述基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果;
将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果。
本申请实施例所示的方案中,在对于第一精度浮点数进行分解时,要使用第二精度浮点数来分别表示出该第一精度浮点数的不同位数的尾数。同时还可以得到每个第二精度浮点数对应的阶码位移值,该阶码位移值可以包括第一精度浮点数的阶码,还可以包括有该第二精度浮点数所表示的尾数在第一精度浮点数中的固定阶码位移值。下面对于固定阶码位移值进行说明。
例如,对于一个单精度浮点数0 10000000 00000010100000100110011,符号为“0”,阶码为“10000000”,尾数为“00000010100000100110011”,如果要使用半精度浮点数表示尾数中的第11bit到第21bit,“00001001100”,实际要表示的数为“0.000000000000001001100”,那么,可以提取出固定阶码位移值-11。
相应的,对应每种组对应的中间计算结果的阶码,需要使用第二精度浮点数对应的阶码位移值进行调整。最后,对于调整后的中间计算结果可以输入累加器,进行累加计算得到最后的计算结果。
在一种可能的实现方式中,所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
本申请实施例所示的方案中,每个第二精度浮点数对应有阶码位移值,在得到通过第二精度乘法器得到中间结果后,对于每种组合对应的中间计算结果,需要使用未参加计算的每个第二精度浮点数的阶码位移值,与该中间计算结果的阶码相加,得到调整后的中间计算结果。
在一种可能的实现方式中,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
本申请实施例所示的方案中,对于第一精度浮点数的乘法计算,仍然可以得到第一精度的计算结果,即精度不会降低。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
本申请实施例所示的方案中,可以实现待计算的单精度浮点数,通过半精度乘法器,最终得到单精度计算结果,无需使用单精度乘法器,即可实现单精度乘法计算,节省计算资源。也可以实现待计算的双精度浮点数,通过单精度乘法器,最终得到双精度计算结果,无需使用双精度乘法器,即可实现双精度乘法计算,节省计算资源。
在一种可能的实现方式中,所述将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果,包括:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果;
所述将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果,包括:
将每种组合对应的调整后的第三精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第三精度计算结果。
本申请实施例所示的方案中,对于第一精度浮点数的乘法计算,可以得到更高精度的第三精度计算结果。
在一种可能的实现方式中,所述对每个第一精度中间结果进行格式转换得到每种组合第二精度浮点数对应的第三精度中间计算结果,包括:
对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合对应的第三精度中间计算结果。
本申请实施例所示的方案中,由于第二精度浮点数经过第二精度乘法器只能得到第一精度中间计算结果,那么,如果要最后得到更高精度的第三精度计算结果的话,需要对第一精度中间计算结果的格式进行扩展,扩展为第三精度中间计算结果,扩展方法可以为对阶码和尾数在最后一位之后补零。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
本申请实施例所示的方案中,可以实现待计算的单精度浮点数,通过半精度乘法器,最终得到双精度计算结果,无需单精度乘法器,即可实现单精度乘法计算,节省计算资源。
在一种可能的实现方式中,所述将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果,包括:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第三精度中间计算结果,对每个第三精度中间计算结果进行格式转换得到每种组合对应的第一精度中间计算结果;
所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第一精度中间计算结果的阶码,得到调整后的第一精度中间计算结果;
所述将各组第二精度浮点数对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果,包括:
将各组第二精度浮点数对应的调整后的第一精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第一精度计算结果。
本申请实施例所示的方案中,第二精度浮点数通过第二精度浮点数乘法器后,可能无法直接得到第一精度中间计算结果,而只能得到第三精度中间计算结果。那么,为了使最后的计算结果精度仍为第一精度,则可以对第三精度中间计算结果的格式进行扩展,得到第一精度中间结果,以使最后得到第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
本申请实施例所示的方案中,可以实现待计算的双精度精度浮点数,通过半精度乘法器,得到单精度中间计算结果,经过对单精度中间计算结果进行格式调整后,最终得到双精度计算结果,无需使用双精度乘法器,即可得到实现双精度浮点数乘法计算,节省计算资源。
第二方面,提供了一种浮点数乘法计算的装置,该装置包括:
获取模块,用于获取多个待计算的第一精度浮点数;
分解模块,用于对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
组合模块,用于确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合;
输入模块,用于将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果;
确定模块,用于基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果。
在一种可能的实现方式中,所述分解模块,还用于:
确定每个第二精度浮点数对应的阶码位移值;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果;
将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果。
在一种可能的实现方式中,所述确定模块,用于:
将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
在一种可能的实现方式中,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
在一种可能的实现方式中,所述输入模块,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果;
将每种组合对应的调整后的第三精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第三精度计算结果。
在一种可能的实现方式中,所述输入模块,用于:
对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合对应的第三精度中间计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述输入模块,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第三精度中间计算结果,对每个第三精度中间计算结果进行格式转换得到每种组合对应的第一精度中间计算结果;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第一精度中间计算结果的阶码,得到调整后的第一精度中间计算结果;
将各组第二精度浮点数对应的调整后的第一精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
第三方面、提供了一种算术逻辑单元,所述算术逻辑单元包括浮点数分解电路、第二精度乘法器、阶码调整电路和累加器,其中:
所述浮点数分解电路,用于将输入的每个待计算的第一精度浮点数分解为至少两个第二精度浮点数,并向所述阶码调整电路输出每个第二精度浮点数对应的阶码位移值,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
所述第二精度乘法器,用于接收分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合,将每种组合中的第二精度浮点数进行乘法运算,向所述阶码调整电路输出每种组合对应的中间计算结果;
所述阶码调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的中间计算结果的阶码,向所述累加器输出调整后的中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的中间计算结果进行求和运算,输出所述多个第一精度浮点数的计算结果。
在一种可能的实现方式中,所述阶码调整调整电路,用于将输入的每种组合中的第二精度浮点数对应的阶码位移值,与输入的每种组合对应的中间计算结果的阶码相加,向所述累加器输出调整后的中间计算结果。
在一种可能的实现方式中,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,具体用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第一精度中间计算结果;
所述格式转换电路,用于将输入的每个第一精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第三精度中间计算结果的阶码,向所述累加器输出调整后的第三精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第三精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第三精度计算结果。
在一种可能的实现方式中,所述格式转换电路,用于:
将输入的每个第一精度中间计算结果的阶码和尾数分别进行补零处理,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第三精度中间计算结果;
所述格式转换电路,用于将输入的每个第三精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第一精度中间计算结果的阶码,向所述累加器输出调整后的第一精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第一精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括,计算模式切换电路,其中:
所述计算模式切换电路,用于在设置为第二精度浮点数计算模式时,将所述浮点数分解电路和所述阶码调整电路置为无效;
所述第二精度乘法器,用于接收所述算数逻辑单元外部的输入的多组待计算的第二精度浮点数,对每组第二精度浮点数进行乘法运算,输入每组待计算的第二精度浮点数对应的中间计算结果;
所累加器,用于将输入的每组待计算的第二精度浮点数对应的中间计算结果进行求和运算,输出所述多组待计算的第二精度浮点数的计算结果。
第四方面、提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上述第一方面所述的浮点数乘法计算的方法所执行的操作。
第五方面、提供了一种处理器,所述处理器包括上述第三方面所述的算术逻辑单元。
第六方面、提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如上述第一方面所述的浮点数乘法计算的方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果是:
在本申请实施例中,通过对每个待计算的第一精度浮点数进行分解,得到多个精度较低的第二精度浮点数。然后,将各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合输入第二精度乘法器,得到每种组合对应的中间计算结果,最后,根据每种组合对应的中间计算结果,确定得到待计算的第一精度浮点数对应的计算结果。可见,在本申请实施例中,对于精度较高的多个第一精度浮点数的计算,可以由精度较低的第二精度乘法器实现,而不必再使用第一精度乘法器。因此,可以实现在只有较低精度的第二精度乘法器的设备中,实现较高精度的第一精度浮点数的计算,而不必额外设计第一精度乘法器,有效的节省了计算资源。
附图说明
图1是本申请实施例提供的一种浮点数乘法计算的方法流程图;
图2是本申请实施例提供的一种浮点数组成示意图;
图3是本申请实施例提供的一种浮点数组成示意图;
图4是本申请实施例提供的一种浮点数组成示意图;
图5是本申请实施例提供的一种第二精度浮点数输入第二精度乘法器的示意图;
图6是本申请实施例提供的一种第二精度浮点数输入第二精度乘法器的示意图;
图7是本申请实施例提供的一种浮点数乘法计算的装置的结构示意图;
图8是本申请实施例提供的一种电子设备的结构示意图;
图9是本申请实施例提供的一种浮点数乘法计算的方法流程图;
图10是本申请实施例提供的一种浮点数乘法计算的方法流程图;
图11是本申请实施例提供的一种浮点数乘法计算的方法流程图;
图12是本申请实施例提供的一种算术逻辑单元的结构示意图;
图13是本申请实施例提供的一种算术逻辑单元的结构示意图;
图14是本申请实施例提供的一种算术逻辑单元的结构示意图。
具体实施方式
本申请实施例提供了一种浮点数乘法计算的方法,该方法可以由电子设备实现,该电子设备可以为需要执行浮点数计算的任一设备。例如,该电子设备可以为手机、平板电脑等移动终端,也可以为台式机、笔记本电脑等计算机设备,还可以为服务器。而对于浮点数计算可以涉及到图形处理、天文、医学等诸多领域。在各领域中,使用上述类电子设备执行浮点数计算时,均可以采用本申请实施例所提供的方法,通过对高精度浮点数进行分解,得到低精度浮点数,再使用低精度乘法器对得到的低精度浮点数进行计算,最终得到高精度计算结果。可以在不损失精度的情况下,利用低精度乘法器完成相关技术中高精度乘法器才可以完成的计算。
参见图1,本申请实施例提供了一种浮点数乘法计算的方法,该方法的处理流程可以包括如下步骤:
步骤101、获取多个待计算的第一精度浮点数。
其中,多个待计算的第一精度浮点数可以为一组需要进行乘法运算的第一精度浮点数。多个可以为两个,也可以为两个以上,在本申请实施例中以多个为两个的情况进行描述。
在实施中,计算机设备中的处理器可以获取到待计算的多个第一精度浮点数。该第一精度浮点数可以为单精度浮点数、双精度浮点数等。
步骤102、对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,第二精度浮点数的精度低于第一精度浮点数的精度。
在实施中,对于每个待计算的第一精度浮点数分解,可以得到多个第二精度浮点数,第二精度浮点数要小于第一精度浮点数的精度。对于第一精度浮点数和第二精度浮点数有多种可能情况,以下列举其中几种:第一精度浮点数可以为单精度浮点数(single-precision floating-point format,FP32),那么,第二精度浮点数即可以为半精度浮点数(half-precision floating-point format,FP16)。或者,第一精度浮点数可以为双精度浮点数(double-precision floating-point format,FP64),那么,第二精度浮点数即可以为FP32,也可以为FP16。下面对于以上几种进行分别说明。
情况一、对于第一精度浮点数为FP32,第二精度浮点数为FP16的情况,对于FP32分解得到多个FP16可以有如下情况:
一、将一个FP32进行分解,得到三个FP16。
目前,标准格式的FP32的组成如图2所示,包括1bit(比特)符号,8bit阶码(也可称为指数)和23bit尾数,另外,还有省略的1bit整数,省略的整数为1。对于一个标准格式的FP32,其整数加上尾数,共24bit。标准格式的FP16的组成如图3所示,包括1bit符号,5bit阶码和10bit尾数,另外,还有省略的1bit整数,省略的整数为1。对于一个标准格式的FP16整数加上尾数,共11bit。如果要将一个标准格式的FP32分解,得到标准格式的FP16,需要3个标准格式的FP16。
将标准格式的FP32的整数和尾数可以分为三部分,第一部分为整数和前10bit的尾数,第二部分为第11bit到第21bit的尾数,第三部分为第22bit和第23bit的尾数。将这三分部分别由一个标准格式的FP16表示。此处需要说明的是,对于上述第三部分第22bit和第23bit的尾数由标准格式的FP16表示时,可以先在第23bit的尾数后补9个0,即将第22bit和第23bit的尾数,以及补的0,由一个标准格式的FP16表示。
另外,FP16的阶码范围为-15到15,即可以表示小数点左移15位到右移15位。使用标准格式的FP16表示上述FP32的第一部分时,固定阶码位移值为0;使用标准格式的FP16表示上述FP32的第二部分时,固定阶码位移值为-11;使用标准格式的FP16表示上述FP32的第三部分时,固定阶码位移值为-22。可见,在表示第三部分时,仅对应的固定阶码位移值就已经超出了FP16的阶码范围。因此,可以对每个标准格式的FP16的阶码提取出对应的固定阶码位移值。
那么,对于一个标准格式的FP32,可以表示为:
Figure BDA0002350848420000091
其中,A1为标准格式的FP32,EA1为A1的阶码,a0、a1和a2为分解得到的三个标准格式的FP16,S1为最小的固定阶码位移值,对于该标准格式的FP16来说,S1=11。
除此之外,对于每个标准格式的FP16的阶码可以提取出一个公共阶码位移值。那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002350848420000101
其中,a0′、a1′和a2′为分解得到的三个标准格式的FP16。在上述两种表示方法中,分解得到的FP16有如下关系:
Figure BDA0002350848420000102
a1=a1′,
Figure BDA0002350848420000103
二、将一个FP32分解,得到两个FP16。
为了减少分解得到的FP16的个数,对于目前标准格式的FP16可以进行调整,将其尾数调整为13bit,符号和阶码的bit数不变,可以称调整后的FP16为非标准格式的FP16。则该非标准格式的FP16的整数加上尾数,共14bit。那么,如果要将一个标准格式的FP32的尾数使用非标准格式的FP16表示,则只需要2个非标准格式的FP16。
将标准格式的FP32的整数和尾数分为两部分,第一部分为整数和前13bit的尾数,第二部分为第14bit到第23bit。将这两部分分别由非标准格式的FP16表示。
此处还需说明的是,对于上述第二部分由非标准FP16表示时,可以先在第23bit的尾数后补4个0,即将第14bit到第23bit的尾数,以及补的0,由一个非标准格式的FP16表示。与上述情况一相同,此处,也可以对每个标准格式的FP16的阶码提取出对应的固定阶码位移值。
那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002350848420000104
其中,A2为标准格式的FP32,EA2为A2的阶码,a3和a4为分解得到的两个非标准格式的FP16,S2为固定阶码位移值,对于该非标准格式的FP16来说,S2=14。
除此之外,对于每个标准格式的FP16的阶码可以提取出一个公共阶码位移值。那么,同样对于一个标准格式的FP32,可以表示为:
Figure BDA0002350848420000105
其中,a3′和a4′为分解得到的两个非标准格式的FP16。在上述两种表示方法中,分解得到的FP16有如下关系:
Figure BDA0002350848420000106
a4=a4′。
情况二、对于第一精度浮点数为FP64,第二精度浮点数为FP32的情况,对于FP64分解得到多个FP32可以有如下情况:
一、将一个FP64进行分解,得到三个FP32。
目前,标准格式的FP64的组成如图4所示,包括1bit(比特)符号,11bit阶码(也可称为指数)和52bit尾数,另外,还有省略的1bit整数,省略的整数为1。对于一个标准格式的FP64,其整数加上尾数,共53bit。如上所述标准格式的FP32的整数加上尾数,共24bit。如果要将一个标准格式的FP64分解,得到标准格式的FP32,需要3个标准格式的FP32。
将标准格式的FP64的整数和尾数可以分为三部分,第一部分为整数和前23bit的尾数,第二部分为第24bit到第47bit的尾数,第三部分为第48bit到第52bit的尾数。将这三分部分别由一个标准格式的FP32表示。
此处还需要说明的是,对于上述第三部分第47bit到第52bit的尾数由标准格式的FP32表示时,可以先在第23bit的尾数后补18个0,即将第47bit到第52bit的尾数,以及补的0,由一个标准格式的FP32表示。
那么,对于一个标准格式的FP64,可以表示为:
Figure BDA0002350848420000107
其中,A3为标准格式的FP64,EA3为A3的阶码,a5、a6和a7为分解得到的三个标准格式的FP32。
二、将一个FP64分解,得到两个FP32。
为了减少分解得到的FP32的个数,对于目前标准格式的FP32可以进行调整,将其尾数调整为26bit,符号和阶码的bit数不变,可以称调整后的FP32为非标准格式的FP32。则该非标准格式的FP32的整数加上尾数,共27bit。那么,如果要将一个标准格式的FP64的尾数使用非标准格式的FP32表示,则只需要2个非标准格式的FP32。
将标准格式的FP64的整数和尾数分为两部分,第一部分为整数和前26bit的尾数,第二部分为第27bit到第53bit。将这两部分分别由非标准格式的FP32表示。
那么,同样对于一个标准格式的FP64,可以表示为:
Figure BDA0002350848420000111
其中,A4为标准格式的FP32,EA4为A4的阶码,a8和a9为分解得到的两个非标准格式的FP32。
情况三、对于第一精度浮点数为FP64,第二精度浮点数为FP16的情况,对于FP64分解得到多个FP16可以有如下情况:
一、将一个FP64进行分解,得到五个FP16。
对于一个标准格式的FP64,其整数加上尾数,共53bit。如上所述标准格式的FP32的整数加上尾数,共24bit。如果要将一个标准格式的FP64分解,得到标准格式的FP16,需要5个标准格式的FP16。
将标准格式的FP64的整数和尾数可以分为五部分,第一部分为整数和前10bit的尾数,第二部分为第11bit到第21bit的尾数,第三部分为第22bit到第32bit的尾数,第四部分为第33bit到第43bit的尾数,第五部分为第44bit到第52bit的尾数。将这五分部分别由一个标准格式的FP64表示。此处还需要说明的是,对于上述第五部分第44bit到第52bit的尾数由标准格式的FP16表示时,可以先在第52bit的尾数后补2个0,即,将第44bit到第52bit的尾数,以及补的0,由一个标准格式的FP16表示。
另外,由于FP16的阶码范围为-15到15,即可以表示小数点左移15位到右移15位。使用标准格式的FP16表示上述FP64的第一部分时,固定阶码位移值为0;使用标准格式的FP16表示上述FP64的第二部分时,固定阶码位移值为-11;使用标准格式的FP16表示上述FP64的第三部分时,固定阶码位移值为-22;使用标准格式的FP16表示上述FP64的第四部分时,固定阶码位移值为-33;使用标准格式的FP16表示上述FP64的第五部分时,固定阶码位移值为-44。可见,在表示第三部分、第四部分以及第五部分时,仅对应的固定阶码位移值就已经超出了FP16的阶码范围。因此,可以对每个标准格式的FP16的阶码提取出其对应的固定阶码位移值。
那么,对于一个标准格式的FP64,可以表示为:
Figure BDA0002350848420000112
其中,A5为标准格式的FP64,EA5为A5的阶码,a10、a11、a12、a13和a14为分解得到的五个标准格式的FP16,S1为最小的固定阶码位移值,对于该标准格式的FP16来说,S1=11。
二、将一个FP64分解,得到4个FP16。
同样的可以将FP64分解得到上述非标准格式的FP16。对于一个标准格式的FP64的尾数使用非标准格式的FP16表示,则只需要4个非标准格式的FP16。
将标准格式的FP64的整数和尾数分为四部分,第一部分为整数和前13bit的尾数,第二部分为第14bit到第27bit,第三部分为第28bit到第41bit,第四部分为第42bit到第52bit。
此处还需要说明的是,对于上述第四部分第42bit到第52bit的尾数由非标准格式的FP16表示时,可以先在第52bit的尾数后补3个0,即,将第42bit到第52bit的尾数,以及补的0,由一个标准格式的FP16表示。另外,由于FP16的阶码范围为-15到15,即可以表示小数点左移15位到右移15位。使用非标准格式的FP16表示上述FP64的第一部分时,固定阶码位移值为0;使用非标准格式的FP16表示上述FP64的第二部分时,固定阶码位移值为-14;使用非标准格式的FP16表示上述FP64的第三部分时,固定阶码位移值为-28;使用非标准格式的FP16表示上述FP64的第四部分时,固定阶码位移值为-42。可见,在表示第三部分和第四部分时,仅对应的固定阶码位移值就已经超出了FP16的阶码范围。因此,可以对每个非标准格式的FP16的阶码提取出其对应的固定阶码位移值。
那么,同样对于一个标准格式的FP64,可以表示为:
Figure BDA0002350848420000121
其中,A6为标准格式的FP64,EA6为A6的阶码,a15、a16、a17和a18为分解得到的四个非标准格式的FP16,S2为最小的固定阶码位移值,对于该标准格式的FP16来说,S2=-14。
步骤103、确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合。
在实施中,对于分解自不同第一精度浮点数的第二精度浮点数两两组合。下面以两个FP32分别分解得到多个FP16,两个FP64分别分解得到多个FP32,两个FP64分别分解得到多个FP16为例进行说明。
情况一、两个FP32,分别分解得到多个FP16。
一、两个标准格式的FP32,分别分解得到三个标准格式的FP16。其中,两个FP32分别为A1和B1,A1可以分解得到a0、a1和a2,B1可以分解为得到b0、b1和b2。则对于a0、a1、a2,以及b0、b1、b2之间,可以有如下组合:a0b0、a0b1、a1b0、a0b2、a1b1、a2b0、a1b2、a2b1和a2b2
二、两个标准格式的FP32分别分解得到两个上述非标准格式的FP16。其中,两个FP32分别为A2和B2,A2可以分解得到a3和a4,B2可以分解得到b3和b4。则对于a3、a4,以及b3、b4之间可以有如下组合:a3b3、a3b4、a4b3和a4b4
情况二、两个FP64,分别分解得到多个FP32。
一、两个标准格式的FP64分别分解得到三个标准格式的FP32。其中,两个FP64分别为A3和B3,A3可以分解得到a5、a6和a7,B3可以分解得到b5、b6和b7。则对于a5、a6、a7,以及b5、b6、b7之间,可以有如下组合:a5b5、a5b6、a6b5、a5b7、a6b6、a7b5、a6b7、a7b6和a7b7
二、两个标准格式的FP64分别分解得到两个上述非标准格式的FP32。其中,两个FP64分别为A4和B3,A4可以分解得到a8和a9,B4可以分解得到b8和b9。则对于a8、a9,以及b8、b9之间可以有如下组合:a8b8、a8b9、a9b8和a9b9
情况三、两个FP64,分别分解得到多个FP16。
一、两个标准格式的FP64分别分解得到五个标准格式的FP16。其中,两个FP64分别为A5和B5,A5可以分解得到a10、a11、a12、a13和a14,B5可以分解得到b10、b11、b12、b13和b14。则对于a10、a11、a12、a13、a14,以及,b10、b11、b12、b13、b14之间可以有a10b10、a10b11、a11b10、a10b12、a11b11、a12b10……a14b14等25种组合。此处组合方式与上述相同,在此不再一一列举。
二、两个标准格式的FP64分别分解得到四个上述非标准格式的FP16。其中,两个FP64分别为A6和B6,A6可以分解得到a15、a16、a17和a18,B6可以分解得到b15、b16、b17和b18。则对于a15、a16、a17、a18,以及b15、b16、b17、b18之间可以有a15b15、a15b16、a16b15……a18b18等16种组合。此处组合方式与上述相同,在此不再一一列举。
步骤104、将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果。
在实施中,对于上述得到的每种组合,输入到第二精度乘法器中进行计算,得到每种组合对应的中间计算结果。对于第二精度浮点数的不同,输出的中间计算结果的精度也不同。例如,第一精度浮点数为FP32,则中间计算结果为FP64;第一精度浮点数为FP16,则中间计算结果为FP32。对于第二精度乘法器的个数,可以与第二精度浮点数的组合数相同,也可以不同。
第二精度乘法器与第二精度浮点数的组合数相同的情况下。如图5所示,两个第一精度浮点数A和B,各自分解得到两个第二精度浮点数A1、A0和B1、B0。A1、A0、B1、B0可以得到四种组合,有四个第二精度乘法器,每种组合的第二精度浮点数输入一个第二精度乘法器,即每种组合对应一个第二精度浮点数。
第二精度乘法器与第二精度浮点数的组合数不同的情况下。如图6所示,两个第一精度浮点数A和B,各自分解得到两个第二精度浮点数A1、A0和B1、B0。A1、A0、B1、B0可以得到四种组合,只有一个第二精度乘法器,则可以将四种组合的第二精度浮点数依次输入第二精度乘法器。
步骤105、基于每种组合对应的中间计算结果,确定多个待计算的第一精度浮点数的计算结果。
在实施中,在对第一精度浮点数进行分解,得到第二精度浮点数时,还可以得到每个第二精度浮点数对应的阶码位移值。下面针对上述步骤102中分解待计算的第一精度浮点数的几种情况,对于第二精度浮点数对应的阶码位移值分别进行说明。
情况一、对于第一精度浮点数为FP32,第二精度浮点数为FP16的情况。
一、将一个FP32进行分解,得到三个FP16。
对于此种情况,FP32可以表示为:
Figure BDA0002350848420000131
则a0对应的阶码位移值为EA1,a1对应的阶码位移值为BA1-S1,a2对应的阶码位移值为EA1-2S1。或者,FP32还可以表示为:
Figure BDA0002350848420000132
则a0′、a1′和a2′对应的阶码位移值均为EA1-S1
二、将一个FP32进行分解,得到两个FP16。
对于此种情况,FP32可以表示为
Figure BDA0002350848420000133
则a3对应的阶码位移值为EA2,a4对应的阶码位移值均为EA2-S2。或者,FP32还可以表示为:
Figure BDA0002350848420000134
则a3′和a4′对应的阶码位移值均为EA2-S2
情况二、对于第一精度浮点数为FP64,第二精度浮点数为FP32的情况。
一、将一个FP64进行分解,得到三个FP32。
对于此种情况,FP64可以表示为
Figure BDA0002350848420000135
则a5、a6和a7对应的阶码位移值均为EA3
二、将一个FP64分解,得到两个FP32。
对于此种情况,FP64可以表示为
Figure BDA0002350848420000136
则a8和a9对应的阶码位移值均为EA4
情况三、对于第一精度浮点数为FP64,第二精度浮点数为FP16的情况,对于FP64分解得到多个FP16可以有如下情况:
一、将一个FP64进行分解,得到五个FP16。
对于此种情况,FP64可以表示为:
Figure BDA0002350848420000141
则a10对应的阶码位移值为EA5,a11对应的阶码位移值为EA5-S1,a12对应的阶码位移值为EA5-2S1,a13对应的阶码位移值为EA5-3S1,a14对应的阶码位移值为EA5-4S1
二、将一个FP64分解,得到4个FP16。
对于此情况,FP64可以表示为
Figure BDA0002350848420000142
则a15对应的阶码位移值为EA6,a16对应的阶码位移值为EA6-S2,a17对应的阶码位移值为EA6-2S2,a18对应的阶码位移值为EA6-3S2
相应的,对于每种组合对应的中间计算结果,可以分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果。然后,对调整后的中间计算结果进行累加得到计算结果。此处在累加时,可以将调整后的中间计算结果输入累加器,得到计算结果。
在调整中间计算结果的阶码时,可以将每种组合将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
在一种可能的实现方式中,可以对第二精度乘法器输出的第二精度中间计算结果的格式进行调整,以最后得到更高精度的计算结果。相应的处理可以如下:将每种组合第二精度浮点数输入第二精度乘法器中,得到每种组合第二精度浮点数对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合第二精度浮点数对应的第三精度中间计算结果,其中,第三精度中间计算结果的精度高于所述第一精度中间计算结果。分别基于每种组合第二精度浮点数对应的阶码位移值,调整每种组合第二精度浮点数对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果。将各组第二精度浮点数对应的调整后的第三精度中间计算结果进行求和运算,得到多个第一精度浮点数的第三精度计算结果。
在对第一精度计算结果进行格式转换时,可以对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合第二精度浮点数对应的第三精度中间计算结果。
例如,第一精度浮点数为FP32,第二精度浮点数为FP16,那么,第二精度乘法器输出的第一精度中间计算结果为也为FP32,可以对该第一精度中间计算结果的格式进行调整,调整为第三精度中间计算结果,该第三精度中间计算结果可以为FP64。即,将第一精度中间计算结果的阶码由8bit在末位补3个0,将阶码位数扩展为11bit,与FP64的阶码位数相同,对于第一精度中间计算结果的尾数由23bit在末位补29个0,将尾数位数扩展为52bit,与FP64的尾数位数相同。
然后,对第三精度中间计算结果的阶码进行调整后,将调整后的中间计算结果进行累加得到第三精度计算结果。同样的,此处在累加时,可以将调整后的中间计算结果输入累加器,得到计算结果。
此处,为了更好的体现本申请实施例的方案整体流程,以第一精度浮点数A,B的乘法计算为例进行说明。参照图9,为本申请实施例提供的一种浮点数乘法计算方法的流程示意图。
对A和B分别输入第一精度浮点数分解逻辑,以对A和B分别执行第一精度浮点数分解。得到A对应的第二精度浮点数A1和A0,以及A1和A0分别对应的阶码位移值;得到B对应的第二精度浮点数B1和B0,以及B1和B0分别对应的阶码位移值。其中,分解逻辑可以采用硬件的逻辑电路实现。具体的分解方法请参见步骤102。
然后,将分解自不同第一精度浮点数的第二精度浮点数进行组合,输入到第二精度乘法器中,得到每个组合对应的中间计算结果。具体的组合方法,请参见步骤103;具体的中间计算结果的计算方法,请参见步骤104。
再然后,对于每个组合对应的中间计算结果,执行阶码调整逻辑,使用该组合中的第二精度浮点数对应的阶码位移值,对其阶码进行调整,得到调整后的中间计算结果。具体步骤请参见步骤105下的调整方法,上述阶码调整可以由阶码调整逻辑电路执行。
最后,将每个组合对应的调整后的中间结算结果输入到累加器中,进行累加,即可得到最终的计算结果。具体步骤请参见步骤105下的方法描述,所述累加器为硬件累加器电路。
同样,为了更好的体现本申请实施例的方案整体流程,以第一精度浮点数A,B的乘法计算为例进行说明。参照图10,为对本申请实施例提供的又一种浮点数乘法计算方法的流程示意图。
对A和B分别输入第一精度浮点数分解逻辑,以对A和B分别执行第一精度浮点数分解。得到A对应的多个第二精度浮点数A3、A2、A1和A0,以及A3、A2、A1和A0分别对应的阶码位移值;得到B对应的多个第二精度浮点数B3、B2、B1和B0,以及B3、B2、B1和B0分别对应的阶码位移值。其中,分解逻辑可以采用硬件的逻辑电路实现。具体的分解方法请参见步骤102。
然后,将分解自不同第一精度浮点数的第二精度浮点数进行组合,输入到第二精度乘法器中,得到每个组合对应的第三精度中间计算结果。具体的组合方法,请参见步骤103;具体的中间计算结果的计算方法,请参见步骤104。
再然后,对于每个组合对应的第三精度中间计算结果,执行格式转换逻辑,将每个组合对应的第三精度中间计算结果的格式转换为第一精度中间计算结果。具体步骤请参见步骤105下的格式转换方法,上述格式转换可以由格式转换逻辑电路执行。
再然后,对于每个组合对应的第一精度中间计算结果,执行阶码调整逻辑,使用该组合中的第二精度浮点数对应的阶码位移值,对其阶码进行调整,得到调整后的第一精度中间计算结果。具体步骤请参见步骤105下的调整方法,上述阶码调整可以由阶码调整逻辑电路执行。
最后,将每个组合对应的调整后的第一精度中间结算结果输入到累加器中,进行累加,即可得到最终的第一精度计算结果。具体步骤请参见步骤105下的方法描述,所述累加器为硬件累加器电路。
同样,为了更好的体现本申请实施例的方案整体流程,以第一精度浮点数A,B的乘法计算为例进行说明。参照图11,为对本申请实施例提供的又一种浮点数乘法计算方法的流程示意图。
对A和B分别输入第一精度浮点数分解逻辑,以对A和B分别执行第一精度浮点数分解。得到A对应的多个第二精度浮点数A1和A0,以及A1和A0分别对应的阶码位移值;得到B对应的多个第二精度浮点数B1和B0,以及B1和B0分别对应的阶码位移值。其中,分解逻辑可以采用硬件的逻辑电路实现。具体的分解方法请参见步骤102。
然后,将分解自不同第一精度浮点数的第二精度浮点数进行组合,输入到第二精度乘法器中,得到每个组合对应的第第一精度中间计算结果。具体的组合方法,请参见步骤103;具体的中间计算结果的计算方法,请参见步骤104。
再然后,对于每个组合对应的第一精度中间计算结果,执行格式转换逻辑,将每个组合对应的第一精度中间计算结果的格式转换为第三精度中间计算结果。具体步骤请参见步骤105下的格式转换方法,上述格式转换可以由格式转换逻辑电路执行。
再然后,对于每个组合对应的第三精度中间计算结果,执行阶码调整逻辑,使用该组合中的第二精度浮点数对应的阶码位移值,对其阶码进行调整,得到调整后的第三精度中间计算结果。具体步骤请参见步骤105下的调整方法,上述阶码调整可以由阶码调整逻辑电路执行。
最后,将每个组合对应的调整后的第三精度中间结算结果输入到累加器中,进行累加,即可得到最终的第三精度计算结果。具体步骤请参见步骤105下的方法描述,所述累加器为硬件累加器电路。
另外,还需说明的是本申请实施例提供的浮点数计算方法可以实现精度高于或者等于第二精度的浮点数的计算。此处,第二精度指第二精度乘法器所支持计算的浮点数的精度。
例如,第二精度乘法器为半精度乘法器,即支持计算的浮点数精度为半精度,那么,本申请实施例可以实现对于半精度浮点数、单精度浮点数、双精度浮点数以及更高精度浮点数的计算。可以理解的是,对于半精度浮点数的计算,无需进行分解,只要将待计算的半精度浮点数输入半精度乘法器即可,而对于单精度浮点数以及更高精度浮点数的计算,则可以采用上述浮点数乘法计算的方法实现。
在本申请实施例中,对于精度较高的多个第一精度浮点数的计算,可以由精度较低的第二精度乘法器实现,而不必再使用第一精度乘法器。因此,可以实现在只有较低精度的第二精度乘法器的设备中,实现较高精度的第一精度浮点数的计算,而不必额外设计第一精度乘法器,有效的节省了计算资源。
基于相同的技术构思,本申请实施例还提供了一种浮点数乘法计算的装置,如图7所示,该装置包括:
获取模块710,用于获取多个待计算的第一精度浮点数,具体可以实现上述步骤201中的获取功能,以及其他隐含步骤;
分解模块720,用于对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度,具体可以实现上述步骤202中的分解功能,以及其他隐含步骤;
组合模块730,用于确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合,具体可以实现上述步骤203中的组合功能,以及其他隐含步骤;
输入模块740,用于将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果,具体可以实现上述步骤204中的输入功能,以及其他隐含步骤;
确定模块750,用于基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果,具体可以实现上述步骤205中的确定功能,以及其他隐含步骤。
在一种可能的实现方式中,所述分解模块720,还用于:
确定每个第二精度浮点数对应的阶码位移值;
所述确定模块750,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果;
将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果。
在一种可能的实现方式中,所述确定模块750,用于:
将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
在一种可能的实现方式中,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
在一种可能的实现方式中,所述输入模块740,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述确定模块750,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果;
将每种组合对应的调整后的第三精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第三精度计算结果。
在一种可能的实现方式中,所述输入模块740,用于:
对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合第二精度浮点数对应的第三精度中间计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述输入模块740,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第三精度中间计算结果,对每个第三精度中间计算结果进行格式转换得到每种组合对应的第一精度中间计算结果;
所述确定模块750,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第一精度中间计算结果的阶码,得到调整后的第一精度中间计算结果;
将各组第二精度浮点数对应的调整后的第一精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
需要说明的是,上述各模块可以由处理器实现,或者处理器配合存储器来实现,或者,处理器执行存储器中的程序指令来实现。
还需要说明的是,上述实施例提供的浮点数乘法计算的装置在计算浮点数时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的浮点数乘法计算的装置与浮点数乘法计算的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本申请实施例还提供了一种算术逻辑单元,所述算术逻辑单元为处理器中的硬件计算单元。如图12所示,该算术逻辑单元包括浮点数分解电路、第二精度乘法器、阶码调整电路和累加器,其中:
所述浮点数分解电路,用于将输入的每个待计算的第一精度浮点数分解为至少两个第二精度浮点数,并向所述阶码调整电路输出每个第二精度浮点数对应的阶码位移值,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;其中,多个第一精度浮点数可以依次输入浮点数分解电路进行分解计算,也可以由多个浮点数分解电路分别为一个第一精度浮点数提供分解计算。
所述第二精度乘法器,用于接收分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合,将每种组合中的第二精度浮点数进行乘法运算,向所述阶码调整电路输出每种组合对应的中间计算结果;
所述阶码调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的中间计算结果的阶码,向所述累加器输出调整后的中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的中间计算结果进行求和运算,输出所述多个第一精度浮点数的计算结果。
在一种可能的实现方式中,所述阶码调整调整电路,用于将输入的每种组合中的第二精度浮点数对应的阶码位移值,与输入的每种组合对应的中间计算结果的阶码相加,向所述累加器输出调整后的中间计算结果。
在一种可能的实现方式中,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,具体用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第一精度中间计算结果;
所述格式转换电路,用于将输入的每个第一精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第三精度中间计算结果的阶码,向所述累加器输出调整后的第三精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第三精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第三精度计算结果。
在一种可能的实现方式中,所述格式转换电路,用于:
将输入的每个第一精度中间计算结果的阶码和尾数分别进行补零处理,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果。
在一种可能的实现方式中,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第三精度中间计算结果;
所述格式转换电路,用于将输入的每个第三精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第一精度中间计算结果的阶码,向所述累加器输出调整后的第一精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第一精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第一精度计算结果。
在一种可能的实现方式中,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
在一种可能的实现方式中,所述算术逻辑单元还包括,计算模式切换电路,其中:
所述计算模式切换电路,用于在设置为第二精度浮点数计算模式时,将所述浮点数分解电路和所述阶码调整电路置为无效;
所述第二精度乘法器,用于接收所述算数逻辑单元外部的输入的多组待计算的第二精度浮点数,对每组第二精度浮点数进行乘法运算,输入每组待计算的第二精度浮点数对应的中间计算结果;
所累加器,用于将输入的每组待计算的第二精度浮点数对应的中间计算结果进行求和运算,输出所述多组待计算的第二精度浮点数的计算结果。
如图14所示,该算术逻辑单元还可以支持模式切换,即第一精度浮点数运算模式,以及第二精度浮点数运算模式。在第一精度浮点数运算模式下,即可以通过浮点数分解电路、第二精度乘法器、格式转换电路、阶码调整电路和累加器,实现第一精度浮点数的乘法运算。在第二精度浮点数运算模式下,即可以使浮点数分解电路、格式转换电路和阶码调整电路无效,而只使用第二精度乘法器和累加器。将多组待计算的第二精度浮点数直接输入到第二精度乘法器中,输出多组待计算的第二精度浮点数分别对应的中间计算结果,再将输入累加器,进行累加运算,得到多组待计算的第二精度浮点数对应的计算结果。
此处需要说明的是,上述实施例提供的逻辑运算单元与浮点数乘法计算的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
参见图8,本申请实施例提供了一种电子设备。该电子设备800包括至少一个处理器801,总线系统802,存储器803。
上述处理器801可以是一个通用中央处理器(central processing unit,CPU),网络处理器(network processor,NP),图形处理器(graphics processing unit)微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
上述总线系统802可包括一通路,在上述组件之间传送信息。
上述存储器803可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器803用于存储执行本申请方案的应用程序代码,并由处理器801来控制执行。处理器801用于执行存储器803中存储的应用程序代码,从而实现本申请提出的浮点数计算方法。
在具体实现中,作为一种实施例,处理器801可以包括一个或多个CPU。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的计算机可读存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (26)

1.一种处理器中的算术逻辑单元,其特征在于,所述算术逻辑单元包括浮点数分解电路、第二精度乘法器、阶码调整电路和累加器,其中:
所述浮点数分解电路,用于将输入的每个待计算的第一精度浮点数分解为至少两个第二精度浮点数,并向所述阶码调整电路输出每个第二精度浮点数对应的阶码位移值,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
所述第二精度乘法器,用于接收分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合,将每种组合中的第二精度浮点数进行乘法运算,向所述阶码调整电路输出每种组合对应的中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的中间计算结果的阶码,向所述累加器输出调整后的中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的中间计算结果进行求和运算,输出所述多个第一精度浮点数的计算结果。
2.根据权利要求1所述的算术逻辑单元,其特征在于,所述阶码调整调整电路,用于将输入的每种组合中的第二精度浮点数对应的阶码位移值,与输入的每种组合对应的中间计算结果的阶码相加,向所述累加器输出调整后的中间计算结果。
3.根据权利要求1所述的算术逻辑单元,其特征在于,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
4.根据权利要求3所述的算术逻辑单元,其特征在于,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第一精度计算结果为单精度计算结果,所述第二精度乘法器为半精度乘法器;或者,
所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为单精度浮点数,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为单精度乘法器。
5.根据权利要求1所述的算术逻辑单元,其特征在于,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,具体用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第一精度中间计算结果;
所述格式转换电路,用于将输入的每个第一精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第三精度中间计算结果的阶码,向所述累加器输出调整后的第三精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第三精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第三精度计算结果。
6.根据权利要求5所述的算术逻辑单元,其特征在于,所述格式转换电路,用于:
将输入的每个第一精度中间计算结果的阶码和尾数分别进行补零处理,向所述阶码调整电路输出每种组合对应的第三精度中间计算结果。
7.根据权利要求5或6所述算术逻辑单元,其特征在于,所述第一精度浮点数为单精度浮点数,所述第二精度浮点数为半精度浮点数,所述第一精度中间计算结果为单精度中间计算结果,所述第三精度中间计算结果为双精度中间计算结果,所述第三精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
8.根据权利要求1所述的算术逻辑单元,其特征在于,所述算术逻辑单元还包括格式转换电路;
所述第二精度乘法器,用于将每种组合中的第二精度浮点数进行乘法运算,向所述格式转换电路输出每种组合对应的第三精度中间计算结果;
所述格式转换电路,用于将输入的每个第三精度中间计算结果进行格式转换,向所述阶码调整电路输出每种组合对应的第一精度中间计算结果;
所述阶码调整调整电路,用于基于输入的每种组合中的第二精度浮点数对应的阶码位移值,调整输入的每种组合对应的第一精度中间计算结果的阶码,向所述累加器输出调整后的第一精度中间计算结果;
所述累加器,用于将输入的每种组合对应的调整后的第一精度中间计算结果进行求和运算,输出所述多个第一精度浮点数的第一精度计算结果。
9.根据权利要求8所述的算术逻辑单元,其特征在于,所述第一精度浮点数为双精度浮点数,所述第二精度浮点数为半精度浮点数,所述第三精度中间计算结果为单精度中间计算结果,所述第一精度中间计算结果为双精度中间计算结果,所述第一精度计算结果为双精度计算结果,所述第二精度乘法器为半精度乘法器。
10.根据权利要求1-9中任一项所述的算术逻辑单元,其特征在于,所述算术逻辑单元还包括,计算模式切换电路,其中:
所述计算模式切换电路,用于在设置为第二精度浮点数计算模式时,将所述浮点数分解电路和所述阶码调整电路置为无效;
所述第二精度乘法器,用于接收所述算数逻辑单元外部的输入的多组待计算的第二精度浮点数,对每组第二精度浮点数进行乘法运算,输入每组待计算的第二精度浮点数对应的中间计算结果;
所累加器,用于将输入的每组待计算的第二精度浮点数对应的中间计算结果进行求和运算,输出所述多组待计算的第二精度浮点数的计算结果。
11.一种浮点数乘法计算的方法,其特征在于,所述方法包括:
获取多个待计算的第一精度浮点数;
对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合;
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果;
基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果。
12.根据权利要求11所述的方法,其特征在于,所述对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,之后还包括:
确定每个第二精度浮点数对应的阶码位移值;
所述基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果;
将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果。
13.根据权利要求12所述的方法,其特征在于,所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
14.根据权利要求11所述的方法,其特征在于,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
15.根据权利要求12所述的方法,其特征在于,
所述将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果,包括:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果;
所述将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果,包括:
将每种组合对应的调整后的第三精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第三精度计算结果。
16.根据权利要求15所述的方法,其特征在于,所述对每个第一精度中间结果进行格式转换得到每种组合对应的第三精度中间计算结果,包括:
对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合第二精度浮点数对应的第三精度中间计算结果。
17.根据权利要求12所述的方法,其特征在于,所述将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果,包括:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第三精度中间计算结果,对每个第三精度中间计算结果进行格式转换得到每种组合对应的第一精度中间计算结果;
所述分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果,包括:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第一精度中间计算结果的阶码,得到调整后的第一精度中间计算结果;
所述将各组第二精度浮点数对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果,包括:
将各组第二精度浮点数对应的调整后的第一精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第一精度计算结果。
18.一种浮点数乘法计算的装置,其特征在于,所述装置包括:
获取模块,用于获取多个待计算的第一精度浮点数;
分解模块,用于对每个待计算的第一精度浮点数进行分解,得到至少两个第二精度浮点数,其中,所述第二精度浮点数的精度低于所述第一精度浮点数的精度;
组合模块,用于确定各种由分解自不同的第一精度浮点数的两个第二精度浮点数组成的组合;
输入模块,用于将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的中间计算结果;
确定模块,用于基于每种组合对应的中间计算结果,确定所述多个待计算的第一精度浮点数的计算结果。
19.根据权利要求18所述的装置,其特征在于,所述分解模块,还用于:
确定每个第二精度浮点数对应的阶码位移值;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的中间计算结果的阶码,得到调整后的中间计算结果;
将每种组合对应的调整后的中间计算结果进行求和运算,得到所述多个第一精度浮点数的计算结果。
20.根据权利要求19所述的装置,其特征在于,所述确定模块,用于:
将每种组合的第二精度浮点数对应的中间计算结果的阶码,加上每种组合的第二精度浮点数对应的阶码位移值,得到调整后的中间计算结果。
21.根据权利要求18所述的装置,其特征在于,所述中间计算结果为第一精度中间计算结果,所述计算结果为第一精度计算结果。
22.根据权利要求19所述的装置,其特征在于,所述输入模块,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第一精度中间计算结果,对每个第一精度中间计算结果进行格式转换得到每种组合对应的第三精度中间计算结果,其中,所述第三精度中间计算结果的精度高于所述第一精度中间计算结果;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第三精度中间计算结果的阶码,得到调整后的第三精度中间计算结果;
将每种组合对应的调整后的第三精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第三精度计算结果。
23.根据权利要求22所述的装置,其特征在于,所述输入模块,用于:
对每个第一精度中间结果的阶码和尾数分别进行补零处理,得到每种组合对应的第三精度中间计算结果。
24.根据权利要求19所述的装置,其特征在于,所述输入模块,用于:
将每种组合中的第二精度浮点数输入第二精度乘法器中,得到每种组合对应的第三精度中间计算结果,对每个第三精度中间计算结果进行格式转换得到每种组合对应的第一精度中间计算结果;
所述确定模块,用于:
分别基于每种组合中的第二精度浮点数对应的阶码位移值,调整每种组合对应的第一精度中间计算结果的阶码,得到调整后的第一精度中间计算结果;
将各组第二精度浮点数对应的调整后的第一精度中间计算结果进行求和运算,得到所述多个第一精度浮点数的第一精度计算结果。
25.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求11至权利要求17任一项所述的浮点数乘法计算的方法所执行的操作。
26.一种处理器,其特征在于,所述处理器包括如权利要求1-10的算术逻辑单元。
CN201911414534.8A 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元 Active CN113126954B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN202310511127.9A CN116594589B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元
CN201911414534.8A CN113126954B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元
PCT/CN2020/140768 WO2021136259A1 (zh) 2019-12-31 2020-12-29 浮点数乘法计算的方法、装置和算术逻辑单元
JP2022539150A JP7407291B2 (ja) 2019-12-31 2020-12-29 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置
EP20909798.9A EP4064036A4 (en) 2019-12-31 2020-12-29 METHOD AND DEVICE FOR THE MULTIPLICATION CALCULATION OF FLOATING-POINT NUMBERS AND ARITHMETIC LOGIC UNIT
BR112022012566A BR112022012566A2 (pt) 2019-12-31 2020-12-29 Método e aparelho de computação de multiplicação de número de ponto flutuante, e unidade lógica aritmética
US17/855,555 US20220334798A1 (en) 2019-12-31 2022-06-30 Floating-point number multiplication computation method and apparatus, and arithmetic logic unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911414534.8A CN113126954B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310511127.9A Division CN116594589B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元

Publications (2)

Publication Number Publication Date
CN113126954A true CN113126954A (zh) 2021-07-16
CN113126954B CN113126954B (zh) 2024-04-09

Family

ID=76686545

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310511127.9A Active CN116594589B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元
CN201911414534.8A Active CN113126954B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202310511127.9A Active CN116594589B (zh) 2019-12-31 2019-12-31 浮点数乘法计算的方法、装置和算术逻辑单元

Country Status (6)

Country Link
US (1) US20220334798A1 (zh)
EP (1) EP4064036A4 (zh)
JP (1) JP7407291B2 (zh)
CN (2) CN116594589B (zh)
BR (1) BR112022012566A2 (zh)
WO (1) WO2021136259A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700664A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 一种确定浮点数平方根的方法及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200218508A1 (en) * 2020-03-13 2020-07-09 Intel Corporation Floating-point decomposition circuitry with dynamic precision
US20230004523A1 (en) * 2021-06-30 2023-01-05 Amazon Technologies, Inc. Systolic array with input reduction to multiple reduced inputs

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224283A (zh) * 2015-09-29 2016-01-06 北京奇艺世纪科技有限公司 一种浮点数处理方法及装置
CN105224284A (zh) * 2015-09-29 2016-01-06 北京奇艺世纪科技有限公司 一种浮点数处理方法及装置
CN108196822A (zh) * 2017-12-24 2018-06-22 北京卫星信息工程研究所 一种双精度浮点开方运算的方法及系统
US20190042244A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
US20190325301A1 (en) * 2018-04-19 2019-10-24 International Business Machines Corporation Deep learning accelerator architecture with chunking gemm

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3845009B2 (ja) 2001-12-28 2006-11-15 富士通株式会社 積和演算装置、及び積和演算方法
US6910059B2 (en) * 2002-07-09 2005-06-21 Silicon Integrated Systems Corp. Apparatus and method for calculating an exponential calculating result of a floating-point number
TWI235948B (en) * 2004-02-11 2005-07-11 Via Tech Inc Accumulatively adding device and method
US7725519B2 (en) 2005-10-05 2010-05-25 Qualcom Incorporated Floating-point processor with selectable subprecision
US8412760B2 (en) 2008-07-22 2013-04-02 International Business Machines Corporation Dynamic range adjusting floating point execution unit
CN101685383A (zh) * 2008-09-28 2010-03-31 杨高祥 计算器、基于直接对阶的自由精度浮点数的运算电路
CN101770355B (zh) * 2009-12-30 2011-11-16 龙芯中科技术有限公司 兼容双精度和双单精度的浮点乘加器及其兼容处理方法
CN103809931A (zh) * 2012-11-06 2014-05-21 西安元朔科技有限公司 一种专用高速浮点指数运算器的设计
CN106126189B (zh) 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 微处理器中的方法
CN105094744B (zh) * 2015-07-28 2018-01-16 成都腾悦科技有限公司 一种可变浮点数据微处理器
CN105634499B (zh) * 2015-12-30 2020-12-01 广东工业大学 一种基于新短浮点型数据的数据转换方法
CN107273090B (zh) * 2017-05-05 2020-07-31 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN107291419B (zh) * 2017-05-05 2020-07-31 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法
CN109284827A (zh) * 2017-07-19 2019-01-29 阿里巴巴集团控股有限公司 神经网络计算方法、设备、处理器及计算机可读存储介质
US10691413B2 (en) * 2018-05-04 2020-06-23 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors
CN109901813B (zh) * 2019-03-27 2023-07-07 北京市合芯数字科技有限公司 一种浮点运算装置及方法
US11169776B2 (en) * 2019-06-28 2021-11-09 Intel Corporation Decomposed floating point multiplication
CN110515584A (zh) * 2019-08-09 2019-11-29 苏州浪潮智能科技有限公司 浮点计算方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224283A (zh) * 2015-09-29 2016-01-06 北京奇艺世纪科技有限公司 一种浮点数处理方法及装置
CN105224284A (zh) * 2015-09-29 2016-01-06 北京奇艺世纪科技有限公司 一种浮点数处理方法及装置
CN108196822A (zh) * 2017-12-24 2018-06-22 北京卫星信息工程研究所 一种双精度浮点开方运算的方法及系统
US20190325301A1 (en) * 2018-04-19 2019-10-24 International Business Machines Corporation Deep learning accelerator architecture with chunking gemm
US20190042244A1 (en) * 2018-09-27 2019-02-07 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116700664A (zh) * 2022-02-24 2023-09-05 象帝先计算技术(重庆)有限公司 一种确定浮点数平方根的方法及装置

Also Published As

Publication number Publication date
CN116594589A (zh) 2023-08-15
CN116594589B (zh) 2024-03-26
WO2021136259A1 (zh) 2021-07-08
EP4064036A1 (en) 2022-09-28
BR112022012566A2 (pt) 2022-09-06
EP4064036A4 (en) 2023-06-07
JP7407291B2 (ja) 2023-12-28
US20220334798A1 (en) 2022-10-20
JP2023509121A (ja) 2023-03-07
CN113126954B (zh) 2024-04-09

Similar Documents

Publication Publication Date Title
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US20230108799A1 (en) Chip, terminal, floating-point operation control method, and related apparatus
WO2021136259A1 (zh) 浮点数乘法计算的方法、装置和算术逻辑单元
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
CN107305484B (zh) 一种非线性函数运算装置及方法
JP2835153B2 (ja) 高基数除算器
US8751555B2 (en) Rounding unit for decimal floating-point division
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
CN112241291A (zh) 用于指数函数实施的浮点单元
KR20170138143A (ko) 단일 곱셈-누산 방법 및 장치
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
JP4273071B2 (ja) 除算・開平演算器
US20190171419A1 (en) Arithmetic processing device and control method of arithmetic processing device
JP2001222410A (ja) 除算器
CN115827555B (zh) 数据处理方法、计算机设备、存储介质和乘法器结构
US8180822B2 (en) Method and system for processing the booth encoding 33RD term
US20050010632A1 (en) Digital signal processor based on jumping floating-point arithmetic
CN117908833B (zh) Mcu高位数整型除法器的加速方法及装置
CN117785113B (zh) 计算装置及方法、电子设备和存储介质
JPS61262925A (ja) 演算回路
JP3137131B2 (ja) 浮動小数点乗算器及び乗算方法
JP2000010763A (ja) 除算回路
JP2002318792A (ja) データ演算処理装置及びデータ演算処理プログラム
CN114327360A (zh) 运算单元、浮点数计算的方法、装置、芯片和计算设备
CN116888575A (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