Read Concurrency using Hardware Transactional Lock Elision
    31.
    发明申请
    Read Concurrency using Hardware Transactional Lock Elision 审中-公开
    使用硬件事务锁Elision读取并发

    公开(公告)号:US20160246527A1

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

    申请号:US15050396

    申请日:2016-02-22

    Abstract: Threads using hardware transactions and executing instrumented critical sections that do not perform any writes may complete as long as the thread holding the lock has not yet executed its first write operation. If the thread executing the instrumented critical section performs any writes, or if the thread holding the lock performs any writes during its critical section, the hardware transaction may be aborted. A write flag may be used to determine whether the thread holding the lock performs any writes. The thread holding the lock may set the flag before performing any write operation. The thread executing the hardware transaction may subscribe to that flag and abort the transaction if the flag is set to true, indicating that the thread holding the lock performed a write operation.

    Abstract translation: 只要持有锁的线程尚未执行其第一次写入操作,使用硬件事务和执行不执行任何写入的仪表化关键部分的线程就可以完成。 如果执行检测的关键部分的线程执行任何写入,或者如果持有锁的线程在其关键部分期间执行任何写操作,则可能会中止硬件事务。 可以使用写标志来确定持有锁的线程是否执行任何写入。 持有锁的线程可以在执行任何写操作之前设置该标志。 执行硬件事务的线程可以订阅该标志,并且如果标志被设置为真,则中止该事务,指示保持锁定的线程执行写入操作。

    Compact Synchronization in Managed Runtimes
    32.
    发明公开

    公开(公告)号:US20240338259A1

    公开(公告)日:2024-10-10

    申请号:US18747956

    申请日:2024-06-19

    CPC classification number: G06F9/526 G06F9/30087 G06F9/5016 G06F9/541 G06F9/542

    Abstract: A computer including multiple processors and memory implements a managed runtime providing a synchronization application programming interface (API) for threads that perform synchronized accesses to shared objects. A standardized header of objects includes a memory word storing an object identifier. To lock the object for synchronized access, the memory word may be converted to store the tail of a linked list of a first-in-first-out synchronization structures for threads waiting to acquire the lock, with the object identifier relocated to the list structure. The list structure may further include a stack of threads waiting on events related to the object, with the synchronization API additionally providing wait, notify and related synchronization operations. Upon determining that no threads hold or desire to hold the lock for the object and that no threads are waiting on events related to the object, the memory word may be restored to contain the object identifier.

    Ticket Locks with Enhanced Waiting
    33.
    发明公开

    公开(公告)号:US20240160447A1

    公开(公告)日:2024-05-16

    申请号:US18418980

    申请日:2024-01-22

    Abstract: A computer comprising one or more processors and memory may implement multiple threads that perform a lock operation using a data structure comprising an allocation field and a grant field. Upon entry to a lock operation, a thread allocates a ticket by atomically copying a ticket value contained in the allocation field and incrementing the allocation field. The thread compares the allocated ticket to the grant field. If they are unequal, the thread determines a number of waiting threads. If the number is above the threshold, the thread enters a long term wait operation comprising determining a location for long term wait value and waiting on changes to that value. If the number is below the threshold or the long term wait operation is complete, the thread waits for the grant value to equal the ticket to indicate that the lock is allocated.

    Ticket locks with enhanced waiting
    34.
    发明授权

    公开(公告)号:US11914996B2

    公开(公告)日:2024-02-27

    申请号:US17817854

    申请日:2022-08-05

    Abstract: A computer comprising one or more processors and memory may implement multiple threads that perform a lock operation using a data structure comprising an allocation field and a grant field. Upon entry to a lock operation, a thread allocates a ticket by atomically copying a ticket value contained in the allocation field and incrementing the allocation field. The thread compares the allocated ticket to the grant field. If they are unequal, the thread determines a number of waiting threads. If the number is above the threshold, the thread enters a long term wait operation comprising determining a location for long term wait value and waiting on changes to that value. If the number is below the threshold or the long term wait operation is complete, the thread waits for the grant value to equal the ticket to indicate that the lock is allocated.

    Systems and methods for safely subscribing to locks using hardware extensions

    公开(公告)号:US11809917B2

    公开(公告)日:2023-11-07

    申请号:US16723766

    申请日:2019-12-20

    CPC classification number: G06F9/526 G06F9/30087 G06F9/3851 G06F9/467

    Abstract: Transactional Lock Elision allows hardware transactions to execute unmodified critical sections protected by the same lock concurrently, by subscribing to the lock and verifying that it is available before committing the transaction. A “lazy subscription” optimization, which delays lock subscription, can potentially cause behavior that cannot occur when the critical sections are executed under the lock. Hardware extensions may provide mechanisms to ensure that lazy subscriptions are safe (e.g., that they result in correct behavior). Prior to executing a critical section transactionally, its lock and subscription code may be identified (e.g., by writing their locations to special registers). Prior to committing the transaction, the thread executing the critical section may verify that the correct lock was correctly subscribed to. If not, or if locations identified by the special registers have been modified, the transaction may be aborted. Nested critical sections associated with different lock types may invoke different subscription code.

    Generic concurrency restriction
    36.
    发明授权

    公开(公告)号:US11726838B2

    公开(公告)日:2023-08-15

    申请号:US17547505

    申请日:2021-12-10

    CPC classification number: G06F9/52 G06F9/5022 G06F9/524

    Abstract: Generic Concurrency Restriction (GCR) may divide a set of threads waiting to acquire a lock into two sets: an active set currently able to contend for the lock, and a passive set waiting for an opportunity to join the active set and contend for the lock. The number of threads in the active set may be limited to a predefined maximum or even a single thread. Generic Concurrency Restriction may be implemented as a wrapper around an existing lock implementation. Generic Concurrency Restriction may, in some embodiments, be unfair (e.g., to some threads) over the short term, but may improve the overall throughput of the underlying multithreaded application via passivation of a portion of the waiting threads.

    Scalable range locks
    37.
    发明授权

    公开(公告)号:US11636152B2

    公开(公告)日:2023-04-25

    申请号:US16407007

    申请日:2019-05-08

    Abstract: A computer comprising one or more processors and memory may implement multiple threads performing mutually exclusive lock acquisition operations on disjoint ranges of a shared resource each using atomic compare and swap (CAS) operations. A linked list of currently locked ranges is maintained and, upon entry to a lock acquisition operation, a thread waits for all locked ranges overlapping the desired range to be released then inserts a descriptor for the desired range into the linked list using a single CAS operation. To release a locked range, a thread executes a single fetch and add (FAA) operation. The operation may be extended to support simultaneous exclusive and non-exclusive access by allowing overlapping ranges to be locked for non-exclusive access and by performing an additional validation after locking to provide conflict resolution should a conflict be detected.

    Persistent Multi-Word Compare-and-Swap

    公开(公告)号:US20220229691A1

    公开(公告)日:2022-07-21

    申请号:US17715812

    申请日:2022-04-07

    Abstract: A computer system including one or more processors and persistent, word-addressable memory implements a persistent atomic multi-word compare-and-swap operation. On entry, a list of persistent memory locations of words to be updated, respective expected current values contained the persistent memory locations and respective new values to write to the persistent memory locations are provided. The operation atomically performs the process of comparing the existing contents of the persistent memory locations to the respective current values and, should they match, updating the persistent memory locations with the new values and returning a successful status. Should any of the contents of the persistent memory locations not match a respective current value, the operation returns a failed status. The operation is performed such that the system can recover from any failure or interruption by restoring the list of persistent memory locations.

    Compact Synchronization in Managed Runtimes

    公开(公告)号:US20220138022A1

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

    申请号:US17245820

    申请日:2021-04-30

    Abstract: A computer including multiple processors and memory implements a managed runtime providing a synchronization application programming interface (API) for threads that perform synchronized accesses to shared objects. A standardized header of objects includes a memory word storing an object identifier. To lock the object for synchronized access, the memory word may be converted to store the tail of a linked list of a first-in-first-out synchronization structures for threads waiting to acquire the lock, with the object identifier relocated to the list structure. The list structure may further include a stack of threads waiting on events related to the object, with the synchronization API additionally providing wait, notify and related synchronization operations. Upon determining that no threads hold or desire to hold the lock for the object and that no threads are waiting on events related to the object, the memory word may be restored to contain the object identifier.

Patent Agency Ranking