CN102693188B - 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 - Google Patents
用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 Download PDFInfo
- Publication number
- CN102693188B CN102693188B CN201210033006.XA CN201210033006A CN102693188B CN 102693188 B CN102693188 B CN 102693188B CN 201210033006 A CN201210033006 A CN 201210033006A CN 102693188 B CN102693188 B CN 102693188B
- Authority
- CN
- China
- Prior art keywords
- destination object
- scope
- attribute
- module
- local
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
描述了一种用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置。在一个实施例中,所述方法包括检测具有全局范围的第一对象的指针更新。在一个实施例中,发出单个指令,以断言与指针更新的目标对象关联的范围属性标识全局范围。如果与第二对象关联的范围属性将第二对象的范围标识为局部,则所述单个指令返回失败。验证可以包括读取第二对象的对象描述符,以确定对象描述符的范围属性是否指示第二对象的范围为局部。在一个实施例中,一旦已经验证,就将第二对象和从第二对象可达的每个对象转换为全局对象。描述并要求保护了其它实施例。
Description
本申请是申请日为2006年12月18日、申请号为200680045018.7的同名专利申请的分案申请。
技术领域
一个或多个实施例一般涉及集成电路和计算机***设计领域。更具体地,一个或多个实施例涉及用于在可控运行时环境(managedrun-timeenvironment)中进行基于硬件的动态逸出(escape)检测的方法和装置。
背景技术
可控运行时环境是用于运行基于新编程语言的应用程序的基础结构,所述新编程语言例如Java和C-Sharp(C#)。在可控运行时环境的背景中,执行从公共内存区域的对象分配,所述公共内存区域被称为“堆”,其在该环境中经常是共享资源。一般地,在该环境中,作为自动内存管理的一部分来对堆进行周期性地收集。这通常涉及动态扫描为不可达对象所分配的内存,以及返回被该对象占用的内存。如本文所描述的,可以将所分配的对象分类为具有局部范围或全局范围。
如本文所描述的,被定义或分类为具有局部范围的对象是对单个线程可见的对象。换句话说,局部对象仅被局部指针访问,或仅被同一线程的其它局部对象链接。相反,被分类为具有全局范围的对象是指对一个以上线程可见的对象。
在多线程可控运行时环境(MRTE)中,当在已知对单个线程为局部的对象上进行操作时,能够应用很多优化。可以避免局部对象的同步,并且可以用启动局部收回的方式分配局部对象,从而使MRTE中全局垃圾收集器的工作负担最小化。
实际上大多数对象都是局部的,但是难以确定给定对象为局部还是全局。传统地,存在两种方法来确定对象是否为局部。第一种方法能够执行程序的编译器静态分析并确定对象从何时创建到何时消灭,对象无法变为对另一线程是可达的。遗憾的是,静态分析仅能标识可被可证实地标识为局部的一小部分对象。
第二种用于标识局部对象的方法为:动态地保持跟踪哪些对象为局部以及哪些对象为全局,并且通过检测出到对象的链接当前使得该对象变得全局可达来检测对象何时变为全局。如本文所描述的,对象的范围或可达性是指对象对任一单个线程的可见性,或称为“局部可达的”,其中该对象被视为具有局部范围。相反,将对一个以上线程可见的对象标识为具有全局范围,或者可选地称为“全局可达的”。
动态逸出检测提供了一种方法,其用于通过检测出到对象的链接当前使得该对象变得全局可达来确定局部对象何时变为全局。传统的动态逸出检测是通过检查对象的每次更新来实现的。基于所述更新,如果新链接将目标对象从局部可达对象变为全局可达对象,则该目标对象当前包括已修改的范围,从而局部对象当前为具有全局范围的或可选地标识为“全局可达的”全局对象。如本文所描述的,“写屏障(writebarrier)”是指执行所述检查,以基于指针更新来确定是否检测出局部对象的动态逸出检测。
在大多数MRTE中,并未尝试标识局部对象,也未基于这种获知去优化运行。原因在于静态分析仅标识很少的优化候选。此外,动态逸出检测的开销减少了进行优化和利用局部对象获知的益处。
附图说明
在下面的附图中,通过实例而非限定的方式示出了本发明的多个实施例,其中:
图1是示出根据一个实施例的提供基于硬件的动态逸出检测的可控运行时环境(MRTE)的方框图。
图2是示出根据一个实施例的提供属性感知(aware)技术(AAT)的高速缓存的方框图。
图3是示出根据一个实施例的AAT指令的方框图。
图4是示出根据一个实施例的基本指针更新操作的方框图。
图5是示出根据一个实施例的用于如图1所示的MRTE的可选平台配置的方框图。
图6是示出根据一个实施例的计算机平台的方框图,在该计算机平台中,可以实现如图1所示的MRTE以提供基于硬件的动态逸出检测。
图7是示出根据一个实施例的对称多处理器(SMP)计算机***的方框图,在该对称多处理器计算机***中可以实现如图1所示的MRTE。
图8是示出根据一个实施例的用于提供基于硬件的动态逸出检测的方法的流程图。
图9是示出根据一个实施例的用于进行初始化以启动基于硬件的动态逸出检测的方法的流程图。
图10是示出根据一个实施例的用于发出AAT指令的方法的流程图。
图11是示出根据一个实施例的用于调用处理程序例程以验证目标对象的范围为局部的方法的流程图。
图12是示出根据一个实施例的用于将局部对象转换为全局对象的方法的流程图。
图13是示出根据一个实施例的用于将局部对象转换为全局对象的方法的流程图。
图14是示出根据一个实施例的用于启动基于硬件的动态逸出检测的方法的流程图。
图15是示出根据一个实施例的用于初始化高速缓存以启动基于硬件的动态逸出检测的方法的流程图。
具体实施方式
描述了一种用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置。在一个实施例中,所述方法包括检测具有全局范围的第一对象的指针更新。在一个实施例中,所述指针更新将所述第一对象的链接更新为指向第二对象。在一个实施例中,发出单个指令,以断言(assert)与第二对象关联的范围属性将第二对象的范围标识为全局。如果与第二对象关联的范围属性将第二对象的范围标识为局部,则所述单个指令可以返回失败。在一个实施例中,所述单个指令的失败可以引起该单个指令调用处理程序例程,以验证(verify)所述第二对象的范围为局部。所述验证可以包括读取第二对象的对象描述符,以确定对象描述符的范围属性是否指示第二对象的范围为局部。如果已经验证,则将第二对象和从该第二对象可达的每个对象转换为全局对象。
在下面的描述中,为了提供更全面的理解而给出大量具体细节,例如逻辑实现、信号和总线的大小和名称、***部件的类型和相互关系以及逻辑划分/集成选择。然而,应该注意,在没有这些具体细节的情况下,本领域技术人员也可以实施本发明。在其它实例中,没有具体示出控制结构和门级电路,以避免使本发明不够明确。通过所包括的描述,本领域技术人员不需进行过多实验就能够实现适当的逻辑电路。
在下面的描述中,使用某些术语来描述特征。例如,术语“逻辑”代表被配置用于实现一个或多个功能的硬件和/或软件。例如,“硬件”的实例包括但不限制或约束于集成电路、有限状态机或者组合逻辑。集成电路可以采用处理器形式,所述处理器例如微处理器、专用集成电路、数字信号处理器、微控制器等等。
图1是示出根据一个实施例的可控运行时环境(MRTE)100的方框图,其包括写屏障逻辑100,用于执行基于硬件的动态逸出检测。典型地,MRTE100包括内核虚拟机(CVM)102,其能够将字节码解释为能被主机平台140理解的指令,其中MRTE100在所述主机平台140上运行。在一个实施例中,CVM102是Java虚拟机(JVM)。在可选实施例中,CVM102是C-Sharp(C#)程序的通用语言基础结构(CLI)。
如本领域技术人员所公知的,虚拟机(VM)在逻辑上划分物理机器,使得机器的底层硬件表现为一个或多个独立运行的VM。尽管没有示出,CVM102可以包括虚拟机监视器(VMM),其创建CVM102并在平台硬件140上运行,以协助其它软件提取一个或多个VM。因此,CVM102可以作为自包含平台,运行其自己的操作***(OS)和应用软件。如图1中所示,CVM102提供对主机平台硬件140的抽象。在一个实施例中,主机平台140可以包括多核处理器,以支持多个应用程序线程的运行。
在一个实施例中,MRTE100提供自动内存管理、类型管理、线程和同步以及动态加载功能。典型地,由MRTE提供的自动内存管理包括对堆106的管理。如本文所描述的,堆是为应用程序的动态内存分配需要而保留的一个内存区域。因此,通常,由于不能在编译时确定将被分配的对象的大小、数量和延迟时间,所以将堆保留用于在运行时创建的数据。对于具有较小内存占用面积的设备,例如包括蜂窝电话和个人数字助理的移动设备,对该相对有限的内存进行管理以使可用存储容量最大化的处理将成为极大的限制。
再次参照图1,CVM102可以包括执行引擎112。在一个实施例中,执行引擎112可以将字节码直接解释为主机平台140的处理器能够理解的指令。典型地,用例如Jave和C#等高级编程语言编写的程序首先被编译成采用中间平台发布格式的代码,本文称为“字节码”。典型地,所编译的字节码不在平台上直接运行。
因此,尽管MRTE可以直接解释字节码,但是通常不这样做,除非内存极为有限。如图1中所示,在一个实施例中,MRTE100包括即时(JIT)编译器108。从而,MRTE100可以执行由JIT编译器108生成的原生码,取代使用由执行引擎104提供的相对较慢的字节码解释。
如图1进一步所示,根据一个实施例,MRTE100可以包括运行时存储管理器(RSM)112和垃圾收集器(GC)114。在一个实施例中,GC114联合RSM112一起执行对堆106的管理以及垃圾收集,以收回未使用的内存。在一个实施例中,GC114可以为对象管理分配空间,以及为垃圾收集(GC)分配堆。典型地,当堆用尽时,GC114在安全GC114点处停止所有可控线程,以从未使用的对象中收回内存。因此,在一个实施例中,GC114联合RSM112一起周期性地扫描为不可达对象动态分配的内存,并返回被这些对象占用的内存。在一个实施例中,RSM功能可被并入到GC114中。
如本文所描述的,所分配的对象可以被分类为:(1)局部,即,这些对象对单个线程是可见的;或者(2)全局,即,该对象对一个以上线程是可见的。例如,如图1所示,在多线程MRTE环境中,当在已知对单个线程为局部的对象上进行操作时,能够应用很多优化。由于局部对象仅对单个线程是可达的,所以局部对象仅被局部指针访问,或者被同一线程的其它局部对象链接。因此,能够避免很多同步操作,并且能够分配局部对象以启动局部收回,从而使全局GC114的工作负担最小化。
实际上大部分对象是局部的,但是难以确定给定对象是否为局部。用于确定对象是否为局部的第一种方法被提供为:执行程序的编译器静态分析以确定对象从何时创建到何时消灭,对象无法变为对另一线程是可达的。遗憾的是,静态分析仅标识出可被证实为局部的一小部分对象。
第二种所用的方法为:动态地保持跟踪哪些对象为局部或全局,并且通过检测出到对象的链接当前使得该对象变得全局可达来检测对象何时变为全局。该方法在学术出版物中被称为“动态逸出检测”。一种动态逸出检测的方法为:每当任意指针被更新时,检查新的链接是否将目标对象从局部可达变为全局可达。因此,如果指针更新将对象从局部可达变为全局可达,则检测出“动态逸出”。如本文所描述的,在本文中将为检测动态逸出而对所有指针更新进行的检查称为“写屏障”。
再次参照图1,在一个实施例中,CVM102可以为在MRTE100内执行的每个线程提供局部高速缓存200(200-1,...,200-N),如图2中进一步所示。在一个实施例中,如图2所示,高速缓存200启动元数据到由线程实例化的不同对象的关联或映射。如本文所描述的,属性感知技术(AAT)将属性位与内存块进行关联。
因此,在图2示出的实施例中,AAT提供对软件可见的实际高速缓存层级的简化抽象。在一个实施例中,每个线程具有专用高速缓存(例如,高速缓存200),所述高速缓存具有已知的行大小及未知的容量和关联性。此外,每个行处于三种状态之一:修改(该高速缓存具有对该行的独占备份,其中局部线程能够对该行进行更新)、共享(该高速缓存具有对该行的非独占、只读备份)和无效(该高速缓存不具有对该行的备份)。在一个实施例中,每个高速缓存行201具有若干属性位231,其可被应用程序设置和检查。
如图2中所示,高速缓存200可被修改为包括一个或多个属性位234(234-1、234-2、234-3、234-4),其是基于高速缓存行块(201)定义的,并且对特定线程是局部的。在一个实施例中,程序装置(sequencer)按照一个或多个AAT指令的指示来执行数据加载并设置属性234。在一个实施例中,AAT启动线程以设置内存块的属性。此外,线程可以请求被通知具有特定属性位的高速缓存行何时被无效或从其局部高速缓存被逐出(evict)。线程还能够执行内存加载,即断言特定属性位被设置,以及如果期望的属性位没有被设置,则取代所述加载而运行用户层处理程序。
因此,如本文所描述的,AAT引入了用户控制属性位234,其与高速缓存行201关联。根据所期望的实现方式,尽管参照与高速缓存行的相关性进行了示例,但是元数据或属性位与内存块的相关性不局限于属性位与高速缓存行的相关性,而是可以包括将***内存内的、甚至是内存页面内的属性位加入到盘片中。
图3是示出在一个实施例中的加载设置(LOAD_AND_SET)指令216和加载检查(LOAD_AND_CHECK)指令218的方框图,所述指令在本文可被称为“AAT指令”。在一个实施例中,LOAD_AND_SET指令216执行常规内存LOAD_AND_SET,将参考行201的特定属性位234设置为特定值(例如,将第二属性位设置为值1)。一旦线程在其局部高速缓存200中设置了属性位,则线程就能请求被异步地通知关联行201是否从其局部高速缓存200中被无效。LOAD_AND_CHECK指令218执行常规内存加载,同时断言参考行的特定属性位当前被设置为特定值(例如,该行的第一属性位当前被设置为零?)。如果行的属性不具有期望值,则LOAD_AND_CHECK指令218就被特定处理程序取代。清除属性位(CLEAR_ATTRIBUTE_BITS)指令(未示出)将特定位置的属性位清除为值0(例如,清除高速缓存中每行的第三个属性位)。
可以通过加载用户专用处理程序来提供与所监视到的行无效相关联的异步通知以及对失败位断言的同步处理。在一个被称为“内存行无效”(MLI)方案的实施例中,适当的处理程序将需要适当的由用户选择的处理程序例程,其中,当具有特定属性位设置的行在线程的高速缓存中被无效时(因为其被另一线程明确地无效,或者因为这些行被简单地从高速缓存中逐出),需要调用所述适当的处理程序。第二种方案被称为“非预期内存状态(UMS)方案”。UMS方案标识适当的处理程序,其中,当LOAD_AND_CHECK指令218发现一个属性不符合该指令所期望的值时,需要调用所述适当的处理程序。
在一个实施例中,AAT能够进一步扩展为提供AAT区域描述符之一的集合。这些用户可编程区域描述符定义了由基址和边界或等效方法所定义的虚拟内存空间的区域,其中,行的实际属性由于LOAD_AND_CHECK指令218而重写。因此,在一个实施例中,当LOAD_AND_CHECK指令218的目标地址落入预定的AAT区域内时,将所期望的属性值与提供给该区域的基本属性进行比较,而不是将所期望的属性值与参考行的实际AAT属性进行比较。在一个实施例中,AAT区域描述符对于被无效或逐出的检测行和报告行没有任何作用。
图4是示出基本指针更新操作250的方框图。典型地,将第一对象252的指针253更新为指向第二对象254。在一个实施例中,将写屏障逻辑(图1)描述为分析指针更新,以确定指针更新的目标对象254是否已引起目标对象的动态逸出,从而目标对象的范围已从局部变为全局。在表格1中示出了基本指针更新操作。
表格1
基本操作 |
first_object->ptr=second_object |
在一个实施例中,只要全局对象(第一对象)252的指针253中的一个进行更新,则写屏障逻辑110(图1)就检查该全局对象将要指向的对象254(第二(目标)对象)当前是否为局部对象。当第二对象254被标识为局部对象时,在可执行指针更新操作之前,需要将第二对象254从局部对象转换为全局对象。此外,将从第二对象可达的每个对象256转换为全局对象。表格2示出用于实现这些操作的伪代码。
表格2
遗憾的是,由于写屏障功能的增加引起了重要的性能影响,该性能影响为利用写屏障功能(见表格2)替代每个指针更新(见表格1中所示的基本操作)的性能影响。在一个实施例中,可以避免在表格2的伪代码中指示的第一次检查,从而,能够基于基本更新操作的背景来确定第一对象是否为全局。因此,可以去除这部分写屏障功能。然而,即使去除该功能,将写屏障功能包括到每个基本指针更新操作的开销也是很大的。
如表格2的伪代码所示,第二次检查用于确定第二对象是否为全局可达。在一个实施例中,该检查涉及读取对象描述符,以确定该对象描述符的范围属性是否将该第二对象标识为全局。在一个实施例中,能够使用机器代码实现该功能,所述机器代码包括读取指令、接着是比较指令、再接着是条件分支指令。尽管这种机器代码看起来相当简单,但是指针可被非常频繁地更新,从而即使稍微增加每个基本指针更新操作所执行的操作,都将会带来使得应用程序的执行显著减慢的净效应。
因此,在一个实施例中,如图2和图3中所示,属性234与每个内存对象相关联,以将该对象的可达性标识为局部或全局。因此,在一个实施例中,执行从对象到内存块(高速缓存行)的映射,其中对于该内存块保持了AAT属性。在一个实施例中,可以将对象与该对象开始的高速缓存行相关联。在一个实施例中,如果对象比高速缓存行更长,则将该对象开始的第一高速缓存行的属性认为是该对象的属性。
在一个实施例中,通过使得所有对象至少具有单个高速缓存行的高速缓存行大小(约64字节),可以强制对象依赖于单个高速缓存行。可选地,在一个实施例中,多个小对象可以在同一高速缓存行处起始。在一个实施例中,提供了允许多个小对象在单个高速缓存行处起始的能力。在一个实施例中,如果在高速缓存行上起始的任意对象是局部的,则将相应高速缓存行201的可达性属性234标记为局部。
在一个实施例中,可以假设对于每个局部对象,该对象开始的高速缓存行将可达性属性234设置为指示局部范围。此外,还假设基于发生指针更新的背景,能够确定被更新的对象(第一对象)为局部或全局。基于这种假设,只有第一对象为全局时,才执行表格2中所示的伪代码中的写屏障功能。
在一个实施例中,在表格2中所示的伪代码被LOAD_AND_CHECK指令218所取代,以断言第二对象或目标对象不是局部对象。在一个实施例中,响应于该断言,如果LOAD_AND_CHECK指令失败,则可以调用由用户选择的处理程序来对第二对象执行全面检查,以确定第二对象是否真的是局部对象;如果第二对象是局部对象,则对该局部对象和从第二对象可达的所有对象执行转换,以将这些对象的范围设置为局部。因此,在一个实施例中,AAT指令(216和218)可被用来实现单个加载指令,以提供用于去除额外检查的过滤器,所述额外检查是用于动态逸出检测的写屏障语义所必须的。
在对于其各自的线程,可达属性与局部高速缓存的多个高速缓存行相关联的实施例中,按如下方式执行对包含局部对象的高速缓存行的逐出。在一个实施例中,如果所有局部对象均在特定地址区域内创建,则可以为AAT区域特征提供用于该区域的基本属性位设置。根据该实施例,对包含局部对象的高速缓存行的逐出不存在问题。在可选实施例中,可以提供MLI方案以检测局部对象起始的行何时被逐出。
在一个实施例中,假设将值1用作表示局部范围的适当的属性状态。为实现该实施例,维护一个包含所有局部对象的列表。根据该实施例,当一个局部对象逸出高速缓存时,能够将所有局部对象拉回到高速缓存。在一个实施例中,可以将一个或多个局部对象升级为全局对象,以减少被监视的行数。
在可选实施例中,将值0用作表示局部的适当的属性状态。在这种情况下,默认将进入高速缓存的所有对象标记为局部。因此,在一个实施例中,如果LOAD_AND_CHECK指令失败,从而导致对对象描述符的全面检查,则可将行属性更新为指示该对象的范围实际上为全局。因此,对该目标全局对象的后续访问将会被AAT属性位成功过滤。所述多个实施例的实现可以根据性能折衷来执行并且略去实现细节。
图5是示出用于图1所示的MRTE主机平台硬件300/400/500的不同配置的方框图。如图1所示,根据独立虚拟机(VM)模型,将MRTE示为包括写屏障逻辑(WBL)310,以提供基于硬件的动态逸出检测。在独立VM模型中,VM监视器(VMM)或管理程序(hypervisor)VMM直接运行在硬件资源之上,例如硬件资源340/440/540。在一个实施例中,VMM320加载运行时存储管理器(RSM)312和全局垃圾收集器(GC)314。然而,MRTE300/400/500的不同配置并不局限于图1中所示的独立VM模型。在一个实施例中,MRTE可以根据主机VM配置400来进行配置,如图5中所示。
典型地,主机VM模型400包括运行在主机操作***(OS)442之上的VMM420以及用于提供基于硬件的动态逸出检测的WBL410。在一个实施例中,VMM420加载RSM412和GC414。在进一步的实施例中,根据如图5中所示的混合VM模型500,可以将图1中所示的MRTE100配置为包括用于提供基于硬件的动态逸出检测的WBL510。
典型地,混合VM模型500包括服务OS542和微管理程序(基本VMM)520,所述微管理程序520包括优化的API524。根据混合VM模型500,微管理程序520可以负责CPU/内存资源虚拟化和域调度。在一个实施例中,VMM520加载RSM512和GC514。服务OS542可以负责VM管理和设备虚拟化/模拟。根据图5中示出的实施例,可以根据图5中所示的任意MRTE配置300/400/500或其它相似配置来执行基于硬件的动态逸出检测。
图6是示出根据一个实施例的计算机***600的方框图,其可并入如图1所示的MRTE100,以提供动态的基于硬件的逸出检测。初始地,一个VM602、写屏障逻辑610、运行时存储管理器612和垃圾收集器614以及例如主机固件(692、694、696)的其它相似部件被存储在硬盘或盘片存储器681内,如图6的计算机***600中所示。如图6中所示,可扩展固件接口(EFI)692支持客户VM602访问固件部件。典型地,固件部件包括***抽象层(SAL)696和处理器抽象层(PAL)694。如本文所描述的,EFI692、SAL696和PAL694在本文一起被称为“主机固件”。在一个实施例中,VM610经由EFI接口692与主机固件、具体为PAL694和SAL696进行交互,以提供可由CPU执行应用程序的环境。
典型地,计算机***600可以是例如个人计算机***。计算机***600可以包括多核处理器(例如,处理器660)、内存控制器664、输入/输出(I/O)控制器670以及一个或多个BIOS(基本输入/输出***)内存(例如,BIOS内存670)。在一个实施例中,处理器660、内存控制器664、I/O控制器680和BIOS内存690可以驻留在芯片组661上。如本文所描述的,以本领域技术人员公知的方式将术语“芯片组”用于整体描述耦合到处理器660的用于执行所需***功能的多个设备。在可选实施例中,处理器660、内存控制器664、I/O控制器680和BIOS内存690可以驻留在其它类型的部件板上,例如,子板。
内存控制器664控制处理器660与内存设备670之间的操作,所述内存设备670包括例如多个存储器模块,所述存储器模块包括随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM(DDR-SDRAM)、RambusDRAM(RDRAM)或能够支持数据高速存储的任意设备。I/O控制器680可以控制处理器660与一个或多个输入/输出(I/O)设备685之间的操作,所述I/O设备685例如通过低引脚数(LPC)总线连接的键盘和鼠标。I/O控制器680也可以控制处理器660与***设备之间的操作,所述***设备例如经由集成驱动电路(IDE)接口687耦合到I/O控制器680的驱动器686。还可以将附加的总线耦合到I/O控制器680,用于控制其它设备,例如***组件接口(PCI)链路682、或后续的点到点链路(例如,PCIx、PCIExpress)、或通用串行总线(USB)688。在一个实施例中,内存控制器664可被集成到处理器660中,或者与I/O控制器680集成到单个部件中。
在所示实施例中,驱动器控制器683可以耦合到PCI链路682,并且可以控制硬盘驱动器681的操作。在一个实施例中,VM602、写屏障逻辑610、运行时存储管理器(RSM)612和垃圾收集器(GC)614可被存储在硬盘驱动器681上。通过这种方式,硬盘驱动器681可以作为引导设备,包括例如加载不同主机部件的加载程序和加载MRTE部件的VM602。
BIOS内存690可以经由总线684耦合到I/O控制器680。BIOS内存690是非易失性可编程存储器,例如即使在不再被供电之后也可保持其内所存储的数据内容的闪存。可选地,BIOS内存690可以是其它类型的可编程存储器设备,例如可编程只读存储器(PROM)和可擦除可编程只读存储器(EPROM)。计算机***600除BIOS内存690外,还可以包括其它BIOS内存。
因此,如图6中所示,BIOS内存690可以包括主机平台固件,用于在***复位之后对计算机***进行初始化。如本文所描述的,主机固件包括EFI692、SAL696和PAL694。因此,如本文所描述的,主机固件是在计算机***600启动期间加载的,以提供主机平台。启动之后,主机平台将加载VM602,其负责加载内核VM602、写屏障逻辑610、运行时存储管理器612、垃圾收集器614、服务OS642以及来自硬盘681的其它相似部件。
图7是示出根据一个实施例的对称多处理(SMP)***700的方框图,其可以运行为MRTE100(图1)的主机平台,以提供基于硬件的逸出检测。典型地,SMP700可以包含单芯片多处理器(CMP),其包括在同一管芯上制成的多个处理器内核760(760-1,...,760-N)。如图所示,处理器内核(CPU)710耦合到互连网络780以访问共享内存770,以及耦合到写屏障逻辑(WBL)710以提供基于硬件的动态逸出检测。在一个实施例中,每个CPU710包括专用内核高速缓存层级(未示出),以支持如图3中所示的AAT指令。
典型地,CPU760经由互连网络780访问共享内存770。在一个实施例中,共享内存770可以包括但不局限于双侧存储器封装,其包括多个存储器模块,所述存储器模块包括随机访问存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)、双倍数据速率(DDR)SDRAM(DDR-SDRAM)、RambusDRAM(RDRAM)或能够支持数据高速存储的任意设备。
因此,在所描述的实施例中,例如,如图1所示的MRTE内部的基于硬件的逸出检测可以包括主机平台硬件,例如计算机***600(图6)、SMP700(图7)或其它相似计算机体系结构。现在给出用于实现一个或多个上述实施例的处理方法。
现在转到图8,通过参照流程图,针对计算机软件和硬件描述与不同实施例关联的特定方法。由计算设备(例如,MRTE)执行的方法可以包括状态机或由计算机可执行指令组成的计算机程序。可以用计算机程序和编程语言将计算机可执行指令编写到或包含在固件逻辑中。如果用符合公认标准的编程语言编写,则这些指令能够在不同硬件平台上执行,并用于与多种操作***接口。
此外,并未参照任何特定编程语言描述实施例。应该注意到,可以将多种编程语言用于实现本文所描述的实施例。此外,在本领域中,当采取操作或导致结果时,通常以一种形式或其它形式(例如,程序、过程、处理、应用等)来表述软件。这些表达方式仅仅是对由于计算设备执行软件而引起该设备执行操作或产生结果的简化表达方式。
图8是示出根据一个实施例的用于提供基于硬件的动态逸出检测的方法800的流程图。在所描述的实施例中,通过参照图1-7来提供所描述实施例的实例。然而,所描述的实施例不应被局限于所提供的实例,从而限制由所附权利要求书提出的范围。
再次参照图8,在处理方框820处,确定是否检测到具有全局范围的第一对象的指针更新。在一个实施例中,例如,如图4中所示,指针更新250将具有全局范围的第一对象252的链接253更新为指向第二对象254。如参照图4所描述的,使具有全局范围的第一对象252指向第二对象254的指针更新250需要确定第二对象254是否具有局部范围。当情况如此时,发现第二对象已经执行了从局部对象到全局对象的动态逸出。
遗憾的是,确定第二对象或目标对象是否具有局部范围将会是一个非常耗时的处理,这需要查询第二对象254的对象描述符,以确定该对象描述符的可达性属性或范围属性是否指示第二对象具有局部范围。因此,在一个实施例中,例如,提供单个指令,如图3中所示的AAT指令(216和218)。
再次参照图8,在处理方框830处,发出单个指令,以断言与第二对象关联的范围属性将第二对象的范围标识为全局。如图3中所示,LODA_AND_CHECK指令将断言与第二对象的起始高速缓存行关联的可达性或范围、属性为全局。例如,在一个实施例中,假设将高速缓存行的范围属性位设置为值一(“1”)的这种设置指示局部范围,如果在高速缓存行的范围属性内包含的值与期望值(例如值1)不匹配,则LOAD_AND_CHECK指令将会返回失败。然而,在本文所描述的实施例中,与高速缓存行关联的可达性或范围、属性值可以是值零(“0”)或值一(“1”)或其它相似值,这取决于特定的实现方式。
再次参照图8,在处理方框840处,确定所述单个指令是否检测出与第二对象关联的范围属性将第二对象的范围标识为局部。如上文所指出的,例如,这种确定会引起如图3中所示的LOAD_AND_CHECK指令218失败,并用处理程序例程的发起来取代所述加载。
因此,在处理方框850处,所述单个指令调用处理程序例程,以验证第二对象的范围为局部。通过参照图10-12来进一步描述该处理程序例程所执行的操作。最后,在处理方框876处,当执行该处理程序例程时,执行第二对象的转换,以将第二对象变为全局可达对象或具有全局范围,以及执行指针更新操作,从而使得第一对象的指针指向第二对象。
图9是示出根据一个实施例的用于进行初始化以启动基于硬件的动态逸出检测的方法802的流程图。在处理方框804处,对由应用程序创建的每个对象的对象描述符进行编码,以将每个对象各自的范围标识为局部或全局。在处理方框806处,将范围属性位234与高速缓存200的每个高速缓存行201相关联,例如如图2和图3中所示。
再次参照图9,在处理方框808处,将应用程序创建的每个对象映射到内存块。在处理方框810处,当每个对象各自被加载到高速缓存时,将范围属性位设置为局部或全局值。尽管参照高速缓存进行描述,但是取决于根据上述实施例的基于硬件的逸出检测的所需实现方式,可以在***内存内部、甚至是虚拟内存提供的页面***内部,提供属性位或元数据与由应用程序创建的不同对象的不同映射。
图10是示出根据一个实施例的用于图8的处理方框830中发出单个指令的方法832的流程图。在处理方框834处,发出LOAD_AND_CHECK指令218,以验证第二对象254的起始高速缓存行201的范围属性位234将第二对象254的范围标识为局部,例如图3和图4所示。在处理方框836处,确定第二对象254的起始高速缓存行201的范围属性位234是否指示第二对象的范围为局部。当情况如此时,LOAD_AND_CHECK指令218失败。在一个实施例中,LOAD_AND_CHECK指令218的失败引起LOAD_AND_CHECK指令218调用处理程序例程。在一个实施例中,该处理程序例程执行附加检查,以验证第二对象具有局部范围。
图11是示出根据一个实施例的用于调用处理程序例程以验证第二对象的范围为局部的方法852的流程图。在处理方框854处,读取第二对象的对象描述符。一旦读出,就在处理方框856处分析局部对象描述符的范围属性,以确定局部对象描述符的范围属性是否指示第二对象的范围为局部。在处理方框858处,确定局部对象描述符的范围属性是否指示第二对象的范围为局部。
在一个实施例中,当局部对象描述符将第二对象标识为具有局部范围时,检测出第二对象的动态逸出检测。因此,在处理方框860处,将第二对象从局部对象转换为全局对象。参照图12和图13对第二对象从局部对象到全局对象的转换进行描述。
图12是示出根据一个实施例的用于将局部对象转换为全局对象的方法862的流程图。在处理方框864处,标识从第二对象可达的每个对象。一旦已经标识,就在处理方框866处将从第二对象可达的每个对象转换为全局对象。例如图4中所示,根据第二对象254的一个或多个指针255,将第二对象254的每个可达对象256从局部对象转换为全局对象。
图13是示出根据一个实施例的用于将局部对象转换为全局对象的方法870的流程图。在处理方框872处,将从第二对象可达的每个对象的对象描述符进行编码,以将每个对象各自的范围标识为全局。此外,在处理方框874处,将从第二对象可达的每个对象的范围属性位设置为全局值。
图14是示出根据一个实施例的用于启动基于硬件的动态逸出检测的方法880的流程图。在处理方框882处,维护应用程序所生成的包含所有对象的对象列表。在处理方框884处,确定高速缓存行是否从内存中被逐出。一旦检测出上述情况,就在处理方框886处查询所述对象列表,以确定被逐出的高速缓存行是否是至少一个被逐出的局部对象的起始高速缓存行。在处理方框887处,确定被逐出的高速缓存行是否是至少一个被逐出的局部对象的起始高速缓存行。当情况如此时,在处理方框888处,在高速缓存内部重新加载所述高速缓存行。
因此,在参照图14示出的实施例中,与程序对象关联的属性位不是固定不变的,而是只要局部对象的所述起始高速缓存行位于各自线程的局部高速缓存内部就是可用的。在一个实施例中,为了维护局部对象的起始高速缓存行,利用指示出高速缓存行将程序对象标识为具有局部范围的属性,通知处理程序例程高速缓存行何时被逐出。
图15是示出根据一个实施例的用于初始化高速缓存以启动基于硬件的动态逸出检测的方法890的流程图。在处理方框891处,对初始加载到高速缓存中的所有对象进行标识,以将每个所标识对象各自的属性位设置为默认的局部范围值。在处理方框892处,单个指令将目标地址与至少一个预定地址区域进行比较。在处理方框893处,确定目标地址是否位于预定地址区域内。当检测出上述情况时,在处理方框894处,确定预定地址区域的属性位。一旦已经确定,就在处理方框895处将该范围属性位与预定的局部范围值进行比较。在处理方框896处,处理程序例程可以检测范围属性与预定的局部范围值相匹配。当情况如此时,在处理方框898处,更新目标对象的范围属性值,以将该目标对象标识为具有全局范围。
因此,相比于传统运行时环境,如图1所示的和参照图2-15所进一步描述的MRTE100实现内存感知技术或AAT,以实现用于执行动态逸出检测的写屏障逻辑100。以降低的成本提供了将单个AAT指令(例如,图3的LOAD_AND_CHECK指令218)用于基于指针更新执行初始检测的方案。因此,例如图3所示,AAT指令降低了实现动态逸出检测的成本,以提供一种用于区分局部和全局可达对象的实用方法。因此,在一个实施例中,如图1中所示,垃圾收集器116可被优化,以便避免同步开销,以及通过利用对哪些对象为局部可达的获知来使垃圾检测的对象污染最小化。
应该注意到,对于其它实施例,可以使用不同的***配置。例如,尽管MRTE600(图6)包括多核CPU660以及MRTE700(图7)包括CMP650,但是对于其它实施例,多处理器***(其中一个或多个处理器可以在配置和操作方面与上述CPU660/CMP650相似)可以受益于不同实施例的基于硬件的动态逸出检测。可将其它不同类型的***或不同类型的计算机***,例如服务器、工作站、台式计算机***、游戏***、嵌入式计算机***、刀片服务器等,用于其它实施例。
还可以将实施例的元件提供作为制造产品,其包括用于存储机器可执行指令的机器可读介质。该机器可读介质可以包括但不局限于闪存、光盘、压缩盘只读存储器(CD-ROM)、数字多媒体/视频盘片(DVD)ROM、随机存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、电可擦写可编程只读存储器(EEPROM)、磁或光卡、传播介质或适于存储电子指令的其它类型的机器可读介质。例如,可以作为计算机程序来下载所描述的实施例,所述计算机程序可以经由通信链路(例如,调制解调器或网络连接),以包含在载波或其它传播介质中的数据信号的方式,从远程计算机(例如,服务器)传送到请求计算机(例如,客户端)。
应该注意到,本说明书中提及的“一个实施例”或“实施例”表示结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,应该强调并注意到,在本说明书的不同部分中,两次或更多次提及的“实施例”或“一个实施例”或“可选实施例”不需要都指同一实施例。此外,所述特定特征、结构或特性可以适当地组合到一个或多个实施例中。
在对不同实施例的以上详细描述中,对形成说明书一部分的附图进行了参照,在所述附图中以示例而非限定的方式示出了可以实施本发明的特定实施例。在附图中,相同的标号描述了在若干视图中基本相同的部件。对所示实施例的进行了足够详细的描述,以使本领域技术人员能够实施本文所公开的内容。可以利用其它实施例或导出其它实施例,例如在不脱离本公开文件范围的情况下,可以实现结构或逻辑替代或改变。因此,详细描述并不具有限定意义,不同实施例的范围仅由所附权利要求书和权利要求书所享有的等效方案的全部范围来限定。
已经公开了多个实施例和最佳方式,在仍属于由所附权利要求书限定的实施例范围内的情况下,可以针对所公开的实施例实现修改和变化。
Claims (15)
1.一种用于提供基于硬件的逸出检测的装置,所述装置包括:
用于发出单个指令,以断言与来自全局对象的所标识指针更新的目标对象相关联的范围属性将所述目标对象的范围标识为全局的模块;
用于如果所述单个指令检测出与所述目标对象相关联的范围属性将所述目标对象的范围标识为局部,则通过所述单个指令来调用用户选择的处理程序例程,以验证所述目标对象的范围为局部的模块;以及
用于如果所述目标对象的范围被验证为局部,则对所述目标对象的对象描述符进行编码,以将所述目标对象的范围标识为全局的模块;
其中,如果与所述目标对象相关联的范围属性将所述目标对象的范围标识为全局,则用于动态逸出检测的写屏障被减小为所述单个指令。
2.如权利要求1所述的装置,进一步包括:
用于维护由应用程序生成的包含所有局部对象的对象列表的模块。
3.如权利要求1所述的装置,进一步包括:
用于检测从高速缓存中对高速缓存行的逐出的模块;
用于查询所述对象列表,以确定所逐出的高速缓存行是否是至少一个所逐出局部对象的起始高速缓存行的模块;以及
用于如果所逐出的高速缓存行是所逐出局部对象的起始高速缓存行,则在高速缓存内重新加载所述高速缓存行的模块。
4.如权利要求3所述的装置,进一步包括:
用于标识被初始加载到高速缓存中的所有对象,以将每个所标识对象各自的属性位设置为默认的局部范围的模块。
5.如权利要求4所述的装置,进一步包括:
用于如果所述处理程序例程检测出目标对象的对象描述符将所述目标对象标识为具有局部范围,则更新所述目标对象的范围属性值的模块。
6.如权利要求1所述的装置,进一步包括:
用于利用所述单个指令,将所述单个指令的目标地址与至少一个预定地址区域进行比较的模块;以及
用于如果所述目标地址位于所述预定地址区域内,则确定所述预定地址区域的属性位值的模块。
7.如权利要求6所述的装置,进一步包括:
用于将所述预定地址区域的范围属性与预定局部范围值进行比较的模块。
8.如权利要求1所述的装置,进一步包括:
用于将所有局部对象限制为在预定地址区域内创建的模块。
9.如权利要求8所述的装置,进一步包括:
用于提供用于所述预定地址区域的基本属性位设置的模块。
10.如权利要求1所述的装置,进一步包括:
用于如果所述处理程序例程检测出所述目标对象的对象描述符将所述目标对象标识为具有局部范围,则更新所述目标对象的范围属性值的模块。
11.如权利要求10所述的装置,进一步包括:
用于将所述全局对象的指针更新为指向所述目标对象的模块。
12.一种用于提供基于硬件的逸出检测的***,所述***包括:
主机平台,其包括高速缓存,所述高速缓存具有对应于所述高速缓存内每个高速缓存行的至少一个范围属性位;以及
写屏障逻辑单元,用于发出单个指令,以断言与来自全局对象的指针更新的目标对象相关联的范围属性将所述目标对象的范围标识为全局,
其中,如果与所述目标对象相关联的范围属性将所述目标对象的范围标识为局部,则所述单个指令调用处理程序例程以验证所述目标对象的范围为局部,并且
其中,如果与所述目标对象相关联的范围属性将所述目标对象的范围标识为全局,则所述写屏障逻辑单元被减小为所述单个指令。
13.如权利要求12所述的***,其中,所述写屏障逻辑单元用于将由应用程序创建的每个对象与所述高速缓存内相应的对象的起始高速缓存行相关联,使得相应的每个对象的范围属性位根据相应的每个对象的起始高速缓存行的范围属性位来确定。
14.如权利要求12所述的***,其中,所述写屏障逻辑单元用于如果所述目标对象被标识为局部,则将所述目标对象转换为全局对象。
15.如权利要求12所述的***,其中,所述主机平台包括:
***内存,其耦合到互连网络;以及
单芯片多处理器,其耦合到所述互连网络,所述单芯片多处理器包括多个处理器内核,其中,每个处理器内核都支持VMM,所述VMM用于加载运行时存储管理器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/322,484 | 2005-12-30 | ||
US11/322,484 US20070162475A1 (en) | 2005-12-30 | 2005-12-30 | Method and apparatus for hardware-based dynamic escape detection in managed run-time environments |
CN2006800450187A CN101322106B (zh) | 2005-12-30 | 2006-12-18 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800450187A Division CN101322106B (zh) | 2005-12-30 | 2006-12-18 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102693188A CN102693188A (zh) | 2012-09-26 |
CN102693188B true CN102693188B (zh) | 2015-11-18 |
Family
ID=38066481
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210033006.XA Expired - Fee Related CN102693188B (zh) | 2005-12-30 | 2006-12-18 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
CN2006800450187A Expired - Fee Related CN101322106B (zh) | 2005-12-30 | 2006-12-18 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800450187A Expired - Fee Related CN101322106B (zh) | 2005-12-30 | 2006-12-18 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070162475A1 (zh) |
EP (1) | EP1966703B1 (zh) |
CN (2) | CN102693188B (zh) |
WO (1) | WO2007078920A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4262174B2 (ja) * | 2004-09-09 | 2009-05-13 | キヤノン株式会社 | シミュレーション時間取得方法 |
US20070162475A1 (en) * | 2005-12-30 | 2007-07-12 | Intel Corporation | Method and apparatus for hardware-based dynamic escape detection in managed run-time environments |
TW200731134A (en) * | 2006-02-14 | 2007-08-16 | Mitac Int Corp | Software system structure and application program processing method |
US7774372B2 (en) * | 2007-05-16 | 2010-08-10 | International Business Machines Corporation | Computer program product and method for database management system supporting multiple temporary tables |
US20100023479A1 (en) * | 2008-07-24 | 2010-01-28 | Inernational Business Machines Corporation | Hexadecimal file fast decompression method |
BR112014007400A2 (pt) * | 2011-09-30 | 2017-04-04 | Hewlett Packard Development Co Lp | método para controle de dispositivo virtual em um sistema de computador, sistema de computador e meio legível por computador |
JP6044181B2 (ja) * | 2012-08-24 | 2016-12-14 | 富士通株式会社 | ガーベジコレクションのための情報処理方法、プログラム及び装置 |
JP6223001B2 (ja) * | 2013-06-06 | 2017-11-01 | キヤノン株式会社 | 画像処理装置、その制御方法、及びプログラム |
US9690709B2 (en) * | 2014-07-14 | 2017-06-27 | Oracle International Corporation | Variable handles |
CN105389615B (zh) * | 2015-12-09 | 2018-01-09 | 天津大学 | 一种嵌套式的动态软硬件划分环境变化检测方法 |
US9785735B1 (en) | 2016-10-11 | 2017-10-10 | International Business Machines Corporation | Parallel incremental global routing |
KR102612918B1 (ko) * | 2018-07-27 | 2023-12-13 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
CN112328510B (zh) * | 2020-10-29 | 2022-11-29 | 上海兆芯集成电路有限公司 | 进阶主机控制器及其控制方法 |
CN116755845B (zh) * | 2023-08-22 | 2023-11-14 | 北京中电华大电子设计有限责任公司 | 数据处理方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1160247A (zh) * | 1995-12-08 | 1997-09-24 | 太阳微***有限公司 | 高效利用空间的对象加锁的***和方法 |
US6757891B1 (en) * | 2000-07-12 | 2004-06-29 | International Business Machines Corporation | Method and system for reducing the computing overhead associated with thread local objects |
US6912553B1 (en) * | 1998-12-23 | 2005-06-28 | International Business Machines Corporation | Virtual machine memory management |
CN101194226A (zh) * | 2005-05-13 | 2008-06-04 | Abb研究有限公司 | 在集成应用之间保持数据一致性 |
CN101322106B (zh) * | 2005-12-30 | 2012-04-25 | 英特尔公司 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03251926A (ja) * | 1990-02-28 | 1991-11-11 | Nec Corp | オブジェクト管理装置 |
US5202998A (en) * | 1990-08-31 | 1993-04-13 | International Business Machines Corporation | Fast, simultaneous multi-processor system status communication interface |
US5555398A (en) * | 1994-04-15 | 1996-09-10 | Intel Corporation | Write back cache coherency module for systems with a write through cache supporting bus |
US5974438A (en) * | 1996-12-31 | 1999-10-26 | Compaq Computer Corporation | Scoreboard for cached multi-thread processes |
EP0856798B1 (en) * | 1997-01-30 | 2004-09-29 | STMicroelectronics Limited | A cache system |
US5909698A (en) * | 1997-03-17 | 1999-06-01 | International Business Machines Corporation | Cache block store instruction operations where cache coherency is achieved without writing all the way back to main memory |
US6094729A (en) * | 1997-04-08 | 2000-07-25 | Advanced Micro Devices, Inc. | Debug interface including a compact trace record storage |
US5974507A (en) * | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
US6412056B1 (en) * | 1997-10-01 | 2002-06-25 | Compac Information Technologies Group, Lp | Extended translation lookaside buffer with fine-grain state bits |
US6157986A (en) * | 1997-12-16 | 2000-12-05 | Advanced Micro Devices, Inc. | Fast linear tag validation unit for use in microprocessor |
US6282554B1 (en) * | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
US6189112B1 (en) * | 1998-04-30 | 2001-02-13 | International Business Machines Corporation | Transparent processor sparing |
US6332181B1 (en) * | 1998-05-04 | 2001-12-18 | International Business Machines Corporation | Recovery mechanism for L1 data cache parity errors |
US6366946B1 (en) * | 1998-12-16 | 2002-04-02 | Microsoft Corporation | Critical code processing management |
US6636950B1 (en) * | 1998-12-17 | 2003-10-21 | Massachusetts Institute Of Technology | Computer architecture for shared memory access |
JP3611295B2 (ja) * | 2000-03-09 | 2005-01-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータシステム、メモリ管理方法及び記憶媒体 |
US6748496B1 (en) * | 2000-04-18 | 2004-06-08 | Ati International Srl | Method and apparatus for providing cacheable data to a peripheral device |
US6502170B2 (en) * | 2000-12-15 | 2002-12-31 | Intel Corporation | Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes |
AU2002231289A1 (en) * | 2000-12-19 | 2002-07-01 | Coolernet, Inc. | System and method for multimedia authoring and playback |
US6748501B2 (en) * | 2000-12-30 | 2004-06-08 | International Business Machines Corporation | Microprocessor reservation mechanism for a hashed address system |
JP4434534B2 (ja) * | 2001-09-27 | 2010-03-17 | 株式会社東芝 | プロセッサ・システム |
US6785774B2 (en) * | 2001-10-16 | 2004-08-31 | International Business Machines Corporation | High performance symmetric multiprocessing systems via super-coherent data mechanisms |
GB2381092B (en) * | 2001-10-19 | 2005-10-19 | Ibm | Object locking in a shared VM environment |
US6854039B1 (en) * | 2001-12-05 | 2005-02-08 | Advanced Micro Devices, Inc. | Memory management system and method providing increased memory access security |
US20030126379A1 (en) * | 2001-12-31 | 2003-07-03 | Shiv Kaushik | Instruction sequences for suspending execution of a thread until a specified memory access occurs |
US6918030B2 (en) * | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
JP3866597B2 (ja) * | 2002-03-20 | 2007-01-10 | 株式会社東芝 | 内部メモリ型耐タンパプロセッサおよび秘密保護方法 |
US7269717B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
US7089373B2 (en) * | 2003-06-12 | 2006-08-08 | International Business Machines Corporation | Shadow register to enhance lock acquisition |
US7287126B2 (en) * | 2003-07-30 | 2007-10-23 | Intel Corporation | Methods and apparatus for maintaining cache coherency |
US20050138306A1 (en) * | 2003-12-19 | 2005-06-23 | Panchbudhe Ankur P. | Performance of operations on selected data in a storage area |
US7114036B2 (en) * | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7562361B2 (en) * | 2004-02-26 | 2009-07-14 | Microsoft Corporation | Thread-based limitation on computer application |
US7421539B1 (en) * | 2004-05-18 | 2008-09-02 | Sun Microsystems, Inc. | Method and system for concurrent garbage collection and mutator execution |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US7624236B2 (en) * | 2004-12-27 | 2009-11-24 | Intel Corporation | Predictive early write-back of owned cache blocks in a shared memory computer system |
US20070124546A1 (en) * | 2005-11-29 | 2007-05-31 | Anton Blanchard | Automatic yielding on lock contention for a multi-threaded processor |
US7987452B2 (en) * | 2005-12-15 | 2011-07-26 | International Business Machines Corporation | Profile-driven lock handling |
-
2005
- 2005-12-30 US US11/322,484 patent/US20070162475A1/en not_active Abandoned
-
2006
- 2006-12-18 CN CN201210033006.XA patent/CN102693188B/zh not_active Expired - Fee Related
- 2006-12-18 WO PCT/US2006/048278 patent/WO2007078920A1/en active Application Filing
- 2006-12-18 EP EP06845735.7A patent/EP1966703B1/en active Active
- 2006-12-18 CN CN2006800450187A patent/CN101322106B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1160247A (zh) * | 1995-12-08 | 1997-09-24 | 太阳微***有限公司 | 高效利用空间的对象加锁的***和方法 |
US6912553B1 (en) * | 1998-12-23 | 2005-06-28 | International Business Machines Corporation | Virtual machine memory management |
US6757891B1 (en) * | 2000-07-12 | 2004-06-29 | International Business Machines Corporation | Method and system for reducing the computing overhead associated with thread local objects |
CN101194226A (zh) * | 2005-05-13 | 2008-06-04 | Abb研究有限公司 | 在集成应用之间保持数据一致性 |
CN101322106B (zh) * | 2005-12-30 | 2012-04-25 | 英特尔公司 | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2007078920A1 (en) | 2007-07-12 |
EP1966703B1 (en) | 2015-03-04 |
US20070162475A1 (en) | 2007-07-12 |
CN101322106A (zh) | 2008-12-10 |
CN102693188A (zh) | 2012-09-26 |
EP1966703A1 (en) | 2008-09-10 |
CN101322106B (zh) | 2012-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693188B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
Dulloor et al. | Data tiering in heterogeneous memory systems | |
CN1894662B (zh) | 作为用于执行引导码的ram的处理器缓存存储器 | |
US9047114B2 (en) | Method and system for analyzing parallelism of program code | |
US9923840B2 (en) | Improving performance and security of multi-processor systems by moving thread execution between processors based on data location | |
Vijaykumar et al. | A case for richer cross-layer abstractions: Bridging the semantic gap with expressive memory | |
US8457943B2 (en) | System and method for simulating a multiprocessor system | |
Biswas et al. | Multi-execution: multicore caching for data-similar executions | |
Skarlatos et al. | Babelfish: Fusing address translations for containers | |
Atkinson et al. | A review of the rationale and architectures of PJama-a durable, flexible, evolvable and scalable orthogonally persistent programming platform. | |
CN100514311C (zh) | 用于实现组合式数据/相关性高速缓存的方法和装置 | |
Li et al. | FREM: A fast restart mechanism for general checkpoint/restart | |
Wang et al. | Memento: architectural support for ephemeral memory management in serverless environments | |
Maass et al. | Ecotlb: Eventually consistent tlbs | |
US8732442B2 (en) | Method and system for hardware-based security of object references | |
CN112860381B (zh) | 基于申威处理器的虚拟机内存扩容方法及*** | |
Anagnostopoulos et al. | Power-aware dynamic memory management on many-core platforms utilizing DVFS | |
Cui et al. | SemSwap: Semantics-aware swapping in memory disaggregated datacenters | |
Wu et al. | A Study of Lock‐Free Based Concurrent Garbage Collectors for Multicore Platform | |
Zhang et al. | Versionized process based on non-volatile random-access memory for fine-grained fault tolerance | |
Kokosa et al. | Low-Level Memory Management | |
Nikolov et al. | Recoverable class loaders for a fast restart of java applications | |
Merritt | Efficient Programming of Massive-memory Machines | |
Zhang et al. | A Scalable Pthreads-Compatible Thread Model for VM-Intensive Programs | |
Peón Quirós et al. | Methodology for the Placement of Dynamic Data Objects |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151118 Termination date: 20191218 |