专利名称:算术运算单元、信息处理设备和算术运算方法
技术领域:
本发明涉及用于通过使用算术运算单元中的浮点乘法加法器(FMA)中的黏着位(sticky bit)对算术运算结果进行舍入的技术。更具体而言,本发明涉及当使用预测理论时用于有效获得黏着位的技术,其中预测理论确定在预定位(例如,“1”位)的误差范围内在算术运算结果的舍入处理中使用的归一化移位量。
背景技术:
这里使用的浮点乘法加法器(FMA)例如被构造为如图12所示。图12所示的浮点乘法加法器100包括右移位器(整直器(aligner))10、乘法器[CSA(进位保留加法器)树]11、CSA(进位保留加法器)12、绝对值加法器(Abs.加法器)13、移位量计算器[L.Z.(前导零)预测器]20、归一化器(左移位器)300和舍入器400。
浮点乘法加法器100支持遵照IEEE(电子及电气工程师协会)754的单精度算术和双精度算术。
右移位器10、乘法器11、CSA 12和绝对值加法器13一起用作乘法加法器,该乘法加法器执行具有三个操作数(图12中的“OP1”、“OP2”和“OP3”)的浮点乘法加法算术运算。
移位量计算器20确定从来自绝对值加法器13的输出数据(算术运算结果;参考稍后将描述的图13)的开头起连续有多少个零。这个结果是要被输入到归一化器300的移位量。即,移位量计算器20计算由归一化器300在左移位处理(归一化处理)中使用的归一化移位量。
在浮点乘法加法器100中,移位量计算器20与绝对值加法器13的处理并行地计算归一化移位量,以便实现高速运算。移位量计算器20不是使用来自绝对值加法器13的输出数据而是使用来自前级中CSA 12的输出数据(即,绝对值加法器13的输入数据)来计算归一化移位量。移位量计算器20计算的归一化移位量是被表示为“7”位的数据,并且被输出到归一化器300。
在移位量计算器20中,所计算的归一化移位量有些时候不足“1”位。
归一化器300通过使用移位量计算器20计算出的归一化移位量来对来自绝对值加法器13的输出数据(下文中被称为算术运算结果)进行移位,其中算术运算结果中的预定位位置处的值总是被归一化器300设置为“1”。
舍入器400对归一化器300归一化的算术运算结果进行舍入。舍入器400生成自身进行的舍入处理所需的黏着位。即,当在除算术运算结果中的假数(mantissa)之外要被省略的区域(黏着位生成区域;参考稍后描述的图14和15)中存在“1”时,舍入器400执行舍入处理以将“1”添加到假数,以便改进作为来自浮点乘法加法器100的输出数据的算术运算结果中的假数(稍后描述的图14和15)的精度。
如图13所示,作为来自绝对值加法器13的输出数据的算术运算结果,是具有“128”位长度的数据(由“0”和“1”构成的数据),该“128”位例如被表示为C<127:0>。顺带提及,C<127:125>是固定值“000”。
当浮点乘法加法器100支持单精度算术时,如图14所示形成来自归一化器300并被归一化器300归一化的输出数据(R<127:0>)。
在“128”位的算术运算结果中,由来自最高数位的“4”个位构成的R<127:124>是固定值字段,由“23”个位构成的R<123:101>是假数,随后的R<100>是G(保护)位,R<99>是R(舍入)位,并且剩余的由“99”位构成的R<98:0>是黏着位生成区域,其是用于生成黏着位的区域。
当浮点乘法加法器100支持双精度算术时,如图15所示形成来自归一化器300并被归一化器300归一化的输出数据(R<127:0>)。
在“128”位的算术运算结果中,由来自最高数位的“4”个位构成的R<127:124>是固定值字段,由“52”个位构成的R<123:72>是假数,随后的R<71>是G(保护)位,R<70>是R(舍入)位,并且剩余的由“70”位构成的R<69:0>是黏着位生成区域,其是用于生成黏着位的区域。
在图14和15分别示出的单精度算术和双精度算术的情形中,R<127:124>是固定值字段,其值是“0000”,但是R<124>的值总是被归一化器300的归一化处理设置为“1”。
图16示出了归一化器300和舍入器400的结构。如图16所示,归一化器300包括多个移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位左移位器(1bit左移位器)35。
第一到第四移位器31至34通过使用由移位量计算器20计算出的作为具有“7”位长度数据的归一化移位量SA<6:0>(SA移位量),对算术运算结果归一化(左移位)。
由于输入数据(算术运算结果)是如图13所示的“128”位数据,所以由第一到第四移位器31至34所获得的移位量(即,由移位量计算器20计算出的归一化移位量)最大是“127”位。因此,第一移位器31基于7位长数据中的1位数据可以移位作为归一化移位量的“64”位或“0”位,第二移位器32基于7位长数据中的2位数据可以移位“48”、“32”、“16”或“0”位,第三移位器33基于7位长数据中的2位数据可以移位“12”、“8”、“4”或“0”位,并且第四移位器34基于7位长数据中的2位数据可以移位“3”、“2”、“1”或“0”位。
一位移位器35确定预定位位置(这里是R<124>)处的值是否被移位变为“1”,以作为第四移位器34的归一化处理的结果。当预定位位置处的值不是“1”时,一位移位器35确定移位量计算器20计算出的归一化移位量不足“1”位,从而第四移位器34进一步将由第四移位器34归一化的算术运算结果向左移位“1”位。这样,预定位位置处的数据为“1”。
即,一位移位器35确定从第四移位器34供应的输出数据的预定位位置处的值是否为“1”。当值为“1”时,一位移位器35不执行移位处理。当由于移位量计算器20计算出的归一化移位量不足“1”位因而预定位位置处的值是“0”时,一位移位器35将来自第四移位器34的输出数据仅移位“1”位,使得预定位位置处的值为“1”,以便完成归一化处理。
如图16所示,舍入器400包括增量器41、黏着位生成器42、判定舍入单元43和选择电路44。
增量器(incrementer)41执行舍入处理以将“1”添加到归一化器300归一化的算术运算结果中的假数(对于单精度算术是R<123:101>,对于双精度算术是R<123:72>)。
黏着位生成器42生成判定舍入单元43使用的黏着位以确定由增量器41舍入的算术运算结果是否被最终输出。黏着位生成器42通过对黏着位生成区域中的所有数据执行OR操作确定数据“1”是否被包括在黏着位生成区域中。当至少一个“1”被包括在黏着位生成区域中的时候,黏着位生成器42将黏着位设置为“1”。
在单精度算术的情形中,黏着位生成器42通过对R<98:0>中“99”位的数据执行OR操作,确定“1”是否存在于黏着位生成区域中,从而生成黏着位。在双精度算术的情形中,黏着位生成器42通过对R<69:0>中“70”位的数据执行OR操作来生成黏着位。
判定舍入单元43基于黏着位生成器42生成的黏着位、作为算术运算结果中假数的最低有效位的L(最低有效)位、G(保护)位、R(舍入)位(参考图14和15)、从外部输入的RD(舍入方向)位和SIGN位,确定舍入处理是否是必需的。并且,判定舍入单元43将确定的结果输出到选择电路44。
选择电路44基于由判定舍入单元43获得的确定结果,输出经由增量器41输入的经舍入的算术运算结果或者从归一化器300输出的原样的算术运算结果。
即,当判定舍入单元43确定舍入处理是必要(作为确定结果)的时候,选择电路44输出由增量器41舍入的算术运算结果。当判定舍入单元43确定舍入处理不是必要(作为确定结果)的时候,选择电路44输出未经舍入的算术运算结果,该算术运算结果是从归一化器300原样输出的。
已经存在这样的一种技术,其通过利用基于归一化移位量而生成的屏蔽码(mask)屏蔽归一化之前的乘法加法运算结果中的假数,来生成黏着位(例如,参见日本专利申请早期公开No.平8-212192;下文中被称为专利文件1)。
为了黏着位生成器42生成黏着位,在图12所示的公知浮点乘法加法器100中需要对最大长度为99位的数据进行或(OR)运算。与增量器41所处理的“56”位相比,这引起更长的延迟,增量器41处理“56”位AND电路处理56位长数据大致相同。
此外,在浮点乘法加法器100中,归一化器300归一化算术运算结果,黏着位生成器42生成黏着位,然后判定舍入单元43判定舍入,从而选择数据。因此,在从归一化器300输出数据时的时刻和从舍入器400输出数据时的时刻之间产生大的延迟(即,来自浮点乘法加法器100)。
近年来,安装浮点乘法加法器100的中央处理单元的频率大部分超过2GHz。由于超过2GHz的这种频率的周期时间非常短,所以难以在归一化器300中在一个周期内执行归一化处理,其需要等于或大于具有128位宽度的移位器(左移位器)所需要的延迟时间的延迟时间。舍入器400当然更难以在相同周期时间内执行处理。因此,一般在归一化器300进行的处理和舍入器400进行的处理之间划分流水线级(pipeline stage),如图17中的虚线Y所示。图17中示出的示例支持单精度算术。如虚线X所示,在第一移位器31进行的处理和第二移位器32进行的处理之间划分流水线级。如虚线Z所示,在选择电路44输出结果之后划分流水线级。
当如图17所示划分流水线级的时候,需要在划分流水线级的位置处锁存数据。在归一化器300进行的处理和舍入器400进行的处理之间的边界上,锁存“128”位的数据。即,在该分级锁存中,仅被黏着位生成器42用来生成黏着位的黏着位生成区域中的“99”位数据(R<98:0>)必须被锁存,这引起了用于分级锁存的配置和配线(物料量)的大量增加。当支持双精度算术时,黏着位生成区域中的70位长数据(R<69:0>)必须被锁存,以便仅生成黏着位。
对于上面的专利文件1中公开的技术,需要制造两种屏蔽码,一种屏蔽码在归一化移位量没有不足“1”位时使用,一种屏蔽码在归一化移位量不足“1”位时使用,以便应对移位量计算器(最高数位检测器单元)所计算的归一化移位量不足“1”位的情形。
然后,需要采用方法(1)或方法(2),在方法(1)中,根据归一化处理的结果确定归一化移位量是否不足“1”位,并且使用两种屏蔽码中的任一种;在方法(2)中,准备好通过使用两种屏蔽码所获得的处理结果,并且基于归一化处理的结果选择处理结果中的任一个。
然而,当采用方法(1)时,延迟变大。当采用方法(2)时,用于屏蔽的OR操作量和硬件资源(物料量)增加。
发明内容
考虑到上述问题,本发明的目的是缩短生成黏着位所需的周期时间以及高效生成黏着位,同时减少用于生成黏着位的硬件资源。
因此,本发明提供了一种算术运算单元,该算术运算单元通过使用黏着位对算术运算结果执行舍入处理,所述黏着位代表在算术运算结果被归一化的时候是否已被移位了“1”,所述算术运算单元包括算术运算装置,用于输出算术运算结果;具有至少两个或更多移位装置的归一化器,用于对算术运算结果执行归一化处理;移位量计算器,用于计算所述多个移位装置的多个移位量;黏着位预测装置,用于通过使用所述多个移位量生成中间黏着位,中间黏着位是在算术运算结果被归一化时是否要移位“1”的预测结果;以及黏着位生成器,用于通过使用中间黏着位生成黏着位。
根据本发明的算术运算单元还包括判定舍入装置,用于通过使用黏着位输出关于是否执行舍入处理的判定结果;增量装置,用于将“1”添加到算术运算结果;以及选择装置,用于通过使用判定结果选择算术运算结果或来自增量装置的输出。
本发明还提供了一种借助算术运算单元执行算术运算的信息处理设备,该算术运算单元通过使用黏着位对算术运算结果执行舍入处理,所述黏着位代表在算术运算结果被归一化的时候是否已被移位了“1”,所述算术运算单元包括算术运算装置,用于输出算术运算结果;具有至少两个或更多移位装置的归一化器,用于对算术运算结果执行归一化处理;移位量计算器,用于计算所述多个移位装置的多个移位量;黏着位预测装置,用于通过使用所述多个移位量生成中间黏着位,中间黏着位是在算术运算结果被归一化时是否要移位“1”的预测结果;以及黏着位生成器,用于通过使用中间黏着位生成黏着位。
上面的算术运算单元还包括判定舍入装置,用于通过使用黏着位输出关于是否执行舍入处理的判定结果;增量装置,用于将“1”添加到算术运算结果;以及选择装置,用于通过使用判定结果选择算术运算结果或来自增量装置的输出。
本发明还提供了一种算术运算方法,该算术运算方法通过使用黏着位对算术运算结果执行舍入处理,所述黏着位代表在算术运算结果被归一化的时候是否已被移位了“1”,所述方法包括输出算术运算结果的步骤;移位量计算步骤,计算要在至少两个或更多移位处理步骤中使用的多个移位量;归一化步骤,通过将归一化处理划分成多个移位处理步骤并且在所述多个移位处理步骤处分别使用多个移位量来对算术运算结果执行归一化处理;黏着位预测步骤,通过使用所述多个移位量生成中间黏着位,中间黏着位是在算术运算结果被归一化时是否要移位“1”的预测结果;以及黏着位生成步骤,通过使用中间黏着位生成黏着位。
根据本发明,逻辑和计算单元与归一化器进行的归一化处理并行地计算中间黏着位,并且生成器基于由归一化器归一化的算术运算结果中的黏着位生成区域的一部分中的数据和中间黏着位,生成黏着位。因此,不需要在归一化处理之后计算黏着位生成区域中的所有数据的逻辑和。这可以防止延迟的增加并且可以高效地生成黏着位。
具体地说,尽管已知的OR电路需要“99”个输入,但是根据本发明的OR电路仅需要“5”个输入,这大大缩短了算术运算延迟并且降低了流水线级数,并且有助于提高时钟频率。
当在归一化器进行的归一化处理和舍入器进行的处理之间划分流水线级的时候,黏着位被与归一化处理并行地生成。因此,不需要锁存所有算术运算结果,而仅需要锁存通过从算术运算结果中减去黏着位生成区域而获得的区域。这有助于减少分级锁存器的硬件资源以及用于锁存的配线配置。实际上,锁存器的宽度(目前出于单精度算术和双精度算术的目的需要“128”位)可以被减少到“60”位,这允许用于配置和配线的物料量的大大减少。
作为要由黏着位生成器处理的区域的第二区域包括可由一位移位器处理的区域,所述一位移位器执行对于归一化移位量的不足量的归一化处理。因此,不需要准备专门的硬件来应对移位量计算器所计算的归一化移位量是不是不足预定位数,因此一定可以生成黏着位而与归一化移位量是否不足。
与上述的专利文件1中公开的技术不同,可以避免因区别归一化移位量是否不足预定位数而引起的物料量的增加或延迟的增加。
因此,与在算术运算结果被归一化之后生成黏着位的公知技术相比,本发明可以大大减少物料量以及算术运算延迟和流水线级数。
图1是示出根据本发明实施例的算术运算单元的结构的框图;图2是示出根据本发明实施例的算术运算单元的归一化器、黏着位生成器和舍入器的结构的框图;图3是示出根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的逻辑电路示例的示图;图4是根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的逻辑电路示例;图5(a)至5(c)是用于示出当根据本发明实施例的算术运算单元支持单精度算术时的黏着位生成器的逻辑和计算单元的操作的示图,图5(a)至5(c)中的每一个是用于图示出黏着位生成区域的一部分上的操作的示图;
图6是示出根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的逻辑电路示例的示图;图7是示出根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的逻辑电路示例的示图;图8是示出根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的逻辑电路示例的示图;图9(a)至9(c)是用于示出当根据本发明实施例的算术运算单元支持双精度算术时的黏着位生成器的逻辑和计算单元的操作的示图,图9(a)至9(c)中的每一个是用于图示出黏着位生成区域的一部分上的操作的示图;图10是示出当根据本发明实施例的算术运算单元支持单精度算术时算术运算单元的操作示例的示图,其中划分了流水线级;图11是示出当根据本发明实施例的算术运算单元支持双精度算术时算术运算单元的操作示例的示图,其中划分了流水线级;图12是示出已知的浮点乘法加法器的结构的框图;图13是用于图示出被输入到第二移位器的数据格式的示图;图14是用于图示出本发明的算术运算单元和已知的浮点乘法加法器支持单精度算术的情况下的输出数据的示图;图15是用于图示出本发明的算术运算单元和已知的浮点乘法加法器支持双精度算术的情况下的输出数据的示图;图16是示出了已知的浮点乘法加法器的归一化器和舍入器的结构的示图;图17是示出了在已知的浮点乘法加法器支持单精度算术的时候浮点乘法加法器的操作示例的示图,其中划分了流水线级;以及图18是示出根据本发明实施例的算术运算单元中的黏着位生成器的逻辑和计算单元的OR电路的示图。
具体实施例方式
在下文中,将参考附图描述本发明的实施例。
单精度算术情形下的本发明实施例首先,将参考图1所示的框图描述根据本发明实施例的浮点乘法加法器的结构。顺带提及,附图中类似的参考标号指代类似或相应的部件,因此这里部分省略对它们的详细描述。
如图1所示,浮点乘法加法器1包括右移位器(整直器)10、乘法器[CSA(进位保留加法器)树]11、CSA(进位保留加法器)12、绝对值加法器(Abs.加法器)13、移位量计算器[L.Z.(前导零)预测器]20、归一化器(左移位器)30、舍入器40和黏着位生成器50。
浮点乘法加法器1支持遵照IEEE(电子及电气工程师协会)754的单精度算术。
来自绝对值加法器13的输出数据(算术运算结果;到归一化器30的输入数据格式)与图13所示的(C<127:0>)相同。当浮点乘法加法器1支持单精度算术时使用的数据结构(来自归一化器30的输出数据格式)与图14所示的(R<127:0>)相同。在下面的说明中,将参考图13至15描述算术运算结果(输入数据格式)和输出数据(输出数据格式)。
右移位器10、乘法器11、CSA 12和绝对值加法器13一起用作执行具有三个操作数(图中的“OP1”、“OP2”和“OP3”)的浮点乘法加法运算的乘法加法运算单元。由乘法加法运算单元获得的算术运算结果(即,来自绝对值加法器13的输出数据)被表达为如图13所示的C<127:0>。
移位量计算器20预测从来自绝对值加法器13的输出数据(算术运算结果)的开头起连续有多少个零。这个结果是归一化器30的移位量。移位量计算器20计算算术运算结果的归一化移位量,用以在归一化器30进行的左移位处理(归一化处理)中使用。由移位量计算器20计算的归一化移位量有时不足“1”位。
归一化器30通过使用由移位量计算器20计算的归一化移位量,对来自绝对值加法器13的输出数据(下文中偶尔称之为算术运算结果)执行左移位处理(归一化处理)。算术运算结果中预定位位置(这里是R<124>)处的值总是被归一化器30设置为“1”。
图2示出了浮点乘法加法器1的归一化器30、黏着位生成器50和舍入器40的结构。如图2所示,归一化器30包括多个移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位移位器[一位左移位器(第二处理单元)]35。
第一到第四移位器31至34一起用作第一处理单元,第一处理单元通过使用移位量计算器20计算的归一化移位量(7位数据SA<6:0>)对算术运算结果执行归一化处理(左移位)。
由于算术运算结果是“128”位数据,所以由第一到第四移位器31至34获得的移位量(即,移位量计算器20计算的归一化移位量)最大是“127”位。因此,第一移位器31基于7位长数据SA<6:0>中的SA<6>可以移位“64”或“0”位,其是归一化移位量。第二移位器32基于SA<6:0>中的SA<5:4>可以移位“48”、“32”、“16”或“0”位。第三移位器33基于SA<6:0>中的SA<3:2>可以移位“12”、“8”、“4”或“0”位。第四移位器34基于SA<6:0>中的SA<1:0>可以移位“3”、“2”、“1”或“0”位。
向第一移位器31输入的是作为7位长数据输出的归一化移位量中的“1”位数据(SA<6>),其代表归一化移位量是否不小于“64”位,即,第一移位器31是否执行移位“64”位的处理,如上所述。当SA<6>是“1”时,第一移位器31执行“64”位的移位。当SA<6>是“0”时,第一移位器31不执行移位。
当输入到第二至第四移位器32至34中的归一化移位量被表达为SA<5:0>时,第二移位器32基于SA<5:4>执行归一化处理。第二移位器32在SA<5:4>是“11”时执行“48”位的移位,在SA<5:4>是“10”时执行“32”位的移位,在SA<5:4>是“01”时执行“16”位的移位,并且在SA<5:4>是“00”时不执行移位。
类似地,第三移位器33在SA<3:2>是“11”时执行“12”位的移位,在SA<3:2>是“10”时执行“8”位的移位,在SA<3:2>是“01”时执行“4”位的移位,并且在SA<3:2>是“00”时不执行移位。
类似地,第四移位器34在SA<1:0>是“11”时执行“3”位的移位,在SA<1:0>是“10”时执行“2”位的移位,在SA<1:0>是“01”时执行“1”位的移位,并且在SA<1:0>是“00”时不执行移位。
一位移位器35确定作为基于由第四移位器34获得的归一化移位量的归一化处理的结果,是否执行了移位使得预定位位置R<124>处的值为“1”(归一化移位量是否不足)。当预定位位置处的值不是“1”时,一位移位器35确定由移位量计算器20计算的归一化移位量不足“1”位,并且进一步将由第四移位器34归一化的算术运算结果移位“1”位。这样,预定位位置处的值变为“1”。
即,一位移位器35确定来自第四移位器34的输出数据中的预定位位置处的值是“0”还是“1”。当值为“1”时,一位移位器35不执行移位处理。
当因为移位量计算器20计算的归一化移位量不足“1”位因而预定位位置处的值是“0”时,一位移位器35将来自第四移位器34的输出数据仅移位“1”位,以便完成归一化处理(即,以便在预定位置处设置“1”)。
在浮点乘法加法器1中,黏着位生成器50与归一化器30进行的归一化处理并行地生成黏着位。因此,归一化器30没有向舍入器40输出经历归一化处理的算术运算结果的所有位,而是向舍入器40输出通过从算术运算结果除去黏着位生成区域而获得的部分。换句话说,在单精度算术的情形下,输入到舍入器40中的是29位长数据R<127:99>。
如图2所示,黏着位生成器50与归一化器30进行的归一化处理并行地生成黏着位。黏着位生成器50包括逻辑和计算单元(黏着位预测器;预测装置)51和生成器(在附图中指示为“进行黏着”)52。
具体地说,当在来自归一化器30的输出数据(R<127:0>)中的黏着位生成区域(在图14的单精度算术的情形中是R<98:0>)中即使一个位为“1”时,黏着位生成器50将黏着位设置为“ON”,或者在黏着位生成区域中的所有位为“0”时,将黏着位设置为“OFF”。黏着位生成器50利用逻辑和计算单元51和生成器52生成黏着位。
逻辑和计算单元51预测来自算术运算结果中的最低数位的预定区域中的数据是否被归一化器30进行的归一化处理移位到黏着位生成区域,该预测过程与归一化器30进行的归一化处理并行进行,并且计算被预测移位到黏着位生成区域中的数据的逻辑和作为中间黏着位。
这里,逻辑和计算单元51通过使用被输入到第二移位器32和第三移位器33的归一化移位量(4位数据;SA<5:2>)预测由第一移位器31归一化的算术运算结果中的预定区域(第一区域)中的数据是否被归一化器30进行的归一化过程移位到黏着位生成区域,并且确定被预测移位到黏着位生成区域的数据是否包括“1”。从而,逻辑和计算单元51生成中间黏着位。
现在,将描述支持单精度算术的浮点乘法加法器1的情形。
由于归一化器20在浮点乘法加法器1中执行左移位处理,所以通过使用归一化移位量检查C<98:0>的区域中是否包括“1”,可以执行对“1”是否存在于R<98:0>中的检查。
具体地说,逻辑和计算单元51首先对将包括在R<98:0>中的区域执行OR操作,即使归一化处理是在“64”位上执行的,其是通过将一位移位器35能够移位的“1”位添加到作为第二至第四移位器32至34能够移位的最大区域的“63”位而获得的,即,该区域是将保持在黏着位生成区域而与归一化移位量无关的区域。
在单精度算术的情形中,逻辑和计算单元51对C<34:0>执行OR操作,其是即使执行作为最大移位量的“64”位的左移位时也将被保留的R<98:64>,。
此外,逻辑和计算单元51对包括在R<98:0>中与归一化移位量无关的部分之外的区域执行处理,这里即是除了C<34:0>之外的区域C<94:35>。逻辑和计算单元51对未被移位到R<98:0>之外的C<94:35>部分的每“4”位执行OR操作,即使当基于归一化移位量(SA<5:2>)的移位处理被执行的时候,并且验证它。对每“4”位执行OR操作的原因是第三移位器33的移位量以“4”位改变。
即,如图5(a)所示,由于当SA<5:2>为“0000”时C<94:91>的移位量落在从“O”到“3”位的范围内,所以C<94:91>总是保持在区域R<98:0>中。因此,对于该情形,只有对C<94:91>的OR操作的结果作为PAT<14>被输出。当SA<5:2>为“0001”时,移位量落在从“4”到“7”位的范围内。因此,C<94:91>落在R<98:95>的范围内或在R<98:0>的范围之外。因此,生成器52执行处理。
图5(a)中示出的处理例如是由逻辑电路51a完成的,逻辑电路51a包括如图6所示的OR门、NOT门和AND门。即,逻辑和计算单元51具有电路51a。到逻辑电路51a的输入信号S16例如由图3所示的逻辑电路32a实现。即,逻辑和计算单元51具有逻辑电路32a,逻辑电路32a具有OR门32a-3,OR门32a-3输出SA<5>和SA<4>的逻辑和作为S16(代表是否执行了不少于“16”位的移位的信号)。类似地,到逻辑电路51a的输入信号S4例如由图4所示的逻辑电路33a实现。即,逻辑和计算单元51具有逻辑电路33a,逻辑电路33a具有OR门33a-3,OR门33a-3输出SA<3>和SA<2>的逻辑和作为S4(代表是否执行了不少于“4”位的移位的信号)。
如图5(b)所示,关于C<90:87>,当SA<5:2>不小于“0001”时,C<90:87>总是落在R<98:0>的范围内。因此,对C<90:87>的OR操作的结果作为PAT<13>而被输出。当SA<5:2>是“0010”时,C<90:87>落在R<98:95>的范围内或者在R<98:0>的范围之外。因此,生成器52使用没有预测的移位结果执行处理。
图5(b)中示出的处理例如是由逻辑电路51b完成的,逻辑电路51b包括如图7所示的OR门、NOT门和AND门。即,逻辑和计算单元51具有逻辑电路51b,逻辑电路51b包括OR门51b-1,用于输出C<90:87>的逻辑和、NOT门51b-2和51b-3,用于分别将S16和S8反相并且输出它们;AND门51b-4,用于输出来自NOT门51b-2和51b-3的输出的逻辑积;以及AND门51b-5,用于输出来自OR门51b-1的输出和来自AND门51b-4的输出的逻辑积以作为PAT<13>。
到逻辑电路51b的输入信号S16例如是由图3所示的逻辑电路32a实现的。即,逻辑和计算单元51具有逻辑电路32a,逻辑电路32a具有OR门32a-3,OR门32a-3输出SA<5>和SA<4>的逻辑和以作为S16(代表是否执行了不少于“16”位的移位的信号)。类似地,到逻辑电路51b的输入信号S8例如由图4所示的逻辑电路33a实现。即,逻辑和计算单元51具有逻辑电路33a,逻辑电路33a包括缓冲门(buffer gate)33a-2,缓冲门33a-2输出SA<3>以作为S8(代表是否执行了不少于“8”位的移位的信号)。
随后,关于C<86:35>的数据,逻辑和计算单元51以上面的方式逐“4”位区分数据,同时将归一化移位量的值增加“1”位,并且通过执行OR操作输出这个结果以作为PAT<12>至PAT<1>,或者通过使用没有预测的移位结果执行处理。
如图5(c)所示,关于最后的C<38:35>,当SA<5:2>不小于“1110”时,C<38:35>总是落在R<98:0>的范围内。因此,对于此情形,仅仅通过对C<38:35>执行OR操作而获得的结果被作为PAT<0>输出。当SA<5:2>是“1111”时,C<38:35>落在R<98:95>的范围内或者在R<98:0>的范围之外。因此,生成器52执行处理。
图5(c)中示出的处理例如是由逻辑电路51c完成的,逻辑电路51c包括如图8所示的OR门、NAND门和AND门。即,逻辑和计算单元51具有逻辑电路51c,逻辑电路51c包括OR门51c-1,用于输出C<38:35>的逻辑和;NAND门51c-2,用于输出S48和S12的反相AND;以及AND门51c-3,用于输出来自OR门51c-1的输出和来自NAND门51c-2的输出的逻辑积以作为PAT<0>。到逻辑电路51c的输入信号S48例如是由图3所示的逻辑电路32a实现的。即,逻辑和计算单元51具有逻辑电路32a,逻辑电路32a具有AND门32a-1,AND门32a-1输出SA<5>和SA<4>的逻辑积以作为S48(代表是否执行了“48”位的移位的信号)。类似地,到逻辑电路51c的输入信号S12例如由图4所示的逻辑电路33a实现。即,逻辑和计算单元51具有逻辑电路33a,逻辑电路33a包括AND门33a-1,AND门33a-1输出SA<3>和SA<2>的逻辑积以作为S12(代表是否执行了“12”位的移位的信号)。
如上所述,逻辑和计算单元51对C<94:35>的数据执行上面的处理,从而输出了PAT<14:0>。
最后,逻辑和计算单元51利用如图18所示构造的OR电路51d对PAT<14:0>执行OR操作,从而生成中间黏着位。这里,当PAT<14:0>中的至少“1”位是“1”时,逻辑和计算单元51(逻辑电路51d)将中间黏着位设置为“ON”(即,“1”)。当所有位是“0”时,逻辑和计算单元51将中间黏着位设置为“OFF”(即,“0”)。
当支持单精度算术时,逻辑和计算单元51对于C<94:0>(第一区域)的数据,预测将被归一化器30(这里是第一到第三移位器31至33)进行的归一化处理移位到黏着位生成区域中的数据,并且基于该预测生成中间黏着位。
接下来,将描述生成器52。生成器52基于被归一化器30归一化的算术运算结果中的黏着位生成区域中的第二区域R<98:95>中的数据,生成黏着位,并且中间黏着位被逻辑和计算单元51所计算。
即,逻辑和计算单元51关于作为归一化移位量的SA<5:0>中的SA<5:2>上的归一化处理进行预测,而生成器52不预测SA<1:0>上的归一化处理,只是使用一位移位器35获得的最终移位结果。
即,生成器52对4位长数据R<98:95>执行OR操作,其是作为第四移位器34能够移位的最大移位量的“3”位和一位移位器35能够移位的“1”位的和。
这里,生成器52对5位长数据执行OR操作,该5位长数据是“4”位R<98:95>与“1”位中间黏着位的和。当即使5位长数据中的“1”位是“1”时,生成器52将黏着位设置为“ON”。当所有位是“0”时,生成器52将黏着位设置为“OFF”。
如上所述,可以由生成器52在OR操作中处理的位数总是不少于一位移位器35能够处理的移位量(这里是“1”位)。
在浮点乘法加法器1中,第一至第四移位器31至34的最后级中的第四移位器34可以处理所述多个移位器31至34中的最少移位量。这使得可以最小化能够由生成器52在OR操作中处理的位数,最小化生成器52的电路尺寸,并且最小化生成器52的延迟。
接下来,将描述生成器52。生成器52基于通过从被归一化器30归一化的算术运算结果中的黏着位生成区域除去第一区域(这里是C<65:0>)而获得的区域(这里是第二区域R<69:66>)中的数据,生成黏着位,并且中间黏着位被逻辑和计算单元51所计算。
即,生成器52不预测SA<1:0>上的归一化过程,而执行4位数据R<69:66>上的OR操作。
因此,生成器52对下述“5”位数据执行OR操作,该“5”位数据是“4”位R<69:66>和“1”位中间黏着位的和。当即使5位长数据中的“1”位是“1”时,生成器52将黏着位设置为“ON”。当所有位是“0”时,生成器52将黏着位设置为“OFF”。
接下来,将描述舍入器40。如图2所示,舍入器40基于由黏着位生成器50中的生成器52生成的黏着位,对归一化器30所归一化的算术运算结果进行舍入处理。舍入器40包括增量器(增量装置)41、判定舍入单元(判定舍入装置)43和选择电路(选择装置)44。
增量器41执行舍入处理以将“1”添加到归一化器30所归一化的算术运算结果中的假数(在单精度算术的情形中是C<123:101>)。
判定舍入单元43基于下述内容来确定舍入处理是否是必需的(1)由黏着位生成器50生成的黏着位,(2)作为从归一化器30输出的算术运算结果中的假数的最低有效位的L(最低有效位)位(参考图14和15),(3)算术运算结果中的G(保护)位,(4)算术运算结果中的R(舍入)位(参考图14和15),(5)从外部输入的RD(舍入方向)位,以及(6)从外部输入的SIGN位。判定舍入单元43将判定结果输出到选择电路44。
选择电路44基于判定舍入单元43,输出经由增量器41输入的经舍入的算术运算结果,或者原样输出从归一化器30输出的算术运算结果。
即,当判定舍入单元43判定舍入处理是必需的(作为判定结果)时候,选择电路44输出由增量器41舍入的算术运算结果。当判定舍入单元43判定舍入处理不是必需的(作为判定结果)时候,选择电路44输出从归一化器30馈送的算术运算结果,其是未经历舍入处理的算术运算结果。
接下来,将参考图10描述浮点乘法加法器1的归一化器30、黏着位生成器50和舍入器40的操作示例(其中划分了流水线级)。顺带提及,图10示出了浮点乘法加法器1执行单精度算术的情形,其中虚线X至Z表示划分流水线级的边界。
如图10所示,在浮点乘法加法器1中,黏着位生成器50中的逻辑和计算单元51与归一化器30中的第二移位器32和后面的移位器所执行的处理并行地执行处理,并且黏着位生成器52中的生成器50在归一化器30的归一化处理之后通过使用一位移位器35的结果来生成黏着位。
目前,通常要划分流水线级,因为如上所述,归一化器30的归一化处理和舍入器40的舍入处理之间的处理周期被延长。为此,可以如虚线Y所示在浮点乘法加法器1中划分流水线级。
在该情形中,从一位移位器35(即,归一化器30)输出的数据是29位数据R<127:99>,其是通过从R<127:0>去除黏着位生成区域R<98:0>而获得的剩余部分,因此仅仅这29位长数据必须被锁存。可以从输出数据减去黏着位生成区域的原因是由于黏着位生成器50生成了黏着位,所以不需要再向舍入器40输出R<98:0>了。
还需要锁存由黏着位生成器50所生成的“1”位黏着位。
被锁存的29位长数据中的R<127:101>被输入到增量器41,同时绕过增量器41被直接输入到选择电路44。
被锁存的29位数据中与L位、R位和G位相对应的3位长数据R<101:99>被输入到判定舍入单元43以被用于舍入判定。
被锁存的58位长数据R<127:72>被输入到增量器41,同时绕过增量器41被直接输入到选择电路44。
被锁存的58位长数据中与L位、R位和G位相对应的3位长数据R<72:70>被输入到判定舍入单元43以被用于判定舍入单元43的判定。
在根据本发明实施例的浮点乘法加法器1中,逻辑和计算单元51与归一化器30的归一化处理并行地计算中间黏着位,并且生成器52基于中间黏着位和归一化器30所归一化的算术运算结果中的黏着位生成区域的一部分中的数据,生成黏着位。因此,不需要在归一化处理之后计算黏着位生成区域中的所有数据的逻辑和,并且可以高效地生成黏着位,同时防止延迟。
当支持单精度算术时,在归一化器30的归一化处理之后,对仅仅5位数据而非黏着位生成区域中的99位数据进行OR操作是足够的,这大大缩短了延迟。
当在归一化器30进行的处理和舍入器40进行的处理之间划分流水线级时,仅需要锁存除了黏着位生成区域之外的区域中的数据,而不需要锁存所有的算术运算结果数据(R<127:0>),因为黏着位生成是与归一化处理并行执行的。因此,可以减少硬件资源(物料量)例如锁存器等。具体地说,可以将目前锁存的128位长数据减少到30位长数据(参考图10),这意味着可以将要被锁存的数据减少“98”位,这是它们之间的差异之处。
此外,在浮点乘法加法器1中,考虑到一位移位器35的归一化处理的结果而生成黏着位,即,黏着位是基于关于黏着位生成区域(第二区域)的归一化处理的结果而产生的,其根据一位移位器35的归一化处理的结果可能被改变。因此,可以与归一化器30进行的归一化过程并行地开始生成黏着位。而且,不需要区别移位量计算器20计算的归一化移位量是否不足“1”位。因此,一定能够生成黏着位而与归一化移位量是否不足无关。与上述的专利文件1中公开的技术不同,可以避免因区别归一化移位量是否不足“1”位而引起的物料量和延迟的增加。
逻辑和计算单元51没有预测第四移位器34进行的归一化处理,第四移位器34是归一化器30中的多个移位器31至34中的最后级,但是生成器52基于第四移位器34进行的归一化处理的结果生成黏着位。即,由生成器52处理的第二区域是第四移位器34获得的最大移位量和一位移位器35获得的“1”位的和。因此,与预测多级中的所有移位器31至34(第一处理单元)进行的归一化处理的结果的方式相比,逻辑和计算单元51可以更高效地生成黏着位。
由于第四移位器34具有浮点乘法加法器1中的移位器31至34之中的最少移位量,所以生成器52进行的处理变得更有效率,并且可以减少生成器52的物料量。
双精度算术情形下的本发明实施例首先,将参考图1所示的框图描述根据本发明实施例的浮点乘法加法器的结构。顺带提及,附图中类似的参考标号指代类似或相应的部件,因此这里部分省略对它们的详细描述。
如图1所示,浮点乘法加法器1包括右移位器(整直器)10、乘法器[CSA(进位保留加法器)树]11、CSA(进位保留加法器)12、绝对值加法器(Abs.加法器)13、移位量计算器[L.Z.预测器]20、归一化器(左移位器)30、舍入器40和黏着位生成器50。
浮点乘法加法器1支持遵照IEEE(电子及电气工程师协会)754的双精度算术。
来自绝对值加法器13的输出数据(算术运算结果;到归一化器30的输入数据格式)与图13所示的(C<127:0>)相同。当浮点乘法加法器1支持双精度算术时使用的数据结构(来自归一化器30的输出数据格式)与图15所示的(R<127:0>)相同。因此,将参考图13至15描述算术运算结果(输入数据格式)和输出数据(输出数据格式)。
右移位器10、乘法器11、CSA 12和绝对值加法器13一起用作执行具有三个操作数(图中的“OP1”、“OP2”和“OP3”)的浮点乘法加法运算的乘法加法运算单元。乘法加法运算的算术运算结果被表达为如图13所示的C<127:0>。
移位量计算器20预测从来自绝对值加法器13的输出数据(算术运算结果)的开头起连续有多少个零。这个结果是归一化器30的移位量。即,移位量计算器20计算算术运算结果的归一化移位量,用以在归一化器30进行的左移位处理(归一化处理)中使用。注意,由移位量计算器20计算的归一化移位量有时不足“1”位。
归一化器30通过使用由移位量计算器20计算的归一化移位量,对来自绝对值加法器13的输出数据(下文中被称为算术运算结果)执行左移位处理(归一化处理)。算术运算结果中预定位位置(这里是R<124>)处的值总是被归一化器30设置为“1”。
图2示出了浮点乘法加法器1的归一化器30、黏着位生成器50和舍入器40的结构。如图2所示,归一化器30包括多级中的移位器31至35,即,第一移位器(第一左移位器)31、第二移位器(第二左移位器)32、第三移位器(第三左移位器)33、第四移位器(第四左移位器)34和一位移位器[一位左移位器(第二处理单元)]35。
第一到第四移位器31至34一起用作第一处理单元,第一处理单元通过使用移位量计算器20计算的归一化移位量(7位数据SA<6:0>)对算术运算结果执行归一化处理(左移位)。
由于算术运算结果是128位数据,所以由第一到第四移位器31至34获得的移位量(即,移位量计算器20计算的归一化移位量)最大是“127”位。因此,第一移位器31基于7位长数据SA<6:0>中的SA<6>可以移位“64”或“1”位,其是归一化移位量。第二移位器32基于SA<6:0>中的SA<5:4>可以移位“48”、“32”、“16”或“0”位。第三移位器33基于SA<6:0>中的SA<3:2>可以移位“12”、“8”、“4”或“0”位。第四移位器34基于SA<6:0>中的SA<1:0>可以移位“3”、“2”、“1”或“0”位。
如上所述,向第一移位器31输入的是作为7位长数据输出的归一化移位量中的“1”位数据(SA<6>),其代表归一化移位量是否不小于“64”位,即,第一移位器31是否执行移位“64”位的处理。当SA<6>是“1”时,第一移位器31执行“64”位的移位。当SA<6>是“0”时,第一移位器31不执行移位。
当输入到第二至第四移位器32至34中的归一化移位量被表达为SA<5:0>时,第二移位器32基于SA<5:4>执行归一化处理。这里,第二移位器32在SA<5:4>是“11”时执行“48”位的移位,在SA<5:4>是“10”时执行“32”位的移位,在SA<5:4>是“01”时执行“16”位的移位,并且在SA<5:4>是“00”时不执行移位。
类似地,第三移位器33在SA<3:2>是“11”时执行“12”位的移位,在SA<3:2>是“10”时执行“8”位的移位,在SA<3:2>是“01”时执行“4”位的移位,并且在SA<3:2>是“00”时不执行移位。
类似地,第四移位器34在SA<1:0>是“11”时执行“3”位的移位,在SA<1:0>是“10”时执行“2”位的移位,在SA<1:0>是“01”时执行“1”位的移位,并且在SA<1:0>是“00”时不执行移位。
一位移位器35确定作为由第四移位器34进行的基于归一化移位量的归一化处理的结果,预定位位置R<124>处的值是否被移位为“1”(归一化移位量是否不足)。当预定位位置处的值不是“1”时,一位移位器35确定由移位量计算器20计算的归一化移位量不足“1”位,并且一位移位器进一步将由第四移位器34归一化的算术运算结果移位“1”位。这样,预定位位置处的数据变为“1”。
即,一位移位器35确定来自第四移位器34的输出数据中的预定位位置处的值是“0”还是“1”。当值为“1”时,一位移位器35不执行移位处理。
当因为移位量计算器20计算的归一化移位量不足“1”位因而预定位位置处的值是“0”时,一位移位器将来自第四移位器34的输出数据移位“1”位,以便完成归一化处理(即,以便将预定位位置处的值设置为“1”)。
在浮点乘法加法器1中,黏着位生成器50与归一化器30进行的归一化处理并行地生成黏着位。因此,归一化器30没有向舍入器40输出被归一化的算术运算结果的所有位,而是向舍入器40输出通过从算术运算结果除去黏着位生成区域而获得的部分。换句话说,在双精度算术的情形下,输入到舍入器40中的是58位长数据R<127:70>。
如图2所示,黏着位生成器50与归一化器30进行的归一化处理并行地生成黏着位。黏着位生成器50包括逻辑和计算单元(黏着位预测器)51和生成器(在附图中指示为“进行黏着”)52。
具体地说,当在从归一化器30馈送的输出数据(R<127:0>)中的黏着位生成区域(在图15的双精度算术的情形中是R<69:0>)中即使“1”位为“1”时,黏着位生成器50将黏着位设置为“ON”。当黏着位生成区域中的所有位为“0”时,黏着位生成器50将黏着位设置为“OFF”。黏着位生成器50利用逻辑和计算单元51和生成器52生成黏着位。
逻辑和计算单元51预测来自算术运算结果中的最低数位的预定区域中的数据是否被归一化器30进行的归一化处理移位到黏着位生成区域,该预测过程与归一化器30进行的归一化处理并行进行,并且计算被预测移位到黏着位生成区域中的数据的逻辑和作为中间黏着位。
这里,逻辑和计算单元51通过使用被输入到第二移位器32和第三移位器33的归一化移位量(4位数据;SA<5:2>)预测由第一移位器31归一化的算术运算结果中的预定区域(第一区域)中的数据是否被归一化器30进行的归一化过程移位到黏着位生成区域,并且确定被预测移位到黏着位生成区域中的数据是否包括“1”。从而,逻辑和计算单元51生成中间黏着位。
当浮点乘法加法器1支持双精度算术时,通过使用归一化移位量检查C<69:0>的区域中是否包括“1”,可以实现对“1”是否存在于R<69:0>中的检查,因为归一化器20对算术运算结果执行左移位处理。
在双精度算术的情形中,逻辑和计算单元51首先对R<69:64>的C<5:0>执行OR操作,C<5:0>是即使当执行“64”位(其是第二移位器32和后面的移位器能够移位的最大宽度)的移位时也能得到的R<69:64>。
接下来,逻辑和计算单元51处理除去R<69:0>中所包括的与归一化移位量无关的范围之外的部分,即,C<65:6>。
逻辑和计算单元51对在R<69:0>中剩余的C<65:6>部分的每4位执行OR操作,即使当基于归一化移位量(SA<5:2>)的移位处理被执行的时候,并且验证它。
如图9(a)所示,对于C<65:62>,当SA<5:2>为“0000”时,C<65:62>总是保持在R<69:0>的范围内。因此,对于该情形,只有对C<65:62>的OR操作的结果作为PAT<14>被输出。当SA<5:2>为“0001”时,C<65:62>落在R<69:66>的范围内或在R<69:0>的范围之外。因此,使用该移位结果执行生成器52进行的处理。该处理例如是由与上面参考图6描述的逻辑电路51a相似的逻辑电路完成的。
如图9(b)所示,对于C<61:58>,当SA<5:2>小于或等于“0001”时,C<61:58>总是保持在R<69:0>的范围内。因此,对于该情形,只有对C<61:58>的OR操作的结果作为PAT<13>被输出。当SA<5:2>为“0010”时,C<61:58>落在R<69:66>的范围内或在R<69:0>的范围之外。因此,执行生成器52进行的处理。该处理是由与上面参考图7描述的逻辑电路51b相似的逻辑电路完成的。
此后,对于范围C<57:6>中的数据,对于每“4”位执行区分,同时将归一化移位量的值增加“1”位,并且执行OR操作或者通过使用没有预测的移位结果由生成器52进行处理。
如图9(c)所示,对于C<9:6>,当SA<5:2>小于或等于“1110”时,C<9:6>总是保持在R<69:0>的范围内。因此,对于该情形,只有OR操作的结果作为PAT<0>被输出。当SA<5:2>为“1111”时,C<9:6>落在R<69:66>的范围内或在R<69:0>的范围之外。因此,执行生成器52进行的处理。该处理是由与上面参考图8描述的逻辑电路51c相似的逻辑电路完成的。
如上所述,逻辑和计算单元51处理范围C<65:6>中的数据,从而输出PAT<14:0>。
最后,逻辑和计算单元51利用如图18所示构造的逻辑电路51d对PAT<14:0>执行OR操作,从而生成中间黏着位,如在单精度算术中所做的那样。
当支持双精度算术时,逻辑和计算单元51针对C<65:0>(第一区域)的数据,预测将被归一化器30(这里是第一到第三移位器31至33)进行的归一化处理移位到黏着位生成区域中的数据,并且基于该预测生成中间黏着位。
接下来,将描述生成器52。生成器52基于下述区域(这里是R<69:66>,第二区域)中的数据生成黏着位,该区域是通过从被归一化器30归一化的算术运算结果中的黏着位生成区域去除第一区域(这里是C<65:0>)而获得的,并且中间黏着位由逻辑和计算单元51计算。
即,生成器52不预测SA<1:0>上的归一化处理,而是对4位数据R<69:66>执行OR操作。
因此,生成器52对“4”位的R<69:66>和“1”位的中间黏着位(共“5”位)执行OR操作。当在5位数据中即使“1”位是1时,生成器52将黏着位设置为“ON”。当所有的位是“0”时,生成器52将黏着位设置为“OFF”。
接下来,将描述舍入器40。如图2所示,舍入器40基于由黏着位生成器50中的生成器52生成的黏着位,对归一化器30所归一化的算术运算结果进行舍入处理。舍入器40包括增量器41、判定舍入单元43和选择电路44。
增量器41执行舍入处理以将“1”添加到归一化器30所归一化的算术运算结果中的假数(在双精度算术的情形中是C<123:72>)。
判定舍入单元43基于下述内容来确定舍入处理是否是必需的(1)由黏着位生成器50生成的黏着位,(2)作为从归一化器30输出的算术运算结果中的假数的最低有效位的L(最低有效位)位(参考图14和15),(3)算术运算结果中的G(保护)位,(4)算术运算结果中的R(舍入)位(参考图14和15),(5)从外部输入的RD(舍入方向)位,以及(6)从外部输入的SIGN位。判定舍入单元43将判定结果输出到选择电路44。
选择电路44基于判定舍入单元43的判定结果,输出经由增量器41输入的经舍入的算术运算结果,或者原样输出从归一化器30输出的算术运算结果。
即,当判定舍入单元43判定舍入处理是必需的(作为判定结果)时候,选择电路44输出由增量器41舍入的算术运算结果。当判定舍入单元43判定舍入处理不是必需的(作为判定结果)时候,选择电路44输出从归一化器30馈送的算术运算结果,其未经历舍入。
图11示出了当浮点乘法加法器1执行双精度算术时浮点乘法加法器1的操作示例。在该情形中,从一位移位器35(即,归一化器30)输出的数据是通过从R<127:0>减去黏着位生成区域R<69:0>而获得的58位长数据R<127:70>。因此,仅需要锁存58位数据。
被锁存的58位长数据中的R<127:72>被输入到增量器41,同时绕过增量器41被直接输入到选择电路44。
被锁存的58位数据中与被用于判定舍入单元43的判定的L位、R位和G位相对应的3位长数据R<72:70>被输入到判定舍入单元43。
在根据本发明实施例的浮点乘法加法器1中,逻辑和计算单元51与归一化器30的归一化处理并行地计算中间黏着位,并且生成器52基于中间黏着位和归一化器30所归一化的算术运算结果中的黏着位生成区域的一部分中的数据,生成黏着位。因此,不需要在归一化处理之后计算黏着位生成区域中的所有数据的逻辑和,并且可以高效地生成黏着位,同时防止延迟。
具体地说,当浮点乘法加法器1支持双精度算术时,在归一化器30的归一化处理之后,仅需对5位数据而无需对黏着位生成区域中的70位数据进行OR操作。这大大缩短了延迟。
当在归一化器30进行的处理和舍入器40进行的处理之间划分流水线级时,黏着位生成是与归一化处理并行执行的。因此,仅需要锁存除了黏着位生成区域之外的区域中的数据,而不需要锁存所有的算术运算结果数据(R<127:0>),这可以减少锁存器等的硬件资源(物料量)。实际上,在用于双精度算术的浮点乘法加法器中,可以将目前锁存的128位长数据减少到59位长数据(参考图11),从而可以省略用于“69”位的锁存器,这是它们之间的差异之处。
在浮点乘法加法器1中,考虑到一位移位器35的归一化处理的结果而生成黏着位,即,黏着位是基于关于黏着位生成区域(第二区域)的归一化处理的结果而产生的,其根据一位移位器35的归一化处理的结果可能被改变。因此,可以与归一化器30进行的归一化过程并行地开始生成黏着位,并且不需要区别移位量计算器20计算的归一化移位量是否不足“1”位。因此,一定可以生成黏着位而与归一化移位量是否不足1“位”无关。从而,与上述的专利文件1中公开的技术不同,没有发生因区别归一化移位量是否不足“1”位而引起的物料量或延迟的增加。
逻辑和计算单元51没有预测第四移位器34进行的归一化处理,第四移位器34是归一化器30中的多级移位器31至34中的最后级,但是生成器52基于第四移位器34进行的归一化处理的结果生成黏着位。即,由生成器52处理的第二区域是第四移位器34获得的最大移位量和一位移位器35获得的“1”位的和。因此,与逻辑和计算单元51预测多级中的所有移位器31至34(第一处理单元)进行的归一化处理的结果的方法相比,可以更高效地生成中间黏着位。
由于第四移位器34具有移位器31至34之中的最少移位量,所以生成器52进行的处理变得更有效率,并且可以减少形成生成器52的物料量。
其它注意,本发明不限于上面的示例,而是可以在不背离本发明精神和范围的条件下做出多种方式的修改。
例如,上面实施例中构成第一处理单元的多级移位器31至34中的移位量不限于上面的示例,可以有变化。
借助下面的示例描述了上面的实施例,其中由移位量计算器20计算的归一化移位量有时不足“1”位。但是,归一化移位量的不足量不限于此。
在上面的实施例中,浮点乘法加法器1执行单精度算术和双精度算术。但是,本发明不限于此。本发明的浮点乘法加法器1的算术精度不只支持这些情况,还可以支持n倍精度算术(n是整数)。
权利要求
1.一种算术运算单元,用于生成代表在算术运算结果被归一化时所述算术运算结果是否已被移位的信息,该算术运算单元包括算术逻辑单元,用于输出所述算术运算结果;具有多个移位器的归一化器,用于对所述算术运算结果进行归一化;移位量计算器,用于计算用于所述多个移位器的多个移位量;预测器,用于通过使用所述多个移位量生成中间信息,所述中间信息是在所述算术运算结果被归一化时所述算术运算结果是否要被移位的预测结果;以及生成器,用于通过使用所述中间信息生成所述信息。
2.一种算术运算单元,用于通过使用代表在算术运算结果被归一化时所述算术运算结果是否已被移位的信息对所述算术运算结果执行舍入运算,该算术运算单元包括算术逻辑单元,用于输出所述算术运算结果;具有多个移位器的归一化器,用于对所述算术运算结果进行归一化;移位量计算器,用于计算用于所述多个移位器的多个移位量;预测器,用于通过使用所述多个移位量生成中间信息,所述中间信息是在所述算术运算结果被归一化时所述算术运算结果是否要被移位的预测结果;生成器,用于通过使用所述中间信息生成所述信息;舍入判断电路,用于通过使用所述信息输出关于是否执行舍入运算的判定结果;增量器,用于将预定值添加到所述算术运算结果;以及选择器,用于通过使用所述判定结果选择所述算术运算结果或来自所述增量器的输出。
3.一种利用算术运算单元执行算术运算的信息处理设备,所述算术运算单元通过使用代表在算术运算结果被归一化时所述算术运算结果是否已被移位的信息对所述算术运算结果执行舍入运算,所述算术运算单元包括算术逻辑单元,用于输出所述算术运算结果;具有多个移位器的归一化器,用于对所述算术运算结果进行归一化;移位量计算器,用于计算用于所述多个移位器的多个移位量;预测器,用于通过使用所述多个移位量生成中间信息,所述中间信息是在所述算术运算结果被归一化时所述算术运算结果是否要被移位的预测结果;以及生成器,用于通过使用所述中间信息生成所述信息。
4.如权利要求3所述的信息处理设备,所述算术运算单元还包括舍入判断电路,用于通过使用所述信息输出关于是否执行舍入运算的判定结果;增量器,用于将预定值添加到所述算术运算结果;以及选择器,用于通过使用所述判定结果选择所述算术运算结果或来自所述增量器的输出。
5.一种通过使用代表在算术运算结果被归一化时所述算术运算结果是否已被移位的信息对所述算术运算结果执行舍入运算的算术运算方法,该算术运算方法包括以下步骤执行算术运算;计算要在多个移位操作处使用的多个移位量;通过将归一化处理划分为所述多个移位操作并且在所述多个移位操作处分别使用所述多个移位量,对所述算术运算结果进行归一化;通过使用所述多个移位量生成中间信息,所述中间信息是在所述算术运算结果被归一化时所述算术运算结果是否要被移位的预测结果;以及通过使用所述中间信息生成所述信息。
6.一种通过使用代表在算术运算结果被归一化时所述算术运算结果是否已被移位的信息对所述算术运算结果执行舍入运算的算术运算方法,该算术运算方法包括以下步骤输出所述算术运算结果;计算要在至少两个或更多个移位操作步骤中使用的多个移位量;通过将归一化处理划分为所述多个移位操作步骤并且在所述移位操作处分别使用所述多个移位量,对所述算术运算结果进行归一化,以生成经归一化的算术运算结果;通过使用所述多个移位量生成中间信息,所述中间信息是在所述算术运算结果被归一化时所述算术运算结果是否要被移位的预测结果;通过使用所述中间信息生成所述信息;以及通过使用所述信息对所述经归一化的算术运算结果进行舍入。
7.一种信息处理设备,包括乘法加法器单元,用于执行乘法加法算术运算;移位量计算器,用于计算用于所述乘法加法器单元的算术运算结果的归一化移位量;归一化器,用于通过使用由所述移位量计算器计算的归一化移位量,对由所述乘法加法器单元获得的算术运算结果进行归一化;逻辑和计算器,用于与所述归一化器进行的归一化处理并行地预测来自所述算术运算结果的最低位的第一区域中的数据是否被所述归一化器进行的归一化处理移位到黏着位生成区域,并且计算被预测移位到黏着位生成区域中的数据的逻辑和以作为中间黏着位;生成器,用于基于(i)从算术运算结果中的黏着位生成区域去除与第一区域相对应的区域而获得的第二区域中的数据以及(ii)由所述逻辑和计算器计算的中间黏着位,生成黏着位,其中第二区域中的数据由所述归一化器进行归一化;以及舍入器,用于基于所述生成器生成的黏着位对由所述归一化器归一化的算术运算结果进行舍入。
8.如权利要求7所述的信息处理设备,所述归一化器还包括第一处理单元,用于执行基于归一化移位量的归一化处理;以及一位移位器,用于基于所述第一处理单元进行的归一化处理的结果确定归一化移位量是否不足,并且在确定归一化移位量不足的时候通过使用不足的移位量对归一化处理的结果进一步执行归一化处理;黏着位生成区域的第二区域中的总位数等于或大于能够被所述一位移位器归一化的不足移位量。
9.如权利要求8所述的信息处理设备,其中所述归一化器的所述一位移位器在确定归一化移位量没有不足时,不执行归一化处理。
10.如权利要求8所述的信息处理设备,其中所述归一化器的所述第一处理单元包括多级的移位器,所述多级的移位器基于归一化移位量对算术运算结果进行移位;黏着位生成区域的第二区域中的总位数是所述多级移位器中在最后级的移位器所处理的最大归一化移位量与所述一位移位器能够处理的不足移位量之和。
11.如权利要求9所述的信息处理设备,其中所述归一化器的所述第一处理单元包括多级的移位器,所述多级的移位器基于归一化移位量对算术运算结果进行移位;黏着位生成区域的第二区域中的总位数是所述多级移位器中在最后级的移位器所处理的最大归一化移位量与所述一位移位器能够处理的不足移位量之和。
12.如权利要求10所述的信息处理设备,其中所述归一化器的所述第一处理单元的最后级中的所述移位器处理所述多级移位器中的最少移位量。
13.如权利要求11所述的信息处理设备,其中所述归一化器的所述第一处理单元的最后级中的所述移位器处理所述多级移位器中的最少移位量。
14.如权利要求7所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
15.如权利要求8所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
16.如权利要求9所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
17.如权利要求10所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
18.如权利要求11所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
19.如权利要求12所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
20.如权利要求13所述的信息处理设备,其中通过从算术运算结果除去黏着位生成区域而获得的区域被从所述归一化器输入到所述舍入器。
全文摘要
一种算术运算单元,其生成代表在算术运算结果被归一化时算术运算结果是否已被移位的信息,该算术运算单元包括算术逻辑单元,用于输出算术运算结果;具有多个移位器的归一化器,用于对算术运算结果进行归一化;移位量计算器,用于计算用于多个移位器的多个移位量;预测器,用于通过使用所述多个移位量生成中间信息,中间信息是在算术运算结果被归一化时算术运算结果是否要被移位的预测结果;以及生成器,用于通过使用中间信息生成信息。生成黏着位所需的周期时间被缩短以高效地生成黏着位,并且用于生成黏着位的硬件资源被减少。
文档编号G06F9/302GK1975662SQ20061007648
公开日2007年6月6日 申请日期2006年4月20日 优先权日2005年12月2日
发明者田尻邦彦 申请人:富士通株式会社