当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置制造方法及图纸

技术编号:2822224 阅读:213 留言:0更新日期:2012-04-11 18:40
描述了一种用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置。在一个实施例中,所述方法包括检测具有全局范围的第一对象的指针更新。在一个实施例中,发出单个指令,以断言与指针更新的目标对象关联的范围属性标识全局范围。如果与第二对象关联的范围属性将第二对象的范围标识为局部,则所述单个指令返回失败。验证可以包括读取第二对象的对象描述符,以确定对象描述符的范围属性是否指示第二对象的范围为局部。在一个实施例中,一旦已经验证,就将第二对象和从第二对象可达的每个对象转换为全局对象。描述并要求保护了其它实施例。

【技术实现步骤摘要】
【国外来华专利技术】
一个或多个实施例一般涉及集成电路和计算机系统设计领域。更具体地, 一个或多个实施例涉及用于在可控运行时环境(managed run-time environment)中进行基于硬件的动态逸出(escape)检测的方法和装置。
技术介绍
可控运行时环境是用于运行基于新编程语言的应用程序的基础结构, 所述新编程语言例如Java和C-Sharp (C#)。在可控运行时环境的背景中, 执行从公共内存区域的对象分配,所述公共内存区域被称为"堆",其在该 环境中经常是共享资源。 一般地,在该环境中,作为自动内存管理的一部 分来对堆进行周期性地收集。这通常涉及动态扫描为不可达对象所分配的 内存,以及返回被该对象占用的内存。如本文所描述的,可以将所分配的 对象分类为具有局部范围或全局范围。如本文所描述的,被定义或分类为具有局部范围的对象是对单个线程 可见的对象。换句话说,局部对象仅被局部指针访问,或仅被同一线程的 其它局部对象链接。相反,被分类为具有全局范围的对象是指对一个以上 线程可见的对象。在多线程可控运行时环境(MRTE)中,当在已知对单个线程为局部的 对象上进行操作时,能够应用很多优化。可以避免局部对象的同步,并且 可以用启动局部收回的方式分配局部对象,从而使MRTE中全局垃圾收集 器的工作负担最小化。实际上大多数对象都是局部的,但是难以确定给定对象为局部还是全 局。传统地,存在两种方法来确定对象是否为局部。第一种方法能够执行 程序的编译器静态分析并确定对象从何时创建到何时消灭,对象无法变为 对另一线程是可达的。遗憾的是,静态分析仅能标识可被可证实地标识为局部的一小部分对象。第二种用于标识局部对象的方法为动态地保持跟踪哪些对象为局部 以及哪些对象为全局,并且通过检测出到对象的链接当前使得该对象变得 全局可达来检测对象何时变为全局。如本文所描述的,对象的范围或可达 性是指对象对任一单个线程的可见性,或称为"局部可达的",其中该对象 被视为具有局部范围。相反,将对一个以上线程可见的对象标识为具有全 局范围,或者可选地称为"全局可达的"。动态逸出检测提供了一种方法,其用于通过检测出到对象的链接当前 使得该对象变得全局可达来确定局部对象何时变为全局。传统的动态逸出 检测是通过检查对象的每次更新来实现的。基于所述更新,如果新链接将 目标对象从局部可达对象变为全局可达对象,则该目标对象当前包括已修 改的范围,从而局部对象当前为具有全局范围的或可选地标识为"全局可达的"全局对象。如本文所描述的,"写屏障(write barrier)"是指执行所 述检査,以基于指针更新来确定是否检测出局部对象的动态逸出检测。在大多数MRTE中,并未尝试标识局部对象,也未基于这种获知去优 化运行。原因在于静态分析仅标识很少的优化候选。此外,动态逸出检测 的开销减少了进行优化和利用局部对象获知的益处。附图说明在下面的附图中,通过实例而非限定的方式示出了本专利技术的多个实施 例,其中-图1是示出根据一个实施例的提供基于硬件的动态逸出检测的可控运 行时环境(MRTE)的方框图。图2是示出根据一个实施例的提供属性感知(aware)技术(AAT)的高速缓存的方框图。图3是示出根据一个实施例的AAT指令的方框图。图4是示出根据一个实施例的基本指针更新操作的方框图。 图5是示出根据一个实施例的用于如图1所示的MRTE的可选平台配 置的方框图。图6是示出根据一个实施例的计算机平台的方框图,在该计算机平台中,可以实现如图1所示的MRTE以提供基于硬件的动态逸出检测。图7是示出根据一个实施例的对称多处理器(SMP)计算机系统的方框图,在该对称多处理器计算机系统中可以实现如图1所示的MRTE。图8是示出根据一个实施例的用于提供基于硬件的动态逸出检测的方法的流程图。图9是示出根据一个实施例的用于进行初始化以启动基于硬件的动态 逸出检测的方法的流程图。图IO是示出根据一个实施例的用于发出AAT指令的方法的流程图。图11是示出根据一个实施例的用于调用处理程序例程以验证目标对象 的范围为局部的方法的流程图。图12是示出根据一个实施例的用于将局部对象转换为全局对象的方法 的流程图。图13是示出根据一个实施例的用于将局部对象转换为全局对象的方法 的流程图。图14是示出根据一个实施例的用于启动基于硬件的动态逸出检测的方 法的流程图。图15是示出根据一个实施例的用于初始化高速缓存以启动基于硬件的 动态逸出检测的方法的流程图。具体实施例方式描述了一种用于在可控运行时环境中进行基于硬件的动态逸出检测的 方法和装置。在一个实施例中,所述方法包括检测具有全局范围的第一对 象的指针更新。在一个实施例中,所述指针更新将所述第一对象的链接更 新为指向第二对象。在一个实施例中,发出单个指令,以断言(assert)与 第二对象关联的范围属性将第二对象的范围标识为全局。如果与第二对象 关联的范围属性将第二对象的范围标识为局部,则所述单个指令可以返回 失败。在一个实施例中,所述单个指令的失败可以引起该单个指令调用处 理程序例程,以验证(verify)所述第二对象的范围为局部。所述验证可以 包括读取第二对象的对象描述符,以确定对象描述符的范围属性是否指示 第二对象的范围为局部。如果已经验证,则将第二对象和从该第二对象可达的每个对象转换为全局对象。在下面的描述中,为了提供更全面的理解而给出大量具体细节,例如逻辑实^a、信号和总线的大小和名称、系统部件的类型和相互关系以及逻 辑划分/集成选择。然而,应该注意,在没有这些具体细节的情况下,本领 域技术人员也可以实施本专利技术。在其它实例中,没有具体示出控制结构和 门级电路,以避免使本专利技术不够明确。通过所包括的描述,本领域技术人 员不需进行过多实验就能够实现适当的逻辑电路。在下面的描述中,使用某些术语来描述特征。例如,术语"逻辑"代 表被配置用于实现一个或多个功能的硬件和/或软件。例如,"硬件"的实例 包括但不限制或约束于集成电路、有限状态机或者组合逻辑。集成电路可 'u采用处理器形式,所述处理器例如微处理器、专用集成电路、数字信号 处理器、微控制器等等。图1是示出根据一个实施例的可控运行时环境(MRTE) 100的方框图, 其包括写屏障逻辑100,用于执行基于硬件的动态逸出检测。典型地,MRTE 100包括内核虚拟机(CVM)102,其能够将字节码解释为能被主机平台140 理解的指令,其中MRTE IOO在所述主机平台140上运行。在一个实施例 中,CVM 102是Java虚拟机(JVM)。在可选实施例中,CVM 102是C-Sharp (C#)程序的通用语言基础结构(CLI)。如本领域技术人员所公知的,虚拟机(VM)在逻辑上划分物理机器, 使得机器的底层硬件表现为一个或多个独立运行的VM。尽管没有示出, CVM 102可以包括虚拟机监视器(VMM),其创建CVM 102并在平台硬件 140上运行,以协助其它软件提取一个或多个VM。因此,CVM102可以作 为自包含平台,运行其自己的操作系统(OS)和应用软件。如图1中所示, CVM 102提供对主机平台硬件140的抽象。在一个实施例中,主机平台140 可以包括多核处理器,以支持多个应用程序线程的运本文档来自技高网...

【技术保护点】
一种方法,包括:检测具有全局范围的第一对象的指针更新,所述指针更新用于将所述第一对象的链接更新为指向第二对象;发出单个指令,以断言与所述第二对象关联的范围属性将所述第二对象的范围标识为全局;以及 如果所述单个指令检测出与所述第二对象关联的 所述范围属性将所述第二对象的范围标识为局部,则调用处理程序例程,以验证所述第二对象的范围为局部。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:QA雅克布森S斯里尼瓦斯AC布雷西H王
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

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

1