CN102622276B - 多处理器环境中基于事务的共享数据操作 - Google Patents
多处理器环境中基于事务的共享数据操作 Download PDFInfo
- Publication number
- CN102622276B CN102622276B CN201110438827.7A CN201110438827A CN102622276B CN 102622276 B CN102622276 B CN 102622276B CN 201110438827 A CN201110438827 A CN 201110438827A CN 102622276 B CN102622276 B CN 102622276B
- Authority
- CN
- China
- Prior art keywords
- affairs
- access
- cache memory
- load
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 25
- 239000003795 chemical substances by application Substances 0.000 claims description 42
- 230000007246 mechanism Effects 0.000 claims description 10
- 230000000903 blocking effect Effects 0.000 claims description 4
- HYIMSNHJOBLJNT-UHFFFAOYSA-N nifedipine Chemical compound COC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1C1=CC=CC=C1[N+]([O-])=O HYIMSNHJOBLJNT-UHFFFAOYSA-N 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 2
- 230000004044 response Effects 0.000 claims 2
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100016034 Nicotiana tabacum APIC gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Multi Processors (AREA)
Abstract
本文所述的装置及方法是用于通过事务执行采用无锁定同步来处理多个处理器之间的共享存储器访问。以软件划分的事务被推测地执行。在执行期间,事务缓冲器跟踪对于从共享存储器加载的以及要向共享存储器写入的地址的失效远程访问/请求。如果遇到失效访问,则事务被重新执行。在重新执行事务预定次数之后,可采用锁定/信标非推测地重新执行事务。
Description
技术领域
本发明涉及集成电路领域,具体来说,涉及多个集成电路、核心和线程之间的共享数据操作。
背景技术
半导体加工和逻辑设计方面的进步允许在集成电路器件上可存在的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核心和多个逻辑处理器。集成电路通常包括单个处理器管芯,在其中,处理器管芯可包括任何数量的核心或逻辑处理器。
作为一个实例,单个集成电路可能具有一个或多个核心。术语“核心”通常表示集成电路上的逻辑保持独立体系结构状态的能力,在其中,各独立体系结构状态与专用执行资源关联。因此,具有两个核心的集成电路通常包括用于保持两个分离且独立的体系结构状态的逻辑,各体系结构状态与其自己的执行资源、诸如低级高速缓存、执行单元和控制逻辑关联。各核心可共享某些资源,诸如高级高速缓存、总线接口以及取/解码单元。
作为另一个实例,单个集成电路或单个核心可具有用于执行多个软件线程的多个逻辑处理器,这又称作多线程集成电路或多线程核心。多个逻辑处理器通常共享公共数据高速缓存、指令高速缓存、执行单元、分支预测器、控制逻辑、总线接口及其它处理器资源,同时保持各逻辑处理器的特有体系结构状态。多线程技术的一个实例是来自公司(Santa Clara,California)的超线程技术(HT),它使得能够采用信号物理处理器并行地执行线程。
当前的软件具有运行各个软件线程的能力,它可并行调度在多个核心或逻辑处理器上的执行。集成电路上数量不断增加的核心和逻辑处理器使更多软件线程能够被执行。但是,可同时执行的软件线程的数量的增加对于使软件线程之间共享的数据同步造成问题。
多个核心或多个逻辑处理器系统中访问共享数据的一个常见解决方案包括使用锁定来保证对共享数据的多个访问的互斥。作为一个实例,如果第一软件线程正访问某个共享存储器位置,则保护该共享存储器位置的信标被锁定,以便在保护该存储器位置的信标被解锁之前拒绝系统中的其它任何软件线程访问该共享存储器位置。
但是,如上所述,执行多个软件线程的不断增加的能力可能引起错误争用和执行的串行化。错误争用因以下事实而发生:信标通常设置成保护数据的集合,它根据软件所支持的共享粒度,可覆盖极大数量的数据。为此,信标用作争用“放大器”,因为对于信标可能存在多个软件线程的争用,即使软件线程正访问完全独立的数据项。这引起其中第一软件线程锁定保护第二软件线程可安全访问而不妨碍第一软件线程执行的数据位置的信标的情况。但是,由于第一软件线程锁定了信标,所以第二线程必须等到信标被解锁,从而引起原本并行执行的串行化。
附图说明
附图中的各图以举例而不是限定的方式来说明本发明。
图1说明具有N个核心以及N个核心的每个中的M个逻辑处理器的集成电路。
图2说明用于实现事务执行的集成电路的一个实施例。
图3说明图3所示的事务缓冲器的一个实施例。
图4说明以软件代码划分的事务,所示软件代码被编译成编译代码的第一和第二实施例。
图5说明系统中的事务执行的一个实施例。
图6说明执行事务的方法的流程图的一个实施例。
图7说明用于事务执行的代码流程的一个实施例。
具体实施方式
在以下描述中,阐述了大量具体细节,诸如物理/逻辑处理器的具体数量、具体的事务缓冲器字段以及具体处理器逻辑和实现,以便提供对本发明的透彻理解。然而,本领域的技术人员会清楚,这些具体细节不一定要用于实施本发明。在其它情况下,没有详细描述众所周知的组件或方法、例如微处理器的众所周知的功能块等,以免不必要地影响对本发明的理解。
本文所述的装置及方法是用于通过事务执行采用无锁定同步来处理多个软件线程之间的共享存储器访问。对于本领域的技术人员显而易见,本文公开的方法及装置可在诸如个人数字助理、移动平台、桌面平台和服务器平台之类的、以及具有任何数量的集成电路、核心或逻辑处理器的任何等级的计算机系统中实现。例如,具有四个集成电路的微处理器系统可采用本文所述的方法及装置来管理对集成电路中的任何四个所共享的存储器的共享访问。
在图1中,说明可实现事务执行的集成电路105。在一个实施例中,集成电路105是能够与其它微处理器无关地进行操作的微处理器。或者,集成电路105是结合多个处理元件进行操作的处理元件。
集成电路105说明第一核心110、第二核心115和第N核心120。本文所使用的“核心”表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,各独立保持的体系结构状态与至少一部分专用执行资源关联。执行资源可包括算术逻辑单元(ALU)、浮点单元(FPU)、寄存器文件、用于对单个或多个整数和/或浮点数据操作数进行串行或并行运算的操作数寄存器以及用于执行代码的其它逻辑。此外,多个核心可共享对于诸如高级高速缓存、总线接口和控制逻辑以及取/解码逻辑之类的其它资源的访问。
作为一个说明性实例,集成电路105具有八个核心,各核心与一组体系结构状态寄存器关联,诸如通用寄存器、控制寄存器、高级可编程中断控制(APIC)寄存器、机器状态寄存器(MSR)或者用于存储指令指针的状态的寄存器,以便保持独立体系结构状态。此外,各组体系结构状态寄存器独占地与单独执行单元关联。
集成电路105还说明核心110,其中包括第一逻辑处理器125、第二逻辑处理器130和第M逻辑处理器135。本文所使用的逻辑处理器表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,独立保持的体系结构状态共享对执行资源的访问。如上所述,各逻辑处理器具有保持独立体系结构状态的一组体系结构状态寄存器;但是,体系结构状态中的每个共享对执行资源的访问。因此,在任何单个集成电路上,可能存在任何数量的核心和/或任何数量的逻辑处理器。为了说明,在论述用于事务执行的装置及方法时,在论述核心和/或逻辑处理器的操作的过程中会引用术语“处理器”。
参照图2,描述集成电路的一个实施例,以便说明事务执行的一个具体实现。但是,显而易见,参照图2所述的方法及装置可在任何等级的系统中实现,例如在图5所示的系统中。在一个实施例中,集成电路205是能够无序推测的,在其中,指令能够以与程序中给出的不同的顺序执行。或者,处理器205是能够有序执行的,在其中,以原始程序顺序发出及执行指令。
集成电路205可包括可能是核心或逻辑处理器的任何数量的处理器。例如,集成电路205具有八个核心,各核心具有两个逻辑处理器,它们允许在集成电路205上一次执行16个软件线程。因此,集成电路205通常称作多线程多核心处理器。在图2中,集成电路205被单独表示,以免影响对本发明的理解;但是,集成电路205可单独或者与其它处理器结合操作。
集成电路205还可包括,但不要求包括,没有具体描绘的以下项的任一个或任何组合:数据通路,指令通路,虚拟存储地址转换单元(转换缓冲器),算术逻辑单元(ALU),能够执行单个指令或多个指令以及能够对单个或多个数据操作数进行串行或并行运算的浮点计算单元,寄存器,中断控制器,高级可编程中断控制器(APIC),预取单元,指令重新排序单元,以及用于取或执行指令并对数据进行运算的其它任何逻辑。
集成电路205说明前端210。前端210表示为包括指令取215、指令解码220和分支预测225。前端210不限于仅包括所示的逻辑,而是还可包括其它逻辑,诸如外部数据接口265和低级指令高速缓存。前端210取出将由集成电路205执行的指令并对其解码。如图所示,前端210还包括分支预测逻辑225,以便预测将被取出并解码的指令。前端210可取出定长指令、变长指令、宏指令或者具有单独操作的指令并对其解码。
指令通常包括将对数据操作数执行的多个运算,并且通常称作宏指令,而待执行的单独操作通常称作微操作。但是,指令也可以指单个操作。因此,本文所使用的微操作表示将由集成电路205执行的任何单个操作,而指令则表示宏指令、单个操作指令或者这两者。作为一个实例,相加宏指令包括从第一关联地址读取第一数据操作数的第一微操作、从第二关联地址读取第二数据操作数的第二微操作、把第一和第二数据操作数相加以得到结果的第三微操作以及把结果存储在寄存器位置中的第四微操作。
事务执行通常包括把多个指令或操作组合为事务或者代码的临界段。在一个实施例中,集成电路205中的硬件把宏操作组合为事务。以硬件标识事务包括若干因素,例如锁定获取和锁定释放的使用、事务的嵌套、非推测性存储器操作的互斥以及存储器排序要求对于用来构建事务的构造的覆盖。在另一个实施例中,事务以软件划分。参照图5更详细地论述事务的软件划分。
集成电路205还包括执行单元275和寄存器文件270以便执行宏操作组,又称作事务和临界段。与传统的锁定技术不同,当事务的最终状态被确定时,事务执行通常要求推测地执行事务/临界段,并把状态更新推迟到推测执行结束时。作为一个实例,临界段由前端210标识,推测地执行,然后仅当远程代理、比如另一个核心或逻辑处理器没有对临界段执行期间访问的存储器位置进行失效请求时,才由退出逻辑235退出。
作为说明性实例,远程代理包括存储器更新装置,例如另一个集成电路、处理元件、核心、逻辑处理器或者没有被调度为执行或没有正在执行未决事务的任何处理器/装置。失效请求通常包括远程代理对事务中的微操作所操纵的存储器位置的请求/访问、锁定保护事务中微操作所操纵的存储器位置的信标的请求、或者远程代理为了拥有事务中微操作所操纵的存储器位置而进行的请求。参照图3更详细地论述失效请求。
如果在执行事务/临界段结束时,结果被认为不一致或无效,则事务/临界段不退出,并且状态更新不提交给寄存器或存储器。另外,如果事务不退出,则重新执行事务的两个选项包括:(1)推测地重新执行先前执行的事务,或者(2)利用锁定/信标非推测地重新执行事务。
事务的推测执行可包括存储器更新和寄存器状态更新。在一个实施例中,集成电路205能够保持及合并推测存储器和寄存器文件状态更新,以便在更新存储器和寄存器文件之前确保事务执行结果是有效且一致的。作为一个说明性实例,集成电路205在任意时间段把标识为相同事务的一部分的所有指令/微操作结果保持为推测/临时状态。为了实现推测存储器和寄存器文件状态更新的保持及合并,特殊寄存器检查点硬件和操作数旁路逻辑用于把推测结果存储在暂时寄存器中。
在另一个实施例中,集成电路205能够对寄存器状态更新以及从存储器更新中的指令退出去耦。在这个实施例中,推测更新在解决推测之前被提交给寄存器文件370;但是,存储器更新被缓冲到事务退出之后。因此,一个可能的优点是,事务中的各单独指令或微操作可在执行之后立即退出。此外,寄存器状态更新和存储器更新的去耦可能减少在提交给体系结构寄存器文件270之前存储推测结果的额外寄存器。
但是,在这个实施例中,推测地更新寄存器文件270要求把对寄存器文件270的每个更新当作推测更新来处理。寄存器再用和分配策略可证明对寄存器文件270的更新为推测更新。作为一个说明性实例,用于缓冲用于事务的数据的输入寄存器对于在事务的提交未决期间接收新数据存在偏见。在这个实例中,在事务期间使用的输入寄存器对于接收新数据存在偏见;因此,如果推测执行失败或者需要重启,则输入寄存器组通常能够再用而无需重新初始化,因为将首先使用不是输入寄存器组的组成部分的其它寄存器。
在另一个实例中,如果输入寄存器在推测执行或者事务的提交未决期间接收新数据,则再用的输入寄存器的状态被存储在独立的存储区、如另一个寄存器中。在执行失败或者发起重新执行时,输入寄存器的原始内容的存储允许输入寄存器被重新加载其原始内容。处理器暂时存储寄存器内容、然后在重新执行时重新加载通常称作溢出和再填充。
在事务/临界段中对共享存储器、如高速缓存240的存储器访问的一致性可被跟踪,以便确保从其中读取的存储器位置仍然具有相同信息,以及待更新/写入的存储器位置还没有被另一个代理读取或更新。作为第一实例,存储器访问是读取/加载数据、数据操作数、数据行或者存储器位置的任何内容的加载操作。作为第二实例,存储器访问包括存储器更新、存储或写操作。
在一个实施例中,事务缓冲器265跟踪对诸如高速缓存240之类的共享存储器中的诸如高速缓存行245、250和255之类的数据行的访问。作为说明性实例,高速缓存行245-255包括数据行、关联物理地址和标记。关联物理地址引用集成电路205外部的存储器位置或者位于集成电路205上的存储器位置。
来看图3,说明事务缓冲器265的一个实施例。事务缓冲器265可包括事务跟踪逻辑,以便跟踪远程代理对于在事务中从共享存储器加载的各地址以及被写入共享存储器的各地址进行的失效请求/访问。作为说明性实例,远程代理包括其它处理元件,例如另一个逻辑处理器、核心、集成电路、处理元件、或者没有被调度以执行或没有正在执行未决事务的任何处理器/装置。
在一个实施例中,事务缓冲器265包括加载表305和存储/写入缓冲器325,以便在未决事务执行期间分别跟踪加载/读取和存储/写入。在这里,加载表305存储加载条目、比如加载条目307,以便对应于在未决事务/临界段的执行期间从共享存储器中加载/读取的各数据行。在一个实施例中,加载条目包括物理地址310的表示和失效访问字段(IAF)315。作为第一实例,物理地址310的表示包括用来引用存储器位置的实际物理地址。作为第二实例,该表示包括物理地址的编码形式或一部分、如标记值,以便引用加载数据行,以及包括长度/大小信息。加载数据的长度在设计中可能是隐式的;因此,不需要对所加载数据的长度/大小的具体引用。在一个实施例中,加载数据的隐式长度/大小是单个高速缓存行。
作为说明性实例,IAF 315在加载条目307第一次存储在加载表305中时具有第一值,以及在远程代理对物理地址310所引用的存储器位置进行失效访问或失效访问请求时改变为第二值。例如,失效请求/访问是远程代理在未决的临界段的执行期间对物理地址310所引用的存储器位置写入,在其中,物理地址310表示在未决的临界段的执行期间被读取的存储器位置。作为简化实例,IAF 315在存储加载条目307时初始化为第一逻辑值1,加载条目307包括引用在临界段的执行期间被加载的存储器位置的物理地址310。如果远程代理在未决的临界段的执行期间对物理地址310所引用的存储器位置写入,则IAF 315字段改变为第二值0,以便表示远程代理对加载条目307所引用的存储器位置进行了失效访问。
在一个实施例中,加载表305还可用来跟踪远程代理进行的失效锁定/信标请求。当执行事务时,信标或分开的加载条目、如加载条目307用来跟踪事务的信标。信标变量可采用信标变量的一般加载操作来跟踪,加载操作以如上所述的相似方式来跟踪。实际上,跟踪对信标的失效请求的信标加载条目、如加载条目307包括物理地址字段310和IAF 315。物理地址字段310可包括信标值存储在的物理地址的表示。
与以上所述的创建加载条目的操作相似,IAF 315在把信标加载条目307存储到加载表305时被加载第一值,以便跟踪当前事务的锁定变量/信标。如果远程代理在未决事务的执行期间请求或者获取物理地址310所引用的信标锁定,则IAF 315设置成第二值,以便表示远程代理请求/获得了执行期间对事务的锁定。显然,多个代理可跟踪锁定;但是,失效在代理之一获得实际锁定时执行。
加载表305不限于图4所示的实施例。作为一个实例,事务缓冲器265确定哪些加载条目、如加载条目307为空的(未被当前事务使用的条目,并且可能具有缺省或无用数据),以及哪些加载条目为满的(由当前事务创建的条目)。在这里,计数器可用来跟踪引用当前加载条目的分配指针。或者,另一个字段、如分配跟踪字段(ATF)存在于各加载条目中,以便跟踪该加载条目为空还是为满。作为一个实例,加载条目307包括具有第一值、如逻辑1的ATF,以便表示未被当前事务创建的空加载条目。当加载条目307由当前事务创建时,加载条目307中的ATF改变为第二值、如逻辑0。
在另一个实施例中,被加载/读取的数据行的大小/长度不是隐式的,而是另一个字段、如长度字段存在于加载表305中,以便确定所加载数据的长度/大小。加载表305可能是本领域已知的用于跟踪推测加载的高级加载地址表(ALAT)。
再参照图3,存储写入缓冲器325存储写入条目、如写入条目327,以便对应于在未决事务/临界段的执行期间将在共享存储器中被写入/更新的各数据行或部分数据行。例如,写入条目327包括物理地址330的表示、失效访问字段(IAF)335和数据保存字段340。作为第一实例,物理地址330的表示包括用来引用在未决的临界段的结束时或者执行期间将被写入的存储器位置的实际物理地址。作为第二实例,该表示包括物理地址的编码形式或一部分、如标记值,以便引用在未决的临界段执行结束时要被写入的数据行。
对于以上实例,IAF 335在写入条目327第一次存储在写入表325时具有第一值,以及在远程代理对物理地址330所引用的存储器位置进行失效访问时改变为第二值。在一个实施例中,失效访问是远程代理在未决的临界段的执行期间对物理地址330所引用的存储器位置写入。另外,失效访问是远程代理在未决的临界段的执行期间从物理地址330读取。另一个失效访问可以是远程代理获得物理地址330所引用的存储器位置的所有权。作为简化实例,IAF 335在存储写入条目327时初始化为第一逻辑值1。如果远程代理在未决的临界段的执行期间对物理地址330所引用的存储器位置进行读或写,则IAF325改变为第二逻辑值0,以便表示远程代理对写入条目327所引用的存储器位置进行了失效访问。
写入条目327还说明缓冲/保存待写入的推测数据的数据保存字段340。数据保存字段340还可用来跟踪被跟踪数据行的哪一个部分包含新数据与哪一个部分尚未作为推测存储的目标。跟踪已改变部分可帮助稍后在提交过程中把推测数据合并到实际存储器位置。
在一个实施例中,从存储操作中待写入的行的所有权在事务中的单独操作的执行和退出时获得。作为预取所有权的备选方式,在每个单独的写入/存储微操作退出时,没有获得待写入的物理地址的所有权,直至事务退出之前的事务结束为止。在任一个实施例中,在事务结束时,如果所有权在事务的执行期间被放弃,则事务不退出(失败),因为进行了失效访问。一旦事务将退出,则待写入的各行的所有权没有被放弃,直至已经提交所有存储器更新之后为止。如果远程代理在退出期间请求行的所有权,则请求可被排队并保持未决,直至已经提交所有存储器更新/写入之后为止。
写入表325不限于图4所示的那样。例如,它可包括未示出的阻塞字段,以便在被设置时阻挡从远程代理对共享存储器、如高速缓存的窥探。写入条目的阻塞字段设置为第一值,以便允许对相应物理地址的窥探,以及在高速缓存行被阻塞以阻挡远程代理对高速缓存行的窥探时设置为第二值。阻塞字段在提交过程中可能特别有用,用来阻挡窥探以及不允许任何所有权变更。如上所述,来自远程代理的对所有权的任何请求可被排队,直至已经提交事务之后为止。实现阻塞字段的一个示范方法是当设置了阻塞字段时在预定时间长度阻挡窥探,其中预定时间长度基于存在的存储缓冲器的数量。
写入表325还可包括长度字段、如以上参照加载表305论述的长度字段,用于存储待写入的推测数据的长度。任何数量的其它字段或字段组合可包含在存储表/缓冲器325中。例如,远程代理字段用来跟踪标识进行了失效访问的远程代理的处理器ID或其它ID。
事务缓冲器265可用硬件或固件来实现。在另一种情况中,事务缓冲器365用软件来实现并由集成电路205运行。在又一个实例中,事务缓冲器用微码来实现。
在执行临界段/事务中的所有微操作之后,如果在未决的临界段的执行期间没有发生失效访问,则通常提交事务。在退出之后,通常以原子方式提交事务。作为一个实例,以原子方式写入/提交未决的临界段包括把临界段执行期间缓冲的每一个数据行写入共享存储器。
在一个实施例中,在对于在未决临界段的执行期间被跟踪的失效访问检查事务缓冲器265之后,未决事务由退出逻辑235退出,如图2所示。作为一个实例,对于待退出的未决事务,检查与未决事务关联的、存储在加载表305中的各加载条目IAF以及存储在存储表/缓冲器325中的各写入条目IAF。另外,也检查被创建以便跟踪未决事务的锁定变量或信标的任何加载条目,以便确保请求锁定或信标的远程代理没有进行失效访问。如果没有发现失效访问,则允许事务退出,并且阻塞存储缓冲器。一旦同时进行阻塞和允许退出,存储器更新可以串行方式执行。一旦完成,“阻塞”状态被消除,行被放弃,以及事务被认为已提交。
作为简化实例,事务包括从位置0001读取以及对位置0002写入值1010的微操作。在执行第一微操作时,加载表305将存储加载条目307,其中包含表示位置0001的物理地址字段310和具有第一值1的IAF 315。在执行第二微操作时,存储表325将存储写入条目327,其中包含表示位置0002的物理地址330、具有第一值1的IAF335和数据字段340中的1010。另外,加载和写入条目还可包括以上所述的大小/长度信息或者其它字段。如果远程代理在执行期间或者在事务仍然未决的同时对位置0001写入,则IAF 315设置为第二值0,以便表示进行了失效访问。在尝试退出事务时,IAF 315表示失效访问,因此事务不会退出,以及值1010不会被写入位置0002。但是,如果没有远程代理对位置0001写入,并且没有远程代理对位置0002读/写,如IAF 315和335中的1所表示,则事务被退出,以及值1010被写入位置0002。
因此,确定在未决事务期间发生了失效访问之后,不退出事务,存在多个选项。第一选项包括重新执行事务。如上所述,输入寄存器为下列任一种:(1)如果它们在事务未决期间接收到新数据,则重新初始化到其原始状态,或者(2)如果它们在事务未决期间没有接收到新数据,则已经存在于其原始状态中。因此,以与先前相同的方式推测地重新执行事务。第二选项包括与进行了失效访问的远程代理结合采用后退算法推测地重新执行事务。作为一个实例,指数后退算法用来尝试完成事务而没有远程代理争用相同数据的情况。另一个选项包括采用本领域已知的软件非阻挡机制来重新执行事务。第四选项包括在推测地重新执行事务预定次数之后,采用锁定/信标非推测地重新执行事务。信标有效地锁定在事务期间将被读出和写入的地址。
采用锁定/信标作为失败机制的第四选项可用硬件、软件或者用于运行软件的硬件的组合来实现。例如,在软件实现的封锁机制中,信标用于锁定对于存储器位置的任何粒度的访问。希望访问某个存储器位置的各处理器争夺保护那个位置的信标。如果信标设置为表示无锁定的第一值,则第一处理器使信标翻转到表示地址/存储器位置被锁定的第二值。把信标翻转为第二值通过软件确保使信标翻转的处理器获得对于那个存储器位置以及可能由那个信标保护的一系列存储器位置的独占访问。集成电路205可能具有调用/执行软件形式的信标的分开的封锁逻辑260,或者可能只是采用现有执行逻辑来执行/调用软件封锁。信标可以是软件实现的;因此,信标可存在于系统存储器(未示出)中。
作为实现封锁逻辑260的另一个实例,如图2所示,封锁逻辑260或者在封锁逻辑260上运行的软件采用用于防止对于共享存储器的指定行的至少一个远程代理访问的封锁机制。在一个实施例中,封锁逻辑包括锁定位。作为第一实例,在硬件中,锁定位处于寄存器或者高速缓存行中。作为第二实例,锁定位以在封锁逻辑260上运行并且存在于系统存储器中的软件来表示。
当锁定位具有第一值时,允许对共享存储器的预定或指定行的访问。但是,当锁定位具有第二值时,阻止对共享存储器的指定行的访问。锁定位可存在于高速缓存240、封锁逻辑260、处理器205中的其它任何存储器或者系统存储器中。数据行的任何粒度可由单个信标或者通过设置单个位来锁定。作为一个实例,2s行通过设置单个锁定位来锁定。
作为把信标用作故障安全机制的一个实例,事务被执行第一次数、例如五次,但是在各执行期间,远程代理对于在事务执行期间被读取的地址、如说明性地址0001进行失效访问。循环通过事务代码第六次,满足六的执行门限。一旦满足门限或预定执行数量,信标用于执行事务。
在一种软件实现中,争夺保护地址0001的信标。如果地址0001当前没有被信标锁定,则翻转信标的值以表示它当前被锁定。然后非推测地重新执行事务。
作为备选方案,在一种硬件实现中,可由单个晶体管或任何数量的晶体管组成的锁定电路、如锁定电路263把与地址0001关联的锁定位设置为防止在事务的第六次执行期间远程代理至少对地址0001的访问的第二值。
数据行的锁定不限于信标或锁定位的使用,而是包括用于防止对数据行的访问的任何方法或装置,不管是以硬件还是以软件实现。作为另一个实例,三态装置用来防止对数据行的互连访问。
来看图4,说明以软件划分的事务的一个实例。如上所述,事务通常包括待执行的一组指令/微操作。因此,事务声明可能是划分事务的任何方法。在图4中,事务410具有某些操作的实例,例如读取存储器、执行操作以及更新/写入存储器。事务410通过事务声明/标识符405来划分,它表示为Atomic{...};。但是,事务声明不受此限制。作为简单实例,把多个操作或指令组合的一对括号是标识事务/临界段的边界的事务声明/标识符。
编译的事务声明405的一个示例在编译实例415中表示。事务430的边界由事务标识符425标识;因此,执行事务的处理器能够从标识符识别组成事务/临界段的微操作。编译的事务声明405的另一个示例在编译实例425中表示。在这个示例中,事务声明435标识事务440的边界。
为了逐步查看这个实例,行1至3标识事务执行,把谓词Px设置为1以及把Py设置为0,在Rm中把计数变量初始化为0,以及Rn中的计数的门限。谓词通常在谓词具有一个值时包括执行的一种类型或通路,以及在谓词具有另一个值时包括执行的另一种类型或通路。在行4-9,计数变量被初始化为表示事务将被推测地执行的次数的数量,计数变量则与门限进行比较或者以其它方式评估,以便查看锁定谓词是否应当设置成执行具有锁定/信标的事务(非推测地),计数变量根据设计来递减或递增,以便表示事务已经被执行的次数,以及事务开始。行10至12包括在事务440的临界段中任何数量的操作。最后,行14包括用于探测事务跟踪逻辑/缓冲器的检查指令,如上所述,用于远程代理在事务执行期间进行的失效访问。
来看图5,说明采用事务执行的系统的一个实施例。说明微处理器505和510,但是,该系统可具有任何数量的物理微处理器,各物理微处理器具有采用事务执行的任何数量的核心或者任何数量的逻辑处理器。作为一个实例,微处理器505和510各具有存在于其管芯上的多个核心,各核心具有多个线程,从而得到多线程核心。在一个实施例中,微处理器505和510能够无序推测和非推测执行。在另一个实施例中,微处理器505和510能够仅有序执行。
微处理器505和510具有高速缓存507和512。在一个实施例中,高速缓存507和512存储从系统存储器530最近取出的数据和/或指令。在这个实施例中,高速缓存507和高速缓存512会高速缓存专用于它们的相应微处理器的数据。存储器530可以是事务执行用来访问的共享存储器。在另一个实施例中,在事务期间被访问的系统中存在的任何存储器是共享存储器。例如,如果微处理器505和510访问高级共享高速缓存,图5中未示出。
微处理器505和510表示为通过互连515耦合到存储控制器520。存储控制器分别通过互连535耦合到图形设备540。在一个实施例中,图形设备540集成在存储控制器520中。存储控制器还通过互连525耦合到系统存储器530。系统存储器530可能是系统中使用的任何类型的访问存储器。在一个实施例中,系统存储器530是随机存取存储器(RAM)装置,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、单数据速率(SDR)RAM、双倍数据速率(DDR)RAM、其它任何多倍数据速率RAM或者其它任何类型的访问存储器。
输入/输出(I/O)控制器550通过互连545耦合到存储控制器545。I/O控制器550通过互连555耦合到存储装置560、网络接口565和I/O设备570。在一个实施例中,存储装置560是硬盘驱动器。在另一个实施例中,存储装置560是盘驱动器。在又一个实施例中,存储装置560是系统中的任何静态存储装置。在一个实施例中,网络接口565与局域网(LAN)接口。在另一个实施例中,网络接口565与更大的网络、如互联网接口。输入/输出设备570可包括任何用户输入或系统相关输出设备,诸如键盘、鼠标、监视器或打印机。
随后参照图6,说明执行事务的方法的流程图的一个实施例。在框605,在第一事务的执行期间,跟踪对于第一事务所引用的共享存储器中的多个行的失效访问。
在一个实例中,事务缓冲器用来跟踪失效访问。事务缓冲器包括加载表和存储表/缓冲器。加载表跟踪对于第一事务的执行期间被加载的地址的失效访问。对于被加载的地址/存储器位置的失效访问包括诸如处理器、核心、线程或逻辑处理器之类的没有被调度为执行第一事务的远程代理对于在第一事务的执行期间被加载的地址或存储器位置写入。另外,加载表可包括封锁机制条目,以便跟踪在事务执行期间对于信标或其它封锁机制的失效访问。在这个实例中,对于封锁机制的失效访问包括远程代理请求或者获得对封锁机制所保护/锁定的地址的锁定。
与加载表相似地工作的存储表/缓冲器跟踪对于在提交事务时将被写入的地址或存储器位置的失效访问。失效访问在这里可包括远程代理对上述地址或存储器位置读出或者写入。
在框610,如果跟踪到失效访问,则第一事务被重新执行第一次数。因此,如果在第一事务的执行期间跟踪到失效访问,则第一事务只是被重新执行。但是,如果第一事务已被重新执行可由处理器中的软件或逻辑中的计数变量表示的预定次数,则第一事务所引用的共享存储器中的多个行被锁定。锁定可通过软件实现的封锁机制、如信标来进行,它向一个处理器封锁或给予对于多个行的独占访问。锁定也可通过采用封锁逻辑的硬件来进行,以便物理封锁对第一事务所引用的多个行的访问。
在框620,在已经锁定对多个行的访问之后,再次重新执行事务。因此,可能是推测地重新执行事务、但由于失效访问被跟踪而无法提交结果的核心或逻辑处理器的处理器将具有对第一事务所引用的多个行的独占访问。因此,可非推测地执行第一事务,因为独占访问可提供给执行处理器。
现在来看图7,说明事务执行的代码流程的一个实施例。在框705,在被组合在一起时可能跨越多个指令或宏操作的一组微操作被执行。如上所述,在框710,跟踪对于与各加载和存储微操作关联的共享存储器位置的失效访问。
在框715,第一组微操作的执行被循环进行,直至:(1)没有跟踪到失效访问,或者(2)第一组微操作已经被执行第一次数。因此,不是必须跳转到代码中的新位置,而是可使用相同的输入寄存器组,并且事务只是再次被循环进行。如上所述,这通过使输入寄存器组对于在事务未决期间接收新数据存在偏见、以及在再用输入寄存器时溢出和再填充输入寄存器的内容来实现。同样在框720,与各加载和各存储微操作关联的共享存储器位置被锁定,以及第一组微操作被重新执行。
如上所述的事务执行避免了在锁定体系结构中可能发生的错误争用,并通过在事务执行期间跟踪对于存储器位置的失效访问,把争用限制为实际争用。此外,如果事务被重新执行预定次数,则因为实际争用继续发生,所以采用锁定/信标非推测地执行事务,以便确保事务在尝试推测地执行事务预定次数之后被执行和提交。或者,软件非阻挡机制可用来代替非推测执行方法。如上所述,可通过确保事务的“住进”数据被保留在原始输入寄存器中或者通过把输入数据值复制到保存位置,以软件来支持推测寄存器状态更新/提交,所述保存位置可能是其它寄存器或存储器,在必须重试事务时输入数据值可从其它寄存器或存储器中恢复。处理器还可包含硬件机制来缓冲寄存器状态,可能采用通常用于支持无序执行的机制。
在以上描述中,参照本发明的具体示范实施例描述了本发明。但是,显然可对其进行各种修改和变更,而没有背离所附权利要求阐述的本发明的广义实质和范围。因此,说明书和附图要视为说明性的而不是限制性的。
Claims (20)
1.一种用于处理事务的装置,包括:
执行所述事务的执行逻辑,
保持被所述事务引用的数据单元的高速缓存存储器,
耦合到所述执行逻辑和所述高速缓存存储器以缓冲用于所述执行逻辑的所述数据单元的第一存储单元,所述存储单元在所述事务的未决期间不接收随后新数据单元,其中,所述第一存储单元是输入寄存器组的寄存器。
2.如权利要求1所述的装置,还包括:
在所述事务的执行期间跟踪要由远程代理向所述高速缓存存储器作出的失效请求的事务缓冲器;
不退出所述事务以响应所述事务缓冲器在所述事务的执行期间跟踪失效请求的逻辑。
3.如权利要求2所述的装置,还包括保持锁定谓词值的第二存储单元,当设置成锁定值时,所述执行逻辑将通过使用信标来非推测地执行所述事务以提供在所述事务的执行期间对所述高速缓存存储器中所述数据单元的独占访问,其中逻辑还将评估计数变量以响应中止所述事务,以及如果所述计数变量表示已重新执行所述事务预定次数,将设置锁定谓词成所述锁定值。
4.一种用于处理事务的方法,包括:
执行事务;
跟踪与所述事务内多个加载操作关联的远程代理作出的对高速缓存存储器位置的失效访问;
在所述事务的未决期间使得与所述事务关联的输入寄存器不接收新数据。
5.如权利要求4所述的方法,其中跟踪对高速缓存存储器位置的失效访问包括:在加载表中存储用于多个加载操作的每个的加载条目,每个加载条目包括与加载的高速缓存存储器位置关联的物理地址的表示和失效访问字段以:(1)在所述加载表中存储所述加载条目时保持第一值以及(2)保持第二值以响应所述事务执行的期间发生的失效访问。
6.如权利要求5所述的方法,还包括循环通过所述事务的执行直至:(1)没有跟踪到对与所述事务内所述多个加载操作关联的任何存储器位置的失效访问;或(2)已循环通过所述事务第一数量次;以及锁定与多个加载操作的每个关联的多个高速缓存存储器位置和重新执行所述事务以响应循环通过所述事务的执行第一数量次。
7.如权利要求5所述的方法,其中以高级加载地址表(ALAT)实现所述加载表。
8.如权利要求5所述的方法,其中在系统存储器中保持所述加载表,更新所述加载表以响应所述事务内操作的执行。
9.如权利要求6所述的方法,其中如果已循环通过第一组微操作第一数量次,就使用推测软件非阻挡机制以重新执行第一组微操作。
10.一种用于处理事务的装置,包括:
高速缓存存储器;
耦合到所述高速缓存存储器以执行事务的执行逻辑;
保持用于所述事务的数据的输入寄存器,所述寄存器在所述事务的未决期间不接收新数据;
耦合到所述高速缓存存储器以在所述事务的执行期间保持与多个对所述高速缓存存储器的相应事务访问关联的多个访问缓冲器条目的事务缓冲器,其中每个所述访问条目要保持:
与所述多个对所述高速缓存存储器的事务访问中的事务访问关联的地址;以及
在所述事务的未决期间保持无效访问值以响应远程代理对与所述事务访问关联的所述地址的随后无效访问的无效访问字段。
11.如权利要求10所述的装置,其中所述事务缓冲器包括加载表,所述多个相应事务访问中的事务访问包括来自于所述高速缓存存储器的事务加载,所述多个访问条目中的访问条目包括加载条目,以及随后的无效访问包括不执行所述事务的代理对与保持在所述加载条目中的事务加载关联的地址的写入。
12.如权利要求11所述的装置,其中所述加载表是高级加载地址表(ALAT)。
13.如权利要求10所述的装置,其中所述事务缓冲器包括存储表,所述多个相应事务访问中的事务访问包括到所述高速缓存存储器的事务存储,所述多个访问条目中的访问条目包括存储条目,以及随后的无效访问包括不执行所述事务的代理对来自于与保持在所述存储条目中的事务存储关联的地址的加载。
14.如权利要求11所述的装置,其中所述多个相应事务访问的第二事务访问包括来自于所述高速缓存存储器的信标值的加载,所述多个访问条目的第二访问条目包括加载信标条目,以及随后的无效访问包括不执行所述事务的代理对与保持在所述加载信标条目中的信标值的加载关联的地址的写入,以更新所述信标值来调用所述信标。
15.如权利要求11所述的装置,其中所述加载表:(1)初始化保持在所述加载条目中的所述无效访问字段成缺省值,以及(2)更新所述无效访问字段成所述无效访问值,以响应不执行所述事务的代理对与保持在所述加载条目中的所述事务加载关联的地址的写入,其表明在所述事务的未决期间无效访问已发生。
16.如权利要求10所述的装置,其中所述执行逻辑还执行软件实现的封锁机制以允许在所述事务的执行期间对所述高速缓存存储器的指定行的访问,以响应尝试所述事务的推测事务执行预定次数。
17.一种能够处理事务的微处理器,包括:
高速缓存存储器;
用于执行事务的执行单元;
保持用于所述事务的数据的输入寄存器,所述寄存器在所述事务的未决期间不接收新数据;
所述高速缓存存储器外的跟踪单元,用于检出对高速缓存存储器中数据位置的失效访问,其在执行所述事务期间被访问;
退出单元,用于:(1)退出所述事务以响应所述跟踪单元在执行所述事务期间未检出失效访问,以及(2)启动所述执行单元对所述事务的重新执行以响应所述跟踪单元在执行所述事务期间检出失效访问。
18.如权利要求17所述的微处理器,其中在所述高速缓存存储器外的所述跟踪单元包括耦合到所述高速缓存存储器的事务缓冲器。
19.如权利要求18所述的微处理器,其中所述事务缓冲器包括跟踪在执行所述事务期间从所述高速缓存存储器加载的每个地址的加载表,以及在执行所述事务期间跟踪写入所述高速缓存存储器的每个地址的写入缓冲器。
20.如权利要求19所述的微处理器,其中所述加载表包括锁定机制加载条目,所述锁定机制加载条目跟踪对封锁机制的远程代理访问。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/027623 | 2004-12-29 | ||
US11/027,623 US7984248B2 (en) | 2004-12-29 | 2004-12-29 | Transaction based shared data operations in a multiprocessor environment |
CN2005800454107A CN101095113B (zh) | 2004-12-29 | 2005-12-23 | 多处理器环境中基于事务的共享数据操作 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800454107A Division CN101095113B (zh) | 2004-12-29 | 2005-12-23 | 多处理器环境中基于事务的共享数据操作 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102622276A CN102622276A (zh) | 2012-08-01 |
CN102622276B true CN102622276B (zh) | 2015-09-23 |
Family
ID=36116231
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110438827.7A Active CN102622276B (zh) | 2004-12-29 | 2005-12-23 | 多处理器环境中基于事务的共享数据操作 |
CN2005800454107A Active CN101095113B (zh) | 2004-12-29 | 2005-12-23 | 多处理器环境中基于事务的共享数据操作 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800454107A Active CN101095113B (zh) | 2004-12-29 | 2005-12-23 | 多处理器环境中基于事务的共享数据操作 |
Country Status (6)
Country | Link |
---|---|
US (3) | US7984248B2 (zh) |
JP (3) | JP4764430B2 (zh) |
CN (2) | CN102622276B (zh) |
DE (3) | DE112005003339T5 (zh) |
GB (3) | GB2437211B (zh) |
WO (1) | WO2006071969A1 (zh) |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7752181B2 (en) * | 2004-11-08 | 2010-07-06 | Oracle International Corporation | System and method for performing a data uniqueness check in a sorted data set |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7421544B1 (en) * | 2005-04-04 | 2008-09-02 | Sun Microsystems, Inc. | Facilitating concurrent non-transactional execution in a transactional memory system |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US8813052B2 (en) | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US8001538B2 (en) | 2005-12-07 | 2011-08-16 | Microsoft Corporation | Software accessible cache metadata |
US8225297B2 (en) | 2005-12-07 | 2012-07-17 | Microsoft Corporation | Cache metadata identifiers for isolation and sharing |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8898652B2 (en) * | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US7647454B2 (en) * | 2006-06-12 | 2010-01-12 | Hewlett-Packard Development Company, L.P. | Transactional shared memory system and method of control |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US9798590B2 (en) * | 2006-09-07 | 2017-10-24 | Intel Corporation | Post-retire scheme for tracking tentative accesses during transactional execution |
US8190859B2 (en) * | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US8719807B2 (en) | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US7802136B2 (en) | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8068114B2 (en) * | 2007-04-30 | 2011-11-29 | Advanced Micro Devices, Inc. | Mechanism for granting controlled access to a shared resource |
US8458724B2 (en) | 2007-06-15 | 2013-06-04 | Microsoft Corporation | Automatic mutual exclusion |
US9280397B2 (en) * | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
US8266387B2 (en) * | 2007-06-27 | 2012-09-11 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization emulation |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
US8176253B2 (en) * | 2007-06-27 | 2012-05-08 | Microsoft Corporation | Leveraging transactional memory hardware to accelerate virtualization and emulation |
US9043553B2 (en) * | 2007-06-27 | 2015-05-26 | Microsoft Technology Licensing, Llc | Leveraging transactional memory hardware to accelerate virtualization and emulation |
CN101452400B (zh) * | 2007-11-29 | 2011-12-28 | 国际商业机器公司 | 处理多处理器系统中事务缓冲器溢出的方法和系统 |
US7966453B2 (en) | 2007-12-12 | 2011-06-21 | International Business Machines Corporation | Method and apparatus for active software disown of cache line's exlusive rights |
US8122195B2 (en) | 2007-12-12 | 2012-02-21 | International Business Machines Corporation | Instruction for pre-fetching data and releasing cache lines |
US8015380B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Launching multiple concurrent memory moves via a fully asynchronoous memory mover |
US8275963B2 (en) * | 2008-02-01 | 2012-09-25 | International Business Machines Corporation | Asynchronous memory move across physical nodes with dual-sided communication |
US7941627B2 (en) * | 2008-02-01 | 2011-05-10 | International Business Machines Corporation | Specialized memory move barrier operations |
US8356151B2 (en) * | 2008-02-01 | 2013-01-15 | International Business Machines Corporation | Reporting of partially performed memory move |
US8327101B2 (en) * | 2008-02-01 | 2012-12-04 | International Business Machines Corporation | Cache management during asynchronous memory move operations |
US8245004B2 (en) * | 2008-02-01 | 2012-08-14 | International Business Machines Corporation | Mechanisms for communicating with an asynchronous memory mover to perform AMM operations |
US8095758B2 (en) * | 2008-02-01 | 2012-01-10 | International Business Machines Corporation | Fully asynchronous memory mover |
US8479166B2 (en) * | 2008-08-25 | 2013-07-02 | International Business Machines Corporation | Detecting locking discipline violations on shared resources |
JP5195212B2 (ja) * | 2008-09-17 | 2013-05-08 | 株式会社リコー | 管理システム、管理装置、管理方法、管理プログラム、および記録媒体 |
US9639392B2 (en) * | 2013-12-17 | 2017-05-02 | Intel Corporation | Unbounded transactional memory with forward progress guarantees using a hardware global lock |
US8621478B2 (en) | 2010-01-15 | 2013-12-31 | International Business Machines Corporation | Multiprocessor system with multiple concurrent modes of execution |
US8832415B2 (en) * | 2010-01-08 | 2014-09-09 | International Business Machines Corporation | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests |
US8739164B2 (en) * | 2010-02-24 | 2014-05-27 | Advanced Micro Devices, Inc. | Automatic suspend atomic hardware transactional memory in response to detecting an implicit suspend condition and resume thereof |
US8473952B2 (en) * | 2010-06-30 | 2013-06-25 | Oracle International Corporation | System and method for communication between concurrent transactions using transaction communicator objects |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
WO2012136766A1 (en) * | 2011-04-06 | 2012-10-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core processors |
US8782352B2 (en) * | 2011-09-29 | 2014-07-15 | Oracle International Corporation | System and method for supporting a self-tuning locking mechanism in a transactional middleware machine environment |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
US10286148B2 (en) * | 2012-01-23 | 2019-05-14 | Fenwal, Inc. | Using physiological data in a medical device |
US9268596B2 (en) | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
EP2862058B1 (en) * | 2012-06-15 | 2021-05-19 | Intel Corporation | A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
CN105760140B (zh) * | 2012-06-29 | 2019-09-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
US8914586B2 (en) * | 2012-07-31 | 2014-12-16 | Advanced Micro Devices, Inc. | TLB-walk controlled abort policy for hardware transactional memory |
US8943278B2 (en) | 2012-07-31 | 2015-01-27 | Advanced Micro Devices, Inc. | Protecting large regions without operating-system support |
US9430166B2 (en) * | 2012-08-10 | 2016-08-30 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
US9892063B2 (en) * | 2012-11-27 | 2018-02-13 | Advanced Micro Devices, Inc. | Contention blocking buffer |
US9032152B2 (en) | 2013-03-22 | 2015-05-12 | Applied Micro Circuits Corporation | Cache miss detection filter |
US9535744B2 (en) * | 2013-06-29 | 2017-01-03 | Intel Corporation | Method and apparatus for continued retirement during commit of a speculative region of code |
US9524195B2 (en) | 2014-02-27 | 2016-12-20 | International Business Machines Corporation | Adaptive process for data sharing with selection of lock elision and locking |
CA2830605A1 (en) * | 2013-10-22 | 2015-04-22 | Ibm Canada Limited - Ibm Canada Limitee | Code versioning for enabling transactional memory region promotion |
JP6021112B2 (ja) * | 2013-11-28 | 2016-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 複数のスレッドで順序付きトランザクションを実行する方法、並びに、当該トランザクションを実行するためのコンピュータ及びそのコンピュータ・プログラム |
CN105378652B (zh) * | 2013-12-24 | 2018-02-06 | 华为技术有限公司 | 线程共享资源分配方法及装置 |
US9207967B2 (en) | 2014-01-07 | 2015-12-08 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
US9471371B2 (en) | 2014-02-27 | 2016-10-18 | International Business Machines Corporation | Dynamic prediction of concurrent hardware transactions resource requirements and allocation |
US9442775B2 (en) * | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
US20150242216A1 (en) | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9311178B2 (en) | 2014-02-27 | 2016-04-12 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9424072B2 (en) | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
US9430273B2 (en) | 2014-02-27 | 2016-08-30 | International Business Machines Corporation | Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration |
US9361041B2 (en) | 2014-02-27 | 2016-06-07 | International Business Machines Corporation | Hint instruction for managing transactional aborts in transactional memory computing environments |
US9336097B2 (en) | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
US9645879B2 (en) | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9262206B2 (en) | 2014-02-27 | 2016-02-16 | International Business Machines Corporation | Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments |
US9411729B2 (en) | 2014-02-27 | 2016-08-09 | International Business Machines Corporation | Salvaging lock elision transactions |
US9442853B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging lock elision transactions with instructions to change execution type |
US9465673B2 (en) | 2014-02-27 | 2016-10-11 | International Business Machines Corporation | Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling |
US9329946B2 (en) | 2014-02-27 | 2016-05-03 | International Business Machines Corporation | Salvaging hardware transactions |
US9575890B2 (en) | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US9524187B2 (en) | 2014-03-02 | 2016-12-20 | International Business Machines Corporation | Executing instruction with threshold indicating nearing of completion of transaction |
US9720742B2 (en) * | 2014-05-15 | 2017-08-01 | GM Global Technology Operations LLC | Service and system supporting coherent data access on multicore controller |
CN105874431A (zh) * | 2014-05-28 | 2016-08-17 | 联发科技股份有限公司 | 减少数据交换负载的计算系统以及相关的数据交换方法 |
US9454313B2 (en) * | 2014-06-10 | 2016-09-27 | Arm Limited | Dynamic selection of memory management algorithm |
US9448939B2 (en) * | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9501411B2 (en) * | 2014-08-29 | 2016-11-22 | International Business Machines Corporation | Cache backing store for transactional memory |
US9904645B2 (en) * | 2014-10-31 | 2018-02-27 | Texas Instruments Incorporated | Multicore bus architecture with non-blocking high performance transaction credit system |
US9864708B2 (en) * | 2014-12-16 | 2018-01-09 | Vmware, Inc. | Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels |
US10324768B2 (en) * | 2014-12-17 | 2019-06-18 | Intel Corporation | Lightweight restricted transactional memory for speculative compiler optimization |
GB2533414B (en) * | 2014-12-19 | 2021-12-01 | Advanced Risc Mach Ltd | Apparatus with shared transactional processing resource, and data processing method |
US10732865B2 (en) * | 2015-09-23 | 2020-08-04 | Oracle International Corporation | Distributed shared memory using interconnected atomic transaction engines at respective memory interfaces |
US9998284B2 (en) * | 2015-09-24 | 2018-06-12 | Intel Corporation | Methods and apparatus to provide isolated execution environments |
GB2548845B (en) * | 2016-03-29 | 2019-11-27 | Imagination Tech Ltd | Handling memory requests |
US10169106B2 (en) * | 2016-06-30 | 2019-01-01 | International Business Machines Corporation | Method for managing control-loss processing during critical processing sections while maintaining transaction scope integrity |
US10095637B2 (en) * | 2016-09-15 | 2018-10-09 | Advanced Micro Devices, Inc. | Speculative retirement of post-lock instructions |
US11868818B2 (en) | 2016-09-22 | 2024-01-09 | Advanced Micro Devices, Inc. | Lock address contention predictor |
US10423446B2 (en) * | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
US10339060B2 (en) * | 2016-12-30 | 2019-07-02 | Intel Corporation | Optimized caching agent with integrated directory cache |
US10664306B2 (en) * | 2017-01-13 | 2020-05-26 | Arm Limited | Memory partitioning |
US11119923B2 (en) * | 2017-02-23 | 2021-09-14 | Advanced Micro Devices, Inc. | Locality-aware and sharing-aware cache coherence for collections of processors |
US10418115B2 (en) * | 2017-07-07 | 2019-09-17 | Micron Technology, Inc. | Managed NAND performance throttling |
CN109726017B (zh) * | 2017-10-30 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 一种应用程序之间共享缓存的方法及装置 |
US11018850B2 (en) | 2017-12-26 | 2021-05-25 | Akamai Technologies, Inc. | Concurrent transaction processing in a high performance distributed system of record |
US10514969B2 (en) * | 2018-01-09 | 2019-12-24 | Microsoft Technology Licensing, Llc | Bit-accurate-tracing analysis with applied memory region lifetimes |
GB2570110B (en) * | 2018-01-10 | 2020-04-15 | Advanced Risc Mach Ltd | Speculative cache storage region |
US10558572B2 (en) * | 2018-01-16 | 2020-02-11 | Microsoft Technology Licensing, Llc | Decoupling trace data streams using cache coherence protocol data |
KR102504332B1 (ko) | 2018-02-21 | 2023-02-28 | 삼성전자주식회사 | 서로 이격되어 배치되는 범프 어레이들을 포함하는 메모리 장치 및 이를 포함하는 전자 장치 |
GB2572578B (en) * | 2018-04-04 | 2020-09-16 | Advanced Risc Mach Ltd | Cache annotations to indicate specultative side-channel condition |
US10949210B2 (en) * | 2018-05-02 | 2021-03-16 | Micron Technology, Inc. | Shadow cache for securing conditional speculative instruction execution |
US11204773B2 (en) | 2018-09-07 | 2021-12-21 | Arm Limited | Storing a processing state based on confidence in a predicted branch outcome and a number of recent state changes |
CN109614220B (zh) | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核系统处理器和数据更新方法 |
CN109725943B (zh) * | 2018-12-27 | 2022-05-17 | 龙芯中科技术股份有限公司 | 一种程序跳转方法、装置、电子设备及存储介质 |
US10977038B2 (en) * | 2019-06-19 | 2021-04-13 | Arm Limited | Checkpointing speculative register mappings |
US20220014598A1 (en) * | 2020-07-09 | 2022-01-13 | Ge Aviation Systems Llc | Data service tracker module for a communication system and method of determining a set of data couplings |
CN111913810B (zh) * | 2020-07-28 | 2024-03-19 | 阿波罗智能技术(北京)有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
KR20220056986A (ko) | 2020-10-29 | 2022-05-09 | 삼성전자주식회사 | 메모리 확장기, 이종 컴퓨팅 장치, 및 이종 컴퓨팅 장치의 동작 방법 |
CN113312002A (zh) * | 2021-06-11 | 2021-08-27 | 北京百度网讯科技有限公司 | 数据处理的方法、装置、设备和介质 |
EP4206918A3 (en) * | 2021-12-30 | 2023-11-15 | Rebellions Inc. | Neural processing device and transaction tracking method thereof |
KR20230102226A (ko) | 2021-12-30 | 2023-07-07 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치 및 그의 트랜잭션 트래킹 방법 |
CN114510271B (zh) * | 2022-02-09 | 2023-08-15 | 海飞科(南京)信息技术有限公司 | 用于在单指令多线程计算系统中加载数据的方法和装置 |
CN115757196B (zh) * | 2022-11-09 | 2023-09-01 | 超聚变数字技术有限公司 | 内存、访问内存方法及计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319805A (zh) * | 1992-10-13 | 2001-10-31 | 索尼公司 | 锁定/解锁装置及其控制方法 |
CN1437727A (zh) * | 1999-12-28 | 2003-08-20 | 英特尔公司 | 多线程环境中的读锁定丢失控制 |
CN1447940A (zh) * | 2000-06-28 | 2003-10-08 | 英特尔公司 | 以高速缓存连贯性为基础的高速缓存线的预加载和预控制 |
US20040187115A1 (en) * | 2003-02-13 | 2004-09-23 | Marc Tremblay | Selectively monitoring stores to support transactional program execution |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
JP2936036B2 (ja) * | 1992-10-27 | 1999-08-23 | 富士通株式会社 | メモリアクセス装置 |
JP3512439B2 (ja) * | 1993-07-08 | 2004-03-29 | 富士通株式会社 | チェックイン・チェックアウトモデルにおける施錠方式 |
JP3093609B2 (ja) | 1995-07-27 | 2000-10-03 | エヌイーシーソフト株式会社 | キャッシュメモリの記憶一致制御装置及び方法 |
US5848241A (en) * | 1996-01-11 | 1998-12-08 | Openframe Corporation Ltd. | Resource sharing facility functions as a controller for secondary storage device and is accessible to all computers via inter system links |
JPH09231124A (ja) | 1996-02-20 | 1997-09-05 | Ricoh Co Ltd | メモリロック装置及びメモリロック方法 |
US5758183A (en) * | 1996-07-17 | 1998-05-26 | Digital Equipment Corporation | Method of reducing the number of overhead instructions by modifying the program to locate instructions that access shared data stored at target addresses before program execution |
US6108757A (en) * | 1997-02-28 | 2000-08-22 | Lucent Technologies Inc. | Method for locking a shared resource in multiprocessor system |
JPH1173329A (ja) * | 1997-06-24 | 1999-03-16 | Matsushita Electric Ind Co Ltd | ソフトウエア開発支援システム |
US5987550A (en) * | 1997-06-30 | 1999-11-16 | Emc Corporation | Lock mechanism for shared resources in a data processing system |
US6076126A (en) * | 1997-06-30 | 2000-06-13 | Emc Corporation | Software locking mechanism for locking shared resources in a data processing system |
US6240413B1 (en) * | 1997-12-22 | 2001-05-29 | Sun Microsystems, Inc. | Fine-grained consistency mechanism for optimistic concurrency control using lock groups |
US6078981A (en) * | 1997-12-29 | 2000-06-20 | Intel Corporation | Transaction stall technique to prevent livelock in multiple-processor systems |
US6460119B1 (en) * | 1997-12-29 | 2002-10-01 | Intel Corporation | Snoop blocking for cache coherency |
US6101568A (en) * | 1998-08-25 | 2000-08-08 | Stmicroelectronics, Inc. | Bus interface unit having dual purpose transaction buffer |
US6282637B1 (en) * | 1998-12-02 | 2001-08-28 | Sun Microsystems, Inc. | Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs |
JP3716126B2 (ja) | 1999-03-17 | 2005-11-16 | 株式会社日立製作所 | ディスクアレイ制御装置及びディスクアレイ |
US6665708B1 (en) * | 1999-11-12 | 2003-12-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Coarse grained determination of data dependence between parallel executed jobs in an information processing system |
US6684398B2 (en) * | 2000-05-31 | 2004-01-27 | Sun Microsystems, Inc. | Monitor entry and exit for a speculative thread during space and time dimensional execution |
US6460124B1 (en) * | 2000-10-20 | 2002-10-01 | Wisconsin Alumni Research Foundation | Method of using delays to speed processing of inferred critical program portions |
US6463511B2 (en) * | 2000-12-29 | 2002-10-08 | Intel Corporation | System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model |
US6725337B1 (en) | 2001-05-16 | 2004-04-20 | Advanced Micro Devices, Inc. | Method and system for speculatively invalidating lines in a cache |
ATE498866T1 (de) * | 2001-06-26 | 2011-03-15 | Oracle America Inc | Verfahren zur verwendung eines l2-verzeichnisses, um spekulatives laden in einem mehrprozessorsystem zu ermöglichen |
US6704841B2 (en) * | 2001-06-26 | 2004-03-09 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative stores in a multiprocessor system |
WO2004001527A2 (en) * | 2001-06-26 | 2003-12-31 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative loads in a multiprocessor system |
JP3661614B2 (ja) * | 2001-07-12 | 2005-06-15 | 日本電気株式会社 | キャッシュメモリ制御方法及びマルチプロセッサシステム |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US6981108B1 (en) * | 2001-10-23 | 2005-12-27 | P-Cube Ltd. | Method for locking shared resources connected by a PCI bus |
US7254597B2 (en) * | 2002-01-11 | 2007-08-07 | Sun Microsystems, Inc. | Lock-free implementation of dynamic-sized shared data structure |
US6839816B2 (en) * | 2002-02-26 | 2005-01-04 | International Business Machines Corporation | Shared cache line update mechanism |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
US7120746B2 (en) * | 2002-09-09 | 2006-10-10 | International Business Machines Corporation | Technique for data transfer |
US7062636B2 (en) * | 2002-09-19 | 2006-06-13 | Intel Corporation | Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7269694B2 (en) | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring loads to support transactional program execution |
US7103880B1 (en) * | 2003-04-30 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Floating-point data speculation across a procedure call using an advanced load address table |
US20050086446A1 (en) * | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US7260746B2 (en) * | 2003-10-21 | 2007-08-21 | Massachusetts Institute Of Technology | Specification based detection and repair of errors in data structures |
US7340569B2 (en) * | 2004-02-10 | 2008-03-04 | Wisconsin Alumni Research Foundation | Computer architecture providing transactional, lock-free execution of lock-based programs |
US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US7685365B2 (en) * | 2004-09-30 | 2010-03-23 | Intel Corporation | Transactional memory execution utilizing virtual memory |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7689778B2 (en) * | 2004-11-30 | 2010-03-30 | Intel Corporation | Preventing system snoop and cross-snoop conflicts |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US9268710B1 (en) * | 2007-01-18 | 2016-02-23 | Oracle America, Inc. | Facilitating efficient transactional memory and atomic operations via cache line marking |
-
2004
- 2004-12-29 US US11/027,623 patent/US7984248B2/en active Active
-
2005
- 2005-12-23 DE DE112005003339T patent/DE112005003339T5/de not_active Ceased
- 2005-12-23 GB GB0714433A patent/GB2437211B/en not_active Expired - Fee Related
- 2005-12-23 CN CN201110438827.7A patent/CN102622276B/zh active Active
- 2005-12-23 GB GB0818235A patent/GB2451199B/en not_active Expired - Fee Related
- 2005-12-23 JP JP2007549621A patent/JP4764430B2/ja active Active
- 2005-12-23 DE DE112005003861.0T patent/DE112005003861A5/de not_active Ceased
- 2005-12-23 CN CN2005800454107A patent/CN101095113B/zh active Active
- 2005-12-23 GB GB0818238A patent/GB2451200B/en not_active Expired - Fee Related
- 2005-12-23 WO PCT/US2005/047376 patent/WO2006071969A1/en active Application Filing
- 2005-12-23 DE DE112005003874.2T patent/DE112005003874B3/de not_active Expired - Fee Related
-
2010
- 2010-09-28 JP JP2010217662A patent/JP5404574B2/ja active Active
- 2010-09-28 JP JP2010217663A patent/JP5255614B2/ja active Active
- 2010-11-10 US US12/943,314 patent/US8176266B2/en not_active Expired - Fee Related
-
2011
- 2011-06-24 US US13/168,171 patent/US8458412B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1319805A (zh) * | 1992-10-13 | 2001-10-31 | 索尼公司 | 锁定/解锁装置及其控制方法 |
CN1437727A (zh) * | 1999-12-28 | 2003-08-20 | 英特尔公司 | 多线程环境中的读锁定丢失控制 |
CN1447940A (zh) * | 2000-06-28 | 2003-10-08 | 英特尔公司 | 以高速缓存连贯性为基础的高速缓存线的预加载和预控制 |
US20040187115A1 (en) * | 2003-02-13 | 2004-09-23 | Marc Tremblay | Selectively monitoring stores to support transactional program execution |
Also Published As
Publication number | Publication date |
---|---|
US20060161740A1 (en) | 2006-07-20 |
GB2451199B (en) | 2009-05-27 |
DE112005003874B3 (de) | 2021-04-01 |
GB2437211A8 (zh) | 2007-10-15 |
US20110055493A1 (en) | 2011-03-03 |
US20110252203A1 (en) | 2011-10-13 |
US7984248B2 (en) | 2011-07-19 |
US8176266B2 (en) | 2012-05-08 |
GB0818235D0 (en) | 2008-11-12 |
WO2006071969A1 (en) | 2006-07-06 |
GB2437211A (en) | 2007-10-17 |
GB0714433D0 (en) | 2007-09-05 |
CN101095113A (zh) | 2007-12-26 |
JP5404574B2 (ja) | 2014-02-05 |
DE112005003339T5 (de) | 2007-11-22 |
GB2451199A (en) | 2009-01-21 |
JP2011028774A (ja) | 2011-02-10 |
GB2437211B (en) | 2008-11-19 |
GB2451200B (en) | 2009-05-20 |
JP2008525923A (ja) | 2008-07-17 |
CN101095113B (zh) | 2012-05-23 |
JP2011044161A (ja) | 2011-03-03 |
CN102622276A (zh) | 2012-08-01 |
GB2451200A (en) | 2009-01-21 |
JP4764430B2 (ja) | 2011-09-07 |
DE112005003861A5 (de) | 2014-06-05 |
US8458412B2 (en) | 2013-06-04 |
JP5255614B2 (ja) | 2013-08-07 |
GB0818238D0 (en) | 2008-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102622276B (zh) | 多处理器环境中基于事务的共享数据操作 | |
CN101308462B (zh) | 管理对共享存储器单元的存储器访问的方法和计算系统 | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
JP4388916B2 (ja) | 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 | |
CN101950259B (zh) | 用于执行事务的装置、系统及方法 | |
Le et al. | Transactional memory support in the IBM POWER8 processor | |
Rajwar et al. | Speculative lock elision: Enabling highly concurrent multithreaded execution | |
CN102483704B (zh) | 具有高效的高速缓存支持的事务内存系统 | |
US20100162247A1 (en) | Methods and systems for transactional nested parallelism | |
US8539465B2 (en) | Accelerating unbounded memory transactions using nested cache resident transactions | |
US8627048B2 (en) | Mechanism for irrevocable transactions | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US20050154862A1 (en) | Mechanism for processing speculative LL and SC instructions in a pipelined processor | |
CN102144218A (zh) | 可虚拟化的先进同步设备 | |
US20210342152A1 (en) | Handling load-exclusive instructions in apparatus having support for transactional memory | |
Ohmacht et al. | IBM Blue Gene/Q memory subsystem with speculative execution and transactional memory | |
Bahr et al. | Architecture, design, and performance of Application System/400 (AS/400) multiprocessors | |
Adl-Tabatabai et al. | Presenters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |