Demand-based memory-block splitting
    1.
    发明授权
    Demand-based memory-block splitting 有权
    基于需求的内存块分割

    公开(公告)号:US06801990B2

    公开(公告)日:2004-10-05

    申请号:US10055168

    申请日:2001-10-29

    IPC分类号: G06F1200

    摘要: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future demand for memory blocks of those sizes. To split a relatively large block in order to meet an actual or expected request for a smaller block, it bases its selection of the larger block to be split on whether the supply of free blocks of the larger block's size is great enough to meet the expected demand for such blocks. Splitting occurs both preemptively, i.e., before a request for the result of the splitting, and reactively, i.e., in response to a previously made request for a block that will result from the splitting operation.

    摘要翻译: 计算机系统(10)实现采用数据结构(图3)的存储器分配器来维护可用于接收新数据的动态分配的存储器的库存。 它从一个或多个程序接收从动态可分配的内存“堆”分配内存的请求。 它通过执行所请求的分配并从库存中移除如此分配的存储器块来响应这些请求。 相反,它增加了支持的程序或程序请求被释放的库存记忆块。 在此过程中,它监视分配了各种大小的内存块的频率,并从那些频率预测未来对这些大小的存储块的需求。 为了分割相对较大的块以满足对较小块的实际或预期的请求,它将基于较大块的选择作为分割,以便较大块的大小的空闲块的供应是否足够大以满足预期的 对这种块的需求。 分裂先发生,即在对分割结果的请求之前,并且反应地,即响应于先前对于由分割操作产生的块的请求而发生。

    Preemptive memory-block splitting
    2.
    发明授权
    Preemptive memory-block splitting 有权
    抢占式内存块分裂

    公开(公告)号:US06842838B2

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

    申请号:US10103637

    申请日:2002-03-21

    IPC分类号: G06F12/00 G06F12/02 G06F13/00

    摘要: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of various sizes are allocated, and it projects from those frequencies future-demand values for memory blocks of those sizes. It then splits larger blocks into smaller ones preemptively, i.e., before a request for the result of the splitting. To split a relatively large block preemptively in order to meet an expected request for a smaller block, it bases its selection of the larger block to be split on whether the supply of free blocks of that size is great enough to meet the expected demand for such blocks. It also splits blocks reactively, i.e., in response to a previously made request for a block that will result from the splitting operation.

    摘要翻译: 计算机系统(10)实现采用数据结构(图3)的存储器分配器来维护可用于接收新数据的动态分配的存储器的库存。 它从一个或多个程序接收从动态可分配的内存“堆”分配内存的请求。 它通过执行所请求的分配并从库存中移除如此分配的存储器块来响应这些请求。 相反,它增加了支持的程序或程序请求被释放的库存记忆块。 在此过程中,它监视分配了各种大小的存储块的频率,并从那些频率的那些频率预测这些尺寸的存储块的未来需求值。 然后,它将较大的块分成较小的块,即在对分裂结果的请求之前。 为了满足对较小块的预期请求,要先分割一个相对较大的块,它将选择较大的块来分割该大小的空闲块的供应是否足够大以满足对其的预期需求 块。 它还反应地拆分块,即响应于先前对由分割操作产生的块的请求。

    Memory-block coalescing based on run-time demand monitoring
    3.
    发明授权
    Memory-block coalescing based on run-time demand monitoring 有权
    基于运行时需求监控的内存块聚合

    公开(公告)号:US06839822B2

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

    申请号:US10055414

    申请日:2001-10-29

    IPC分类号: G06F12/02 G06F12/00 G06F13/00

    摘要: A computer system (10) implements a memory allocator that employs a data structure (FIG. 3) to maintain an inventory of dynamically allocated memory available to receive new data. It receives from one or more programs requests that it allocate memory from a dynamically allocable memory “heap.” It responds to such requests by performing the requested allocation and removing the thus-allocated memory block from the inventory. Conversely, it adds to the inventory memory blocks that the supported program or programs request be freed. In the process, it monitors the frequencies with which memory blocks of different sizes are allocated, and it projects from those frequencies future demand for different-sized memory blocks. When it needs to coalesce multiple smaller blocks to fulfil an actual or expected request for a larger block, it bases its selection of which constituent blocks to coalesce on whether enough free blocks of a constituent block's size exist to meet the projected demand for them.

    摘要翻译: 计算机系统(10)实现采用数据结构(图3)的存储器分配器来维护可用于接收新数据的动态分配的存储器的库存。 它从一个或多个程序接收从动态可分配的内存“堆”分配内存的请求。 它通过执行所请求的分配并从库存中移除如此分配的存储器块来响应这些请求。 相反,它增加了支持的程序或程序请求被释放的库存记忆块。 在此过程中,它监视分配不同大小的存储块的频率,并从那些频率预测未来对不同大小的存储块的需求。 当需要合并多个较小的块以实现对较大块的实际或预期请求时,它将选择哪个组成块合并,以确定是否存在构成块的大小的足够的空闲块以满足对它们的预计需求。

    Busy-wait-free synchronization
    4.
    发明授权
    Busy-wait-free synchronization 失效
    忙等待同步

    公开(公告)号:US06173442B2

    公开(公告)日:2001-01-09

    申请号:US09245778

    申请日:1999-02-05

    IPC分类号: G06F945

    CPC分类号: G06F9/52 Y10S707/99938

    摘要: An object structure's header (40) allocates a two-bit synchronization-state field (42) solely to monitor data for implementing synchronization on that object. When the object is locked by a particular execution thread, or when one or more execution threads are waiting for a lock or notification on that object, its header contains a pointer to monitor resources in the form of a linked list of lock records (50, 52, 54) associated with the threads involved. The synchronization-state field (42) ordinarily contains an indication of whether such a linked list exists and, if so, whether its first member is associated with a thread that has a lock on the object. When a thread attempts to gain access to that linked list, it employs an atomic swap operation to place a special busy value in that lock-state field (42) and write its execution-environment pointer into the object's header (40). If the previous value of that field was not the special busy value, the thread uses the header's previous contents to perform its intended synchronization operation. Otherwise, it obtains that information through its own execution environment (44, 46, or 48) or that of the thread whose identifier the object header previously contained. When the thread completes its synchronization operation, it employs an atomic compare-and-swap operation to write the results into the object's header if that header still contains the thread identifier that the thread originally wrote there. Otherwise, it communicates that information to its successor thread if the thread identifier is different and thereby indicates that at least one successor is contending for access to the linked list.

    摘要翻译: 对象结构的头部(40)仅分配两位同步状态字段(42)来监视用于实现该对象上的同步的数据。 当对象被特定执行线程锁定时,或者当一个或多个执行线程等待该对象上的锁定或通知时,其头包含指向监视资源的指针,该指针以锁定记录的链表的形式(50, 52,54)与所涉及的线程相关联。 同步状态字段(42)通常包含这样的链表是否存在的指示,如果是,则其第一个成员是否与对象上具有锁定的线程相关联。 当一个线程尝试访问该链表时,它采用原子交换操作在该锁状态字段(42)中放置一个特殊的忙值,并将其执行环境指针写入对象的头(40)。 如果该字段的先前值不是特殊忙值,线程将使用头部的以前内容来执行其预期的同步操作。 否则,它通过其自己的执行环境(44,46或48)或其标识符之前包含对象标题的线程获得该信息。 当线程完成其同步操作时,如果该头仍然包含线程最初在那里写入的线程标识符,它将使用原子比较和交换操作将结果写入对象的头。 否则,如果线程标识符不同,则将该信息传递给其后续线程,从而指示至少一个后继者正在竞争访问链表。

    Method and apparatus for decreasing object copying by a generational, copying garbage collector
    5.
    发明授权
    Method and apparatus for decreasing object copying by a generational, copying garbage collector 有权
    复制垃圾收集器,用于减少对象复制的方法和装置

    公开(公告)号:US07599973B2

    公开(公告)日:2009-10-06

    申请号:US11331376

    申请日:2006-01-12

    IPC分类号: G06F12/00

    CPC分类号: G06F12/0276 Y10S707/99957

    摘要: In a generational, copying garbage collector, young generation collection may be made more efficient by dynamically measuring object survival rates as a function of “fine-grained” allocation age, and choosing, on the basis of these survival rates, part of the young generation that will be not be collected, but instead scanned for pointers to objects in the rest of the young generation. The rest of the young generation, including objects referenced by the pointers, is then collected.

    摘要翻译: 在一代人复制垃圾收集器中,年轻一代的收集可以通过动态地测量对象存活率作为“细粒度”分配年龄的函数而变得更有效率,并且基于这些存活率来选择年轻一代的一部分 这将不被收集,而是扫描指向其他年轻一代的对象的指针。 然后收集年轻一代的其余部分,包括指针引用的对象。

    Garbage-first garbage collection
    6.
    发明授权
    Garbage-first garbage collection 有权
    垃圾第一垃圾收集

    公开(公告)号:US07340494B1

    公开(公告)日:2008-03-04

    申请号:US10985447

    申请日:2004-11-11

    IPC分类号: G06F17/30

    CPC分类号: G06F12/0269 Y10S707/99957

    摘要: A garbage collector treats a garbage-collected heap as divided into heap regions, for each of which it maintains a respective remembered set, whose entries list the locations where references located in the heap outside that region refer to references inside that region. The remembered sets are used during space-incremental collection operations on collection sets of those regions; if the garbage collector determines that objects in the collection set are not referred to directly or indirectly from outside the collection set, it reclaims the memory space that they occupy. It places entries into the remembered sets independently of the locations at which the references were found, so any region can be chosen for inclusion in any collection set; no predetermined collection order is required. Instead, the garbage collector performs global marking operations and uses the results to select for collection-set membership the regions that it can most likely collect efficiently.

    摘要翻译: 一个垃圾收集器将垃圾收集堆处理成堆区域,每个堆区域维护一个相应的记忆集,其中的条目列出了位于该区域外部的堆栈中的引用引用该区域内的引用的位置。 记忆集合用于在这些区域的集合集合的空间增量集合操作中; 如果垃圾收集器确定集合集中的对象不是从集合集外部直接或间接引用,则它回收它们占用的内存空间。 它将条目放入独立于找到引用位置的记忆集中,因此可以选择任何区域以包含在任何集合集合中; 不需要预定的收款单。 相反,垃圾回收器执行全局标记操作,并使用结果为收集集成员选择最有可能高效收集的区域。

    Age segregation for garbage collector
    7.
    发明授权
    Age segregation for garbage collector 有权
    垃圾收集者的年龄隔离

    公开(公告)号:US07428560B1

    公开(公告)日:2008-09-23

    申请号:US10985787

    申请日:2004-11-11

    IPC分类号: G06F17/30

    CPC分类号: G06F12/0276 Y10S707/99957

    摘要: A garbage collector treats a heap as divided into regions. From a candidate set of those regions, it selects the collection sets on which it performs collection increments from among those regions in accordance with a selection criterion separate from the ages of the objects that those regions contain. It nonetheless segregates objects according to age, placing objects in such a manner that no candidate-set region containing an object whose age is less than some predetermined maximum also contains an object of a different age.

    摘要翻译: 垃圾收集器将堆分为区域。 从这些区域的候选集合中,根据与这些区域所包含的对象的年龄分开的选择标准,从其中区域中选择其上执行收集增量的集合集合。 然而,它仍然根据年龄分隔对象,将对象放置为不包含年龄小于某个预定最大值的对象的候选集区域也包含不同年龄的对象。

    STM WITH GLOBAL VERSION OVERFLOW HANDLING
    8.
    发明申请
    STM WITH GLOBAL VERSION OVERFLOW HANDLING 有权
    STM与全球版本的超流量处理

    公开(公告)号:US20100211931A1

    公开(公告)日:2010-08-19

    申请号:US12370742

    申请日:2009-02-13

    IPC分类号: G06F9/44

    CPC分类号: G06F9/466 G06F11/141

    摘要: A software transactional memory system is provided with overflow handling. The system includes a global version counter with an epoch number and a version number. The system accesses the global version counter prior to and subsequent to memory accesses of transactions to validate read accesses of the transaction. The system includes mechanisms to detect global version number overflow and may allow some or all transactions to execute to completion subsequent to the global version number overflowing. The system also provides publication, privatization, and granular safety properties.

    摘要翻译: 软件事务内存系统提供溢出处理。 该系统包括具有时代号和版本号的全局版本计数器。 系统在事务的内存访问之前和之后访问全局版本计数器,以验证事务的读取访问。 该系统包括检测全局版本号溢出的机制,并且可允许一些或所有事务在全球版本号码溢出之后执行完成。 该系统还提供出版物,私有化和粒状安全属性。

    DETECTING RACE CONDITIONS WITH A SOFTWARE TRANSACTIONAL MEMORY SYSTEM
    9.
    发明申请
    DETECTING RACE CONDITIONS WITH A SOFTWARE TRANSACTIONAL MEMORY SYSTEM 有权
    用软件交易记忆系统检测环境条件

    公开(公告)号:US20090328019A1

    公开(公告)日:2009-12-31

    申请号:US12163902

    申请日:2008-06-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443 G06F11/3624

    摘要: A dynamic race detection system is provided that detects race conditions in code that executes concurrently in a computer system. The dynamic race detection system uses a modified software transactional memory (STM) system to detect race conditions. A compiler converts portions of the code that are not configured to operate with the STM system into pseudo STM code that operates with the STM system. The dynamic race detection system detects race conditions in response to either a pseudo STM transaction in the pseudo STM code failing to validate when executed or an actual STM transaction failing to validate when executed because of conflict with a concurrent pseudo STM transaction.

    摘要翻译: 提供了一种动态竞争检测系统,其检测在计算机系统中并发执行的代码中的竞争条件。 动态竞争检测系统使用修改后的软件事务存储器(STM)系统来检测竞争条件。 编译器将未配置为与STM系统一起运行的代码部分转换为与STM系统一起运行的伪STM代码。 动态竞争检测系统响应于伪STM代码中的伪STM事务在执行时无法验证或由于与并发的伪STM事务冲突而被执行时实际的STM事务失败而检测到竞争条件。

    OPTIMIZING PRIMITIVES IN SOFTWARE TRANSACTIONAL MEMORY
    10.
    发明申请
    OPTIMIZING PRIMITIVES IN SOFTWARE TRANSACTIONAL MEMORY 有权
    软件交易记忆中的优化原则

    公开(公告)号:US20090328018A1

    公开(公告)日:2009-12-31

    申请号:US12163284

    申请日:2008-06-27

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443

    摘要: A compiler is provided that determines when the use of software transactional memory (STM) primitives may be optimized with respect to a set of collectively dominating STM primitives. The compiler analysis coordinates the use of variables containing possible shadow copy pointers to allow the analysis to be performed for both direct write and buffered write STM systems. The coordination of the variables containing the possible shadow copy pointers ensures that the results of STM primitives are properly reused. The compiler analysis identifies memory accesses where STM primitives may be eliminated, combined, or substituted for lower overhead STM primitives.

    摘要翻译: 提供了一种编译器,其确定何时可以相对于一组统一主导的STM原语来优化软件事务存储器(STM)原语的使用。 编译器分析协调使用包含可能的卷影复制指针的变量,以便对直写和缓冲写STM系统执行分析。 包含可能的卷影复制指针的变量的协调确保了STM原语的结果被适当重复使用。 编译器分析识别存储器访问,其中STM原语可以被消除,组合或代替较低开销的STM原语。