执行可调节精度的异常处理的方法和装置制造方法及图纸

技术编号:2850939 阅读:162 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了可调节精度的异常处理技术,用于根据在将主题代码(17)翻译到目标代码(21)期间所遇到的异常的具体类型,以不同的精度级别处理异常。由于异常信号由翻译器(19)检测出,所以以所确定出的精度级别捕获的主题处理器的状态对于所检测出的异常是足够的。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般涉及计算机和计算机软件领域,更具体地说,本专利技术涉及在例如遭遇异常信号的代码翻译器、仿真器和加速器中有用的程序代码转换方法和装置。
技术介绍
异常是改变程序中的正常控制流的状况。异常可以由硬件、软件生成(“引发”)。硬件异常包括例如复位、中断之类的信号,或者来自存储器管理单元的信号。异常可以由算术逻辑单元或浮点数单元由于下述原因生成例如被零除之类的数值错误、由于上溢或下溢、或者由于诸如特权指令、保留指令、陷阱或未定义指令之类的指令解码错误。软件异常因各种程序的不同而变化,并且可以应用于改变程序正常行为的任何类型的错误检查。异常处理程序是在程序执行时发生异常时被调用的专用代码。如果程序未提供给定异常的处理程序,将调用默认的异常处理程序,这通常导致正在运行的程序和正返回的错误指示异常中断。在多种操作系统上,异常信号都是引发异常的常见机制。许多操作系统(尤其是UNIX系统)所遵循的POSIX标准规定这种机制应当如何动作,以使异常信号在多种系统上尽可能相似。最常见的触发异常的事件是在程序实现的进程试图执行下述动作时(i)访问未映射的存储器区域,或(ii)操纵其没有正确的许可的存储器区域。其他常见的触发异常信号的事件为(iii)接收到自另一个进程发送的信号,(iv)由进程不具有执行优先级的指令的进程执行,或(v)硬件中的I/O事件。在异常发生时,由于正执行的程序被中断,所以操作系统将异常信号传递到异常处理程序通常包括所捕获的受影响的处理器的状态。该状态可能非常难以确定,并且生成代价高昂。为了避免这些代价,一般优选有意避免发起异常,除非没有更好的替代。表1描述了定义某些事件的由操作系统发起的一些代表性的异常信号。 表1异常信号异常信号可以来自两个源(1)直接来自主题程序,或(2)来自操作系统和另一个进程。某些异常信号是作为主题程序执行指令的直接结果产生的。例如,如果主题程序执行非法操作符,则引发SIGILL。类似地,如果主题程序试图执行非法存储器访问,则引发SIGSEGV。这些被称作带内信号。异常信号也可以由操作系统或由另一个进程在外部生成。SIGHUP和SIGALRM都是这种信号的示例。这些外部生成的异常信号称作带外信号。从主题程序的视角来看,异常信号可以在任何时刻发生。当异常信号发生时,操作系统中断发出信号的程序的执行,并且调用信号处理程序函数。操作系统维持处理专用函数表,该表将每个信号映射到具体的信号处理程序。操作系统还为所有的异常定义默认的信号处理程序。默认信号处理程序或者采取预定动作,或者简单地忽略该信号。例如,在Unix中,程序可以通过调用sigaction()系统调用来覆写默认信号处理程序。sigaction()允许程序指明当接收特定异常时操作系统应采取什么动作。这些动作可以是(1)忽略异常信号;(2)调用默认信号处理程序;或(3)调用专门的信号处理程序函数,该函数的地址由该程序提供。在执行sigaction()调用时可以指定的其他选项包括在信号处理程序执行期间阻挡哪些其他信号,这以非常类似于CPU可以对遮蔽某些中断的方式执行。可以向Unix信号处理程序提供两个原形之一。第一个信号处理程序原形是“void sigHandler(int sigNum)”。第一参数是异常的编号,这使得一个函数可以可以注册来处理多个信号。程序可以通过调用具有SA_SIGINFO标志的sigaction()来请求向信号处理程序提供更多的信息。在这种情形中,该Unix信号处理程序原形变为“voidsigHandler(int sigNum,siginfo_t sigInfo,void*context)”。第二个参数(“siginfo”)是包含关于信号的信息的结构,包括对导致该信号的原因和该信号来自的位置的指示。例如,在SIGKILL信号的情形中,siginfo结构包含非法指令的地址。这种数据对于允许进程适当地处理信号是关键的。第三个参数(“context”)提供对引发该信号时刻的处理器状态(包括所有主题寄存器)的访问。该数据对于允许正确地处理一个信号也是关键的。允许信号处理程序修改该上下文;当恢复执行时,主题寄存器然后被恢复为修改后的上下文的值。在嵌入式和非嵌入式CPU中,都会发现主导性的指令集体系结构(ISA),软件的大部分都存在于这些指令集,如果假定它们可以透明地访问相关软件,那么其可以为了性能而被“加速”,或者“翻译”到可以表现出更好性价比的无数可行的处理器。还可以发现,主流CPU体系结构都及时锁定在它们的ISA,并且不能在性能和市场延伸而发展。这些体系结构可受益于“合成CPU”联合体系结构。程序代码转换方法和装置辅助这种加速、翻译和联合体系结构能力,并且例如在2003年4月22日提交的题为“Block TranslationOptimization for Program Code Conversion”的共同未决专利申请GB03 09056.0得到了解决,该申请的公开通过参考结合于本申请。在程序代码转换中可能遇到的异常处理是许多主题程序的一个属性。
技术实现思路
根据本专利技术,提供了如所附权利要求中阐述的装置和方法。从所附权利要求和下面的描述中,将清楚本专利技术的优选特征。下面是本专利技术各个实施例可实现的各个方面和优点。作为介绍提供来帮助本领域的技术人员更快地理解随后讨论的详细设计,而不是要以任何方式限制所附权利要求的范围。具体地说,本专利技术已开发出了致力于加快程序代码转换的方法,这些方法结合采用将主题程序代码翻译为目标代码的运行时翻译器尤其有用。根据下面描述的一个方面,提供了可调节的异常处理技术,用于根据在执行翻译后的主题代码时所遇到的异常的具体类型,以不同的精度级别处理异常。由于异常信号由翻译器检测出,所以以所确定出的精度级别捕获的主题处理器的状态对于所检测出的异常和主题程序的相应信号处理行为是足够的。附图说明包含于此并且构成说明书一部分的附示了优选实施方式,并且如下描述图1是应用了本专利技术的装置的框图; 图2是示出了第一异常信号处理过程的示意图;图3是根据本专利技术的说明性实施例用于示出异常信号处理过程的示意图;图4是示出了第二异常信号处理过程的示意图;以及图5是根据本专利技术的说明性实施例用于示出异常信号处理过程的示意图。具体实施例方式图1示出了用于实现下面讨论的各种新颖性特征的说明性装置。图1具体示出了包括目标寄存器15的目标处理器13,以及存储大量软件组件17、19、20和21的存储器18。软件组件包括要被翻译的主题代码17、操作系统20、翻译器代码19和翻译后代码21。翻译器代码19例如可以充当将一个ISA的主题代码翻译为另一个ISA的翻译后代码的仿真器,或者充当用于将主题代码翻译为同一个ISA的翻译后的代码。翻译器19包括可变精度异常处理机制22,该机制22包括代理信号处理程序125。下面将描述,为了异常处理,机制22在目标代码21中注册代理信号处理程序125。为了异常信号处理目的,翻译器19也可以生成翻译后主题信号处理程序127。翻译器19(即,实现翻译器的源代码的编译后版本)和翻译后代码21(即,由翻译器19产生的对主题代码17的翻译)与操作系统20(例如UNIX)一起在目标处理器1本文档来自技高网
...

【技术保护点】
一种用于对在将主题程序代码(17)翻译为目标代码(21)期间遇到的异常进行处理的方法,包括:检测异常的发生;从多个可能的精度级别中选择所述检测出的异常所要求的主题上下文精度级别;以及使用所选择的精度级别调用信号处理程序(22)来处理所检测出的异常。

【技术特征摘要】
【国外来华专利技术】GB 2003-7-4 0315844.1;GB 2003-10-1 0322953.11.一种用于对在将主题程序代码(17)翻译为目标代码(21)期间遇到的异常进行处理的方法,包括检测异常的发生;从多个可能的精度级别中选择所述检测出的异常所要求的主题上下文精度级别;以及使用所选择的精度级别调用信号处理程序(22)来处理所检测出的异常。2.如权利要求1所述的方法,其中,所述异常发生检测步骤在所述主题程序代码(17)的翻译期间检测异常信号的发生。3.如权利要求2所述的方法,其中,由所述翻译生成的所述目标代码(21)调用代理信号处理程序(125)来处理所检测出的异常。4.如权利要求1、2或3所述的方法,其中,所述异常发生检测步骤在所述目标代码(21)执行期间检测异常信号的发生。5.如权利要求4所述的方法,其中,目标操作系统调用代理信号处理程序(125)来处理所检测出的异常。6.如前述权利要求中的任意一个所述的方法,其中,所述主题上下文精度的默认级别是最后所知堆栈帧。7.如权利要求6所述的方法,其中,所述最后所知堆栈帧包括最后所知堆栈指针值、基指针值和程序计数器寄存器值。8.如权利要求7所述的方法,其中,所述主题上下文精度的默认级别不要求调整主题寄存器值。9.如前述权利要求中的任意一个所述的方法,其中,所述主题上下文精度的可能级别之一是无主题状态。10.如前述权利要求中的任意一个所述的方法,其中,所述主题上下文精度的可能级别之一是包括精确的程序计数器值的精确的程序计数状态。11.如前述权利要求中的任意一个所述的方法,其中,所述主题上下文精度的可能级别之一是精确的主题寄存器状态,所述主题寄存器状态包括调整后的主题寄存器和精确的程序计数器值。12.一种在采用翻译器(19)来将主题代码翻译为目标代码(21)的翻译系统中处理主题代码异常的方法,包括下述步骤生成目标上下文;使用所述目标上下文重构主题上下文,从而生成重构的主题上下文;以及使用所述重构的主题上下文执行与具体异常相关联的主题信号处理程序的翻译后的版本。13.如权利要求12所述的方法,其中,所述重构主题上下文的步骤包括重构少于整个主题处理器状态。14.如权利要求12或13所述的方法,其中,所述重构主题上下文的步骤包括选择多个主题上下文精度之一,用于处理所述异常。15.如权利要求14所述的方法,其中,...

【专利技术属性】
技术研发人员:保罗诺尔斯
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:GB[英国]

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

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