[发明专利]用于将不常用短代码序列嵌入热代码中而无需分支绕行的方法无效
申请号: | 200880002104.9 | 申请日: | 2008-01-21 |
公开(公告)号: | CN101601010A | 公开(公告)日: | 2009-12-09 |
发明(设计)人: | A·希克;K·斯图德利 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/318 | 分类号: | G06F9/318;G06F9/30;G06F9/38 |
代理公司: | 北京市金杜律师事务所 | 代理人: | 吴立明;姜 彦 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 将不 常用 代码 序列 嵌入 无需 分支 绕行 方法 | ||
技术领域
本发明总体上涉及对将要在具有可变长指令的计算机或微处理器中执行的指令的编码。更具体地,本发明针对用于将较少执行的代码序列嵌入经常执行的代码序列而不需要伴随地引入更长的执行时间的方法。
背景技术
计算机程序通常具有在异常状况下执行的不常用(冷)代码序列。有时候,这些不常用代码序列出现在热(经常执行的)代码附近。这种代码存在于热代码附近要求编译器、解释器、汇编器或程序设计器在通常情况下分支绕过不常用序列。在频繁执行的路径上分支绕行会导致额外的性能开销。可选地,编译器或者程序设计器可以选择在外联(out-of-line)代码序列(线外写码(outlining))中生成不常用代码序列。这避免了性能开销,但是增加了代码和/或编译器的复杂性,尤其是当不常用代码很小的时候。
发明内容
本发明可以应用于具有可变长指令的机器。本发明利用较大指令的二进制编码的细节在较大的(也即长度较长的)指令(的序列)中嵌入小的不常用代码序列。巧妙地选择较大指令以使得不影响程序的正确执行,并且从而较大指令实际上工作为空操作或无操作(NOP)。选择较大指令作为不会显著影响热代码路径的快速指令。在不常用情况下,当需要执行不常用指令序列时,通过分支到较大指令的中间而使得可到达该不常用指令。这允许避免由于必须包括分支绕行指令而产生的性能开销,并且还可以避免线外编码的复杂性。
因此,根据本发明,提供了一种用于在具有可变长指令的存储程序的计算机中构建指令的方法、系统和程序产品。本发明包括对在异常状况下执行的、实际上位于第二指令的一个或多个字段内的指令进行编码的步骤,其中第二指令的执行基本上不受该字段内代码存在的影响。实质上,本发明创建了一种取决于进入的点而具有双重特性的计算机指令形式。换句话说,就是两个指令位于一个中。
当很少遇到处理的异常状况时,能够最佳地实现本发明的优势。然而注意,整个指令类别都易于产生需要处理的异常状态。这些当然包括算术、逻辑和移位操作,不过也有一些其他类型和组别的指令也显示出这种特性。这些包括提供系统管理功能的指令(所谓的“原子指令”,诸如“比较和交换”)以及串指令。本发明可应用于所有这些指令,概括地说,本发明可应用为与显示出需要异常状况处理的任何指令一起使用。
通过本发明的技术实现了附加的特征和优势。本发明的其他实施方式和方面在此详细描述并且视为所请求保护的发明的一部分。
此处对本发明的各种实施方式所符合的期望对象明细的记载并不意味着暗示或者建议在本发明最通用的实施方式中或者在本发明任一更具体的实施方式中,单独地或者集体地将这些对象的任一或全部提供作为必要特征。
附图说明
在此说明书的结尾部分特别指出和明确声明本发明的主题。然而,通过参考以下结合附图的描述,可以最好地理解本发明(作为组织和实践方法二者)以及本发明的其他特征和优势,附图中:
图1是示出了在未采用本发明的情形下用于异常处理的指令处理的框图;
图2是示出了根据本发明的方法来描述的用于异常处理的指令处理的框图;
图3是示出了本发明所应用的环境的框图;以及
图4是编码有本发明的CD-ROM或其他计算机可读介质的顶部视图。
具体实施方式
下面的Intel A32架构代码序列是在热路径中包括小的不常用代码序列的一个代码实例。程序设计器/编译器在大部分时间必须分支绕过不常用代码序列:
add eax,ebx;将两个数相加
jo L1;如果发生不常用溢出,则分支到L1以进行处理
-热代码-
jmp Ldone;分支绕过不常用代码
L1:or eax,3
Ldone:
在图1中举例说明上述代码及其附带限制。具体地,示出了计算机指令序列,每条指令具有一个或多个字段。在“计算机指令长度”谱(spectrum)的最低端,可以仅包括单个字节。其他指令具有可变大小。图1和图2示出了典型的字段大小和字段数目,但是这并不意味着建议这些是本发明的范围所唯一覆盖的大小和数目。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200880002104.9/2.html,转载请声明来源钻瓜专利网。