最佳化微处理器执行x87浮点加法指令的装置及方法制造方法及图纸

技术编号:2918105 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种最佳化微处理器执行x87浮点加法指令的装置及方法,其中该微处理器具有精度控制场、指令调度器及浮点单元。该浮点单元从该指令调度器接收浮点加法指令,从其加数中产生总和。该浮点单元判断是否有任何条件存在于该等加数上,该等条件关于该精度控制场的精度及该等加数对舍入运算的贡献。若无条件存在,该浮点单元依舍入运算判断做舍入运算判断。若任何条件存在,该浮点单元将该总和及由该等加数所导出的舍入信息予以储存,并通知该指令调度器重新调度该指令。于重新调度指令时,该浮点单元依该储存的舍入信息及该精度控制场做舍入运算判断,并依舍入运算判断选择性地舍入运算该总和。

【技术实现步骤摘要】

本专利技术是关于浮点数的数学运算,更是关于执行高速x87浮点加法运算的方法与系统。
技术介绍
浮点数,一般来说,由符号位、指数及包含该浮点数值中有效数字的尾数(故亦称为有效数)所表示。举例而言,以该IEEE标准754对二进制浮点运算的定义,当表示归一化的浮点数时,其尾数包括整数1及在二进制小数点之后的分数。x87架构为执行浮点运算的常用架构。该x87架构描述于IA-32英特尔架构软件开发者手册第1集-基本架构(2006年6月)之中(并入全文中对各种议题的参考文献,在此简称为「英特尔手册」)。特别的是,其第4.8节,描述实数在各种浮点数形式中的表示法;第8章大体描述其如何以x87浮点运算单元(Floating Point Unit,FPU)进行程序设计;而第5.2节描述特定的x87FPU指令。x87FPU共支持三种不同的浮点运算形式:单精度形式数字为32位,其又包括1位表示正负号、8位表示指数、以及23位表示尾数;双精度形式数字为64位,其又包括1位表示正负号、11位表示指数、以及52位表示尾数;双扩充精度形式数字为80位,其包括1位表示正负号、15位表示指数、1整数字元、以及63位表示尾数。浮点数字的精度定为其尾数的位数。因此,若在该单精度和双精度形式中,给定隐含整数1的位至该二进制小数点的左侧,及在该双扩充精度形式中给定确实整数1的位至该二进制小数点的左侧时,则该单精度形式的浮点数限制至24位,该双精度形式的浮点数字限制至53位,而该双扩充精度形式被系统默认的浮点数字则限制至64位。然而,执行于双扩充精度形式浮点数的精度计算法可能被限制少于64位,且该精度限制乃由程序设计者所决定。x87 FPU包括精度控制(Precision Control,PC)场-->以改变x87 FPU执行浮点计算的精度。举例而言,若该程序写至该PC场指定为单精度,就算一个或一个以上的加数可能具有大于该24位的精度,而该x87 FPU仍以24位精度表示其结果。按此,该FPU会将该结果的有效值中、小于该PC场所指定精度的位数予以舍去(即将该位数化为零)。x87FPU最常执行的浮点运算指令即加法(含减法)指令。浮点加法指令执行Ra+Rb的计算,其中Ra和Rb为浮点加数。Ra的尾数于此标示为A而Rb的尾数于此标示为B。假设Ra为较大的加数而Rb为较小的加数,例如,Ra具有较Rb大的指数。x87 FPU按照Ra与Rb指数的差值移动B数个位,以校准较小加数的尾数以配合较大加数的尾数。然后,该x87 FPU将尾数A与校准后的尾数B予以相加而产生总和。该FPU于是归一化该总和以移除任何前置的零值。最后,该FPU对该归一化总和执行舍入运算。对于x87 FPU执行浮点加法指令的时机而言,该舍入运算可说相当重要。FPU依照具有频率及周期的频率以执行指令。对已知的半导体制程技术和FPU设计(例如,需要多少门延迟(gate delay)以执行该加法运算)而言,其可能必需延长该频率周期以调整该舍入运算的时机,以完成指令的执行。否则,FPU常需更多频率周期以执行加法运算。在此情况下,对FPU的效能而言,若能以最少的频率周期执行浮点加法指令(常有已知的频率周期、FPU设计以执行该指令的门延迟、以及使用的该半导体制程技术等),则可说是十分理想。舍入运算可判断执行浮点加法指令时是否需要额外的频率周期,例如:该FPU执行浮点加法指令是在N个频率周期,还是N+1个频率周期。这是因为x87FPU执行加法指令的舍入运算判断(例如该等加数的总和是否需要进位)会随着该等加数与该FPCW的PC场的指定精度而改变。更特别的是,程序设计者可通过该PC场指定一个与该等加数相异的精度,此将导致在某些情况下,耗费较多的时间以进行舍入运算判断。而在那些情况下,耗费较长的时间来进行舍入运算判断将会使整个指令的执行耗费额外的频率周期。因此,举例而言,x87 FPU若在第一情况下(对应该等加数的精度、以及PC场的指定精度)执行浮点加法运算时需费时三个频率周期,在第二情况下(同样对应该等加数的精度,以及PC场的指定精度),若该FPU因为进行舍入运算判断需耗费较多时间,则在此第二情况下可能要四个频率周期方可完成指令的执行。以下是加数精度对应PC场的指定精度的某些情况下、又在该情况下所造成的影响的特殊例子。-->假设该PC场指定精度与该等加数的精度皆相同,则仅较小的加数会因为上述讨论的尾数校准的机制,对舍入运算贡献位(于此称做固着位)。在此情况下,简单检视其中较小加数的固着位即可进行舍入运算判断,而最低有效位数在校准期间则会向右移位。而此情况下,进行舍入运算判断的时间大部分将包括于对两加数尾数进行实质加法运算的时间之内。然而,假设其中较大加数的精度大于该PC场指定精度,则该较大加数也可能对舍入运算判断贡献固着位。在此情况下,x87 FPU必须将该两加数所贡献的所有固着位加入,以进行舍入运算判断。而对固着位进行加法运算所耗时间,可能与对尾数中非固着位的部分进行加法运算相当,例如,其中较上位在该PC场指定精度之内。该x87 FPU在执行该等尾数加法的后检视该等固着位的和,以进行舍入运算判断。在此情况下,很重要的是,与其它情况下只有较小加数贡献固着位不同,该FPU无法仅由较大加数的尾数及校准后的较小加数的尾数来进行舍入运算判断。此外,该FPU尚须等该等固着位的加法运算完成后始可执行上述舍入运算判断。已有不少努力是为了增进执行快速浮点加法运算。举例而言,如Seidel等所著的「ON THE DESIGN OF FAST IEEE FLOATING-POINT ADDERS」,参照IEEE计算机协会的第15届IEEE计算机运算讨论会公报(ARITH’01)。在该商业可行的x87 FPU当中,程序设计者通过PC场指定浮点运算精度的能力仍存有问题,然而,该论文却未将此需求列入考虑。更特别的是,该论文假设仅有一加数会对舍入运算判断贡献固着位。然而,如上所述,该x87架构的特质,即该PC场的特质,会产生同时对两加数进行舍入运算判断的情形。一些因素如:微处理器的频率、x87 FPU中各电路(加法器、移位器、及控制逻辑电路)的门延迟、以及在某些情况下进行舍入运算判断需要额外的时间(例如两加数皆贡献固着位),都会在某些设计中造成频率周期不必要的延长,或增加x87执行浮点加法指令时额外的频率周期。解决此问题的方法之一为使该FPU以可变的频率周期执行浮点加法指令。然而,此方法在指令调度,特别是在超量且失序执行的微处理中并不理想。另外的方法则是简单地用一致但较原本多的频率周期(在上述例子中为四个频率周期)去执行所有的浮点加法指令,而不考虑其它情况。然而,此方法明显不是一个高效能的方案。因此,希望能有一种方法,能够使x87在执行相对耗时的浮点加法指令-->(例如进行舍入运算判断时,两加数皆贡献固着位时)后产生正确的结果;且不会影响执行相对省时的浮点加法指令(例如当舍入运算判断时,仅有一加数贡献固着位)的时间。
技术实现思路
有鉴于此,本专利技术提供一种最佳化微处理器执行x87浮点加法指令的装置,包括x87浮点控制字(Floating Point Control Word,FPCW)、指令调度器(Instruction Di本文档来自技高网
...

【技术保护点】
一种最佳化微处理器执行x87浮点加法指令的装置,包括: x87浮点控制字,包括精度控制场,其可编程以指定浮点单元执行浮点运算的精度; 指令调度器,用以将x87浮点加法指令调度至该浮点单元,而该浮点加法指令具有第一及第二浮点加数,其中该第一及第二浮点加数的尾数的有效位数的位较该精度控制场的指定精度少; 该浮点单元,用以: 将该第一及第二加数相加以产生总和; 决定一组预设条件是否存于该第一及第二加数中,其中该等加数对总和的舍入运算判断有所贡献,且与该精度控制场的指定精度有关; 若该组预设条件并不存在: (1)依照该第一和第二加数中较小者的尾数的位以及该精度控制场的指定精度来进行舍入运算判断;及 (2)依照该舍入运算判断,对该总和选择性地进行舍入运算,以产生该浮点加法指令的结果;以及 若该组预设条件存在: (1)储存该总和及由该第一和第二加数所导出的舍入信息; (2)通知该指令调度器重新调度该浮点加法指令至该浮点单元;以及 (3)对该指令调度器重新调度该浮点加法指令至该浮点单元之举作出下列回应: (a)依照该储存的舍入信息和该精度控制场的指定精度作出舍入运算判断;以及 (b)依照该舍入运算判断,对该总和选择性地进行舍入运算,以产生该结果。...

【技术特征摘要】
US 2008-4-10 12/100,5831.一种最佳化微处理器执行x87浮点加法指令的装置,包括:x87浮点控制字,包括精度控制场,其可编程以指定浮点单元执行浮点运算的精度;指令调度器,用以将x87浮点加法指令调度至该浮点单元,而该浮点加法指令具有第一及第二浮点加数,其中该第一及第二浮点加数的尾数的有效位数的位较该精度控制场的指定精度少;该浮点单元,用以:将该第一及第二加数相加以产生总和;决定一组预设条件是否存于该第一及第二加数中,其中该等加数对总和的舍入运算判断有所贡献,且与该精度控制场的指定精度有关;若该组预设条件并不存在:(1)依照该第一和第二加数中较小者的尾数的位以及该精度控制场的指定精度来进行舍入运算判断;及(2)依照该舍入运算判断,对该总和选择性地进行舍入运算,以产生该浮点加法指令的结果;以及若该组预设条件存在:(1)储存该总和及由该第一和第二加数所导出的舍入信息;(2)通知该指令调度器重新调度该浮点加法指令至该浮点单元;以及(3)对该指令调度器重新调度该浮点加法指令至该浮点单元之举作出下列回应:(a)依照该储存的舍入信息和该精度控制场的指定精度作出舍入运算判断;以及(b)依照该舍入运算判断,对该总和选择性地进行舍入运算,以产生该结果。2.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中该组预设条件包括:实质加法运算乃由该浮点单元响应该浮点加法指令而执行;及该第一及第二加数的较大者的精度较该精度控制场的指定精度大。3.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中该预设条件包括:该第一和第二加数的指数差大于1;及该第一及第二加数的较大者的精度较该精度控制场的指定精度大。4.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中该预设条件包括:实质减法运算乃由该浮点单元响应该浮点加法指令而执行;该第一及第二加数的指数差小于或等于1;及该第一及第二加数中至少一者的精度较该精度控制场的指定精度大。5.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中当该指令调度器重新发送至该浮点加法指令至该浮点单元时,该指令调度器也提供指令至该浮点单元,其中该指令表示该浮点加法指令已被重新调度,以与前先被指令调度器调度至该浮点单元之举作出区别。6.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中该储存的舍入信息包括:该总和中有效位数中较该精度控制场的指定精度少的位;及累计固着位,该累计固着位基于该第一及第二加数中较小者校准后的尾数中最低有效位,且其不被包括于用以产生总合的第一及第二加数的相加。7.根据权利要求1所述的最佳化微处理器执行x87浮点加法指令的装置,其中若该组预设条件不存在时,该浮点单元用以依照该第一及第二加数中较小者的尾数在经校准后的有效位数中较该精度控制场的指定...

【专利技术属性】
技术研发人员:汤姆艾尔摩泰瑞派克斯
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:71[中国|台湾]

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

1