Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
    11.
    发明授权
    Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers 有权
    用于在计算机的二进制翻译子系统中实现子程序调用和返回的方法和系统

    公开(公告)号:US06711672B1

    公开(公告)日:2004-03-23

    申请号:US09668091

    申请日:2000-09-22

    申请人: Ole Agesen

    发明人: Ole Agesen

    IPC分类号: G06F9455

    摘要: A sequence of input language (IL) instructions of a guest system is converted, for example by binary translation, into a corresponding sequence of output language (OL) instructions of a host system, which executes the OL instructions. In order to determine the correct return address after any IL call to a subroutine, the corresponding OL return address is stored in an array at a location determined by a hash function. After completion of execution of the OL translation of the IL subroutine, execution is transferred to the address stored in the array at the location where the correct OL return address was previously stored. This location may have been overwritten by some other OL return address. This transfer will therefore be to one of three places: 1) either back to the correct OL call site, in which case execution may continue as normal; 2) directly to a back-up return address recovery module; or 3) to an incorrect OL call site (created upon translation of some other IL subroutine call), in which case execution is transferred to the back-up recovery module. A confirmation instruction block is included in each OL call site to determine whether the transfer was to the correct or incorrect call site.

    摘要翻译: 访客系统的输入语言(IL)指令的序列例如通过二进制转换被转换成执行OL指令的主机系统的输出语言(OL)指令的相应序列。 为了在任何IL调用子程序后确定正确的返回地址,相应的OL返回地址存储在由散列函数确定的位置的数组中。 在执行IL子程序的OL转换完成后,执行将被转移到阵列中存储了正确OL返回地址的位置的地址。 该位置可能已被其他一些OL返回地址覆盖。 因此,这种转移将是三个地方之一:1)返回正确的OL呼叫站点,在这种情况下执行可能正常; 2)直接到备份返回地址恢复模块; 或3)到不正确的OL调用站点(在其他IL子程序调用的转换时创建),在这种情况下,执行将传输到备份恢复模块。 每个OL呼叫站点中都包含确认指令块,以确定传输是否是正确或不正确的呼叫站点。

    Method and apparatus for encoding and decoding delta encoded information
to locate live pointers in program data stacks
    12.
    发明授权
    Method and apparatus for encoding and decoding delta encoded information to locate live pointers in program data stacks 失效
    用于编码和解码增量编码信息以在程序数据堆栈中定位实时指针的方法和装置

    公开(公告)号:US5909579A

    公开(公告)日:1999-06-01

    申请号:US847770

    申请日:1997-04-23

    IPC分类号: G06F12/02 H03M3/02 G06B9/44

    摘要: Live pointer information for a stream of bytecodes is precomputed for each bytecode. The precomputed full live pointer information is stored only for bytecodes at predetermined intervals in the stream. Between the bytecodes for which full live pointer information is stored, changes in the live pointer information produced by each bytecode are encoded using a suitable compressive coding and stored. Later, when a program which needs the live pointer information, such as garbage collection, is initiated, the full live pointer information for the nearest bytecode preceding the desired bytecode boundary is retrieved along with the intervening coded changes. The changes are decoded and applied to the retrieved live pointer information to generate the live pointer information at the desired bytecode boundary. In one embodiment of the invention, the live pointer changes are delta encoded so that each code contains information relating to the live pointer changes produced by a bytecode from the live pointer information as modified by the previous delta code. In another embodiment of the invention, the delta coded changes are encoded with a Huffman encoding scheme.

    摘要翻译: 每个字节码预先计算字节码流的实时指针信息。 预计算的完整实况指针信息仅在流中以预定间隔存储在字节码中。 在存储完整的实时指针信息的字节码之间,使用适当的压缩编码对每个字节码产生的实况指针信息进行改变并进行存储。 之后,当开始需要诸如垃圾收集之类的活动指针信息的程序时,将检索所需字节码边界之前的最近字节码的完整实况指针信息以及中间编码的变化。 这些改变被解码并应用于检索到的实时指针信息以在期望的字节码边界处生成实时指针信息。 在本发明的一个实施例中,实时指针变化被增量编码,使得每个代码包含与由先前的增量代码修改的来自实时指针信息的字节码产生的实况指针变化相关的信息。 在本发明的另一个实施例中,Δ编码改变用霍夫曼编码方案编码。

    Bounded-pause time garbage collection system and method including write
barrier associated with a source instance of a partially relocated
object
    13.
    发明授权
    Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object 失效
    有界 - 暂停时间垃圾收集系统和方法,包括与部分重定位对象的源实例相关联的写入障碍

    公开(公告)号:US5873105A

    公开(公告)日:1999-02-16

    申请号:US883291

    申请日:1997-06-26

    CPC分类号: G06F12/0276 Y10S707/99957

    摘要: A write barrier to stores into a partially relocated large or popular memory object facilitates bounded pause time implementations of relocating garbage collectors, including e.g., copying collectors, generational collectors, and collectors providing compaction. Such a write barrier allows a garbage collector implementation to interrupt relocation of large or popular memory objects so as to meet bounded pause time guarantees. A partially relocated object identifier store including "copy from" identifier storage accessible to write barrier logic allows the write barrier logic to maintain consistency between FromSpace and ToSpace instances of a partially relocated memory object. "Copy from" identifier storage allows the write barrier logic, or a trap handler responsive thereto, to broadcast a store-oriented memory access targeting the FromSpace instance to both FromSpace and ToSpace instances. Optional "How far" indication storage facilitates differentiation by the write barrier logic between a copied portion and an uncopied portion of the partially relocated memory object.

    摘要翻译: 将存储到部分重定位的大型或流行的存储器对象中的写入屏障有助于重新定位垃圾收集器的有限暂停时间实现,包括例如复制收集器,代人收集器和提供压缩的收集器。 这样的写屏障允许垃圾回收器实现中断大型或流行的存储器对象的重新定位,以便满足有限的暂停时间保证。 包含写入屏障逻辑可访问的“复制”标识符存储的部分重新定位的对象标识符存储允许写入屏障逻辑保持部分重新定位的存储器对象的FromSpace和ToSpace实例之间的一致性。 从“标识符存储器复制”允许写屏障逻辑或响应于此的陷阱处理器将针对FromSpace实例的面向存储器的存储器访问广播到FromSpace和ToSpace实例。 可选的“多远”指示存储有助于通过写入屏障逻辑在部分重定位的存储器对象的复制部分和未遮盖部分之间进行区分。

    Program concurrency control using condition variables
    14.
    发明授权
    Program concurrency control using condition variables 有权
    程序并发控制使用条件变量

    公开(公告)号:US08578380B1

    公开(公告)日:2013-11-05

    申请号:US10929045

    申请日:2004-08-27

    IPC分类号: G06F9/46

    CPC分类号: G06F9/526 G06F2209/521

    摘要: A condition variable for controlling access to a critical section of computer code by a plurality of concurrently running execution threads comprises a data structure with a head list linking threads in an arrival order and a tail list linking threads in a reverse arrival order. Together, the head and tail lists together indicate which threads are currently blocked on the condition variable. A wait counter indicates how many threads are currently linked in the data structure and a signal counter indicates how many times the condition variable has been signaled for waiting threads that are currently linked in the data structure. The head and tail pointers, as well as the wait and signal counters, may be implemented as fields of a single, atomically updatable data word.

    摘要翻译: 用于通过多个同时运行的执行线程来控制对计算机代码的关键部分的访问的条件变量包括具有以到达顺序链接线程的头列表和以相反到达顺序链接线程的尾列表的数据结构。 一起,头尾列表一起表示当前在条件变量上阻塞哪些线程。 等待计数器指示当前在数据结构中链接多少个线程,并且信号计数器指示条件变量已经被信号通知给当前在数据结构中链接的等待线程的次数。 头和尾指针以及等待和信号计数器可被实现为单个可原子更新的数据字的字段。

    Efficient virtualization of input/output completions for a virtual device
    15.
    发明授权
    Efficient virtualization of input/output completions for a virtual device 有权
    虚拟设备的输入/输出完成的高效虚拟化

    公开(公告)号:US08533745B2

    公开(公告)日:2013-09-10

    申请号:US12968039

    申请日:2010-12-14

    IPC分类号: G06F9/44 G06F9/46

    摘要: Completion interrupts corresponding to I/O requests issued by a virtual machine guest, which runs on a host platform, are virtualized in such a way that I/O completion interrupts to the requesting guest are delivered no faster than it can stably handle them, but, when possible, faster than the nominal speed of a virtual device to which a virtual machine addresses the I/O request. In general, completion events received from the host platform in response to guest I/O requests are examined with respect to time. If enough time has passed that the virtual device would normally have completed the I/O request, then the completion interrupt is delivered to the guest. If the nominal time has not elapsed, however, the invention enqueues and time-stamps the event and delivers it at the earliest of a) the normal maturity time, or b) at a safepoint.

    摘要翻译: 在主机平台上运行的虚拟机访客发出的I / O请求相应的完成中断被虚拟化,使得对请求的客户端的I / O完成中断的传送速度不会比可以稳定地处理它们的速度更快,而是 在可能的情况下,虚拟机对于I / O请求所对应的虚拟设备的标称速度更快。 一般来说,根据客户端I / O请求从主机平台接收到的完成事件将相对于时间进行检查。 如果虚拟设备通常已经完成了I / O请求的足够的时间,则完成中断将传递给客户端。 然而,如果没有经过标称时间,本发明会在a)正常到期时间的最早时间排队和时间戳,并且b)在一个安全点。

    System and method for maintaining memory page sharing in a virtual environment
    16.
    发明授权
    System and method for maintaining memory page sharing in a virtual environment 有权
    在虚拟环境中维护内存页共享的系统和方法

    公开(公告)号:US08380939B2

    公开(公告)日:2013-02-19

    申请号:US13214028

    申请日:2011-08-19

    申请人: Ole Agesen

    发明人: Ole Agesen

    IPC分类号: G06F9/455 G06F7/04 G06F12/08

    摘要: In a virtualized system using memory page sharing, a method is provided for maintaining sharing when Guest code attempts to write to the shared memory. In one embodiment, virtualization logic uses a pattern matcher to recognize and intercept page zeroing code in the Guest OS. When the page zeroing code is about to run against a page that is already zeroed, i.e., contains all zeros, and is being shared, the memory writes in the page zeroing code have no effect. The virtualization logic skips over the writes, providing an appearance that the Guest OS page zeroing code has run to completion but without performing any of the writes that would have caused a loss of page sharing. The pattern matcher can be part of a binary translator that inspects code before it executes.

    摘要翻译: 在使用内存页面共享的虚拟化系统中,提供了一种方法,用于在访客代码尝试写入共享内存时保持共享。 在一个实施例中,虚拟化逻辑使用模式匹配器来识别和拦截访客操作系统中的页面归零代码。 当页面归零代码即将针对已经归零的页面运行时,即包含全部零,并且正在共享时,页面调零代码中的内存写入不起作用。 虚拟化逻辑跳过写入,提供Guest OS页面调零代码已经运行到完成的外观,但不执行会导致页面共享丢失的任何写入。 模式匹配器可以是在执行代码之前检查代码的二进制转换器的一部分。

    Method and system for enabling checkpointing fault tolerance across remote virtual machines
    17.
    发明授权
    Method and system for enabling checkpointing fault tolerance across remote virtual machines 有权
    远程虚拟机启用检查点容错功能的方法和系统

    公开(公告)号:US08171338B2

    公开(公告)日:2012-05-01

    申请号:US12781875

    申请日:2010-05-18

    IPC分类号: G06F11/00

    摘要: A checkpointing fault tolerance network architecture enables a backup computer system to be remotely located from a primary computer system. An intermediary computer system is situated between the primary computer system and the backup computer system to manage the transmission of checkpoint information to the backup VM in an efficient manner. The intermediary computer system is networked to the primary VM through a high bandwidth connection but is networked to the backup VM through a lower bandwidth connection. The intermediary computer system identifies updated data corresponding to memory pages that have been least recently modified by the primary VM and transmits such updated data to the backup VM through the low bandwidth connection. In such manner, the intermediary computer system economizes the bandwidth capacity of the low bandwidth connection, holding back updated data corresponding to more recently modified memory pages, since such memory pages may be more likely to be updated again in the future.

    摘要翻译: 检查点容错网络架构使备份计算机系统能够远离主计算机系统。 中间计算机系统位于主计算机系统和备用计算机系统之间,以有效的方式管理检查点信息传输到备份虚拟机。 中间计算机系统通过高带宽连接与主虚拟机联网,但通过较低带宽连接与备用虚拟机联网。 中间计算机系统识别对应于由主VM最近最近修改的存储器页面的更新数据,并通过低带宽连接将这种更新的数据发送到备份VM。 以这种方式,中间计算机系统节约了低带宽连接的带宽容量,阻止与最近修改的存储器页面相对应的更新数据,因为这样的存储器页面将来可能再次被更新。

    System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
    18.
    发明授权
    System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems 有权
    用于检测对共享结构的访问并维护虚拟化多处理器系统中派生结构的一致性的系统和方法

    公开(公告)号:US06961806B1

    公开(公告)日:2005-11-01

    申请号:US10016072

    申请日:2001-12-10

    IPC分类号: G06F12/00

    CPC分类号: G06F9/45537 G06F9/4812

    摘要: A computer system includes at least one virtual machine that has a plurality of virtual processors all running on an underlying hardware platform. A software interface layer such as a virtual machine monitor establishes traces on primary structures located in a common memory space as needed for the different virtual processors. Whenever any one of the virtual processors generates a trace event, such as accessing a traced structure, then a notification is sent to at least the other virtual processors that have a trace on the accessed primary structure. In some applications, the VMM derives and maintains secondary structures corresponding to the primary structures, such as where the VMM converts, through binary translation, original code intended to run on a virtual processor into code that can be run on an underlying physical processor of the hardware platform. In these applications, the VMM may rederive or invalidate the secondary structures as needed upon receipt of the notification of the trace event. Different semantics are provided for the notification, providing different choices of performance versus guaranteed consistency between primary and secondary structures. In the preferred embodiment of the invention, a dedicated sub-system is included within the VMM for each virtual processor; each sub-system establishes traces, senses trace events, issues the notification, and performs other operations relating specifically to its respective virtual processor.

    摘要翻译: 计算机系统包括至少一个虚拟机,其具有在底层硬件平台上运行的多个虚拟处理器。 诸如虚拟机监视器之类的软件接口层根据不同虚拟处理器的需要,在位于公共存储器空间中的主结构上建立迹线。 无论何时任何一个虚拟处理器生成跟踪事件(例如访问跟踪结构),则向至少在所访问的主要结构上具有跟踪的其他虚拟处理器发送通知。 在某些应用中,VMM导出和维护对应于主要结构的二级结构,例如VMM通过二进制转换将旨在在虚拟处理器上运行的原始代码转换为可以在底层物理处理器上运行的代码 硬件平台。 在这些应用中,VMM可以在接收到跟踪事件的通知时根据需要重新激活或使二级结构无效。 为通知提供不同的语义,提供不同的性能选择与主要和次要结构之间的一致性保证。 在本发明的优选实施例中,专用子系统包括在每个虚拟处理器的VMM内; 每个子系统建立跟踪,感测跟踪事件,发出通知,并执行与其各自的虚拟处理器专门相关的其他操作。

    Using atomic compare-and-swap operations for forwarding-pointer installation
    19.
    发明授权
    Using atomic compare-and-swap operations for forwarding-pointer installation 有权
    使用原子比较和交换操作来安装转发指针

    公开(公告)号:US06560619B1

    公开(公告)日:2003-05-06

    申请号:US09704141

    申请日:2000-11-01

    IPC分类号: G06F1200

    摘要: A multiprocessor, multi-program, stop-the-world garbage collection program is described. The system initially over partitions the root sources, and then iteratively employs static and dynamic work balancing. Garbage collection threads compete dynamically for the initial partitions. Work stealing double-ended queues, where contention is reduced, are described to provide dynamic load balancing among the threads. Contention is resolved by using atomic instructions. The heap is broken into a young and an old generation where parallel semi-space copying is used to collect the young generation and parallel mark-compacting the old generation. Speed and efficiency of collection is enhanced by use of card tables and linking objects, and overflow conditions are efficiently handled by linking using class pointers. The garbage collection termination employs a global status word.

    摘要翻译: 描述了一个多处理器,多程序,停止世界的垃圾收集程序。 系统最初对根源进行分区,然后迭代地采用静态和动态的工作平衡。 垃圾收集线程可以动态竞争初始分区。 被描述为在线程之间提供动态负载平衡的工作窃取双端队列,其中争用减少。 竞争通过使用原子指令来解决。 堆被打破成一个年轻和老一代,平行的半空间复制用于收集年轻一代和平行的标记压实老一代。 通过使用卡表和链接对象来增强收集的速度和效率,并且通过使用类指针进行链接来有效地处理溢出条件。 垃圾回收终止使用全局状态字。

    Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code
    20.
    发明授权
    Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code 有权
    用于促进具有两种类型的程序代码的应用程序的资源管理的方法,装置和制品

    公开(公告)号:US06253215B1

    公开(公告)日:2001-06-26

    申请号:US09134548

    申请日:1998-08-17

    IPC分类号: G06F1730

    CPC分类号: G06F12/0253 Y10S707/99957

    摘要: Methods, systems, and articles of manufacture consistent with the present invention provide a program component including a set of instructions native to the system, include in the set of native instructions an instruction to maintain information on use of a particular object, and permit reuse of memory resources corresponding to the particular object based on an indication from a source that the particular object is no longer being used, the source being different from any source used to provide information on use of objects associated with non-native instructions of the program component. Additionally, garbage collection is not permitted during native code operations to read or write data in object fields because during such operations an indication exists that such collection may be inaccurate and could possibly reclaim or relocate objects referenced by native code though not specified as such in the native code stack and global variables.

    摘要翻译: 与本发明一致的方法,系统和制品提供了包括本系统的一组指令的程序组件,在本组指令中包括维护关于使用特定对象的信息的指令,并允许重用 基于来自源的指示,特定对象不再被使用的指示,所述源与用于提供关于与所述程序组件的非本地指令相关联的对象的使用的信息的任何源不同。 此外,在本地代码操作期间,不允许在本地代码操作中读取或写入对象字段中的数据,因为在此类操作中存在这样的指示,即这样的集合可能不准确,并且可能会回收或重新定位由本机代码引用的对象,但在 本地代码堆栈和全局变量。