CN101410797A - 无序处理器中的事务存储器 - Google Patents

无序处理器中的事务存储器 Download PDF

Info

Publication number
CN101410797A
CN101410797A CNA2007800107806A CN200780010780A CN101410797A CN 101410797 A CN101410797 A CN 101410797A CN A2007800107806 A CNA2007800107806 A CN A2007800107806A CN 200780010780 A CN200780010780 A CN 200780010780A CN 101410797 A CN101410797 A CN 101410797A
Authority
CN
China
Prior art keywords
transactional memory
memory accesses
request
instruction
logic
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
CNA2007800107806A
Other languages
English (en)
Other versions
CN101410797B (zh
Inventor
R·拉瓦
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 CN201310090359.8A priority Critical patent/CN103257933B/zh
Publication of CN101410797A publication Critical patent/CN101410797A/zh
Application granted granted Critical
Publication of CN101410797B publication Critical patent/CN101410797B/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/44Arrangements for executing specific programs
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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 or 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)
  • Advance Control (AREA)

Abstract

描述了提供无序处理器中的事务存储器执行的方法和设备。在一个实施例中,存储值对应于未提交的事务存储器访问请求的数量。根据所述实施例,在出错、故障等情况下,存储值可用来提供嵌套恢复。

Description

无序处理器中的事务存储器
背景技术
[0001]一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及无序处理器中的事务存储器(TM)执行。
[0002]为了改进性能,一些计算机系统可同时运行多个线程。一般来说,在线程访问共享资源之前,可获得共享资源的锁定。在共享资源是存储器中存储的数据结构的情况下,尝试访问同一个资源的所有线程可按照锁定机制提供的互斥性来使其操作的执行串行化。这对于系统性能可能是有害的,并且例如因死锁缺陷而可能导致程序故障。
[0003]为了降低由锁定机制的利用引起的性能损失,一些计算机系统可使用事务存储器。事务存储器一般指的是一种同步模型,它允许多个线程同时访问共享资源而无需利用锁定机制。但是,例如由于由无序处理器中进行的推测处理引起的误预测,无序处理器中的事务存储器执行增加了设计的复杂度。
附图说明
[0004]参照附图来提供详细描述。附图中,参考标号最左边的数字标识首次出现参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。
[0005]图1、图6和图7示出计算系统的实施例的框图,它可用来实现本文所述的各种实施例。
[0006]图2示出根据本发明一个实施例的处理器核心的各部分的框图。
[0007]图3-4示出根据本发明的各种实施例的方法的框图。
[0008]图5示出事务状态和控制寄存器的一个实施例。
具体描述
[0009]在以下描述中,阐明大量具体细节,以便提供对各种实施例的透彻了解。但是,即使没有具体细节也可实施部分实施例。在其它情况下,没有详细描述众所周知的方法、过程、部件和电路,以免影响对具体实施例的理解。
[0010]本文所述的实施例的一部分可提供无序处理器、如参照图1-7所述的处理器中的事务存储器执行的有效机制。更具体来说,图1示出根据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1至102-N(本文中一般称作“处理器102”)。处理器102可经由互连或总线104进行通信。各处理器可包括各种部件,为了清晰起见,仅参照处理器102-1来论述其中的一部分。因此,其余处理器102-2至102-N的每个可包括参照处理器102-1所述的相同或相似部件。
[0011]在一个实施例中,处理器102-1可包括一个或多个处理器核心106-1至106-M(本文中称作“核心106”)、高速缓存108(可包括一个或多个专用或共享高速缓存)和/或路由器110。处理器核心106可在单个集成电路(IC)芯片上实现。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如高速缓存108)、总线或互连(例如总线或互连112)、存储控制器或其它部件。
[0012]在一个实施例中,路由器110可用于在处理器102-1和/或系统100的各种部件之间进行通信。另外,处理器102-1可包括一个以上路由器110。另外,多个路由器(110)可进行通信,以便实现处理器102-1的内部或外部的各种部件之间的数据路由。
[0013]高速缓存108可存储由处理器102-1的一个或多个部件、如核心106使用的数据(例如包括指令)。例如,高速缓存108可本地高速缓存在存储器114中存储的数据,以便由处理器102的部件进行更快速的访问。如图1所示,存储器114可经由互连104与处理器102进行通信。在一个实施例中,高速缓存108可以是最后一级高速缓存(LLC)。核心106的每个还可包括第1级(L1)高速缓存(116)(本文中一般称作“L1高速缓存116”)。另外,处理器102-1还可包括由若干核心(106)共享的中间级高速缓存。处理器102-1的各种部件可直接、通过总线(例如总线112)和/或存储控制器或集线器来与高速缓存108进行通信。
[0014]图2示出根据本发明的一个实施例的处理器核心106的部分的框图。在一个实施例中,图2所示的箭头示出指令通过核心106的流程。一个或多个处理器核心(例如处理器核心106)可在单个集成电路芯片(或管芯)上实现,如参照图1所述。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如图1的高速缓存108)、互连(例如图1的互连104和/或112)、存储控制器或其它部件。在一个实施例中,图2所示的处理器核心106可用于通过硬件(本文中一般可称作限制事务存储器(RTM)))来运行事务存储器访问请求。
[0015]如图2所示,处理器核心106可包括取出指令供核心106运行的读取单元202。可从任何存储装置、例如存储器114和/或参照图6和图7所述的存储器装置中取指令。核心106还可包括对取出指令进行解码的解码单元204。例如,解码单元204可将取出指令解码为多个μop(微操作)。
[0016]此外,核心106可包括调度单元206。调度单元206可执行与存储解码指令(例如从解码单元204所接收)关联的各种操作,直到指令准备分发,例如直到解码指令的所有源值变为可用。在一个实施例中,调度单元206可调度和/或向执行单元208发出(或分发)解码指令供运行。执行单元208可在指令被解码(例如由解码单元204)和分发(例如由调度单元206)之后运行分发指令。在一个实施例中,执行单元208可包括一个以上执行单元,例如存储器执行单元、整数执行单元、浮点执行单元或者其它执行单元。另外,执行单元208可无序地运行指令。因此,在一个实施例中,处理器核心106可以是无序处理器。核心106还可包括退出单元210。退出单元210可在提交运行指令之后退出运行指令。在一个实施例中,运行指令的退出可导致从指令的运行提交处理器状态、解除分配指令所使用的物理寄存器等。
[0017]如图2所示,核心106可包括重排序缓冲器(ROB)212,以便存储与即时指令(flight instructions)(或μop)有关的信息,供处理器核心106的各种部件进行访问。核心106还可包括RAT(寄存器别名表)214,以便逻辑(或结构)寄存器(例如软件指令的操作数所标识的寄存器)到对应物理寄存器的映射。在一个实施例中,RAT 214中的各条目可包括向各物理寄存器指定的ROB标识符。此外,加载缓冲器216和存储缓冲器218(本文中可统称为存储器排序缓冲器(MOB))可分别存储尚未加载或回写到主存储器(例如处理器核心106外部的存储器、如存储器114)的未决存储器操作。MOB逻辑219可执行与缓冲器216和218相关的各种操作,例如本文参照图3和图4所述。
[0018]另外,处理器核心106可包括总线单元220,以便允许在处理器核心106的部件与其它部件(例如参照图1所述的部件)之间经由一个或多个总线(例如总线104和/或112)的通信。一个或多个填充缓冲器222可在将所接收数据存储到高速缓存116之前暂时存储从存储器114接收(例如通过总线104和/或112)的数据。
[0019]如图2所示,高速缓存116可包括一个或多个高速缓存线224(例如高速缓存线0至W)。在一个实施例中,高速缓存116的各线可包括运行于核心106的各线程的事务读取位226和/或事务写入位228。位226和228可按照参照图3所述的方式来设置或清除,例如通过事务存储器访问请求来指明对于相应高速缓存线的(加载和/或存储)访问。即使在图2中,各高速缓存线224也表示为具有相应的位226和228,但其它配置是可能的。例如,事务读取位226(或事务写入位228)可对应于高速缓存116的选择部分,例如高速缓存116的高速缓存块或其它部分。位226和/或228还可存储在高速缓存116以外的位置,例如存储在图1的高速缓存108、存储器114或者临时驱逐数据高速缓存(victim cache)。
[0020]将参照图3进一步论述,核心106可包括事务深度计数器230,以便存储与仍然未提交的事务存储器访问请求的数量对应的值。例如,计数器230中存储的值可指明与同一个线程对应的多个事务存储器访问请求的嵌套深度。在一种情况下,在未决事务内部发起一个事务(例如经由库调用或者其它嵌套过程)时,可产生多个事务存储器访问请求。计数器230可实现为任何类型的存储装置,例如硬件寄存器或者存储器(例如存储器114或高速缓存116)中存储的变量。核心106还可包括事务深度计数器逻辑232,以便更新计数器230中存储的值。此外,将参照图3进一步论述,核心106可包括对核心106的各种部件的状态进行抽点检查(或存储)的事务检查点逻辑234以及恢复核心106的各种部件的状态的事务恢复逻辑236。例如,核心106还可包括高速缓存逻辑239,它可通过访问高速缓存116来执行各种操作,本文将参照图3和图4进一步进行论述。此外,核心106可包括一个或多个附加寄存器240,它们对应于各种事务存储器访问请求,例如事务状态和控制(TXSR)(本文参照图4进一步进行论述)、事务指令指针(TXIP)(例如,可以是在对应事务开始时(或者就在对应事务之前)指向指令的指令指针)、和/或事务栈指针(TXSP)(例如,可以是指向存储核心106的一个或多个部件的各种状态的栈顶的栈指针),将参照图3进一步进行论述。
[0021]更具体来说,图3示出运行与事务存储器访问请求对应的一个或多个操作的方法300的一个实施例的框图。在一个实施例中,参照图1-2和图6-7所述的各种部件可用来执行参照图3所述操作的一个或多个。
[0022]参照图1-3,在操作302,接收事务存储器访问请求(例如一个或多个存储器加载或存储操作)。例如,读取单元202可取出指明事务存储器执行开始的指令。根据至少一个指令集架构,指明事务存储器执行开始的指令可以是TXMBEG<user_handler_IP>,其中,user_handler_IP标识在中止、出错或其它错误条件的情况下可将执行重定向到的用户处理过程。事务结束指令(例如根据至少一个指令集架构的TXMEND)也可指明事务的结束。在一个实施例中,TXMBEG指令与TXMEND之间的所有操作可标记为事务。在一个实施例中,事务操作可缺省为事务(以及例如通过指令前缀或参数的显式非事务),例如允许以事务方式来使用非事务遗留库而无需改变代码。备选地,事务操作可缺省为非事务(以及例如通过指令前缀或参数的显式事务)。在一个实施例中,可使用显式非事务指令的特殊集合,即使它们可能出现在事务中、例如TXMBEG指令与TXMEND指令之间,也可以非事务方式来处理。在一个实施例中,在事务中(例如在TXMBEG指令与TXMEND指令之间)发生的非事务存储操作可由执行单元208作为对存储器114的直写操作来运行。在一个实施例中,可为操作的缺省处理的设定提供TXMBEG指令,例如通过对应参数或前缀来提供。在一个实施例中,缺省的设定可通过控制寄存器中的模式位来提供。
[0023]在操作304,逻辑232可更新计数器230(例如可根据实现来递增或递减计数器230)。在一个实施例中,TXMBEG指令(例如由执行单元208)的运行可导致更新计数器230。备选地,计数器230可在发出时间、例如在调度单元206发出TXMBEG指令时被更新。在操作304,事务检查点逻辑234还可对各种部件(例如计数器230和/或寄存器240)的状态进行抽点检查。例如,逻辑234可将核心106的一个或多个部件的状态存储在存储装置中(例如在高速缓存116、高速缓存108和/或存储器114中)。本文将进一步进行论述,由于核心106可同时(和/或猜测地)处理一个以上事务存储器访问请求,因此,逻辑234可存储核心106的各种部件的一种以上状态,并且在一个实施例中,各种抽点检查状态可存储到作为堆栈来实现的数据结构中。在一个实施例中,逻辑234可存储与最外面的事务存储器请求对应的抽点检查状态。
[0024]在操作306,例如可由执行单元208来运行与操作302的事务存储器访问请求对应的一个或多个指令(或操作)。在操作306运行指令期间,每当访问高速缓存116的一部分时,对应位(例如位226和/或228)可被更新,例如根据实现被设置或清除。例如,高速缓存逻辑239可标识正访问高速缓存116的事务指令,并更新对应位226和/或228。在一个实施例中,例如通过使用随指令提供的和/或存储在对应位置、例如在ROB 212的对应条目中的前缀(或控制位),操作306的指令可显式或隐式标识为事务或非事务操作。
[0025]在操作308,如果接收到另一个事务存储器访问请求,则方法300继续进行操作304。否则,如果在操作308接收到附加事务存储器访问请求,则在操作310,确定是否存在与操作306的指令的运行对应的冲突或中止条件。如果存在与另一个指令(可以是与运行于相同或不同处理器核心的另一个线程对应的指令)的冲突,则在操作312中止该事务。例如,冲突指令可发送窥探无效以用于高速缓存116中的条目——操作302的事务正在访问(或者已经标记为正被访问,由位226和/或228中存储的值表示)。另外,如果高速缓存116的部分的事务写入位228指明对高速缓存的相同部分的先前写访问,则在操作312中止从另一个线程对高速缓存116的相同部分的窥探读请求。操作310的中止也可能是因为迫使中止的实现特定事件(例如不可高速缓存(UC)事件、I/O事件、缓冲器溢出等)。
[0026]在一个实施例中,如果窥探引起使存储器中存储(例如高速缓存116中存储)的数据无效,则可将加载缓冲器216顶部的加载指令包含在窥探校验中,并且例如可由MOB逻辑219来执行完全地址校验(而不是部分地址校验)。如果在操作310,加载缓冲器216顶部的加载指令与窥探有冲突,则可在操作312中止对应的事务存储器请求。备选地,显式中止请求可引起执行操作310。例如,根据至少一个指令集架构,包括事务存储器执行的中止的指令可以是TXMABT。中止指令可引起显式中止,它在多个嵌套事务存储器访问请求(例如,由计数器230中存储的值来表示)的情况下,可引起回退到先前状态并调用对应的处理程序(例如在可采用对应TXMBEG指令来标识的、例如参照操作302所述的多个未决事务存储器访问请求的情况下的最里面的处理程序)。在一个实施例中,中止可引起回退到对应于最外面的事务的抽点检查状态并调用对应的最外面的TXMBEG处理程序。在一个实施例中,在操作312,事务恢复逻辑236可将核心106的各种部件恢复到先前状态,例如参照图2所述。
[0027]在一个实施例中,可通过使用写入时复制机制将寄存器恢复状态记录在存在于寄存器240的位中和/或RAT 214的对应条目中,来执行操作304的抽点检查。例如,1位阵列可与各RAT例示关联(备选地只可使用一个这样的阵列)。当计数器230中存储的值指明未决事务(例如一个实施例中的TXND>0)时,则在解码单元204正执行寄存器重命名操作时,该阵列被校验。如果对应位指明没有先前访问,则将μop插入指令流和ROB 212,以便例如在重命名之前将对应数据写入寄存器240其中之一。如果对应位指明先前访问,则不需要复制,因为在写入之前已经复制了对应数据。如果发生转移误预测,则可在逻辑上对各种1位阵列共同进行“或”运算,例如以便形成前进的起始阵列。如果进行这种操作,则重复误预测不会引起重复的写入时复制操作,因为保证给定数据的一个副本存在于核心106的寄存器中。这可限制写入时复制的性能开销。
[0028]在一个实施例中,当高速缓存116被逐出时,具有活动(例如设置)位226或位228的条目可以最后被逐出。如果高速缓存116中没有剩余其它可用空间,则可将程序执行重定向到用户处理程序(例如对应TXMBEG指令的处理程序)。此外,当事务是活动的但暂时被挂起时,填充缓冲器222可用来服务于非事务操作(例如存储数据)。
[0029]如果不存在冲突,则在操作314,确定是否(例如由退出单元210)成功地提交与事务存储器访问请求(例如由TXMBEG和对应的TXMEND指令来标识)对应的事务存储器(一个或多个)访问操作。如果事务存储器访问操作仍然未提交,则方法300继续进行操作306以便运行对应指令。一旦成功地提交与事务存储器访问请求对应的事务存储器访问操作,则在操作316,逻辑232更新计数器230。在一个实施例中,(例如由执行单元208)执行或者(例如由调度单元206)发出TXMEND指令可引起提交事务存储器访问请求,因此执行操作316。
[0030]在操作318,确定与其它事务存储器访问请求对应的任何事务存储器访问操作是否仍然未提交。在一个实施例中,可由逻辑232来执行操作318,其方式是例如确定计数器230中存储的值是否指明存在剩余事务存储器访问请求(例如在一个实施例中当计数器230没有清空时)。如果在操作318其它操作有待运行,则方法300继续进行操作306。一旦没有剩下与事务存储器访问请求对应的其它操作(例如计数器230清空),则在操作320,按照已提交事务存储器访问请求的操作以原子方式来更新对应数据(例如在高速缓存116、高速缓存108和/或存储器114中)。如果计数器230中存储的值指明TXMEND对应于最外面的事务存储器访问(例如当计数器230清空时),则TXMEND指令还可指明对应事务存储器访问请求的提交点。在一个实施例中,还可更新(例如在一个实施例中清除)对应位226和/或228,以指明在核心106中没有未决的其它事务存储器访问请求。因此,例如通过确保已经解决所有推测和/或例外、属于事务写集合的所有高速缓存块处于独占状态和/或属于读集合的所有块当前存在且有效,TXMEND指令可引起原子提交。本文所述的读或写集合一般可指存储器(例如高速缓存116)中分别与位226和228对应的数据集合。在一个实施例中,在提交对应写集合时,停止入局窥探。
[0031]在一个实施例中,核心106可猜测地运行参照方法300所述的各种指令(或操作),将参照图4进一步进行论述。还可无序地执行方法300的各种操作。例如,可按照任何顺序来执行操作306、308和310。另外,在一个实施例中,窥探请求可在执行操作310、312、314和/或320之前被停止,并且在执行操作310、312、314和/或320之后被取消停止。
[0032]图4示出运行与事务存储器访问请求对应的一个或多个加载操作的方法400的一个实施例的框图。在一个实施例中,参照图1-2和图6-7所述的各种部件可用来执行参照图4所述操作的一个或多个。
[0033]参照图1-4,在操作402,解码单元204对取出指令进行解码,并确定取出指令是否对应于事务存储器访问加载操作。如果指令没有对应于事务存储器访问加载操作,则核心106可相应地处理该指令(404)。例如,对于事务存储器访问存储操作,在退出对应事务存储器访问请求之后,核心106可向高速缓存116发出存储操作(或指令)。在一个实施例中,与存储操作对应的地址或数据可猜测地计算并存储在存储缓冲器218中。一旦对应事务存储器访问请求退出,则可根据预先计算数据向高速缓存发出存储。在一个实施例中,如果在向高速缓存116发出存储时没有设置位,则已退出存储还引起设置已访问高速缓存块(例如对应的TXw位228)。
[0034]在操作406,逻辑239可确定前一个事务存储器访问请求是否访问了高速缓存116中被操作402的加载指令寻址的相同位置。在一个实施例中,逻辑239可访问高速缓存116的对应位226以便执行操作406。如果先前已经访问了相同位置,则调度单元206可猜测地发出加载指令。否则,MOB逻辑219则可在操作410的退出(或者由ROB 212的对应条目所示的提交)之后重新发出加载指令,然后在操作412,在高速缓存116中设置对应的TXr位226。在一个实施例中,如果被前一个事务加载进行了访问,则对应位226也可存储在加载缓冲器216中。一旦如ROB 212的对应条目所示提交了加载操作,ROB 212可向加载缓冲器216(或MOB逻辑219)发送信号来指明提交了对应加载操作。因此,在加载缓冲器216中提供位226可限制操作410和412的高速缓存116的重新访问,例如以便优化高速缓存带宽。
[0035]在一个实施例中,例如通过允许发出加载而无需串行化以及无需更新读或写集合,但在操作处于对应加载或存储缓冲器(例如分别为缓冲器216或218)顶部时重新访问高速缓存116,以便将加载或存储地址显式标识为属于事务读或写集合,可将事务存储器访问请求的加载或存储操作显式或隐式标识为事务或非事务操作。这允许猜测地发出加载和存储,而没有不正确地更新读写集合,因而允许标识加载和存储的准确性,并且还可自动处理转移误预测。当存储指令离开存储缓冲器218的最早部分(在一个实施例中可称作上级存储队列)时,存储操作可更新读写集合。另外,隐式指令可允许遗留库得到本文所述的实施例支持。
[0036]图5示出事务状态和控制寄存器(TXSR)500的一个实施例。在一个实施例中,TXSR寄存器500可用来实现本文中例如参照图2-3所述的各种实施例。例如,在一个实施例中,图2的寄存器240可包括TXSR寄存器500。另外,可通过访问寄存器500来执行参照图2-4所述的操作。
[0037]如图5所示,TXSR寄存器500可包括一个或多个条目502(或者一个实施例中的位)。根据至少一个指令集架构,各条目502可具有所示名称(504)。各条目502还可具有对应类506,例如以便将相似的位分为一类。图5还示出与各条目502对应的描述508。在一个实施例中,类信息506和描述508用于信息目的,并且可能没有存储在实际寄存器500中。在一个实施例中,如果条目502之一指明描述508所标识的状态,则可采取一个或多个动作510。在图5中,TXDR和TXFR可以是用于调试目的的寄存器(例如图2的寄存器240中所包括的)。例如,TXDR可在事务中止操作之前存储存储器指令的地址或者数据冲突的窥探地址。另外,TXFR可存储已经引起事务中止的出错指令的指令指针(IP)。在一个实施例中,TXDR和TXFR中存储的值可在中止之后由事务处理例行程序(例如由TXMBEG所标识的处理程序)来读取,以便允许软件确定引起中止的地址。
[0038]参照图1-5,在一个实施例中,参照图3所述的TXMBEG指令可根据TXSR寄存器500的状态来执行以下两个动作中的一个或多个:
1.TXMBEG指令可将执行转变成原子执行模式,其中指令之后的操作以可恢复模式来运行。指令在核心处于这种模式时所执行的任何更新可在任何时候被丢弃。为了允许寄存器状态可恢复性,寄存器240的一部分可由逻辑234进行抽点检查。经过运行则无法撤消的操作可导致差错、事务更新被丢弃和/或控制转移到TXMBEG指令所标识的处理程序。
2.TXMBEG指令还可根据TXSR寄存器500的状态来进行条件控制转移。如果设置了适当的TXSR位,则TXMBEG指令可将程序控制转移到对应于事务存储器访问请求的指令流中的不同点,而无需记录返回信息。目的地(目标)操作数可指定指令正跳转到的地址。根据至少一个指令集架构,当TXMBEG执行条件控制转移时,核心106可能没有转变成可恢复执行模式,并且执行可与JMP(或跳转)相似。
[0039]在一个实施例中,以下伪代码可说明以上参照图5所示的寄存器500的部分条目502所述的操作:
IF TXSR.exec_state=X_ABORTED
      THEN
           JMP至目标操作数地址
      ELSE
           IF TXSR.exec_state=X_ACTIVE
    THEN
         TXND<-TXND+1
         ckptSP=SP
    ELSE
         TXND<-1
         TXSR.exec_state=X_ACTIVE
         ckptSP=SP
         ckptIP=IP(最外面的开始原子的IP)
    FI
FI
[0040]在上述代码中,除了SP寄存器之外,多个寄存器(例如寄存器240)可被保存。在一个实施例中,待保存的寄存器集合可由软件传递给硬件。参照图1-5,在一个实施例中,参照图3所述的TXMEND指令可根据TXSR寄存器500的状态来执行以下伪代码(在一个实施例中,下面的tmpmemstatus可以是连续选通状态,以指明高速缓存116中的所有高速缓存块是否处于适当状态):
IF TXSR.exec_state!=X_ACTIVE
      THEN
           Illegal Opcode_ERROR
FI
IF-TXND!=0
      THEN
          Done;(*嵌套块退出*)
FI
IF(RTM)
 THEN
     IF(tmpmemstatus)
           THEN
               TXSR.exec_state=X_COMMITTING
               commit_cache_rtm_mode()
               TXSR<-0
       Done
   ELSE(*不能提交存储器状态*)
       TXSR.exec_state=X_ABORTING
       abort_cache_rtm_mode()
       TXSR.exec_state=X_ABORTED
       TXSR.attempt_state++(*跟踪失败尝试的
                           次数*)
       JMP to TXIP
       (*恢复SP等*)
FI
[0041]参照图1-5,在一个实施例中,参照图3所述的TXMABT指令可允许用户显式中止原子块执行。效果与执行中止时相似,并且所有更新被丢弃(除了寄存器500的位之外)。在一个实施例中,TXMABT指令可根据TXSR寄存器500的状态来执行下列伪代码:
IF TXSR.exec_state!=X_ACTIVE
      THEN
           Illegal Opcode_ERROR
FI
discard_speculative_updates_cache()
restore_architectural_register_state()(*SP/IP*)
TXSR.exec_state=X_ABORTED
TXSR.attempt_state++
JMP to TXIP
[0042]在一个实施例中,下表1示出(例如图2的高速缓存116的)示例高速缓存状态、图2的位226和228的位值以及对应描述。在表1中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,而“N/A”表示不可用。
TXR TXw 高速缓存状态 描述
 0   1   MESI   N/A(如果设置了TXw,则也设置了TXr)
 1   X   I   N/A(如果高速缓存状态为无效,则TX位无意义)
 1   1   ES   N/A(ES高速缓存线不能为脏)
 0   0   X   没有附加含义
 1   0   MES   在事务中读取的线(如果为M,则线在高速缓存为脏,在事务中已经读取但没有写入事务。)
 1   1   M   写入事务的线。较早的值已经回写到下一级。
表1-示例高速缓存状态和位描述
[0043]在一个实施例中,下表2示出处理器核心106的请求、(例如图2的高速缓存116的)的高速缓存状态、图2的位226和228的位值以及对应动作。在表2中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,“LD”表示加载请求,“ST”表示存储请求,“LDntx”表示显式非事务加载请求,“STntx”表示显式非事务存储请求,“完成(Done)”表示基线系统中不会发生其它操作(不带其它动作的现有高速缓存命中条件),“[TXr=/TXw=?]”表示那个事件的高速缓存块的最后状态,“NA”表示这个条目不应当出现,“FAULT”表示可标记出错条件,以及“发出未命中(Issue miss)”表示将发出未命中请求。
  核心请求  TXR  TXw   高速缓存状态   动作
  X  0  1   MESI   NA
  X  1  X   I   NA
  X   1   1  ES   NA
  LD   0   0  MES   [TXr=1 TXw=0]
  LD   1   0  MES   完成
  LD   1   1  MES   完成
  LD   0   0  I   发出未命中[TXr=1 TXw=0]
  ST   0   0  M   WB_first_retain_own()[TXr=1TXw=1]
  ST   0   0  E   [TXr=1 TXw=1]
  ST   0   0  S   发出未命中(没有数据传递)[TXr=1 TXw=I]
  ST   0   0  I   发出未命中[TXr=1 TXw=1]
  ST   1   0  M   WB_first_retain_own()[TXr=1TXw=1]
  ST   1   0  E   [TXr=1 TXw=1]
  ST   1   0  S   发出未命中(没有数据传递)[TXr=1 TXw=1]
  ST   1   1  M   完成
  LDntx   0   0  I   发出未命中[TXr=0 TXw=0]
  LDntx   1   X  MES   完成
  LDntx   0   0  MES   完成
  STntx   0   0  S   发出未命中(没有数据传递)[TXr=0 TXw=0]
  STntx   0   0  I   发出未命中[TXr=0 TXw=0]
  STntx   0   0  ME   完成
  STntx   1   0  MES   FAULT
  STntx   1   1  M   FAULT
表2-示例核心请求、高速缓存状态、位值和动作
[0044]图6示出计算系统600的一个实施例的框图。计算系统600可包括一个或多个中央处理器(CPU)即处理器602,它与互连(或总线)604进行通信。在一个实施例中,处理器602可以与图1的处理器102相同或相似。互连604也可以与参照图1-2所述的互连104和/或112相同或相似。处理器602可包括任何类型的处理器,例如专用处理器、网络处理器(例如处理通过计算机网络进行传递的数据的处理器)或者包括简化指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器在内的另一个处理器。另外,处理器602可具有单核或多核设计,例如包括如参照图1-2所述的一个或多个处理器核心(106)。多核设计的处理器602可将不同类型的处理器核心集成到同一个集成电路(IC)芯片上。多核设计的处理器602还可实现为对称或不对称微处理器。
[0045]如图6所示,芯片组606可与互连604进行通信。芯片组606可包括存储控制集线器(MCH)608。MCH 608可包括与存储器114进行通信的存储控制器610。存储器114可存储数据,例如包括由处理器602或者与计算系统600进行通信的任何其它装置运行的指令序列。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储装置(或存储器),例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它易失性存储器装置。还可使用非易失性存储器、如硬盘。附加装置可经由互连604进行通信,例如多个处理器和/或多个系统存储器。
[0046]MCH 608还可包括与图形加速器616进行通信的图形接口614。在一个实施例中,图形接口614可经由加速图形端口(AGP)与图形加速器616进行通信。在本发明的一个实施例中,显示器(例如平板显示器)可通过例如信号转换器与图形接口614进行通信,其中信号转换器将存储装置、如视频存储器或系统存储器中存储的图像的数字表示转换成可由显示器解释和显示的显示信号。在各种实施例中,显示装置所产生的显示信号可在由显示器进行解释并且随后在显示器上显示之前经过各种控制装置。
[0047]另外,集线器接口618可实现MCH 608与输入/输出(I/O)控制集线器(ICH)620之间的通信。ICH 620可提供到与计算机系统600进行通信的I/O装置的接口。ICH 620可通过外设桥(或控制器)624、例如外设部件互连(PCI)桥或通用串行总线(USB)控制器来与总线622进行通信。桥624可提供处理器602与外围装置之间的数据通路。可使用其它类型的拓扑结构。多个总线例如也可通过多个桥或控制器来与ICH 620进行通信。另外,在本发明的各种实施例中,与ICH 620进行通信的其它外设可包括电子集成驱动器(IDE)或小型计算机系统接口(SCSI)硬盘驱动器(一个或多个)、USB端口(一个或多个)、键盘、鼠标、并行端口(一个或多个)、串行端口(一个或多个)、软盘驱动器(一个或多个)或者数字数据支持接口(例如数字视频接口(DVI))。
[0048]总线622可与音频装置626、一个或多个磁盘驱动器628和网络适配器630进行通信。网络适配器630可与计算机网络631进行通信,从而例如使系统600的各种部件能够通过网络631发送和/或接收数据。其它装置可通过总线622进行通信。在本发明的一些实施例中,各种部件(例如网络适配器630)还可与MCH 608进行通信。此外,可将处理器602和MCH 608组合形成单个芯片。另外,在本发明的其它实施例中,图形加速器616可包含在MCH 608中。
[0049]在一个实施例中,计算系统600可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦PROM(EPROM),电EPROM(EEPROM),磁盘驱动器(例如628),软盘,紧致磁盘ROM(CD-ROM),数字多功能光盘(DVD),闪存,磁-光盘,或者用于存储电子数据(例如包括指令)的其它类型的非易失性机器可读介质。
[0050]图7示出根据本发明的一个实施例、以点对点(PtP)配置来设置的计算系统700。具体来说,图7示出其中处理器、存储器和输入/输出装置通过多个点对点接口互连的系统。可由系统700的一个或多个部件来执行参照图1-6所述的操作。
[0051]如图7所示,系统700可包括若干处理器,为了清晰起见仅示出其中两个处理器,即处理器702和704。处理器702、704均可包括实现与存储器710、712的通信的本地存储控制器集线器(MCH)706、708。存储器710和/或712可存储例如参照图1、图2和图6的存储器114所述的各种数据。
[0052]在一个实施例中,处理器702和704可以是参照图6所述的处理器602其中之一。处理器702和704可分别使用PtP接口电路716、718经由点对点(PtP)接口714来交换数据。处理器702、704还均可使用点对点接口电路726、728、730、732经由各个PtP接口722、724来与芯片组720交换数据。芯片组720还可例如使用PtP接口电路737经由高性能图形接口736与高性能图形电路734交换数据。
[0053]在处理器702和704中可提供本发明的至少一个实施例。例如,图1或图2的核心106的一个或多个可设置在处理器702和704中。但是,本发明的其它实施例可存在于图7的系统700的其它电路、逻辑单元或装置中。另外,本发明的其它实施例可分布于图7所示的若干电路、逻辑单元或装置上。
[0054]芯片组720可使用PtP接口电路741与总线740进行通信。总线740可具有与其通信的一个或多个装置,例如总线桥742和I/O装置743。经由总线744,总线桥743可与例如键盘/鼠标745、通信装置746(例如调制解调器、网络接口装置(例如图6的网络适配器630)或者可与计算机网络631进行通信的其它通信装置)、音频I/O装置和/或数据存储装置748等其它装置进行通信。数据存储装置748可存储可由处理器702和/或704运行的代码749。
[0055]在本发明的各种实施例中,本文中例如参照图1-7所述的操作可实现为硬件(例如电路)、软件、固件或者它们的组合,它们可作为计算机程序产品来提供,包括例如其中存储了用于将计算机编程为执行本文所述过程的指令(或软件程序)的机器可读或计算机可读介质。用语“逻辑”作为举例还可包括软件或硬件或者软件和硬件的组合。机器可读介质可包括例如针对图1-7所述的存储装置。此外,这类计算机可读介质可作为计算机程序产品来下载,其中,所述程序可通过包含在载波或其它传播介质中的数据信号、经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户端)。因此,在本文中,载波将被看作包括机器可读介质。
[0056]说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在至少一个实现方案中。短语“在一个实施例中”在本说明书的各个位置中的出现可能或者可能不是全部指同一个实施例。
[0057]在描述和权利要求书中,还可使用用语“耦合”和“连接”及其派生。在本发明的一些实施例中,“连接”可用来指明两个或更多元件相互直接物理或电气接触。“耦合”可表示两个或更多元件直接物理或电气接触。但是,“耦合”也可表示两个或更多元件可能不是相互直接接触,而是可能仍然相互配合或交互。
[0058]因此,虽然已经通过结构特征和/或方法动作特定的语言来描述本发明的实施例,但是大家要理解,要求权益的主题可以不局限于所述的具体特征或动作。而是说,具体特征和动作作为实现要求权益的主题的示例形式来公开。

Claims (30)

1.一种设备,其包括:
存储单元,其存储与未提交的事务存储器访问请求的数量对应的值;以及
第一逻辑,其对于事务存储器访问请求开始和事务存储器访问请求提交的出现而更新所述存储单元中存储的所述值。
2.如权利要求1所述的设备,还包括:第二逻辑,其至少部分地响应于所述事务存储器访问请求中的一个而存储与处理器的一个或多个部件的状态对应的数据。
3.如权利要求2所述的设备,还包括:第三逻辑,其在与所述事务存储器访问请求中的一个相对应的一个或多个操作中的至少一个无法提交之后,恢复所述处理器的所述一个或多个部件的状态。
4.如权利要求2所述的设备,还包括:第三逻辑,其在所述一个或多个操作可以原子方式提交的指示之后,引起与所述事务存储器访问请求中的至少一个相对应的一个或多个操作的执行。
5.如权利要求4所述的设备,其中,在所述存储单元中存储的所述值指明已经提交所述事务存储器访问请求中的至少一个之后,所述第三逻辑引起所述一个或多个操作的运行。
6.如权利要求2所述的设备,其中,所述处理器的所述一个或多个部件包括一个或多个寄存器。
7.如权利要求1所述的设备,其中,所述事务存储器访问请求对应于相同的线程。
8.如权利要求1所述的设备,还包括:用来存储数据的高速缓存,其中,所述高速缓存包括一个或多个位,以指明与所述事务存储器访问请求中的一个相对应的、对所述高速缓存的一部分的访问。
9.如权利要求8所述的设备,其中,所述高速缓存的所述一部分是一个或多个高速缓存线或高速缓存块。
10.如权利要求8所述的设备,其中,所述高速缓存中与所述事务存储器访问请求的至少一个对应的一个或多个条目在所述高速缓存的其它条目之后被逐出。
11.如权利要求1所述的设备,还包括:第二逻辑,其猜测地运行与所述事务存储器访问请求对应的一个或多个操作中的至少一些。
12.如权利要求1所述的设备,其中,与所述事务存储器访问请求对应的一个或多个操作的至少一些被标识为事务的或非事务的。
13.如权利要求1所述的设备,还包括:第二逻辑,其响应下列情况的一个或多个而中止所述事务存储器访问请求的至少一个:
与其它操作的冲突;
迫使中止的实现特定事件;或者
显式中止的请求。
14.如权利要求1所述的设备,还包括:多个处理器核心,其中,所述多个处理器核心的至少一个包括所述第一逻辑或者所述存储单元的一个或多个。
15.如权利要求1所述的设备,还包括:第二逻辑,其在先前的事务存储器访问请求已经访问存储器中与所述加载操作对应的相同位置之后,猜测地引起加载操作的发出。
16.如权利要求1所述的设备,还包括:第二逻辑,其引起与所述事务存储器访问对应的非事务存储的执行,作为对存储器的直写操作。
17.一种方法,其包括:
响应于与事务存储器请求对应的至少第一指令而更新与未提交的事务存储器访问请求的数量对应的存储值;以及
响应于与所述事务存储器请求对应的第二指令而执行一个或多个操作。
18.如权利要求17所述的方法,还包括:响应于所述第二指令而更新所述存储值。
19.如权利要求17所述的方法,还包括:响应于所述第一指令而对处理器的一个或多个部件进行抽点检查。
20.如权利要求17所述的方法,还包括:如果与高速缓存的一部分对应的位指明对该高速缓存的相同位置的先前事务访问,则猜测地发出与所述事务存储器请求对应的加载指令。
21.如权利要求17所述的方法,还包括:将与所述事务存储器请求对应的一个或多个指令标识为事务的或非事务的。
22.如权利要求21所述的方法,其中,隐式地或显式地执行标识所述一个或多个指令的步骤。
23.一种系统,其包括:
存储器,其存储数据;
处理器,其包括:
第一逻辑,其从所述存储器中取出与事务存储器访问的开始对应的第一指令,并从所述存储器中取出与所述事务存储器访问的结束对应的第二指令;以及
第二逻辑,其响应于所述第一指令和所述第二指令的一个或多个而更新存储单元中存储的值。
24.如权利要求23所述的系统,还包括:第三逻辑,其在关于所述一个或多个存储器操作是以原子方式可提交的指示之后,引起运行对所述存储器的一个或多个操作。
25.如权利要求23所述的系统,还包括:第三逻辑,其在与所述事务存储器访问对应的一个或多个操作中的至少一个无法提交之后,恢复所述处理器的一个或多个部件的状态。
26.如权利要求23所述的系统,其中,所述存储单元中存储的所述值对应于未提交的事务存储器访问请求的数量。
27.如权利要求23所述的系统,其中,所述第二逻辑响应所述第一指令或第二指令的运行或发出而更新所述存储单元中存储的所述值。
28.如权利要求23所述的系统,还包括:存储所述存储器中存储的所述数据的至少一部分,其中,所述高速缓存包括一个或多个位,以指明与所述事务存储器访问对应的、对所述高速缓存的一部分的访问。
29.如权利要求28所述的系统,还包括:第三逻辑,其响应与所述事务存储器访问对应的一个或多个操作而更新所述高速缓存中存储的数据。
30.如权利要求23所述的系统,还包括音频装置。
CN2007800107806A 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统 Active CN101410797B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310090359.8A CN103257933B (zh) 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/394,687 2006-03-30
US11/394,687 US8180977B2 (en) 2006-03-30 2006-03-30 Transactional memory in out-of-order processors
PCT/US2007/064450 WO2007115003A1 (en) 2006-03-30 2007-03-20 Transactional memory in out-of-order processors

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310090359.8A Division CN103257933B (zh) 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统

Publications (2)

Publication Number Publication Date
CN101410797A true CN101410797A (zh) 2009-04-15
CN101410797B CN101410797B (zh) 2013-04-24

Family

ID=38563996

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310090359.8A Active CN103257933B (zh) 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统
CN2007800107806A Active CN101410797B (zh) 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310090359.8A Active CN103257933B (zh) 2006-03-30 2007-03-20 无序处理器中的事务存储器执行的方法、设备和系统

Country Status (7)

Country Link
US (1) US8180977B2 (zh)
JP (1) JP5118652B2 (zh)
CN (2) CN103257933B (zh)
DE (2) DE112007000812B4 (zh)
GB (1) GB2447200B (zh)
TW (1) TWI371688B (zh)
WO (1) WO2007115003A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335165A (zh) * 2012-06-15 2015-02-04 国际商业机器公司 事务开始/结束指令
CN104350463A (zh) * 2012-06-15 2015-02-11 国际商业机器公司 在事务执行中的受限指令
CN104714848A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 利用用于聚结内存事务的指示的方法和系统
CN104714836A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 用于聚结内存事务的方法和系统
CN105723348A (zh) * 2013-12-17 2016-06-29 英特尔公司 使用事务性存储器检测未授权存储器修改及访问

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8165025B2 (en) * 2006-12-08 2012-04-24 Ixia Method and apparatus for generating a unique packet identifier
US7669040B2 (en) * 2006-12-15 2010-02-23 Sun Microsystems, Inc. Method and apparatus for executing a long transaction
US20080158237A1 (en) * 2006-12-28 2008-07-03 Selwan Pierre M Graphics memory module
US7966459B2 (en) * 2007-12-31 2011-06-21 Oracle America, Inc. System and method for supporting phased transactional memory modes
US7904668B2 (en) * 2007-12-31 2011-03-08 Oracle America, Inc. Optimistic semi-static transactional memory implementations
US8407455B2 (en) * 2008-07-28 2013-03-26 Advanced Micro Devices, Inc. Coexistence of advanced hardware synchronization and global locks
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8627014B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Memory model for hardware attributes within a transactional memory system
US8161247B2 (en) 2009-06-26 2012-04-17 Microsoft Corporation Wait loss synchronization
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8812796B2 (en) * 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
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
US8751748B2 (en) * 2010-01-15 2014-06-10 International Business Machines Corporation Reader set encoding for directory of shared cache memory in multiprocessor system
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8521995B2 (en) * 2009-12-15 2013-08-27 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8533440B2 (en) * 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US9477515B2 (en) 2009-12-15 2016-10-25 Intel Corporation Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode
US8539465B2 (en) 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8924692B2 (en) 2009-12-26 2014-12-30 Intel Corporation Event counter checkpointing and restoring
US8479053B2 (en) 2010-07-28 2013-07-02 Intel Corporation Processor with last branch record register storing transaction indicator
US8484235B2 (en) 2011-03-28 2013-07-09 International Business Machines Corporation Dynamically switching the serialization method of a data structure
US9582275B2 (en) 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
WO2013101144A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Overlapping atomic regions in a processor
WO2013101138A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Identifying and prioritizing critical instructions within processor circuitry
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
US9558118B2 (en) 2012-03-30 2017-01-31 Intel Corporation Tracing mechanism for recording shared memory interleavings on multi-core processors
US9361115B2 (en) * 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US9015419B2 (en) 2012-06-15 2015-04-21 International Business Machines Corporation Avoiding aborts due to associativity conflicts in a transactional environment
US9262320B2 (en) 2012-06-15 2016-02-16 International Business Machines Corporation Tracking transactional execution footprint
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9436477B2 (en) * 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9298631B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Managing transactional and non-transactional store observability
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US20130339680A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9311101B2 (en) * 2012-06-15 2016-04-12 International Business Machines Corporation Intra-instructional transaction abort handling
US9223687B2 (en) 2012-06-15 2015-12-29 International Business Machines Corporation Determining the logical address of a transaction abort
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
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9411739B2 (en) 2012-11-30 2016-08-09 Intel Corporation System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
US9547594B2 (en) * 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9535744B2 (en) 2013-06-29 2017-01-03 Intel Corporation Method and apparatus for continued retirement during commit of a speculative region of code
CN104572506B (zh) * 2013-10-18 2019-03-26 阿里巴巴集团控股有限公司 一种并发访问内存的方法及装置
US9158573B2 (en) 2013-12-12 2015-10-13 International Business Machines Corporation Dynamic predictor for coalescing memory transactions
US9292337B2 (en) 2013-12-12 2016-03-22 International Business Machines Corporation Software enabled and disabled coalescing of memory transactions
US9348523B2 (en) 2013-12-12 2016-05-24 International Business Machines Corporation Code optimization to enable and disable coalescing of memory transactions
US10324768B2 (en) * 2014-12-17 2019-06-18 Intel Corporation Lightweight restricted transactional memory for speculative compiler optimization
GB2533416A (en) 2014-12-19 2016-06-22 Advanced Risc Mach Ltd Monitoring utilization of transactional processing resource
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US10318430B2 (en) * 2015-06-26 2019-06-11 International Business Machines Corporation System operation queue for transaction
CN106527961B (zh) * 2015-09-15 2019-06-21 伊姆西公司 用于保证数据一致性的方法和装置
US9760397B2 (en) 2015-10-29 2017-09-12 International Business Machines Corporation Interprocessor memory status communication
US9563467B1 (en) 2015-10-29 2017-02-07 International Business Machines Corporation Interprocessor memory status communication
US10261827B2 (en) * 2015-10-29 2019-04-16 International Business Machines Corporation Interprocessor memory status communication
US9916179B2 (en) 2015-10-29 2018-03-13 International Business Machines Corporation Interprocessor memory status communication
US20170371701A1 (en) * 2016-06-27 2017-12-28 Kshitij A. Doshi Apparatuses, methods, and systems for granular and adaptive hardware transactional synchronization
GB2579246B (en) * 2018-11-28 2021-10-13 Advanced Risc Mach Ltd Apparatus and data processing method for transactional memory

Family Cites Families (36)

* 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
US5652859A (en) * 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5765208A (en) * 1995-09-29 1998-06-09 Motorola, Inc. Method of speculatively executing store instructions prior to performing snoop operations
US5835961A (en) 1996-05-03 1998-11-10 Digital Equipment Corporation System for non-current page table structure access
US6038645A (en) 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US20020108025A1 (en) 1998-10-21 2002-08-08 Nicholas Shaylor Memory management unit for java environment computers
US6681293B1 (en) 2000-08-25 2004-01-20 Silicon Graphics, Inc. Method and cache-coherence system allowing purging of mid-level cache entries without purging lower-level cache entries
US6895527B1 (en) 2000-09-30 2005-05-17 Intel Corporation Error recovery for speculative memory accesses
US6640285B1 (en) 2000-10-26 2003-10-28 Emc Corporation Method and apparatus for improving the efficiency of cache memories using stored activity measures
US7080119B2 (en) * 2001-07-17 2006-07-18 Bea Systems, Inc. System and method for transaction processing with delegated commit feature
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
US7120762B2 (en) 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
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
US7263585B2 (en) 2002-09-19 2007-08-28 Ip-First, Llc Store-induced instruction coherency mechanism
US7269717B2 (en) 2003-02-13 2007-09-11 Sun Microsystems, Inc. Method for reducing lock manipulation overhead during access to critical code sections
US7216202B1 (en) 2003-02-25 2007-05-08 Sun Microsystems, Inc. Method and apparatus for supporting one or more servers on a single semiconductor chip
US7139892B2 (en) 2003-05-02 2006-11-21 Microsoft Corporation Implementation of memory access control using optimizations
US7676603B2 (en) 2004-04-20 2010-03-09 Intel Corporation Write combining protocol between processors and chipsets
GB0415850D0 (en) 2004-07-15 2004-08-18 Imagination Tech Ltd Memory management system
US20060026557A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Manipulating portlets
US7395382B1 (en) 2004-08-10 2008-07-01 Sun Microsystems, Inc. Hybrid software/hardware transactional memory
CN1755365A (zh) * 2004-09-29 2006-04-05 中国人民解放军军事医学科学院基础医学研究所 一种检测丙型肝炎病毒抗体的方法
US7856537B2 (en) 2004-09-30 2010-12-21 Intel Corporation Hybrid hardware and software implementation of transactional memory access
US7984248B2 (en) 2004-12-29 2011-07-19 Intel Corporation Transaction based shared data operations in a multiprocessor environment
US20060184840A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Using timebase register for system checkstop in clock running environment in a distributed nodal environment
AU2006247999A1 (en) * 2005-04-20 2006-11-23 Videoegg, Inc. Browser enabled video manipulation
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7480771B2 (en) 2005-08-17 2009-01-20 Sun Microsystems, Inc. Conditional synchronization mechanisms allowing multiple store operations to become visible while a flagged memory location is owned and remains unchanged
US7809903B2 (en) 2005-12-15 2010-10-05 Intel Corporation Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US7870545B2 (en) 2005-12-16 2011-01-11 Intel Corporation Protecting shared variables in a software transactional memory system
US8683143B2 (en) 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
US9009116B2 (en) * 2006-03-28 2015-04-14 Oracle America, Inc. Systems and methods for synchronizing data in a cache and database
US8180977B2 (en) 2006-03-30 2012-05-15 Intel Corporation Transactional memory in out-of-order processors
US8185698B2 (en) 2007-04-09 2012-05-22 Bratin Saha Hardware acceleration of a write-buffering software transactional memory

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335165A (zh) * 2012-06-15 2015-02-04 国际商业机器公司 事务开始/结束指令
CN104350463A (zh) * 2012-06-15 2015-02-11 国际商业机器公司 在事务执行中的受限指令
CN104335165B (zh) * 2012-06-15 2017-03-01 国际商业机器公司 用于在计算环境中执行机器指令的方法和计算机系统
CN104350463B (zh) * 2012-06-15 2017-06-23 国际商业机器公司 在事务执行中的受限指令
CN104714848A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 利用用于聚结内存事务的指示的方法和系统
CN104714836A (zh) * 2013-12-12 2015-06-17 国际商业机器公司 用于聚结内存事务的方法和系统
CN104714848B (zh) * 2013-12-12 2018-01-02 国际商业机器公司 利用用于聚结内存事务的指示的方法和系统
CN104714836B (zh) * 2013-12-12 2018-01-05 国际商业机器公司 用于聚结内存事务的方法和系统
CN105723348A (zh) * 2013-12-17 2016-06-29 英特尔公司 使用事务性存储器检测未授权存储器修改及访问
CN105723348B (zh) * 2013-12-17 2019-02-15 英特尔公司 使用事务性存储器检测未授权存储器修改及访问

Also Published As

Publication number Publication date
GB0812727D0 (en) 2008-08-20
DE112007003801B3 (de) 2023-07-13
JP2009527866A (ja) 2009-07-30
TWI371688B (en) 2012-09-01
DE112007000812T5 (de) 2009-01-22
US20070260942A1 (en) 2007-11-08
CN103257933A (zh) 2013-08-21
WO2007115003A1 (en) 2007-10-11
DE112007000812B4 (de) 2023-06-07
CN103257933B (zh) 2017-12-15
GB2447200B (en) 2011-06-22
GB2447200A (en) 2008-09-03
JP5118652B2 (ja) 2013-01-16
CN101410797B (zh) 2013-04-24
US8180977B2 (en) 2012-05-15
TW200815976A (en) 2008-04-01

Similar Documents

Publication Publication Date Title
CN101410797B (zh) 无序处理器中的事务存储器执行的方法、设备和系统
CN101059783B (zh) 事务型存储器的虚拟化
CN101770397B (zh) 扩展高速缓存一致性协议以支持本地缓冲的数据的设备、处理器、系统和方法
US6801986B2 (en) Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation
US7228389B2 (en) System and method for maintaining cache coherency in a shared memory system
US10572179B2 (en) Speculatively performing memory move requests with respect to a barrier
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
US20070050563A1 (en) Synchronization arbiter for proactive synchronization within a multiprocessor computer system
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US10824567B2 (en) Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead
CN104375958A (zh) 高速缓存存储器管理事务性存储器访问请求
US8375171B2 (en) System and method for providing L2 cache conflict avoidance
CN101788922B (zh) 基于辅助线程实现事务存储系统的方法和装置
CN101950259A (zh) 在硬件中登记用户处理程序以用于事务存储器事件处理
US10140052B2 (en) Memory access in a data processing system utilizing copy and paste instructions
CN101097544A (zh) 虚拟化事务存储器的全局溢出方法
US10152322B2 (en) Memory move instruction sequence including a stream of copy-type and paste-type instructions
CN101458636A (zh) 用于硬件锁省略(hle)的后期锁获取机制
US11086672B2 (en) Low latency management of processor core wait state
US10241945B2 (en) Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US6546465B1 (en) Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
US20210103493A1 (en) Memory interface having data signal path and tag signal path
US6412047B2 (en) Coherency protocol
CN110291507A (zh) 用于提供对存储器系统的加速访问的方法和装置
US20180052607A1 (en) Migration of memory move instruction sequences between hardware threads

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