CN116594590A - 一种浮点数据的多功能运算装置及方法 - Google Patents

一种浮点数据的多功能运算装置及方法 Download PDF

Info

Publication number
CN116594590A
CN116594590A CN202310451633.3A CN202310451633A CN116594590A CN 116594590 A CN116594590 A CN 116594590A CN 202310451633 A CN202310451633 A CN 202310451633A CN 116594590 A CN116594590 A CN 116594590A
Authority
CN
China
Prior art keywords
module
bit
output
data
mantissa
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
CN202310451633.3A
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.)
Qingdao Benyuan Microelectronics Co ltd
Original Assignee
Qingdao Benyuan Microelectronics 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
Application filed by Qingdao Benyuan Microelectronics Co ltd filed Critical Qingdao Benyuan Microelectronics Co ltd
Priority to CN202310451633.3A priority Critical patent/CN116594590A/zh
Publication of CN116594590A publication Critical patent/CN116594590A/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/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
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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

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

Abstract

本发明公开了一种浮点数据的多功能运算装置及方法,该装置采用3级流水线结构,第一部分完成数据的预处理、指数运算、尾数乘积运算;包括使能控制模块、数据预处理模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块、特殊数据检测模块和第一级DFF;第二部分完成浮点尾数的加法运算;第三部分完成指数结果运算、尾数结果运算、舍入操作、特殊值处理、异常标志处理,并输出最终结果。本发明所公开的装置及方法利用资源复用技术,提高资源复用率从而降低硬件资源开销,使得在较小的硬件资源实现下可以支持多种功能的计算。

Description

一种浮点数据的多功能运算装置及方法
技术领域
本发明涉及微处理器内的浮点运算技术领域,特别涉及一种浮点数据的多功能运算装置及方法。
背景技术
在高清晰图像处理、现代移动通信和雷达信号处理等应用领域,涉及了大量的乘加运算,需要超高性能的信号处理器对大量数据进行处理,同时这些应用领域又对数据的计算精度和实时性要求非常高。而浮点数能够提供较高的表示精度和较大的动态范围,浮点运算可以满足现代微处理器的数据处理高精度和实时性要求,因此浮点乘加运算能力已经成为衡量DSP芯片性能指标的一个重要特征。浮点融合乘加将加法和乘法融合成一个操作,提高了精度和吞吐率,已经成为浮点处理部件的主流结构,快速、高性能和高精度的浮点乘加器已经成为国内外研究热点。
浮点乘加操作将浮点乘法运算的结果与另外一个操作数融合相加,在不需要中间舍入步骤的情况下执行得到最终结果,在提高精度的同时节省整个浮点乘加操作的执行延迟。由于浮点运算的复杂特性,导致乘加运算的硬件资源开销和延迟成为硬件实现的难题。同时针对高精度领域的应用场景,有时需要支持非规格化数据计算、多种舍入模式以及异常标志的处理。这导致浮点乘加运算的硬件资源显著提高。在满足时序的情况下,使用更少的硬件资源成为现如今的研究点之一。单独的浮点乘加运算实现在硬件开销较大,设计多功能的浮点计算装置具有显著的应用前景。
发明内容
为解决上述技术问题,本发明提供了一种浮点数据的多功能运算装置及方法,利用资源复用技术,提高资源复用率从而降低硬件资源开销,使得在较小的硬件资源实现下可以支持多种功能的计算。
为达到上述目的,本发明的技术方案如下:
一种浮点数据的多功能运算装置,该装置采用3级流水线结构,分成三个部分,每个部分是1级流水线;
第一部分完成数据的预处理、指数运算、尾数乘积运算;包括使能控制模块、数据预处理模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块、特殊数据检测模块和第一级DFF;
第二部分完成浮点尾数的加法运算;包括加数路径、部分积路径和Close路径;
第三部分完成指数结果运算、尾数结果运算、舍入操作、特殊值处理、异常标志处理,并输出最终结果;包括符号位计算模块、指数计算模块、48位复合加法器模块、尾数预规格化处理模块、非规格化数处理模块、结果预处理模块、结果后处理模块、结果拼接模块和第三级DFF。
上述方案中,所述加数路径包括乘法进位模块、28位移位模块1、28位移位模块2、75位压缩模块、舍入位处理模块1。
上述方案中,所述部分积路径包括49位移位模块、74位压缩模块、舍入位处理模块2。
上述方案中,所述Close路径包括4位移位模块、49位压缩模块1、49位压缩模块2、前导0预测模块、前导0检测模块、比较模块、数据选择模块1、数据选择模块2、规格化与舍入位处理模块1、规格化与舍入位处理模块2和第二级DFF。
上述方案中,所述装置的输入数据为操作码、操作码有效使能、舍入模式、三个操作数fa、fb和fc,操作数fa、fb和fc为正数、负数、规格化数或非规格化数.
上述方案中,所述装置用于完成操作数fa、fb和fc的浮点乘加、乘减、负乘加、负乘减、加法、减法和乘法7种运算。
上述方案中,数据规格化处理模块包含前导0检测模块1、前导0检测模块2、前导0检测模块3、8位的加法模块、24位的左移模块.
一种浮点数据的多功能运算方法,采用如上所述的一种浮点数据的多功能运算装置,包括如下过程:
第一阶段:输入数据为操作码、操作码有效使能、舍入模式、fa、fb和fc;操作码和操作码有效使能进入使能控制模块,进行操作码译码,得出是7种运算中哪种运算的信号,同时获得有效使能信号;舍入模式直接进入第一级DFF;fa、fb和fc进入数据预处理模块,根据使能控制模块输出的使能信号,对输入的fa、fb和fc进行数据预处理;
之后输出处理之后的fa、fb和fc到数据提取模块,将数据的符号位、指数位和尾数位进行提取;然后根据数据提取模块输出的fa、fb和fc的指数位和尾数位进行规格化处理,将非规格化数转换为规格化数的表示形式;之后分成符号预处理、指数预处理、尾数预处理、特殊数据检测;
然后是进行路径判断,采用路径判断模块,根据符号位处理模块输出和指数预处理模块的指数差输出进行判断,根据判断条件进行处理,输出加数路径有效信号、部分积路径有效信号和Close路径有效信号;
最后根据使能控制模块输出的有效使能信号作为控制使能,有效时将输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块和特殊数据检测模块的输出结果寄存到第一级DFF中,无效时保持第一级DFF原数据不变;
第二阶段:分为三条路径,分别是加数路径、部分积路径和Close路径;
对于加数路径,首先对第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作,利用乘法进位模块,对Sum和Carry最高位进行取或操作并输出;然后利用28位移位模块1和28位移位模块2对48位Sum和48位Carry进行移位,移位后结果利用75位压缩模块与第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行压缩操作,最终输出进位值、48位Sum、48位Carry、低27位Sum和低27位Carry;低27位Sum和Carry传输进舍入位处理模块1中,分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位;
对于部分积路径,利用49位移位模块对第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行右移移位操作,得出74位的移位后结果,移位后结果利用74位压缩模块与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry或者两个数据的取反后进行压缩最终输出进位值、48位Sum、48位Carry、低26位Sum和低26位Carry;其中的低26位Sum和Carry传输进舍入位处理模块2分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位;
对于Close路径,首先利用4位移位模块,将第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行移位操作,最终得到得出27位的移位后结果;然后分别传输到49位压缩模块1和49位压缩模块2中与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行压缩操作;最终得出两组49位Sum和49位Carry并输出;然后将49位压缩模块1输出的Sum和Carry传输到前导0预测模块和比较模块;前导0预测模块输出49位前导0预测编码到前导0检测模块,输出高位0的个数;比较模块对49位压缩模块1输出的Sum和Carry进行操作,得出4位移位模块输出结果更大的使能信号;然后数据选择模块1和数据选择模块2根据比较模块产生的信号,对49位压缩模块1和49位压缩模块输出进行选择;最后利用规格化与舍入位处理模块1和规格化与舍入位处理模块2分别对数据选择模块1和数据选择模块2输出进行操作,得到进位值、48位Sum、48位Carry以及减法操作的舍入位S和尾数进位;
最后根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时将第一级DFF寄存的输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、指数预处理计算模块、路径判断模块和特殊数据检测模块的输出结果以及第二级DFF寄存的乘法进位模块、前导0检测模块输出的Close路径计算结果为0的输出信号、比较模块输出比较信号寄存到第二级DFF中;根据第一级DFF寄存的路径判断模块输出的3个使能信号作为使能信号,分别将3条路径产生的进位值、48位Sum、48位Carry、加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位寄存到第二级DFF中;上述使能信号均无效时保持第二级DFF原数据不变;
第三阶段:第三阶段分为符号计算、指数计算、尾数计算、最终数据处理;
符号计算,利用符号位计算模块,首先根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号以及数据提取模块的符号位,对特殊数据进行符号位计算得出特殊数据的符号位结果;如果不为特殊数据,则对第二阶段三条路径进行符号位计算;根据第二级DFF寄存的路径判断模块输出的3个路径的有效信号为使能进行选择计算,最后输出符号位结果;
尾数计算,首先将利用48位复合加法器模块对第二级DFF寄存的48位Sum和48位Carry进行复合加法操作;将48位Sum和48位Carry相加,得出进位值1和48位Sum1;将48位Sum和48位Carry相加再加1,得出进位值2和48位Sum2,最后将两组数据输出,传输到尾数预规格化处理模块;尾数预规格化处理模块根据第二级DFF寄存的加法和减法的舍入位S和尾数进位、第二级DFF寄存的符号位处理模块输出的减法信号和第二级DFF寄存的乘法进位模块输出进行操作,最后将右移2位的有效信号、右移1位的有效信号、左移1位的有效信号、Sum最高位、Sum次高位和尾数计算结果作为输出;
指数计算,利用指数计算模块进行,分成两类计算;当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,对于Close路径指数计算;当第二级DFF寄存的路径判断模块输出的加数路径有效信号或者部分积路径有效信号有效时,对Far路径指数计算;最终获得指数结果输出;
最终数据处理,根据指数计算模块输出的指数结果、尾数预规格化处理模块输出尾数结果进行操作,最后输出非规格化数表示的指数和尾数结果;然后将符号位计算模块输出的符号位、非规格化处理模块输出的指数和尾数以及尾数预规格化处理模块传输到结果预处理模块;
结果预处理模块根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号,对特殊数据进行处理得出指数、尾数以及NV异常标志,如果不为特殊值计算则根据指数计算模块和尾数预规格化处理模块输出的指数和尾数、非规格化处理模块指数和尾数结果、第二级DFF寄存的舍入模式和符号位计算模块产生的符号位作为操作数据进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和OF和UF异常标志传输到结果后处理模块;
后处理模块根据结果预处理模块输出的尾数和舍入位、符号位计算模块产生的符号位和第二级DFF寄存的舍入模式进行5种舍入操作同时产生NX异常标志;之后对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数传输到结果拼接模块;
结果拼接模块根据结果预处理模块产生的指数、尾数和异常标志以及结果后处理模块输出的异常标志、指数和尾数进行合并处理,如果为特殊数据则使用结果预处理模块输出的指数、尾数和异常标志,反之使用结果后处理模块输出的指数、尾数和异常标志;最后与符号位计算模块输出进行拼接得出最终运算结果和4种异常标志传输到第三级DFF;
第三级DFF,根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时用于寄存结果拼接模块产生的运算结果和异常标志数据,无效时进行数据保持。
通过上述技术方案,本发明提供的一种浮点数据的多功能运算装置及方法具有如下有益效果:
本装置首先融合浮点乘加、乘减、负乘加、负乘减、加法、减法和乘法的计算操作,使用一套浮点乘加的计算装置来实现全部功能。这种计算装置可以作为一种参数化的计算装置,支持m位指数、n位尾数的浮点数据格式,对位宽进行调整即可实现该参数化的计算装置。
本发明在该多功能计算装置中加入非规格化数计算、舍入模式处理、异常标志处理。首先是将非规格化操作数处理融入正常的规格化数据流中,以最大限度地共享硬件资源,提高资源复用率。
本装置通过降低舍入模式处理的复杂度,进行资源复用,提高资源复用率;本装置通过降低异常标志处理的复杂度,进行资源复用,提高资源复用率。本浮点数据的多功能计算装置,在实现过程中,多处利用资源复用技术,提高资源复用率从而降低硬件资源开销,使得在较小的硬件资源实现下可以支持多种功能的计算装置。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1五种舍入模式处理方法示意图:(a)RNE;(b)RTZ;(c)RDN;(d)RUP;(e)RMM。
图2本发明提供的一种浮点数据的多功能运算装置整体框架示意图。
图3为规格化处理模块结构示意图;
图4为Booth编码器电路结构示意图;
图5为输入为13个部分积的华莱士树点图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图和表,对本发明进行进一步的详细说明。具体实施将以IEEE754-2008标准格式的浮点单精度格式为例子,对实施进行具体阐述。该例子可以扩展为m位指数、n位尾数的浮点数据格式运算。
首先介绍浮点数据、舍入模式和异常标志处理。浮点数据的具体表示如表1所示,除正常的规格化数之外,针对一些特殊值,在标准中存在特定的表示,特殊值有正0、负0、正无穷大(+Inf)、负无穷大(-Inf)、非规格化数(Denormal)、非数(NaN)。非规格化数和非数在浮点运算处理中比较特殊。一般的浮点运算是不支持非规格化数运算的,但在本装置中支持该运算,从而运算精度更高。非数根据尾数位最高位可以分为Quiet-NaN(QNaN)和Signaling-NaN(SNaN)两种表示,对于这两种非数在异常标志设置时存在差异。
表1浮点格式数据
舍入模式的具体含义,见表2所示。总共5种舍入模式,分别是向最近邻到偶数舍入(RNE)、向零舍入(RTZ)、向负无穷方向舍入(RDZ)、向正无穷方向舍入(RUP)和向最近邻到最远舍入(RMM)。五种舍入的具体含义所对应的示意图描述如图1所示。
表2舍入模式含义
共有4种异常标志,具体的处理方法如下:
(1)NV异常标志:
如果任意一个操作数为NaN,输出结果为Canonical-NaN即0x7fc00000。如果任意一个操作数属于SNaN,则需要设置NV异常标志。如果对浮点乘加、乘减、负乘加、负乘减出现形式为(+Inf)+(-Inf),0×Inf+c,输出结果为Canonical-NaN,设置NV异常标志。如果对浮点加法和减法出现形式为(+Inf)+(-Inf)操作,输出结果为Canonical-NaN,设置NV异常标志。如果对浮点乘法出现形式为0×Inf操作,输出结果为Canonical-NaN,设置NV异常标志。
(2)OF异常标志:
当且仅当目标数据范围无界时舍入后浮点结果超过目标格式的最大有限数的大小时,应发出溢出异常信号。默认结果应由舍入方向属性和中间结果的符号确定。RNE和RMM舍入使用中间结果的符号将所有溢出进行到Inf。RTZ舍入以中间结果的符号将所有溢出带到格式的最大有限数。RDN舍入模式将正溢出携带到格式的最大有限数,将负溢出携带到-Inf。RUP舍入模式将负溢出带到格式的最负有限数,并将正溢出带到+Inf。
此外,在溢出的默认异常处理下,应设置OF异常标志,并发出NX异常标志信号。
(3)UF异常标志:
IEEE 754-2008浮点标准有两种选择,一种是舍入后检测,一种是舍入前检测。本发明采用舍入后检测。在舍入后,当计算为非0的结果(数据范围是无界的)严格位于±bemin之间时,这里b为2、emin是最小规格化指数-126,bemin是绝对值最小的规格化数。
下溢的默认异常处理必须始终交付一个舍入的结果,这可能是零、非规格化数或±bemin。绝对值比bemin小的数,可以表示为bemin或-bemin、0和非规格化数,本发明输出采用非规格化数表示。
在下溢的默认异常处理下,如果舍入的结果是不精确的,UF标志必须被设置,并且NX异常必须被发送。如果舍入的结果是精确的,则不会设置任何标志,也不会发出UF异常标志信号。
(4)NX异常标志:
如果一个运算的舍入后结果是不精确的,则NX异常标志必须被发送。
接下来具体讲述本装置的实现方案。
如图2所示,本发明提出了一种浮点数据的多功能运算装置,可支持浮点乘加、乘减、负乘加、负乘减、加法、减法和乘法7种指令操作,共用一套乘加运算装置实现。该装置采用3级流水线结构,分成三个部分,每个部分是1级流水线。第一部分完成数据的预处理、指数运算、尾数乘积运算。第二部分完成浮点尾数的加法运算。第三部分完成指数结果运算、尾数结果运算、舍入操作、特殊值处理、异常标志处理,并输出最终结果。
如图2所示,本实施例的浮点数据的多功能计算装置。作用是输入三个操作数A、B和C,将操作数完成乘加运算A*B+C。其中A、B和C可以是正数也可以是负数,既可以是规格化数,又可以是非规格化数。(图中fa代表A,fb代表B,fc代表C)
一、第一部分
第一部分包括使能控制模块、数据预处理模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块、特殊数据检测模块和第一级DFF。
使能控制模块,根据输入的操作码与操作码有效使能,进行操作码译码得出是7种运算中哪种运算的信号,同时获得有效使能信号。
数据预处理模块,根据使能控制模块输出的使能信号,对输入的fa、fb和fc进行数据预处理。实现浮点乘加,不做处理;实现浮点乘减,对fc的符号位取反;实现浮点负乘加,对fa和fc的符号位取反;实现浮点负乘减,对fa的符号位取反;实现浮点加法指令,fa和fc为操作数,fb置为浮点常数1;实现浮点减法运算,fa和fc为操作数,fb置为浮点常数1,fc的符号位取反;实现浮点乘法运算,fa和fb为操作数,fc置为0。之后输出处理之后的fa、fb和fc。
数据提取模块,根据数据预处理模块输出的两个操作数进行数据的符号位、指数位和尾数位的提取。对于规格化数,将尾数的隐藏位补一个1,对于非规格化数,将尾数的隐藏位补一个0,使数据完整,输出fa、fb和fc的符号位、指数位、尾数位,同时根据使能控制模块的输出的有效使能进行判断,无效时则将符号位、指数位、尾数位全部数据置为0。
符号位处理模块,根据数据提取模块输出的fa、fb和fc的符号位,做三个操作数的异或操作,以此作为减法使能信号作为输出,有效时表示减法,无效时表示加法。
数据规格化处理模块,根据数据提取模块输出的fa、fb和fc的指数位和尾数位进行规格化处理,具体结构如图3所示。包含前导0检测模块1、前导0检测模块2、前导0检测模块3、8位的加法模块、24位的左移模块。功能如下所示:
前导0检测模块1,对输入的fa的尾数位进行高位0检测,输出高位0的个数。
前导0检测模块2,对输入的fb的尾数位进行高位0检测,输出高位0的个数。
前导0检测模块3,对输入的fc的尾数位进行高位0检测,输出高位0的个数。
8位的加法模块,根据前导0检测模块1、前导0检测模块2、前导0检测模块3输出的fa、fb和fc的高位0的个数与输入的fa、fb和fc本身8位指数位进行运算,将指数位减去高位0的个数再加1操作,得出规格化后fa、fb和fc的指数位并输出结果。
24位的左移模块,根据前导0检测模块1、前导0检测模块2和前导0检测模块3输出的fa、fb和fc的高位0的个数作为移位值,将输入fa、fb和fc的尾数位进行左移操作,得出规格化后的fa、fb和fc的尾数位并输出结果。
上述5个子模块合并组合成的功能即为数据规格化处理模块的功能,也就是完成fa、fb和fc的指数位和尾数位的规格化处理。
指数预处理模块,根据数据规格化处理模块输出的fa、fb和fc的指数位进行计算,将fa的指数位加上fb的指数位减去偏置位127,计算结果命名为a;将fc的指数位减去fa的指数位再减去fb的指数位再减去偏置位127,计算结果命名为d,根据d值产生fc指数更大的有效信号。最后计算d值的绝对值,如果d为正数则不变,为负数进行取反后再加1运算。最后输出结果a、指数差d、fc指数更大的有效信号以及指数差d的绝对值。
路径判断模块,根据符号位处理模块输出和指数预处理模块的指数差d输出进行判断,将符号位处理模块输出设为g。根据表3的判断条件进行处理,输出加数路径有效信号、部分积路径有效信号和Close路径有效信号。
表3路径判断模块判断条件
尾数booth编码模块,对数据规格化处理模块输出的fb的尾数进行基四booth编码处理。将fb作为yi,对于单精度浮点数据i∈[23:0],对yi用比特0进行扩展获得i∈[24:-1]。对yi的尾数从第-1位,开始每次三位看作一组,每次移动两位,不同组之间重叠一位。如表4所示,根据基四Booth编码表得到乘数的booth译码结果zi∈{-2,-1,0,1,2},最终获得13组zi结果,电路结构如图4所示。之后通过数据规格化处理模块输出的fa的尾数乘以乘数的布什译码结果zi,单倍信号为1 1时保持数据不变,双倍信号为1时将数据进行左移一位,负数信号为1时将得到的结果取反加1,如果单倍信号和双倍信号均为0则数据不变,最终13组zi信号得到13个部分积输出结果。
表4基四Booth编码表
y2i+1 y2i y2i-1 zi 单倍 双倍 负数
0 0 0 0 0 0 0
0 0 1 1 1 0 0
0 1 0 1 1 0 0
0 1 1 2 0 1 0
1 0 0 -2 0 1 1
1 0 1 -1 1 0 1
1 1 0 -1 1 0 1
1 1 1 0 0 0 1
华莱士树压缩模块,根据尾数booth编码模块输出的13个部分积数据进行华莱士数压缩,结构如图5所示,将13个部分积通过3:2压缩器通过级联的方式进行压缩,通过5级逻辑后得到最终48位的Sum和Carry结果。
特殊数据检测模块,根据数据预处理模块输出fa、fb和fc的符号位、指数位、尾数位。对正0、负0、正无穷、负无穷、SNAN、QNAN进行检测。输出这些特殊值所对应的指示信号。
第一级DFF,根据使能控制模块输出有效使能信号作为控制使能,有效时用于寄存输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块和特殊数据检测模块的输出结果,无效时保持原数据不变。
二、第二部分
第二部分包括加数路径、部分积路径和Close路径;
1、加数路径
加数路径包括乘法进位模块、28位移位模块1、28位移位模块2、75位压缩模块、舍入位处理模块1。
乘法进位模块,根据第一级DFF寄存的华莱士树压缩模块输出Sum和Carry最高位进行操作,将两个操作数取或操作并输出。
28位移位模块1,根据第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,该移位值大于28时移位值为28。然后对第一级DFF寄存的华莱士树压缩模块输出48位Sum进行位扩展均用0补充,低位补28位,然后进行右移移位操作,得出76位的移位后结果,将移位后的低75位Sum结果输出。
28位移位模块2,根据第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,该移位值大于28时移位值为28。然后对第一级DFF寄存的华莱士树压缩模块输出48位Carry进行位扩展均用0补充,低位补28位,然后进行右移移位操作,得出76位的移位后结果,将移位后的低75位Carry结果输出。
75位压缩模块,对28位移位模块1输出、28位移位模块2输出和第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行操作,根据第一级DFF寄存的符号位处理模块输出作为减法使能信号,有效时对28位移位模块1输出、28位移位模块2输出进行取反操作,无效时不操作。然后将三个操作数使用3:2压缩器压缩操作,在进行该操作时根据第一级DFF寄存的符号位处理模块输出作为加1数据信号,有效时在3:2压缩器压缩时考虑加1操作,最终得出76位Sum和75位Carry,将Sum最高位作为进位值输出,将Sum和Carry的剩余75位拆分为高48位和低27位进行输出。
舍入位处理模块1,对75位压缩模块输出的Sum和Carry低27位当成尾数进行操作,根据第一级DFF寄存的符号位处理模块输出,减法时在最低位考虑加1操作,分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位。
2、部分积路径
部分积路径包括49位移位模块、74位压缩模块、舍入位处理模块2。
49位移位模块,根据第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,该移位值大于49时移位值为49。对第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行位扩展均用0补充,高位补1位,低位补49位,然后进行右移移位操作,得出74位的移位后结果并输出。
74位压缩模块,对49位移位模块输出、第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作,根据第一级DFF寄存的符号位处理模块输出作为减法使能信号,有效时对49位移位模块输出结果进行取反操作,无效时不操作。然后将三个操作数使用3:2压缩器压缩操作,在进行该操作时根据第一级DFF寄存的符号位处理模块输出作为加1数据信号,减法时在3:2压缩器压缩时考虑加1操作,最终得出75位Sum和74位Carry,将Sum最高位作为进位值输出,将Sum和Carry的剩余74位拆分为高48位和低26位进行输出。
舍入位处理模块2,对74位压缩模块输出的Sum和Carry低26位当成尾数进行操作,根据第一级DFF寄存的符号位处理模块输出,分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位。
3、Close路径
Close路径包括4位移位模块、49位压缩模块1、49位压缩模块2、前导0预测模块、前导0检测模块、比较模块、数据选择模块1、数据选择模块2、规格化与舍入位处理模块1、规格化与舍入位处理模块2和第二级DFF。
4位移位模块,将第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行移位操作,首先将其进行位扩展均用0补充,高位补2位,低位补1位,获得27位的尾数位。将第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,根据第一级DFF寄存的指数预处理模块输出的fc和fa*fb指数大小比较信号作为左移和右移位控制,fc更大时进行左移,反之进行右移,最终得到得出27位的移位后结果并输出。
49位压缩模块1,对4位移位模块输出、第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作。首先对4位移位模块输出结果进行取反操作,然后将三个操作数使用3:2压缩器压缩操作,最终得出49位Sum和49位Carry并输出。
49位压缩模块2,对4位移位模块输出、第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作。首先对Sum和Carry进行取反操作,然后将三个操作数使用3:2压缩器压缩操作,在进行该操作时考虑加1操作,最终得出49位Sum和49位Carry并输出。
比较模块,根据49位压缩模块1输出的Sum和Carry结果,对4位移位模块输出与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行大小比较,得出4位移位模块输出结果更大的使能信号,有效时4位移位模块输出较大,反之Sum和Carry之和更大。
数据选择模块1,根据比较模块输出的使能信号作为判断,如果有效,选择49位压缩模块2的Sum进行输出,无效时,选择选择49位压缩模块1的Sum进行输出。
数据选择模块2,根据比较模块输出的使能信号作为判断,如果有效,选择49位压缩模块2的Carry进行输出,无效时,选择选择49位压缩模块1的Carry进行输出。
前导0预测模块,根据49位压缩模块1输出的Sum和Carry进行操作。首先对Carry进行取反操作,然后根据这两个操作数进行前导0预测编码,输出49位前导0预测编码。
前导0检测模块,对前导0预测模块输出的49位前导0预测编码进行高位0检测,输出高位0的个数,同时当全为0时产生Close路径计算结果为0的输出信号。
规格化与舍入位处理模块1,首先根据前导0检测模块输出结果作为移位值,大于49时移位值为49,对数据选择模块1输出的Sum进行右移移位操作,得出97位的移位后结果,将Sum的高48位直接进行输出,低49位进行舍入操作。考虑加1操作,得到减法操作的舍入位S和尾数进位。
规格化与舍入位处理模块2,首先根据前导0检测模块输出结果作为移位值,大于49时移位值为49,对数据选择模块2输出的Carry进行右移移位操作,得出97位的移位后结果,将Carry的高48位直接进行输出,低49位进行舍入操作。不考虑加1操作,得到减法操作的舍入位S和尾数进位。
第二级DFF,根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时寄存输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、指数预处理模块、路径判断模块和特殊数据检测模块的输出结果,无效时保持数据不变。根据第一级DFF寄存的路径判断模块输出的3个使能信号作为使能信号,当加数路径有效信号有效时,寄存75位压缩模块输出的进位、48位Sum和48位Carry、乘法进位模块输出进位以及舍入位处理模块1输出的加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位;当部分积路径有效信号有效时,寄存74位压缩模块的进位、48位Sum和48位Carry以及舍入位处理模块2输出的加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位;当Close路径有效信号有效时,寄存规格化与舍入位处理模块1和规格化与舍入位处理模块2输出的48位Sum和48位Carry、前导0检测模块输出的Close路径计算结果为0的输出信号、比较模块输出比较信号、减法操作的舍入位S和尾数进位、加法操作的舍入位S和尾数进位用0表示;均无效时保持数据不变。
三、第三部分
第三部分包含符号位计算模块、指数计算模块、48位复合加法器模块、尾数预规格化处理模块、非规格化数处理模块、结果预处理模块、结果后处理模块、结果拼接模块和第三级DFF。
符号位计算模块,首先根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号以及数据提取模块的符号位,对特殊数据进行符号位计算得出特殊数据的符号位结果。如果不为特殊数据,则对第二部分三条路径进行符号位计算。当第二级DFF寄存的路径判断模块输出的加数路径有效信号有效时,如果fc为0,则为fa和fb符号位的异或操作结果,如果fc不为0,则为fc的符号位;当第二级DFF寄存的路径判断模块输出的部分积路径有效信号有效时,则为fa和fb符号位的异或操作结果;当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,如果该路径输出结果为0,则舍入模式为向负无穷舍入时,符号位为1,反之为0,如果该路径fc更大时则为fc符号位,反之为fa和fb符号位的异或操作结果。
48位复合加法器模块,对第二级DFF寄存的48位Sum和48位Carry进行操作。将48位Sum和48位Carry相加,得出进位值1和48位Sum1;将48位Sum和48位Carry相加再加1,得出进位值2和48位Sum2,最后将两组数据输出。
尾数预规格化处理模块,首先根据第二级DFF寄存的符号位处理模块输出的减法信号作为选择信号,如果有效选择第二级DFF寄存的减法的舍入位S和尾数进位,反之选择加法的舍入位S和尾数进位。然后根据尾数进位有效选择48位复合加法器模块输出进位值2和48位Sum2作为操作数,反之选择进位值1和48位Sum1作为操作数,最终获得进位值和48位Sum值。然后将获得的进位值与第二级DFF寄存的乘法进位模块输出的进位值做逻辑与操作获得右移2位的有效信号。根据第二级DFF寄存的符号位处理模块输出的减法信号无效且进位值或者第二级DFF寄存的乘法进位模块输出的进位值有效时,产生右移1位的有效信号。根据第二级DFF寄存的符号位处理模块输出的减法信号有效、Sum最高位无效和Sum次高位有效,产生左移1位的有效信号。最终,根据第二级DFF寄存的符号位处理模块输出的减法信号、右移1位的有效信号作为信号,将舍入位S拼接在Sum的最低位,然后对该数据进行操作,最终获得尾数计算结果。最后将右移2位的有效信号、右移1位的有效信号、左移1位的有效信号、Sum最高位、Sum次高位和尾数计算结果作为输出。
指数计算模块,分成两类计算,一类是Close路径指数计算,另一类是Far路径指数计算,也就是加数路径或者部分积路径的指数计算。当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,对于Close路径指数计算。根据第二级DFF寄存的前导0检测模块输出的Close路径计算结果为0的输出信号,如果该信号有效,则Close路径指数结果为0,如果无效则进行下面运算。根据第二级DFF寄存的指数预处理模块输出的比较信号,如果fc指数更大,则将第二级DFF寄存的前导0检测模块输出的个数减去2再加上第二级DFF寄存的指数预处理模块输出d的绝对值,反之计算第二级DFF寄存的前导0检测模块输出的个数减去2,用该数据最高位进行高位扩展补齐然后取反后作为前导0纠正数据,然后将第二级DFF寄存的指数预处理模块输出的较大的指数加上前导0纠正数据,同时计算第二级DFF寄存的指数预处理模块输出的较大的指数加上前导0纠正数据再加1,从而产生不加1的结果和加1的加过。根据尾数预规格化处理模块输出的产生左移1位的有效信号进行数据选择,有效时选择不加1的结果,无效时选择加1的结果作为指数结果输出。当第二级DFF寄存的路径判断模块输出的加数路径有效信号或者部分积路径有效信号有效时,对Far路径指数计算。首先第二级DFF寄存的路径判断模块输出的部分积路径有效信号有效时,选择第二级DFF寄存的指数预处理模块输出的较大的指数作为中间结果;第二级DFF寄存的路径判断模块输出的加数路径有效信号有效时,如果fc为0,则将第二级DFF寄存的指数预处理模块输出的较大的指数减去第二级DFF寄存的指数预处理模块输出的d的绝对值作为中间结果,如果不为0选择第二级DFF寄存的指数预处理模块输出的较大的指数作为中间结果。对该结果进行加1、加2、减1和减2四个操作获得4个暂时结果,然后根据第二级DFF寄存的路径判断模块输出的加数路径有效信号和部分积路径有效信号、第二级DFF寄存的减法信号、尾数预规格化处理模块输出的右移1位的有效信号、右移2位的有效信号、左移1位的有效信号、Sum的最高位和次高位作为判断信号,对第二级DFF寄存的指数预处理模块输出的较大的指数、中间结果、4个暂时结果进行选择,最终获得指数结果输出。
非规格化数处理模块,根据指数计算模块输出的指数结果,以其是否小于0作为判断信号,计算指数的绝对值加1作为移位值,将尾数预规格化处理模块输出结果进行右移位操作,最后输出非规格化数表示的指数和尾数结果。
结果预处理模块,根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号,对特殊数据进行处理得出指数、尾数以及NV异常标志,如果不为特殊值计算则根据指数计算模块和尾数预规格化处理模块输出的指数和尾数、非规格化处理模块指数和尾数结果、第二级DFF寄存的舍入模式和符号位计算模块产生的符号位作为操作数据进行边界值处理,输出第一次结果处理的指数、尾数、舍入尾数和OF和UF异常标志。
结果后处理模块,根据结果预处理模块输出的尾数和舍入尾数、符号位计算模块产生的符号位和第二级DFF寄存的舍入模式进行5种舍入操作,存在进位值是对指数进行加1,存在舍入操作时同时产生NX异常标志。之后对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数。
结果拼接模块,根据结果预处理模块产生的指数、尾数和异常标志以及结果后处理模块输出的异常标志、指数和尾数进行合并处理,如果为特殊数据则使用结果预处理模块输出的指数、尾数和异常标志,反之使用结果后处理模块输出的指数、尾数和异常标志。之后将指数、尾数以及符号位计算模块输出进行拼接同时将4种异常标志进行拼接得出最终运算结果和4种异常标志。
第三级DFF,根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时用于寄存结果拼接模块产生的运算结果和异常标志数据,无效时进行数据保持。
以下为整体的运算方法流程,融合浮点乘加、乘减、负乘加、负乘减、加法、减法和乘法的计算流程。
如图2所示,总共分为3个周期实现,因此可以将这3个周期定义为第一阶段、第二阶段和第三阶段。
一、第一阶段
输入数据为操作码、操作码有效使能、舍入模式、fa、fb和fc。操作码和操作码有效使能进入使能控制模块,进行操作码译码得出是7种运算中哪种运算的信号,同时获得有效使能信号。舍入模式直接进入第一级DFF;fa、fb和fc进入数据处理模块,根据使能控制模块输出的使能信号,对输入的fa、fb和fc进行数据预处理。实现浮点乘加,不做处理;实现浮点乘减,对fc的符号位取反;实现浮点负乘加,对fa和fc的符号位取反;实现浮点负乘减,对fa的符号位取反;实现浮点加法指令,fa和fc为操作数,fb置为浮点常数1;实现浮点减法运算,fa和fc为操作数,fb置为浮点常数1,fc的符号位取反;实现浮点乘法运算,fa和fb为操作数,fc置为0。
之后输出处理之后的fa、fb和fc到数据提取模块。将数据的符号位、指数位和尾数位的提取。对于规格化数,将尾数的隐藏位补一个1,对于非规格化数,将尾数的隐藏位补一个0,使数据完整,输出fa、fb和fc的符号位、指数位、尾数位,同时根据使能控制模块的输出的有效使能进行判断,无效时则将符号位、指数位、尾数位全部数据置为0。
然后根据数据提取模块输出的fa、fb和fc的指数位和尾数位进行规格化处理,将非规格化数转换为规格化数的表示形式。
之后分成符号预处理、指数预处理、尾数预处理和特殊数据检测。
符号预处理采用符号位处理模块,根据数据提取模块输出的fa、fb和fc的符号位,做三个操作数的异或操作,以此作为减法使能信号作为输出,有效时表示减法,无效时表示加法。
指数预处理根据数据规格化处理模块输出的fa、fb和fc的指数位进行计算,将fa的指数位加上fb的指数位减去偏置位127,计算结果命名为a;将fc的指数位减去fa的指数位再减去fb的指数位再减去偏置位127,计算结果命名为d,根据d值产生fc指数更大的有效信号。最后计算d值的绝对值,如果d为正数则不变,为负数进行取反后再加1运算。最后输出结果a、指数差d、fc指数更大的有效信号以及指数差d的绝对值。
尾数预处理是首先利用尾数booth编码模块,对数据规格化处理模块输出的fb的尾数进行基四booth编码处理,之后与对数据规格化处理模块输出的fa的尾数进行计算,最终获得13个部分积,传输到华莱士数压缩模块,根据3:2压缩器进行压缩获得48位的Sum和Carry结果。
特殊数据检测模块根据输入数据预处理模块的符号位、指数位、尾数位进行正0、负0、正无穷、负无穷、QNaN、SNaN检测得出特殊数据指示信号。
然后是进行路径判断,采用路径判断模块,根据符号位处理模块输出和指数预处理模块的指数差d输出进行判断,根据表3的判断条件进行处理,输出加数路径有效信号、部分积路径有效信号和Close路径有效信号。
最后根据使能控制模块输出的有效使能信号作为控制使能,有效时将输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块和特殊数据检测模块的输出结果寄存到第一级DFF中,无效时保持第一级DFF原数据不变,等待下一级流水线操作。
二、第二阶段
第二阶段分为三条路径,分别是加数路径、部分积路径和Close路径。
1、加数路径
对于加数路径,利用乘法进位模块,根据第一级DFF寄存的华莱士树压缩模块输出Sum和Carry最高位进行操作,将两个操作数取或操作并输出。之后将第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry,利用28位移位模块1和28位移位模块2,根据第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,该移位值大于28时移位值为28。
然后分别对Sum和Carry进行位扩展均用0补充,低位补28位,然后进行右移移位操作,得出76位的移位后结果,将移位后的低75位Sum和Carry结果输出。将这两个Sum和Carry与第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行操作,根据第一级DFF寄存的符号位处理模块输出作为减法使能信号,有效时对Sum和Carry进行取反操作,无效时不操作。
然后将三个操作数采用75位压缩模块使用3:2压缩器压缩操作,在进行该操作时根据第一级DFF寄存的符号位处理模块输出作为加1数据信号,有效时在3:2压缩器压缩时考虑加1操作,最终得出76位Sum和75位Carry,将Sum最高位作为进位值输出,将Sum和Carry的剩余75位拆分为高48位和低27位进行输出。其中的低27位Sum和Carry传输进舍入位处理模块1中,根据第一级DFF寄存的符号位处理模块输出减法信号,减法时在最低位考虑加1操作,加法时不操作,最终分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位。
2、部分积路径
对于部分积路径,根据第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,该移位值大于49时移位值为49。对第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行位扩展均用0补充,高位补1位,低位补49位,然后进行右移移位操作,得出74位的移位后结果并输出。将该输出与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作,根据第一级DFF寄存的符号位处理模块输出作为减法使能信号,有效时对49位移位模块输出结果进行取反操作,无效时不操作。
然后将三个操作数使用3:2压缩器压缩操作,在进行该操作时根据第一级DFF寄存的符号位处理模块输出作为加1数据信号,减法时在3:2压缩器压缩时考虑加1操作,最终得出75位Sum和74位Carry,将Sum最高位作为进位值输出,将Sum和Carry的剩余74位拆分为高48位和低26位进行输出。其中的低26位Sum和Carry传输进舍入位处理模块2中根据第一级DFF寄存的符号位处理模块输出减法信号,分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位。
3、Close路径
对于Close路径,首先利用4位移位模块,将第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行移位操作,先将其进行位扩展均用0补充,高位补2位,低位补1位,获得27位的尾数位。将第一级DFF寄存的指数预处理模块输出的指数差,将其作为移位值,根据第一级DFF寄存的指数预处理模块输出的fc和fa*fb指数大小比较信号作为左移和右移位控制,fc更大时进行左移,反之进行右移,最终得到得出27位的移位后结果并输出。
然后分别传输到49位压缩模块1和49位压缩模块2中。
49位压缩模块1中,对4位移位模块输出、第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作。首先对4位移位模块输出结果进行取反操作,然后将三个操作数使用3:2压缩器压缩操作,最终得出49位Sum和49位Carry并输出。
49位压缩模块2中,对4位移位模块输出、第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作。首先对Sum和Carry进行取反操作,然后将三个操作数使用3:2压缩器压缩操作,在进行该操作时考虑加1操作,最终得出49位Sum和49位Carry并输出。
然后将49位压缩模块1输出的Sum和Carry传输到前导预测模块和比较模块。前导0预测模块,根据49位压缩模块1输出的Sum和Carry结果进行操作。首先对Carry进行取反操作,然后根据这两个操作数进行前导0预测编码,输出49位前导0预测编码到前导0检测模块,对前导0预测模块输出的49位前导0预测编码进行高位0检测,输出高位0的个数。比较模块根据49位压缩模块1输出的Sum和Carry结果进行操作,对4位移位模块输出与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行大小比较,得出4位移位模块输出结果更大的使能信号,有效时4位移位模块输出较大,反之Sum和Carry之和更大。
然后数据选择模块1和数据选择模块2根据比较模块产生的比较信号,对49位压缩模块1和49位压缩模块2输出进行选择。对于数据选择模块1,比较模块输出的使能信号有效时,选择49位压缩模块2的Sum进行输出,无效时,选择选择49位压缩模块1的Sum进行输出。对于数据选择模块2,比较模块输出的使能信号有效时,选择49位压缩模块2的Carry进行输出,无效时,选择选择49位压缩模块1的Carry进行输出。
最后根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时将输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、指数预处理模块、路径判断模块和特殊数据检测模块的输出结果寄存到第二级DFF中,无效时保持数据不变。根据第一级DFF寄存的路径判断模块输出的3个使能信号作为使能信号,当加数路径有效信号有效时,将75位压缩模块输出的进位、48位Sum和48位Carry、乘法进位模块输出进位以及舍入位处理模块1输出的加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位寄存到第二级DFF中;当部分积路径有效信号有效时,将74位压缩模块的进位、48位Sum和48位Carry以及舍入位处理模块2输出的加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位寄存到第二级DFF中;当Close路径有效信号有效时,将规格化与舍入位处理模块1和规格化与舍入位处理模块2输出的48位Sum和48位Carry、前导0检测模块输出的Close路径计算结果为0的输出信号、比较模块输出比较信号、减法操作的舍入位S和尾数进位、加法操作的舍入位S和尾数进位用0表示寄存到第二级DFF中;均无效时保持第二级DFF中数据不变。
3、第三阶段
第三阶段分为符号计算、指数计算、尾数计算。
1、符号计算
符号计算,利用符号位计算模块,首先根据第二级DFF寄存的第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号以及数据提取模块的符号位,对特殊数据进行符号位计算得出特殊数据的符号位结果。如果不为特殊数据,则对第二阶段三条路径进行符号位计算。当第二级DFF寄存的路径判断模块输出的加数路径有效信号有效时,如果fc为0,则为fa和fb符号位的异或操作结果,如果fc不为0,则为fc的符号位;当第二级DFF寄存的路径判断模块输出的部分积路径有效信号有效时,则为fa和fb符号位的异或操作结果;当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,如果该路径输出结果为0,则舍入模式为向负无穷舍入时,符号位为1,反之为0,如果该路径fc更大时则为fc符号位,反之为fa和fb符号位的异或操作结果。
2、尾数计算
尾数计算,首先将第二级DFF寄存的48位Sum和48位Carry数据传输到48位复合加法器模块。对第二级DFF寄存的48位Sum和48位Carry进行操作。将48位Sum和48位Carry相加,得出进位值1和48位Sum1;将48位Sum和48位Carry相加再加1,得出进位值2和48位Sum2,最后将两组数据输出,传输到尾数预规格化处理模块。
首先根据第二级DFF寄存的符号位处理模块输出的减法信号作为选择信号,如果有效第二级DFF寄存的减法的舍入位S和尾数进位,反之选择加法的舍入位S和尾数进位。然后根据尾数进位有效选择48位复合加法器模块输出进位值2和48位Sum2作为操作数,反之选择进位值1和48位Sum1作为操作数,最终获得进位值和48位Sum值。
然后将获得的进位值与第二级DFF寄存的乘法进位模块输出的进位值做逻辑与操作获得右移2位的有效信号。根据第二级DFF寄存的符号位处理模块输出的减法信号无效且进位值或者第二级DFF寄存的乘法进位模块输出的进位值有效时,产生右移1位的有效信号。根据第二级DFF寄存的符号位处理模块输出的减法信号有效、Sum最高位无效和Sum次高位有效,产生左移1位的有效信号。
最终,根据第二级DFF寄存的符号位处理模块输出的减法信号、右移1位的有效信号作为信号,将舍入位拼接在Sum的最低位,然后对该数据进行操作,最终获得尾数计算结果。最后将右移2位的有效信号、右移1位的有效信号、左移1位的有效信号、Sum最高位、Sum次高位和尾数计算结果作为输出。
3、指数计算
指数计算,利用指数计算模块进行。分成两类计算,一类是Close路径指数计算,另一类是Far路径指数计算,也就是加数路径或者部分积路径的指数计算。
当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,对于Close路径指数计算。根据第二级DFF寄存的前导0检测模块输出的Close路径计算结果为0的输出信号,如果该信号有效,则Close路径指数结果为0,如果无效则进行下面运算。根据第二级DFF寄存的指数预处理模块输出的比较信号,如果fc指数更大,则将第二级DFF寄存的前导0检测模块输出的个数减去2再加上第二级DFF寄存的指数预处理模块输出d的绝对值,反之计算第二级DFF寄存的前导0检测模块输出的个数减去2,用该数据最高位进行高位扩展补齐然后取反后作为前导0纠正数据,然后将第二级DFF寄存的指数预处理模块输出的较大的指数加上前导0纠正数据,同时计算第二级DFF寄存的指数预处理模块输出的较大的指数加上前导0纠正数据再加1,从而产生不加1的结果和加1的加过。
根据尾数预规格化处理模块输出的产生左移1位的有效信号进行数据选择,有效时选择不加1的结果,无效时选择加1的结果作为指数结果输出。当第二级DFF寄存的路径判断模块输出的加数路径有效信号或者部分积路径有效信号有效时,对Far路径指数计算。
首先第二级DFF寄存的路径判断模块输出的部分积路径有效信号有效时,选择第二级DFF寄存的指数预处理模块输出的较大的指数作为中间结果;第二级DFF寄存的路径判断模块输出的加数路径有效信号有效时,如果fc为0,则将第二级DFF寄存的指数预处理模块输出的较大的指数减去第二级DFF寄存的指数预处理模块输出的d的绝对值作为中间结果,如果不为0选择第二级DFF寄存的指数预处理模块输出的较大的指数作为中间结果。对该结果进行加1、加2、减1和减2四个操作获得4个暂时结果,然后根据第二级DFF寄存的路径判断模块输出的加数路径有效信号和部分积路径有效信号、第二级DFF寄存的减法信号、尾数预规格化处理模块输出的右移1位的有效信号、右移2位的有效信号、左移1位的有效信号、Sum的最高位和次高位作为判断信号,对第二级DFF寄存的指数预处理模块输出的较大的指数、中间结果、4个暂时结果进行选择,最终获得指数结果输出。
将指数结果和尾数结果传输到非规格化数处理模块,根据指数计算模块输出的指数结果,以其是否小于0作为判断信号,计算指数的绝对值加1作为移位值,将尾数预规格化处理模块输出结果进行右移位操作,最后输出非规格化数表示的指数和尾数结果。
之后将符号位计算模块输出的符号位、非规格化处理模块输出的指数和尾数以及尾数预规格化处理模块传输到结果预处理模块。该模块根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号,对特殊数据进行处理得出指数、尾数以及NV异常标志,如果不为特殊值计算则根据指数计算模块和尾数预规格化处理模块输出的指数和尾数、非规格化处理模块指数和尾数结果、第二级DFF寄存的舍入模式和符号位计算模块产生的符号位作为操作数据进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和OF和UF异常标志传输到结果后处理模块。该模块根据结果预处理模块输出的尾数和舍入位、符号位计算模块产生的符号位和第二级DFF寄存的舍入模式进行5种舍入操作,存在进位值是对指数进行加1,存在舍入操作时同时产生NX异常标志。之后对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数传输到结果拼接模块。该模块根据结果预处理模块产生的指数、尾数和异常标志以及结果后处理模块输出的异常标志、指数和尾数进行合并处理,如果为特殊数据则使用结果预处理模块输出的指数、尾数和异常标志,反之使用结果后处理模块输出的指数、尾数和异常标志。之后将指数、尾数以及符号位计算模块输出进行拼接同时将4种异常标志进行拼接得出最终运算结果和4种异常标志传输到第三级DFF。
最后第三级DFF,根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时用于寄存结果拼接模块产生的运算结果和异常标志数据,无效时进行数据保持。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种浮点数据的多功能运算装置,其特征在于,该装置采用3级流水线结构,分成三个部分,每个部分是1级流水线;
第一部分完成数据的预处理、指数运算、尾数乘积运算;包括使能控制模块、数据预处理模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块、特殊数据检测模块和第一级DFF;
第二部分完成浮点尾数的加法运算;包括加数路径、部分积路径和Close路径;
第三部分完成指数结果运算、尾数结果运算、舍入操作、特殊值处理、异常标志处理,并输出最终结果;包括符号位计算模块、指数计算模块、48位复合加法器模块、尾数预规格化处理模块、非规格化数处理模块、结果预处理模块、结果后处理模块、结果拼接模块和第三级DFF。
2.根据权利要求1所述的一种浮点数据的多功能运算装置,其特征在于,所述加数路径包括乘法进位模块、28位移位模块1、28位移位模块2、75位压缩模块、舍入位处理模块1。
3.根据权利要求1所述的一种浮点数据的多功能运算装置,其特征在于,所述部分积路径包括49位移位模块、74位压缩模块、舍入位处理模块2。
4.根据权利要求1所述的一种浮点数据的多功能运算装置,其特征在于,所述Close路径包括4位移位模块、49位压缩模块1、49位压缩模块2、前导0预测模块、前导0检测模块、比较模块、数据选择模块1、数据选择模块2、规格化与舍入位处理模块1、规格化与舍入位处理模块2和第二级DFF。
5.根据权利要求1所述的一种浮点数据的多功能运算装置,其特征在于,所述装置的输入数据为操作码、操作码有效使能、舍入模式、三个操作数fa、fb和fc,操作数fa、fb和fc为正数、负数、规格化数或非规格化数。
6.根据权利要求5所述的一种浮点数据的多功能运算装置,其特征在于,所述装置用于完成操作数fa、fb和fc的浮点乘加、乘减、负乘加、负乘减、加法、减法和乘法7种运算。
7.根据权利要求1所述的一种浮点数据的多功能运算装置,其特征在于,数据规格化处理模块包含前导0检测模块1、前导0检测模块2、前导0检测模块3、8位的加法模块、24位的左移模块。
8.一种浮点数据的多功能运算方法,采用如权利要求1-7任一所述的一种浮点数据的多功能运算装置,其特征在于,包括如下过程:
第一阶段:输入数据为操作码、操作码有效使能、舍入模式、fa、fb和fc;操作码和操作码有效使能进入使能控制模块,进行操作码译码,得出是7种运算中哪种运算的信号,同时获得有效使能信号;舍入模式直接进入第一级DFF;fa、fb和fc进入数据预处理模块,根据使能控制模块输出的使能信号,对输入的fa、fb和fc进行数据预处理;
之后输出处理之后的fa、fb和fc到数据提取模块,将数据的符号位、指数位和尾数位进行提取;然后根据数据提取模块输出的fa、fb和fc的指数位和尾数位进行规格化处理,将非规格化数转换为规格化数的表示形式;之后分成符号预处理、指数预处理、尾数预处理、特殊数据检测;
然后是进行路径判断,采用路径判断模块,根据符号位处理模块输出和指数预处理模块的指数差输出进行判断,根据判断条件进行处理,输出加数路径有效信号、部分积路径有效信号和Close路径有效信号;
最后根据使能控制模块输出的有效使能信号作为控制使能,有效时将输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、数据规格化处理模块、指数预处理模块、路径判断模块、尾数booth编码模块、华莱士树压缩模块和特殊数据检测模块的输出结果寄存到第一级DFF中,无效时保持第一级DFF原数据不变;
第二阶段:分为三条路径,分别是加数路径、部分积路径和Close路径;
对于加数路径,首先对第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行操作,利用乘法进位模块,对Sum和Carry最高位进行取或操作并输出;然后利用28位移位模块1和28位移位模块2对48位Sum和48位Carry进行移位,移位后结果利用75位压缩模块与第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行压缩操作,最终输出进位值、48位Sum、48位Carry、低27位Sum和低27位Carry;低27位Sum和Carry传输进舍入位处理模块1中,分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位;
对于部分积路径,利用49位移位模块对第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行右移移位操作,得出74位的移位后结果,移位后结果利用74位压缩模块与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry或者两个数据的取反后进行压缩最终输出进位值、48位Sum、48位Carry、低26位Sum和低26位Carry;其中的低26位Sum和Carry传输进舍入位处理模块2分别得到加法操作的舍入位S和尾数进位以及减法操作的舍入位S和尾数进位;
对于Close路径,首先利用4位移位模块,将第一级DFF寄存的数据规格化处理模块输出的fc的尾数位进行移位操作,最终得到得出27位的移位后结果;然后分别传输到49位压缩模块1和49位压缩模块2中与第一级DFF寄存的华莱士树压缩模块输出的48位Sum和48位Carry进行压缩操作;最终得出两组49位Sum和49位Carry并输出;然后将49位压缩模块1输出的Sum和Carry传输到前导0预测模块和比较模块;前导0预测模块输出49位前导0预测编码到前导0检测模块,输出高位0的个数;比较模块对49位压缩模块1输出的Sum和Carry进行操作,得出4位移位模块输出结果更大的使能信号;然后数据选择模块1和数据选择模块2根据比较模块产生的信号,对49位压缩模块1和49位压缩模块输出进行选择;最后利用规格化与舍入位处理模块1和规格化与舍入位处理模块2分别对数据选择模块1和数据选择模块2输出进行操作,得到进位值、48位Sum、48位Carry以及减法操作的舍入位S和尾数进位;
最后根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时将第一级DFF寄存的输入舍入模式、使能控制模块、数据提取模块、符号位处理模块、指数预处理计算模块、路径判断模块和特殊数据检测模块的输出结果以及第二级DFF寄存的乘法进位模块、前导0检测模块输出的Close路径计算结果为0的输出信号、比较模块输出比较信号寄存到第二级DFF中;根据第一级DFF寄存的路径判断模块输出的3个使能信号作为使能信号,分别将3条路径产生的进位值、48位Sum、48位Carry、加法操作的舍入位S和尾数进位、减法操作的舍入位S和尾数进位寄存到第二级DFF中;上述使能信号均无效时保持第二级DFF原数据不变;
第三阶段:第三阶段分为符号计算、指数计算、尾数计算、最终数据处理;
符号计算,利用符号位计算模块,首先根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号以及数据提取模块的符号位,对特殊数据进行符号位计算得出特殊数据的符号位结果;如果不为特殊数据,则对第二阶段三条路径进行符号位计算;根据第二级DFF寄存的路径判断模块输出的3个路径的有效信号为使能进行选择计算,最后输出符号位结果;
尾数计算,首先将利用48位复合加法器模块对第二级DFF寄存的48位Sum和48位Carry进行复合加法操作;将48位Sum和48位Carry相加,得出进位值1和48位Sum1;将48位Sum和48位Carry相加再加1,得出进位值2和48位Sum2,最后将两组数据输出,传输到尾数预规格化处理模块;尾数预规格化处理模块根据第二级DFF寄存的加法和减法的舍入位S和尾数进位、第二级DFF寄存的符号位处理模块输出的减法信号和第二级DFF寄存的乘法进位模块输出进行操作,最后将右移2位的有效信号、右移1位的有效信号、左移1位的有效信号、Sum最高位、Sum次高位和尾数计算结果作为输出;
指数计算,利用指数计算模块进行,分成两类计算;当第二级DFF寄存的路径判断模块输出的Close路径有效信号有效时,对于Close路径指数计算;当第二级DFF寄存的路径判断模块输出的加数路径有效信号或者部分积路径有效信号有效时,对Far路径指数计算;最终获得指数结果输出;
最终数据处理,根据指数计算模块输出的指数结果、尾数预规格化处理模块输出尾数结果进行操作,最后输出非规格化数表示的指数和尾数结果;然后将符号位计算模块输出的符号位、非规格化处理模块输出的指数和尾数以及尾数预规格化处理模块传输到结果预处理模块;
结果预处理模块根据第二级DFF寄存的特殊数据检测模块产生的特殊数据指示信号,对特殊数据进行处理得出指数、尾数以及NV异常标志,如果不为特殊值计算则根据指数计算模块和尾数预规格化处理模块输出的指数和尾数、非规格化处理模块指数和尾数结果、第二级DFF寄存的舍入模式和符号位计算模块产生的符号位作为操作数据进行边界值处理,输出第一次结果处理的指数、尾数、舍入位和OF和UF异常标志传输到结果后处理模块;
后处理模块根据结果预处理模块输出的尾数和舍入位、符号位计算模块产生的符号位和第二级DFF寄存的舍入模式进行5种舍入操作同时产生NX异常标志;之后对舍入后的结果进行边界判断,舍入后是否存在上溢和下溢并输出异常标志、指数和尾数传输到结果拼接模块;
结果拼接模块根据结果预处理模块产生的指数、尾数和异常标志以及结果后处理模块输出的异常标志、指数和尾数进行合并处理,如果为特殊数据则使用结果预处理模块输出的指数、尾数和异常标志,反之使用结果后处理模块输出的指数、尾数和异常标志;最后与符号位计算模块输出进行拼接得出最终运算结果和4种异常标志传输到第三级DFF;
第三级DFF,根据第一级DFF寄存的使能控制模块输出的有效使能信号作为使能信号,有效时用于寄存结果拼接模块产生的运算结果和异常标志数据,无效时进行数据保持。
CN202310451633.3A 2023-04-25 2023-04-25 一种浮点数据的多功能运算装置及方法 Pending CN116594590A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310451633.3A CN116594590A (zh) 2023-04-25 2023-04-25 一种浮点数据的多功能运算装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310451633.3A CN116594590A (zh) 2023-04-25 2023-04-25 一种浮点数据的多功能运算装置及方法

Publications (1)

Publication Number Publication Date
CN116594590A true CN116594590A (zh) 2023-08-15

Family

ID=87610717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310451633.3A Pending CN116594590A (zh) 2023-04-25 2023-04-25 一种浮点数据的多功能运算装置及方法

Country Status (1)

Country Link
CN (1) CN116594590A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573065A (zh) * 2024-01-17 2024-02-20 青岛本原微电子有限公司 一种处理器多功能移位运算装置及运算方法
CN117785108A (zh) * 2024-02-27 2024-03-29 芯来智融半导体科技(上海)有限公司 一种前导数处理方法、系统、设备及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573065A (zh) * 2024-01-17 2024-02-20 青岛本原微电子有限公司 一种处理器多功能移位运算装置及运算方法
CN117573065B (zh) * 2024-01-17 2024-04-16 青岛本原微电子有限公司 一种处理器多功能移位运算装置及运算方法
CN117785108A (zh) * 2024-02-27 2024-03-29 芯来智融半导体科技(上海)有限公司 一种前导数处理方法、系统、设备及存储介质

Similar Documents

Publication Publication Date Title
CN108287681B (zh) 一种单精度浮点融合点乘运算装置
CN100570552C (zh) 一种并行浮点乘加单元
CN116594590A (zh) 一种浮点数据的多功能运算装置及方法
US9367287B2 (en) Mixed precision fused multiply-add operator
CN105468331B (zh) 独立的浮点转换单元
CN101221490B (zh) 一种具有数据前送结构的浮点乘加单元
JP5873599B2 (ja) デジタルシグナルプロセッサにおける信号処理のためのシステムおよび方法
CN101174200A (zh) 一种浮点乘加融合单元的五级流水线结构
CN112860220B (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
US5993051A (en) Combined leading one and leading zero anticipator
CN101650642B (zh) 基于补码舍入的浮点加法装置
US8930433B2 (en) Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors
CN102103479A (zh) 浮点运算器及浮点运算的处理方法
US5148386A (en) Adder-subtracter for signed absolute values
CN116643718B (zh) 一种流水线结构的浮点融合乘加装置、方法及处理器
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
US20160098249A1 (en) Decimal and binary floating point arithmetic calculations
CN104991757A (zh) 一种浮点处理方法及浮点处理器
CN116661733A (zh) 一种支持多种精度的乘法器及微处理器
CN113625989B (zh) 数据运算装置、方法、电子设备及存储介质
US11366638B1 (en) Floating point multiply-add, accumulate unit with combined alignment circuits
Lutz et al. Fused FP8 4-Way Dot Product With Scaling and FP32 Accumulation
CN117827145B (zh) 浮点运算装置及其处理方法、信息处理系统、硬件加速器
CN116578344A (zh) 一种浮点除法、开根号硬件计算装置及计算方法
KR20040033198A (ko) 부동소수점의 곱셈 및 누산장치

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