产生精确异常的系统和方法

文档序号:6554349阅读:292来源:国知局
专利名称:产生精确异常的系统和方法
技术领域
本发明涉及产生精确异常,更具体地说,涉及利用微小刷新(mini-refresh)产生精确异常。
背景技术
许多微处理器体系结构定义在执行中的某一精确时刻,通常紧接在产生异常条件的指令之后,异常条件必须捕获给软件。一种典型的执行是当结果超出数字的限制范围时的浮点下溢或上溢。体系结构的一个例子是PowerPC体系结构。对于浮点异常,PowerPC体系结构定义了四种不同的执行模式忽略异常模式;不精确的不可恢复模式;不精确的可恢复模式;和精确模式。许多程序按照不精确模式被执行,所述不精确模式允许指令被无序执行。异常时,执行被暂停在导致所述异常的指令处或者所述指令之后。如果在导致异常的指令之后暂停执行,那么按照连续顺序对每个指令更新所有状态数据,一直到执行被暂停的地点,即使所述执行是无序的。这种模式由硬件设计优化。一般通过不流水线处理任何浮点指令来实现精确模式,这会导致与不精确模式相比,执行时间大约慢5-7倍。最理想的是在利用精确模式的操作时,能够提高微处理器的性能。

发明内容
本发明的例证实施例包括一种产生精确异常的方法。所述方法包括检查点检查(checkpoint)异常导致指令。所述检查点检查导致当前的检查点状态。当前的检查点状态被锁定。确定多个寄存器中的任意一个是否要求恢复到当前的检查点状态。响应指示一个或多个寄存器要求所述恢复的确定结果,一个或多个寄存器被恢复到当前的检查点状态。响应所述异常进行异常处理。执行单元被重新启动。
另一例证实施例包括一种在执行单元中产生精确异常的系统。所述系统包括多个寄存器和一个检查点检查异常导致指令的机构。所述检查点检查导致当前的检查点状态。当前的检查点状态被锁定。确定多个寄存器中的任意一个是否要求恢复到当前的检查点状态。响应指示一个或多个寄存器要求所述恢复的确定结果,一个或多个寄存器被恢复到当前的检查点状态。根据对于所述异常,陷阱是否可被允许,在异常处理器或者下一指令重新启动执行单元。
通过本发明的技术,实现其它特征和优点。这里详细说明了本发明的其它实施例和方面,所述其它实施例和方面被看作要求保护的本发明的一部分。为了在优点和特征方面更好地理解本发明,参见下面的说明和附图。


在说明书后,在权利要求中特别指出并且明确要求被认为是本发明的主题。结合附图,根据下面的详细说明,本发明的前述及其它目的,特征和优点是明显的,其中图1图解说明可由本发明的例证实施例实现,从而产生精确异常的例证过程流程;图2图解说明具有恢复单元的微处理器的例证实施例,所述恢复单元能够重新建立供产生精确异常之用的检查点状态。
详细说明将参考附图,举例说明本发明的优选实施例,以及优点和特征。
具体实施例方式
本发明的例证实施例包括一种在具有指令的有限无序完成的微处理器上产生精确异常的方法。本发明的例证实施例的目的在于提高精确模式的性能,以便更接近于普通的非异常情况和增大开销从而获得正确状态的异常情况的不精确模式。这是通过把机器状态改回(correct back)在执行导致异常的指令之后,它所应处于的状态来实现的。执行单元(例如浮点单元或定点单元)了解其内部的执行,并且在导致所述异常的指令之后,能够容易地停止执行。这可通过阻止对机器状态,例如浮点寄存器文件(FPR)和/或浮点状态和控制字(FPSCR)的写入,并停止其流水线中的后续指令来完成。对于无序完成指令,存在变成正确的机器状态方面的问题。在PowerPC体系结构的一个特殊实现中,无序完成被局限于可更新FPR和FPSCR的浮点装入指令,以及局限于可更新通用寄存器(GPR)和控制寄存器(CR或SPR)的定点指令。本发明的例证实施例提供当发生异常时,恢复FPR、FPSCR、GPR和CR的初始值的机构(mechanism)。
在多数无序完成微处理器中,存在按照顺序对更新排序的机构。在所考虑的PowerPC设计中,存在完成缓冲器和微处理器上的恢复单元中的机器状态的检查点状态。本发明的例证实施例包括利用恢复单元中的检查点状态,更新每个单独的执行单元中的机器状态的本地副本(这里也称为影像副本(shadow copy)的方案。另外,本发明的例证实施例可被用于实现两种不同的重新排序策略,用于校正在导致异常的操作之后已被更新的影像副本。第一种方法是更新已被破坏的所有可能状态。第二种方法是通过利用仍待发生的更新的列表,只刷新已被破坏的状态。这两种方法提供复杂程度不同,平均等待时间不同的恢复机构。通过利用本发明的例证实施例,执行单元能够全速执行,并且稍后被改回到导致异常的操作的点。
图1图解说明了本发明的例证实施例可实现的通过恢复全部机器状态,或者通过有选择地恢复部分的机器状态,产生精确异常的例证过程流程。在步骤102,发生异常,执行单元(例如浮点单元)标记导致所述异常的指令的完成,表明该指令导致了异常。当指令完成时,指令的结果被写入完成缓冲器,所述完成缓冲器被用于顺次排列对保存在检查点状态数组(array)中的机器的检查点状态的更新。随后,在步骤104,当恢复单元把指令从完成缓冲器腾空到检查点状态数组中时,对导致异常的指令进行检查点检查。
随后,如果利用的方法是更新可能已被执行的无序指令破坏的所有可能状态,那么在步骤104后进行步骤108。在步骤108,用来自检查点状态数组的检查点数据替换FPSCR(即,位于浮点单元附近的检查点状态数组的影像副本)中的数据。另外,完成缓冲器中在导致异常的指令之后的所有条目都被删除。恢复单元执行恢复例程,所述恢复例程包括从恢复单元检查点状态数组读出所有的检查点状态数据。该数据被写入执行单元中该状态的所有本地或影像副本(即,FPR、FPSCR、GPR和CR)中。在完成恢复例程之后,处理在步骤110继续,在步骤110,指令调度单元通过调用陷阱(trap)处理器(handler)硬件和/或软件来校正异常,通过或者把异常通报程序设计员,或者通过记录异常,并在为机器状态一部分的当前指令地址(例如导致异常的指令之后的下一指令和异常陷阱处理器)重新开始执行,处理所述异常。这样,通过在执行之后恢复全部的机器状态,并提交导致异常的指令的结果,能够丢弃任何无序指令完成。
另一方面,如果利用的方法是只更新如果执行了任何无序指令,已被破坏的状态,那么在步骤104之后进行步骤112。在步骤112,关于无序指令检查完成缓冲器。如果无序指令位于完成缓冲器中,那么进行步骤114,用来自检查点状态数组的数据值更新受影响的寄存器(例如FPR,FPSCR,GPR和CR)中的数据。注意已在步骤104中把导致异常的指令从完成缓冲器腾空到检查点状态数组中,检查完成缓冲器,以了解在步骤112中,哪些指令不正确地更新了状态。例如,在只具有浮点装入指令和定点指令的有限无序完成的机器中,完成缓冲器中的这些类型的指令会被检查。如果这种类型的一个指令被发现,那么它会导致恢复单元进行由该指令更新的特定寄存器的恢复。例如,如果FPR5的浮点装入在完成缓冲器中,那么恢复单元会从检查点状态数组中读取FPR5,并利用检查点状态向具有FPR5的地址的FPR数组发出写入命令。
这样,刷新状态的时间非常小,从而称为微小刷新。微小刷新涉及完成并检查到导致异常的指令,刷新完成缓冲器中的任何无序指令的状态。刷新状态包括读取检查点状态(checkpointed state),并写入到执行单元中该状态的任何本地或者影像副本中,随后把指令地址发送给指令调度单元,从而根据陷阱的模式,在或者对应于异常陷阱处理器的地址,或者对应于导致异常的指令之后的下一指令的地址恢复执行。在图1中的步骤110发生重新启动。
图2图解说明具有恢复单元的微处理器的例证实施例,所述恢复单元能够重新建立在产生精确异常中使用的检查点状态。微处理器包括向浮点单元210和/或向定点单元220发送指令的指令调度单元200。调度单元200可向两个以上的执行单元(例如浮点单元210和定点单元220)发送指令。浮点单元210把来自调度单元200的指令的结果写入FPR和/或FPSCR 232(即,检查点状态数组244的影像或本地副本),以及写入恢复单元240内的完成缓冲器242。指令结果按照完成的顺序被写入FPR和/或FPSCR 232,使得无序指令将无序写入FPR和/或FPSCR 232。相反,指令结果按照它们被启动的顺序被写入完成缓冲器242,使得无序指令将不按照完成顺序被写入完成缓冲器242,而是将根据指令进入流水线(pipeline)的顺序被顺次写入。
类似地,定点单元220把指令的结果从调度单元200写入GPR 234和/或CR 236(即,检查点状态数组244的影像或本地副本),以及写入恢复单元240内的完成缓冲器242。指令结果按照完成的顺序被写入GPR234和CR 236,使得无序指令将无序写入GPR 234和CR 236。相反,指令结果按照它们被启动的顺序被写入完成缓冲器242,使得无序指令将不按照完成顺序被写入完成缓冲器242,而是将根据指令进入流水线的顺序被顺次写入。
完成缓冲器242是用于更新检查点状态数组244的分段区(stagingarea)。完成缓冲器中的条目的数目等于或大于流水线中周期的数目。这允许完成缓冲器242被用于确定在导致异常的指令启动之后,在流水线中是否启动了任何无序指令,和在导致异常的指令结束之前,在流水线中是否结束了任何无序指令。
通过提供微小刷新能力,本发明的例证实施例允许部分无序的机器保持高速执行,同时能够实现精确异常。本发明的例证实施例允许执行单元(例如浮点单元和定点单元)全速执行,并且稍后被改回到导致异常的操作中的点。
可用软件、固件、硬件或者它们的某一组合实现本发明的功能。
作为一个例子,本发明的一个或多个方面可被包括在具有例如计算机可用介质的制造产品(例如一个或多个计算机程序产品)中。所述介质中包含例如提供并实现本发明的功能的计算机可读程序代码单元。所述制造产品可被包括为计算机系统的一部分或者单独销售。
另外,能够提供至少一个机器可读的程序存储装置,所述程序存储装置有形地包含可由机器执行,从而实现本发明的功能的指令的至少一个程序。
这里描述的流程图只是例子。在不脱离本发明的精神的情况下,可对这里描述的这些图或步骤(或操作)做出许多改变。例如,可按照不同的顺序执行这些步骤,或者可以增加、删除或修改步骤。所有这些变化都被认为是要求保护的发明的一部分。
虽然参考例证实施例说明了本发明,但是本领域的技术人员会明白在不脱离本发明的范围的情况下,可以做出各种改变,并且等同物可以替代其元件。另外,可按照本发明的教导做出各种修改,以适应特定的情形或材料,而不脱离本发明的基本范围。于是,本发明并不局限于被认为是实现本发明的最佳方式而公开的特定实施例,相反本发明包括落入附加权利要求的范围内的所有实施例。此外,术语第一、第二等的使用并且表示任何次序或重要性,相反,术语第一、第二等被用于把一个元件和另一元件区别开。
权利要求
1.一种在执行单元中产生精确异常的方法,所述方法包括检查点检查异常导致指令,所述检查点检查导致当前的检查点状态;锁定当前的检查点状态;确定多个寄存器中的任意一个是否要求恢复到当前的检查点状态;响应指示一个或多个寄存器要求所述恢复的确定,把所述一个或多个寄存器恢复到当前的检查点状态;根据对于所述异常,陷阱是否可被允许,在异常处理器或者下一指令重新启动执行单元。
2.按照权利要求1所述的方法,其中所述执行单元是浮点单元。
3.按照权利要求1所述的方法,其中所述执行单元是定点单元。
4.按照权利要求1所述的方法,其中锁定当前的检查点状态包括防止还未被检查点检查的一个或多个指令被检查点检查。
5.按照权利要求1所述的方法,其中进行异常处理包括阻止中断,禁止取指令,发送硬件重置和调用陷阱处理器中的一个或多个。
6.按照权利要求1所述的方法,其中确定指示一个或多个寄存器要求所述恢复,所述一个或多个寄存器包括全部的多个寄存器。
7.按照权利要求1所述的方法,其中确定指示一个或多个寄存器要求所述恢复,因为所述一个或多个寄存器已被一个无序指令更新。
8.按照权利要求1所述的方法,其中确定结果指示多个寄存器中没有一个要求所述恢复。
9.一种在执行单元中产生精确异常的系统,所述系统包括多个寄存器;和一个机构,用于检查点检查异常导致指令,所述检查点检查导致当前的检查点状态;锁定当前的检查点状态;确定多个寄存器中的任意一个是否要求恢复到当前的检查点状态;响应指示一个或多个寄存器要求所述恢复的确定,把所述一个或多个寄存器恢复到当前的检查点状态;和根据对于所述异常,陷阱是否可被允许,在异常处理器或者下一指令重新启动执行单元。
10.按照权利要求9所述的系统,其中所述执行单元是浮点单元。
11.按照权利要求9所述的系统,其中所述执行单元是定点单元。
12.按照权利要求9所述的系统,其中锁定当前的检查点状态包括防止还未被检查点检查的一个或多个指令被检查点检查。
13.按照权利要求9所述的系统,其中进行异常处理包括阻止中断,禁止取指令,发送硬件重置和调用陷阱处理器中的一个或多个。
14.按照权利要求9所述的系统,其中确定指示一个或多个寄存器要求所述恢复,所述一个或多个寄存器包括全部的多个寄存器。
15.按照权利要求9所述的系统,其中确定指示一个或多个寄存器要求所述恢复,因为所述一个或多个寄存器已被一个无序指令更新。
16.按照权利要求9所述的系统,其中确定结果指示多个寄存器中没有一个要求所述恢复。
全文摘要
一种产生精确异常的方法,包括检查点检查异常导致指令。所述检查点检查导致当前的检查点状态。当前的检查点状态被锁定。确定多个寄存器中的任意一个是否要求恢复到当前的检查点状态。响应指示一个或多个寄存器要求所述恢复的确定结果,一个或多个寄存器被恢复到当前的检查点状态。根据对于所述异常,陷阱是否可被允许,在异常处理器或者下一指令重新启动执行单元。
文档编号G06F9/38GK1818854SQ200610004578
公开日2006年8月16日 申请日期2006年2月9日 优先权日2005年2月10日
发明者法迪·Y·布萨巴, 迈克尔·J·麦克, 小约翰·G·雷尔, 埃里克·M·施瓦茨, 岑中龙, 蒂莫西·J·斯莱格尔, 斯科特·B·斯瓦尼, 雪利尔·H·维纳拉雄 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1