CN100573443C - 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 - Google Patents
从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 Download PDFInfo
- Publication number
- CN100573443C CN100573443C CNB2004800448046A CN200480044804A CN100573443C CN 100573443 C CN100573443 C CN 100573443C CN B2004800448046 A CNB2004800448046 A CN B2004800448046A CN 200480044804 A CN200480044804 A CN 200480044804A CN 100573443 C CN100573443 C CN 100573443C
- Authority
- CN
- China
- Prior art keywords
- instruction
- format
- instruction set
- cost
- set framework
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Abstract
一种方法,用多格式指令的不同格式将源指令集架构的多格式指令转换成目标指令集架构的指令,估计与该转换相关联的成本,从而估计出各成本,并至少部分基于所估计的成本来选择所述多格式指令的格式。组织或分组多格式指令的方法基于寄存器使用关系。本发明还公开了实现该方法的软件、硬件和计算机系统。
Description
技术领域
本发明的实施例涉及指令转换领域。
背景技术
为了将适于源机器或处理器的源指令集架构(ISA)的源代码转换成适于目标操作系统上的目标机器或处理器的目标ISA的目标代码,可进行二进制转换。在二进制转换中,源ISA的源指令可被转换成目标ISA的目标指令。
在有些转换中,源ISA可为混合ISA,而目标ISA可为单一ISA。混合ISA具有可用相同或类似语义来操作不同格式的数据的一个或多个多格式指令(例如整型和浮点格式等)。混合ISA的一例是Intel公司(Santa Clara,California)的IA-32 ISA。IA-32 ISA包括流式SIMD扩展指令(例如SSE、SSE2和SSE3指令集等)。在IA-32 ISA中,有些寄存器(如128位MM寄存器)是可存储不同格式的数据的多格式寄存器。例如,寄存器可具有128位,可用于存储四个32位压缩的单精度浮点数据元,两个64位压缩的双精度浮点数据元,或一个128位整型数据元。SSE、SSE2和SSE3指令集的MOVAPD、MOVAPS和MOVDQA指令是多格式指令,它使用相同或类似语义来根据特定指令在XMM寄存器之间和/或在XMM寄存器和处理器外存储器之间移动不同格式的数据。
附图说明
通过参照下面用于说明本发明实施例的描述和附图,可获得对本发明的最好理解。在这些附图中:
图1是表示根据本发明的一个或多个实施例的二进制转换器的框图。
图2表示根据本发明的一个或多个实施例将源ISA的代码块的多格式指令分组并确认这些组的边界指令的方法流程图。
图3表示根据本发明的一个或多个实施例来选择一些组的多格式指令的格式的方法流程图。
图5是表示可用于实现本发明的一个或多个实施例的计算机系统的框图。
具体实施方式
在下面描述中,说明了大量的特定细节。然而,要理解到本发明的实施例可在没有这些特定细节的条件下实施。为清楚起见,在另一些例中没有对公知的电路、结构和技术作详细说明。
图1是表示根据本发明的一个或多个实施例的转换环境的框图。该转换环境包括源架构105的源代码110,目标架构160的目标代码165,以及将源代码中的至少一些指令转换成目标代码发出的对应指令的二进制转换器130。
该源代码可包括可在源架构上运行的源程序或部分源程序。该源代码可包括可用源架构的汇编语言编写的程序或汇编码。该汇编码可由编译器生成或直接由文本编辑程序产生。该源代码还可存在于源机器二进制代码中。汇编程序可生成机器二进制代码。源架构可包括适于可执行该源代码的可执行代码的特定ISA的处理器。在本发明的一个或多个实施例中,源架构可包括可具有多种格式或数据表示的寄存器组,例如Intel公司的IA-32ISA的XMM寄存器和对应的32位处理器等。该寄存器组可包括一些架构寄存器。该源代码通常包括一些源代码块,其中包括源代码块115。同样,该源代码块通常包括一些源指令,其中包括多格式源指令120。
目标代码可包括可在目标架构上运行的目标程序。该目标代码可包括可用目标架构的汇编语言编写的程序或汇编码。二进制转换器可转换、发射或以其他方式从源代码产生目标代码。作为可选的方案,该目标代码还可存在于目标机器二进制代码中。目标架构可包含适于可执行目标代码中的可执行代码的特定ISA的处理器。在本发明的一个或多个实施例中,目标架构(例如架构等)的寄存器组可能不具有多种格式或数据表示。该寄存器组通常具有一些架构寄存器。该目标代码通常包括一些目标代码块,其中包括目标代码块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)在第一指令(op1xmm3xmm2)之后。所述方法可从第二指令向后进到第一指令。对于第二指令(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指令可被任选地转换成一个或多个(例如两个)指令。LDFD是8字节浮点装载指令。LDFPD是16字节并行浮点装载指令。2处理器可发出六个指令并将它们并行执行,所以两个LDFD指令的等待时间可能与一个LDFPD指令的等待时间相同。可将该组指令中的各个的单独多格式指令的转换成本估计(例如上面给出的)加在一起。如所说明的,整型格式的成本可能小于浮点格式的成本。
然而,为改善对总成本的估计,可任选地包括与进行由当前被选格式产生的格式变换相关联的成本,这将在下面进行讨论。
在步骤330可任选地对进行对应于当前组的格式和对应于当前组的一个或多个边界指令的格式之间的格式变换的成本进行估计。若当前组的被选格式不同于当前组的边界指令的格式,则为在格式之间进行变换,附加的变换代码(例如包括一个或多个格式变换指令)可包含在所转换的代码中。格式变换指令可将具有与当前组的当前被选格式相同格式的单格式指令的格式变换成对应于并且具有与当前组的边界指令相同格式的指令的不同格式。举例来说,格式变换指令可将一个寄存器中的整型值变换成另一个寄存器中的浮点值,也可将一个寄存器中的浮点值变换成另一个寄存器中的整型值。架构的典型变换指令包括(但不限于)getf.d和setf.d。
这时,将变换代码包括在内可视为对进行转换的成本的附加贡献。在本发明的一个或多个实施例中,当前组的各变换指令的成本可被加在一起来确定归于(至少部分地)当前组的格式变换的总成本。一方面,包括特定变换指令的成本的预定估计可被列为表格或以其他方式来提供,并可用于成本估计。至少部分地由于当前被选格式,一些变换指令有可能可消除,而为确定净变换成本,这些被消除的变换指令可被减去或以其他方式移除。如前所述,成本估计可根据处理器周期和与多格式指令的格式选择有关的其他标准。因此,对一组的格式选择可至少部分基于指令之间的格式流的分析和对格式变换成本的估计。
表2
指令 | 成本(处理器周期) |
getf.d | 5-6 |
setf.d | 6 |
再参照图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-32ISA等)转换成目标ISA(例如架构或其他适于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中的指令到对应的目标架构指令的转换。图4A表示未进行本文公开的方法进行格式选择的IA-32指令和对应的指令。IA-32指令包括示范性的SSE2指令来装载两个浮点操作数,获得压缩的双字整型,并减去其结果。在IA-32指令中,MOVAPD指令是多格式指令,而PSUBD指令是单格式指令。对应的经转换的指令在该图的右侧示出。ldfd和stfd指令代表浮点存储器访问指令,fp.xmm*.low/high是架构中对应于IA-32架构的XMM*的一对浮点寄存器,r.xmm*.low/high是架构中对应于IA-32架构的XMM*的整型寄存器。此外,四个不同的getf.d指令和两个不同的setf.d指令包含在指令中。这些指令代表进行格式变换的变换代码。在目标代码中包含格式变换代码的势必会使代码更冗长并可代表在目标架构上利用源代码的附加的处理器周期成本。
图4B表示根据本发明的一个或多个实施例,进行了类似于图2-3中说明的格式选择的IA-32指令和对应的指令。在指令组织过程(例如,类似于图2表示的方法)中,MOVAPD xmm0,xmmword ptr[mem0]可确认为组1中的指令,MOVAPD xmm1,xmmword ptr[mem1]可确认为组2中的指令,以及MOVAPD xmmwordptr[mem0],xmm0可确认为组3的指令。然后是格式选择过程(例如,类似于图3表示的方法),用来为这些组选择格式。在这种方法的一应用中,确定了如下格式:组1:xmm0选用了PINT格式;组2:xmm1选用了PINT格式;以及组3:xmmO选用了PINT格式。对应的经转换的指令在该图的右侧示出。经转换的指令不太冗长且低成本地利用作为本文公开的方法的应用结果。
本发明不限于前述的特定实施例。因此,这些实施例的描述应被认为是解释性的而不是限制性的。许多另外的更改是可预期的。例如,在本发明的一个或多个实施例中,算法(例如,贪心算法)可用来各自地选择多格式指令的格式而不是选择所有组中的多格式指令的格式。在这种方法中,可用前向或后向顺序来考察指令。
作为另一例,多格式指令可被分成组(例如前文所述),但另一不同的方法(例如,基于动态程序设计)可用于估计一组内的成本并基于所估计的成本来选择组的格式。作为再一个例子,完全枚举算法可用于其中指令未被分组的情况,但该算法可通过完全枚举和基本块中的每个指令的每种可能格式的估计来尝试选择一种指令的有利格式。对于已从本公开获益的本领域技术人员来说,许多其他的更改和适应是显而易见的。
图5是表示可用于实现本发明的一个或多个实施例的计算机系统的框图。如文中使用的,计算机系统可包括具有硬件和/或软件的装置来处理数据。计算机系统可包括桌上型电脑、膝上型电脑、服务器或巨型计算机,但不限于这里所说的例子。该计算机系统代表用于实现本发明的一个或多个实施例的一种可能的计算机系统,但是也可采用其他计算机系统以及该计算机系统的变形例。
该计算机系统包括总线502来传送信息。该总线可任选地作为通过集线器连接的两个或更多总线来实现,这在计算机系统技术领域是公知的。处理器504与总线连接以进行信息处理。在本发明的一个或多个实施例中,处理器可包括64位处理器,例如,Intel公司(Santa Clara,Califomia)的2处理器或处理器。也可用其他64位处理器。还可任选地包括多个处理器。
该计算机系统还包含主存506,例如,随机访问存储器(RAM)或其他动态存储设备,与总线连接并存储包括将被处理器执行的指令的信息。在一些(但不是全部)计算机系统中包含不同类型的RAM存储器,其中包括(但不限于)静态RAM(SRAM)和动态RAM(DRAM)。
如图示说明的实施例中示出的,操作系统507可存储在主存中。使用的有代表性的基于的操作系统包括(但不限于)基于64位系统的WindowsTM Server 2003企业版,基于64位系统的WindowsTM Server 2003数据中心版以及WindowsTMXP64位版。也可采用Linux、和其他操作系统。
如在图示说明的实施例中进一步示出的,二进制转换器508或其一部分(例如,指令组织逻辑部件、成本估计逻辑部件和/或格式选择逻辑)或至少帮助实现本文公开的方法的另一部分,可包括可存于主存的软件。该软件可包括具有完成与实现与该方法相关联的特定任务的指令的代码或代码段。在各个方面,代码段可代表驱动程序、过程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令组合、数据结构、或程序语句或它们的某些组合。合适的语言包括(但不限于)C/C++,汇编语言以及高级语言和汇编语言的结合。代码段可通过传递和/或接收信息、数据自变量,参数或存储内容与另一代码段或硬件交互。作为可选的方案,二进制转换器或其部分还可包括固件和/或微码。
在本发明的一个或多个实施例中,本文公开的方法和装置可部分用于为较低-位和较老的处理器,(例如,32位处理器)提供在较高-位和较新的处理器(例如,64位处理器)上的ISA兼容性。可以预期,本文公开的方法可有助于提高32位应用程序运行在64位处理器系统(例如,处理器族系统)上的处理器周期和其他性能。还可预期,该方法可能有助于延长传统32位应用程序(例如,不需要最大性能的应用程序和/或源代码不可用的应用程序和/或库)的寿命和/或有效期。
在本发明的一个或多个实施例中,有助于实现一个或多个本文公开的方法的软件和代码段可包含在Intel公司的IA-32执行层(EL)软件。IA-32EL可在出厂时配备基于的操作系统和/或与基于的操作系统集成,并可用于通过动态转换来将IA-32指令变换成指令。IA-32EL软件可用包括转换阶段和执行阶段的两阶段转换架构。IA-32EL可适于多种不同的操作系统,例如,各种基于Windows的操作系统和一个或多个Linux操作系统。IA-32EL可在64位操作系统上在应用程序虚拟空间和特许级(privilegedlevel)中运行。IA-32EL可从操作系统获得控制以运行虚拟地址空间内的32位应用程序代码。若需要,关于IA-32EL的其他背景信息可在Leonid Baraz等人的题为″IA-32 Execution Layer:a two-phasedynamic translator designed to support IA-32 application onbased systems(IA-32执行层:一种用来支持基于的系统上的IA-32应用程序的二阶段动态转换器)″并在IEEE的第36届关于微架构的国际研讨会(MICRO-362003)的会议录中公开的文章。
如在图示说明的实施例中进一步示出的,主存还可存储并提供包含多格式指令(例如,IA-32ISA的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、闪存以及它们的组合(以上仅为举例)。机器可访问介质还可包括电、光、声和其他形式的传播信号,例如载波、红外线信号和传播的数字信号。本发明的一个或多个实施例可作为计算机程序产品被下载,其中程序可借助包含在载波或其他传播信号或介质中的数据信号通过通信链路(例如,调制解调器或网络连接)从一个计算机或其他机器传送到另一计算机或其他机器。
虽然以最基本的形式对很多方法进行了描述,但可任选地将操作加到方法中和/或从方法中删除。方法可借助流程图作为顺序过程来说明,尽管操作可任选地被并行或并发执行。此外,操作的顺序可任选地被重新安排。可对本发明进行许多其他的更改和调整,这对于本领域技术人员是显而易见的。提供的特定实施例不是对本发明的限制,而是为了解释本发明。本发明的范围不是由所提供的特定例子来确定,而是由后附的权利要求规定。
还要理解到,整个说明书中对例如″一个实施例″,″一实施例″,和″一个或多个实施例″,的引用意味着特定特征可包含在本发明的实施中。同样,要理解到,对本发明的示范性实施例进行的描述中,各种特征有时在单个实施例中被组合在一起,其中的附图和描述是为了简化该公开以及理解各发明性方面中的一个或多个的目的。然而,公开的方法不应被理解为反映这样的意图:所主张的发明中需要比在各权利要求中清楚陈述的更多的特征。更确切的说,如下面权利要求所反映的,其发明形态少于前面公开的单个实施例的所有特征。因此,“具体实施方式”部分之后的权利要求书在此明示地结合到“具体实施方式”部分中,各项权利要求本身代表本发明的一个实施例。
虽然已根据一些实施例对本发明进行了描述,但本领域技术人员会认识到本发明不限于所描述的实施例,而是可在附加的权利要求的精神和范围内进行更改和调整。因此,本描述应被认为解释性的而非限制性的。
Claims (10)
1.一种用于将源指令集架构的多格式指令转换成目标指令集架构的单格式指令的方法,该方法包括:
估计与源指令集架构的多格式指令转换成目标指令集架构的单格式指令相关联的成本;以及
从格式组中选择格式,该选择至少部分基于所估计的用于转换多格式指令的成本,其中所述格式组具有与所述多格式指令相关联的寄存器使用关系;
将所选择的格式分配给所述源指令集架构的多格式指令;
将所分配的选择的格式转换成所述目标指令集架构的单格式指令;以及
在所述目标指令集架构上执行所述单格式指令。
2.如权利要求1所述的方法,其中,所述格式组包括IA-32指令集架构的MOVAPD、MOVAPS和MOVDQA。
3.如权利要求1所述的方法,其中与估计相关联的成本被表示为处理器周期数或处理器热发生。
4.如权利要求3所述的方法,其中,估计与转换来自格式组的格式相关联的成本包括:
访问并将与所述格式相关联的作为处理器周期数的预定成本估计全部相加,以及其中基于具有最低估计成本的格式从所述格式组中选择所述格式。
5.如权利要求1所述的方法,还包括:
将所述多格式指令从源指令集架构动态地转换到目标指令集架构,
其中所述多格式指令选自包含MOVAPD、MOVAPS和MOVDQA的格式组,
其中所述源指令集架构包括IA-32指令集架构,以及
其中所述目标指令集架构包括64位处理器。
6.一种用于将源指令集架构的多格式指令转换成目标指令集架构的单格式指令的方法,该方法包括:
通过分析多格式指令之间的寄存器使用关系,将源指令集架构的代码块中的多格式指令分成部分基于格式的至少一组;
通过分析所述代码块中的指令和所述组中的多格式指令之间的寄存器使用关系,将该代码块中的指令确认为所述格式组的边界指令;
估计与将所述格式组中的多格式指令转换为目标指令集架构的单格式指令相关联的成本;以及
至少部分基于所估计的成本来选择所述多格式指令的格式;
将所选择的格式分配给所述源指令集架构的多格式指令;
将所分配的选择的格式转换成所述目标指令集架构的单格式指令;以及
在所述目标指令集架构上执行所述单格式指令,其中所估计的成本包括将所分配的选择的格式变换为与所述组的边界指令对应的指令格式。
7.如权利要求6所述的方法,其中,所述源指令集架构包括IA-32指令集架构,而所述目标指令集架构是64位处理器。
8.如权利要求6所述的方法,其中,与估计相关联的成本被表示为处理器周期数或处理器热发生。
9.一种计算机系统,包括:
总线;
与所述总线耦合的64位处理器;
与所述总线耦合的DRAM存储器;
存储在所述DRAM存储器中的代码,所述代码包含IA-32多格式指令;以及
估计与将IA-32多格式指令转换成64位处理器的指令集架构的指令相关联的成本的逻辑部件;
至少部分基于所估计的成本,从格式组选择IA-32多格式指令的格式的逻辑部件;
将所选择的格式分配给IA-32多格式指令的逻辑部件;
将所分配的选择的格式转换成64位处理器的指令集架构的指令的逻辑部件;
在64位处理器的指令集架构上执行来自所转换格式的指令的逻辑部件。
10.如权利要求9所述的系统,其中与估计相关联的成本被表示为处理器周期数或处理器热发生。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2004/001573 WO2006069485A1 (en) | 2004-12-30 | 2004-12-30 | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101095105A CN101095105A (zh) | 2007-12-26 |
CN100573443C true CN100573443C (zh) | 2009-12-23 |
Family
ID=36614460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800448046A Expired - Fee Related CN100573443C (zh) | 2004-12-30 | 2004-12-30 | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8255882B2 (zh) |
CN (1) | CN100573443C (zh) |
WO (1) | WO2006069485A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008110411A1 (en) * | 2007-03-14 | 2008-09-18 | International Business Machines Corporation | Automatic formatting of computer program source code |
CN101295265A (zh) * | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
US8615647B2 (en) | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US8910110B2 (en) * | 2008-03-19 | 2014-12-09 | Oracle International Corporation | Application translation cost estimator |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US8683451B1 (en) * | 2010-04-30 | 2014-03-25 | The United States Of America As Represented By The Secretary Of The Navy | System and method for translating software code |
US8479176B2 (en) * | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US8578348B2 (en) * | 2010-09-02 | 2013-11-05 | Code Value Ltd. | System and method of cost oriented software profiling |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
EP2801028A4 (en) * | 2012-01-06 | 2015-08-12 | Intel Corp | METHOD AND APPARATUS FOR REPLACING FUNCTIONS OF A COMPUTER INTEGRATED HELP MODULE BY MACHINE LANGUAGE INSTRUCTIONS |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
CN104205049B (zh) * | 2012-03-22 | 2018-05-11 | 英特尔公司 | 混合模拟和内核函数处理系统和方法 |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9032381B2 (en) | 2012-06-29 | 2015-05-12 | Intel Corporation | State recovery methods and apparatus for computing platforms |
KR101394780B1 (ko) * | 2012-08-08 | 2014-05-15 | 인텔 코포레이션 | 오버라이딩 가상 함수 호출에 대한 지원을 포함하는 isa 브릿징 |
US9384001B2 (en) | 2012-08-15 | 2016-07-05 | Nvidia Corporation | Custom chaining stubs for instruction code translation |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9405551B2 (en) * | 2013-03-12 | 2016-08-02 | Intel Corporation | Creating an isolated execution environment in a co-designed processor |
CN104969190B (zh) * | 2013-03-13 | 2018-05-15 | 英特尔公司 | 多核心二进制转换任务处理 |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
EP3049921A4 (en) | 2013-09-26 | 2017-05-17 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US10747880B2 (en) | 2013-12-30 | 2020-08-18 | University Of Louisiana At Lafayette | System and method for identifying and comparing code by semantic abstractions |
US10771514B2 (en) * | 2015-11-12 | 2020-09-08 | Disney Enterprises, Inc. | Systems and methods for facilitating the sharing of user-generated content of a virtual space |
CN106406819B (zh) * | 2016-09-30 | 2019-01-01 | 广州华多网络科技有限公司 | 一种cpu的指令集兼容方法及其终端 |
CN111399906B (zh) * | 2019-12-31 | 2021-11-16 | 咻享智能(深圳)有限公司 | 无线物联网指令管理方法及相关装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5561801A (en) * | 1991-12-13 | 1996-10-01 | Thinking Machines Corporation | System and method for multilevel promotion |
US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US6101592A (en) * | 1998-12-18 | 2000-08-08 | Billions Of Operations Per Second, Inc. | Methods and apparatus for scalable instruction set architecture with dynamic compact instructions |
US6549918B1 (en) * | 1998-09-21 | 2003-04-15 | Microsoft Corporation | Dynamic information format conversion |
US6163764A (en) * | 1998-10-12 | 2000-12-19 | Intel Corporation | Emulation of an instruction set on an instruction set architecture transition |
GB2347526A (en) | 1999-03-04 | 2000-09-06 | Int Computers Ltd | Instruction translation method using templates |
US7251811B2 (en) * | 2002-01-02 | 2007-07-31 | Intel Corporation | Controlling compatibility levels of binary translations between instruction set architectures |
US7200841B2 (en) * | 2003-04-22 | 2007-04-03 | Transitive Limited | Method and apparatus for performing lazy byteswapping optimizations during program code conversion |
GB0309056D0 (en) * | 2003-04-22 | 2003-05-28 | Transitive Technologies Ltd | Block translation optimizations for program code conversion |
US7899855B2 (en) * | 2003-09-08 | 2011-03-01 | Intel Corporation | Method, apparatus and instructions for parallel data conversions |
US7594221B2 (en) * | 2004-04-20 | 2009-09-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for translating binary code |
-
2004
- 2004-12-30 CN CNB2004800448046A patent/CN100573443C/zh not_active Expired - Fee Related
- 2004-12-30 US US11/794,453 patent/US8255882B2/en not_active Expired - Fee Related
- 2004-12-30 WO PCT/CN2004/001573 patent/WO2006069485A1/en not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
CN101095105A (zh) | 2007-12-26 |
US8255882B2 (en) | 2012-08-28 |
US20080141011A1 (en) | 2008-06-12 |
WO2006069485A1 (en) | 2006-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100573443C (zh) | 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择 | |
CA2288614C (en) | Loop allocation for optimizing compilers | |
US8104026B2 (en) | Compiler register allocation and compilation | |
US4656582A (en) | Generating storage reference instructions in an optimizing compiler | |
US9021501B2 (en) | Combinatorial computing | |
US5966537A (en) | Method and apparatus for dynamically optimizing an executable computer program using input data | |
EP0709767A1 (en) | Method and apparatus for multiplatform instruction set architecture | |
US7865896B2 (en) | Facilitating scheduling of jobs by decoupling job scheduling algorithm from recorded resource usage and allowing independent manipulation of recorded resource usage space | |
US7831798B2 (en) | Method to achieve partial structure alignment | |
CN101026826A (zh) | 用于提供在无线装置中使用的整体映像的系统和方法 | |
US5577256A (en) | Data driven type information processor including a combined program memory and memory for queuing operand data | |
US20180307743A1 (en) | Mapping method and device | |
US6175935B1 (en) | Software debugging method and recording medium to which debugging program has been recorded | |
CN111860806A (zh) | 分形计算装置、方法、集成电路及板卡 | |
US6185673B1 (en) | Apparatus and method for array bounds checking with a shadow register file | |
US7523448B2 (en) | Optimizing compiler | |
Khaldi et al. | Extending llvm ir for dpc++ matrix support: A case study with intel® advanced matrix extensions (intel® amx) | |
CN115328658A (zh) | 一种支持混合精度运算的数据访存方法及装置 | |
Mishra et al. | Data transfer and reuse analysis tool for gpu-offloading using openmp | |
CN112527264B (zh) | 基于异构平台的常量数据访问优化方法 | |
CN109388371B (zh) | 一种数据的排序方法、系统、协处理装置和主处理装置 | |
CN105302853A (zh) | 一种实现数据重构的方法和装置 | |
US20220350318A1 (en) | Information processing apparatus, search method, and storage medium | |
CN113111086B (zh) | 数据存储和查询响应方法、区块执行方法 | |
US20200293504A1 (en) | Correlating and referencing blockchains |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091223 Termination date: 20171230 |
|
CF01 | Termination of patent right due to non-payment of annual fee |