Maintaining a double-ended queue as a linked-list with sentinel nodes and delete flags with concurrent non-blocking insert and remove operations using a double compare-and-swap primitive
    1.
    发明授权
    Maintaining a double-ended queue as a linked-list with sentinel nodes and delete flags with concurrent non-blocking insert and remove operations using a double compare-and-swap primitive 有权
    将双端队列作为链接​​列表维护,并使用哨兵节点和删除标志,并发使用并发的非阻塞插入和删除操作,使用双重比较和交换原语

    公开(公告)号:US07000234B1

    公开(公告)日:2006-02-14

    申请号:US09547290

    申请日:2000-04-11

    IPC分类号: G06F9/54

    摘要: A linked-list-based concurrent shared object implementation has been developed that provides non-blocking and linearizable access to the concurrent shared object. In an application of the underlying techniques to a deque, the linked-list-based algorithm allows non-blocking completion of access operations without restricting concurrency in accessing the deque's two ends. The new implementation is based at least in part on a new technique for splitting a pop operation into two steps, marking that a node is about to be deleted, and then deleting it. Once marked, the node logically deleted, and the actual deletion from the list can be deferred. In one realization, actual deletion is performed as part of a next push or pop operation performed at the corresponding end of the deque. An important aspect of the overall technique is synchronization of delete operations when processors detect that there are only marked nodes in the list and attempt to delete one or more of these nodes concurrently from both ends of the deque.

    摘要翻译: 已经开发了基于链接列表的并发共享对象实现,其提供对并发共享对象的非阻塞和线性化访问。 在基于deque的基础技术的应用中,基于链表的算法允许非阻塞地完成访问操作,而不会限制访问deque两端的并发性。 新的实现至少部分地基于用于将弹出操作分成两个步骤的新技术,标记节点即将被删除,然后删除它。 一旦标记,节点将被逻辑删除,并且可以推迟从列表中实际删除。 在一个实现中,实际删除被执行为在deque的对应端执行的下一个推或者弹出操作的一部分。 总体技术的一个重要方面是当处理器检测到列表中只有标记节点并且尝试从德克两端同时删除这些节点中的一个或多个时,删除操作的同步。

    Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value
    3.
    发明授权
    Lock-free implementation of concurrent shared object with dynamic node allocation and distinguishing pointer value 有权
    并行共享对象的锁定实现与动态节点分配和区分指针值

    公开(公告)号:US06826757B2

    公开(公告)日:2004-11-30

    申请号:US09837670

    申请日:2001-04-18

    IPC分类号: G06F946

    CPC分类号: G06F9/52

    摘要: A novel linked-list-based concurrent shared object implementation has been developed that provides non-blocking and linearizable access to the concurrent shared object. In an application of the underlying techniques to a deque, non-blocking completion of access operations is achieved without restricting concurrency in accessing the deque's two ends. In various realizations in accordance with the present invention, the set of values that may be pushed onto a shared object is not constrained by use of distinguishing values. In addition, an explicit reclamation embodiment facilitates use in environments or applications where automatic reclamation of storage is unavailable or impractical.

    摘要翻译: 已经开发了一种基于链表的并行共享对象实现,它提供对并发共享对象的非阻塞和线性化访问。 在底层技术应用于deque时,实现访问操作的非阻塞完成,而不会限制访问deque的两端的并发性。 在根据本发明的各种实现中,可以推送到共享对象上的值集合不受使用区分值的约束。 此外,显式的回收实施例有利于在存储器的自动回收不可用或不切实际的环境或应用中使用。

    System and method for arranging bits of a data word in accordance with a mask
    5.
    发明授权
    System and method for arranging bits of a data word in accordance with a mask 有权
    根据掩码排列数据字的位的系统和方法

    公开(公告)号:US06718492B1

    公开(公告)日:2004-04-06

    申请号:US09545019

    申请日:2000-04-07

    IPC分类号: G06F1100

    摘要: A system is disclosed for providing, from an input data word comprising a plurality of input data units having an input arrangement and a mask word comprising a plurality of mask bits each associated with one of the data units, an output data word in which the data units are arranged according to the mask bits. The system includes a bit balancer module and a plurality of rearrangement modules. The bit balancer module is configured to divide the input data units comprising the input data word into a plurality of data word portions, each data unit being assigned to one of the data word portions based on a pattern of mask bits of the mask word relative to the mask bit associated with the respective data unit. Each rearrangement module is configured to provide, from one of the data word portions and associated mask bits, an output data word portion in which the data units are arranged according to the mask bits. The data units of the output data word portions provided by the rearrangement modules are interleaved to provide the output data word.

    摘要翻译: 公开了一种用于从包括具有输入布置的多个输入数据单元的输入数据字和包括与数据单元之一相关联的多个掩码位的掩码字的输入数据字提供的系统,其中数据 单位根据掩码位排列。 该系统包括位平衡器模块和多个重排模块。 位平衡器模块被配置为将包括输入数据字的输入数据单元划分成多个数据字部分,每个数据单元基于掩模字的掩码位的图案相对于数据字部分中的一个分配给相对于 与相应数据单元相关联的掩码位。 每个重排模块被配置为从数据字部分和关联的掩码位之一提供根据掩码位数据单元排列的输出数据字部分。 由重排模块提供的输出数据字部分的数据单元被交织以提供输出数据字。

    Sequentially performed compound compare-and-swap
    6.
    发明授权
    Sequentially performed compound compare-and-swap 有权
    顺序执行的复合比较和交换

    公开(公告)号:US07890722B1

    公开(公告)日:2011-02-15

    申请号:US11099720

    申请日:2005-04-06

    IPC分类号: G06F12/14

    摘要: A sequentially performed implementation of a compound compare-and-swap (nCAS) operation has been developed. In one implementation, a double compare-and-swap (DCAS) operation does not result in a fault, interrupt, or trap in the situation where memory address A2 is invalid and the contents of memory address A1 are unequal to C1. In some realizations, memory locations addressed by a sequentially performed nCAS or DCAS instruction are reserved (e.g., locked) in a predefined order in accordance with a fixed total order of memory locations. In this way, deadlock between concurrently executed instances of sequentially performed nCAS instructions can be avoided. Other realizations defer responsibility for deadlock avoidance to the programmer.

    摘要翻译: 已经开发了顺序执行的复合比较和交换(nCAS)操作。 在一个实现中,在存储器地址A2无效并且存储器地址A1的内容不等于C1的情况下,双重比较和交换(DCAS)操作不会导致故障,中断或陷阱。 在一些实现中,依次执行的nCAS或DCAS指令寻址的存储器单元根据存储单元的固定总顺序以预定义的顺序被保留(例如锁定)。 以这种方式,可以避免顺序执行的nCAS指令的同时执行的实例之间的死锁。 其他实现方式将程序员的死锁责任推迟。

    Selective signalling of later reserve location memory fault in compound compare and swap
    7.
    发明授权
    Selective signalling of later reserve location memory fault in compound compare and swap 有权
    复合比较和交换中的故障选择信号

    公开(公告)号:US06880071B2

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

    申请号:US09829207

    申请日:2001-04-09

    IPC分类号: G06F9/30 G06F9/312 G06F9/46

    摘要: A sequentially performed implementation of a compound compare-and-swap (nCAS) operation has been developed. In one implementation, a double compare-and-swap (DCAS) operation does not result in a fault, interrupt, or trap in the situation where memory address A2 is invalid and the contents of memory address A1 are unequal to C1. In some realizations, memory locations addressed by a sequentially performed nCAS or DCAS instruction are reserved (e.g., locked) in a predefined order in accordance with a fixed total order of memory locations. In this way, deadlock between concurrently executed instances of sequentially performed nCAS instructions can be avoided. Other realizations defer responsibility for deadlock avoidance to the programmer.

    摘要翻译: 已经开发了顺序执行的复合比较和交换(nCAS)操作。 在一个实现中,在存储器地址A2无效并且存储器地址A1的内容不等于C1的情况下,双重比较和交换(DCAS)操作不会导致故障,中断或陷阱。 在一些实现中,依次执行的nCAS或DCAS指令寻址的存储器单元根据存储单元的固定总顺序以预定义的顺序被保留(例如锁定)。 以这种方式,可以避免顺序执行的nCAS指令的同时执行的实例之间的死锁。 其他实现方式将程序员的死锁责任推迟。

    Meta-transactional synchronization

    公开(公告)号:US10049127B1

    公开(公告)日:2018-08-14

    申请号:US10995885

    申请日:2004-11-23

    IPC分类号: G06F7/00 G06F17/30

    摘要: Efficiency with respect to traditional techniques is a key issue facing designers of software transactional synchronization mechanisms. Meta-transactional synchronization allows integration of transactional support into an object-oriented programming language, such as the Java language through the existing synchronization structure of the JVM. Meta-transactional synchronization provides source-level transactional operations that co-exist with synchronized operations. An implementation of a shared object in an object-oriented programming language tracks concurrently executing transactions attempting to access the shared object with at least one header word of the shared object.

    System and Method for Implementing Hierarchical Queue-Based Locks Using Flat Combining
    9.
    发明申请
    System and Method for Implementing Hierarchical Queue-Based Locks Using Flat Combining 有权
    使用平面组合实现层次化基于队列的锁的系统和方法

    公开(公告)号:US20120311606A1

    公开(公告)日:2012-12-06

    申请号:US13152079

    申请日:2011-06-02

    IPC分类号: G06F9/46

    CPC分类号: G06F9/526

    摘要: The system and methods described herein may be used to implement a scalable, hierarchal, queue-based lock using flat combining. A thread executing on a processor core in a cluster of cores that share a memory may post a request to acquire a shared lock in a node of a publication list for the cluster using a non-atomic operation. A combiner thread may build an ordered (logical) local request queue that includes its own node and nodes of other threads (in the cluster) that include lock requests. The combiner thread may splice the local request queue into a (logical) global request queue for the shared lock as a sub-queue. A thread whose request has been posted in a node that has been combined into a local sub-queue and spliced into the global request queue may spin on a lock ownership indicator in its node until it is granted the shared lock.

    摘要翻译: 本文描述的系统和方法可以用于使用平坦组合来实现可扩展的,分级的基于队列的锁。 在共享内存的核心集群中的处理器核心上执行的线程可以使用非原子操作来发布用于获取集群的发布列表的节点中的共享锁定的请求。 组合线程可以构建一个有序(逻辑)本地请求队列,其包括其自己的节点和包含锁定请求的其他线程(在集群中)的节点。 组合器线程可以将本地请求队列拼接成用于共享锁的(逻辑)全局请求队列作为子队列。 已经将其请求已经发布在已经组合到本地子队列中并被拼接到全局请求队列中的节点的线程可以旋转其节点中的所有权所有者指示符,直到被授予共享锁为止。

    System and method for transactional locking using reader-lists
    10.
    发明授权
    System and method for transactional locking using reader-lists 有权
    使用阅读器列表进行事务锁定的系统和方法

    公开(公告)号:US08103838B2

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

    申请号:US12350792

    申请日:2009-01-08

    IPC分类号: G06F12/16

    CPC分类号: G06F9/52

    摘要: In traditional transactional locking systems, such as Transactional Locking with Read-Write locks (TLRW), threads may frequently update lock metadata, causing system performance degradation. A system and method for implementing transactional locking using reader-lists (TLRL) may associate a respective reader-list with each stripe of data in a shared memory system. Before reading a given stripe as part of a transaction, a thread may add itself to the stripe's reader-list, if the thread is not already on the reader-list. A thread may leave itself on a reader-list after finishing the transaction. Before a thread modifies a stripe, the modifying thread may acquire a write-lock for the stripe. The writer thread may indicate to each reader thread on the stripe's reader-list that if the reader thread is executing a transaction, the reader thread should abort. The indication may include setting an invalidation flag for the reader. The writer thread may clear the reader-list of a stripe it modified.

    摘要翻译: 在传统的事务锁定系统中,例如使用读写锁定(TLRW)的事务锁定,线程可能会频繁更新锁元数据,从而导致系统性能下降。 用于使用读取器列表(TLRL)实现事务锁定的系统和方法可将相应的读取器列表与共享存储器系统中的每条数据条相关联。 在作为事务的一部分读取给定的条带之前,线程可能会将自身添加到条带的读取器列表中,如果该线程尚未在读取器列表中。 完成交易后,线程可能会在读取器列表上留下。 在线程修改条带之前,修改线程可以获取条带的写锁定。 作者线程可能会在条形码读取器列表上向每个读取器线程指示如果读取器线程正在执行事务,则读取器线程应该中止。 该指示可以包括设置读取器的无效标志。 作者线程可以清除其修改的条带的阅读器列表。