用于反规范操作数的基于模式的乘法-加法处理器制造技术

技术编号:2914170 阅读:206 留言:0更新日期:2012-04-11 18:40
在反规范支持模式中,使用浮点加法器的规范化电路来规范化或反规范化浮点乘法器的输出。以推测方式将每一浮点乘法指令转换为乘法-加法指令,其中加数被迫零。此保留乘积的值,同时使用所述浮点加法器的规范化电路规范化或反规范化所述乘积。如果所述操作数将不产生非规范中间乘积或反规范最终乘积,那么(例如)通过操作数转发来抑制所述加法操作。另外,用具有零加数的乘法-加法指令取代每一非融合浮点乘法-加法指令,且将具有原始乘法-加法指令的加数的浮点加法指令插入到指令流中。如果非规范中间结果或反规范最终结果将不发生,那么可将所述加数恢复到所述乘法-加法指令并将所述加法指令转换为NOP。

【技术实现步骤摘要】
【国外来华专利技术】
本揭示内容大体来说涉及处理器领域且更特定来说涉及将浮点乘法指令重新编码为浮点乘法-加法指令以计算反规范操作数的基于模式的方法。
技术介绍
微处理器可在各种各样的应用中对数值执行计算操作。高执行速度、低功率消耗及较小的大小为处理器设计者的重要目标,尤其在嵌入式应用(例如,便携式电子装置)中。现代处理器采用管线式架构,其中顺序指令(每一者具有多个执行步骤)在执行时重叠。在管线式架构中,每一指令在一系列执行级中执行,例如提取、解码、执行及写回,其中每一者可包含多个管道级。管道级由存储元件及执行指令执行级的所有或部分的逻辑组成。指令按顺序流过所述管线。所述执行级执行所述指令所指定的算术、逻辑或存储器存取操作,且特定来说可对数值执行各种各样的算术操作。数字处理器以定点或浮点格式表示数值。浮点数包含乘以自乘到整数指数的基数2的定点有效数位(还称作尾数)。在某些格式(例如,以引用的方式并入本文中的IEEE 754标准)中,所述浮点表示法另外包括符号位。将所述有效数位乘以自乘到整数指数的2是类似于10进制系统中的科学记数法的二进制。也就是说,所述指数的值确定位位置的数量,且所述有效数位中的二进制小数点应移位的方向识别实际数值-因此产生术语浮点。当所述有效数位在范围1<=有效数位<2中且所述指数在其经界定范围内时,所述浮点值称作“规范”数。因此,规范的浮点数的有效数位为1.小数的形式,其中“小数”为表示大于一的有效数位的小数部分的二进制值。所述指数的值有效地向左(对于负指数)或向右(对于正指数)移位所述二进制小数点。在IEEE 754标准中,单精度浮点数的指数的值的范围为从-126到127。当以IEEE 754单精度格式编码所述数时,将原始指数加上127的偏差,使得所有经编码的指数为正数。用小于一的有效数位(即,0<有效数位<1)且用任一指数表示的浮点值在本文中称作“非规范”数。特别关心的非规范浮点数的一个子集为“反规范”数(也称为次规范数)。反规范浮点数通过使用范围0<有效数位<1中的有效数位及指数-126表示小于1.0×2-126的值。反规范浮点数具有0.小数形式的有效数位,其中所述小数中数前导零的范围为从零到小数-1的宽度。反规范数有效地使用规范的有效数位的小数部分中的位位置来实现二进制小数点的超过126位位置的“左移位”-以丢失精度为代价,因为剩下更少的位来准确表示所述数值。反规范数表示非常接近零的值,-->且可用于实施逐渐下溢,从而允许计算在结果非常小时慢慢丢失精度。在浮点乘法器电路的情况下,反规范乘积可以数种方式产生。乘数或被乘数可以是反规范数。在此情况下,中间乘积的有效数位将通常是非规范(即,小于一)的,而最终经四舍五入的乘积可以是规范或反规范数,此取决于操作数的数值。如果所述乘数及所述被乘数两者均为反规范数,那么所述最终经四舍五入的乘积将为零或最小的可表示反规范数。此外,如果指数较小且将产生需要小于-126的指数的规范化数(对于单精度),那么两个规范数的乘积可以是反规范数。注意,此情况不同于其中乘法的中间值采取“非规范”形式的普通情形。规范的有效数位可采取范围[1,2)中的任一值,也就是说,确切地从一到近乎二(对于假设的5位有效数位来说为1.0000到1.1111)。两个规范的有效数位的乘积可采取范围[1,4)中的值,也就是说,确切地从一到近乎四。因此,此中间乘积有效数位可采取1.小数或1×.小数形式,后者针对从二到近乎四的值(10.0000到11.1111)。作为浮点乘法的例行程序实例,浮点乘法器通过向左移位二进制小数点并将指数递增一来调整此中间结果。在本文中不将此种“非规范的”中间结果视为反规范数,且本揭示内容不对其进行明确陈述。在通用处理器应用(例如,某些嵌入式处理器)中,不需要总是支持反规范数。举例来说,可在不显著丢失准确度的情况下将反规范值简单地表示为零。然而,编程语言规定对反规范数的支持。因此,支持直接执行Java码的处理器至少在Java执行模式期间适应反规范浮点数。可通过在检测到反规范数时产生例外来在软件中支持反规范浮点数,且在软件例行程序中处理所述反规范数。此过程比较慢且产生较大程度的开销,此降低系统性能并增加功率消耗。可通过向每一浮点计算元件添加反规范检测及规范化电路来在硬件中支持反规范数。举例来说,可通过将有效数位移位到规范位置(即,1.小数)且允许小于-126的指数的(非标准)值(对于单精度情况)来“规范化”反规范数。同样,可通过将所述有效数位移位到反规范位置(即,0.小数)使得所述指数变为-126(对于单精度情况)来“反规范化”所述结果。然而,此类额外电路增大硅面积,增大延迟且产生贯通延滞,因此潜在地增大最小循环时间且因此降低最大操作频率。另外,很少遇到反规范数,且以普通情况为代价针对所述罕见情况优化性能会降低总处理器性能。
技术实现思路
浮点加法器包括用以对准加数,及用以规范化并四舍五入和的电路。根据一个或一个以上实施例,在反规范支持模式中,使用浮点加法器的规范化电路来规范化或反规范化来自浮点乘法器的结果。以推测的方式用其中加数被迫零的乘法-加法(还称为乘法-累加)指令取代每一乘法指令。此引导乘法器输出穿过所述加法器电路而不-->改变其值,但使用所述加法器的规范化电路来规范化或反规范化所述乘积。如果确定所述中间乘积将不是反规范而且最终乘积将不是反规范数,那么可(例如)通过操作数转发来抑制所述操作的加法部分。经常,可通过处理乘法指令操作数的指数来在所述乘法执行早期作出此确定。一个实施例涉及一种执行浮点乘法指令以计算非规范中间有效数位或反规范最终乘积的方法。将所述浮点乘法指令转换为浮点乘法-加法指令,所述浮点乘法-加法指令操作以执行浮点乘法操作及浮点加法操作,且将所述浮点加法操作的一个加数迫零。另一实施例涉及一种处理器。所述处理器包括一个或一个以上指令执行管线,其包括具有规范化电路的浮点乘法-累加单元。所述处理器另外包括管线控制器,其操作以使用所述浮点加法器的规范化电路来规范化或反规范化所述浮点乘法器所输出的非规范中间有效数位或反规范浮点乘积。附图说明图1是处理器的功能性框图。图2是由浮点乘法器馈给的浮点加法器的功能性框图。图3为执行浮点乘法指令的方法的流程图。图4为执行浮点乘法-加法指令的方法的流程图。具体实施方式图1描绘处理器10的功能性框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。控制逻辑14包括定义各种操作模式的一个或一个以上寄存器,例如状态寄存器15。管线12可以是具有多个并行管线(例如,12a及12b)的超标量设计。每一管线12a、12b包括组织成管道级的各种寄存器或锁存器16,及一个或一个以上算术逻辑单元(ALU)18。管道级寄存器或锁存器16及ALU 18可从通用寄存器堆18中的寄存器读取操作数及/或向所述寄存器写入结果。管线12a、12b从指令高速缓存器(I-高速缓存器或I$)20提取指令,其中存储器寻址及许由指令侧转换后备缓冲器(ITLB)22管理。数据是从数据高速缓存器(D-高速缓存器或D$)24中存取的,其中存储器寻址及许可由主转换后备缓冲器(TLB)26管理。在各种实施例中,ITLB 22可本文档来自技高网
...

【技术保护点】
一种执行浮点乘法指令以计算反规范输入及/或反规范乘积的方法,其包含: 将所述浮点乘法指令转换为浮点乘法-加法指令,所述浮点乘法-加法指令操作以执行浮点乘法操作及浮点加法操作;及 将所述浮点加法操作的一个加数迫零。

【技术特征摘要】
【国外来华专利技术】US 2006-5-10 11/382,5251、一种执行浮点乘法指令以计算反规范输入及/或反规范乘积的方法,其包含:将所述浮点乘法指令转换为浮点乘法-加法指令,所述浮点乘法-加法指令操作以执行浮点乘法操作及浮点加法操作;及将所述浮点加法操作的一个加数迫零。2、如权利要求1所述的方法,其中仅在反规范支持模式中执行所述方法步骤。3、如权利要求1所述的方法,其中将所述浮点乘法指令转换为浮点乘法-加法指令在执行管线级之前发生。4、如权利要求3所述的方法,其中将所述浮点乘法指令转换为浮点乘法-加法指令在解码管线级中发生。5、如权利要求1所述的方法,其中所述浮点乘法-加法指令为非融合的,且进一步包含将浮点乘法器的输出路由到浮点加法器的规范化电路。6、如权利要求5所述的方法,其中将浮点乘法器的输出路由到浮点加法器的规范化电路包含将所述浮点乘法器的所述输出直接路由到所述规范化电路。7、如权利要求5所述的方法,其中将浮点乘法器的输出路由到浮点加法器的规范化电路包含通过一个或一个以上管线存储器元件将所述浮点乘法器的所述输出路由到所述规范化电路。8、如权利要求1所述的方法,其进一步包含:检查所述浮点乘法指令的乘数及被乘数;基于所述检查确定所述乘法操作的所述乘积将不是反规范数及所述乘法操作数不是反规范的;及响应于所述确定,抑制所述浮点加法操作。9、如权利要求8所述的方法,其中检查所述乘数及被乘数在执行管线级中发生。10、如权利要求8所述的方法,其中抑制所述浮点加法操作包含操作数转发浮点乘法器的输出,使得其可由后续指令消耗。11、如权利要求1所述的方法,其中所述浮点乘法指令为非融合浮点乘法-加法指令,且其中转换所述浮点乘法指令包含:用所述浮点乘法-加法指令的所述加数替代所述值零;及在所述浮点乘法-加法指令之后插入具有所述原始浮点乘法-加法指令的所述加数的浮点加法指令。12、如权利要求11所述的方法,其进一步包含:检查所述浮点乘法-加法指令的乘数及被乘数;基于所述检查确定所述乘法操作的所述乘积将不是反规范数;及基于所述检查确定到所述乘法操作的所述输入不是反规范数;及响应于所述确定,用所述原始乘法-加法指令的所述加数取代所述零加数,且将...

【专利技术属性】
技术研发人员:肯尼思艾伦多克瑟尔帕蒂克苏尼尔拉尔
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利