Scalable reader-writer lock
    1.
    发明授权
    Scalable reader-writer lock 有权
    可扩展读写器锁

    公开(公告)号:US08504540B2

    公开(公告)日:2013-08-06

    申请号:US12406890

    申请日:2009-03-18

    IPC分类号: G06F17/30

    CPC分类号: G06F9/52

    摘要: A reader-writer lock is provided that scales to accommodate multiple readers without contention. The lock comprises a hierarchical C-SNZI (Conditioned Scalable Non-Zero Indicator) structure that scales with the number readers seeking simultaneous acquisition of the lock. All readers that have joined the C-SNZI structure share concurrent acquisition, and additional readers may continue to join until the structure is disabled. The lock may be disabled by a writer, at which time subsequent readers will wait (e.g., in a wait queue) until the lock is again available. The C-SNZI structure may be implemented in a lockword or in reader entries within a wait queue. If implemented in reader entries of a wait queue, the lockword may be omitted, and new readers arriving at the queue may be able join an existing reader entry even if the reader entry is not at the tail of the queue.

    摘要翻译: 提供了读写器锁,可以扩展以适应多个读卡器而无需争用。 该锁包括分级C-SNZI(条件可扩展非零指示符)结构,其数字读取器寻求同时获取锁定。 加入C-SNZI结构的所有读者都会共享并购,另外读者也可以继续加入,直到结构被禁用。 锁可以被写入器禁用,随后的读取器将等待(例如,在等待队列中),直到锁再次可用。 C-SNZI结构可以以锁字或者在等待队列内的读取器条目中实现。 如果在等待队列的读取器条目中实现,则可以省略锁字,并且即使读取器条目不在队列的尾部,到达队列的新读取器也可以加入现有的读取器条目。

    Parallel nested transactions
    2.
    发明授权
    Parallel nested transactions 有权
    并行嵌套事务

    公开(公告)号:US08473950B2

    公开(公告)日:2013-06-25

    申请号:US12490287

    申请日:2009-06-23

    IPC分类号: G06F9/46 G06F17/00

    CPC分类号: G06F9/466

    摘要: A system for managing transactions, including a first reference cell associated with a starting value for a first variable, a first thread having an outer atomic transaction including a first instruction to write a first value to the first variable, a second thread, executing in parallel with the first thread, having an inner atomic transaction including a second instruction to write a second value to the first variable, where the inner atomic transaction is nested within the outer atomic transaction, a first value node created by the outer atomic transaction and storing the first value in response to execution of the first instruction, and a second value node created by the inner atomic transaction, storing the second value in response to execution of the second instruction, and having a previous node pointer referencing the first value node.

    摘要翻译: 一种用于管理事务的系统,包括与第一变量的起始值相关联的第一参考单元,具有包含向第一变量写入第一值的第一指令的外部原子事务的第一线程,并行执行的第二线程 具有第一线程,具有包含向第一变量写入第二值的第二指令的内部原子事务,其中内部原子事务嵌套在外部原子事务内,由外部原子事务创建的第一个值节点并存储 响应于第一指令的执行的第一值和由内部原子事务创建的第二值节点,响应于第二指令的执行存储第二值,并且具有引用第一值节点的先前节点指针。

    Obstruction-free synchronization for shared data structures
    3.
    发明授权
    Obstruction-free synchronization for shared data structures 有权
    共享数据结构无障碍同步

    公开(公告)号:US08244990B2

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

    申请号:US10620748

    申请日:2003-07-16

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

    摘要: We introduce obstruction-freedom—a new non-blocking condition for shared data structures that weakens the progress requirements of traditional nonblocking conditions, and as a result admits solutions that are significantly simpler and more efficient in the typical case of low contention. We demonstrate the merits of obstruction-freedom by showing how to implement an obstruction-free double-ended queue that has better properties than any previous nonblocking deque implementation of which we are aware. The beauty of obstruction-freedom is that we can modify and experiment with the contention management mechanisms without needing to modify (and therefore reverify) the underlying non-blocking algorithm. In contrast, work on different mechanisms for guaranteeing progress in the context of lock-free and wait-free algorithms has been hampered by the fact that modifications to the “helping” mechanisms has generally required the proofs for the entire algorithm to be done again.

    摘要翻译: 我们引入阻碍自由 - 一种新的非阻塞条件,用于共享数据结构,从而削弱传统非阻塞条件的进度要求,从而承认在低竞争的典型情况下,解决方案显着简化和更有效率。 我们通过展示如何实现无阻塞的双端口队列,证明阻塞自由的优点,该队列具有比以前任何我们所知道的任何以前的非阻塞deque实现更好的性能。 阻碍自由的优点在于,我们可以修改和尝试竞争管理机制,而无需修改(并因此重新验证)底层的非阻塞算法。 相比之下,在“无障碍和无等待”算法的上下文中保证进度的不同机制的工作受到以下事实的阻碍:对“帮助”机制的修改通常需要再次完成整个算法的证明。

    Software transactional memory for dynamically sizable shared data structures
    4.
    发明授权
    Software transactional memory for dynamically sizable shared data structures 有权
    用于动态大小的共享数据结构的软件事务内存

    公开(公告)号:US08176264B2

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

    申请号:US13030992

    申请日:2011-02-18

    IPC分类号: G06F12/00

    摘要: We propose a new form of software transactional memory (STM) designed to support dynamic-sized data structures, and we describe a novel non-blocking implementation. The non-blocking property we consider is obstruction-freedom. Obstruction-freedom is weaker than lock-freedom; as a result, it admits substantially simpler and more efficient implementations. An interesting feature of our obstruction-free STM implementation is its ability to use of modular contention managers to ensure progress in practice.

    摘要翻译: 我们提出了一种旨在支持动态大小的数据结构的新形式的软件事务内存(STM),并且我们描述了一种新的非阻塞实现。 我们认为的非阻塞性是阻碍自由。 障碍自由弱于锁定自由; 因此,它承认基本上更简单和更有效的实现。 我们无障碍STM实施的一个有趣的特征是其使用模块化竞争管理人员确保实践进度的能力。

    Synchronized objects for software transactional memory
    5.
    发明授权
    Synchronized objects for software transactional memory 有权
    用于软件事务内存的同步对象

    公开(公告)号:US07720891B2

    公开(公告)日:2010-05-18

    申请号:US11353478

    申请日:2006-02-14

    IPC分类号: G06F12/00

    CPC分类号: G06F17/30351

    摘要: A system for implementing synchronized objects for software transactional memory may include one or more processors and a memory storing program instructions executable by the processor to implement a transactional-memory manager configured to coordinate memory access requests directed at the memory from a plurality of transactions. The transactional-memory manager records, within a collaborator record for a shared data object in the memory, identifications of a set of two or more transactions that have requested synchronization on the object. In response to a commit request from a given transaction of the set, the transactional-memory manager determines whether to commit or abort the given transaction based at least in part on the transactional states of other transactions in the set, examining the collaborator record to identify the other transactions.

    摘要翻译: 用于实现软件事务存储器的同步对象的系统可以包括一个或多个处理器和存储器,其存储可由处理器执行的程序指令,以实现事务存储器管理器,其经配置以从多个事务处理定向存储器的存储器访问请求。 事务内存管理器在存储器内的共享数据对象的协作者记录内记录已经请求在对象上同步的一组两个或多个事务的标识。 响应于来自集合的给定事务的提交请求,事务内存管理器至少部分地基于集合中的其他事务的事务状态来确定是否提交或中止给定的事务,检查协作者记录以识别 其他交易。

    Practical implementation of arbitrary-sized LL/SC variables
    6.
    发明授权
    Practical implementation of arbitrary-sized LL/SC variables 有权
    实际执行任意大小的LL / SC变量

    公开(公告)号:US07680986B1

    公开(公告)日:2010-03-16

    申请号:US11026849

    申请日:2004-12-30

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

    CPC分类号: G06F9/52

    摘要: Many conventional lock-free data structures exploit techniques that are possible only because state-of-the-art 64-bit processors are still running 32-bit operating systems and applications. As software catches up to hardware, “64-bit-clean” lock-free data structures, which cannot use such techniques, are needed. We present several 64-bit-clean lock-free implementations: including load-linked/store conditional variables of arbitrary size, a FIFO queue, and a freelist. In addition to being portable to 64-bit software (or more generally full-architectural-width pointer operations), our implementations also improve on existing techniques in that they are (or can be) space-adaptive and do not require a priori knowledge of the number of threads that will access them.

    摘要翻译: 许多传统的无锁数据结构利用了仅仅因为最先进的64位处理器仍在运行32位操作系统和应用程序而可能的技术。 随着软件的升级,硬件需要“64位清理”的无锁数据结构,不能使用这种技术。 我们提出了几个64位无干扰的无锁实现:包括任意大小的加载链接/存储条件变量,FIFO队列和freelist。 除了可移植到64位软件(或更通常的全架构宽度指针操作)之外,我们的实现还改进了现有技术,因为它们(或可以)是空间自适应的,并且不需要先验知识 将访问它们的线程数。

    Method and apparatus for dimensional analysis encoded in metatypes and generics
    7.
    发明授权
    Method and apparatus for dimensional analysis encoded in metatypes and generics 有权
    以元模式和仿制药编码的尺寸分析方法和装置

    公开(公告)号:US07530051B1

    公开(公告)日:2009-05-05

    申请号:US11034636

    申请日:2005-01-13

    IPC分类号: G06F9/44 G06F9/45

    CPC分类号: G06F8/10 G06F8/24 G06F8/437

    摘要: In general, in one aspect, the invention relates to a method for integrating dimensional analysis in a program comprising defining a specific dimension class within the program, wherein the specific dimension class is an instance of the dimension meta-class, defining an instantiation of a unit class within the program, wherein the instantiation of the unit class comprises the specific dimension class as a type parameter associated with the instantiation of the unit class, defining a method within the program using the instantiation of the unit class and the specific dimension class, and compiling the program to generate an executable code corresponding to the program, wherein the program is written in an object-oriented language.

    摘要翻译: 一般来说,一方面,本发明涉及一种用于在程序中整合维度分析的方法,包括在程序内定义特定维度类别,其中特定维度类是维度元类的实例,定义一个 单元类的实例化,其中单元类的实例化将特定维类作为与单元类的实例相关联的类型参数,使用单元类和特定尺寸类的实例来定义程序中的方法, 以及编译所述程序以生成与所述程序相对应的可执行代码,其中所述程序以面向对象语言编写。

    Ensuring progress in a system that supports execution of obstruction-free operations
    8.
    发明授权
    Ensuring progress in a system that supports execution of obstruction-free operations 有权
    确保在支持执行无障碍操作的系统中取得进展

    公开(公告)号:US07475228B2

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

    申请号:US11325062

    申请日:2006-01-03

    IPC分类号: G06F9/52

    CPC分类号: G06F9/52

    摘要: One embodiment of the present invention provides a system that ensures that progress is made in an environment that supports execution of obstruction-free operations. During execution, when a process pi invokes an operation, the system checks a panic flag, which indicates whether a progress-ensuring mechanism is to be activated. If the panic flag is set, the progress-ensuring mechanism is activated, which causes the system to attempt to perform the operation by coordinating actions between processes to ensure that progress is made in spite of contention between the processes. On the other hand, if the panic flag is not set, the system attempts to perform the operation essentially as if the progress-ensuring mechanism were not present. In this case, if there is an indication that contention between processes is impeding progress, the system sets the panic flag, which causes the progress-ensuring mechanism to be activated so that processes will coordinate their actions to ensure that progress is made.

    摘要翻译: 本发明的一个实施例提供一种确保在支持执行无障碍操作的环境中进行的系统。 在执行期间,当进程pi调用操作时,系统检查一个紧急标志,指示是否激活进度保证机制。 如果设置了恐慌标志,则会启动进度保证机制,从而使系统尝试通过协调进程之间的动作来尝试执行操作,以确保进程尽可能在进程之间发生争用。 另一方面,如果不设置紧急状态标志,则系统试图执行操作,基本上就像进度保证机制不存在一样。 在这种情况下,如果存在进程之间的争用妨碍进展的指示,则系统设置紧急标志,这导致进程确保机制被激活,以便进程将协调其动作以确保进行进展。

    Space- and time-adaptive nonblocking algorithms
    9.
    发明授权
    Space- and time-adaptive nonblocking algorithms 有权
    空间和时间自适应非阻塞算法

    公开(公告)号:US07395274B2

    公开(公告)日:2008-07-01

    申请号:US10621078

    申请日:2003-07-16

    IPC分类号: G06F9/54

    摘要: We explore techniques for designing nonblocking algorithms that do not require advance knowledge of the number of processes that participate, whose time complexity and space consumption both adapt to various measures, rather than being based on predefined worst-case scenarios, and that cannot be prevented from future memory reclamation by process failures. These techniques can be implemented using widely available hardware synchronization primitives. We present our techniques in the context of solutions to the well-known Collect problem. We also explain how our techniques can be exploited to achieve other results with similar properties; these include long-lived renaming and dynamic memory management for nonblocking data structures.

    摘要翻译: 我们探索设计非阻塞算法的技术,这些算法不需要提前了解参与的进程数量,其时间复杂度和空间消耗都适应各种测量,而不是基于预定义的最坏情况,并且不能防止 未来内存回收过程失败。 可以使用广泛可用的硬件同步原语来实现这些技术。 我们在众所周知的收集问题的解决方案的背景下介绍我们的技术。 我们还解释了如何利用我们的技术来实现具有相似属性的其他结果; 这些包括用于非阻塞数据结构的长期重命名和动态内存管理。

    Synchronization between concurrent notifier and waiter transactions using transaction condition variables
    10.
    发明授权
    Synchronization between concurrent notifier and waiter transactions using transaction condition variables 有权
    使用事务条件变量同步通知器和服务员事务之间的同步

    公开(公告)号:US09430275B2

    公开(公告)日:2016-08-30

    申请号:US13170026

    申请日:2011-06-27

    IPC分类号: G06F9/455 G06F9/46

    CPC分类号: G06F9/467

    摘要: Transactional memory implementations may be extended to support transaction communicators and/or transaction condition variables for which transaction isolation is relaxed, and through which concurrent transactions can communicate and be synchronized with each other. Transactional accesses to these objects may not be isolated unless called within communicator-isolating transactions. A waiter transaction may invoke a wait method of a transaction condition variable, be added to a wait list for the variable, and be suspended pending notification of a notification event from a notify method of the variable. A notifier transaction may invoke a notify method of the variable, which may remove the waiter from the wait list, schedule the waiter transaction for resumed execution, and notify the waiter of the notification event. A waiter transaction may commit only if the corresponding notifier transaction commits. If the waiter transaction aborts, the notification may be forwarded to another waiter.

    摘要翻译: 事务性存储器实现可以被扩展以支持事务隔离被放宽的事务通信器和/或事务条件变量,以及通过哪些并发事务可以彼此通信和同步。 对这些对象的事务访问可能不被隔离,除非在通信器隔离事务中被调用。 服务员事务可以调用事务条件变量的等待方法,被添加到变量的等待列表中,并且从变量的通知方法通知一个通知事件。 通知器事务可以调用变量的通知方法,该方法可以从等待列表中移除服务员,安排服务员事务以恢复执行,并通知服务员通知事件。 只有当相应的通知程序事务提交时,服务员事务才可能执行。 如果服务员事务中止,通知可以转发给另一个服务员。