CN102707921B - 用于执行浮点加法的装置和方法 - Google Patents
用于执行浮点加法的装置和方法 Download PDFInfo
- Publication number
- CN102707921B CN102707921B CN201210039154.2A CN201210039154A CN102707921B CN 102707921 B CN102707921 B CN 102707921B CN 201210039154 A CN201210039154 A CN 201210039154A CN 102707921 B CN102707921 B CN 102707921B
- Authority
- CN
- China
- Prior art keywords
- operand
- circuit
- significant
- result
- add
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种用于执行浮点加法的装置和方法。在操作数A和B上执行加法操作以产生结果R,操作数A和B以及结果R是具有有效数和指数的浮点值。预测电路基于对使操作数A和B经过非类符号相加而产生的输出中将出现的前零数的预测,生成移位指示。结果预归一化电路在对有效数进行相加之前,在操作数A和操作数B的有效数上执行移位操作,丢弃由移位指示所确定的数目的最高有效位,以产生操作数A和B的已修改的有效数。操作数分析电路通过参照操作数A和B的指数来检测前位抵消情况的出现,加法电路在出现前位抵消情况的情形中,执行操作数A和B的已修改有效数的相加,以产生结果R的有效数。这种方法提供了用于执行加法操作的特别简单和高效的装置。
Description
技术领域
本发明涉及用于在操作数A和B上执行加法操作以便产生结果R的装置和方法,该操作数A和B一级结果R是每个都具有有效数(significand)和指数的浮点值。
背景技术
浮点数可被表示为如下:
±1.x*2y
其中:x=分数
1.x=有效数(也称为尾数)
y=指数
浮点加法可采用两种形式,即,类符号加法(LSA,like-signed addition)或非类符号加法(USA,unlike-signed addition)。如果将要将具有相同符号的两个浮点操作数相加,或者,如果将要将具有不同符号的两个浮点操作数想减,则执行LSA操作。类似地,如果将要将具有不同符号的两个浮点操作数相加,或者,如果将要将具有相同符号的两个浮点操作数想减,则执行USA操作。当在本应用中参照浮点操作数的加法和这种操作数的有效数的加法时,其应当被一同称为LSA或USA计算,并且因此,将理解,这种属于覆盖了加法处理和减法处理二者。
通常,处理器将具有用于执行不同的数据处理操作的多个已流水线化单元。这种已流水线化单元使加法单元,其包括用于执行加法操作的多个流水线阶段。浮点加法包括多个阶段,即,(1)指数分析和差计算,(2)操作数并排,(3)相加(其可能包括舍入内射(rounding injection)),以及(4)归一化。很多年间,加法流水线的现有技术已经涉及为至少部分加法处理供应两个单独的路径,一个被称为近路径,而另一个被称为远路径。具体地,基于观察(重要的对齐和重要的归一化是互斥的),这种将近/远路径分开可节省加法处理中的时钟周期。
因此,近路径被用于USA操作,该USA操作涉及其指数等于或相差一个的操作数,这些操作具有导致有效数的某些前位抵消的潜能。这种差确实需要舍入,但是,在加法之后,其确实需要归一化。然后,远路径被用于所有其他USA操作和所有LSA操作,并且,需要用于执行对齐和舍入的电路,但是,仅需要不重要的(1位)归一化。
这种分离加法器流水线首先在1981年出版在加利福尼亚利弗莫大学的PFarmwald的博士论文“On the Design of High Performance Digital ArithmeticUnits”中,并且,已经在若干后续设计中被改善,例如参见提名为“1-GHz HAL SPARC64Dual Floating Point Unit with RAS Features”的论文,作者为Naini及其他,发表在2001年第15届IEEE计算机体系架构论坛的论文集中,并且,其还共有US专利7,437,400,其全部内容通过引用被结合于此。
涉及加法的操作的一种一般形式是采用A+L*M的形式的乘法累加,其中,操作数L和M的相乘结果形成用于加法的第二操作数B。通过IEEE 754-2008标准的公开,融合乘法累加(FMA,fused multiply accumulate)操作(此处还被称为融合乘法相加操作)已经成为浮点单元的要求,FMA操作要求未舍入的相乘结果与操作数A相加,然后,舍入被与加法输入相关联而执行。已经开发了精致的FMA已流水线化单元,但是,供应这种精致的单元是昂贵的。通常,这种FMA单元还被用于执行标准的加法操作和标准的乘法操作,因此避免单独的加法器单元和单独的乘法器单元的需要,但是,由于FMA的复杂性,与精致的加法器单元相比,FMA单元通常将用更长的时间来执行标准加法操作,并且,与单独的乘法器单元相比,还将用更长的时间来执行标准乘法操作。由于大多数操作实际上不是FMA操作,而是涉及标准加法和乘法,因此,这可导致对浮点单元的显著的性能影响。
例如在共有共同待决美国专利申请No.12/585,668中所描述的,用于执行FMA操作的另一机制是使用单独的乘法单元来执行操作数L和M的相乘,并且然后,将未舍入的结果转发给单独的加法器单元,以形成将要与操作数A相加的第二操作数,其全部内容通过引用被结合于此。但是,当利用加法器单元的上述近/远路径体系架构时,其导致近路径的操作中的问题。具体地,问题是,用作操作数中的一个的未舍入的乘法结果的长度是结果R的长度的两倍,并且因此,即便在近路径中存在抵消,也可能需要舍入。如上所述,近路径通常不提供舍入电路,并且,加法的输出需要在执行舍入之前被归一化。结果,可能必须就爱那个另一流水线阶段添加到近路径,以允许执行舍入,并且,这可能显著地影响加法器单元的性能。
因此,希望提供数据处理装置的改进的浮点加法器单元。
发明内容
从第一方面来看,本发明提供了一种用于在操作数A和B上执行加法操作以产生结果R的装置,所述操作数A和B以及所述结果R是每个都具有有效数和指数的浮点值,所述装置包括:预测电路,该预测电路被配置为基于对在通过使所述操作数A和B经过非类符号相加所产生的输出中将出现的前零数的预测,生成移位指示;结果预归一化电路,该结果预归一化电路被配置为在对有效数进行相加之前,在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃操作数A和操作数B二者的有效数的由所述移位指示所确定的数目的最高有效位,以便产生操作数A和B的已修改的有效数;操作数分析电路,该操作数分析电路被配置为通过参照操作数A和B的指数来检测前位抵消情况的出现;以及加法电路,该加法电路被配置为在出现所述前位抵消情况的情形中,执行操作数A和B的已修改有效数的相加,以便产生所述结果R的有效数。
根据本发明,诸如前零预计电路之类的预测电路被用于产生移位指示,该移位指示随后被用于通过在输入操作数二者的有效数上执行对操作数的移位来对结果的有效数进行预归一化,该移位的程度取决于由预测电路所产生的移位指示。如果检测到前位抵消情况,则加法电路被布置,以利用由记过预归一化电路所输出的已修改的有效数来执行加法,以便产生结果的有效数。这种方法提供了比传统的提供单独的近路径和远路径的现有技术加法器电路类型更加简单并更小巧的装置。
当输入操作数中的一个是之前的乘法器阶段的未舍入的乘法结果时,本发明的装置能够执行加法,从而允许融合(fused)乘法相加操作以简单和高效的方式执行。但是,应当注意,即便在不要求支持融合乘法相加操作的实施例中,通过根据本发明的装置来布置加法器电路,仍旧可获得显著的益处。
在一个实施例中,如果所述操作数A和B的指数具有相同值或具有相差1的值,并且,如果非类符号相加被用于在所述操作数A和B上执行加法操作,则所述操作数分析电路检测所述前位抵消情况的出现。在典型的现有技术加法器电路中,这种前位抵消情况将通常导致在这种现有技术加法器电路中使用近路径。但是,根据本发明的实施例,不要求单独的近路径,而是,在出现前位抵消情况的情形中,可使用可用于所有其他加法操作的相同的加法电路,仅是在加法电路的操作之前该结果的有效数经由预归一化电路被预归一化。
在一个实施例中,预测电路针对如下情形计算移位指示:所述非类符号相加导致操作数A和B中的较小数被从操作数A和B中的较大数中减去。
但是,在一个实施例中,在所述预测电路开始计算前零值时,对操作数A和B中的哪个较大的判定是不可用的;并且所述预测电路被布置,以产生第一候选移位指示和第二候选移位指示,所述第一候选移位指示假定操作数A大于操作数B,而所述第二候选移位指示假定操作数B大于操作数A。因此,这种方法允许预测电路在知道哪个操作数较大之前开始起操作,从而允许在比其他可能方法之前更早地判定前零数。
在一个这种实施例中,所诉装置还包括:较大操作数检测电路,该较大操作数检测电路用于判定操作数A和操作数B中的哪个是较大的操作数;以及选择电路,该选择电路响应于所述较大操作数检测电路,并且,被配置为,如果操作数A是较大的操作数,则将所述第一候选移位指示选作移位指示,而如果操作数B是较大的操作数,则将所述第二候选移位指示选作移位指示。因此,可见,在这种实施例中,预测电路的操作可以与较大操作数检测电路的操作并行地发生,基于来自较大操作数检测电路的输出,进行对在两个候选移位指示之间的选择。
在一个实施例中,该装置还包括:比较电路,该比较电路被配置为输出比较结果,该比较结果指示操作数A的指数的最低有效位(LSB)是否与操作数B的指数的最低有效位相同。如果所述比较结果指示指数的LSB相同,则所述预测电路针对如下情形来计算移位指示:所述非符号相加导致操作数A和B中的较小数被从操作数A和B的较大数中减去。但是,如果所述比较结果指示指数的LSB不同,则所述预测电路针对如下情形来计算移位指示:所述非符号相加导致操作数A和B中的较小数的右移移位版本被从操作数A和B的较大数中减去。如之前所讨论的,如果操作数的指数相等或它们相差一,则可能出现前位抵消情况。根据以上的实施例,如果比较结果指示指数不同,则假定指数相差一。这是所做出的安全的假定,因为如果判定实际上未出现前位抵消情况,则加法电路不使用结果预归一化电路的输出,并且因此,预测电路的输出被有效地忽略。
在一个实施例中,该加法电路被配置为在加法期间执行内射舍入(injectionrounding),以添加舍入递增值;并且在所述加法电路之前的所述结果预归一化电路的操作确保操作数A和B的已修改有效数被正确对齐,以用于内射舍入。这提供了显著的性能益处,因为其避免在如所计算的加法电路的输出之后提供另外的舍入电路的任何需要。这应当与利用近路径和远路径的现有技术布置相对比,如果其支持融合乘法相加操作,则其将必须在近路径添加另一流水线阶段,以允许在进行加法之后执行舍入。
在一个实施例中,该加法电路包括:第一加法电路,该第一加法电路被配置为利用第一舍入递增值来执行加法,其假定没有溢出情况;以及第二加法电路,该第二加法电路被配置为利用第二舍入递增值来执行加法,其假定出现溢出情况。在出现前零校正情况的情形中,所述加法电路被配置为将由所述第二加法电路从操作数A和B的已修改的有效数所产生的结果作为所述结果R的有效数输出。如本领域技术人员将理解的,在实践中,预测电路可至多具有所预测的前零数的一位输出,该预测电路用于预测出现在输出中前零数,该输出通过将操作数A和B经过非类符号相加而产生。通常,考虑到该可能性,这将要求供应某些校正电路。但是,在以上的实施例中,由于两个加法电路的出现,其可被自动处理,因为,如果所预测的前零数被判定为一位输出,则来自第二加法电路的输出被用于形成结果的有效数。
存在检测前零校正情况的多种方法,但是,在一个实施例中,当所述加法电路执行对操作数A和B的已修改有效数的相加时,如果从所述第一加法电路产生了进位输出,则检测到所述前零校正情况。
在一个实施例中,装置还包括:对齐电路,该对齐电路被配置为执行对齐操作,以在对有效数进行相加之前,对操作数A和B的较小数的有效数以及操作数A和B的较大数的有效数进行对齐;以及如果未出现所述前位抵消情况,则所述加法电路被配置为对如所述对齐电路所对齐的操作数A和B的有效数进行相加。因此,如果未出现前位抵消情况,则忽略结果预归一化电路的输出,而是加法电路接收较大操作数的有效数以及来自对齐电路的更小操作数的已对齐有效数。
在一个实施例汇总,对齐电路通过在操作数A和B的较小数的有效数上执行右移操作来执行所述对齐操作,移位的位数取决于操作数A和B的指数之间的差。
在一个实施例中,装置被配置为一系列流水线阶段,并且,所述结果预归一化电路位于所述加法电路所位于的后续流水线阶段之前的流水线阶段中。另外,在一个实施例中,所述预测电路位于所述结果预归一化电路所位于的所述流水线阶段之前的在先流水线阶段中。
在一个实施例中,装置还包括移位校正电路,该移位校正电路响应于检测到子归一情况,在输入到所述加法电路之前,执行对操作数A和B的已修改有效数的一位校正右移。一般地,这随后允许子归一以与归一操作数相同的方式被处理。
存在多种检测子归一情况的方法,但是,在一个是示例中,如果所述结果R的指数采用预定义值,则检测到所述子归一情况。在一个示例实现中,该预定义值是包括全零的指数值,针对双精度数,其指定e-1022的指数,并且,在这种情形中,有效数是0.xxx的形式。
当输入到装置的操作数中的一个是执行在两个浮点操作数上的乘法操作的结果并被作为未舍入的输入提供时,实际上,最终的和可获得结果4.0,因为未舍入的乘法结果可能具有不正确的指数(即,一旦结果被舍入,其可比所指定的高一位)。如果接近乘法结果的数被随后经由USA操作从中减去,则结果的指数可以比与加法电路的默认输出相关联的结果的指数高两位。此处,称这种情景为双溢出情况。在一个实施例中,装置还包括结果有效数输出电路,该结果有效数输出电路响应于检测到双溢出情况,将所述结果R的有效数的所有分数位作为逻辑零值输出,而不管所述加法电路的输出。
在一个具体实施例中,所述加法电路包括第一加法电路,该第一加法电路被配置为利用第一舍入递增值来执行加法,其假定没有出现溢出情况;以及第二加法电路,该第二加法电路被配置为利用第二舍入递增值来执行加法,其假定存在溢出情况;当执行非类符号相加操作时,如果从所述第二加法电路中出现进位输出,则检测到所述双溢出情况。因此,在出现所述双溢出情况的情形中,结果的指数被设定为比与来自所述第一加法电路的输出相关联的指数大二。
预测电路可采用各种形式,但是,在一个实施例中,所述预测电路包括前零预计电路,该前零预计电路被配置为将前零值作为移位指示来计算,该前零值指示将出现在通过使所述操作数A和B经过非类符号相加所产生的输出中的前零数。
从第二方面来看,本发明提供了一种在数据处理装置中在操作数A和B上执行加法操作以便产生结果R的方法,所述操作数A和B以及所述结果R是每个都具有有效数和指数的浮点值,所述方法包括:基于对在通过使所述操作数A和B经过非类符号相加所产生的输出中将出现的前零数的预测,生成移位指示;在对有效数进行相加之前,通过利用结果预归一化电路来在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃由所述移位指示所判定的操作数A和操作数B二者的有效数的某些最高有效位,以便产生操作数A和B的已修改的有效数;通过参照操作数A和B的指数来检测前位抵消情况的出现;以及对齐加法电路,使其响应于所述前位抵消情况的出现,以执行对操作数A和B的已修改有效数的加法,以便产生所述结果R的有效数。
从第三方面来看,本发明提供了一种用于在操作数A和B上执行加法操作以产生结果R的装置,所述操作数A和B以及所述结果R是每个都具有有效数和指数的浮点值,所述装置包括:预测设备,该预测设备被配置为基于对在通过使所述操作数A和B经过非类符号相加所产生的输出中将出现的前零数的预测,生成移位指示;结果预归一化设备,该结果预归一化设备被配置为在对有效数进行相加之前,在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃由所述移位指示所判定的操作数A和操作数B二者的有效数的某些最高有效位,以便产生操作数A和B的已修改的有效数;操作数分析设备,该操作数分析设备被配置为通过参照操作数A和B的指数来检测前位抵消情况的出现;以及加法设备,该加法设备被配置为在出现所述前位抵消情况的情形中,执行操作数A和B的已修改有效数的相加,以便产生所述结果R的有效数。
附图说明
参照如在附图中所示的实施例,仅以示例的方式来进一步描述本发明,其中:
图1示意性地示出了根据一个实施例的融合乘法相加处理单元;
图2是示出了根据一个实施例的设置在图1的加法电路的有效数处理路径内的组件的示图;
图3A至图3C示意性地示出了根据一个实施例的可被用于产生各种输入到图2的组件的控制信号的电路;
图4是示出了根据一个实施例的如何计算与来自图2的加法器add0的输出相关联的结果的指数的流程图;
图5A和图5B是示出了根据一个实施例的图2的电路的操作的流程图;以及
图6是示出了根据一个实施例的执行图5A的LZA计算所需的步骤的流程图。
具体实施方式
图1示意性地示出了可被用作浮点处理单元的一部分的融合乘法相加处理单元1。以下将描述融合乘法相加单元的各个元件,尽管将理解,为了清楚,该浮点乘法相加单元1还将包括未在图1中示出的另外特征和元件。融合乘法相加单元1被使出为处理具有53位有效数的双精度操作数,尽管该融合乘法相加单元1还可处理带有24位有效数的单精度操作数(或利用具有N位有效数的另一浮点格式表示的浮点数)。
融合乘法相加单元1包括乘法电路4和加法电路8。乘法电路4接收具有53位有效数的两个操作数L和M。乘法电路响应于乘法指令,以将操作数L和M相乘并在线10上输出具有53位有效数的归一并舍入的积L*M。乘法电路4还响应于融合乘法相加指令,以将操作数L和M相乘,从而生成具有106位有效数的未舍入的积L*M。该未舍入的积L*M在总线12上被传输到加法电路8。
加法电路8在总线16上接收操作数A。操作数A具有53位有效数。加法电路还接收如下中的一个或二者:具有53位有效数的操作数B和具有106位有效数的未舍入的积L*M。加法电路8响应于融合乘法相加指令,以将总线16上接收的操作数A加至总线12上接收的未舍入的积L*M。加法电路还响应于相加指令,以将操作数A加至操作数B。不管哪个指令正在被执行,舍入的结果值A+L*M或A+B随后被加法电路8输出。加法电路8的输出可被发送到用于存储的寄存器文件(未示出),或可被转发回至复用器20,该输出值在该复用器20处被选择以用作后续指令的操作数A。
乘法电路4和加法电路8二者都包括用于舍入浮点值的电路(虽然,当乘法电路4被用于执行融合乘法相加指令时,未使用乘法电路4的舍入电路)。通过减少有效数的位数并将舍入值添加到缩短的有效数,对浮点值的舍入被执行,以便产生利用更短的有效数来表示的值。在美国专利申请2006/0117080A1中描述了用于在乘法阶段4期间执行舍入的方法,其全部内容通过引用被结合于此。在美国专利申请2006/0136543A1中描述了在加法阶段8期间执行舍入的方法,其全部内容通过引用被结合于此。这些申请描述了通过将舍入融合到乘法或加法操作中以用于加快浮点值的舍入的技术。因此,在本申请中所描述的舍入电路不必区别于执行乘法或加法操作的乘法电路4或加法电路8的部分,并且,可包括包括至少某些相同的电路,该相同的电路可被有选择地配置以执行舍入或不执行舍入。
如上所述,在单独的乘法和加法阶段中,融合乘法相加单元1执行融合乘法相加指令。虽然这意味着需要多的处理周期来执行单个融合乘法相加指令,但是,由于对不同指令的处理可被交织,对融合乘法相加指令、相加指令或乘法指令的序列的处理可以更快。与现有技术的融合MAC单元相比,对单个乘法或加法指令的处理也是更快的,因为可利用乘法电路或加法电路中的一个而非二者来执行这些处理。仿真结果已经示出,取决于正在处理的应用,融合乘法相加单元1可将指令序列的处理提速3%至23%之间。融合乘法相加单元1在计算ax+by+cz+dw形式的点积方面特别高效,因为这要求融合乘法相加指令的序列。
在公用共同待决美国专利申请No.12/585,668中描述了图1的电路形式,其全部内容通过引用被结合于此。乘法电路4可采用多种形式,只要当执行融合乘法相加指令时其能够输出用于输入到加法器8的未舍入的乘法结果即可。公用共同待决美国专利申请No.12/588,962中描述了合适的乘法电路的一个示例,其全部内容通过引用被结合于此,当将这种乘法器用作融合乘法相加操作的一部分时,在讲乘法结果转发给加法器之前,将不会执行任何舍入内射。
关于加法电路8的构成,当执行融合MAC指令时,使用利用单独的近路径和远路径的传统结构将带来性能问题。具体地,用作操作数之一的未舍入乘法结果的长度是结果R的长度的两倍,并且因此,即便在近路径中存在抵消,也可能需要舍入。但是,近路径通常不提供舍入电路,并且,加法的输出需要在执行舍入之前被归一化。结果,将必须在近路径添加另一流水线阶段,以允许舍入被执行,并且,这将显著地影响加法电路的性能。
图2是示出了设置在新的目标为解决上述问题的加法电路8的有效数处理路径内的组件的示图。
如在执行阶段E1中所示,存在操作数A和操作数B(以后称为opa和opb)的多个源,例如,寄存器文件,从加法器8转发的操作数,从乘法器4转发的操作数,并且,这些各种源在图2中通过框100、110被示意性地示出。在图2中所述的实施例中,假定如果正在执行融合MAC操作,则来自乘法器的未舍入乘法结果L*M被作为opb源提供到图2的加法器。在图2中所示的加法器单元外部的控制电路通过向复用器opa_mux105和opb_mux 115发送合适的控制信号来标识选择哪个输入。
然后,根据操作数的类型(单精度、双精度、或融合乘法输入),下一复用电路120、125从可用位中选择。为了简单,图2中未示出指数电路,因为,大多数计算涉及有效数(指数大多被用来控制对有效数发生了什么)。在流水线阶段E1的结束处,来自复用器120、125的输出被存储在触发器130、135中。
在流水线阶段E2中,存储在触发器130、135二者中的分数值被提供到两个复用器160、165二者,复用器二者通过在指数路径中所确定的“a_larger”信号被控制,以识别opa是否是较大的操作数。然后,复用器160选择与较大的操作数相关联的分数值,并且,复用器165选择与更小的操作数相关联的分数值,流水线阶段E2的结束处,值二者都被扩展至107位并在被存储在相关联的触发器175、185中。具体地,复用器160、165包括用于添加前位的逻辑,以将分数转换成有效数,从而添加归一操作数的逻辑1值和子归一(subnormal)操作数的逻辑0值,由其所选择的子归一操作数具有预定义的指数值(在一个实现中,该预定义的指数值是全零的指数值)。然后,将opa的有效数填充至106位以与opb的有效数相匹配(通过将一系列逻辑零值作为最低有效位添加),另外的额外位被添加至有效数二者,以允许在出现出于稍后讨论的原因可能出现的可能的1位右移(逻辑上,在转换成有效数之前执行1位右移)的情形中捕获所有信息。
但是,仅在流水线阶段E2的结束处才可获得哪个操作数较大的判定。在可获得该信息之前,预测电路(在该情形中,前零检测电路)被使用,以基于对前零(其将出现在通过将操作数opa和opb经过未类符号加法所产生的输出中)的数量的预测来生成移位指示。如果判定将出现前位抵消情况,则该移位指示将被使用,如果opa和opb的指数具有相同值或具有差为1的值,并且,如果非类符号加法被用于在opa和opb上执行加法操作,则这种前位抵消情况出现。
将其牢记于心,如果两个输入指数的低次位不同,则控制信号shift1被设定(即,shift1=expa[0]XOR expb[0])。如果Shift1指示指数差是奇数,则可推断如果前位抵消情况被后续判定为存在,则指数将相差一。因此,当shift1控制信号被设定时,在执行LZA计算之前,更小的分数需要被右移一位。
由于还不知道哪个操作数较大,两个LZA电路150、155被设置,第一个计算fraca减去(如何合适的话,移1位)fracb,而第二个计算fracb减去(如何合适的话,移1位)fraca。当发生这个时,判定操作数A和操作数B哪个较大,以及两个操作数之间的准确的指数差(该电路涉及对指数的处理,并且因此在图2中未示出,但是如参照图3C所稍后讨论的,其仅涉及两个减法)。
在阶段E2的结束处,复用器170随后选择较大的操作数减去(如何合适的话,移1位)更小的操作数的正确的LZA值,并且,将该值存储在触发器180中。如之前所描述的,复用器160和165分别选择较大的操作数和更小的操作数的有效数。还应当注意,复用器165是4:1的复用器,并且还对shift1信号做出反应,该shift1信号被设定为选择更小操作数的有效数的右移1位版本。
如本领域技术人员将理解的,可以以各种方式来构造前零预测电路,例如参见文献“Leading Zero Anticipation and Detection-a Comparison of Methods”,MSchmookler及其他,15th IEEE计算机算术研讨会,第7页至第12页,2001年6月,以及共有美国专利7,668,892,其全部内容通过引用被结合于此。
通过开始流水线阶段E3,知晓操作是类符号加法(LSA)还是非类符号加法(USA)。所有带有指数差为2或更大的LSA和USA具有利用右移电路200被右移指数差的ops的有效数(考虑到,针对指数的奇数差,ops的有效数已经经过了经由复用器165的1位位移)。通过利用左移电路190、195,带有指数差为0或1(即,这些加法带来之前所述的前位抵消情况)的USA具有左移存储在触发器180中的LZA值的op1和ops二者。但是,所应用的左移量被限制为较大的操作数的指数和与子归一值相关联的指数(例如,全零的指数值)之间的差。
由于子归一指数值零和归一指数值一二者都对应于相同的实际指数,因此,如果结果指数是零,则存在1位右移校正的需要。这被在4:1的复用器205、210中处理。具体地,取决于前位抵消情况,复用器205在op1的左移有效数和op1的未移动有效数之间选择,并且,如果需要子归一校正,则选择1位的已校正版本。类似地,取决于前位抵消情况,复用器210在ops的左移有效数和ops的右移有效数之间选择,并且,如果需要子归一校正,则选择1位的已校正版本。
在阶段E3的结束处,两个3:2的加法器215、230被用于组合来自复用器205、210的带有舍入常量内射的两个输出,加法器230假定没有发生溢出,并且,加法器215假定确实发生溢出。稍后将提供对舍入常量的进一步讨论。两个加法器都输出保留进位(carry-save)格式的结果,进位值和保留值分别在阶段E3的结束处被存储在触发器220、225和235、240中。这些触发器的大小是108位,以便捕获可能从3:2的加法器产生的任意进位输出位。
在阶段E4中,通过利用加法器和复用器250、255和260、265,保留进位形式被添加,并且然后,被重新组合为单精度或双精度数。然后,最终结果的有效数被经由复用器270选择,并且,该有效数的分数部分被随后与结果的符号和指数一起存储在触发器275中。触发器275的大小是64位,以容纳1位符号值、52位分数值和11位指数值。关于复用器270如何选择最终结果的有效数,存在四种可能:
可能1-特殊就诶过被选择(其覆盖加法器输出)。在大多数情况下,基于在图2中未示出的指数逻辑,特殊值被选择,如果结果的指数是全一,则特殊结果通常被检测到。特殊结果是如NaN(非数字)和无线的东西,并且,用于处理特殊值的电路是本领域技术人员所熟知的。
可能2=如果非溢出加法器(add0)260的位107被设定,则溢出加法器(add1)250的输出被选择。但是,在一个特定的实施例中,存在该规则的一个例外,针对带有为零的所计算的结果指数的USA操作,该输出未被选择,因为这是不能溢出的独立的子归一情形;在该异常情形中,选择加法器260的输出。
可能3-(1)如果add1(位108)的进位输出被设定,或(2)如果add0的输出的位107被设定,并且,存在带有USA操作和为零的所计算的结果指数的融合输入(后一种情形是子归一双溢出情形),则选择overflow2的结果(其将结果有效数的所有分数位设定为零,并且然后,选择高于针对add1的输出所计算的指数1)。
可能4-在以上可能1-3中所设定的情形之外的任意情形,add0的输出被用来形成结果的有效数。
参见上述图2的电路,可见,其不具有单独的近路径和远路径。在传统的近/远路径加法器中,LZA计算与加法计算同时完成,LZA值被用于归一化和。但是,从对图2的以上讨论中可见,LZA计算更早发生,其在阶段E2被执行,比在阶段E4中的加法早两个周期。然后,通过左移阶段E3中的两个操作数的有效数,所计算的LZA值被用于预归一加法的结果,其丢弃作为结果的那些有效数的若干前位。由于在出现USA操作的情形中,当相加时,这些前位将抵消(即,所有将为零),因此,经由该左移操作,没有信息被丢失。
另外,通过以这种方式预归一化和,其随后确保如果判定出现前位抵消,则来自两个左移电路190、195的输出被用于加法,该移位的有效数现被合适地对齐以用于舍入内射,并且因此,阶段E4中的两个加法器250、260产生被正确舍入的结果。另外,通过具有阶段E4中的两个加法器250、260,在文献“A Small and Fast Leading One Predictor CorrectorCircuit”(作者为C Hinds和D Lutz,关于信号、系统和计算机的阿西罗马会议,第1181页至第1185页,2005年10月)中所描述的LZA校正问题被自动解决。具体地,LZA电路的输出可以是对前零数的预测中的一位输出,但是,如果存在这种错误,则将从加法器add0 260发生溢出,其导致来自加法器add1 250的输出被选择,从而自动校正前零预测中的错误。
在图2的加法器中不存在真正的近路径或远路径。应当使用远路径的操作忽略了LZA结果,并且,将更小的操作数右移从两个操作数的指数差所计算的量。应当使用近路径的操作利用LZA结果左移阶段E3中的操作数。在两种情形中,舍入常量都在阶段E3的结束处被用3:2的加法器相加。
由于融合输入的特性,最终和实际上可获得结果4.0(用对于复用器270的控制中的溢出2表示)。这是由于如下事实:乘法结果未舍入,并且因此,可能具有不正确的指数。作为示例,考虑如下的情形:来自复用器4的乘法结果包括多于54个前一。如果被舍入,则其将具有更高的指数,但是,其还未被舍入。然后,如果经由加法器8中的USA操作将接近该数的数从中减去,则指数可能具有如下三个值中的任意一个,即,等于与add0加法器的输出相关联的结果的指数、一个大于与add0加法器的输出相关联的结果的指数,或两个大于与add0加法器的输出相关联的结果的指数。如将稍后参照图4所讨论的,加法器8处理USA的方式为:将来自add0加法器的输出的指数设定为较大的操作数的指数减1(假定使用右移电路200的输出),或将来自add0加法器的输出的指数设定为等于较大的操作数的指数减去LZA值(假定使用左移电路190、195的输出),并且然后,允许和溢出至下一最大指数。通过未舍入(融合)输入,实际上可以再次溢出至下一个更高的指数,因此,存在用于处理之前所描述的溢出2情况(可能3)的需要。
关于处理子归一,仅需要在阶段E2中将合适的有效数位插入到op1和ops中(针对子归一数而言,这将是0,而针对归一数而言,这将是1),并且然后,通过利用在阶段E3中的4:1的复用器205、210来调整移动量。之后,通过利用参照图2所描述的归一流,子归一被处理,而非需要覆盖最终加法中的溢出2情况(在这种情形中的USA操作的结果可以是子归一、带有最小指数的归一、或带有最小值加1的指数的归一)。
图3A至图3C示出了根据一个实施例的可被设置以便生成输入到图2的组件中的各种控制信号的电路。如在图3A中所示,优选地采用XOR门形式的比较电路300接收操作数A的指数和操作数B的指数二者的最低有效位,并且,在其输出处产生输入到图2的流水线阶段E2的“shift1”信号。因此,将理解,如果这些指数的最低有效位不同,则该shift1信号被设定为逻辑零,否则,其被清至逻辑零值。
图3B示出了操作数分析电路310的操作,该操作数分析电路310被用于在流水线阶段E3期间生成输入到复用器205、210的L(左移)或R(右移)控制信号。具体地,指数差电路315接收操作数A和B的指数,并且,判定这些指数之间的差。USA检测器320从输入操作数二者的符号和由输入指令所指定的相加或相减操作中判定是否将要执行USA操作。然后,L/R生成器325从指数差电路315和USA检测器320二者接收输出。如果操作数A和B的指数具有相同值或具有相差为1的值并且将执行非类符号加法,则这指示出现了前位抵消情况,并且因此,L输出被设定。相反地,如果未出现前位抵消情况,则R输出被设定。在实践中,可利用单个位的输出信号,其中,一个值指示L,而另一值指示R。
图3C示意性地示出了较大操作数检测电路330的操作,该较大操作数检测电路330被用于产生在图2的流水线阶段E2和E3中所使用的“exp diff”信号和“a_larger”信号。较大指数检测器335从操作数A和B的指数中判定哪个是较大的指数,并且然后,电路340将更小指数从较大指数中减去,以便产生exp diff信号。然后,较大分数检测电路345接收操作数A和B二者的分数值,并且,计算出哪个分数较大。较大操作数检测器350从较大指数检测器335和较大分数检测器345接收输出,并且,基于该输入,判定哪个操作数较大。通常,来自较大指数检测器335的输出被用于判定哪个是较大的操作数,但是,如果指数相等,则来自较大分数检测器的输出被用于判定较大的操作数。然后,较大的操作数检测器350生成a_larger信号,如果操作数A较大,则a_larger信号被设定为逻辑一值,并且如果操作数B较大,则a_larger信号被清至逻辑零值。
图4是示出了在指数处理路径(在图2中未示出)中所执行的步骤的流程图,以便判定与从图2的加法器add0 260输出的结果相关联的指数。在步骤360处,判定L值是否已在操作数分析电路310的输出处被设定。如果已经设定,则在步骤365处,与来自加法器260的输出相关联的结果的指数被设定为等于较大操作数的指数减去存储在触发器180中的LZA值。但是,存在较大指数被减去多少的极限,在一个实施例中,不允许被减小至与子归一值相关联的值之下,在一个特定是示例中,该子归一值是全零的指数。
在步骤360处,如果判定L值未被设定,则处理进行到步骤370,在该步骤处判定是否将要执行非类符号相加操作。如果不执行,则处理进行到步骤375,与来自加法器260的输出相关联的结果的指数被设定为等于较大操作数的指数。但是,如果在步骤370处判定将要执行非类符号相加操作,则处理进行到步骤380,与来自加法器260的输出相关联的结果的指数被设定为等于较大操作数的指数减1。
已经判定了与来自加法器260的输出相关联的结果的指数,将理解,与来自加法器250的输出相关联的结果的指数仅被设定为比所计算的指数大一。
如果与来自加法器260的输出相关联的结果的指数是全零,则这指示出现了子归一情况,并且,导致子归一信号被设定并作为输入提供给图2的流水线的阶段E3中的复用器205、210。类似地,如果与来自加法器260的输出相关联的结果的指数是全一,则这指示出现特殊情形,并且,其被用于设定将特殊信号输入到图2的流水线阶段E4期间的复用器270。
图5A和图5B提供示出了根据一个实施例的图2的电路的操作的流程图。在步骤400处,输入操作数A和B被接收,在某些实施例中,该操作数B是操作数L和M的未舍入的相乘结果。之后,在步骤405处,执行前零预测(LZA)计算,稍后参照图6来更加详细地讨论该处理。
之后,步骤410和415被并行执行,在步骤410处,操作数A和B的有效数被左移通过步骤405处所产生的LZA结果所判定的量。在步骤415处,更小操作数的有效数被右移取决于指数差的量。
之后,处理进行到步骤420,判定是否出现前位抵消情况。如果出现,则在步骤425处,通过步骤410所产生的左移有效数被选择。相反地,如果未出现前位抵消情况,则在步骤430处,较大操作数的有效数和更小操作数的右移有效数被选择。
在步骤425或步骤430之后,处理进行到步骤435,判定是否存在子归一情况,通常,如果与加法器260相关联的结果的指数是全零,则检测这个。如果判定存在子归一情况,则处理进行到步骤440,执行对所选有效数的一位校正右移。
在步骤440之后,或直接在步骤435之后,如果不存在子归一情况,则在步骤445处,通过内射舍入,两个加法操作被执行,第一加法假定没有溢出,而第二加法假定溢出情况。
之后,在步骤450处,判定是否检测到特殊情况,如之前所描述的,这通常是如下情形:与来自加法器260的结果相关联的指数是全一。如果出现特殊情况,则处理进行到步骤455,所预定的特殊值被选作结果有效数。但是,假定没有出现特殊情况,则在步骤460处检测到出现溢出2情况。如果是这样,则处理分支到不知465,结果有效数的所有分数位被迫使为零。
假定不存在溢出2情况,则在步骤470处,判定是否存在溢出情况,即,是否存在来自加法器260的进位输出。如果存在,则在步骤475处,第二加法器250的输出被用作结果有效数,而如果没有溢出情况,则第一加法器260的输出被用作结果有效数。在步骤455、465、475和480中的相关的一个之后,在步骤485处,结果有效数被虽有输出。
图6是更加详细地示出了图5A的步骤405的流程图。在步骤500处,判定操作数A和B的指数的最低有效位是否相同。如果相同,则处理进行到步骤505和步骤510,第一候选移位指示和第二候选移位指示被产生,第一候选移位指示假定操作数A较大,而第二候选移位指示假定操作数B较大。
类似地,如果操作数A和B的指数的最低有效位不同,则处理进行到步骤515和520,第一候选移位指示和第二候选移位指示被再次产生,分别假定操作数A较大,或操作数B较大。但是,在步骤515和520的计算中,使用了所假定的更小操作数的1位右移版本。
然后,处理进行到步骤525,判定操作数A是否大于操作数B。如果是,则处理进行到不知530,第一候选移位指示被选作将要存储在触发器180中的LZA结果。但是,如果在步骤525处判定操作数A不比操作数B大,则在步骤535处,第二候选移位指示被选作LZA结果。在步骤530或535之后,在步骤540处,LZA结果随后被存储在触发器180中。
现为了完整,考虑将作为round0和round1输入到图2中的3:2加法器215、230中的值舍入,这些值将取决于所使用的舍入模式。例如,存在四个IEEE 754舍入模式:RZ(向零舍入)、RN(向最接近的偶数舍入)、RM(向负无穷舍入),以及RP(向正无穷舍入)。由于作为符号和幅值所存储的浮点数,RM和RP可考虑针对其范围的向无穷的输入(RU),而RZ可考虑剩余的范围。具体地,针对RP模式,任意正数被向无穷舍入(RU舍入),并且,任意负数未被舍入(RZ舍入),而针对RM模式,任意负数被向无穷舍入(RU舍入),而任意正数未被舍入(RZ舍入)。因此,出于所有实际原因,仅存在三个舍入模式:RZ、RN、RU。
通过内射的舍入意味着添加执行三个舍入模式中的一个的常量。内射舍入的益处是可在执行加法之前发生所需的内射,其避免了需要在加法输出之后进行单独的输入操作。首先考虑具有24位的有效数的单精度浮点数,针对RN模式,1被内射到第24位的右边。针对RU模式,全一的自被内射到第24位的右边。针对RZ模式,不进行内射(即,内射值为零被选择)。
在图2的实施例中,实际上使用了两个舍入常量,因为不确定头24位在哪里。如果在我们对两个数字求和时存在进位,则头24位在当不存在进位输出时其所在位置的向左一位。这就是为什么在阶段E4中设置了两个加法器和两个舍入常量-一个加法器假定存在来自和的进位输出,而另一个假定不存在该进位输出。通过查看低加法器260的进位输出位,可判定哪个加法器是正确的。
因此,当对单精度数字进行相加时,低加法器(add0)的内射舍入值round0是:
前24位:零
第25位:如果使用RU或RN模式,则为一
第26位和剩余位:如果使用RU模式,则为一
当对单精度数字进行相加时,高加法器(add1)的内射舍入值round1是:
前23位:零
第24位:如果使用RU或RN模式,则为一
第25位和剩余位:如果使用RU模式,则为一
双精度数具有53位的有效数,因此,第53位的右边发生内射。否则,逻辑与针对单精度加法器的逻辑完全相同。因此,当对双精度数进行相加时,低加法器(add0)的内射舍入值round0是:
前53位:零
第54位:如果使用RU或RN模式,则为一
第55位和剩余位:如果使用RU模式,则为一
当对双精度数进行相加时,高加法器(add1)的内射舍入值round1是:
前52位:零
第53位:如果使用RU或RN模式,则为一
第54位和剩余位:如果使用RU模式,则为一
根据图2中所描述的加法器,对加法器的输入被布置(在出现前位抵消情况时,经由对结果的预归一化),使得可总使用相同的两个内射常量。
以下文本提供某些示例,其示出了图2的加法电路的统一路径如何处理传统上应当经过加法器的远路径的加法以及传统上应当经过加法器的近路径的加法。
浮点数被表示为符号位和幅值,并且,幅值总是正的。符号位和操作(加法或减法)被评估,以便判定操作是类符号相加(LSA)还是非类符号相加(USA)。
LSA是:
正A加正B
负A加负B
正A减负B
负A减正B
USA是:
正A加负B
负A加正B
正A减正B
负A减负B
针对以下示例,为了清楚,使用仅带有4位有效数和小指数的短格式。实际的示例可具有24位或53位的有效数。为了简单,未包括舍入常量。在以下的示例中,表示为1.011e4的数表示数1.011乘以二的四次幂。
示例1
LSA,经典远路径(LSA永远右移的示例)
1.011 e4
+1.101 e2
在相加之前,我们需要使指数相同,因此更小的数得右移两位。
参照图2,在以上的示例中,将忽略LZA的输出180,利用右移电路200,更小的操作数将被右移,并且,由于不存在溢出,来自add0加法器260的输出将被选择。
示例2
USA右移,经典远路径
1.011 e4
-1.001 e2
在相减之前,我们需要使指数相同,因此,通过右移电路200,更小的数得右移两位。
在两个互补算术中完成的减法的方式是转化减数且相加至被减数(被减数-减数=差)。我们还将减法左移一位的位置并减少指数,使得指数可工作(其为减法,因此,指数可以是小于我们开始时所使用的指数,但是其不能变大)。我们让add0来处理指数变小的情形,而让add1处理差“溢出”的情形。参照图2,在一个实施例中,以上可通过如下操作实现:向阶段E2中的转换器165添加逻辑以转化减数,向阶段E3中的复用器205、210二者添加逻辑以左移两个有效数,并且然后,将作为另一输入的1值添加到阶段E4中的加法器250、260二者。结果可见,加法被执行未:
进位输出意味着正确的答案来自于溢出加法器250,其具有高于一的指数:
1.000 e4(RZ舍入)
注意,在该情形中,如果我们用RU或RN模式舍入,则答案将是1.001 e4。
示例3
带有相同指数的USA,需要左移,经典近路径
1.110 e4
-1.100 e4
转换到两个互补加法,其变为:
该结果不是归一数(归一浮点数应当是1.xxx乘以某个指数的形式)。因此,我们要做的是利用LZA输出180来告诉我们将操作数二者左移多少,并且然后,利用左移电路190、195来执行所需的左移。在该情形中,所预测的LZA是3,因此,加法变为:
进位输出意味着正确的答案来自于溢出加法器250,其具有高于一的指数,即:
1.000 e2
示例4
带有指数差为一的USA,需要左移,经典近路径
1.011 e4
-1.100 e3
这要求右移一位(由复用器165执行)来使得指数相同:
1.011 e4
-0.1100 e4
转换成两个互补加法,其变为:
1.011 e4
+1.0011 e4
+ 1
所预测的LZA是2,因此我们利用左移电路190、195来将两个操作数左移两位,相应地调整指数,以给出:
进位输出意味着正确的答案来自于溢出加法器250,其具有高于一的指数:
1.010 e3
示例5
带有双精度溢出的USA,经典远路径
针对该示例,我们需要输入中的一个来自作为融合乘法相加的一部分的复用器4。该输入将是其他输入的两倍长,并且,由于其未被舍入,与相同的已舍入的结果相比,其可能具有相差一的指数。例如,假定乘法输出是
1.111_1110 e7
(此处的下划线仅是为了使长字符串位更加可读—它并不疑问任何事)
如果我们要通过RU或RN舍入来对其进行舍入,则我们将得到
1.000 e8
这导致有趣的情形,其中,我们可以从积中减去很小的数并使指数升高。此处,这被称为是“双溢出”。例如:
1.111_1110 e7
-1.000 e2
在右移较小的操作数之后,我们得到
1.111_1110 e7
-0.000_0100 e7
转换成两个互补加法,外加进行由于减法(参见示例2)的一位左移,其变为:
进位输出意味着正确的答案来自于溢出加法器250,因此,指数应当高一位。但是,注意,如果我们已经添加了舍入常量(RN或RU),则和将双溢出:
其给出了被正确舍入的答案1.000e8。
考虑图2,检测到该情形的方式是从高加法器add1 250检测溢出,并且,在这种溢出的情形中迫使结果的有效数的所有分数位变为1,并且,将比与上加法器250的输出相关联的指数高一位的指数选作结果的指数。
从以上的描述中将理解,本发明的实施例提供了新的加法器电路,该新的加法器电路包括早期LZA判定(在一个实施例中,其在分数或指数的其他位被比较之前完成),之后是在计算和之前进行对通过左移两个操作数或获得的结果的预归一化。另外,内射舍入被用于所有加法,并且具体地,由于对结果的预归一化,能够被用于带有前位抵消的有效减法。这提供了特别简单并高效的加法器电路,其避免了如在传统的现有技术方法中所采用的对单独的近路径和远路径的需求。还应当注意,根据实施例,无需进行前零校正,因为,如果前零值相差一,则通过利用来自图2的溢出加法器250的输出,其将被自动校正。
当加法器电路与单独的乘法电路相耦合以支持融合乘法相加操作时,实施例的加法器电路特别有益,该乘法器的输出被未经舍入地提供给加法器电路。具体地,当执行融合乘法相加操作时,实施例的加法器电路允许应用内射舍入,由于预归一化电路的操作确保在出现前位抵消时,输入仍旧正确地被对齐以用于内射舍入。
但是,虽然加法器特别适于容纳融合乘法相加操作,但是,基本设计仍旧是对传统的近/远路径加法器的改进,即便设计并不支持融合乘法相加操作也是。如果不支持融合乘法相加操作,则将理解,图2的某些路径的大小可被减少,因为操作数二者的大小都将是53位(假定正在处理的是双精度值)。
根据上述新的加法器设计,传统的加法器的整个近路径被两个左移器和两个LZA电路所替代。定时等同于近/远路径加法器(并且,如果进行融合乘法相加操作,则确实会显著地更好),但是另外,与传统的近/远路径加法器相比,加法器相当地简单并更小。
虽然此处已经描述了发明的具体实施例,但是,将很显然,发明并不限于此,并且,可在发明的范围内做出许多修改和添加。例如,在不偏离本发明的范围的前提下,可用独立权利要求的特征来做出以下从属权利要求的特征的各种组合。
Claims (20)
1.一种用于在操作数A和B上执行加法操作以产生结果R的装置,所述操作数A和B以及所述结果R是浮点值,每个浮点值具有一有效数和一指数,所述装置包括:
预测电路,被配置为基于对使所述操作数A和B经过非类符号相加而产生的输出中将出现的前零数的预测,生成移位指示;
结果预归一化电路,被配置为在对有效数进行相加之前,在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃操作数A和操作数B二者的有效数的由所述移位指示所确定的数目的最高有效位,以便产生操作数A和B的已修改的有效数;
操作数分析电路,被配置为通过参照操作数A和B的指数来检测前位抵消情况的出现;以及
加法电路,被配置为在出现所述前位抵消情况的情形中,执行操作数A和B的已修改有效数的相加,以便产生所述结果R的有效数;
所述加法电路被配置为在不存在所述前位抵消情况的情形中,执行操作数A和B的有效数的相加而不使用所述结果预归一化电路产生的已修改的有效数,以便产生所述结果R的有效数;
其中:
所述操作数B是在两个浮点操作数上所执行的乘法操作的结果,并且,被未舍入地作为对所述装置的输入而提供,使得所述结果R表示融合乘法相加操作的结果;
所述结果R的有效数具有N位并且所述操作数B的有效数大于N位,这是由于所述操作数B被未舍入地提供;
所述加法电路被配置为在加法期间执行内射舍入,以添加舍入递增值;并且
在所述加法电路之前的所述结果预归一化电路的操作确保操作数A和B的已修改的有效数对于内射舍入被正确对齐。
2.根据权利要求1所述的装置,其中,如果所述操作数A和B的指数具有相同值或具有相差1的值,并且,如果非类符号相加被用于在所述操作数A和B上执行加法操作,则所述操作数分析电路检测所述前位抵消情况的出现。
3.根据权利要求1所述的装置,其中,所述预测电路针对如下情形计算移位指示:所述非类符号相加导致操作数A和B中的较小数被从操作数A和B中的较大数中减去。
4.根据权利要求3所述的装置,其中:
在所述预测电路开始计算前零值时,对操作数A和B中的哪个较大的判断是不可用的;并且
所述预测电路被布置为产生第一候选移位指示和第二候选移位指示,所述第一候选移位指示假定操作数A大于操作数B,而所述第二候选移位指示假定操作数B大于操作数A。
5.根据权利要求4所述的装置,还包括:
较大操作数检测电路,用于判断操作数A和操作数B中的哪个是较大的操作数;以及
选择电路,该选择电路响应于所述较大操作数检测电路,并且,被配置为:如果操作数A是较大的操作数,则将所述第一候选移位指示选作移位指示,而如果操作数B是较大的操作数,则将所述第二候选移位指示选作移位指示。
6.根据权利要求3所述的装置,还包括:
比较电路,该比较电路被配置为输出比较结果,该比较结果指示操作数A的指数的最低有效位是否与操作数B的指数的最低有效位相同;
如果所述比较结果指示指数的最低有效位相同,则所述预测电路针对如下情形来计算移位指示:所述非类符号相加导致操作数A和B中的较小数被从操作数A和B的较大数中减去;并且
如果所述比较结果指示指数的最低有效位不同,则所述预测电路针对如下情形来计算移位指示:所述非类符号相加导致操作数A和B中的较小数的右移1位版本被从操作数A和B的较大数中减去。
7.根据权利要求1所述的装置,其中,所述加法电路包括:
第一加法电路,该第一加法电路被配置为利用第一舍入递增值来执行加法,其假定没有出现溢出情况;以及
第二加法电路,该第二加法电路被配置为利用第二舍入递增值来执行加法,其假定出现了溢出情况;
在出现前零校正情况的情形中,所述加法电路被配置为将由所述第二加法电路从操作数A和B的已修改的有效数所产生的结果作为所述结果R的有效数输出。
8.根据权利要求7所述的装置,其中,当所述加法电路执行对操作数A和B的已修改有效数的相加时,如果从所述第一加法电路产生了进位,则检测到所述前零校正情况。
9.根据权利要求1所述的装置,其中:
所述结果预归一化电路通过在操作数A和操作数B二者的有效数上执行左移操作来执行所述移位操作,以便产生操作数A和B的已修改的有效数。
10.根据权利要求1所述的装置,还包括:
对齐电路,该对齐电路被配置为执行对齐操作,以在对有效数进行相加之前,对操作数A和B的较小数的有效数以及操作数A和B的较大数的有效数进行对齐;以及
如果未出现所述前位抵消情况,则所述加法电路被配置为对被所述对齐电路对齐的操作数A和B的有效数进行相加。
11.根据权利要求10所述的装置,其中,所述对齐电路通过在操作数A和B的较小数的有效数上执行右移操作来执行所述对齐操作,移位的位数取决于操作数A和B的指数之间的差。
12.根据权利要求1所述的装置,其中,所述装置被配置为一系列流水线阶段,并且,所述结果预归一化电路位于所述加法电路所处的后续流水线阶段之前的流水线阶段中。
13.根据权利要求12所述的装置,其中,所述预测电路位于所述结果预归一化电路所处的所述流水线阶段之前的在先流水线阶段中。
14.根据权利要求1所述的装置,还包括:
移位校正电路,该移位校正电路响应于检测到子归一情况,在输入到所述加法电路之前,执行对操作数A和B的已修改有效数的一位校正右移。
15.根据权利要求14所述的装置,其中,如果所述结果R的指数采用预定义值,则检测到所述子归一情况。
16.根据权利要求1所述的装置,还包括:
结果有效数输出电路,该结果有效数输出电路响应于检测到双溢出情况,将所述结果R的有效数的所有分数位作为逻辑零值输出,而不管所述加法电路的输出。
17.根据权利要求16所述的装置,其中,所述加法电路包括:
第一加法电路,该第一加法电路被配置为利用第一舍入递增值来执行加法,其假定没有出现溢出情况;以及
第二加法电路,该第二加法电路被配置为利用第二舍入递增值来执行加法,其假定存在溢出情况;
当执行非类符号相加操作时,如果从所述第二加法电路中出现进位,则检测到所述双溢出情况;并且
在出现所述双溢出情况的情形中,结果的指数被设定为比与来自所述第一加法电路的输出相关联的指数大2。
18.根据权利要求1所述的装置,其中,所述预测电路包括前零预计电路,该前零预计电路被配置为将前零值作为移位指示来计算,该前零值指示将出现在通过使所述操作数A和B经过非类符号相加所产生的输出中的前零数。
19.一种在数据处理装置中在操作数A和B上执行加法操作以便产生结果R的方法,所述操作数A和B以及所述结果R是浮点值,每个浮点值具有一有效数和一指数,所述方法包括:
基于对在使所述操作数A和B经过非类符号相加而产生的输出中将出现的前零数的预测,生成移位指示;
在对有效数进行相加之前,通过利用结果预归一化电路来在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃操作数A和操作数B二者的有效数的由所述移位指示所确定的数目的最高有效位,以便产生操作数A和B的已修改的有效数;
通过参照操作数A和B的指数来检测前位抵消情况的出现;以及
将加法电路布置为响应于所述前位抵消情况的出现,以执行对操作数A和B的已修改有效数的加法,以便产生所述结果R的有效数;
将加法电路在布置为在不存在所述前位抵消情况的情形中,执行操作数A和B的有效数的相加而不使用所述结果预归一化电路产生的已修改的有效数,以便产生所述结果R的有效数;
其中:
所述操作数B是在两个浮点操作数上所执行的乘法操作的结果,并且,被未舍入地作为对所述装置的输入而提供,使得所述结果R表示融合乘法相加操作的结果;
所述结果R的有效数具有N位并且所述操作数B的有效数大于N位,这是由于所述操作数B被未舍入地提供;
所述加法电路被配置为在加法期间执行内射舍入,以添加舍入递增值;并且
在所述加法电路之前的所述结果预归一化电路的操作确保操作数A和B的已修改的有效数对于内射舍入被正确对齐。
20.一种用于在操作数A和B上执行加法操作以产生结果R的装置,所述操作数A和B以及所述结果R是浮点值,每个浮点值具有一有效数和一指数,所述装置包括:
预测设备,该预测设备被配置为基于对使所述操作数A和B经过非类符号相加而产生的输出中将出现的前零数的预测,生成移位指示;
结果预归一化设备,该结果预归一化设备被配置为在对有效数进行相加之前,在操作数A和操作数B二者的有效数上执行移位操作,所述移位操作用于丢弃操作数A和操作数B二者的有效数的由所述移位指示所确定的数目的最高有效位,以便产生操作数A和B的已修改的有效数;
操作数分析设备,该操作数分析设备被配置为通过参照操作数A和B的指数来检测前位抵消情况的出现;以及
加法设备,该加法设备被配置为在出现所述前位抵消情况的情形中,执行操作数A和B的已修改有效数的相加,以便产生所述结果R的有效数;
所述加法设备还用于在不存在所述前位抵消情况的情形中,执行操作数A和B的有效数的相加而不使用所述结果预归一化电路产生的已修改的有效数,以便产生所述结果R的有效数;
其中:
所述操作数B是在两个浮点操作数上所执行的乘法操作的结果,并且,被未舍入地作为对所述装置的输入而提供,使得所述结果R表示融合乘法相加操作的结果;
所述结果R的有效数具有N位并且所述操作数B的有效数大于N位,这是由于所述操作数B被未舍入地提供;
所述加法电路被配置为在加法期间执行内射舍入,以添加舍入递增值;并且
在所述加法电路之前的所述结果预归一化电路的操作确保操作数A和B的已修改的有效数对于内射舍入被正确对齐。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/929,827 | 2011-02-17 | ||
US12/929,827 US8965945B2 (en) | 2011-02-17 | 2011-02-17 | Apparatus and method for performing floating point addition |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102707921A CN102707921A (zh) | 2012-10-03 |
CN102707921B true CN102707921B (zh) | 2017-06-30 |
Family
ID=45814184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210039154.2A Active CN102707921B (zh) | 2011-02-17 | 2012-02-17 | 用于执行浮点加法的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8965945B2 (zh) |
JP (1) | JP6001276B2 (zh) |
CN (1) | CN102707921B (zh) |
GB (1) | GB2488863B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013209657A1 (de) * | 2013-05-24 | 2014-11-27 | Robert Bosch Gmbh | FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen |
US9361267B2 (en) | 2013-09-03 | 2016-06-07 | International Business Machines Corporation | Splitable and scalable normalizer for vector data |
US9830129B2 (en) | 2013-11-21 | 2017-11-28 | Samsung Electronics Co., Ltd. | High performance floating-point adder with full in-line denormal/subnormal support |
US9461667B2 (en) | 2013-12-30 | 2016-10-04 | Samsung Electronics Co., Ltd. | Rounding injection scheme for floating-point to integer conversion |
GB2522194B (en) * | 2014-01-15 | 2021-04-28 | Advanced Risc Mach Ltd | Multiply adder |
WO2016003740A1 (en) | 2014-07-02 | 2016-01-07 | Via Alliance Semiconductor Co., Ltd. | Split-path fused multiply-accumulate operation using first and second sub-operations |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
US10019227B2 (en) | 2014-11-19 | 2018-07-10 | International Business Machines Corporation | Accuracy-conserving floating-point value aggregation |
GB2537419B (en) * | 2015-04-17 | 2021-09-01 | Advanced Risc Mach Ltd | Accumulation of floating-point values |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US9817662B2 (en) | 2015-10-24 | 2017-11-14 | Alan A Jorgensen | Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof |
US10540143B2 (en) | 2015-10-24 | 2020-01-21 | Alan A. Jorgensen | Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof |
US10114642B2 (en) * | 2015-12-20 | 2018-10-30 | Intel Corporation | Instruction and logic for detecting the floating point cancellation effect |
US10671347B2 (en) | 2016-01-28 | 2020-06-02 | International Business Machines Corporation | Stochastic rounding floating-point multiply instruction using entropy from a register |
US10489152B2 (en) * | 2016-01-28 | 2019-11-26 | International Business Machines Corporation | Stochastic rounding floating-point add instruction using entropy from a register |
US10061561B2 (en) * | 2016-09-07 | 2018-08-28 | Arm Limited | Floating point addition with early shifting |
US10157059B2 (en) * | 2016-09-29 | 2018-12-18 | Intel Corporation | Instruction and logic for early underflow detection and rounder bypass |
US10078512B2 (en) | 2016-10-03 | 2018-09-18 | Via Alliance Semiconductor Co., Ltd. | Processing denormal numbers in FMA hardware |
US10303438B2 (en) * | 2017-01-16 | 2019-05-28 | International Business Machines Corporation | Fused-multiply-add floating-point operations on 128 bit wide operands |
US10140093B2 (en) * | 2017-03-30 | 2018-11-27 | Arm Limited | Apparatus and method for estimating a shift amount when performing floating-point subtraction |
CN107168678B (zh) * | 2017-05-09 | 2020-10-27 | 清华大学 | 一种乘加计算装置及浮点乘加计算方法 |
CN107291420B (zh) * | 2017-06-27 | 2020-06-05 | 上海兆芯集成电路有限公司 | 整合算术及逻辑处理的装置 |
US10241756B2 (en) | 2017-07-11 | 2019-03-26 | International Business Machines Corporation | Tiny detection in a floating-point unit |
JP2019141327A (ja) * | 2018-02-21 | 2019-08-29 | 株式会社三洋物産 | 遊技機 |
JP7115211B2 (ja) * | 2018-10-18 | 2022-08-09 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US11119729B2 (en) * | 2019-03-28 | 2021-09-14 | Arm Limited | Alignment shifting and incrementing to determine a rounded result of adding first and second floating-point operands |
CN111753317A (zh) * | 2020-05-27 | 2020-10-09 | 长沙睿永信息技术有限公司 | 一种等长数字加密的实现方法 |
WO2020264540A2 (en) * | 2020-05-30 | 2020-12-30 | Futurewei Technologies, Inc. | Methods and apparatus for efficient denormal handling in floating-point units |
US11720328B2 (en) * | 2020-06-26 | 2023-08-08 | Advanced Micro Devices, Inc. | Processing unit with small footprint arithmetic logic unit |
US11983237B2 (en) * | 2021-02-21 | 2024-05-14 | Ceremorphic, Inc. | Floating point dot product multiplier-accumulator |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010508A (en) * | 1989-02-14 | 1991-04-23 | Intel Corporation | Prenormalization for a floating-point adder |
US5633819A (en) * | 1995-10-24 | 1997-05-27 | Exponential Technology, Inc. | Inexact leading-one/leading-zero prediction integrated with a floating-point adder |
US6131104A (en) * | 1998-03-27 | 2000-10-10 | Advanced Micro Devices, Inc. | Floating point addition pipeline configured to perform floating point-to-integer and integer-to-floating point conversion operations |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
CN101178645A (zh) * | 2007-12-20 | 2008-05-14 | 清华大学 | 一种并行浮点乘加单元 |
US7433911B2 (en) * | 2004-12-21 | 2008-10-07 | Arm Limited | Data processing apparatus and method for performing floating point addition |
US7461117B2 (en) * | 2005-02-11 | 2008-12-02 | International Business Machines Corporation | Floating point unit with fused multiply add and method for calculating a result with a floating point unit |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4969118A (en) * | 1989-01-13 | 1990-11-06 | International Business Machines Corporation | Floating point unit for calculating A=XY+Z having simultaneous multiply and add |
US5027308A (en) * | 1989-02-14 | 1991-06-25 | Intel Corporation | Circuit for adding/subtracting two floating point operands |
JPH0635671A (ja) * | 1992-07-14 | 1994-02-10 | Matsushita Electric Ind Co Ltd | 浮動小数点加減算装置 |
JPH07121353A (ja) * | 1993-10-20 | 1995-05-12 | Matsushita Electric Ind Co Ltd | 浮動小数点加減算装置 |
US5631859A (en) | 1994-10-27 | 1997-05-20 | Hewlett-Packard Company | Floating point arithmetic unit having logic for quad precision arithmetic |
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
US6223198B1 (en) * | 1998-08-14 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and apparatus for multi-function arithmetic |
US6085208A (en) * | 1997-10-23 | 2000-07-04 | Advanced Micro Devices, Inc. | Leading one prediction unit for normalizing close path subtraction results within a floating point arithmetic unit |
EP1039372A4 (en) | 1997-12-17 | 2005-02-02 | Ultraclean Technology Res Inst | METHOD AND SEMICONDUCTOR CIRCUIT FOR PERFORMING ARITHMETIC OPERATIONS |
US7346643B1 (en) * | 1999-07-30 | 2008-03-18 | Mips Technologies, Inc. | Processor with improved accuracy for multiply-add operations |
US6594679B1 (en) | 2000-03-20 | 2003-07-15 | International Business Machines Corporation | Leading-zero anticipator having an independent sign bit determination module |
CA2327924A1 (en) | 2000-12-08 | 2002-06-08 | Ibm Canada Limited-Ibm Canada Limitee | Processor design for extended-precision arithmetic |
US7392273B2 (en) * | 2002-12-20 | 2008-06-24 | International Business Machines Corporation | High-sticky calculation in pipelined fused multiply/add circuitry |
US7337202B2 (en) * | 2003-12-24 | 2008-02-26 | International Business Machines Corporation | Shift-and-negate unit within a fused multiply-adder circuit |
US7428566B2 (en) | 2004-11-10 | 2008-09-23 | Nvidia Corporation | Multipurpose functional unit with multiply-add and format conversion pipeline |
US7225323B2 (en) * | 2004-11-10 | 2007-05-29 | Nvidia Corporation | Multi-purpose floating point and integer multiply-add functional unit with multiplication-comparison test addition and exponent pipelines |
US8015231B2 (en) | 2004-11-30 | 2011-09-06 | Arm Limited | Data processing apparatus and method for performing floating point multiplication |
US7437400B2 (en) | 2005-03-14 | 2008-10-14 | Arm Limited | Data processing apparatus and method for performing floating point addition |
US7668892B2 (en) | 2005-08-25 | 2010-02-23 | Arm Limited | Data processing apparatus and method for normalizing a data value |
US7912887B2 (en) * | 2006-05-10 | 2011-03-22 | Qualcomm Incorporated | Mode-based multiply-add recoding for denormal operands |
US8037118B2 (en) * | 2007-04-10 | 2011-10-11 | Eric Quinnell | Three-path fused multiply-adder circuit |
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US8239440B2 (en) | 2008-03-28 | 2012-08-07 | Oracle America, Inc. | Processor which implements fused and unfused multiply-add instructions in a pipelined manner |
US8495121B2 (en) | 2008-11-20 | 2013-07-23 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
US8489663B2 (en) | 2009-06-05 | 2013-07-16 | Advanced Micro Devices | Decimal floating-point adder with leading zero anticipation |
-
2011
- 2011-02-17 US US12/929,827 patent/US8965945B2/en active Active
-
2012
- 2012-01-18 GB GB1200822.3A patent/GB2488863B/en active Active
- 2012-02-16 JP JP2012031642A patent/JP6001276B2/ja active Active
- 2012-02-17 CN CN201210039154.2A patent/CN102707921B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010508A (en) * | 1989-02-14 | 1991-04-23 | Intel Corporation | Prenormalization for a floating-point adder |
US5633819A (en) * | 1995-10-24 | 1997-05-27 | Exponential Technology, Inc. | Inexact leading-one/leading-zero prediction integrated with a floating-point adder |
US6131104A (en) * | 1998-03-27 | 2000-10-10 | Advanced Micro Devices, Inc. | Floating point addition pipeline configured to perform floating point-to-integer and integer-to-floating point conversion operations |
US7433911B2 (en) * | 2004-12-21 | 2008-10-07 | Arm Limited | Data processing apparatus and method for performing floating point addition |
US7461117B2 (en) * | 2005-02-11 | 2008-12-02 | International Business Machines Corporation | Floating point unit with fused multiply add and method for calculating a result with a floating point unit |
CN101174200A (zh) * | 2007-05-18 | 2008-05-07 | 清华大学 | 一种浮点乘加融合单元的五级流水线结构 |
CN101178645A (zh) * | 2007-12-20 | 2008-05-14 | 清华大学 | 一种并行浮点乘加单元 |
Non-Patent Citations (3)
Title |
---|
Hardware Designs for Decimal Floating-Point Addition and Related Operations;Liang-Kai wang 等;《IEEE TRANSACTIONS ON COMPUTERS》;20090331;第58卷(第3期);第322-335页 * |
Leading-Zero Anticipatory Logic for High-Speed Floating Point Addition;Hiroaki Suzuki 等;《IEEE JOURNAL OF SOLID-STATE CIRCUITS》;19960831;第31卷(第8期);第1157-1164页 * |
快速浮点加法器的全定制设计;金光海;《计算机与现代化》;20041231(第3期);第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
US8965945B2 (en) | 2015-02-24 |
GB2488863B (en) | 2017-12-06 |
GB201200822D0 (en) | 2012-02-29 |
GB2488863A (en) | 2012-09-12 |
US20120215823A1 (en) | 2012-08-23 |
CN102707921A (zh) | 2012-10-03 |
JP2012174269A (ja) | 2012-09-10 |
JP6001276B2 (ja) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102707921B (zh) | 用于执行浮点加法的装置和方法 | |
JP3689183B2 (ja) | 正確な浮動小数点除算/平方根演算を実現する正確、かつ効果的なスティッキー・ビット計算 | |
US7912887B2 (en) | Mode-based multiply-add recoding for denormal operands | |
Metzgen | A high performance 32-bit ALU for programmable logic | |
KR100264962B1 (ko) | 결합된 선두 1 및 선두 제로 예상기 | |
JP3609512B2 (ja) | 演算器 | |
EP1782268A1 (en) | Method for an efficient floating point alu | |
EP3301568A1 (en) | Processing denormal numbers in fma hardware | |
US7392273B2 (en) | High-sticky calculation in pipelined fused multiply/add circuitry | |
Akkaş et al. | Dual-mode floating-point multiplier architectures with parallel operations | |
US8370415B2 (en) | Overflow detection and clamping with parallel operand processing for fixed-point multipliers | |
US20070174379A1 (en) | Pre-saturating fixed-point multiplier | |
CN103870237B (zh) | 预测符号数字的装置与方法 | |
Chugh et al. | Logarithmic arithmetic as an alternative to floating-point: A review | |
US7587444B2 (en) | Data value addition | |
US7016930B2 (en) | Apparatus and method for performing operations implemented by iterative execution of a recurrence equation | |
US8745117B2 (en) | Arithmetic logic unit for use within a flight control system | |
US7356553B2 (en) | Data processing apparatus and method for determining a processing path to perform a data processing operation on input data elements | |
US20170090869A1 (en) | Apparatus and method for floating-point multiplication | |
US9229686B2 (en) | Accuracy configurable adders and methods | |
He et al. | Multiply-add fused float point unit with on-fly denormalized number processing | |
US11789701B2 (en) | Controlling carry-save adders in multiplication | |
WO1989009440A1 (en) | Fast adder | |
Farmahini-Farahani et al. | FPGA implementation of a 64-Bit BID-based decimal floating-point adder/subtractor | |
US20180336013A1 (en) | Arithmetic unit and control method for arithmetic unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180528 Address after: cambridge Co-patentee after: Anne science and Technology (China) Co., Ltd. Patentee after: Advanced Risc Machines Ltd. Address before: cambridge Patentee before: Advanced Risc Machines Ltd. |