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

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

Info

Publication number
CN102622276A
CN102622276A CN2011104388277A CN201110438827A CN102622276A CN 102622276 A CN102622276 A CN 102622276A CN 2011104388277 A CN2011104388277 A CN 2011104388277A CN 201110438827 A CN201110438827 A CN 201110438827A CN 102622276 A CN102622276 A CN 102622276A
Authority
CN
China
Prior art keywords
affairs
access
load
storage
address
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
CN2011104388277A
Other languages
English (en)
Other versions
CN102622276B (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
Publication of CN102622276A publication Critical patent/CN102622276A/zh
Application granted granted Critical
Publication of CN102622276B publication Critical patent/CN102622276B/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

多处理器环境中基于事务的共享数据操作
技术领域
本发明涉及集成电路领域,具体来说,涉及多个集成电路、核心和线程之间的共享数据操作。
背景技术
半导体加工和逻辑设计方面的进步允许在集成电路器件上可存在的逻辑数量的增加。因此,计算机系统配置已经从系统中的单个或多个集成电路发展到各个集成电路上存在的多个核心和多个逻辑处理器。集成电路通常包括单个处理器管芯,在其中,处理器管芯可包括任何数量的核心或逻辑处理器。
作为一个实例,单个集成电路可能具有一个或多个核心。术语“核心”通常表示集成电路上的逻辑保持独立体系结构状态的能力,在其中,各独立体系结构状态与专用执行资源关联。因此,具有两个核心的集成电路通常包括用于保持两个分离且独立的体系结构状态的逻辑,各体系结构状态与其自己的执行资源、诸如低级高速缓存、执行单元和控制逻辑关联。各核心可共享某些资源,诸如高级高速缓存、总线接口以及取/解码单元。
作为另一个实例,单个集成电路或单个核心可具有用于执行多个软件线程的多个逻辑处理器,这又称作多线程集成电路或多线程核心。多个逻辑处理器通常共享公共数据高速缓存、指令高速缓存、执行单元、分支预测器、控制逻辑、总线接口及其它处理器资源,同时保持各逻辑处理器的特有体系结构状态。多线程技术的一个实例是来自
Figure BSA00000643087500011
公司(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 (30)

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.如权利要求10所述的装置,还包括保持用于所述事务的输入数据的输入寄存器,所述输入寄存器被使得在所述事务的未决期间对接收新数据存在偏见。
18.如权利要求17所述的装置,还包括存储区,用于接收来自于所述输入寄存器中的输入寄存器的数据以响应所述输入寄存器中的该输入寄存器在所述事务的未决期间接收新数据。
19.一种用于跟踪事务访问的方法,包括:
存储与通过程序代码的执行被维护的事务表的条目中的共享数据的信标关联的地址;
在所述事务表的条目中存储所述信标的值为先前值;以及
确定对共享数据的无效访问已发生以响应远程代理更新所述信标成与存储在所述条目中的先前值不匹配的当前值。
20.如权利要求19所述的方法,其中所述事务存储器访问包括事务加载操作,与所述信标关联的地址包括所述事务加载操作引用所述共享数据的存储器地址,以及所述事务表的条目包括加载表的加载条目。
21.如权利要求20所述的方法,其中所述加载表的所述加载条目还包括无效访问字段,以及其中所述方法还包括:
设置所述无效访问字段成缺省值以响应存储所述地址和存储所述信标的值;以及
设置所述无效访问字段成无效值以响应确定对共享数据的所述失效访问已发生。
22.如权利要求21所述的方法,其中所述事务存储器访问包括事务存储操作,与所述信标关联的所述地址包括所述事务存储操作引用所述共享数据的存储器地址,以及所述事务表的条目包括写入表的写入条目。
23.如权利要求19所述的方法,其中所述远程代理包括执行第二事务的处理单元。
24.如权利要求19所述的方法,其中确定对所述共享数据的失效访问已发生在第一事务的尝试提交期间被执行。
25.如权利要求24所述的方法,其中响应在第一事务的尝试提交期间确定对所述共享数据的失效访问已发生,第一事务被中止。
26.如权利要求19所述的方法,其中当所述程序代码被机器执行时,所述程序代码还导致所述机器执行以下操作:在第一事务的未决期间使得输入寄存器对接收新数据存在偏见。
27.一种能够重新执行事务的微处理器,包括:
高速缓存存储器;
用于执行事务的执行单元;
所述高速缓存存储器外的跟踪单元,用于检出对共享存储器中数据位置的失效访问,其在执行所述事务期间被访问。
退出单元,用于:(1)退出所述事务以响应所述跟踪单元在执行所述事务期间未检出失效访问,以及(2)初始化所述执行单元对所述事务的重新执行以响应所述跟踪单元在执行所述事务期间检出失效访问。
28.如权利要求27所述的微处理器,其中在所述高速缓存存储器外的所述跟踪单元包括耦合到所述高速缓存存储器的事务缓冲器。
29.如权利要求28所述的微处理器,其中所述事务缓冲器包括跟踪在执行所述事务期间从所述高速缓存存储器加载的每个地址的加载表,以及在执行所述事务期间跟踪写入所述共享存储器的每个地址的写入缓冲器。
30.如权利要求29所述的微处理器,其中所述加载表包括锁定机制加载条目,所述锁定机制加载条目跟踪对封锁机制的远程代理访问。
CN201110438827.7A 2004-12-29 2005-12-23 多处理器环境中基于事务的共享数据操作 Active CN102622276B (zh)

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 true CN102622276A (zh) 2012-08-01
CN102622276B CN102622276B (zh) 2015-09-23

Family

ID=36116231

Family Applications (2)

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

Family Applications Before (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) CN101095113B (zh)
DE (3) DE112005003874B3 (zh)
GB (3) GB2451199B (zh)
WO (1) WO2006071969A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107239413A (zh) * 2016-03-29 2017-10-10 想象技术有限公司 处理存储器请求
CN108027804A (zh) * 2015-09-23 2018-05-11 甲骨文国际公司 片上原子事务引擎
CN108268385A (zh) * 2016-12-30 2018-07-10 英特尔公司 具有集成目录高速缓存的优化的高速缓存代理
CN110168502A (zh) * 2017-01-13 2019-08-23 Arm有限公司 存储器划分
CN110442381A (zh) * 2018-05-02 2019-11-12 美光科技公司 用于保护有条件的推测性指令执行的影子缓存
CN111506534A (zh) * 2014-10-31 2020-08-07 德克萨斯仪器股份有限公司 具有非阻塞高性能事务信用系统的多核总线架构
CN111527479A (zh) * 2018-01-10 2020-08-11 Arm有限公司 推测性缓存存储区
CN111615687A (zh) * 2018-01-16 2020-09-01 微软技术许可有限责任公司 使用高速缓存一致性协议数据来解耦跟踪数据流
CN113992455A (zh) * 2020-07-09 2022-01-28 通用电气航空系统有限责任公司 用于通信系统的数据服务跟踪器模块和确定一组数据耦合的方法

Families Citing this family (127)

* 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
US8225297B2 (en) 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8813052B2 (en) 2005-12-07 2014-08-19 Microsoft Corporation Cache metadata for implementing bounded transactional memory
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
US8132158B2 (en) * 2006-12-28 2012-03-06 Cheng Wang Mechanism for software transactional memory commit/abort in unmanaged runtime environment
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
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
US8140773B2 (en) 2007-06-27 2012-03-20 Bratin Saha Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US8266387B2 (en) * 2007-06-27 2012-09-11 Microsoft Corporation Leveraging transactional memory hardware to accelerate virtualization emulation
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
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
US8176253B2 (en) * 2007-06-27 2012-05-08 Microsoft Corporation 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
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
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
US8095758B2 (en) * 2008-02-01 2012-01-10 International Business Machines Corporation Fully asynchronous memory mover
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8015380B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Launching multiple concurrent memory moves via a fully asynchronoous memory mover
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM 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
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
US8868837B2 (en) * 2010-01-15 2014-10-21 International Business Machines Corporation Cache directory lookup reader set encoding for partial cache line speculation support
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
US9268596B2 (en) 2012-02-02 2016-02-23 Intel Corparation Instruction and logic to test transactional execution status
US20140059333A1 (en) * 2012-02-02 2014-02-27 Martin G. Dixon Method, apparatus, and system for speculative abort control mechanisms
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
KR101804027B1 (ko) * 2012-06-15 2017-12-01 인텔 코포레이션 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템
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
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
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
US9442737B2 (en) * 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
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
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
CN105786665B (zh) * 2012-06-29 2019-11-05 英特尔公司 用于测试事务性执行状态的系统
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 複数のスレッドで順序付きトランザクションを実行する方法、並びに、当該トランザクションを実行するためのコンピュータ及びそのコンピュータ・プログラム
WO2015096031A1 (zh) * 2013-12-24 2015-07-02 华为技术有限公司 线程共享资源分配方法及装置
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
US9411729B2 (en) 2014-02-27 2016-08-09 International Business Machines Corporation Salvaging lock elision transactions
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
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
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
US9311178B2 (en) 2014-02-27 2016-04-12 International Business Machines Corporation Salvaging hardware transactions with instructions
US20150242216A1 (en) 2014-02-27 2015-08-27 International Business Machines Corporation Committing hardware transactions that are about to run out of resource
US9329946B2 (en) 2014-02-27 2016-05-03 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
US9442853B2 (en) 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging lock elision transactions with instructions to change execution type
US9575890B2 (en) 2014-02-27 2017-02-21 International Business Machines Corporation Supporting atomic accumulation with an addressable accumulator
US9442775B2 (en) * 2014-02-27 2016-09-13 International Business Machines Corporation Salvaging hardware transactions with instructions to transfer transaction execution control
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
US20160179668A1 (en) * 2014-05-28 2016-06-23 Mediatek Inc. Computing system with reduced data exchange overhead and related data exchange method thereof
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
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
US9998284B2 (en) * 2015-09-24 2018-06-12 Intel Corporation Methods and apparatus to provide isolated execution environments
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
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
KR102417107B1 (ko) 2017-07-07 2022-07-05 마이크론 테크놀로지, 인크. 관리되는 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
US10514969B2 (en) * 2018-01-09 2019-12-24 Microsoft Technology Licensing, Llc Bit-accurate-tracing analysis with applied memory region lifetimes
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
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
CN111913810B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
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
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备

Citations (4)

* Cited by examiner, † Cited by third party
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)

* 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
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 ソフトウエア開発支援システム
US6076126A (en) * 1997-06-30 2000-06-13 Emc Corporation Software locking mechanism for locking shared resources in a data processing system
US5987550A (en) * 1997-06-30 1999-11-16 Emc Corporation Lock mechanism for 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
KR100704089B1 (ko) * 2001-06-26 2007-04-05 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-로드촉진 방법 및 장치
KR100567099B1 (ko) * 2001-06-26 2006-03-31 썬 마이크로시스템즈, 인코포레이티드 L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
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
AU2003207526A1 (en) * 2002-01-11 2003-07-30 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
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506534A (zh) * 2014-10-31 2020-08-07 德克萨斯仪器股份有限公司 具有非阻塞高性能事务信用系统的多核总线架构
CN108027804A (zh) * 2015-09-23 2018-05-11 甲骨文国际公司 片上原子事务引擎
CN107239413A (zh) * 2016-03-29 2017-10-10 想象技术有限公司 处理存储器请求
US11941430B2 (en) 2016-03-29 2024-03-26 Imagination Technologies Limited Handling memory requests
CN107239413B (zh) * 2016-03-29 2023-09-29 想象技术有限公司 处理存储器请求
CN108268385B (zh) * 2016-12-30 2023-07-11 英特尔公司 具有集成目录高速缓存的优化的高速缓存代理
CN108268385A (zh) * 2016-12-30 2018-07-10 英特尔公司 具有集成目录高速缓存的优化的高速缓存代理
CN110168502A (zh) * 2017-01-13 2019-08-23 Arm有限公司 存储器划分
CN111527479A (zh) * 2018-01-10 2020-08-11 Arm有限公司 推测性缓存存储区
CN111615687A (zh) * 2018-01-16 2020-09-01 微软技术许可有限责任公司 使用高速缓存一致性协议数据来解耦跟踪数据流
CN111615687B (zh) * 2018-01-16 2023-10-24 微软技术许可有限责任公司 使用高速缓存一致性协议数据来解耦跟踪数据流
CN110442381A (zh) * 2018-05-02 2019-11-12 美光科技公司 用于保护有条件的推测性指令执行的影子缓存
CN113992455A (zh) * 2020-07-09 2022-01-28 通用电气航空系统有限责任公司 用于通信系统的数据服务跟踪器模块和确定一组数据耦合的方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN101095113B (zh) 多处理器环境中基于事务的共享数据操作
Jacobi et al. Transactional memory architecture and implementation for IBM System z
Le et al. Transactional memory support in the IBM POWER8 processor
JP4388916B2 (ja) 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
TWI476595B (zh) 用於交易式記憶體事件處置之硬體中使用者處置器的登錄
US7840785B1 (en) Transparent concurrent atomic execution
US6370625B1 (en) Method and apparatus for lock synchronization in a microprocessor system
US5428761A (en) System for achieving atomic non-sequential multi-word operations in shared memory
CN101187862B (zh) 用于硬件锁定取消的装置、系统和方法
US8539465B2 (en) Accelerating unbounded memory transactions using nested cache resident transactions
US20110219215A1 (en) Atomicity: a multi-pronged approach
US20100162247A1 (en) Methods and systems for transactional nested parallelism
CN101458636A (zh) 用于硬件锁省略(hle)的后期锁获取机制
Carlstrom et al. Transactional execution of Java programs
JP2021529372A (ja) トランザクショナル・メモリをサポートするための装置においてロード排他命令を取り扱うこと
Ohmacht et al. IBM Blue Gene/Q memory subsystem with speculative execution and transactional memory
WO2001065367A2 (en) Supporting inter-process communication through a conditional trap instruction
Duan et al. Asymmetric memory fences: Optimizing both performance and implementability
Villegas et al. Hardware support for scratchpad memory transactions on GPU architectures
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