Method and system for hardware feedback in transactional memory
    71.
    发明授权
    Method and system for hardware feedback in transactional memory 有权
    事务性存储器中硬件反馈的方法和系统

    公开(公告)号:US08776063B2

    公开(公告)日:2014-07-08

    申请号:US12324109

    申请日:2008-11-26

    Abstract: Multi-threaded, transactional memory systems may allow concurrent execution of critical sections as speculative transactions. These transactions may abort due to contention among threads. Hardware feedback mechanisms may detect information about aborts and provide that information to software, hardware, or hybrid software/hardware contention management mechanisms. For example, they may detect occurrences of transactional aborts or conditions that may result in transactional aborts, and may update local readable registers or other storage entities (e.g., performance counters) with relevant contention information. This information may include identifying data (e.g., information outlining abort relationships between the processor and other specific physical or logical processors) and/or tallied data (e.g., values of event counters reflecting the number of aborted attempts by the current thread or the resources consumed by those attempts). This contention information may be accessible by contention management mechanisms to inform contention management decisions (e.g. whether to revert transactions to mutual exclusion, delay retries, etc.).

    Abstract translation: 多线程事务内存系统可允许将关键部分作为投机事务并发执行。 这些事务可能由于线程之间的争用而中止。 硬件反馈机制可以检测关于中止的信息,并将该信息提供给软件,硬件或混合软件/硬件争用管理机制。 例如,它们可以检测可能导致事务中止的事务中止或条件的发生,并且可以用相关争用信息来更新本地可读寄存器或其他存储实体(例如,性能计数器)。 该信息可以包括识别数据(例如,概述处理器与其他特定物理或逻辑处理器之间的中止关系的信息)和/或计数数据(例如,反映当前线程的中止尝试次数或消耗的资源的事件计数器的值 通过这些尝试)。 该争用信息可以通过争用管理机制来访问,以通知争用管理决策(例如,是否将交易恢复为互斥,延迟重试等)。

    Lock-clustering compilation for software transactional memory
    72.
    发明授权
    Lock-clustering compilation for software transactional memory 有权
    软件事务内存的锁聚类编译

    公开(公告)号:US08677331B2

    公开(公告)日:2014-03-18

    申请号:US13250369

    申请日:2011-09-30

    CPC classification number: G06F9/467 G06F8/443 G06F8/457 G06F9/526

    Abstract: A lock-clustering compiler is configured to compile program code for a software transactional memory system. The compiler determines that a group of data structures are accessed together within one or more atomic memory transactions defined in the program code. In response to determining that the group is accessed together, the compiler creates an executable version of the program code that includes clustering code, which is executable to associate the data structures of the group with the same software transactional memory lock. The lock is usable by the software transactional memory system to coordinate concurrent transactional access to the group of data structures by multiple concurrent threads.

    Abstract translation: 锁集群编译器被配置为编译软件事务存储器系统的程序代码。 编译器确定一组数据结构在程序代码中定义的一个或多个原子存储器事务中被一起访问。 响应于确定组被一起访问,编译器创建包括可以将该组的数据结构与相同的软件事务存储器锁相关联的聚类代码的程序代码的可执行版本。 该锁可由软件事务内存系统使用,以通过多个并发线程协调对数据结构组的并发事务访问。

    System and Method for NUMA-Aware Locking Using Lock Cohorts
    73.
    发明申请
    System and Method for NUMA-Aware Locking Using Lock Cohorts 有权
    使用锁定队列进行NUMA感知锁定的系统和方法

    公开(公告)号:US20130290583A1

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

    申请号:US13458871

    申请日:2012-04-27

    CPC classification number: G06F9/526

    Abstract: The system and methods described herein may be used to implement NUMA-aware locks that employ lock cohorting. These lock cohorting techniques may reduce the rate of lock migration by relaxing the order in which the lock schedules the execution of critical code sections by various threads, allowing lock ownership to remain resident on a single NUMA node longer than under strict FIFO ordering, thus reducing coherence traffic and improving aggregate performance. A NUMA-aware cohort lock may include a global shared lock that is thread-oblivious, and multiple node-level locks that provide cohort detection. The lock may be constructed from non-NUMA-aware components (e.g., spin-locks or queue locks) that are modified to provide thread-obliviousness and/or cohort detection. Lock ownership may be passed from one thread that holds the lock to another thread executing on the same NUMA node without releasing the global shared lock.

    Abstract translation: 本文描述的系统和方法可以用于实现采用锁定队列的NUMA感知锁。 这些锁定队列技术可以通过放松锁定通过各种线程调度关键代码段的执行顺序来降低锁定迁移速率,从而允许锁定所有权保持驻留在单个NUMA节点上比在严格FIFO排序之前更长时间,从而减少 一致性流量和提高总体性能。 NUMA感知的群组锁可能包括线程忽略的全局共享锁和提供队列检测的多个节点级锁。 锁可以由修改为提供线程忽略性和/或队列检测的非NUMA感知组件(例如,旋转锁或队列锁)构建。 锁定所有权可以从保存锁的一个线程传递到在同一NUMA节点上执行的另一个线程,而不会释放全局共享锁。

    System and method for performing incremental register checkpointing in transactional memory
    74.
    发明授权
    System and method for performing incremental register checkpointing in transactional memory 有权
    用于在事务性存储器中执行增量寄存器检查点的系统和方法

    公开(公告)号:US08560816B2

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

    申请号:US12827842

    申请日:2010-06-30

    CPC classification number: G06F9/3863 G06F9/3834 G06F9/3859

    Abstract: Systems and methods described herein for performing incremental register checkpointing may employ a special register to indicate which registers have already been checkpointed. This register may include one bit per register. These systems may also include a special pointer register whose value identifies a location in user memory or in dedicated on-chip storage at which a copy of a register's value should be saved by a checkpointing operation. Only registers modified during speculative execution or execution of a transaction may be checkpointed (e.g., when register modifying instructions are encountered) and subsequently restored (e.g., due to misspeculation or transaction abort), rather than all of the registers of the processor. Each register may be checkpointed at most once for a given speculative episode or atomic transaction. Setting a bit in the special register may prevent checkpointing of the corresponding register. Setting all of the bits in the special register may disable checkpointing.

    Abstract translation: 本文描述的用于执行增量寄存器检查点的系统和方法可以使用特殊寄存器来指示哪些寄存器已经被检查点。 该寄存器可以包括每个寄存器一位。 这些系统还可以包括特殊的指针寄存器,其特征指针寄存器的值标识用户存储器中的位置或专用片上存储器,通过检查点操作应该保存寄存器值的副本。 只有在推测性执行或执行交易期间修改的寄存器可以是检查点(例如,当遇到寄存器修改指令时)并且随后恢复(例如,由于错误设置或事务中止)而不是处理器的所有寄存器。 对于给定的投机事件或原子事务,每个寄存器最多可以被检查点一次。 在特殊寄存器中设置一位可能会阻止相应寄存器的检查点。 设置特殊寄存器中的所有位可能会禁用检查点。

    System and method for utilizing available best effort hardware mechanisms for supporting transactional memory
    75.
    发明授权
    System and method for utilizing available best effort hardware mechanisms for supporting transactional memory 有权
    利用可用的最有效的硬件机制来支持事务性存储器的系统和方法

    公开(公告)号:US08533663B2

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

    申请号:US12250409

    申请日:2008-10-13

    CPC classification number: G06F9/466

    Abstract: Systems and methods for managing divergence of best effort transactional support mechanisms in various transactional memory implementations using a portable transaction interface are described. This interface may be implemented by various combinations of best effort hardware features, including none at all. Because the features offered by this interface may be best effort, a default (e.g., software) implementation may always be possible without the need for special hardware support. Software may be written to the interface, and may be executable on a variety of platforms, taking advantage of best effort hardware features included on each one, while not depending on any particular mechanism. Multiple implementations of each operation defined by the interface may be included in one or more portable transaction interface libraries. Systems and/or application software may be written as platform-independent and/or portable, and may call functions of these libraries to implement the operations for a targeted execution environment.

    Abstract translation: 描述了使用便携式事务接口来管理各种事务存储器实现中的尽力而为事务支持机制的分歧的系统和方法。 该接口可以通过尽力而为的硬件特征的各种组合来实现,包括根本没有。 由于此接口提供的功能可能是最大的努力,默认(例如,软件)实现可能始终是可能的,而不需要特殊的硬件支持。 可以将软件写入接口,并且可以在各种平台上执行,利用包括在每个平台上的尽力而为的硬件特征,而不依赖于任何特定的机制。 由接口定义的每个操作的多个实现可以包括在一个或多个便携式事务接口库中。 系统和/或应用软件可以被写为独立于平台的和/或可移植的,并且可以调用这些库的功能来实现针对性的执行环境的操作。

    Lock-Clustering Compilation for Software Transactional Memory
    76.
    发明申请
    Lock-Clustering Compilation for Software Transactional Memory 有权
    软件事务内存锁集群编译

    公开(公告)号:US20130086348A1

    公开(公告)日:2013-04-04

    申请号:US13250369

    申请日:2011-09-30

    CPC classification number: G06F9/467 G06F8/443 G06F8/457 G06F9/526

    Abstract: A lock-clustering compiler is configured to compile program code for a software transactional memory system. The compiler determines that a group of data structures are accessed together within one or more atomic memory transactions defined in the program code. In response to determining that the group is accessed together, the compiler creates an executable version of the program code that includes clustering code, which is executable to associate the data structures of the group with the same software transactional memory lock. The lock is usable by the software transactional memory system to coordinate concurrent transactional access to the group of data structures by multiple concurrent threads.

    Abstract translation: 锁集群编译器被配置为编译软件事务存储器系统的程序代码。 编译器确定一组数据结构在程序代码中定义的一个或多个原子存储器事务中被一起访问。 响应于确定组被一起访问,编译器创建包括可以将该组的数据结构与相同的软件事务存储器锁相关联的聚类代码的程序代码的可执行版本。 该锁可由软件事务内存系统使用,以通过多个并发线程协调对数据结构组的并发事务访问。

    Multi-Lane Concurrent Bag for Facilitating Inter-Thread Communication
    77.
    发明申请
    Multi-Lane Concurrent Bag for Facilitating Inter-Thread Communication 有权
    多通道并行袋,促进线程间通信

    公开(公告)号:US20130081061A1

    公开(公告)日:2013-03-28

    申请号:US13241015

    申请日:2011-09-22

    Abstract: A method, system, and medium are disclosed for facilitating communication between multiple concurrent threads of execution using a multi-lane concurrent bag. The bag comprises a plurality of independently-accessible concurrent intermediaries (lanes) that are each configured to store data elements. The bag provides an insert function executable to insert a given data element into the bag by selecting one of the intermediaries and inserting the data element into the selected intermediary. The bag also provides a consume function executable to consume a data element from the bag by choosing one of the intermediaries and consuming (removing and returning) a data element stored in the chosen intermediary. The bag guarantees that execution of the consume function consumes a data element if the bag is non-empty and permits multiple threads to execute the insert or consume functions concurrently.

    Abstract translation: 公开了一种方法,系统和介质,用于促进使用多通道并行包的多个并行执行线程之间的通信。 袋子包括多个独立可访问的并行中间件(通道),其被配置为存储数据元素。 该袋提供插入功能可执行以通过选择一个中间体并将数据元素插入所选择的中间体来将给定的数据元素插入袋中。 该袋还提供消耗功能,可通过选择一个中间体并消耗(去除和返回)存储在所选择的中间体中的数据元素来从袋中消耗数据元素。 该包保证消费功能的执行消耗数据元素,如果包不是空的,并允许多个线程同时执行插入或者消费功能。

    System and Method for Optimizing a Code Section by Forcing a Code Section to be Executed Atomically
    78.
    发明申请
    System and Method for Optimizing a Code Section by Forcing a Code Section to be Executed Atomically 有权
    通过强制代码部分原子执行来优化代码段的系统和方法

    公开(公告)号:US20120254846A1

    公开(公告)日:2012-10-04

    申请号:US13077793

    申请日:2011-03-31

    CPC classification number: G06F9/467 G06F8/443 G06F9/30087 G06F12/0261

    Abstract: Systems and methods for optimizing code may use transactional memory to optimize one code section by forcing another code section to execute atomically. Application source code may be analyzed to identify instructions in one code section that only need to be executed if there exists the possibility that another code section (e.g., a critical section) could be partially executed or that its results could be affected by interference. In response to identifying such instructions, alternate code may be generated that forces the critical section to be executed as an atomic transaction, e.g., using best-effort hardware transactional memory. This alternate code may replace the original code or may be included in an alternate execution path that can be conditionally selected for execution at runtime. The alternate code may elide the identified instructions (which are rendered unnecessary by the transaction) by removing them, or by including them in the alternate execution path.

    Abstract translation: 用于优化代码的系统和方法可以使用事务存储器来通过强制另一个代码部分以原子方式执行来优化一个代码段。 可以分析应用源代码以识别一个代码部分中的指令,其仅在存在可以部分地执行另一代码部分(例如,关键部分)或其结果可能受到干扰的影响的情况下才需要执行。 响应于识别这样的指令,可以生成迫使关键部分作为原子事务执行的替代代码,例如使用尽力而为的硬件事务存储器。 该替代代码可以替换原始代码,或者可以被包括在可以有选择地在运行时执行的备用执行路径中。 替代代码可以通过删除它们或者将它们包括在备用执行路径中来去除所识别的指令(由事务变得不必要)。

    System and Method for Performing Incremental Register Checkpointing in Transactional Memory
    79.
    发明申请
    System and Method for Performing Incremental Register Checkpointing in Transactional Memory 有权
    在事务性存储器中执行增量寄存器检查点的系统和方法

    公开(公告)号:US20120005461A1

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

    申请号:US12827842

    申请日:2010-06-30

    CPC classification number: G06F9/3863 G06F9/3834 G06F9/3859

    Abstract: Systems and methods described herein for performing incremental register checkpointing may employ a special register to indicate which registers have already been checkpointed. This register may include one bit per register. These systems may also include a special pointer register whose value identifies a location in user memory or in dedicated on-chip storage at which a copy of a register's value should be saved by a checkpointing operation. Only registers modified during speculative execution or execution of a transaction may be checkpointed (e.g., when register modifying instructions are encountered) and subsequently restored (e.g., due to misspeculation or transaction abort), rather than all of the registers of the processor. Each register may be checkpointed at most once for a given speculative episode or atomic transaction. Setting a bit in the special register may prevent checkpointing of the corresponding register. Setting all of the bits in the special register may disable checkpointing.

    Abstract translation: 本文描述的用于执行增量寄存器检查点的系统和方法可以使用特殊寄存器来指示哪些寄存器已经被检查点。 该寄存器可以包括每个寄存器一位。 这些系统还可以包括特殊的指针寄存器,其特征指针寄存器的值标识用户存储器中的位置或专用片上存储器,通过检查点操作应该保存寄存器值的副本。 只有在推测性执行或执行交易期间修改的寄存器可以是检查点(例如,当遇到寄存器修改指令时)并且随后恢复(例如,由于错误设置或事务中止)而不是处理器的所有寄存器。 对于给定的投机事件或原子事务,每个寄存器最多可以被检查点一次。 在特殊寄存器中设置一位可能会阻止相应寄存器的检查点。 设置特殊寄存器中的所有位可能会禁用检查点。

    Techniques for providing improved affinity scheduling in a multiprocessor computer system
    80.
    发明授权
    Techniques for providing improved affinity scheduling in a multiprocessor computer system 有权
    在多处理器计算机系统中提供改进的关联调度的技术

    公开(公告)号:US08051418B1

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

    申请号:US11084951

    申请日:2005-03-21

    Applicant: David Dice

    Inventor: David Dice

    CPC classification number: G06F9/5033

    Abstract: Techniques for controlling a thread on a computerized system having multiple processors involve accessing state information of a blocked thread, and maintaining the state information of the blocked thread at current values when the state information indicates that less than a predetermined amount of time has elapsed since the blocked thread ran on the computerized system. Such techniques further involve setting the state information of the blocked thread to identify affinity for a particular processor of the multiple processors when the state information indicates that at least the predetermined amount of time has elapsed since the blocked thread ran on the computerized system. Such operation enables the system to place a cold blocked thread which shares data with another thread on the same processor of that other thread so that, when the blocked thread awakens and runs, that thread is closer to the shared data.

    Abstract translation: 用于控制具有多个处理器的计算机化系统上的线程的技术涉及访问被阻塞线程的状态信息,并且当状态信息指示自从该时间起经过了预定的一段时间时,将被阻塞的线程的状态信息保持在当前值 阻塞的线程在计算机化系统上运行。 这种技术进一步涉及当状态信息指示自阻塞的线程在计算机化系统上运行以来经过了至少预定的时间量时,设置阻塞线程的状态信息以识别对多个处理器的特定处理器的亲和性。 这样的操作使得系统能够将与另一个线程共享数据的冷的阻塞线程放置在该另一个线程的同一处理器上,使得当被阻塞的线程唤醒并运行时,该线程更接近共享数据。

Patent Agency Ranking