首页> 中国专利> 独立于踪迹的存储地址来定义踪迹句柄

独立于踪迹的存储地址来定义踪迹句柄

摘要

提供一种与存储器无关的用于踪迹的句柄。使用踪迹的内容而不是踪迹的存储器位置来创建句柄。这使得能够在与踪迹关联的应用的后续运行中容易地标识该踪迹。

著录项

  • 公开/公告号CN101583927A

    专利类型发明专利

  • 公开/公告日2009-11-18

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200880002216.4

  • 发明设计人 M·米特兰;A·希克;

    申请日2008-01-16

  • 分类号G06F11/34;G06F9/455;

  • 代理机构北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-12-07

    授权

    授权

  • 2010-01-13

    实质审查的生效

    实质审查的生效

  • 2009-11-18

    公开

    公开

说明书

技术领域

本发明主要地涉及在处理环境内执行的跟踪,并且具体地涉及为由跟踪产生的踪迹(trace)定义句柄(handle)。

背景技术

当在处理环境内执行跟踪时产生一个或者多个踪迹。每个踪迹包括一个或者多个连续已执行指令。在踪迹中包括的指令是在跟踪功能的开始与停止时间之间执行的指令。存在不同类型的跟踪技术,包括基于符号/模块的技术和基于踪迹的技术。与基于符号/模块的技术不同的是,基于踪迹的技术是独立于程序模块边界而定义的。由基于踪迹的技术产生的序列较基于传统的符号/模块的策略而言提供重要优点,这是因为在指令序列中固有地表示真实程序流。利用基于踪迹的技术来扩展优化器的范围以提供更全局的机会。

虽然踪迹有助于为处理环境提供优化,但是在为踪迹创建独特标识句柄时存在固有的困难。通常为了创建用来标识踪迹的句柄而使用关于存储器位置的信息。然而这在存储器位置为动态时是有问题的。

发明内容

基于前文,需要一种用以标识踪迹的增强能力。具体而言,需要一种用以不考虑踪迹在存储器中驻留于何处而创建标识踪迹的句柄的能力。

通过提供如权利要求1所述的方法来克服现有技术的不足并且提供附加优点。

本发明也提供一种对应系统和计算机程序。

通过本发明的技术来实现附加特征和优点。这里具体地描述本发明的其它实施例和方面,并且将其视为要求保护的本发明的一部分。

附图说明

本发明的一个或者多个方面在后附于说明书的权利要求中作为例子被具体地指出和明确地要求保护。根据结合附图进行的以下具体描述,本发明的前述和其它目的、特征以及优点是显而易见的,在附图中:

图1描绘了用以包含和使用本发明一个或者多个方面的处理环境的一个实施例;

图2描绘了根据本发明一个或者多个方面的图1的存储器的一个实施例的更多细节;

图3描绘了根据本发明一个方面的图2的仿真器的即时(Just-In-Time)编译器的一个实施例的进一步的细节;

图4描绘了根据本发明一个方面的与定义踪迹句柄关联的逻辑的一个实施例;

图5描绘了根据本发明一个方面的与使用踪迹句柄关联的逻辑的一个实施例;以及

图6描绘了用以包含本发明一个或者多个方面的计算机程序产品的一个实施例。

具体实施方式

根据本发明的一个方面,提供一种用于定义与存储器无关的踪迹句柄的能力。具体而言,为踪迹定义与踪迹在存储器中驻留的位置无关的踪迹句柄。代替的是,句柄是基于踪迹的内容。这使得能够在踪迹针对其定义的应用的多次运行中成功地使用句柄。

作为一个例子,应用是仿真器。仿真器包括对被仿真的指令进行跟踪的跟踪功能(例如记录例程)。它起初在仿真器启动时接通而在预定点处(诸如分支(branch))处关断。在该时间期间所执行的指令集被称作踪迹。在分支处,可以启动另一踪迹以收集另一指令集,等等。在仿真器的执行期间提供一个或者多个踪迹。踪迹的指令序列可以包括跨不同代码边界(诸如跨用户应用和操作系统以及跨与被跟踪的应用通信的代码)的指令。

参照图1描述了用以包含和使用本发明一个或者多个方面的处理环境的一个实施例。在这一例子中,处理环境100是基于可以称为本机(native)架构的一个架构,但是对可以称为客户(guest)架构的另一架构进行仿真。作为例子,本机架构是由纽约州阿芒克市的国际商业机器公司提供的Power4或者架构或者由英特尔公司提供的架构;而客户架构是也由纽约州阿芒克市的国际商业机器公司提供的的多个方面在2005年9月的IBM出版物No.SA22-7832-04“z/Architecture Principlesof Operation”中进行了描述,在此通过引用将其整体并入。

例如,处理环境100包括例如经由一个或者多个总线108来相互耦合的本机处理器102(例如中央处理单元(CPU))、存储器104(例如主存储器)和一个或者多个输入/输出(I/O)设备106。作为例子,处理器102是由纽约州阿芒克市的国际商业机器公司提供的服务器的一部分。和是美国纽约州阿芒克市的国际商业机器公司的注册商标。是英特尔公司的注册商标。这里所用其它名称可以是国国际商业机器公司或者其它公司的注册商标、商标或者产品名称。

本机中央处理单元102包括在环境内进行处理期间使用的一个或者多个本机寄存器110,诸如一个或者多个通用寄存器和/或一个或者多个专用寄存器。这些寄存器包括代表环境在任何特定时间点的状态的信息。

另外,本机中央处理单元102执行存储器104中存储的指令和代码。在一个特定例子中,中央处理单元执行存储器104中存储的仿真器代码112。这一代码使在一个架构中配置的处理环境能够对另一架构进行仿真。例如,仿真器代码112允许基于不同于的架构的机器(诸如服务器),以对进行仿真,并且执行基于开发的软件和指令。

参照图2描述关于仿真器代码112(也称为仿真器)的更多细节。在一个例子中,仿真器代码112包括用以从存储器104获取一个或者多个客户指令202并且用以可选地为一个或者多个获取的指令提供本地缓存的指令提取例程200。客户指令202包括为了在与本机CPU 102的架构不同的架构中执行而开发的软件指令(例如机器指令)。例如,客户指令202可以已经被设计成在处理器上执行,但是代替的是,其在本机CPU 102(其例如可以是服务器)上被仿真。

仿真器112也包括用以确定已经获取的客户指令类型、并且用以将客户指令翻译成一个或者多个对应的本机指令208的指令翻译例程204。这一翻译例如包括标识将由客户指令执行的功能并且选择用以执行该功能的本机指令。

另外,仿真器112包括用以引起执行本机指令的仿真控制例程206。仿真控制例程206可以使本机CPU 102执行对一个或者多个先前获取的客户指令进行仿真的本机指令例程,并且在这样的执行结束时,将控制返回到指令提取例程以对接下来的一个或者多个客户指令的获取进行仿真。本机指令208的执行可以包括将数据从存储器104加载到寄存器中;将数据从寄存器存储回到存储器;或者执行如由翻译例程确定的某一类算术运算或者逻辑运算。

例如用存储于存储器中并且由本机中央处理单元102执行的软件来实施每个例程。在其它例子中,用固件、硬件、软件或者其一些组合来实施一个或者多个例程或者操作。可以使用本机CPU的寄存器110或者通过使用存储器104中的位置对被仿真的客户处理器的寄存器进行仿真。在一个或者多个实施例中,客户指令202、本机指令208和仿真代码112可以驻留于相同存储器中或者可以分散于不同存储器设备。

在一个实施例中,进一步将提取和控制例程已经处理的指令的汇集提供给即时编译器210。即时编译器是如下动态编译器,该动态编译器检查指令、查找用以去除冗余的机会、并且在仿真器运行于其上的本机平台上生成匹配指令序列。尽管每次仿真器具有对于一个指令的可见性,但是即时编译器具有对于指令序列的可见性。由于它具有对于指令序列的可见性,所以它可以尝试寻找指令序列中的冗余并且去除它们。即时编译器的一个例子是纽约州阿芒克市的国际商业机器公司提供的JAVATM Just-in-Time(JIT)编译器。JAVA是加利福尼亚州圣塔克拉拉市的Sun Microsystems公司的商标。

在http://www.research.ibm.com/journal/sj/391/suganuma.html的2000年第1期第39卷作者为T.Suganuma等人的“Overview of theIBM Just-in-Time Compiler”中描述了JAVA JIT编译器的概况,在此通过引用将其整体并入。例如,以下也描述了JIT编译器的方面:Proceedings of the 2006 Conference of the Center for Advanced Studieson Collaborative research的2006年文章5的作者为V.Tang、J.Siu、A.Vasilevskiy、M.Mitran的“A Framework For Reducing InstructionScheduling Overhead In Dynamic Compilers”;ACM SIGPLAN的2001年11月第11期第36卷作者为T.Suganuma、T.Yasue、M.Kawahito、H.Komatsu和T.Nakatani的“A Dynamic Optimization Framework ForA Java Just-In-Time Compiler”;以及In Proc.Fifth Symposium onOperating Systems Design and Implementation(OSDI′02)2002年12月作者为C.A.Waldspurger的“Memory Resource Management inVMware ESX Server”,在此通过引用将上述每篇文献都整体并入。

即时编译器也包括一种用于为由仿真器提供的踪迹提供与存储器无关的踪迹句柄的能力。例如,仿真器采用记录例程来跟踪连续执行的指令集。这个指令集(即踪迹)被转发到即时编译器,而即时编译器为该踪迹创建句柄。这一句柄是基于踪迹的内容而不是存储器位置。参照图3描述即时编译器的这一特征。

参照图3,即时编译器300包括获取(例如接收、具有、提取、被提供等)作为输入的指令踪迹304并且提供作为输出的n位密钥306的编码器302,诸如哈希编码器。密钥例如是作为用于踪迹的句柄来使用的128位哈希码。这一句柄是基于指令踪迹的内容,并且与踪迹在存储器中的位置无关。因此,踪迹句柄与存储器无关。

参照图4描述关于创建踪迹句柄的更多细节。在一个实施例中,在处理环境内发起跟踪(例如跟踪仿真器)并且产生包括指令序列的踪迹。将指令序列(即踪迹或者在另一实施例中为其一部分)输入到编码器(步骤400)。编码器在这一例子中对输入的踪迹进行哈希编码(步骤402)。在一个例子中,所用哈希码函数为MD5,在http://www.ietf.org/rfc/rfcl221.txt的1992年4月、且作者为R.Rivest的“The MD5 Message-Digest Algorithm”中描述了MD5的一个实施例,在此通过引用将其整体并入。虽然提供MD5作为例子,但是可以采用许多其它哈希技术。对哈希技术的选择确定了两个不同踪迹以相同密钥而结束的概率。然而,就诸如MD5的算法而言,这一概率毫无疑问是很小的,因此这一能力在诸如JIT的动态编译器中是有用的。

哈希编码的输出为密钥(步骤404)。在这一特定实施例中,密钥是128位哈希码,它是踪迹的标识符(即句柄)。虽然在这一例子中句柄包括128位,但是在其它实施例中句柄可以是其它长度。

被创建并且被用作踪迹句柄的密钥没有基于存储器位置,但是代替的是该密钥基于踪迹内容。例如,编码器选择踪迹的每个指令(或者所选指令)的一位或者多位,并且对产生用作句柄的n位密钥的那些所选位进行编码。由于句柄没有基于存储器位置,所以句柄无关于踪迹在存储器中驻留于何处,并且在应用的多次运行中标识相同踪迹。

创建的踪迹句柄在一个例子中用来在应用(例如仿真器)的后续运行期间观察踪迹。例如,假设将要观察踪迹的特定实例my_T。对踪迹进行编码以创建句柄my_h_t。随后,应用一次或者多次重新运行从而产生一个或者多个踪迹。为那些踪迹创建句柄并且执行对那些句柄的搜索以发现与my_h_t的匹配。匹配的句柄标识特定踪迹。参照图5更具体地描述这一点。

参照图5,假设在这一例子中已经一次或者多次重启仿真器。例如,启动仿真器,产生一个或者多个踪迹,然后检测到问题。随后重启仿真器。这可以出现一次或者多次,针对仿真器的每次运行来产生一个或者多个踪迹(例如T0、T1、T2)(步骤500)。对每个踪迹进行编码以针对每个踪迹产生一个句柄(步骤502)。例如,仿真器代码使用哈希函数H对每个踪迹进行编码,例如得到:

H(T0)=h_t0

H(T1)=h_t1

...

H(Tn)=h_tn。

在这一例子中,指示仿真器提供由my_h_t所标识的踪迹可观察的句柄。例如,认为由my_h_t标识的指令序列是造成问题的或者是感兴趣的。因此,将对该踪迹进行定位。由于该踪迹的存储器位置未知,所以执行对踪迹的搜索。为了执行搜索,使用踪迹的句柄而不是踪迹的指令。在一个例子中,在执行搜索时,在一次或者多次应用运行期间产生的句柄由JIT选择(步骤504),并且将该句柄与给定句柄(例如my_h_t)进行比较(步骤506)。如果句柄不相同(查询508),则确定是否存在将要进行比较的附加句柄(查询510)。如果存在,则处理继续到步骤504“选择产生的句柄”。然而,如果没有更多句柄将要进行比较,则处理结束(步骤512)。

返回到查询508,如果比较得出匹配,则标识感兴趣的特定踪迹(步骤514)。一旦找到序列,可以用希望的任何方式使用它。例如,可以禁用该踪迹的JIT化,可以对踪迹启用优化,等等。选项不受限制。

上文具体描述了一种用于定义和使用与存储器无关的踪迹句柄的能力。作为一个例子,哈希编码能力将称为踪迹的连续执行指令的序列变换成宽度为n位的句柄。由于编码没有考虑指令序列的存储器位置,所以它与存储器无关。这允许定义比初始指令序列更易于处理的句柄。具体而言,可以使用句柄而不是整个指令序列来重新捕获感兴趣的初始指令序列。

可以在例如具有计算机可用介质的制造产品(例如一个或者多个计算机程序产品)中包括本发明的一个或者多个方面。该介质中例如具有用以提供和有助于本发明能力的计算机可读程序代码装置或者逻辑(例如指令、代码、命令等)。可以将该制造产品包括作为计算机系统的一部分或者单独地销售该制造产品。

参照图6描述包含本发明一个或者多个方面的制造产品或者计算机程序产品的一个例子。计算机程序产品600例如包括一个或者多个计算机可用介质602,该介质用以在其上存储用以提供和有助于本发明一个或者多个方面的计算机可读程序代码装置或者逻辑604。该介质可以是电子、磁性、光学、电磁、红外线或者半导体系统(或者装置或者设备)或者传播介质。计算机可读介质的例子包括半导体或者固态存储器、磁带、可移除计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的例子包括光盘-只读存储器(CD-ROM)、光盘-读/写(CD-R/W)和DVD。

由一个或者多个计算机可读程序代码装置或者逻辑定义的程序指令序列或者一个或者多个相关模块的逻辑组件指导本发明一个或者多个方面的性能。

有利地,提供一种用于定义与存储器无关的踪迹句柄。这一能力使得能够不考虑踪迹驻留于存储器中的何处而产生唯一踪迹句柄。任意长度的指令序列由经由映射函数产生的固定长度表示来表示。例如,长度为1000个指令的序列由128位的二进制模式表示。因此,当重新运行应用并且将要观察该1000个指令时,128位的模式用来对序列而不是全部1000个指令进行定位。

有利地,这一能力可由动态编译器如JIT用来标记跨越应用边界的踪迹。句柄用来在应用的后续执行中对踪迹进行定位。

虽然上文描述了各种实施例,但是这些实施例仅为例子。例如,处理环境可以包括以与Power4、或者不同的架构为基础的处理单元。此外,与服务器不同的服务器可以包含和使用本发明的一个或者多个方面。另外,处理环境可以对不同于的环境进行仿真。此外,可以使用各种仿真器。仿真器在商业上可用并且由各种公司提供。另外,处理环境无需包括仿真器代码。许多其它类型的处理环境可以包含和/或使用本发明的一个或者多个方面。

另外,即使提供了编码函数的例子,但是可以使用包括哈希和非哈希函数的许多其它编码技术。MD5仅作为一个例子提供。

此外,仿真器仅是应用的一个例子。可以跟踪其它类型的应用,并且可以希望用于那些踪迹的踪迹句柄。另外,可以出于许多原因重启应用,或者可以出于许多原因观察踪迹。这里提供的例子仅为例子。

另外,在一个或者多个实施例中可使用适合于存储和/或执行程序代码的数据处理系统,该系统包括直接地或者通过系统总线间接地耦合到存储器单元的至少一个处理器。存储器单元例如包括在程序代码的实际执行期间采用的本地存储器、大容量储存器和如下高速缓存存储器,该高速缓存存储器提供对至少一些程序代码的临时存储,以便减少在执行期间必须从大容量储存器取回代码的次数。输入/输出或者I/O设备(包括但不限于键盘、显示器、指示设备、DASD、磁带、CD、DVD、拇指驱动器(Thumb Drive)和其它存储器介质等)可以直接地或者通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使数据处理系统能够变成通过中间专用网或者公共网耦合到其它数据处理系统或者远程打印机或者存储设备。调制解调器、线缆调制解调器和以太网卡仅是可用网络适配器类型中的若干类型。

如这里使用的那样,术语“获取”包括但不限于提取、接收、具有、提供、被提供、创建、开发等。

可以用软件、固件、硬件或者其某种组合来实施本发明一个或者多个方面的能力。可以提供可由机器读取的至少一个程序存储设备,该程序存储设备实施可由机器执行以实现本发明能力的至少一个指令程序。

这里描绘的流程图仅为例子。在不脱离本发明的精神的前提下,这里所述步骤(或者操作)或者这些图可以具有多种变化。例如,可以按不同顺序执行步骤,或者可以添加、删除或者修改步骤。所有这些变化视为要求保护的本发明的一部分。

尽管这里已经具体地描绘和描述实施例,但是本领域技术人员将清楚,在不脱离本发明的精神的前提下,可以进行各种修改、添加、替换等,因此认为这些修改、添加、替换在如所附权利要求书中限定的本发明范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号