CN101095113A - 多处理器环境中基于事务的共享数据操作 - Google Patents

多处理器环境中基于事务的共享数据操作 Download PDF

Info

Publication number
CN101095113A
CN101095113A CNA2005800454107A CN200580045410A CN101095113A CN 101095113 A CN101095113 A CN 101095113A CN A2005800454107 A CNA2005800454107 A CN A2005800454107A CN 200580045410 A CN200580045410 A CN 200580045410A CN 101095113 A CN101095113 A CN 101095113A
Authority
CN
China
Prior art keywords
affairs
execution
shared storage
address
write
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.)
Granted
Application number
CNA2005800454107A
Other languages
English (en)
Other versions
CN101095113B (zh
Inventor
S·科塔帕利
J·H·克劳福德
K·维德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201110438827.7A priority Critical patent/CN102622276B/zh
Publication of CN101095113A publication Critical patent/CN101095113A/zh
Application granted granted Critical
Publication of CN101095113B publication Critical patent/CN101095113B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

本文所述的装置及方法是用于通过事务执行采用无锁定同步来处理多个处理器之间的共享存储器访问。以软件划分的事务被推测地执行。在执行期间,事务缓冲器跟踪对于从共享存储器加载的以及要向共享存储器写入的地址的失效远程访问/请求。如果遇到失效访问,则事务被重新执行。在重新执行事务预定次数之后,可采用锁定/信标非推测地重新执行事务。

Description

多处理器环境中基于事务的共享数据操作
技术领域
[0001]本发明涉及集成电路领域,具体来说,涉及多个集成电路、核心和线程之间的共享数据操作。
背景技术
[0002]半导体加工和逻辑设计方面的进步允许在集成电路器件上可存在的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核心和多个逻辑处理器。集成电路通常包括单个处理器管芯,在其中,处理器管芯可包括任何数量的核心或逻辑处理器。
[0003]作为一个实例,单个集成电路可能具有一个或多个核心。术语“核心”通常表示集成电路上的逻辑保持独立体系结构状态的能力,在其中,各独立体系结构状态与专用执行资源关联。因此,具有两个核心的集成电路通常包括用于保持两个分离且独立的体系结构状态的逻辑,各体系结构状态与其自己的执行资源、诸如低级高速缓存、执行单元和控制逻辑关联。各核心可共享某些资源,诸如高级高速缓存、总线接口以及取/解码单元。
[0004]作为另一个实例,单个集成电路或单个核心可具有用于执行多个软件线程的多个逻辑处理器,这又称作多线程集成电路或多线程核心。多个逻辑处理器通常共享公共数据高速缓存、指令高速缓存、执行单元、分支预测器、控制逻辑、总线接口及其它处理器资源,同时保持各逻辑处理器的特有体系结构状态。多线程技术的一个实例是来自Intel公司(Santa Clara,California)的超线程技术(HT),它使得能够采用信号物理处理器并行地执行线程。
[0005]当前的软件具有运行各个软件线程的能力,它可并行调度在多个核心或逻辑处理器上的执行。集成电路上数量不断增加的核心和逻辑处理器使更多软件线程能够被执行。但是,可同时执行的软件线程的数量的增加对于使软件线程之间共享的数据同步造成问题。
[0006]多个核心或多个逻辑处理器系统中访问共享数据的一个常见解决方案包括使用锁定来保证对共享数据的多个访问的互斥。作为一个实例,如果第一软件线程正访问某个共享存储器位置,则保护该共享存储器位置的信标被锁定,以便在保护该存储器位置的信标被解锁之前拒绝系统中的其它任何软件线程访问该共享存储器位置。
[0007]但是,如上所述,执行多个软件线程的不断增加的能力可能引起错误争用和执行的串行化。错误争用因以下事实而发生:信标通常设置成保护数据的集合,它根据软件所支持的共享粒度,可覆盖极大数量的数据。为此,信标用作争用“放大器”,因为对于信标可能存在多个软件线程的争用,即使软件线程正访问完全独立的数据项。这引起其中第一软件线程锁定保护第二软件线程可安全访问而不妨碍第一软件线程执行的数据位置的信标的情况。但是,由于第一软件线程锁定了信标,所以第二线程必须等到信标被解锁,从而引起原本并行执行的串行化。
附图说明
[0008]附图中的各图以举例而不是限定的方式来说明本发明。
[0009]图1说明具有N个核心以及N个核心的每个中的M个逻辑处理器的集成电路。
[0010]图2说明用于实现事务执行的集成电路的一个实施例。
[0011]图3说明图3所示的事务缓冲器的一个实施例。
[0012]图4说明以软件代码划分的事务,所示软件代码被编译成编译代码的第一和第二实施例。
[0013]图5说明系统中的事务执行的一个实施例。
[0014]图6说明执行事务的方法的流程图的一个实施例。
[0015]图7说明用于事务执行的代码流程的一个实施例。
具体实施方式
[0016]在以下描述中,阐述了大量具体细节,诸如物理/逻辑处理器的具体数量、具体的事务缓冲器字段以及具体处理器逻辑和实现,以便提供对本发明的透彻理解。然而,本领域的技术人员会清楚,这些具体细节不一定要用于实施本发明。在其它情况下,没有详细描述众所周知的组件或方法、例如微处理器的众所周知的功能块等,以免不必要地影响对本发明的理解。
[0017]本文所述的装置及方法是用于通过事务执行采用无锁定同步来处理多个软件线程之间的共享存储器访问。对于本领域的技术人员显而易见,本文公开的方法及装置可在诸如个人数字助理、移动平台、桌面平台和服务器平台之类的、以及具有任何数量的集成电路、核心或逻辑处理器的任何等级的计算机系统中实现。例如,具有四个集成电路的微处理器系统可采用本文所述的方法及装置来管理对集成电路中的任何四个所共享的存储器的共享访问。
[0018]在图1中,说明可实现事务执行的集成电路105。在一个实施例中,集成电路105是能够与其它微处理器无关地进行操作的微处理器。或者,集成电路105是结合多个处理元件进行操作的处理元件。
[0019]集成电路105说明第一核心110、第二核心115和第N核心120。本文所使用的“核心”表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,各独立保持的体系结构状态与至少一部分专用执行资源关联。执行资源可包括算术逻辑单元(ALU)、浮点单元(FPU)、寄存器文件、用于对单个或多个整数和/或浮点数据操作数进行串行或并行运算的操作数寄存器以及用于执行代码的其它逻辑。此外,多个核心可共享对于诸如高级高速缓存、总线接口和控制逻辑以及取/解码逻辑之类的其它资源的访问。
[0020]作为一个说明性实例,集成电路105具有八个核心,各核心与一组体系结构状态寄存器关联,诸如通用寄存器、控制寄存器、高级可编程中断控制(APIC)寄存器、机器状态寄存器(MSR)或者用于存储指令指针的状态的寄存器,以便保持独立体系结构状态。此外,各组体系结构状态寄存器独占地与单独执行单元关联。
[0021]集成电路105还说明核心110,其中包括第一逻辑处理器125、第二逻辑处理器130和第M逻辑处理器135。本文所使用的逻辑处理器表示位于集成电路上的能够保持独立体系结构状态的任何逻辑,其中,独立保持的体系结构状态共享对执行资源的访问。如上所述,各逻辑处理器具有保持独立体系结构状态的一组体系结构状态寄存器;但是,体系结构状态中的每个共享对执行资源的访问。因此,在任何单个集成电路上,可能存在任何数量的核心和/或任何数量的逻辑处理器。为了说明,在论述用于事务执行的装置及方法时,在论述核心和/或逻辑处理器的操作的过程中会引用术语“处理器”。
[0022]参照图2,描述集成电路的一个实施例,以便说明事务执行的一个具体实现。但是,显而易见,参照图2所述的方法及装置可在任何等级的系统中实现,例如在图5所示的系统中。在一个实施例中,集成电路205是能够无序推测的,在其中,指令能够以与程序中给出的不同的顺序执行。或者,处理器205是能够有序执行的,在其中,以原始程序顺序发出及执行指令。
[0023]集成电路205可包括可能是核心或逻辑处理器的任何数量的处理器。例如,集成电路205具有八个核心,各核心具有两个逻辑处理器,它们允许在集成电路205上一次执行16个软件线程。因此,集成电路205通常称作多线程多核心处理器。在图2中,集成电路205被单独表示,以免影响对本发明的理解;但是,集成电路205可单独或者与其它处理器结合操作。
[0024]集成电路205还可包括,但不要求包括,没有具体描绘的以下项的任一个或任何组合:数据通路,指令通路,虚拟存储地址转换单元(转换缓冲器),算术逻辑单元(ALU),能够执行单个指令或多个指令以及能够对单个或多个数据操作数进行串行或并行运算的浮点计算单元,寄存器,中断控制器,高级可编程中断控制器(APIC),预取单元,指令重新排序单元,以及用于取或执行指令并对数据进行运算的其它任何逻辑。
[0025]集成电路205说明前端210。前端210表示为包括指令取215、指令解码220和分支预测225。前端210不限于仅包括所示的逻辑,而是还可包括其它逻辑,诸如外部数据接口265和低级指令高速缓存。前端210取出将由集成电路205执行的指令并对其解码。如图所示,前端210还包括分支预测逻辑225,以便预测将被取出并解码的指令。前端210可取出定长指令、变长指令、宏指令或者具有单独操作的指令并对其解码。
[0026]指令通常包括将对数据操作数执行的多个运算,并且通常称作宏指令,而待执行的单独操作通常称作微操作。但是,指令也可以指单个操作。因此,本文所使用的微操作表示将由集成电路205执行的任何单个操作,而指令则表示宏指令、单个操作指令或者这两者。作为一个实例,相加宏指令包括从第一关联地址读取第一数据操作数的第一微操作、从第二关联地址读取第二数据操作数的第二微操作、把第一和第二数据操作数相加以得到结果的第三微操作以及把结果存储在寄存器位置中的第四微操作。
[0027]事务执行通常包括把多个指令或操作组合为事务或者代码的临界段。在一个实施例中,集成电路205中的硬件把宏操作组合为事务。以硬件标识事务包括若干因素,例如锁定获取和锁定释放的使用、事务的嵌套、非推测性存储器操作的互斥以及存储器排序要求对于用来构建事务的构造的覆盖。在另一个实施例中,事务以软件划分。参照图5更详细地论述事务的软件划分。
[0028]集成电路205还包括执行单元275和寄存器文件270以便执行宏操作组,又称作事务和临界段。与传统的锁定技术不同,当事务的最终状态被确定时,事务执行通常要求推测地执行事务/临界段,并把状态更新推迟到推测执行结束时。作为一个实例,临界段由前端210标识,推测地执行,然后仅当远程代理、比如另一个核心或逻辑处理器没有对临界段执行期间访问的存储器位置进行失效请求时,才由退出逻辑235退出。
[0029]作为说明性实例,远程代理包括存储器更新装置,例如另一个集成电路、处理元件、核心、逻辑处理器或者没有被调度为执行或没有正在执行未决事务的任何处理器/装置。失效请求通常包括远程代理对事务中的微操作所操纵的存储器位置的请求/访问、锁定保护事务中微操作所操纵的存储器位置的信标的请求、或者远程代理为了拥有事务中微操作所操纵的存储器位置而进行的请求。参照图3更详细地论述失效请求。
[0030]如果在执行事务/临界段结束时,结果被认为不一致或无效,则事务/临界段不退出,并且状态更新不提交给寄存器或存储器。另外,如果事务不退出,则重新执行事务的两个选项包括:(1)推测地重新执行先前执行的事务,或者(2)利用锁定/信标非推测地重新执行事务。
[0031]事务的推测执行可包括存储器更新和寄存器状态更新。在一个实施例中,集成电路205能够保持及合并推测存储器和寄存器文件状态更新,以便在更新存储器和寄存器文件之前确保事务执行结果是有效且一致的。作为一个说明性实例,集成电路205在任意时间段把标识为相同事务的一部分的所有指令/微操作结果保持为推测/临时状态。为了实现推测存储器和寄存器文件状态更新的保持及合并,特殊寄存器检查点硬件和操作数旁路逻辑用于把推测结果存储在暂时寄存器中。
[0032]在另一个实施例中,集成电路205能够对寄存器状态更新以及从存储器更新中的指令退出去耦。在这个实施例中,推测更新在解决推测之前被提交给寄存器文件370;但是,存储器更新被缓冲到事务退出之后。因此,一个可能的优点是,事务中的各单独指令或微操作可在执行之后立即退出。此外,寄存器状态更新和存储器更新的去耦可能减少在提交给体系结构寄存器文件270之前存储推测结果的额外寄存器。
[0033]但是,在这个实施例中,推测地更新寄存器文件270要求把对寄存器文件270的每个更新当作推测更新来处理。寄存器再用和分配策略可证明对寄存器文件270的更新为推测更新。作为一个说明性实例,用于缓冲用于事务的数据的输入寄存器对于在事务的提交未决期间接收新数据存在偏见。在这个实例中,在事务期间使用的输入寄存器对于接收新数据存在偏见;因此,如果推测执行失败或者需要重启,则输入寄存器组通常能够再用而无需重新初始化,因为将首先使用不是输入寄存器组的组成部分的其它寄存器。
[0034]在另一个实例中,如果输入寄存器在推测执行或者事务的提交未决期间接收新数据,则再用的输入寄存器的状态被存储在独立的存储区、如另一个寄存器中。在执行失败或者发起重新执行时,输入寄存器的原始内容的存储允许输入寄存器被重新加载其原始内容。处理器暂时存储寄存器内容、然后在重新执行时重新加载通常称作溢出和再填充。
[0035]在事务/临界段中对共享存储器、如高速缓存240的存储器访问的一致性可被跟踪,以便确保从其中读取的存储器位置仍然具有相同信息,以及待更新/写入的存储器位置还没有被另一个代理读取或更新。作为第一实例,存储器访问是读取/加载数据、数据操作数、数据行或者存储器位置的任何内容的加载操作。作为第二实例,存储器访问包括存储器更新、存储或写操作。
[0036]在一个实施例中,事务缓冲器265跟踪对诸如高速缓存240之类的共享存储器中的诸如高速缓存行245、250和255之类的数据行的访问。作为说明性实例,高速缓存行245-255包括数据行、关联物理地址和标记。关联物理地址引用集成电路205外部的存储器位置或者位于集成电路205上的存储器位置。
[0037]来看图3,说明事务缓冲器265的一个实施例。事务缓冲器265可包括事务跟踪逻辑,以便跟踪远程代理对于在事务中从共享存储器加载的各地址以及被写入共享存储器的各地址进行的失效请求/访问。作为说明性实例,远程代理包括其它处理元件,例如另一个逻辑处理器、核心、集成电路、处理元件、或者没有被调度以执行或没有正在执行未决事务的任何处理器/装置。
[0038]在一个实施例中,事务缓冲器265包括加载表305和存储/写入缓冲器325,以便在未决事务执行期间分别跟踪加载/读取和存储/写入。在这里,加载表305存储加载条目、比如加载条目307,以便对应于在未决事务/临界段的执行期间从共享存储器中加载/读取的各数据行。在一个实施例中,加载条目包括物理地址310的表示和失效访问字段(IAF)315。作为第一实例,物理地址310的表示包括用来引用存储器位置的实际物理地址。作为第二实例,该表示包括物理地址的编码形式或一部分、如标记值,以便引用加载数据行,以及包括长度/大小信息。加载数据的长度在设计中可能是隐式的;因此,不需要对所加载数据的长度/大小的具体引用。在一个实施例中,加载数据的隐式长度/大小是单个高速缓存行。
[0039]作为说明性实例,IAF315在加载条目307第一次存储在加载表305中时具有第一值,以及在远程代理对物理地址310所引用的存储器位置进行失效访问或失效访问请求时改变为第二值。例如,失效请求/访问是远程代理在未决的临界段的执行期间对物理地址310所引用的存储器位置写入,在其中,物理地址310表示在未决的临界段的执行期间被读取的存储器位置。作为简化实例,IAF315在存储加载条目307时初始化为第一逻辑值1,加载条目307包括引用在临界段的执行期间被加载的存储器位置的物理地址310。如果远程代理在未决的临界段的执行期间对物理地址310所引用的存储器位置写入,则IAF315字段改变为第二值0,以便表示远程代理对加载条目307所引用的存储器位置进行了失效访问。
[0040]在一个实施例中,加载表305还可用来跟踪远程代理进行的失效锁定/信标请求。当执行事务时,信标或分开的加载条目、如加载条目307用来跟踪事务的信标。信标变量可采用信标变量的一般加载操作来跟踪,加载操作以如上所述的相似方式来跟踪。实际上,跟踪对信标的失效请求的信标加载条目、如加载条目307包括物理地址字段310和IAF315。物理地址字段310可包括信标值存储在的物理地址的表示。
[0041]与以上所述的创建加载条目的操作相似,IAF315在把信标加载条目307存储到加载表305时被加载第一值,以便跟踪当前事务的锁定变量/信标。如果远程代理在未决事务的执行期间请求或者获取物理地址310所引用的信标锁定,则IAF315设置成第二值,以便表示远程代理请求/获得了执行期间对事务的锁定。显然,多个代理可跟踪锁定;但是,失效在代理之一获得实际锁定时执行。
[0042]加载表305不限于图4所示的实施例。作为一个实例,事务缓冲器265确定哪些加载条目、如加载条目307为空的(未被当前事务使用的条目,并且可能具有缺省或无用数据),以及哪些加载条目为满的(由当前事务创建的条目)。在这里,计数器可用来跟踪引用当前加载条目的分配指针。或者,另一个字段、如分配跟踪字段(ATF)存在于各加载条目中,以便跟踪该加载条目为空还是为满。作为一个实例,加载条目307包括具有第一值、如逻辑1的ATF,以便表示未被当前事务创建的空加载条目。当加载条目307由当前事务创建时,加载条目307中的ATF改变为第二值、如逻辑0。
[0043]在另一个实施例中,被加载/读取的数据行的大小/长度不是隐式的,而是另一个字段、如长度字段存在于加载表305中,以便确定所加载数据的长度/大小。加载表305可能是本领域已知的用于跟踪推测加载的高级加载地址表(ALAT)。
[0044]再参照图3,存储写入缓冲器325存储写入条目、如写入条目327,以便对应于在未决事务/临界段的执行期间将在共享存储器中被写入/更新的各数据行或部分数据行。例如,写入条目327包括物理地址330的表示、失效访问字段(IAF)335和数据保存字段340。作为第一实例,物理地址330的表示包括用来引用在未决的临界段的结束时或者执行期间将被写入的存储器位置的实际物理地址。作为第二实例,该表示包括物理地址的编码形式或一部分、如标记值,以便引用在未决的临界段执行结束时要被写入的数据行。
[0045]对于以上实例,IAF335在写入条目327第一次存储在写入表325时具有第一值,以及在远程代理对物理地址330所引用的存储器位置进行失效访问时改变为第二值。在一个实施例中,失效访问是远程代理在未决的临界段的执行期间对物理地址330所引用的存储器位置写入。另外,失效访问是远程代理在未决的临界段的执行期间从物理地址330读取。另一个失效访问可以是远程代理获得物理地址330所引用的存储器位置的所有权。作为简化实例,IAF335在存储写入条目327时初始化为第一逻辑值1。如果远程代理在未决的临界段的执行期间对物理地址330所引用的存储器位置进行读或写,则IAF325改变为第二逻辑值0,以便表示远程代理对写入条目327所引用的存储器位置进行了失效访问。
[0046]写入条目327还说明缓冲/保存待写入的推测数据的数据保存字段340。数据保存字段340还可用来跟踪被跟踪数据行的哪一个部分包含新数据与哪一个部分尚未作为推测存储的目标。跟踪已改变部分可帮助稍后在提交过程中把推测数据合并到实际存储器位置。
[0047]在一个实施例中,从存储操作中待写入的行的所有权在事务中的单独操作的执行和退出时获得。作为预取所有权的备选方式,在每个单独的写入/存储微操作退出时,没有获得待写入的物理地址的所有权,直至事务退出之前的事务结束为止。在任一个实施例中,在事务结束时,如果所有权在事务的执行期间被放弃,则事务不退出(失败),因为进行了失效访问。一旦事务将退出,则待写入的各行的所有权没有被放弃,直至已经提交所有存储器更新之后为止。如果远程代理在退出期间请求行的所有权,则请求可被排队并保持未决,直至已经提交所有存储器更新/写入之后为止。
[0048]写入表325不限于图4所示的那样。例如,它可包括未示出的阻塞字段,以便在被设置时阻挡从远程代理对共享存储器、如高速缓存的窥探。写入条目的阻塞字段设置为第一值,以便允许对相应物理地址的窥探,以及在高速缓存行被阻塞以阻挡远程代理对高速缓存行的窥探时设置为第二值。阻塞字段在提交过程中可能特别有用,用来阻挡窥探以及不允许任何所有权变更。如上所述,来自远程代理的对所有权的任何请求可被排队,直至已经提交事务之后为止。实现阻塞字段的一个示范方法是当设置了阻塞字段时在预定时间长度阻挡窥探,其中预定时间长度基于存在的存储缓冲器的数量。
[0049]写入表325还可包括长度字段、如以上参照加载表305论述的长度字段,用于存储待写入的推测数据的长度。任何数量的其它字段或字段组合可包含在存储表/缓冲器325中。例如,远程代理字段用来跟踪标识进行了失效访问的远程代理的处理器ID或其它ID。
[0050]事务缓冲器265可用硬件或固件来实现。在另一种情况中,事务缓冲器365用软件来实现并由集成电路205运行。在又一个实例中,事务缓冲器用微码来实现。
[0051]在执行临界段/事务中的所有微操作之后,如果在未决的临界段的执行期间没有发生失效访问,则通常提交事务。在退出之后,通常以原子方式提交事务。作为一个实例,以原子方式写入/提交未决的临界段包括把临界段执行期间缓冲的每一个数据行写入共享存储器。
[0052]在一个实施例中,在对于在未决临界段的执行期间被跟踪的失效访问检查事务缓冲器265之后,未决事务由退出逻辑235退出,如图2所示。作为一个实例,对于待退出的未决事务,检查与未决事务关联的、存储在加载表305中的各加载条目IAF以及存储在存储表/缓冲器325中的各写入条目IAF。另外,也检查被创建以便跟踪未决事务的锁定变量或信标的任何加载条目,以便确保请求锁定或信标的远程代理没有进行失效访问。如果没有发现失效访问,则允许事务退出,并且阻塞存储缓冲器。一旦同时进行阻塞和允许退出,存储器更新可以串行方式执行。一旦完成,“阻塞”状态被消除,行被放弃,以及事务被认为已提交。
[0053]作为简化实例,事务包括从位置0001读取以及对位置0002写入值1010的微操作。在执行第一微操作时,加载表305将存储加载条目307,其中包含表示位置0001的物理地址字段310和具有第一值1的IAF315。在执行第二微操作时,存储表325将存储写入条目327,其中包含表示位置0002的物理地址330、具有第一值1的IAF335和数据字段340中的1010。另外,加载和写入条目还可包括以上所述的大小/长度信息或者其它字段。如果远程代理在执行期间或者在事务仍然未决的同时对位置0001写入,则IAF315设置为第二值0,以便表示进行了失效访问。在尝试退出事务时,IAF315表示失效访问,因此事务不会退出,以及值1010不会被写入位置0002。但是,如果没有远程代理对位置0001写入,并且没有远程代理对位置0002读/写,如IAF315和335中的1所表示,则事务被退出,以及值1010被写入位置0002。
[0054]因此,确定在未决事务期间发生了失效访问之后,不退出事务,存在多个选项。第一选项包括重新执行事务。如上所述,输入寄存器为下列任一种:(1)如果它们在事务未决期间接收到新数据,则重新初始化到其原始状态,或者(2)如果它们在事务未决期间没有接收到新数据,则已经存在于其原始状态中。因此,以与先前相同的方式推测地重新执行事务。第二选项包括与进行了失效访问的远程代理结合采用后退算法推测地重新执行事务。作为一个实例,指数后退算法用来尝试完成事务而没有远程代理争用相同数据的情况。另一个选项包括采用本领域已知的软件非阻挡机制来重新执行事务。第四选项包括在推测地重新执行事务预定次数之后,采用锁定/信标非推测地重新执行事务。信标有效地锁定在事务期间将被读出和写入的地址。
[0055]采用锁定/信标作为失败机制的第四选项可用硬件、软件或者用于运行软件的硬件的组合来实现。例如,在软件实现的封锁机制中,信标用于锁定对于存储器位置的任何粒度的访问。希望访问某个存储器位置的各处理器争夺保护那个位置的信标。如果信标设置为表示无锁定的第一值,则第一处理器使信标翻转到表示地址/存储器位置被锁定的第二值。把信标翻转为第二值通过软件确保使信标翻转的处理器获得对于那个存储器位置以及可能由那个信标保护的一系列存储器位置的独占访问。集成电路205可能具有调用/执行软件形式的信标的分开的封锁逻辑260,或者可能只是采用现有执行逻辑来执行/调用软件封锁。信标可以是软件实现的;因此,信标可存在于系统存储器(未示出)中。
[0056]作为实现封锁逻辑260的另一个实例,如图2所示,封锁逻辑260或者在封锁逻辑260上运行的软件采用用于防止对于共享存储器的指定行的至少一个远程代理访问的封锁机制。在一个实施例中,封锁逻辑包括锁定位。作为第一实例,在硬件中,锁定位处于寄存器或者高速缓存行中。作为第二实例,锁定位以在封锁逻辑260上运行并且存在于系统存储器中的软件来表示。
[0057]当锁定位具有第一值时,允许对共享存储器的预定或指定行的访问。但是,当锁定位具有第二值时,阻止对共享存储器的指定行的访问。锁定位可存在于高速缓存240、封锁逻辑260、处理器205中的其它任何存储器或者系统存储器中。数据行的任何粒度可由单个信标或者通过设置单个位来锁定。作为一个实例,2S行通过设置单个锁定位来锁定。
[0058]作为把信标用作故障安全机制的一个实例,事务被执行第一次数、例如五次,但是在各执行期间,远程代理对于在事务执行期间被读取的地址、如说明性地址0001进行失效访问。循环通过事务代码第六次,满足六的执行门限。一旦满足门限或预定执行数量,信标用于执行事务。
[0059]在一种软件实现中,争夺保护地址0001的信标。如果地址0001当前没有被信标锁定,则翻转信标的值以表示它当前被锁定。然后非推测地重新执行事务。
[0060]作为备选方案,在一种硬件实现中,可由单个晶体管或任何数量的晶体管组成的锁定电路、如锁定电路263把与地址0001关联的锁定位设置为防止在事务的第六次执行期间远程代理至少对地址0001的访问的第二值。
[0061]数据行的锁定不限于信标或锁定位的使用,而是包括用于防止对数据行的访问的任何方法或装置,不管是以硬件还是以软件实现。作为另一个实例,三态装置用来防止对数据行的互连访问。
[0062]来看图4,说明以软件划分的事务的一个实例。如上所述,事务通常包括待执行的一组指令/微操作。因此,事务声明可能是划分事务的任何方法。在图4中,事务410具有某些操作的实例,例如读取存储器、执行操作以及更新/写入存储器。事务410通过事务声明/标识符405来划分,它表示为Atomic{...};。但是,事务声明不受此限制。作为简单实例,把多个操作或指令组合的一对括号是标识事务/临界段的边界的事务声明/标识符。
[0063]编译的事务声明405的一个示例在编译实例415中表示。事务430的边界由事务标识符425标识;因此,执行事务的处理器能够从标识符识别组成事务/临界段的微操作。编译的事务声明405的另一个示例在编译实例425中表示。在这个示例中,事务声明435标识事务440的边界。
[0064]为了逐步查看这个实例,行1至3标识事务执行,把谓词Px设置为1以及把Py设置为0,在Rm中把计数变量初始化为0,以及Rn中的计数的门限。谓词通常在谓词具有一个值时包括执行的一种类型或通路,以及在谓词具有另一个值时包括执行的另一种类型或通路。在行4-9,计数变量被初始化为表示事务将被推测地执行的次数的数量,计数变量则与门限进行比较或者以其它方式评估,以便查看锁定谓词是否应当设置成执行具有锁定/信标的事务(非推测地),计数变量根据设计来递减或递增,以便表示事务已经被执行的次数,以及事务开始。行10至12包括在事务440的临界段中任何数量的操作。最后,行14包括用于探测事务跟踪逻辑/缓冲器的检查指令,如上所述,用于远程代理在事务执行期间进行的失效访问。
[0065]来看图5,说明采用事务执行的系统的一个实施例。说明微处理器505和510,但是,该系统可具有任何数量的物理微处理器,各物理微处理器具有采用事务执行的任何数量的核心或者任何数量的逻辑处理器。作为一个实例,微处理器505和510各具有存在于其管芯上的多个核心,各核心具有多个线程,从而得到多线程核心。在一个实施例中,微处理器505和510能够无序推测和非推测执行。在另一个实施例中,微处理器505和510能够仅有序执行。
[0066]微处理器505和510具有高速缓存507和512。在一个实施例中,高速缓存507和512存储从系统存储器530最近取出的数据和/或指令。在这个实施例中,高速缓存507和高速缓存512会高速缓存专用于它们的相应微处理器的数据。存储器530可以是事务执行用来访问的共享存储器。在另一个实施例中,在事务期间被访问的系统中存在的任何存储器是共享存储器。例如,如果微处理器505和510访问高级共享高速缓存,图5中未示出。
[0067]微处理器505和510表示为通过互连515耦合到存储控制器520。存储控制器分别通过互连535耦合到图形设备540。在一个实施例中,图形设备540集成在存储控制器520中。存储控制器还通过互连525耦合到系统存储器530。系统存储器530可能是系统中使用的任何类型的访问存储器。在一个实施例中,系统存储器530是随机存取存储器(RAM)装置,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、单数据速率(SDR)RAM、双倍数据速率(DDR)RAM、其它任何多倍数据速率RAM或者其它任何类型的访问存储器。
[0068]输入/输出(I/O)控制器550通过互连545耦合到存储控制器545。I/O控制器550通过互连555耦合到存储装置560、网络接口565和I/O设备570。在一个实施例中,存储装置560是硬盘驱动器。在另一个实施例中,存储装置560是盘驱动器。在又一个实施例中,存储装置560是系统中的任何静态存储装置。在一个实施例中,网络接口565与局域网(LAN)接口。在另一个实施例中,网络接口565与更大的网络、如互联网接口。输入/输出设备570可包括任何用户输入或系统相关输出设备,诸如键盘、鼠标、监视器或打印机。
[0069]随后参照图6,说明执行事务的方法的流程图的一个实施例。在框605,在第一事务的执行期间,跟踪对于第一事务所引用的共享存储器中的多个行的失效访问。
[0070]在一个实例中,事务缓冲器用来跟踪失效访问。事务缓冲器包括加载表和存储表/缓冲器。加载表跟踪对于第一事务的执行期间被加载的地址的失效访问。对于被加载的地址/存储器位置的失效访问包括诸如处理器、核心、线程或逻辑处理器之类的没有被调度为执行第一事务的远程代理对于在第一事务的执行期间被加载的地址或存储器位置写入。另外,加载表可包括封锁机制条目,以便跟踪在事务执行期间对于信标或其它封锁机制的失效访问。在这个实例中,对于封锁机制的失效访问包括远程代理请求或者获得对封锁机制所保护/锁定的地址的锁定。
[0071]与加载表相似地工作的存储表/缓冲器跟踪对于在提交事务时将被写入的地址或存储器位置的失效访问。失效访问在这里可包括远程代理对上述地址或存储器位置读出或者写入。
[0072]在框610,如果跟踪到失效访问,则第一事务被重新执行第一次数。因此,如果在第一事务的执行期间跟踪到失效访问,则第一事务只是被重新执行。但是,如果第一事务已被重新执行可由处理器中的软件或逻辑中的计数变量表示的预定次数,则第一事务所引用的共享存储器中的多个行被锁定。锁定可通过软件实现的封锁机制、如信标来进行,它向一个处理器封锁或给予对于多个行的独占访问。锁定也可通过采用封锁逻辑的硬件来进行,以便物理封锁对第一事务所引用的多个行的访问。
[0073]在框620,在已经锁定对多个行的访问之后,再次重新执行事务。因此,可能是推测地重新执行事务、但由于失效访问被跟踪而无法提交结果的核心或逻辑处理器的处理器将具有对第一事务所引用的多个行的独占访问。因此,可非推测地执行第一事务,因为独占访问可提供给执行处理器。
[0074]现在来看图7,说明事务执行的代码流程的一个实施例。在框705,在被组合在一起时可能跨越多个指令或宏操作的一组微操作被执行。如上所述,在框710,跟踪对于与各加载和存储微操作关联的共享存储器位置的失效访问。
[0075]在框715,第一组微操作的执行被循环进行,直至:(1)没有跟踪到失效访问,或者(2)第一组微操作已经被执行第一次数。因此,不是必须跳转到代码中的新位置,而是可使用相同的输入寄存器组,并且事务只是再次被循环进行。如上所述,这通过使输入寄存器组对于在事务未决期间接收新数据存在偏见、以及在再用输入寄存器时溢出和再填充输入寄存器的内容来实现。同样在框720,与各加载和各存储微操作关联的共享存储器位置被锁定,以及第一组微操作被重新执行。
[0076]如上所述的事务执行避免了在锁定体系结构中可能发生的错误争用,并通过在事务执行期间跟踪对于存储器位置的失效访问,把争用限制为实际争用。此外,如果事务被重新执行预定次数,则因为实际争用继续发生,所以采用锁定/信标非推测地执行事务,以便确保事务在尝试推测地执行事务预定次数之后被执行和提交。或者,软件非阻挡机制可用来代替非推测执行方法。如上所述,可通过确保事务的“住进”数据被保留在原始输入寄存器中或者通过把输入数据值复制到保存位置,以软件来支持推测寄存器状态更新/提交,所述保存位置可能是其它寄存器或存储器,在必须重试事务时输入数据值可从其它寄存器或存储器中恢复。处理器还可包含硬件机制来缓冲寄存器状态,可能采用通常用于支持无序执行的机制。
[0077]在以上描述中,参照本发明的具体示范实施例描述了本发明。但是,显然可对其进行各种修改和变更,而没有背离所附权利要求阐述的本发明的广义实质和范围。因此,说明书和附图要视为说明性的而不是限制性的。

Claims (25)

1.一种装置,包括:
由第一代理和远程代理共享的共享存储器;
执行事务的执行逻辑,所述事务包括多个指令;
事务跟踪逻辑,在所述多个指令执行期间跟踪所述远程代理对于从所述共享存储器加载的各地址以及要写入所述共享存储器的各地址进行的失效访问;以及
事务退出逻辑,用于(1)如果在所述事务执行期间所述事务跟踪逻辑没有跟踪到对于从所述共享存储器加载的各地址以及要写入所述共享存储器的各地址的失效访问,则退出所述事务,以及(2)如果在所述事务执行期间所述事务跟踪逻辑已经跟踪到对于从所述共享存储器加载的任何地址或者要写入所述共享存储器的任何地址的失效访问,则发起所述事务的重新执行。
2.如权利要求1所述的微处理器,其特征在于,还包括封锁机制,如果所述事务被重新执行第一次数而没有退出所述事务,则所述封锁机制在所述事务执行期间拒绝所述远程代理对于从所述共享存储器加载的以及要写入所述共享存储器的各地址的访问。
3.如权利要求2所述的微处理器,其特征在于,所述封锁机制包括封锁电路,可用于设置封锁位,以便如果所述事务被重新执行第一次数而没有退出所述事务,则在所述事务执行期间拒绝至少一个远程代理对于从所述共享存储器加载的以及要写入所述共享存储器的各地址的访问。
4.如权利要求2所述的微处理器,其特征在于,所述封锁机制包括可用于执行代码以调用信标的逻辑,以便如果所述事务被重新执行第一次数而没有退出所述事务,则在所述事务执行期间拒绝至少一个远程代理对于从所述共享存储器加载的以及要写入所述共享存储器的各地址的访问。
5.如权利要求1所述的微处理器,其特征在于,所述事务跟踪逻辑包括可用于在多个宏操作执行期间存储跟踪从所述共享存储器加载的各地址的加载表以及跟踪要写入所述共享存储器的各地址的写入缓冲器的逻辑。
6.如权利要求1所述的微处理器,其特征在于,可用于存储加载表的逻辑包括高级加载地址表(ALAT)。
7.如权利要求5所述的微处理器,其特征在于,所述加载表可用于存储从所述共享存储器加载的各地址的加载条目,各加载条目包含从所述共享存储器加载的地址的表示和失效访问字段,以及所述写入缓冲器可用于存储要写入所述共享存储器的各地址的写入条目,各写入条目包含要写入的地址、要写的数据行和失效访问字段。
8.如权利要求5所述的微处理器,其特征在于,所述加载表还包括锁定机制加载条目,所述锁定机制加载条目跟踪远程代理对软件实现的封锁机制的访问。
9.如权利要求1所述的微处理器,其特征在于,失效访问包括:(1)在所述多个指令执行期间所述远程代理对于从所述共享存储器加载的地址写入,或者(2)在多个微操作执行期间所述远程代理对于要写入所述共享存储器的地址读出或写入。
10.如权利要求9所述的微处理器,其特征在于,所述远程代理从下列各项组成的组中选取:包括所述代理的集成电路上的核心,包括所述代理的集成电路上的线程,包括所述代理的集成电路上的逻辑处理器,物理处理器,耦合到包括所述代理的集成电路的处理器。
11.如权利要求1所述的微处理器,其特征在于,共享存储器是高速缓存,以及所述代理和远程代理是共享所述高速缓存的逻辑处理器。
12.一种系统,包括:
采用事务声明划分事务的软件,所述事务包括具有多个待执行的微操作的临界段,以及所述事务声明包括标识所述事务的边界的标识符、表示所述临界段已经被执行的次数的计数变量以及检查指令;
执行所述事务的第一微处理器,其中,所述第一微处理器包括:存储用于跟踪对于与多个微操作中的加载微操作关联的地址的失效访问的加载跟踪表的逻辑;存储用于跟踪对于与所述多个微操作中的存储微操作关联的地址的失效访问的写入跟踪表的逻辑;执行所述检查指令的检查逻辑,用于为失效访问探测所述加载和存储跟踪表;退出逻辑,用于(1)如果所述检查指令的执行没有返回失效访问,则退出所述事务,以及(2)如果所述检查指令的执行返回至少一个失效访问,则发起所述事务的重新执行并改变所述计数变量。
13.如权利要求12所述的系统,其特征在于,所述事务声明还包括锁定谓词,在被设置时,采用封锁机制来执行所述事务,以及如果所述计数变量表示所述事务已经被重新执行预定次数,则设置所述锁定谓词。
14.如权利要求12所述的系统,其特征在于,还包括耦合到所述第一微处理器用于存储所述软件的存储媒体、用于存储数据行的系统存储器以及所述第一微处理器中用于存储来自所述系统存储器的最近访问的数据行的高速缓存。
15.如权利要求14所述的系统,其特征在于,对于与加载微操作关联的地址的失效访问包括在所述事务执行期间第一远程代理对于从所述高速缓存加载的地址写入,以及对于与存储微操作关联的地址的失效访问包括在所述事务执行期间第二远程代理对于要写入所述高速缓存的地址读出或写入。
16.如权利要求15所述的系统,其特征在于,所述第一微处理器还包括多个核心,各核心具有多个逻辑处理器,以及所述第一和第二远程代理是没有被调度以执行所述事务的所述多个核心或者多个逻辑处理器中的任一个。
17.一种方法,包括:
在第一事务的推测执行期间,跟踪对于所述第一事务所引用的共享存储器中多个行的失效访问;
每当在所述第一事务的执行期间跟踪到对于所述共享存储器中所述多个行的失效访问,推测地重新执行所述第一事务;
在推测地重新执行所述第一事务第一次数之后,封锁对于所述第一事务所引用的所述共享存储器中所述多个行的访问;以及
在封锁对于所述共享存储器中所述多个行的访问之后,非推测地重新执行所述第一事务。
18.如权利要求17所述的方法,其特征在于,对于所述共享存储器中所述多个行的失效访问包括(1)在所述第一事务的推测执行期间远程代理对于被加载的所述共享存储器中所述多个行之一写入,或者(2)远程代理对于在所述第一事务的提交时要写入的所述共享存储器中所述多个行之一写入或读出。
19.如权利要求17所述的方法,其特征在于,跟踪对于共享存储器中的行的失效访问包括:在加载表中存储在所述第一事务执行期间加载的所述共享存储器中各行的加载条目,各加载条目包含与所加载的行关联的地址的表示以及失效访问字段,以便(1)在所述加载表中存储所述加载条目时,存储第一值,以表示在所述第一事务执行期间没有发生失效访问,以及(2)如果在所述第一事务执行期间发生失效访问,则存储第二值。
20.如权利要求19所述的方法,其特征在于,跟踪对于共享存储器中的行的失效访问还包括:在写入表中存储在执行所述第一事务结束时要写入的所述共享存储器中各行的写入条目,各写入条目包含与要写入的行关联的物理地址的表示、数据字段以及失效访问字段,以便(1)在所述加载表中存储所述加载条目以表示在所述第一事务执行期间没有发生失效访问时,存储第一值,以及(2)如果在所述第一事务执行期间发生失效访问,则存储第二值。
21.如权利要求20所述的方法,其特征在于,各写入条目和各加载条目还包含用于存储所加载的行或者要写入的行的长度的长度字段。
22.如权利要求20所述的方法,其特征在于,所加载的各行和要写入的各行的长度在所述处理器的设计中是隐式的。
23.如权利要求17所述的方法,其特征在于,还包括使所述第一事务执行期间所使用的输入寄存器从接收新数据中偏离。
24.如权利要求23所述的方法,其特征在于,还包括如果在所述第一事务执行期间再用第一输入寄存器,则使所述第一输入寄存器的内容溢出到第二寄存器。
25.如权利要求24所述的方法,其特征在于,还包括在推测地重新执行所述事务时采用所述第二寄存器中存储的所述内容再填充所述第一输入寄存器。
CN2005800454107A 2004-12-29 2005-12-23 多处理器环境中基于事务的共享数据操作 Active CN101095113B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110438827.7A CN102622276B (zh) 2004-12-29 2005-12-23 多处理器环境中基于事务的共享数据操作

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/027,623 US7984248B2 (en) 2004-12-29 2004-12-29 Transaction based shared data operations in a multiprocessor environment
US11/027,623 2004-12-29
PCT/US2005/047376 WO2006071969A1 (en) 2004-12-29 2005-12-23 Transaction based shared data operations in a multiprocessor environment

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201110438827.7A Division CN102622276B (zh) 2004-12-29 2005-12-23 多处理器环境中基于事务的共享数据操作

Publications (2)

Publication Number Publication Date
CN101095113A true CN101095113A (zh) 2007-12-26
CN101095113B CN101095113B (zh) 2012-05-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 Before (1)

Application Number Title Priority Date Filing Date
CN201110438827.7A Active CN102622276B (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) GB2451199B (zh)
WO (1) WO2006071969A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514032A (zh) * 2012-06-15 2014-01-15 国际商业机器公司 限制处理器内的处理以促进事务完成的方法和计算机系统
CN105760139A (zh) * 2012-06-29 2016-07-13 英特尔公司 用于测试事务性执行状态的指令和逻辑
CN105874431A (zh) * 2014-05-28 2016-08-17 联发科技股份有限公司 减少数据交换负载的计算系统以及相关的数据交换方法
CN107003896A (zh) * 2014-12-19 2017-08-01 Arm 有限公司 具有共享事务处理资源的装置和数据处理方法
CN107003837A (zh) * 2014-12-17 2017-08-01 英特尔公司 用于推测性编译器优化的轻量级受限事务存储器
US10152401B2 (en) 2012-02-02 2018-12-11 Intel Corporation Instruction and logic to test transactional execution status
CN109725943A (zh) * 2018-12-27 2019-05-07 龙芯中科技术有限公司 一种程序跳转方法、装置、电子设备及存储介质
CN109997112A (zh) * 2016-11-28 2019-07-09 Arm有限公司 数据处理
CN111602121A (zh) * 2018-01-09 2020-08-28 微软技术许可有限责任公司 利用所应用的存储器区域生命期的比特精确跟踪分析
CN111913810A (zh) * 2020-07-28 2020-11-10 北京百度网讯科技有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
CN114510271A (zh) * 2022-02-09 2022-05-17 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115757196A (zh) * 2022-11-09 2023-03-07 超聚变数字技术有限公司 内存、访问内存方法及计算设备

Families Citing this family (124)

* Cited by examiner, † Cited by third party
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
US8001538B2 (en) 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
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
US8180977B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8180967B2 (en) * 2006-03-30 2012-05-15 Intel Corporation Transactional memory virtualization
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
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization and emulation
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
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
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
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US7941627B2 (en) * 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
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
US8838906B2 (en) * 2010-01-08 2014-09-16 International Business Machines Corporation Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US9507647B2 (en) * 2010-01-08 2016-11-29 Globalfoundries Inc. Cache as point of coherence in multiprocessor system
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
US20120079245A1 (en) * 2010-09-25 2012-03-29 Cheng Wang Dynamic optimization for conditional commit
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
US9619301B2 (en) 2011-04-06 2017-04-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core memory model and speculative mode processor management
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
US20140059333A1 (en) * 2012-02-02 2014-02-27 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
CN104583936B (zh) 2012-06-15 2019-01-04 英特尔公司 具有组成按序从存储器进行读取的加载的存储器一致性模型中的乱序加载的信号量方法和系统
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
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8943278B2 (en) 2012-07-31 2015-01-27 Advanced Micro Devices, Inc. Protecting large regions without operating-system support
US8914586B2 (en) * 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
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
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
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
US9361041B2 (en) 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9471371B2 (en) 2014-02-27 2016-10-18 International Business Machines Corporation Dynamic prediction of concurrent hardware transactions resource requirements and allocation
US9645879B2 (en) 2014-02-27 2017-05-09 International Business Machines Corporation Salvaging hardware transactions with instructions
US9336097B2 (en) 2014-02-27 2016-05-10 International Business Machines Corporation Salvaging hardware transactions
US9424072B2 (en) 2014-02-27 2016-08-23 International Business Machines Corporation Alerting hardware transactions that are about to run out of space
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US9329946B2 (en) 2014-02-27 2016-05-03 International Business Machines Corporation Salvaging hardware transactions
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
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
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
US9454313B2 (en) * 2014-06-10 2016-09-27 Arm Limited Dynamic selection of memory management algorithm
US9710271B2 (en) 2014-06-30 2017-07-18 International Business Machines Corporation Collecting transactional execution characteristics during transactional execution
US9448939B2 (en) * 2014-06-30 2016-09-20 International Business Machines Corporation Collecting memory operand access 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
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
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
CN111066007B (zh) * 2017-07-07 2023-10-31 美光科技公司 对受到管理的nand的rpmb改进
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
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 阿里巴巴集团控股有限公司 一种多核系统处理器和数据更新方法
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
KR20220056986A (ko) 2020-10-29 2022-05-09 삼성전자주식회사 메모리 확장기, 이종 컴퓨팅 장치, 및 이종 컴퓨팅 장치의 동작 방법
EP4206918A3 (en) * 2021-12-30 2023-11-15 Rebellions Inc. Neural processing device and transaction tracking method thereof

Family Cites Families (49)

* Cited by examiner, † Cited by third party
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
JP3158364B2 (ja) * 1992-10-13 2001-04-23 ソニー株式会社 電子機器
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
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
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
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
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
WO2004001527A2 (en) 2001-06-26 2003-12-31 Sun Microsystems, Inc. Method and apparatus for facilitating speculative loads in a multiprocessor system
KR100567099B1 (ko) 2001-06-26 2006-03-31 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
AU2002349805A1 (en) 2001-06-26 2003-01-08 Sun Microsystems, Inc. Using an l2 directory to facilitate 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
AU2003205092A1 (en) 2002-01-11 2003-07-30 Sun Microsystems, Inc. Value recycling facility for multithreaded computations
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US7685583B2 (en) 2002-07-16 2010-03-23 Sun Microsystems, Inc. Obstruction-free mechanism for atomic update of multiple non-contiguous locations in shared memory
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
US7269693B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Selectively monitoring stores 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

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10210065B2 (en) 2012-02-02 2019-02-19 Intel Corporation Instruction and logic to test transactional execution status
US10261879B2 (en) 2012-02-02 2019-04-16 Intel Corporation Instruction and logic to test transactional execution status
US10248524B2 (en) 2012-02-02 2019-04-02 Intel Corporation Instruction and logic to test transactional execution status
US10223227B2 (en) 2012-02-02 2019-03-05 Intel Corporation Instruction and logic to test transactional execution status
US10210066B2 (en) 2012-02-02 2019-02-19 Intel Corporation Instruction and logic to test transactional execution status
US10152401B2 (en) 2012-02-02 2018-12-11 Intel Corporation Instruction and logic to test transactional execution status
CN103514032A (zh) * 2012-06-15 2014-01-15 国际商业机器公司 限制处理器内的处理以促进事务完成的方法和计算机系统
CN105760139B (zh) * 2012-06-29 2018-12-11 英特尔公司 用于测试事务性执行状态的系统
CN105760139A (zh) * 2012-06-29 2016-07-13 英特尔公司 用于测试事务性执行状态的指令和逻辑
CN105874431A (zh) * 2014-05-28 2016-08-17 联发科技股份有限公司 减少数据交换负载的计算系统以及相关的数据交换方法
CN107003837A (zh) * 2014-12-17 2017-08-01 英特尔公司 用于推测性编译器优化的轻量级受限事务存储器
CN107003896A (zh) * 2014-12-19 2017-08-01 Arm 有限公司 具有共享事务处理资源的装置和数据处理方法
US10908944B2 (en) 2014-12-19 2021-02-02 Arm Limited Apparatus with shared transactional processing resource, and data processing method
CN109997112B (zh) * 2016-11-28 2023-08-18 Arm有限公司 数据处理
CN109997112A (zh) * 2016-11-28 2019-07-09 Arm有限公司 数据处理
CN111602121A (zh) * 2018-01-09 2020-08-28 微软技术许可有限责任公司 利用所应用的存储器区域生命期的比特精确跟踪分析
CN111602121B (zh) * 2018-01-09 2023-10-24 微软技术许可有限责任公司 利用所应用的存储器区域生命期的比特精确跟踪分析
CN109725943A (zh) * 2018-12-27 2019-05-07 龙芯中科技术有限公司 一种程序跳转方法、装置、电子设备及存储介质
CN111913810A (zh) * 2020-07-28 2020-11-10 北京百度网讯科技有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
CN111913810B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN114510271A (zh) * 2022-02-09 2022-05-17 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115757196A (zh) * 2022-11-09 2023-03-07 超聚变数字技术有限公司 内存、访问内存方法及计算设备
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备

Also Published As

Publication number Publication date
JP2008525923A (ja) 2008-07-17
GB2437211B (en) 2008-11-19
US20110055493A1 (en) 2011-03-03
CN102622276A (zh) 2012-08-01
CN102622276B (zh) 2015-09-23
JP2011028774A (ja) 2011-02-10
WO2006071969A1 (en) 2006-07-06
JP5404574B2 (ja) 2014-02-05
JP2011044161A (ja) 2011-03-03
US8176266B2 (en) 2012-05-08
US8458412B2 (en) 2013-06-04
GB2451200B (en) 2009-05-20
GB2451199B (en) 2009-05-27
GB2451200A (en) 2009-01-21
US20110252203A1 (en) 2011-10-13
DE112005003861A5 (de) 2014-06-05
US7984248B2 (en) 2011-07-19
GB2437211A8 (zh) 2007-10-15
GB2451199A (en) 2009-01-21
JP5255614B2 (ja) 2013-08-07
GB0818238D0 (en) 2008-11-12
GB0714433D0 (en) 2007-09-05
US20060161740A1 (en) 2006-07-20
JP4764430B2 (ja) 2011-09-07
DE112005003874B3 (de) 2021-04-01
CN101095113B (zh) 2012-05-23
DE112005003339T5 (de) 2007-11-22
GB2437211A (en) 2007-10-17
GB0818235D0 (en) 2008-11-12

Similar Documents

Publication Publication Date Title
CN101095113B (zh) 多处理器环境中基于事务的共享数据操作
Le et al. Transactional memory support in the IBM POWER8 processor
Jacobi et al. Transactional memory architecture and implementation for IBM System z
JP4388916B2 (ja) 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
CN101950259B (zh) 用于执行事务的装置、系统及方法
RU2501071C2 (ru) Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle)
US8539465B2 (en) Accelerating unbounded memory transactions using nested cache resident transactions
US20100162247A1 (en) Methods and systems for transactional nested parallelism
US20110219215A1 (en) Atomicity: a multi-pronged approach
CN106030522B (zh) 利用基于二进制翻译的处理器的锁省略
DE102007054057A1 (de) Mechanismus zum Detektieren und Vorhersagen eines kritischen Abschnitts zur Hardware-Lock-Elision
Blundell et al. Unrestricted transactional memory: Supporting I/O and system calls within transactions
JP2021529372A (ja) トランザクショナル・メモリをサポートするための装置においてロード排他命令を取り扱うこと
Carlstrom et al. Transactional execution of Java programs
Ohmacht et al. IBM Blue Gene/Q memory subsystem with speculative execution and transactional memory
Rajwar Speculation-based techniques for transactional lock-free execution of lock-based programs
Duan et al. Asymmetric memory fences: Optimizing both performance and implementability
CN101533363B (zh) 引退前-后混合硬件锁定省略(hle)方案
Villegas et al. Hardware support for scratchpad memory transactions on GPU architectures
Ichii et al. A Lazy-Updating Snoop Cache Protocol for Transactional Memory
Adl-Tabatabai et al. Presenters
Kozyrakis Transactional memory implementation overview
UBIQUITY et al. The Future of Synchronization on Multicores The multicore transformation (Ubiquity symposium)

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