CN116627379A - 可重构的支持多精度浮点或定点运算的方法及系统 - Google Patents

可重构的支持多精度浮点或定点运算的方法及系统 Download PDF

Info

Publication number
CN116627379A
CN116627379A CN202310585437.5A CN202310585437A CN116627379A CN 116627379 A CN116627379 A CN 116627379A CN 202310585437 A CN202310585437 A CN 202310585437A CN 116627379 A CN116627379 A CN 116627379A
Authority
CN
China
Prior art keywords
precision
operand
floating point
bit
input
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.)
Pending
Application number
CN202310585437.5A
Other languages
English (en)
Inventor
景乃锋
何静怡
张子涵
蒋剑飞
王琴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202310585437.5A priority Critical patent/CN116627379A/zh
Publication of CN116627379A publication Critical patent/CN116627379A/zh
Pending legal-status Critical Current

Links

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/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
    • 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)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供了一种可重构的支持多精度浮点或定点运算的方法及系统,能够完成多路并行的浮点或定点低精度运算,也可以整体实现一个高精度的浮点或定点运算。相比于现阶段已经提出的运算单元,本发明面向神经网络中的训练和推断、已经多种数据密集型应用的多精度、多规格的计算需求,在粗粒度可重构阵列的数据位宽首先得前提下,设计支持多精度及混合精度定/浮点操作的高能效、低延迟、低面积开销运算单元;统一浮点与定点数据通路,以更小的资源开销同时支持更多样化的计算模式,避免了在处理单元中独立放置浮点和定点计算引擎后,面向不同计算需求时资源浪费的问题,大幅提升可重构阵列的混合精度运算性能。

Description

可重构的支持多精度浮点或定点运算的方法及系统
技术领域
本发明涉及运算单元设计的技术领域,具体地,涉及可重构的支持多精度浮点或定点运算的方法及系统,尤其涉及支持可重构阵列面向神经网络训练的混合精度浮点/定点运算单元。
背景技术
粗粒度可重构架构(Coarse-Grained Reconfigurable Array,CGRA)由一个通过二维网格连接的可重构计算阵列组成,它具有接近专用集成电路的能效和性能,以及比其更广泛的可编程性。粗粒度可重构架构适用于对功耗和灵活性都有更高要求的领域,它能在数据中心、云服务器和机器人更有效地替代FPGA。移动端和物联网场景也是CGRA的有前途的领域,因为这些场景对包括人工智能、信号和图像处理以及安全在内的广泛应用的功耗和功能更新有严格的要求。其中对于人工智能领域而言,低精度定点数经常用于深度神经网络推理,如4位/8位/16位定点数据。浮点数通常用于神经网络训练,大部分深度学习训练采用单精度或半精度浮点数。由此,目前的重构阵列中仅支持不同精度的定点计算的单元设计,还不足以应对神经网络多样化的计算需求。
此外,混合精度乘加操作最近也越来越流行,在深度学习应用中,当计算输出特征图时,需要大量的累加操作,其中舍入误差也被累加,而混合精度乘累加不仅能提升运算效率,更能减少累加的舍入误差。因此,为了在粗粒度可重构阵列中支持神经网络多精度浮点运算和混合精度运算的特性,也支持通用计算密集型应用高精度的定点计算规格,可重构阵列必须在运算单元的设计上支持多精度的定点或浮点运算的运算单元。
近年来,为了在单个架构中有效地支持不同应用需要的多精度的浮点操作,研究人员提出了一些通过高精度拆分(High Preci sion Split,HPS)和低精度组合(LowPrecis ion Combined,LPC)方法实现的可配置浮点FMA设计。这些FMA设计不仅支持双精度操作和单精度操作,还支持四倍精度操作以支持科学计算。此外,16位半精度FMA也被广泛研究和应用于多款中央处理器和图像处理器中,如Intel Knights Mi ll和NVIDIA TeslaP100。
然而不论是高精度拆分,还是低精度组合,在执行较低精度的浮点操作时,都只用到了乘法阵列的低位部分,乘法阵列总是会有超过一半处于空闲状态。毛伟等人针对多精度乘法器利用率低的问题,提出通过增大输入带宽充分利用每个低精度组合乘法器设计,支持多达16组半精度浮点数乘加、4组单精度浮点数乘加和1组双精度浮点数乘加。然而对于数据流驱动型的粗粒度可重构架构而言,整体的数据流位宽是一致的,因此数据位宽设计为256-bit。但在双精度计算模式时,运算单元只能用到带宽的1/4,导致低精度运算时的最大带宽需求与高精度运算时的吞吐率难以权衡。此外,它也不支持混合精度运算,16组乘积同时移位相加带来了更大的移位器和加法树开销的同时,也对舍入精度造成一定损失。
现有技术中提出了一种混合精度浮点融合乘加单元,将多个单精度乘积与双精度加数相加得到双精度计算结果,即融合乘-乘累加运算(Fused Mult iply Multiply-Accumulate,FMMA)。与普通的多精度浮点融合乘加单元相比,混合精度浮点融合乘加单元为了支持高精度加和,其加法数据路径更宽而消耗更多的硬件。但用于更高精度加数的加法数据路径本身可以被高精度乘加操作复用,同时更宽的加法路径也带来了更准确的舍入精度。随着对混合精度训练的支持,越来越多的混合精度乘加结构被提出,从半精度到四倍精度,研究人员利用高精度拆分的方式用较低的硬件开销实现了对多种混合精度运算支持。
相较于多精度和混合精度浮点融合乘加设计而言,目前对于结合定点和浮点运算的乘加单元研究较少。目前,大部分粗粒度可重构架构仍采用浮点和定点解耦合的数据路径。现有技术设计了面向深度学习的低精度AI芯片,其训练引擎能够支持FP16乘加以及FP8与FP16混合精度FMMA,而推理引擎可以进行4位或2位定点乘法与16位定点加数相累加。利用时钟门控技术关断其中一条通路从而最大化节省功耗,但这种方式带来了额外的面积开销。
Hao Zhang、Dongdong Chen等人提出了能够灵活支持不同位宽的阶码和尾数的多精度乘累加单元设计,其对于16位半精度浮点数可支持1~8位阶码,对于8位浮点数可支持1~6位阶码,同时支持定点4位、8位和16位的混合精度点积运算。然而其数据位宽仅为16比特,只面向神经网络推理和训练,通用性受限。
因此,需要提出一种新的技术方案以改善上述技术问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种可重构的支持多精度浮点或定点运算的方法及系统。
根据本发明提供的一种可重构的支持多精度浮点或定点运算的方法,所述方法包括如下步骤:
步骤S1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;
步骤S2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;
步骤S3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;
步骤S4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
优选地,所述步骤S1中的操作数A、B、C为32位。
优选地,所述步骤S1中:输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
优选地,所述步骤S2中:Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
优选地,所述步骤S3中:头零预测单元并行计算前导零个数并输出规格化移位位数。
本发明还提供一种可重构的支持多精度浮点或定点运算的系统,所述系统包括如下模块:
模块M1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;
模块M2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;
模块M3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;
模块M4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
优选地,所述模块M1中的操作数A、B、C为32位。
优选地,所述模块M1中:输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
优选地,所述模块M2中:Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
优选地,所述模块M3中:头零预测单元并行计算前导零个数并输出规格化移位位数。
与现有技术相比,本发明具有如下的有益效果:
1、本发明运算单元通过灵活地组合低精度乘法器排布,最大限度地利用了单精度浮点运算单元中原有的乘法器资源;
2、本发明设计多段式Booth编码器,灵活控制每比特部分积的产生,从而精简整体的压缩树结构;
3、本发明将半精度浮点数加法所需的移位器和混合精度定点加法所需的部分和权重偏移相结合,大幅减少了支持定点运算所需的额外移位资源;由此,相对于采用多个独立的运算单元支持多精度数据运算,本发明可以将总的面积开销节省约40%;
4、本发明解决了由于需要支持多种运算精度导致的运算单元面积大能耗高等问题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明运算单元整体架构图;
图2为本发明不同运算模式对应的数据格式图;
图3为本发明单精度浮点乘加计算时的乘法器分配图;
图4为本发明半精度浮点点积计算时的乘法器分配图;
图5为本发明32位定点乘加计算时的乘法器分配图;
图6为本发明16位定点点积计算时的乘法器分配图;
图7为本发明8位定点点积计算时的乘法器分配图;
图8为本发明乘加运算的数据通路图;
图9为本发明M1多段式booth编码器图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
根据本发明提供的一种可重构的支持多精度浮点或定点运算的方法,所述方法包括如下步骤:
步骤S1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;操作数A、B、C为32位;输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
步骤S2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
步骤S3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;头零预测单元并行计算前导零个数并输出规格化移位位数。
步骤S4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
本发明还提供一种可重构的支持多精度浮点或定点运算的系统,所述可重构的支持多精度浮点或定点运算的系统可以通过执行所述可重构的支持多精度浮点或定点运算的方法的流程步骤予以实现,即本领域技术人员可以将所述可重构的支持多精度浮点或定点运算的方法理解为所述可重构的支持多精度浮点或定点运算的系统的优选实施方式。
实施例2:
本发明还提供一种可重构的支持多精度浮点或定点运算的系统,所述系统包括如下模块:
模块M1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;操作数A、B、C为32位;输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
模块M2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
模块M3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;头零预测单元并行计算前导零个数并输出规格化移位位数。
模块M4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
实施例3:
传统粗粒度可重构阵列的计算单元的计算位宽始终维持一致,而面向通用计算密集型应用的可重构阵列,既要需要满足神经网络应用的低精度高并行度定点运算和混合精度浮点运算需求,又要面向FFT、MIMO、矩阵分解等应用中不同规格的高精度定点运算。然而,32位高精度定点乘加运算需要巨大的乘法资源开销,远超单精度浮点运算所需的24位定点乘法。综上所述,设计者需要在充分考虑多种不同需求的情况下,从计算精度、资源利用效率和系统性能等方面进行全面平衡,以优化可重构阵列的运算单元。
为了满足可重构架构面向的多重应用需求,本发明提出了一种支持多精度及混合精度的高能效、低延迟、低面积开销的运算单元,不仅支持单精度浮点乘加和2路并行的半精度浮点混合精度运算,更支持32位定点运算以及2路并行的16位或4路并行的8位定点混合精度运算。与传统采用独立的浮点与定点运算单元相比,本发明大幅提升了计算能效,缩减了运算单元面积开销。
目前多精度运算单元设计大都针对高性能计算提出,并且不支持定点运算或是只支持低精度定点运算,其运算单元的功能受限。另一方面,运算单元内部存在乘法资源利用率低、带宽需求不平衡、面积开销过大等问题。为了进一步提升运算单元的通用性并解决硬件资源开销大的问题,本发明结合定点与浮点运算的共性,在进行不同数据格式的运算时复用其中相同的数据通路,设计了具有高灵活性的乘法器组织和数据通路。运算单元通过组合不同大小的低精度乘法器并进行数据流拼接,不仅能够支持32位定点乘加运算,还能最大限度地利用乘加资源,减少面积开销。
运算单元的具体架构如图1所示,内部有四级流水线,其中最后一级流水线专为浮点操作设计,定点操作跳过第三级流水线,与普通定点多精度运算单元具有相同的计算延时。它可以支持有符号的加、减、乘、乘加等算术运算,以及比较、定点数移位等逻辑运算。运算单元有对应的配置寄存器,其中包含运算符和运算精度的配置信息。根据具体的配置,运算模块工作在对应的精度模式,同时多路选择器选择对应的运算结果作为运算单元的输出。其具体细节如下:
1.输入数据预处理
输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式如图2所示。在进行加/减运算时,它将操作数B置为1.0或1,将输入B赋给操作数C,从而利用乘加的计算通路完成加/减运算。对于多精度数据,它根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算。此外,对于浮点操作,输入处理模块会根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1,以近似的方式来避免复杂的非规格化数处理。
2.指数比较
操作数的指数处理是为了得到对阶及规格化移位时的移位量并产生相应的控制信号。在进行定点运算时,操作数不需要对阶移位,因此指数处理单元不工作,仅输出定点移位量34和移位使能信号给移位器。在计算两路半精度操作数乘加时,指数处理单元首先计算A1、B1指数和以及A2、B2指数和,再计算两指数和的差值,产生两个乘法结果的对阶移位量exp_diff输出给乘法阵列。之后再计算较大的指数和与单精度操作数C的指数之间的差值,产生操作数C的移位量alignNum输出给移位模块。而计算单精度数时,只计算A和B的指数和,再计算alignNum。
3.乘法阵列设计
尾数乘法模块内部有4个低精度乘法器,分别是16bit×24bit的M1、16bit×8bit的M2、8bit×8bit的M3以及8bit×8bit的M4,本发明通过不同的组合方式将低精度乘法器组合成高精度乘法单元,从而完成多精度定点和浮点运算。首先输入处理模块输出4对操作数A1~A4和B1~B4,分别输入各个乘法器内部进行计算。之后M2~M4根据不同计算模式加和成一个乘法结果,再经过移位之后和M1相加。
乘加运算的具体数据通路如图8所示,首先4对操作数经过M1~M4的多段式booth编码器得到编码后的部分积。其中,多段式booth编码器根据配置字precision和fp/int,产生相应的部分积。以M1的booth编码器为例,如图9所示,当计算单精度浮点或32位定点时,部分积为25位;而计算半精度浮点时,有效的部分积为25位中的高12位;而计算8位定点时有效的部分积为25位中的低9位。四组部分积再经过压缩树得到四个进位保留形式的半加和,为了避免逻辑深度太大,在压缩树之后划分一级流水线。在计算半精度点积时,将指数较大的乘积换到右边通路,并进行左移。先经过一级4:2压缩器,将两对半加和压缩为一对,之后和移位后的C操作数相加,并附上粘滞位,得到最终的74位sum和carry。
4.定点流水旁路
为避免定点操作和浮点操作同样经过4级流水线得到运算结果,将浮点专用的操作如取补码、规格化移位、指数调整和舍入等等都划分在第四级流水线中进行。运算单元根据配置字fp/int在第二级进位选择加法器输出的32位加法结果和第三级输出处理中经舍入后的浮点结果中选择其一作为最终结果Rst输出。
评估方法:采用28nm工艺库进行综合本发明设计,工作频率限制为1GHz,并用同样的工艺库和约束条件分别综合单精度浮点运算单元、半精度浮点运算单元以及混合精度定点运算单元,均满足时序要求,无时序违例发生。将本发明运算单元与其他单元的综合结果相对比,其中混合精度定点运算单元为支持1路32位定点乘加运算(截低位)或2路16位定点乘加运算或4路8位定点乘加运算,面积和功耗结果对比如下表所示:
相比于单精度浮点运算单元,本发明运算单元在增加了40%的面积和43%的功耗情况下,支持多种精度定点运算与混合精度的浮点运算。若采用独立的运算单元要同时支持单精度浮点、2路半精度浮点混合运算以及混合精度定点运算,则一共需要的面积约为17547um2,会带来巨大的面积和功耗开销。
本发明运算单元通过1)灵活地组合低精度乘法器排布,最大限度地利用了单精度浮点运算单元中原有的乘法器资源;2)设计多段式Booth编码器,灵活控制每比特部分积的产生,从而精简整体的压缩树结构;3)将半精度浮点数加法所需的移位器和混合精度定点加法所需的部分和权重偏移相结合,大幅减少了支持定点运算所需的额外移位资源。由此,相对于采用多个独立的运算单元支持多精度数据运算,本发明可以将总的面积开销节省约40%。
本发明提出的运算单元的运算过程主要包括如下四个步骤:
步骤一:三个32位的操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算。
步骤二:乘法阵列M1~M4分别输入4对操作数MulA1~MulA4、MulB1~MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树。Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA(Carry Save Adder)形式的半加和,交换较小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
计算单精度乘加时,M3不工作,由M1、M2和M4计算出完整的48bit乘积。首先,M1计算1.MA×1.MB[23:7],乘法结果的权重为8。M2计算1.MA[15:0]×1.MB[7:0],权重为0。M4计算1.MA[23:16]×1.MB[7:0],权重为16。将三个部分积按各自权重移位相加,如图3右半部分所示。相应地,指数比较模块输出移位量16,将M2与M4计算结果的和左移16位后与M1计算结果相加,即得到完整的48bit乘积结果。
计算半精度乘加时,M1计算1.MA1×1.MB1,M2~M4计算1.MA2×1.MB2,将M2~M4的计算结果按图4所示相加后,由指数比较模块计算出两乘积的指数差,将指数较大的乘积左移至多26位后(图4中假设此时较小乘积为1.MA2×1.MB2),与指数较小的乘积相加。M1在计算半精度乘法时,需要将22bit乘法结果置于40bit输出结果的高22位,以节省额外的移位操作。
计算32位定点乘法时,为实现截取低32位计算结果的功能,并不需要完整的32bit×32bit,而是可以将乘法结果权重高于32的部分省去,仅计算权重小于32的部分。因此,由M1计算A的低24位乘以B的低16位,权重为0,计算结果为40bit。M2计算A的低16位乘以B的第23位到第16位,权重为16。M3和M4各自计算高8位操作数乘以另一操作数的低8位,权重为24,计算结果为16位。最后将各个部分积按照图5右半部分相加,得到完整的低32位乘法结果。之后在与C相加时,C左移34位即可,最终截取74位输出中的第39位到第8位。
16位定点点积计算与半精度点积计算过程类似,M1计算其中一对操作数的乘积,M2~M4计算另一对操作数的乘积,如图6右半部分所示将各个部分积相加。
计算8位定点点积时,4个乘法器分别计算4对操作数的乘积,每个乘法器的计算结果权重都为0,因此各个乘积按图7右半部分所示相加。
步骤三:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果。同时头零预测单元并行计算前导零个数并输出规格化移位位数。
步骤四:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元。后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
经由上述的步骤,即可通过该发明的运算单元完成半精度或单精度浮点运算,以及32位定点或2路16位定点或4路8位定点点积运算。对于可重构阵列,可以将其部署到处理单元中进行运算。
可重构的支持多精度浮点或定点运算的运算单元设计,包括:设计可重构的支持多精度浮点或定点运算的运算单元架构,包括输入预处理单元、指数比较单元、乘法阵列、交换移位单元、操作数C移位单元、压缩树、进位选择加法器、补码生成单元、头零预测单元、规格化移位单元以及后处理单元,及这些单元间的连接形式、流水线划分以及数据通路设计。
根据不同数据格式所需的计算需求设计低精度组合乘法器,精细控制每比特部分积生成,解决多精度和混合精度运算单元面积大、利用率低、功耗高的问题。
输入预处理单元根据配置信息拆分输入数据并生成相应的控制信号和乘法器操作数。包括:运算结果符号位和有效减法控制位生成;两对浮点指数生成;当工作于单精度模式时,判断两个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,形成两个尾数Ma[23:0]和Mb[23:0];当工作于半精度模式时,判断四个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,形成四个尾数Ma1[10:0]、Mb1[10:0]、Ma2[10:0]、Mb2[10:0];根据不同计算模式,选择相应的24-bitA1、16-bit B1、16-bit A2、8-bit B2、8-bit A3、8-bit B3、8-bit A4、8-bit B4,生成四对乘法器操作数。
指数比较单元并行计算两路指数和,并与操作数C的指数相比较,输出较大的指数和以及指数差。包括:一个8-bit加法器用于计算单精度操作数指数和EAB或者一对半精度操作数指数和EA1B1;一个5-bit加法器专用于计算另一对半精度操作数指数和EA2B2,仅在半精度工作模式下工作;一个比较器用于比较EA1B1和EA2B2的大小,并输出两者指数差exp_diff用于移位以及较大的指数和Elarger。工作在单精度模式时,比较器固定输出第一对指数和为Elarger,同时exp_diff为固定移位量16;并行计算Elarger和Ec的指数差c_diff,操作数C所需的移位量c_align,用于判断移位量是否大于74的c_sht,乘法指数结果c_mul以及加法指数结果c_add。
乘法阵列由4个低精度乘法器组合而成,并通过灵活排布计算各工作模式下所需的乘法结果。包括:一个24-bit×16-bit乘法器,当工作在单精度模式下时,计算1.MA[23:0]×1.MB[23:7];当工作在半精度模式下时,计算1.MA1[10:0]×1.MB1[10:0];当工作在32位定点模式下时,计算A[23:0]×B[15:0];当工作在16位定点模式下时,计算A1[15:0]×B1[15:0];当工作在8位定点模式下时,计算A1[7:0]×B1[7:0];一个16-bit×8-bit乘法器,当工作在单精度模式下时,计算1.MA[15:0]×1.MB[7:0];当工作在半精度模式下时,计算1.MA2[10:0]×1.MB2[6:0];当工作在32位定点模式下时,计算A[15:0]×B[23:16];当工作在16位定点模式下时,计算A2[15:0]×B2[7:0];当工作在8位定点模式下时,计算A2[7:0]×B2[7:0];一个8-bit×8-bit乘法器,当工作在单精度模式下时处于空闲状态;当工作在半精度模式下时,计算1.MA2[6:0]×1.MB2[10:7];当工作在32位定点模式下时,计算A[7:0]×B[31:23];当工作在16位定点模式下时,计算A2[7:0]×B2[15:7];当工作在8位定点模式下时,计算A3[7:0]×B3[7:0];一个8-bit×8-bit乘法器,当工作在单精度模式下时,计算1.MA[23:16]×1.MB[7:0];当工作在半精度模式下时,计算1.MA2[10:7]×1.MB2[10:7];当工作在32位定点模式下时,计算A[31:24]×B[7:0];当工作在16位定点模式下时,计算A2[15:8]×B2[15:7];当工作在8位定点模式下时,计算A4[7:0]×B4[7:0]。
本领域技术人员可以将本实施例理解为实施例1、实施例2的更为具体的说明。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种可重构的支持多精度浮点或定点运算的方法,其特征在于,所述方法包括如下步骤:
步骤S1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;
步骤S2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;
步骤S3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;
步骤S4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
2.根据权利要求1所述的可重构的支持多精度浮点或定点运算的方法,其特征在于,所述步骤S1中的操作数A、B、C为32位。
3.根据权利要求1所述的可重构的支持多精度浮点或定点运算的方法,其特征在于,所述步骤S1中:输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
4.根据权利要求1所述的可重构的支持多精度浮点或定点运算的方法,其特征在于,所述步骤S2中:Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
5.根据权利要求1所述的可重构的支持多精度浮点或定点运算的方法,其特征在于,所述步骤S3中:头零预测单元并行计算前导零个数并输出规格化移位位数。
6.一种可重构的支持多精度浮点或定点运算的系统,其特征在于,所述系统包括如下模块:
模块M1:操作数A、B、C经过输入处理单元进行预处理,拆分其中的符号位、指数和尾数,并将操作数的符号与运算符异或,指数输入到指数比较单元,尾数输入到乘法阵列进行计算;
模块M2:乘法阵列M1-M4分别输入四对操作数MulA1-MulA4、MulB1-MulB4,同时指数比较单元输出移位位数给移位器,将操作数C移位后输入给加法树;
模块M3:在进位选择加法器中完成最终加法,补码器判断结果是否为负数选择是否进行补码运算,输出74位结果;
模块M4:根据规格化移位位数进行规格化移位以及指数调整,将移位后的尾数和调整后的指数输入后处理单元;后处理单元进行浮点结果的舍入,并根据运算符和运算精度配置输出最终运算结果。
7.根据权利要求6所述的可重构的支持多精度浮点或定点运算的系统,其特征在于,所述模块M1中的操作数A、B、C为32位。
8.根据权利要求6所述的可重构的支持多精度浮点或定点运算的系统,其特征在于,所述模块M1中:输入处理模块根据运算精度配置拆分各操作数,不同运算对应的输入数据格式;在进行加/减运算时,将操作数B置为1.0或1,将输入B赋给操作数C,利用乘加的计算通路完成加/减运算;对于多精度数据,根据运算单元的配置信息fp/int和precision拆分各个输入操作数,输出给乘法阵列进行乘法运算;对于浮点操作,输入处理模块根据指数判断小数的最高位是1还是0,若指数全0,则最高位为0,否则为1。
9.根据权利要求6所述的可重构的支持多精度浮点或定点运算的系统,其特征在于,所述模块M2中:Booth编码得到的四组部分积经过加法树压缩得到2组进位保留CSA形式的半加和,交换小的半加和并按浮点指数差或者定点固定移位量移位,再经过两级压缩器,最终输出为进位保留CSA形式的48位半加和sum和carry。
10.根据权利要求6所述的可重构的支持多精度浮点或定点运算的系统,其特征在于,所述模块M3中:头零预测单元并行计算前导零个数并输出规格化移位位数。
CN202310585437.5A 2023-05-23 2023-05-23 可重构的支持多精度浮点或定点运算的方法及系统 Pending CN116627379A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310585437.5A CN116627379A (zh) 2023-05-23 2023-05-23 可重构的支持多精度浮点或定点运算的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310585437.5A CN116627379A (zh) 2023-05-23 2023-05-23 可重构的支持多精度浮点或定点运算的方法及系统

Publications (1)

Publication Number Publication Date
CN116627379A true CN116627379A (zh) 2023-08-22

Family

ID=87635977

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310585437.5A Pending CN116627379A (zh) 2023-05-23 2023-05-23 可重构的支持多精度浮点或定点运算的方法及系统

Country Status (1)

Country Link
CN (1) CN116627379A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251132A (zh) * 2023-09-19 2023-12-19 上海合芯数字科技有限公司 定浮点simd乘加指令融合处理装置、方法及处理器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251132A (zh) * 2023-09-19 2023-12-19 上海合芯数字科技有限公司 定浮点simd乘加指令融合处理装置、方法及处理器
CN117251132B (zh) * 2023-09-19 2024-05-14 上海合芯数字科技有限公司 定浮点simd乘加指令融合处理装置、方法及处理器

Similar Documents

Publication Publication Date Title
US4969118A (en) Floating point unit for calculating A=XY+Z having simultaneous multiply and add
US7395304B2 (en) Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic
US20210349692A1 (en) Multiplier and multiplication method
CN101847087B (zh) 一种支持定浮点可重构的横向求和网络结构
CN108459840B (zh) 一种simd结构浮点融合点乘运算单元
CN108255777B (zh) 用于fpga的嵌入式浮点型dsp硬核结构
CN110688086A (zh) 一种可重构的整型-浮点加法器
US6988119B2 (en) Fast single precision floating point accumulator using base 32 system
US20130282784A1 (en) Arithmetic processing device and methods thereof
CN112540743A (zh) 面向可重构处理器的有无符号乘累加器及方法
CN112860220A (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
Murillo et al. Energy-efficient MAC units for fused posit arithmetic
CN116400883A (zh) 一种可切换精度的浮点乘加器
Mao et al. A configurable floating-point multiple-precision processing element for HPC and AI converged computing
CN116661733A (zh) 一种支持多种精度的乘法器及微处理器
US5623435A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
Tan et al. Multiple-mode-supporting floating-point FMA unit for deep learning processors
CN116661734B (zh) 支持多输入多格式的低精度乘加运算器
CN110825346B (zh) 一种低逻辑复杂度的无符号近似乘法器
KR100317767B1 (ko) 부동 소수점 2진 4 워드 포맷 승산 명령 유닛
CN1220935C (zh) 提高半规模双精度浮点乘法流水线效率的部件
US20060277242A1 (en) Combining circuitry
Mao et al. A reconfigurable multiple-precision floating-point dot product unit for high-performance computing
Kuo et al. Configurable Multi-Precision Floating-Point Multiplier Architecture Design for Computation in Deep Learning

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