用于在程序代码转换期间执行解释器优化的方法和装置制造方法及图纸

技术编号:2851624 阅读:241 留言:0更新日期:2012-04-11 18:40
翻译器装置具有解释和翻译功能性的程序代码(17),其中在确定源程序代码(17)的解释更有利的那些情况下,解释源程序代码(17)而不是翻译。翻译器(19)应用解释算法来确定源程序代码(17)的基本块是否应当被解释或翻译。从用于源程序代码(17)的整个指令集初始地选择由解释器支持的特定源指令。1)如果确定基本块内的所有指令在由解释器功能性支持的指令的子集内,以及2)如果基本块的执行计数低于一个翻译阈值,将解释基本块。如果不满足这两个条件的任何一个,则由翻译器(19)翻译基本块。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术通常涉及计算机和计算机软件领域,以及更具体地说,涉及例如用在译码器、仿真器和加速器中的程序代码转换方法和装置。
技术介绍
在内置和非内置CPU中,发现最主要的指令集体系结构(ISA),存在能“加速”性能,或“转换”成能提供更好成本/性能好处的多种处理器的大的软件体,只要它们能透明地访问相关软件。还发现卓越的CPU体系结构,及时锁定到它们的ISA,以及不能在性能或市场占有率方面进展。这种体系结构将受益于“综合CPU”协同体系结构。程序代码转换方法和装置便于这些加速、翻译和协同体系结构能力并在例如公开专利号WO 00/22521名为“Program CodeConversion”中解决。
技术实现思路
根据本专利技术,提供一种如在附加权利要求书中阐述的装置和方法。本专利技术的优选特性将从从属权利要求及下述说明书显而易见。下文是根据本专利技术的各个实施例可实现的各种方面和优点的概述。提供为帮助本领域的技术人员更快速地吸收随之发生的详细设计论述的介绍,以及不是而且不打算用任何方式限制附加的权利要求的范围。具体地,专利技术人已经开发出针对加速程序代码转换,特别是结合采用将源程序代码的连续基本块翻译成目标代码的运行时间翻译器使用的多种优化技术,其中,在生成用于下一基本块的目标代码之前,执行对应于第一基本块的目标代码。在这样一种优化中,翻译器具有程序代码解释和翻译两种功能,其中,在确定源程序代码的解释更有利的那些情况下,解释源程序代码,而不是翻译。翻译器应用解释算法来确定应当解释还是翻译源程序代码的基本块。首先从用于源程序代码的整个指令集中选择解释器功能性所支持的特定源指令。1)如果确定基本块内的所有指令均在解释器功能性所支持的指令子集内,以及2)如果基本块的执行计数低于翻译阈值,则将解释基本块。如果不满足这两个条件的任何一个,那么将由翻译器翻译基本块。附图说明包含在并构成说明书的一部分的附图示例说明当前的优选实现以及描述如下图1是本专利技术的实施例发现应用的装置的框图;图2是示例说明运行时间翻译过程以及在该过程期间生成的相应IR(中间表示)的示意图;图3是示例说明根据本专利技术的示例性实施例的基本块数据结构和高速缓存的示意图;图4是示例说明扩展的基本块过程的流程图;图5是示例说明等成块(isoblocking)的流程图;图6是示例说明组成块和附带优化的流程图;图7是示例说明组块(group block)优化的例子的示意图;图8是示例说明运行时间翻译,包括扩展基本成块、等成块和组成块的流程图;图9是示例说明组成块和附带优化的另一优选实施例的流程图;图10A-10B是表示示例说明局部死码消除优化的例子的示意图;图11是示例说明局部死码消除优化的流程图;图12是示例说明延缓字节交换优化的例子的流程图;图13A-13C是表示示例说明延缓(lazy)字节交换优化的例子的示意图;图14是其中本专利技术的实施例发现应用的装置的框图;以及图15是示例说明解释过程的流程图。具体实施例方式用于实现下述各个新颖特征的示例性装置如图1所示。图1示例说明包括目标寄存器15的目标处理器13以及存储多个软件成分19、20、21的内存18,提供包括基本块高速缓存23、全局寄存器库27的工作存储器16和将转换的源代码17。软件成分包括操作系统20、翻译器代码19和已翻译代码21。翻译器代码19可以例如充当将一个ISA的源代码翻译成另一ISA的翻译代码的仿真器,或充当用于将源代码翻译成翻译代码的加速器,每个具有相同的ISA。翻译器19,即实现翻译器的源代码的编译版本,以及已翻译代码21,即,由翻译器19生成的源代码17的翻译,与操作系统20,诸如例如在目标处理器13,通常是微处理器或另一适当的计算机上运行的UNIX结合运行。将意识到图1所示的结构仅是示例性的,以及例如,根据本专利技术的软件、方法和过程可以用驻留在操作系统内或下的代码来实现。源代码、翻译器代码、操作系统和存储机制可以是多种类型的任何一个,如本领域的技术人员所公知的。在根据图1的装置中,在已翻译代码21运行的同时,在运行时间,最好动态地执行程序代码转换。翻译器19与已翻译器21内联运行。翻译过程的执行路径是包括下述步骤的控制循环执行翻译器代码,将源代码17的一个块翻译成已翻译代码21,然后,执行已翻译代码的块;已翻译代码的每一块的末尾包含使控制返回到翻译器代码19的指令。换句话说,交错翻译然后执行源代码的步骤,使得每次仅翻译部分源程序17,以及在翻译后续基本块之前,执行第一基本块的已翻译代码。翻译器的基本翻译单元是基本块,指的是翻译器19每次翻译源代码17的一个基本块。基本块形式上被定义为具有正好一个入口点和正好一个出口点的代码段,使块代码限制到单个控制路径。为此,基本块是控制流的基本单元。在生成已翻译代码21的过程中,基于源指令序列而生成中间表示(“IR”)树。IR树是所计算的表达式和由源程序执行的操作的抽象表示。稍后,基于IR树,生成已翻译代码21。在此所述的IR节点的集合通俗地被称为“树”。我们注意到形式上,这些结构实际上是有向非循环图(DAG,directed acyclic graph),而不是树。树的正式定义要求每个节点具有至多一个父辈。因为所述实施例在IR生成期间使用公共子表达式消除,节点将总是具有多个父辈。例如,可以由对应于目的地源寄存器和标记结果参数的两个抽象寄存器引用标志影响的指令结果的IR。例如,源指令“add%r1,%r2,%r3”执行相加源寄存器%r2和%r3的内容并将结果存储在源寄存器%r1中。因此,该指令对应于抽象表达式“%r1=%r2+%r3”。该举例包含用加法表达式来抽象寄存器%r1,该加法表达式包含表示指令操作数%r2和%r3的两个子表达式。在源程序17的上下文中,这些子表达式可以对应于其它、先前的源指令,或它们可以表示当前指令的详情,诸如中间常量值。当解析“加法”指令时,对应于加法的抽象数学运算符,生成新的“+”IR节点。“+”IR节点存储对表示操作数的其它IR节点的引用(在IR中表示为子表达式树,通常保存在源寄存器中)。“+”节点由定义其值的源寄存器自身引用(用于%r1的抽象寄存器,指令的目的地寄存器)。例如,图20的中心右部分表示对应于X86指令“add%ecx,%edx”的IR树。如本领域的技术人员将意识到的,在一个实施例中,使用面向对象的编程语言,诸如C++来实现翻译器19。例如,IR节点被实现为C++对象,以及对其它节点的引用被实现为对相应于那些其它节点的C++对象的C++引用。因此,IR树实现为IR节点对象的集合,包含彼此的各种引用。另外,在论述中的实施例中,IR生成使用一组抽象寄存器。这些抽象寄存器对应于源体系结构的具体特征。例如,对于源体系结构上的每个物理寄存器存在唯一一个抽象寄存器(“源寄存器”)。类似地,对于在源体系结构上存在的每个条件码标志存在唯一一个抽象寄存器。抽象寄存器在IR生成期间,用作用于IR树的占位符。例如,源指令序列中指定点处的源寄存器%r2的值用特定IR表达式树来表示,其与用于源寄存器%r2的抽象寄存器有关。在一个实施例中,抽象寄存器被实现为C++对象,其经由对那个树的根节点对象的C++引用与特定IR树有关。在上述的示例性指本文档来自技高网...

【技术保护点】
一种翻译器代码的方法,包括:译码所述程序代码(17);应用解释算法来识别所述程序代码(17)是否可由解释器(22)解释;如果所述程序代码(17)可解释,则使用解释器(22)来解释器代码(17);以及当不解释所述程序代码(17)时,使用翻译器(19)来翻译所述程序代码(17)。

【技术特征摘要】
【国外来华专利技术】GB 2003-4-22 0309056.0;GB 2003-6-30 0315164.4;GB 21.一种翻译器代码的方法,包括译码所述程序代码(17);应用解释算法来识别所述程序代码(17)是否可由解释器(22)解释;如果所述程序代码(17)可解释,则使用解释器(22)来解释器代码(17);以及当不解释所述程序代码(17)时,使用翻译器(19)来翻译所述程序代码(17)。2.如权利要求1所述的方法,其中,所述程序代码(17)包括程序代码(17)的基本块。3.如权利要求1或2所述的方法,其中,应用解释算法的步骤包括确定所述程序代码(17)中的指令是否包括在能由解释器(22)解释的指令的子集内。4.如权利要求3所述的方法,进一步包括将指令的子集选择为用于程序代码(17)的整个指令集的一部分。5.如权利要求4所述的方法,其中,指令子集选择步骤包括从在至少一个程序应用上最频繁执行的整个指令集中选择指令。6.如权利要求4或5所述的方法,其中,被选指令子集能够解释专用目标程序应用的大多数基本块。7.如权利要求4,5或6所述的方法,其中,选择指令子集以解释专用目标程序应用。8.如在前任何一个权利要求所述的方法,其中,应用解释算法来识别程序代码(17)是否可解释的步骤进一步包括确定程序代码(17)的执行计数是否低于一个翻译阈值,其中,如果程序代码(17)的执行计数大于或等于所述翻译阈值,则由翻译器(19)翻译器代码(17)。9.如权利要求2或其任何从属权利要求所述的方法,其中,应用解释算法来识别程序代码(17)的基本块是否可解释的步骤进一步包括确定程序代码(17)的基本块的执行计数是否低于一个翻译阈值,其中,如果程序代码(17)的基本块的执行计数大于或等于所述翻译阈值,则由翻译器(19)翻译器代码(17)的基本块。10.一种计算机可读存储介质,具有以可由计算机执行以便在程序码(17)的翻译期间执行下述步骤的计算机可读代码的形式驻留在其上的软件译码所述程序代码(17);应用解释算法来识别所述程序代码(17)是否可由解释器(22)解释;如果所述程序代码(17)可解释,则使用解释器(22)来解释器码(17);以及当不解释所述程序代码(17)时,使用翻译器(19)来翻译所述程序代码(17)。11.如权利要求10所述的计算机可读存储介质,其中,所述程序代码(17)包括程序代码(17)的基本块。12.如权利要求10或11所述的计算机可读存储介质,其中,应用解释算法的步骤包括确定所述程序代码(17)中的指令是否包括在能由解释器(22)解释的指令的子集内。13.如权利要求12所述的计算机可读存储介质,所述计算机可读代码进一步可执行用于将指令的子集选择为用于程序代码(17)的整个指令集的一部分。14.如权利要求13所述的计算机可读存储介质,其中,指令子集选择步骤包括从在至少一个程序应用上最频繁执行的整个指...

【专利技术属性】
技术研发人员:吉斯利丹科尔加文巴勒克拉夫马修L伊文思
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[]

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

1