从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择的制作方法

文档序号:6509445阅读:332来源:国知局
专利名称:从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择的制作方法
技术领域
本发明的实施例涉及指令转换领域。
背景技术
为了将适于源机器或处理器的源指令集架构(ISA)的源代码转换成适于目标操作系统上的目标机器或处理器的目标ISA的目标代码,可进行二进制转换。在二进制转换中,源ISA的源指令可被转换成目标ISA的目标指令。
在有些转换中,源ISA可为混合ISA,而目标ISA可为单一ISA。混合ISA具有可用相同或类似语义来操作不同格式的数据的一个或多个多格式指令(例如整型和浮点格式等)。混合ISA的一例是Intel公司(Santa Clara,California)的IA-32 ISA。IA-32 ISA包括Intel流式SIMD扩展指令(例如SSE、SSE2和SSE3指令集等)。在IA-32 ISA中,有些寄存器(如128位XMM寄存器)是可存储不同格式的数据的多格式寄存器。例如,寄存器可具有128位,可用于存储四个32位压缩的单精度浮点数据元,两个64位压缩的双精度浮点数据元,或一个128位整型数据元。SSE、SSE2和SSE3指令集的MOVAPD、MOVAPS和MOVDQA指令是多格式指令,它使用相同或类似语义来根据特定指令在XMM寄存器之间和/或在XMM寄存器和处理器外存储器之间移动不同格式的数据。
在二进制转换期间,混合ISA的多格式指令(例如MOVAPD、MOVAPS和MOVDQA指令等)可被转换成单一ISA的代码(例如Itanium架构的代码,它适于64位Itanium处理器或架构等)。
然而,单一ISA(例如,Itanium架构等)可具有分开的寄存器来存储不同格式的数据和/或可允许并行处理纯浮点格式或纯整型格式的数据。为进行二进制转换,可挑选多格式指令的格式。若多格式指令的格式的挑选不适当,则为了利用目标机器或处理器上的源代码,可能产生巨大的成本(例如处理器周期等)。


通过参照下面用于说明本发明实施例的描述和附图,可获得对本发明的最好理解。在这些附图中图1是表示根据本发明的一个或多个实施例的二进制转换器的框图。
图2表示根据本发明的一个或多个实施例将源ISA的代码块的多格式指令分组并确认这些组的边界指令的方法流程图。
图3表示根据本发明的一个或多个实施例来选择一些组的多格式指令的格式的方法流程图。
图4A表示使用本文公开的方法在不进行格式选择的条件下从IA-32指令到对应的Itanium指令的典型转换。
图4B表示根据本发明的一个或多个实施例在进行格式选择的条件下从IA-32指令到对应的Itanium指令的典型转换。
图5是表示可用于实现本发明的一个或多个实施例的计算机系统的框图。
具体实施例方式
在下面描述中,说明了大量的特定细节。然而,要理解到本发明的实施例可在没有这些特定细节的条件下实施。为清楚起见,在另一些例中没有对公知的电路、结构和技术作详细说明。
图1是表示根据本发明的一个或多个实施例的转换环境的框图。该转换环境包括源架构105的源代码110,目标架构160的目标代码165,以及将源代码中的至少一些指令转换成目标代码发出的对应指令的二进制转换器130。
该源代码可包括可在源架构上运行的源程序或部分源程序。该源代码可包括可用源架构的汇编语言编写的程序或点编码。该汇编码可由编译器生成或直接由文本编辑程序产生。该源代码还可存在于源机器二进制代码中。汇编程序可生成机器二进制代码。源架构可包括适于可执行该源代码的可执行代码的特定ISA的处理器。在本发明的一个或多个实施例中,源架构可包括可具有多种格式或数据表示的寄存器组,例如Intel公司的IA-32 ISA的XMM寄存器和对应的32位处理器等。该寄存器组可包括一些架构寄存器。该源代码通常包括一些源代码块,其中包括源代码块115。同样,该源代码块通常包括一些源指令,其中包括多格式源指令120。
目标代码可包括可在目标架构上运行的目标程序。该目标代码可包括可用目标架构的汇编语言编写的程序或汇编码。二进制转换器可转换、发射或以其他方式从源代码产生目标代码。作为可选的方案,该目标代码还可存在于目标机器二进制代码中。目标架构可包含适于可执行目标代码中的可执行代码的特定ISA的处理器。在本发明的一个或多个实施例中,目标架构(例如Itanium架构等)的寄存器组可能不具有多种格式或数据表示。该寄存器组通常具有一些架构寄存器。该目标代码通常包括一些目标代码块,其中包括目标代码块170。该目标代码块可转换自源代码块。该目标代码块通常可包括一些目标指令,其中包括可由二进制转换器从多格式源指令转换的单格式目标指令175。在本发明的一个或多个实施例中,单格式目标指令可规定目标架构的目标寄存器上的操作,该操作可能不支持由多格式源指令规定的源架构的源寄存器的多个格式中的全部格式。
二进制转换器可将源代码或至少可将多格式源指令转换成目标代码或至少转换成单格式目标指令。在本发明的一个或多个实施例中,二进制转换器可包含转换器135来完成转换阶段并可包含执行部150来完成该转换的执行阶段。如图所示,该转换器可包含指令组织逻辑部件140、成本估计逻辑部件142以及格式选择逻辑部件145,它们分别用来组织源代码和/或源代码块中的指令、估计与多格式指令的不同格式相关联的成本以及在指令的组织之后并基于该指令的组织选择多格式指令(如该多格式源指令)的格式。指令组织逻辑部件、成本估计逻辑部件和格式选择逻辑部件的特定的非限定例将在下文描述。如下面进一步讨论的,二进制转换器或其任何部分(例如指令组织逻辑部件、成本估计逻辑部件和/或格式选择逻辑部件,或它们的任意结合)可包括软件、固件、微码、硬件或它们的结合。
图2表示根据本发明的一个或多个实施例将源ISA的代码块的多格式指令分组并通过分析寄存器使用关系来确认这些组的边界指令的方法流程图。该方法包括进行一连串的格式属性和寄存器使用关系的判定,这些判定使当前指令被加到多格式指令的新组中,被加到多格式指令的现有组中,或被确认为多格式指令的新组或现有组的边界指令,如单格式边界指令。如下面进一步讨论的,该方法的实现使指令以有助于估计与选择多格式指令的格式相关联的成本的方式来组织。
在步骤205开始后,当前指令可在步骤210被设为基本代码块的最后一个指令。所说明的方法可经由基本代码块的指令向后进行。在步骤210,还可任选地初始化用于实现该方法的附加变量(例如记数器、数组等)。
下一步,在步骤215,可判定已被扫描的块中的代码是否包含消耗性(consuming)指令。在本发明的一个或多个实施例中,该消耗性指令可以是顺序地在代码块中的当前指令之后并且规定当前指令使用目标寄存器的指令。就是说,当前指令和消耗性指令可通过目标寄存器的寄存器使用关系来关联。如果在当前指令之后有多个规定当前指令使用目标寄存器的指令,那么消耗性指令可为最接近当前指令的指令,它是最近的规定使用目标寄存器的指令。进行该判定的一种方式是将关于指令的寄存器使用关系信息记录在数组或其他数据结构中,如由该方法(例如,指在步骤260的处理)对它们的处理。可参考该数组和信息来判定消耗性指令。是否存在消耗性指令的判定是可用于将指令组织成组和边界指令的判定,这将在下面进一步说明。判定结果可为″否″或″是″。若判定结果是″否″,即不存在消耗性指令,则可在步骤220判定当前指令是否为多格式的。在本发明的一个或多个实施例中,为判定一指令是否为多格式的,可将该指令与预定列表或其他多格式指令的集合进行比较以判定所考察的指令是否匹配该集合中的多格式指令之一。若该指令匹配多格式指令之一,则可判定该指令是多格式的。相反,若该指令不匹配多格式指令之一,则可判定指令不是多格式的。
若在步骤220的判定结果为″是″,则可在步骤225创建包含当前指令的一个新组。该判定结果揭示了当前指令是多格式的并且与已扫描的代码中的消耗性指令没有所规定的寄存器使用关系,因此可放置在一新组中。一方面,当前指令可被置于代表该新组的数组中。然后,该方法可进行到步骤260。相反,若在步骤220的判定结果为″否,则该方法可直接进行到步骤260。后一个判定结果揭示了当前指令不是多格式的并且不是对格式变换成本估计有用的边界指令。关于步骤260中处理将稍后进行讨论。
再参照步骤215,若判定结果为″是″,则可在步骤230判定当前指令是否为多格式的。该判定可按前述方式进行。
若步骤230的判定结果为″是″,则可在步骤235判定消耗性指令是否为多格式的。若步骤235的判定结果为″是″,则可在步骤240将当前指令加到包含消耗性指令的现有组中。在所说明的方法中,可将被扫描的各多格式指令加到现有组或新组中。根据所说明的逻辑,若由第一多格式指令定义的值被第二(所谓的″消耗性″)多格式指令使用,则可将第一指令和第二指令加到同一组,尤其是含有消耗性多格式指令的现有组中。
相反,若步骤235的判定结果为″否″,则可在步骤245创建包含当前指令的新组,并且消耗性指令可被确认为该新组的边界指令。如下面进一步描述的,边界指令可用于估计与多格式指令的被选格式相关联的格式变换成本,该成本可影响在利用单一ISA的目标机器上利用混合源ISA的代码的总体成本。该方法从步骤240或245进到步骤260。
再参照步骤230,若判定结果为″否″,则可在步骤250判定消耗性指令是否是多格式的。若在步骤250的判定结果为″是″,则单格式的当前指令可在步骤255被确认为多格式的消耗性指令的边界指令。然后,该方法可进行到步骤260。相反,若在步骤250的判定结果为″否,则该方法可直接进行到步骤260。
在步骤260,当前指令可被记录来规定使用源寄存器。如前所述,该记录可用于在步骤215判定是否存在消耗性指令。一方面,名为USE[O...n]的数组可用于记录使用特定寄存器的指令,其中,索引可包括寄存器号,而可被记录的指令是使用该寄存器的最近指令。该数组可在步骤260用源寄存器变址,或在步骤215用目标寄存器变址。进一步说明,根据一个特定实施例,假设有下面的二指令序列,第二指令(op2 xram1 xmm3)在第一指令(op1 xmm3 xmm2)之后。所述方法可从第二指令向后进到第一指令。对于第二指令(op2 xmm1xmm3),xmm1包含目标寄存器,而xmm3包含源寄存器。在步骤260,第二指令(op2 xmm1 xmm3)可被记录在数组中,在等于源寄存器(xmm3)的索引处。就是说,USE[xmm3]=第二指令。然后,在后续循环中,第一指令可被扫描。对于第一指令(op1 xmm3 xmm2),xmm3包含目标寄存器,而xmm2包含源寄存器。在步骤215,可判定第二指令是消耗性指令,因为第二指令(op2 xmm1 xmm3)被记录在数组中等于第一指令的目标寄存器的索引处。就是说,USE[xmm3]=第二指令。
下一步,在步骤265判定是否存在前一指令。若在步骤265的判定结果为″是″,则当前指令可在步骤270被设成该前一指令,然后所述方法可重新回到步骤215,上述方法可对该新的当前指令来执行。该循环可重复进行,所述方法经由基本代码块的所有指令向后循环。相反,若步骤265的判定结果为″否″,这种情况对于每个代码块可发生一次,则该方法在步骤275终止。举例来说,在当前指令是基本代码块中的第一个指令的情况下,可能不存在前一指令。在对一代码块的所有指令完成前述方法后,可对其他代码块重复进行该方法。
为说明根据本发明的一个或多个实施例的特定概念,已对判定进行的特定方法和顺序作了说明和描述,然而本发明不限于该判定进行的特定方法和顺序。其他方法可基于重新安排的判定进行顺序和/或基于进行不同的和/或另外的判定。对于从本公开获益的本领域技术人员来说,各种方法是显而易见的。
图3表示根据本发明的一个或多个实施例的选择一些组的多格式指令的格式的方法,所述方法通过估计和比较用多格式指令的不同格式来将一些组的多格式指令从源ISA转换成目标ISA中对应的指令的成本以估计其成本,从而进行格式选择。该方法包括将一基本代码块通过一些组的多格式指令进行循环,并且各组通过该组的多种可能格式进行循环。对各可能格式的成本估计既基于用当前被选格式来转换该组多格式指令的成本,又基于在为该组选择的当前格式和该组的一个或多个边界指令之间进行格式变换的成本。
在步骤305开始后,基本代码块的当前组可在步骤310被选择。在各方面,这些组可按升序、降序或随机顺序来选择。然而,本发明不限于只按这些顺序选择这些组。
下一步,在步骤315,最小成本变量可被设成很大的数。例如,该最小成本变量可被设置成无限大,或至少设置成一值,该值明显大于以任何可能的格式转换该组所预期的值。
然后,在步骤320可从该组的可能格式中选择一个当前格式(例如整型或浮点格式等)。一方面,第一格式(例如整型等)可在第二格式(例如浮点等)之前被选。另一方面,这些格式也可按交替的顺序来选择或随机地选择。然而,本发明不限于只按这些方式来选择格式。
然后在步骤325和330继续进行,其中,与用多格式指令的当前格式将当前组中的多格式指令从源ISA转换成目标ISA的指令相关联的成本被估计。如图示的实施例中说明的,成本可通过既考虑对转换多格式指令的成本的贡献,又考虑对在当前格式和为当前组确认的边界指令的格式之间进行格式变换的成本的贡献来进行估计。所描述的估计成本的顺序不是一定要求的,也可选择其他的顺序。在步骤325,可对用当前被选格式来转换当前组的多格式指令的成本进行估计。在本发明的一个或多个实施例中,成本可通过将转换该组中的各个多格式指令的成本贡献加在一起来估计。对于各多格式指令,可估计将多格式指令转换成目标ISA的对应的单格式指令的成本贡献。在本发明的一个或多个实施例中,各成本贡献可基于和/或通过用对特定转换的成本的预定估计来进行估计。根据一个或多个实施例,成本可任选地用处理器周期来表达或至少与为执行该转换而预期的处理器周期数直接相关。然而本发明不限于这些特定实施例,且本文所讨论的成本还可任选地根据发热性、精度、寄存器利用或其他与选择多格式指令的格式有关的标准来表达。
表1列出了各种多格式IA-32指令(即MOVAPD、MOVAPS和MOVDQA)的典型转换的预定的处理器周期的成本,以及Itanium架构中整型和浮点格式的对应指令。
表1

IA-32指令可被任选地转换成一个或多个(例如两个)Itanium指令。LDFD是8字节浮点装载指令。LDFPD是16字节并行浮点装载指令。Itanium2处理器可发出六个指令并将它们并行执行,所以两个LDFD指令的等待时间可能与一个LDFPD指令的等待时间相同。可将该组指令中的各个的单独多格式指令的转换成本估计(例如上面给出的)加在一起。如所说明的,整型格式的成本可能小于浮点格式的成本。
然而,为改善对总成本的估计,可任选地包括与进行由当前被选格式产生的格式变换相关联的成本,这将在下面进行讨论。
在步骤330可任选地对进行对应于当前组的格式和对应于当前组的一个或多个边界指令的格式之间的格式变换的成本进行估计。若当前组的被选格式不同于当前组的边界指令的格式,则为在格式之间进行变换,附加的变换代码(例如包括一个或多个格式变换指令)可包含在所转换的代码中。格式变换指令可将具有与当前组的当前被选格式相同格式的单格式指令的格式变换成对应于并且具有与当前组的边界指令相同格式的指令的不同格式。举例来说,格式变换指令可将一个寄存器中的整型值变换成另一个寄存器中的浮点值,也可将一个寄存器中的浮点值变换成另一个寄存器中的整型值。Itanium架构的典型变换指令包括(但不限于)getf.d和serf.d。
这时,将变换代码包括在内可视为对进行转换的成本的附加贡献。在本发明的一个或多个实施例中,当前组的各变换指令的成本可被加在一起来确定归于(至少部分地)当前组的格式变换的总成本。一方面,包括特定变换指令的成本的预定估计可被列为表格或以其他方式来提供,并可用于成本估计。至少部分地由于当前被选格式,一些变换指令有可能可消除,而为确定净变换成本,这些被消除的变换指令可被减去或以其他方式移除。如前所述,成本估计可根据处理器周期和与多格式指令的格式选择有关的其他标准。因此,对一组的格式选择可至少部分基于指令之间的格式流的分析和对格式变换成本的估计。
表2列出在经转换代码中包括Itanium架构的各种变换指令的典型的处理器周期成本。
表2

再参照图3,在步骤335,可判定最小成本变量是否大于在步骤325和330估计的成本。该判定结果可为″是″或″否″。
若在步骤335的判定结果为″是″,则处理可进行到步骤340。在第一次经过该循环时,判定结果可能为″是″,因为在步骤315最小成本被设置成一大数。在步骤340,最小成本可被设成在步骤325和330估计的成本之和。这可将该大数替换为用该组中的多格式指令的第一被选格式产生的成本的总和。同时,在步骤340,当前格式可被选为当前组的格式。这可将新的最小成本与对应于该成本的格式相关联。在后来经过对该相同组进行的循环时,若所估计的成本的总和低于最小成本,则判定结果可为″是″。对该组的所有可能格式重复该判定可使格式选择具有最低的所估计成本的总和。因此,对该组的格式选择可基于对用多格式指令的多种不同的可能格式进行转换所估计的成本的比较。然后,该方法可进行到步骤345。相反,若在步骤335的判定结果为″否″,则该方法可直接进行到步骤345。在后一种情况下,前一格式的选择和相关成本被保持。
在步骤345,可判定是否存在该组中的多格式指令的另一可能格式。若在步骤345的判定结果为″是″,则该方法可重新回到步骤320,在该步骤,可从其余可能格式中选择另一当前格式。对于多格式指令,这至少可在最初或第一次通过对各组进行的循环期间进行该判定,因为指令可能有多于一个的格式。
相反,若在步骤345的判定结果为″否″,例如,当该组所有可能格式的成本已被考虑过时,就可能发生这种情况,则在步骤350,当前组中的所有多格式指令可被指定为对应于最小成本的被选格式。在本发明的一个或多个实施例中,当前组的多格式指令可被指定为表格中的被选格式,或指定为可能是可机读格式的其他数据结构。当为确定这些组的多格式指令的被选格式而转换该块时,该数据结构可被读出或以其他方式访问,然后对应的转换模板可用来执行该转换。因此,在所说明的方法中,一组中的多格式指令的格式可基于(至少部分地)用多格式指令的不同的可能格式估计的成本之比较来选择并指定。
再参照图3,在步骤355,可判定在代码块中是否存在另一组多格式指令。若判定结果为″是″,则该方法可重新回到步骤310,在该步骤选择另一当前组。相反,若判定结果为″否″,例如,可能是该代码块的所有组都已被考虑,则该方法在步骤360终止。
下一步,可用一些组的多格式指令的被选格式将该代码从源ISA(例如IA-32 ISA等)转换成目标ISA(例如Itanium架构或其他适于64位处理器的架构)。在本发明的一个或多个实施例中,一组中的所有多格式指令可用相同格式来转换,该格式可代表相对低或最低成本的格式。转换可用转换器来实现,例如,动态二进制转换器或即时编译器。动态二进制转换器或即时编译器可就在该代码执行前将源代码转换成目标代码。然而,不需要进行动态转换。
图2-3中描述的算法的指令组织阶段和格式选择阶段的总时间复杂性可为O(n)。这意味着若块中有n个指令,则该算法可能进行k*n次操作,其中k是常数。该算法的低时间复杂性可很好地适合动态二进制转换。其他算法可能具有O(n2),O(n3)的较高时间复杂性,或甚至更高。譬如说,对于O(n2)算法,可能进行k*n*n次操作,其中k是常数,而n是块中的指令数。
此外,可以有在二进制转换器中实现的其他例程或优化例程。一些例程可包括向后扫描而通过指令和/或块的源高级中间表示(IR)。回想图2中说明的同样地向后扫描通过块中的指令的示范性算法的指令组织阶段。在本发明的一个或多个实施例中,一个或多个例程或优化例程可用本文公开的方法(例如,图2中说明的也可向后扫描通过指令的指令组织方法)合并。就是说,在向后扫描而通过指令的期间,多个优化例程可并行搜集关于指令的信息。这可允许多个例程的一些部分并行运行,从而势必可提高二进制转换的运行时间性能。
为进一步说明某些概念,考虑应用和未应用本文公开的格式选择方法的典型转换。尤其是,考虑从源IA-32 ISA中的指令到对应的目标Itanium架构指令的转换。图4A表示未进行本文公开的方法进行格式选择的IA-32指令和对应的Itanium指令。IA-32指令包括示范性的SSE2指令来装载两个浮点操作数,获得压缩的双字整型,并减去其结果。在IA-32指令中,MOVAPD指令是多格式指令,而PSUBD指令是单格式指令。对应的经转换的Itanium指令在该图的右侧示出。ldfd和stfd指令代表浮点存储器访问指令,fp.xmm*.low/high是Itanium架构中对应于IA-32架构的XMM*的一对浮点寄存器,r.xmm*.low/high是Itanium架构中对应于IA-32架构的XMM*的整型寄存器。此外,四个不同的getfd指令和两个不同的setf.d指令包含在Itanium指令中。这些指令代表进行格式变换的变换代码。在目标代码中包含格式变换代码的势必会使代码更冗长并可代表在目标架构上利用源代码的附加的处理器周期成本。
图4B表示根据本发明的一个或多个实施例,进行了类似于图2-3中说明的格式选择的IA-32指令和对应的Itanium指令。在指令组织过程(例如,类似于图2表示的方法)中,MOVAPD xmm0,xmmword ptr[mem0]可确认为组1中的指令,MOVAPD xmm1,xmmword ptr[mem1]可确认为组2中的指令,以及MOVAPD xmmwordptr[mem0],xmm0可确认为组3的指令。然后是格式选择过程(例如,类似于图3表示的方法),用来为这些组选择格式。在这种方法的一应用中,确定了如下格式组1xmm0选用了PINT格式;组2xmm1选用了PINT格式;以及组3xmmO选用了PINT格式。对应的经转换的Itanium指令在该图的右侧示出。经转换的Itanium指令不太冗长且低成本地利用作为本文公开的方法的应用结果。
本发明不限于前述的特定实施例。因此,这些实施例的描述应被认为是解释性的而不是限制性的。许多另外的更改是可预期的。例如,在本发明的一个或多个实施例中,算法(例如,贪心算法)可用来各自地选择多格式指令的格式而不是选择所有组中的多格式指令的格式。在这种方法中,可用前向或后向顺序来考察指令。
作为另一例,多格式指令可被分成组(例如前文所述),但另一不同的方法(例如,基于动态程序设计)可用于估计一组内的成本并基于所估计的成本来选择组的格式。作为再一个例子,完全枚举算法可用于其中指令未被分组的情况,但该算法可通过完全枚举和基本块中的每个指令的每种可能格式的估计来尝试选择一种指令的有利格式。对于已从本公开获益的本领域技术人员来说,许多其他的更改和适应是显而易见的。
图5是表示可用于实现本发明的一个或多个实施例的计算机系统的框图。如文中使用的,计算机系统可包括具有硬件和/或软件的装置来处理数据。计算机系统可包括桌上型电脑、膝上型电脑、服务器或巨型计算机,但不限于这里所说的例子。该计算机系统代表用于实现本发明的一个或多个实施例的一种可能的计算机系统,但是也可采用其他计算机系统以及该计算机系统的变形例。
该计算机系统包括总线502来传送信息。该总线可任选地作为通过集线器连接的两个或更多总线来实现,这在计算机系统技术领域是公知的。处理器504与总线连接以进行信息处理。在本发明的一个或多个实施例中,处理器可包括64位处理器,例如,Intel公司(Santa Clara,California)的IntelItanium2处理器或IntelItanium处理器。也可用其他64位处理器。还可任选地包括多个处理器。
该计算机系统还包含主存506,例如,随机访问存储器(RAM)或其他动态存储设备,与总线连接并存储包括将被处理器执行的指令的信息。在一些(但不是全部)计算机系统中包含不同类型的RAM存储器,其中包括(但不限于)静态RAM(SRAM)和动态RAM(DRAM)。
如图示说明的实施例中示出的,操作系统507可存储在主存中。使用的有代表性的基于Windows的操作系统包括(但不限于)基于64位Itanium系统的WindowsTMServer 2003企业版,基于64位Itanium系统的WindowsTMServer 2003数据中心版以及WindowsTMXP64位版。也可采用Linux、Unix和其他操作系统。
如在图示说明的实施例中进一步示出的,二进制转换器508或其一部分(例如,指令组织逻辑部件、成本估计逻辑部件和/或格式选择逻辑)或至少帮助实现本文公开的方法的另一部分,可包括可存于主存的软件。该软件可包括具有完成与实现与该方法相关联的特定任务的指令的代码或代码段。在各个方面,代码段可代表驱动程序、过程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令组合、数据结构、或程序语句或它们的某些组合。合适的语言包括(但不限于)Java,C/C++,汇编语言以及高级语言和汇编语言的结合。代码段可通过传递和/或接收信息、数据自变量,参数或存储内容与另一代码段或硬件交互。作为可选的方案,二进制转换器或其部分还可包括固件和/或微码。
在本发明的一个或多个实施例中,本文公开的方法和装置可部分用于为较低-位和较老的处理器,(例如,32位处理器)提供在较高-位和较新的处理器(例如,64位处理器)上的ISA兼容性。可以预期,本文公开的方法可有助于提高32位应用程序运行在64位处理器系统(例如,IntelItanium处理器族系统)上的处理器周期和其他性能。还可预期,该方法可能有助于延长传统32位应用程序(例如,不需要最大性能的应用程序和/或源代码不可用的应用程序和/或库)的寿命和/或有效期。
在本发明的一个或多个实施例中,有助于实现一个或多个本文公开的方法的软件和代码段可包含在Intel公司的IA-32执行层(EL)软件。IA-32 EL可在出厂时配备基于Itanium的操作系统和/或与基于Itanium的操作系统集成,并可用于通过动态转换来将IA-32指令变换成Itanium指令。IA-32 EL软件可用包括转换阶段和执行阶段的两阶段转换架构。IA-32 EL可适于多种不同的操作系统,例如,各种基于Windows的操作系统和一个或多个Linux操作系统。IA-32EL可在64位操作系统上在应用程序虚拟空间和特许级(privilegedlevel)中运行。IA-32 EL可从操作系统获得控制以运行虚拟地址空间内的32位应用程序代码。若需要,关于IA-32 EL的其他背景信息可在Leonid Baraz等人的题为″IA-32 Execution Layera two-phasedynamic translator designed to support IA-32 application on Itanium-based systems(IA-32执行层一种用来支持基于Itanium的系统上的IA-32应用程序的二阶段动态转换器)″并在IEEE的第36届关于微架构的国际研讨会(MICRO-36 2003)的会议录中公开的文章。
如在图示说明的实施例中进一步示出的,主存还可存储并提供包含多格式指令(例如,IA-32 ISA的MOVAPD、MOVAPS和MOVDQA指令)的源代码509。二进制转换器可将包含多格式指令的源代码转换成适于该处理器的指令。
该计算机系统还包括磁盘驱动器514。所说明的磁盘驱动器在计算机系统的内部,虽然也可选择为在外部。磁盘驱动器可包括对机器可访问和/或可读介质516读和/或写数据的机器。适用的磁盘驱动器包括(但不限于)硬盘驱动器、软盘驱动器、磁盘驱动器和光盘驱动器。适用的对应机器可访问介质包括(但不限于)硬盘、软盘、磁盘和光盘。在本发明的一个或多个实施例中,至少有助于实现本文公开的方法中的一个或多个指令和代码段,可存在机器可访问介质上,由磁盘驱动器从机器可访问介质读出并存储在主存上,以在动态和/或静态二进制转换过程中使用。任选地,软件指令和/或代码段还可被预装在主存中。任选地,适于源ISA并包含多格式指令的源代码还可存储在机器-可访问介质上,读出而存储在主存上,并由使用一个或多个本文公开的方法的二进制转换器来转换。
再参照处理器,如虚线所示,在本发明的一个或多个可选实施例中,处理器可任选地包括代表二进制转换器505的电路或其任何部分,例如,指令组织逻辑部件、成本估计逻辑部件和/或格式选择逻辑部件,或其他有助于实现一个或多个本文公开的方法的逻辑部件。作为另一种选择,这些硬件可在处理器以外的芯片上提供。
计算机系统还包括连接到总线用于存储静态信息和处理器指令(例如基本输入输出系统(BIOS))的只读存储器(ROM) 510。包含在一些但并非所有的计算机系统中的不同类型的存储器包括闪存、可编程ROM(PROM)、可擦除可编程ROM(EPROM)以及电可擦除可编程ROMROM(EEPROM)。
计算机系统还可任选地通过总线与显示信息给终端用户的显示器521(例如,阴极射线管(CRT)或液晶显示器(LCD))连接。键盘522可任选地连接到总线并传送信息和命令选择给处理器。可任选地包括的另一类型的用户输入设备是将方向信息和命令选择传送给处理器并控制显示设备上光标移动的光标控制设备523,例如,鼠标、跟踪球和光标方向键。
通信设备524也可任选地与总线连接。一些但并非所有的计算机系统中包含通信设备。取决于特定实现方式,通信设备可包括调制解调器、网络接口卡或其他公知的接口设备,例如,为提供通信链路的目的,那些连接以太网、令牌环的设备或其他类型的附加设备来支持例如局域网或广域网的设备。另外,实现本发明的一个或多个实施例的软件指令也可由通信设备从网络接收。
在上面描述中,为解释的目的,说明了大量特定细节以提供对本发明的实施例的充分理解。然而,一个或多个其他实施例可在没有这些特定细节的条件下被实施,这对本领域技术人员来说是显而易见的。在另一些例子中,为了清楚起见,对于公知的电路、结构、设备和技术仅以框图形式示出和/或不作详细说明。
本发明的一个或多个实施例可包括各种操作。这些操作可由硬件部件完成,或可体现在机器可执行指令中,所述指令可用来使得或至少引发经用该指令编程的通用或专用处理器或逻辑部件来完成这些操作。作为可选的方案,这些操作也可由硬件和软件的结合来实现。
本发明的一个或多个实施例可作为程序产品或其他制品来提供,这些产品和制品可包括机器可访问和/或可读介质,在介质上存储或以其他方式提供一个或多个指令和/或数据结构。机器可访问介质可提供指令,当这些指令被机器执行时,可引发和/或导致机器实现本文公开的一个或多个操作和方法。适用的机器包括(但不限于)处理器、计算机系统(例如,个人计算机、工作站和服务器)以及各种其他具有一个或多个处理器的设备。机器可访问介质可包括提供(例如存储和/或传输)可由机器访问的形式的信息的任何机构。例如,机器可访问介质可包括可记录和/或不可记录介质,如软盘、光存储介质、光盘、CD-ROM、磁盘存储介质、光磁盘、只读存储器(ROM)、随机访问存储器(RAM)、DRAM、EPROM、EEPROM、闪存以及它们的组合(以上仅为举例)。机器可访问介质还可包括电、光、声和其他形式的传播信号,例如载波、红外线信号和传播的数字信号。本发明的一个或多个实施例可作为计算机程序产品被下载,其中程序可借助包含在载波或其他传播信号或介质中的数据信号通过通信链路(例如,调制解调器或网络连接)从一个计算机或其他机器传送到另一计算机或其他机器。
虽然以最基本的形式对很多方法进行了描述,但可任选地将操作加到方法中和/或从方法中删除。方法可借助流程图作为顺序过程来说明,尽管操作可任选地被并行或并发执行。此外,操作的顺序可任选地被重新安排。可对本发明进行许多其他的更改和调整,这对于本领域技术人员是显而易见的。提供的特定实施例不是对本发明的限制,而是为了解释本发明。本发明的范围不是由所提供的特定例子来确定,而是由后附的权利要求规定。
还要理解到,整个说明书中对例如″一个实施例″,″一实施例″,和″一个或多个实施例″,的引用意味着特定特征可包含在本发明的实施中。同样,要理解到,对本发明的示范性实施例进行的描述中,各种特征有时在单个实施例中被组合在一起,其中的附图和描述是为了简化该公开以及理解各发明性方面中的一个或多个的目的。然而,公开的方法不应被理解为反映这样的意图所主张的发明中需要比在各权利要求中清楚陈述的更多的特征。更确切的说,如下面权利要求所反映的,其发明形态少于前面公开的单个实施例的所有特征。因此,“具体实施方式
”部分之后的权利要求书在此明示地结合到“具体实施方式
”部分中,各项权利要求本身代表本发明的一个实施例。
虽然已根据一些实施例对本发明进行了描述,但本领域技术人员会认识到本发明不限于所描述的实施例,而是可在附加的权利要求的精神和范围内进行更改和调整。因此,本描述应被认为解释性的而非限制性的。
权利要求
1.一种方法,包括如下操作用多格式指令的不同格式将源指令集架构的多格式指令转换成目标指令集架构的指令,估计与该转换相关联的成本,从而估计出各成本;以及至少部分基于所估计的成本来选择所述多格式指令的格式。
2.如权利要求1所述的方法,其中,所述估计成本的操作包括用所述多格式指令的浮点格式将从IA-32指令集架构的MOVAPD、MOVAPS和MOVDQA中选择的多格式指令转换成64位处理器的指令集架构的指令,估计与该转换相关联的成本。
3.如权利要求1所述的方法,还包括将源指令集架构的所述多格式指令动态地转换成具有所述被选格式的目标指令集架构的指令。
4.一种包含机器可访问介质的制品,所述介质提供当被访问时使机器进行如下操作的指令用所述多格式指令的不同格式将源指令集架构的多格式指令转换成目标指令集架构的指令,估计与该转换相关联的成本,从而估计出各成本;以及至少部分基于所估计的成本来选择所述多格式指令的格式。
5.如权利要求4所述的制品,其中所述机器可访问介质还提供当被访问时使机器进行如下操作的指令用所述多格式指令的浮点格式将从IA-32指令集架构的MOVAPD、MOVAPS和MOVDQA中选择的多格式指令转换成64位处理器的指令集架构的一个或多个指令,估计与该转换相关联的成本。
6.如权利要求4所述的制品,其中,所述机器可访问介质还提供当被访问时使机器进行如下操作的指令通过访问并将以处理器周期数表示的预定成本估计全部相加来估计所述成本;以及选择一个具有最低估计成本的格式。
7.一种装置,包括第一电路,用多格式指令的不同格式将源指令集架构的多格式指令转换成目标指令集架构的对应的单格式指令,估计与该转换相关联的成本,从而估计出各成本;以及第二电路,至少部分基于所估计的成本来选择所述多格式指令的格式。
8.如权利要求7所述的装置,其中所述多格式指令从MOVAPD、MOVAPS和MOVDQA中选择,其中所述源指令集架构包括IA-32指令集架构,而其中所述目标指令集架构包括适于64位处理器的指令集架构。
9.如权利要求7所述的装置,其中第一电路包含对在被选格式和与所述多格式指令相关联的边界指令的格式对应的格式之间变换的格式变换成本进行估计的电路部分。
10.一种包含机器可访问介质的制品,所述介质提供若被执行就使机器进行如下操作的指令估计对应于源指令集架构的多格式指令的第一格式的第一成本,其中估计第一成本的操作包含估计将第一格式的多格式指令转换成目标指令集架构的第一格式的一个或多个单格式指令而对第一成本的第一贡献;以及估计将一个或多个单格式指令的第一格式变换成与所述多格式指令具有寄存器使用关系的边界指令对应的指令的不同格式而对第一成本的第二贡献;估计与多格式指令的第二格式对应的第二成本;以及为所述多格式指令选择第一格式和第二格式中具有较低对应估计成本的格式。
11.如权利要求10所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令将所述多格式指令从源指令集架构动态地转换到目标指令集架构,其中所述多格式指令从MOVAPD、MOVAPS和MOVDQA中选择,其中所述源指令集架构包括IA-32指令集架构,而所述目标指令集架构适于64位处理器。
12.如权利要求10所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令估计出以处理器周期数表示的第一成本。
13.一种包含机器可访问介质的制品,所述介质提供若被执行则使机器进行如下操作的指令对于代码块中的第一指令,判定所述代码块是否包含第二指令,第二指令在第一指令之后,并且规定第一指令使用目标寄存器;若所述代码块包含第二指令,则判定第一指令是否为多格式;若第一指令为多格式,则判定第二指令是否为多格式;以及若第二指令为多格式,则将第一指令加到含有第二指令的组中。
14.如权利要求13所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令若第二指令不是多格式,则创建含有第一指令的第二组,并将第二指令确认为第二组的边界指令。
15.如权利要求13所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令若第一指令不是多格式,则判定第二指令是否为多格式;以及若第二指令为多格式,则将第一指令确认为第二指令的边界指令。
16.一种包含机器可访问介质的制品,所述介质提供若被执行则使机器进行如下操作的指令对于代码块中的第一指令,判定所述代码块是否包含第二指令,第二指令在第一指令之后,并且规定第一指令使用目标寄存器;若所述代码块不包含第二指令,则判定第一指令是否为多格式;以及若第一指令为多格式,则创建含有第一指令的组。
17.如权利要求16所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令若代码块包含第二指令,则判定第一指令是否为多格式;若第一指令为多格式,则判定第二指令是否为多格式;以及若第二指令不是多格式,则创建含有第一指令的第二组。
18.如权利要求17所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令若第二指令不是多格式,则将第二指令确认为第二组的边界指令。
19.一种包含机器可访问介质的制品,所述介质提供若被执行则使机器进行如下操作的指令通过分析所述多格式指令之间的寄存器使用关系,将源指令集架构的代码块中的多格式指令分成至少包含一组的若干组;通过分析所述代码块中的一指令和所述组中的多格式指令之间的寄存器使用关系,将该指令确认为所述组的边界指令;用所述多格式指令的不同格式将所述组中的多格式指令转换成目标指令集架构的单格式指令,估计与该转换相关联的成本,从而估计出各成本,其中所述估计成本的操作包含估计将目标指令集架构的单格式指令的格式变换成与所述组中的边界指令对应的指令的不同格式的成本;以及至少部分基于所估计的成本来选择所述多格式指令的格式。
20.如权利要求19所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令通过用被选格式将源指令集架构的多格式指令转换成目标指令集架构的单格式指令,其中所述源指令集架构包括IA-32指令集架构,而所述目标指令集架构适于64位处理器。
21.如权利要求19所述的制品,其中,所述机器可访问介质还提供若被执行则使机器进行如下操作的指令至少部分基于所估计的成本来选择所述组的格式。
22.一种系统,包括总线;与所述总线连接的64位处理器;与所述总线连接的DRAM存储器;存储在所述DRAM存储器中的代码,所述代码包含IA-32多格式指令;以及执行如下操作的逻辑部件用IA-32多格式指令的一个不同格式将IA-32多格式指令转换成64位处理器的指令集架构的指令,估计与该转换相关联的成本,从而估计出各成本;至少部分基于所估计的成本来选择IA-32多格式指令的格式;以及将所述IA-32多格式指令转换成具有被选格式的64位处理器的指令集架构的指令。
23.如权利要求22所述的系统,其中所述逻辑部件包括存储在所述DRAM存储器中的指令,若所述指令被执行则使所述64位处理器进行所述操作。
24.如权利要求22所述的系统,其中所述逻辑部件包括所述64位处理器上的电路。
全文摘要
一种方法,用多格式指令的不同格式将源指令集架构的多格式指令转换成目标指令集架构的指令,估计与该转换相关联的成本,从而估计出各成本,并至少部分基于所估计的成本来选择所述多格式指令的格式。组织或分组多格式指令的方法基于寄存器使用关系。本发明还公开了实现该方法的软件、硬件和计算机系统。
文档编号G06F9/30GK101095105SQ200480044804
公开日2007年12月26日 申请日期2004年12月30日 优先权日2004年12月30日
发明者Q·张, J·李, S·徐 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1