System and method for synchronizing access to shared variables in a
virtual machine in a digital computer system
    81.
    发明授权
    System and method for synchronizing access to shared variables in a virtual machine in a digital computer system 有权
    用于在数字计算机系统中的虚拟机中同步对共享变量的访问的系统和方法

    公开(公告)号:US6141794A

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

    申请号:US174278

    申请日:1998-10-16

    IPC分类号: G06F9/44 G06F9/45 G06F9/46

    CPC分类号: G06F9/526 G06F8/447 G06F8/45

    摘要: A code generating system generates, from code in a program, native code that is executable by a computer system. The code generating system may be included in a just-in-time compiler used to generate native code that is executable by a computer system, from a program in Java Byte Code form, and specifically generates, in response to Java Byte Code representative of a synchronization statement that synchronizes access by multiple threads of execution to at least one variable contained in the Java Byte code, one or more native code instructions that implements a wait-free synchronization methodology to synchronization access to the at least one variable. Since the instructions which implement the wait-free synchronization methodology do not require calls to the operating system, they can generally be processed more rapidly than other synchronization techniques which do require operating system calls.

    摘要翻译: 代码生成系统从程序中的代码生成可由计算机系统执行的本地代码。 代码生成系统可以被包括在用于生成可由计算机系统执行的本地代码的即时编译器中,从Java字节代码形式的程序中,并且具体地生成响应于Java字节代码 同步语句,其将多个执行线程的访问同步到包含在所述Java字节代码中的至少一个变量,一个或多个本机代码指令,其实现等待所述同步方法以同步访问所述至少一个变量。 由于实现无等待同步方法的指令不需要对操作系统的调用,因此通常可以比需要操作系统调用的其他同步技术更快地处理它们。

    "> System and method for processing load instruction in accordance with
    82.
    发明授权
    System and method for processing load instruction in accordance with "no-fault" processing facility including arrangement for preserving access fault indicia 失效
    根据“无故障”处理设备处理加载指令的系统和方法,包括用于保存访问故障标记的布置

    公开(公告)号:US5903739A

    公开(公告)日:1999-05-11

    申请号:US013788

    申请日:1998-01-26

    申请人: David Dice

    发明人: David Dice

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

    摘要: A microprocessor in a computer system processes an instruction stream comprising instructions of a plurality of instruction types including an information retrieval instruction type. The microprocessor comprises a register set, a pending fault flag set, a functional unit, an information retrieval subsystem, and a control subsystem. The register set comprises a plurality of registers, each register for storing information. The pending fault flag set comprises a plurality of pending fault flags each associated with one of said registers, each pending fault flag having selected conditions including a pending fault condition and a no pending fault condition. The functional unit performs processing operations in response to information input thereto. The information retrieval subsystem initiates an information retrieval operation to retrieve of information from said information storage subsystem for storage in a register. The control subsystem controls the other elements of the microprocessor in response to the instructions in the instruction stream. In response to an instruction in the instruction stream of the information retrieval type, the control subsystem enables the information retrieval subsystem to initiate an information retrieval operation, and conditions the pending fault flag associated with said one of said registers to the pending fault condition in response to detection of a fault condition during the information retrieval operation. In response to an instruction in the instruction stream of another type, the control subsystem identifies a selected one of said registers as a source register, and enables information to be transferred from said source register to the functional unit for processing if the pending fault flag associated with said source register is in the no pending fault condition.

    摘要翻译: 计算机系统中的微处理器处理包括包括信息检索指令类型的多种指令类型的指令的指令流。 微处理器包括寄存器组,未决故障标志集,功能单元,信息检索子系统和控制子系统。 寄存器组包括多个寄存器,每个寄存器用于存储信息。 待决故障标志集合包括多个等待的故障标志,每个挂起的故障标志各自与所述寄存器之一相关联,每个未决故障标志具有包括待决故障条件和无待命故障条件的选定条件。 功能单元响应输入的信息执行处理操作。 信息检索子系统启动信息检索操作以从所述信息存储子系统检索信息以存储在寄存器中。 控制子系统响应于指令流中的指令控制微处理器的其他元件。 响应于信息检索类型的指令流中的指令,控制子系统使得信息检索子系统启动信息检索操作,并且将与所述寄存器中的所述一个寄存器相关联的未决故障标志响应于待处理故障条件 在信息检索操作期间检测故障状况。 响应于另一类型的指令流中的指令,控制子系统将所选择的一个所述寄存器识别为源寄存器,并且使信息能够从所述源寄存器传送到功能单元以用于处理,如果挂起的故障标志相关联 所述源寄存器处于不等待故障状态。

    System and method for reducing transactional abort rates using compiler optimization techniques
    83.
    发明授权
    System and method for reducing transactional abort rates using compiler optimization techniques 有权
    使用编译器优化技术减少事务中止率的系统和方法

    公开(公告)号:US09424013B2

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

    申请号:US12345189

    申请日:2008-12-29

    申请人: David Dice

    发明人: David Dice

    IPC分类号: G06F9/45 G06F9/46

    CPC分类号: G06F8/4441 G06F9/467

    摘要: In transactional memory systems, transactional aborts due to conflicts between concurrent threads may cause system performance degradation. A compiler may attempt to minimize runtime abort rates by performing code transformations and/or other optimizations on a transactional memory program in an attempt to minimize store-commit intervals. The compiler may employ store deferral, hoisting of long-latency operations from within a transaction body and/or store-commit interval, speculative hoisting of long-latency operations, and/or redundant store squashing optimizations. The compiler may perform optimizing transformations on source code and/or on any intermediate representation thereof (e.g., parse trees, un-optimized assembly code, etc.). The compiler may preemptively avoid naïve target code constructions. The compiler may perform static and/or dynamic analysis of a program in order to determine which, if any, transformations should be applied and/or may dynamically recompile code sections at runtime, based on execution analysis.

    摘要翻译: 在事务性内存系统中,由于并发线程之间的冲突而导致的事务中止可能会导致系统性能下降。 编译器可以尝试通过在事务性存储器程序上执行代码变换和/或其他优化来最小化存储提交间隔来最小化运行时中止速率。 编译器可以使用存储延迟,从事务体内和/或存储提交间隔,长时间延迟操作的推测性提升和/或冗余存储压缩优化中提取长延迟操作。 编译器可以对源代码和/或其任何中间表示执行优化变换(例如,解析树,未优化的汇编代码等)。 编译器可以抢先避免天真的目标代码结构。 编译器可以执行程序的静态和/或动态分析,以便基于执行分析来确定应该应用哪个(如果有的话)转换和/或可以在运行时动态重新编译代码段。

    Method and system for inter-thread communication using processor messaging
    84.
    发明授权
    Method and system for inter-thread communication using processor messaging 有权
    使用处理器消息传递的线程间通信的方法和系统

    公开(公告)号:US09021502B2

    公开(公告)日:2015-04-28

    申请号:US12345179

    申请日:2008-12-29

    摘要: In shared-memory computer systems, threads may communicate with one another using shared memory. A receiving thread may poll a message target location repeatedly to detect the delivery of a message. Such polling may cause excessive cache coherency traffic and/or congestion on various system buses and/or other interconnects. A method for inter-processor communication may reduce such bus traffic by reducing the number of reads performed and/or the number of cache coherency messages necessary to pass messages. The method may include a thread reading the value of a message target location once, and determining that this value has been modified by detecting inter-processor messages, such as cache coherence messages, indicative of such modification. In systems that support transactional memory, a thread may use transactional memory primitives to detect the cache coherence messages. This may be done by starting a transaction, reading the target memory location, and spinning until the transaction is aborted.

    摘要翻译: 在共享内存计算机系统中,线程可以使用共享内存彼此进行通信。 接收线程可以重复轮询消息目标位置以检测消息的传递。 这种轮询可能导致各种系统总线和/或其他互连上的高速缓存一致性业务和/或拥塞。 用于处理器间通信的方法可以通过减少执行的读取的数量和/或传递消息所需的高速缓存一致性消息的数量来减少这种总线流量。 该方法可以包括读取消息目标位置的值一次的线程,并且通过检测指示这种修改的处理器间消息(例如高速缓存一致性消息)来确定该值已被修改。 在支持事务内存的系统中,线程可以使用事务存储器原语来检测高速缓存一致性消息。 这可以通过启动事务,读取目标内存位置和旋转直到事务中止来完成。

    Method and system for reducing abort rates in speculative lock elision using contention management mechanisms
    85.
    发明授权
    Method and system for reducing abort rates in speculative lock elision using contention management mechanisms 有权
    使用竞争管理机制减少投机锁定中断流失率的方法和系统

    公开(公告)号:US08914620B2

    公开(公告)日:2014-12-16

    申请号:US12345162

    申请日:2008-12-29

    申请人: David Dice

    发明人: David Dice

    IPC分类号: G06F9/38 G06F9/52

    摘要: Hardware-based transactional memory mechanisms, such as Speculative Lock Elision (SLE), may allow multiple threads to concurrently execute critical sections protected by the same lock as speculative transactions. Such transactions may abort due to contention or due to misidentification of code as a critical section. In various embodiments, speculative execution mechanisms may be augmented with software and/or hardware contention management mechanisms to reduce abort rates. Speculative execution hardware may send a hardware interrupt signal to notify software components of a speculative execution event (e.g., abort). Software components may respond by implementing concurrency-throttling mechanisms and/or by determining a mode of execution (e.g., speculative, non-speculative) for a given section and communicating that determination to the hardware speculative execution mechanisms, e.g., by writing it into a lock predictor cache. Subsequently, hardware speculative execution mechanisms may determine a preferred mode of execution for the section by reading the corresponding entry from the lock predictor cache.

    摘要翻译: 基于硬件的事务性存储机制(如推测锁定Elision(SLE))可能允许多个线程同时执行由与投机事务相同锁定的关键部分。 此类交易可能由于争用或由于将代码误认为关键部分而中止。 在各种实施例中,可以用软件和/或硬件争用管理机制来增强推测执行机制,以减少中止率。 推测执行硬件可以发送硬件中断信号以通知软件组件推测执行事件(例如,中止)。 软件组件可以通过实现并发调节机制和/或通过确定给定部分的执行模式(例如,推测性,非推测性)来进行响应,并将该确定传达给硬件推测执行机制,例如通过将其写入 锁定预测器缓存。 随后,硬件推测执行机制可以通过从锁定预测器高速缓存读取相应的条目来确定该部分的优选执行模式。

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

    公开(公告)号:US08776063B2

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

    申请号:US12324109

    申请日:2008-11-26

    摘要: 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.).

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

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

    公开(公告)号:US08560816B2

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

    申请号:US12827842

    申请日:2010-06-30

    IPC分类号: G06F9/00

    摘要: 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.

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

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

    公开(公告)号:US08533663B2

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

    申请号:US12250409

    申请日:2008-10-13

    IPC分类号: G06F9/44 G06F9/45

    CPC分类号: G06F9/466

    摘要: 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.

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

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

    公开(公告)号:US20130081061A1

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

    申请号:US13241015

    申请日:2011-09-22

    IPC分类号: G06F9/46

    摘要: 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.

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

    System and Method for Optimizing a Code Section by Forcing a Code Section to be Executed Atomically
    90.
    发明申请
    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

    IPC分类号: G06F9/45 G06F9/46

    摘要: 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.

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