CN103257933A - 无序处理器中的事务存储器执行的方法、设备和系统 - Google Patents
无序处理器中的事务存储器执行的方法、设备和系统 Download PDFInfo
- Publication number
- CN103257933A CN103257933A CN2013100903598A CN201310090359A CN103257933A CN 103257933 A CN103257933 A CN 103257933A CN 2013100903598 A CN2013100903598 A CN 2013100903598A CN 201310090359 A CN201310090359 A CN 201310090359A CN 103257933 A CN103257933 A CN 103257933A
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000004044 response Effects 0.000 claims description 15
- 238000007689 inspection Methods 0.000 claims description 7
- 238000011084 recovery Methods 0.000 abstract description 4
- 239000000872 buffer Substances 0.000 description 11
- 230000009471 action Effects 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000011022 operating instruction Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- CVOFKRWYWCSDMA-UHFFFAOYSA-N 2-chloro-n-(2,6-diethylphenyl)-n-(methoxymethyl)acetamide;2,6-dinitro-n,n-dipropyl-4-(trifluoromethyl)aniline Chemical compound CCC1=CC=CC(CC)=C1N(COC)C(=O)CCl.CCCN(CCC)C1=C([N+]([O-])=O)C=C(C(F)(F)F)C=C1[N+]([O-])=O CVOFKRWYWCSDMA-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Abstract
描述了提供无序处理器中的事务存储器执行的方法和设备。在一个实施例中,存储值对应于未提交的事务存储器访问请求的数量。根据所述实施例,在出错、故障等情况下,存储值可用来提供嵌套恢复。
Description
技术领域
一般来说,本公开涉及电子领域。更具体来说,本发明的一个实施例涉及无序处理器中的事务存储器(TM)执行。
背景技术
为了改进性能,一些计算机系统可同时运行多个线程。一般来说,在线程访问共享资源之前,可获得共享资源的锁定。在共享资源是存储器中存储的数据结构的情况下,尝试访问同一个资源的所有线程可按照锁定机制提供的互斥性来使其操作的执行串行化。这对于系统性能可能是有害的,并且例如因死锁缺陷而可能导致程序故障。
为了降低由锁定机制的利用引起的性能损失,一些计算机系统可使用事务存储器。事务存储器一般指的是一种同步模型,它允许多个线程同时访问共享资源而无需利用锁定机制。但是,例如由于由无序处理器中进行的推测处理引起的误预测,无序处理器中的事务存储器执行增加了设计的复杂度。
发明内容
按照本发明的第一方面,提供了一种用于无序处理器中的事务存储器执行的设备,其包括:
能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
一个或多个处理器核心,
高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及
事务深度计数器逻辑模块,其对于事务存储器访问请求开始和事务存储器访问请求提交的出现而更新所述事务深度计数器中存储的所述值,
调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。
按照本发明的第二方面,提供了一种将在处理器中执行的方法,所述方法包括:
响应于与事务存储器请求对应的至少第一指令,更新与未提交的事务存储器访问请求的数量对应的事务深度计数器中的存储值,
响应于与所述事务存储器请求对应的第二指令而在执行单元中执行一个或多个操作,以及
基于对高速缓存的一部分的先前的事务存储器访问的指示,从调度单元猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,重新发出所述事务存储器加载指令。
按照本发明的第三方面,提供了一种用于无序处理器中的事务存储器执行的系统,其包括:
存储器,其存储数据;
能够经由互连或总线进行通信的一个或多个处理器,每个处理器包括:
一个或多个处理器核心,
高速缓存,其存储被一个或多个处理器核心利用的数据,以及/或
路由器,其在所述处理器的各个部件之间进行通信,其中所述处理器核心包括:
读取单元,其从所述存储器中取出与事务存储器访问的开始对应的第一指令,并从所述存储器中取出与所述事务存储器访问的结束对应的第二指令;
事务深度计数器,其存储与未提交的事务存储器访问请求的数量对应的值;以及
事务深度计数器逻辑模块,其响应于所述第一指令和所述第二指令的一个或多个而更新事务深度计数器中存储的值,
调度单元,其在先前的事务存储器访问请求已经访问存储器中与加载操作对应的相同位置之后,猜测地引起加载操作的发出,
其中调度单元基于对高速缓存的一部分的先前的事务存储器访问的指示猜测地发出与事务存储器请求对应的事务存储器加载指令到所述高速缓存的一部分,其中所述先前的事务存储器访问在所述事务存储器加载指令猜测地访问所述高速缓存的一部分之前发生,并且其中在退出或提交之后,响应于缺少对所述高速缓存的一部分的先前的事务存储器访问,调度单元重新发出所述事务存储器加载指令。
附图说明
参照附图来提供详细描述。附图中,参考标号最左边的数字标识首次出现参考标号的附图。不同附图中相同的参考标号的使用表示相似或相同项。
图1示出了计算系统的实施例的框图,它可用来实现本文所述的各种实施例。
具体描述
在以下描述中,阐明大量具体细节,以便提供对各种实施例的透彻了解。但是,即使没有具体细节也可实施部分实施例。在其它情况下,没有详细描述众所周知的方法、过程、部件和电路,以免影响对具体实施例的理解。
本文描述了根据本发明一个实施例的处理器核心的各部分,描述了根据本发明一个实施例的处理器核心的各部分,描述了根据本发明的各种实施例的方法,并且描述了事务状态和控制寄存器的一个实施例。
本文所述的实施例的一部分可提供无序处理器、如参照图1所述的处理器中的事务存储器执行的有效机制。更具体来说,图1示出根据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个处理器102-1至102-N(本文中一般称作“处理器102”)。处理器102可经由互连或总线104进行通信。各处理器可包括各种部件,为了清晰起见,仅参照处理器102-1来论述其中的一部分。因此,其余处理器102-2至102-N的每个可包括参照处理器102-1所述的相同或相似部件。
在一个实施例中,处理器102-1可包括一个或多个处理器核心106-1至106-M(本文中称作“核心106”)、高速缓存108(可包括一个或多个专用或共享高速缓存)和/或路由器110。处理器核心106可在单个集成电路(IC)芯片上实现。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如高速缓存108)、总线或互连(例如总线或互连112)、存储控制器或其它部件。
在一个实施例中,路由器110可用于在处理器102-1和/或系统100的各种部件之间进行通信。另外,处理器102-1可包括一个以上路由器110。另外,多个路由器(110)可进行通信,以便实现处理器102-1的内部或外部的各种部件之间的数据路由。
高速缓存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进行通信。
下面描述了根据本发明的一个实施例的处理器核心106的部分。在一个实施例中,描述了指令通过核心106的流程。一个或多个处理器核心(例如处理器核心106)可在单个集成电路芯片(或管芯)上实现,如参照图1所述。另外,芯片可包括一个或多个共享和/或专用高速缓存(例如图1的高速缓存108)、互连(例如图1的互连104和/或112)、存储控制器或其它部件。在一个实施例中,处理器核心106可用于通过硬件(本文中一般可称作限制事务存储器(RTM)))来运行事务存储器访问请求。
处理器核心106可包括取出指令供核心106运行的读取单元。可从任何存储装置、例如存储器114中取指令。核心106还可包括对取出指令进行解码的解码单元。例如,解码单元可将取出指令解码为多个μop(微操作)。
此外,核心106可包括调度单元。调度单元可执行与存储解码指令(例如从解码单元所接收)关联的各种操作,直到指令准备分发,例如直到解码指令的所有源值变为可用。在一个实施例中,调度单元可调度和/或向执行单元发出(或分发)解码指令供运行。执行单元可在指令被解码(例如由解码单元)和分发(例如由调度单元)之后运行分发指令。在一个实施例中,执行单元可包括一个以上执行单元,例如存储器执行单元、整数执行单元、浮点执行单元或者其它执行单元。另外,执行单元可无序地运行指令。因此,在一个实施例中,处理器核心106可以是无序处理器。核心106还可包括退出单元。退出单元可在提交运行指令之后退出运行指令。在一个实施例中,运行指令的退出可导致从指令的运行提交处理器状态、解除分配指令所使用的物理寄存器等。
核心106可包括重排序缓冲器(ROB),以便存储与即时指令(flightinstructions)(或μop)有关的信息,供处理器核心106的各种部件进行访问。核心106还可包括RAT(寄存器别名表),以便逻辑(或结构)寄存器(例如软件指令的操作数所标识的寄存器)到对应物理寄存器的映射。在一个实施例中,RAT中的各条目可包括向各物理寄存器指定的ROB标识符。此外,加载缓冲器和存储缓冲器(本文中可统称为存储器排序缓冲器(MOB))可分别存储尚未加载或回写到主存储器(例如处理器核心106外部的存储器、如存储器114)的未决存储器操作。MOB逻辑可执行与加载缓冲器和存储缓冲器相关的各种操作。
另外,处理器核心106可包括总线单元,以便允许在处理器核心106的部件与其它部件(例如参照图1所述的部件)之间经由一个或多个总线(例如总线104和/或112)的通信。一个或多个填充缓冲器可在将所接收数据存储到高速缓存116之前暂时存储从存储器114接收(例如通过总线104和/或112)的数据。
高速缓存116可包括一个或多个高速缓存线(例如高速缓存线0至W)。在一个实施例中,高速缓存116的各线可包括运行于核心106的各线程的事务读取位和/或事务写入位。事务读取位和事务写入位可按照本发明下面所描述的方式来设置或清除,例如通过事务存储器访问请求来指明对于相应高速缓存线的(加载和/或存储)访问。即使在该实施例中,各高速缓存线也表示为具有相应的事务读取位和事务写入位,但其它配置是可能的。例如,事务读取位(或事务写入位)可对应于高速缓存116的选择部分,例如高速缓存116的高速缓存块或其它部分。事务读取位和/或事务写入位还可存储在高速缓存116以外的位置,例如存储在图1的高速缓存108、存储器114或者临时驱逐数据高速缓存(victim cache)。
核心106可包括事务深度计数器,以便存储与仍然未提交的事务存储器访问请求的数量对应的值。例如,事务深度计数器中存储的值可指明与同一个线程对应的多个事务存储器访问请求的嵌套深度。在一种情况下,在未决事务内部发起一个事务(例如经由库调用或者其它嵌套过程)时,可产生多个事务存储器访问请求。事务深度计数器可实现为任何类型的存储装置,例如硬件寄存器或者存储器(例如存储器114或高速缓存116)中存储的变量。核心106还可包括事务深度计数器逻辑,以便更新事务深度计数器中存储的值。此外,核心106可包括对核心106的各种部件的状态进行抽点检查(或存储)的事务检查点逻辑以及恢复核心106的各种部件的状态的事务恢复逻辑。例如,核心106还可包括高速缓存逻辑,它可通过访问高速缓存116来执行各种操作。此外,核心106可包括一个或多个附加寄存器,它们对应于各种事务存储器访问请求,例如事务状态和控制(TXSR)、事务指令指针(TXIP)(例如,可以是在对应事务开始时(或者就在对应事务之前)指向指令的指令指针)、和/或事务栈指针(TXSP)(例如,可以是指向存储核心106的一个或多个部件的各种状态的栈顶的栈指针)。
更具体来说,下面描述了运行与事务存储器访问请求对应的一个或多个操作的方法的一个实施例的流程。在一个实施例中,参照图1所述的各种部件可用来执行所述操作的一个或多个。
在该实施例中,在第一操作,接收事务存储器访问请求(例如一个或多个存储器加载或存储操作)。例如,读取单元可取出指明事务存储器执行开始的指令。根据至少一个指令集架构,指明事务存储器执行开始的指令可以是TXMBEG<user_handler_IP>,其中,user_handler_IP标识在中止、出错或其它错误条件的情况下可将执行重定向到的用户处理过程。事务结束指令(例如根据至少一个指令集架构的TXMEND)也可指明事务的结束。在一个实施例中,TXMBEG指令与TXMEND之间的所有操作可标记为事务。在一个实施例中,事务操作可缺省为事务(以及例如通过指令前缀或参数的显式非事务),例如允许以事务方式来使用非事务遗留库而无需改变代码。备选地,事务操作可缺省为非事务(以及例如通过指令前缀或参数的显式事务)。在一个实施例中,可使用显式非事务指令的特殊集合,即使它们可能出现在事务中、例如TXMBEG指令与TXMEND指令之间,也可以非事务方式来处理。在一个实施例中,在事务中(例如在TXMBEG指令与TXMEND指令之间)发生的非事务存储操作可由执行单元作为对存储器114的直写操作来运行。在一个实施例中,可为操作的缺省处理的设定提供TXMBEG指令,例如通过对应参数或前缀来提供。在一个实施例中,缺省的设定可通过控制寄存器中的模式位来提供。
在第二操作,事务深度计数器逻辑可更新事务深度计数器(例如可根据实现来递增或递减事务深度计数器)。在一个实施例中,TXMBEG指令(例如由执行单元)的运行可导致更新事务深度计数器。备选地,事务深度计数器可在发出时间、例如在调度单元发出TXMBEG指令时被更新。在第二操作,事务检查点逻辑还可对各种部件(例如事务深度计数器和/或寄存器)的状态进行抽点检查。例如,事务检查点逻辑可将核心106的一个或多个部件的状态存储在存储装置中(例如在高速缓存116、高速缓存108和/或存储器114中)。本文将进一步进行论述,由于核心106可同时(和/或猜测地)处理一个以上事务存储器访问请求,因此,事务检查点逻辑可存储核心106的各种部件的一种以上状态,并且在一个实施例中,各种抽点检查状态可存储到作为堆栈来实现的数据结构中。在一个实施例中,事务检查点逻辑可存储与最外面的事务存储器请求对应的抽点检查状态。
在第三操作,例如可由执行单元来运行与第一操作的事务存储器访问请求对应的一个或多个指令(或操作)。在第三操作运行指令期间,每当访问高速缓存116的一部分时,对应位(例如事务读取位和/或事务写入位)可被更新,例如根据实现被设置或清除。例如,高速缓存逻辑可标识正访问高速缓存116的事务指令,并更新对应事务读取位和/或事务写入位。在一个实施例中,例如通过使用随指令提供的和/或存储在对应位置、例如在ROB的对应条目中的前缀(或控制位),第三操作的指令可显式或隐式标识为事务或非事务操作。
在第四操作,如果接收到另一个事务存储器访问请求,则该方法继续进行第二操作。否则,如果在第四操作接收到附加事务存储器访问请求,则在第五操作,确定是否存在与第三操作的指令的运行对应的冲突或中止条件。如果存在与另一个指令(可以是与运行于相同或不同处理器核心的另一个线程对应的指令)的冲突,则在第六操作中止该事务。例如,冲突指令可发送窥探无效以用于高速缓存116中的条目--第一操作的事务正在访问(或者已经标记为正被访问,由事务读取位和/或事务写入位中存储的值表示)。另外,如果高速缓存116的部分的事务写入位指明对高速缓存的相同部分的先前写访问,则在第六操作中止从另一个线程对高速缓存116的相同部分的窥探读请求。第五操作的中止也可能是因为迫使中止的实现特定事件(例如不可高速缓存(UC)事件、I/O事件、缓冲器溢出等)。
在一个实施例中,如果窥探引起使存储器中存储(例如高速缓存116中存储)的数据无效,则可将加载缓冲器顶部的加载指令包含在窥探校验中,并且例如可由MOB逻辑来执行完全地址校验(而不是部分地址校验)。如果在第五操作,加载缓冲器顶部的加载指令与窥探有冲突,则可在第六操作中止对应的事务存储器请求。备选地,显式中止请求可引起执行第五操作。例如,根据至少一个指令集架构,包括事务存储器执行的中止的指令可以是TXMABT。中止指令可引起显式中止,它在多个嵌套事务存储器访问请求(例如,由事务深度计数器中存储的值来表示)的情况下,可引起回退到先前状态并调用对应的处理程序(例如在可采用对应TXMBEG指令来标识的、例如参照第一操作所述的多个未决事务存储器访问请求的情况下的最里面的处理程序)。在一个实施例中,中止可引起回退到对应于最外面的事务的抽点检查状态并调用对应的最外面的TXMBEG处理程序。在一个实施例中,在第二操作,事务恢复逻辑可将核心106的各种部件恢复到先前状态。
在一个实施例中,可通过使用写入时复制机制将寄存器恢复状态记录在存在于寄存器的位中和/或RAT的对应条目中,来执行第二操作的抽点检查。例如,1位阵列可与各RAT例示关联(备选地只可使用一个这样的阵列)。当事务深度计数器中存储的值指明未决事务(例如一个实施例中的TXND>0)时,则在解码单元正执行寄存器重命名操作时,该阵列被校验。如果对应位指明没有先前访问,则将μop插入指令流和ROB,以便例如在重命名之前将对应数据写入寄存器其中之一。如果对应位指明先前访问,则不需要复制,因为在写入之前已经复制了对应数据。如果发生转移误预测,则可在逻辑上对各种1位阵列共同进行“或”运算,例如以便形成前进的起始阵列。如果进行这种操作,则重复误预测不会引起重复的写入时复制操作,因为保证给定数据的一个副本存在于核心106的寄存器中。这可限制写入时复制的性能开销。
在一个实施例中,当高速缓存116被逐出时,具有活动(例如设置)事务读取位或事务写入位的条目可以最后被逐出。如果高速缓存116中没有剩余其它可用空间,则可将程序执行重定向到用户处理程序(例如对应TXMBEG指令的处理程序)。此外,当事务是活动的但暂时被挂起时,填充缓冲器可用来服务于非事务操作(例如存储数据)。
如果不存在冲突,则在第三操作,确定是否(例如由退出单元)成功地提交与事务存储器访问请求(例如由TXMBEG和对应的TXMEND指令来标识)对应的事务存储器(一个或多个)访问操作。如果事务存储器访问操作仍然未提交,则方法继续进行第三操作以便运行对应指令。一旦成功地提交与事务存储器访问请求对应的事务存储器访问操作,则在第八操作,事务深度计数器逻辑更新事务深度计数器。在一个实施例中,(例如由执行单元)执行或者(例如由调度单元)发出TXMEND指令可引起提交事务存储器访问请求,因此执行第八操作。
在第九操作,确定与其它事务存储器访问请求对应的任何事务存储器访问操作是否仍然未提交。在一个实施例中,可由事务深度计数器逻辑来执行第九操作,其方式是例如确定事务深度计数器中存储的值是否指明存在剩余事务存储器访问请求(例如在一个实施例中当事务深度计数器没有清空时)。如果在第九操作其它操作有待运行,则方法继续进行第三操作。一旦没有剩下与事务存储器访问请求对应的其它操作(例如事务深度计数器清空),则在第十操作,按照已提交事务存储器访问请求的操作以原子方式来更新对应数据(例如在高速缓存116、高速缓存108和/或存储器114中)。如果事务深度计数器中存储的值指明TXMEND对应于最外面的事务存储器访问(例如当事务深度计数器清空时),则TXMEND指令还可指明对应事务存储器访问请求的提交点。在一个实施例中,还可更新(例如在一个实施例中清除)对应事务读取位和/或事务写入位,以指明在核心106中没有未决的其它事务存储器访问请求。因此,例如通过确保已经解决所有推测和/或例外、属于事务写集合的所有高速缓存块处于独占状态和/或属于读集合的所有块当前存在且有效,TXMEND指令可引起原子提交。本文所述的读或写集合一般可指存储器(例如高速缓存116)中分别与事务读取位和事务写入位对应的数据集合。在一个实施例中,在提交对应写集合时,停止入局窥探。
在一个实施例中,核心106可猜测地运行参照上述方法所述的各种指令(或操作)。还可无序地执行上述方法的各种操作。例如,可按照任何顺序来执行第三操作、第四操作和第五操作。另外,在一个实施例中,窥探请求可在执行第五操作、第六操作、第七操作和/或第十操作之前被停止,并且在执行第五操作、第六操作、第七操作和/或第十操作之后被取消停止。
下面描述了运行与事务存储器访问请求对应的一个或多个加载操作的方法的另一个实施例的流程。在一个实施例中,参照图1所述的各种部件可用来执行所述操作的一个或多个。
在该实施例中,在第一操作,解码单元对取出指令进行解码,并确定取出指令是否对应于事务存储器访问加载操作。如果指令没有对应于事务存储器访问加载操作,则核心106可相应地处理该指令(第二操作)。例如,对于事务存储器访问存储操作,在退出对应事务存储器访问请求之后,核心106可向高速缓存116发出存储操作(或指令)。在一个实施例中,与存储操作对应的地址或数据可猜测地计算并存储在存储缓冲器中。一旦对应事务存储器访问请求退出,则可根据预先计算数据向高速缓存发出存储。在一个实施例中,如果在向高速缓存116发出存储时没有设置位,则已退出存储还引起设置已访问高速缓存块(例如对应的TXw位)。
在第三操作,高速缓存逻辑可确定前一个事务存储器访问请求是否访问了高速缓存116中被第二操作的加载指令寻址的相同位置。在一个实施例中,高速缓存逻辑可访问高速缓存116的对应事务读取位以便执行第三操作。如果先前已经访问了相同位置,则调度单元可猜测地发出加载指令。否则,MOB逻辑则可在第五操作的退出(或者由ROB的对应条目所示的提交)之后重新发出加载指令,然后在第六操作,在高速缓存116中设置对应的TXr位。在一个实施例中,如果被前一个事务加载进行了访问,则对应TXr位也可存储在加载缓冲器中。一旦如ROB的对应条目所示提交了加载操作,ROB可向加载缓冲器(或MOB逻辑)发送信号来指明提交了对应加载操作。因此,在加载缓冲器中提供TXr位可限制第五操作和第六操作的高速缓存116的重新访问,例如以便优化高速缓存带宽。
在一个实施例中,例如通过允许发出加载而无需串行化以及无需更新读或写集合,但在操作处于对应加载或存储缓冲器(例如分别为加载缓冲器或存储缓冲器)顶部时重新访问高速缓存116,以便将加载或存储地址显式标识为属于事务读或写集合,可将事务存储器访问请求的加载或存储操作显式或隐式标识为事务或非事务操作。这允许猜测地发出加载和存储,而没有不正确地更新读写集合,因而允许标识加载和存储的准确性,并且还可自动处理转移误预测。当存储指令离开存储缓冲器的最早部分(在一个实施例中可称作上级存储队列)时,存储操作可更新读写集合。另外,隐式指令可允许遗留库得到本文所述的实施例支持。
下面描述了事务状态和控制寄存器(TXSR)的一个实施例。在一个实施例中,TXSR寄存器可用来实现本文中所述的各种实施例。例如,在一个实施例中,寄存器可包括TXSR寄存器。另外,可通过访问寄存器来执行本发明上述方法所述的操作。
在该实施例中,TXSR寄存器可包括一个或多个条目(或者一个实施例中的位)。根据至少一个指令集架构,各条目可具有名称。各条目还可具有对应类,例如以便将相似的位分为一类。各条目还具有对应的描述。在一个实施例中,类信息和描述用于信息目的,并且可能没有存储在实际寄存器中。在一个实施例中,如果条目之一指明描述所标识的状态,则可采取一个或多个动作。在该实施例中,TXDR和TXFR可以是用于调试目的的寄存器(例如上述实施例的寄存器中所包括的)。例如,TXDR可在事务中止操作之前存储存储器指令的地址或者数据冲突的窥探地址。另外,TXFR可存储已经引起事务中止的出错指令的指令指针(IP)。在一个实施例中,TXDR和TXFR中存储的值可在中止之后由事务处理例行程序(例如由TXMBEG所标识的处理程序)来读取,以便允许软件确定引起中止的地址。
在一个实施例中,TXMBEG指令可根据TXSR寄存器的状态来执行以下两个动作中的一个或多个:
1.TXMBEG指令可将执行转变成原子执行模式,其中指令之后的操作以可恢复模式来运行。指令在核心处于这种模式时所执行的任何更新可在任何时候被丢弃。为了允许寄存器状态可恢复性,寄存器的一部分可由事务检查点逻辑进行抽点检查。经过运行则无法撤消的操作可导致差错、事务更新被丢弃和/或控制转移到TXMBEG指令所标识的处理程序。
2.TXMBEG指令还可根据TXSR寄存器的状态来进行条件控制转移。如果设置了适当的TXSR位,则TXMBEG指令可将程序控制转移到对应于事务存储器访问请求的指令流中的不同点,而无需记录返回信息。目的地(目标)操作数可指定指令正跳转到的地址。根据至少一个指令集架构,当TXMBEG执行条件控制转移时,核心106可能没有转变成可恢复执行模式,并且执行可与JMP(或跳转)相似。
在一个实施例中,以下伪代码可说明以上所示的寄存器的部分条目所述的操作:
在上述代码中,除了SP寄存器之外,多个寄存器可被保存。在一个实施例中,待保存的寄存器集合可由软件传递给硬件。在一个实施例中,TXMEND指令可根据TXSR寄存器的状态来执行以下伪代码(在一个实施例中,下面的tmpmemstatus可以是连续选通状态,以指明高速缓存116中的所有高速缓存块是否处于适当状态):
在一个实施例中,TXMABT指令可允许用户显式中止原子块执行。效果与执行中止时相似,并且所有更新被丢弃(除了寄存器的位之外)。在一个实施例中,TXMABT指令可根据TXSR寄存器的状态来执行下列伪代码:
在一个实施例中,下表1示出(例如高速缓存116的)示例高速缓存状态、事务读取位和事务写入位的位值以及对应描述。在表1中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,而“N/A”表示不可用。
表1-示例 高速缓存状态和位描述
在一个实施例中,下表2示出处理器核心106的请求、(例如高速缓存116的)的高速缓存状态、事务读取位和事务写入位的位值以及对应动作。在表2中,“M”指明修改高速缓存状态,“E”指明独占高速缓存状态,“S”指明共享高速缓存状态,“I”指明无效高速缓存状态,“X”指明不关注状态,“LD”表示加载请求,“ST”表示存储请求,“LDntx”表示显式非事务加载请求,“STntx”表示显式非事务存储请求,“完成(Done)”表示基线系统中不会发生其它操作(不带其它动作的现有高速缓存命中条件),“[TXr=/TXw=?]”表示那个事件的高速缓存块的最后状态,“NA”表示这个条目不应当出现,“FAULT”表示可标记出错条件,以及“发出未命中(Issue miss)”表示将发出未命中请求。
表2- 示例 核心请求、高速缓存状态、位值和动作
下面描述了计算系统的一个实施例。计算系统可包括一个或多个中央处理器(CPU)即处理器,它与互连(或总线)进行通信。在一个实施例中,处理器可以与图1的处理器102相同或相似。互连也可以与参照图1所述的互连104和/或112相同或相似。处理器可包括任何类型的处理器,例如专用处理器、网络处理器(例如处理通过计算机网络进行传递的数据的处理器)或者包括简化指令集计算机(RISC)处理器或复杂指令集计算机(CISC)处理器在内的另一个处理器。另外,处理器可具有单核或多核设计,例如包括如参照图1所述的一个或多个处理器核心(106)。多核设计的处理器可将不同类型的处理器核心集成到同一个集成电路(IC)芯片上。多核设计的处理器还可实现为对称或不对称微处理器。
在该实施例中,芯片组可与互连进行通信。芯片组可包括存储控制集线器(MCH)。MCH可包括与存储器114进行通信的存储控制器。存储器114可存储数据,例如包括由处理器或者与计算系统进行通信的任何其它装置运行的指令序列。在本发明的一个实施例中,存储器114可包括一个或多个易失性存储装置(或存储器),例如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它易失性存储器装置。还可使用非易失性存储器、如硬盘。附加装置可经由互连进行通信,例如多个处理器和/或多个系统存储器。
MCH还可包括与图形加速器进行通信的图形接口。在一个实施例中,图形接口可经由加速图形端口(AGP)与图形加速器进行通信。在本发明的一个实施例中,显示器(例如平板显示器)可通过例如信号转换器与图形接口进行通信,其中信号转换器将存储装置、如视频存储器或系统存储器中存储的图像的数字表示转换成可由显示器解释和显示的显示信号。在各种实施例中,显示装置所产生的显示信号可在由显示器进行解释并且随后在显示器上显示之前经过各种控制装置。
另外,集线器接口可实现MCH与输入/输出(I/O)控制集线器(ICH)之间的通信。ICH可提供到与计算机系统进行通信的I/O装置的接口。ICH可通过外设桥(或控制器)、例如外设部件互连(PCI)桥或通用串行总线(USB)控制器来与总线进行通信。桥可提供处理器与外围装置之间的数据通路。可使用其它类型的拓扑结构。多个总线例如也可通过多个桥或控制器来与ICH进行通信。另外,在本发明的各种实施例中,与ICH进行通信的其它外设可包括电子集成驱动器(IDE)或小型计算机系统接口(SCSI)硬盘驱动器(一个或多个)、USB端口(一个或多个)、键盘、鼠标、并行端口(一个或多个)、串行端口(一个或多个)、软盘驱动器(一个或多个)或者数字数据支持接口(例如数字视频接口(DVI))。
总线可与音频装置、一个或多个磁盘驱动器和网络适配器进行通信。网络适配器可与计算机网络进行通信,从而例如使系统的各种部件能够通过网络发送和/或接收数据。其它装置可通过总线进行通信。在本发明的一些实施例中,各种部件(例如网络适配器)还可与MCH进行通信。此外,可将处理器和MCH组合形成单个芯片。另外,在本发明的其它实施例中,图形加速器可包含在MCH中。
在一个实施例中,计算系统可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列一个或多个:只读存储器(ROM),可编程ROM(PROM),可擦PROM(EPROM),电EPROM(EEPROM),磁盘驱动器,软盘,紧致磁盘ROM(CD-ROM),数字多功能光盘(DVD),闪存,磁-光盘,或者用于存储电子数据(例如包括指令)的其它类型的非易失性机器可读介质。
下面描述了根据本发明的一个实施例、以点对点(PtP)配置来设置的计算系统。具体来说,描述了其中处理器、存储器和输入/输出装置通过多个点对点接口互连的系统。可由系统的一个或多个部件来执行本文中所述的操作。
在该实施例中,计算系统可包括若干处理器,为了清晰起见仅描述了其中两个处理器,即第一和第二处理器。第一和第二处理器均可包括实现与第一和第二存储器的通信的第一和第二本地存储控制器集线器(MCH)。第一存储器和/或第二存储器可存储例如参照图1的存储器114所述的各种数据。
在一个实施例中,第一和第二处理器可以是上面所述的处理器其中之一。第一和第二处理器可分别使用第一和第二PtP接口电路经由第一点对点(PtP)接口来交换数据。第一和第二处理器还均可使用第一、第二、第三和第四点对点接口电路经由第二和第三PtP接口来与芯片组交换数据。芯片组还可例如使用第五PtP接口电路经由高性能图形接口与高性能图形电路交换数据。
在第一和第二处理器中可提供本发明的至少一个实施例。例如,图1的核心106的一个或多个可设置在第一和第二处理器中。但是,本发明的其它实施例可存在于该实施例的计算系统的其它电路、逻辑单元或装置中。另外,本发明的其它实施例可分布于该实施例的若干电路、逻辑单元或装置上。
芯片组可使用第六PtP接口电路与总线进行通信。总线可具有与其通信的一个或多个装置,例如总线桥和I/O装置。经由总线,总线桥可与例如键盘/鼠标、通信装置(例如调制解调器、网络接口装置(例如网络适配器)或者可与计算机网络进行通信的其它通信装置)、音频I/O装置和/或数据存储装置等其它装置进行通信。数据存储装置可存储可由第一处理器和/或第二处理器运行的代码。
在本发明的各种实施例中,本文中所述的操作可实现为硬件(例如电路)、软件、固件或者它们的组合,它们可作为计算机程序产品来提供,包括例如其中存储了用于将计算机编程为执行本文所述过程的指令(或软件程序)的机器可读或计算机可读介质。用语“逻辑”作为举例还可包括软件或硬件或者软件和硬件的组合。机器可读介质可包括例如本文中所述的存储装置。此外,这类计算机可读介质可作为计算机程序产品来下载,其中,所述程序可通过包含在载波或其它传播介质中的数据信号、经由通信链路(例如总线、调制解调器或网络连接)从远程计算机(例如服务器)传递到请求计算机(例如客户端)。因此,在本文中,载波将被看作包括机器可读介质。
说明书中提到“一个实施例”或“实施例”表示结合该实施例所述的具体特征、结构或特性包含在至少一个实现方案中。短语“在一个实施例中”在本说明书的各个位置中的出现可能或者可能不是全部指同一个实施例。
在描述和权利要求书中,还可使用用语“耦合”和“连接”及其派生。在本发明的一些实施例中,“连接”可用来指明两个或更多元件相互直接物理或电气接触。“耦合”可表示两个或更多元件直接物理或电气接触。但是,“耦合”也可表示两个或更多元件可能不是相互直接接触,而是可能仍然相互配合或交互。
因此,虽然已经通过结构特征和/或方法动作特定的语言来描述本发明的实施例,但是大家要理解,要求权益的主题可以不局限于所述的具体特征或动作。而是说,具体特征和动作作为实现要求权益的主题的示例形式来公开。
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所述的系统,还包括音频装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/394687 | 2006-03-30 | ||
US11/394,687 US8180977B2 (en) | 2006-03-30 | 2006-03-30 | Transactional memory in out-of-order processors |
CN2007800107806A CN101410797B (zh) | 2006-03-30 | 2007-03-20 | 无序处理器中的事务存储器执行的方法、设备和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800107806A Division CN101410797B (zh) | 2006-03-30 | 2007-03-20 | 无序处理器中的事务存储器执行的方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103257933A true CN103257933A (zh) | 2013-08-21 |
CN103257933B CN103257933B (zh) | 2017-12-15 |
Family
ID=38563996
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800107806A Active CN101410797B (zh) | 2006-03-30 | 2007-03-20 | 无序处理器中的事务存储器执行的方法、设备和系统 |
CN201310090359.8A Active CN103257933B (zh) | 2006-03-30 | 2007-03-20 | 无序处理器中的事务存储器执行的方法、设备和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800107806A Active CN101410797B (zh) | 2006-03-30 | 2007-03-20 | 无序处理器中的事务存储器执行的方法、设备和系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8180977B2 (zh) |
JP (1) | JP5118652B2 (zh) |
CN (2) | CN101410797B (zh) |
DE (2) | DE112007003801B3 (zh) |
GB (1) | GB2447200B (zh) |
TW (1) | TWI371688B (zh) |
WO (1) | WO2007115003A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572506A (zh) * | 2013-10-18 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 一种并发访问内存的方法及装置 |
CN106527961A (zh) * | 2015-09-15 | 2017-03-22 | 伊姆西公司 | 用于保证数据一致性的方法和装置 |
CN107003898A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 包括至少一个具有线程模式和事务模式的资源的设备及方法 |
CN107003897A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 监控事务处理资源的利用率 |
Families Citing this family (80)
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 |
US7904668B2 (en) * | 2007-12-31 | 2011-03-08 | Oracle America, Inc. | Optimistic semi-static transactional memory implementations |
US7966459B2 (en) * | 2007-12-31 | 2011-06-21 | Oracle America, Inc. | System and method for supporting phased transactional memory modes |
KR20110044884A (ko) * | 2008-07-28 | 2011-05-02 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 가상화가능한 진보된 동기화 기능 |
US8627014B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
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 |
US8250331B2 (en) | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
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 |
US8812796B2 (en) * | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
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 |
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 |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
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 |
US8521995B2 (en) * | 2009-12-15 | 2013-08-27 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US9477515B2 (en) | 2009-12-15 | 2016-10-25 | 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 |
US8924692B2 (en) | 2009-12-26 | 2014-12-30 | Intel Corporation | Event counter checkpointing and restoring |
US9507647B2 (en) | 2010-01-08 | 2016-11-29 | Globalfoundries Inc. | Cache as point of coherence in multiprocessor system |
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 |
WO2013101138A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Identifying and prioritizing critical instructions within processor circuitry |
WO2013101144A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Overlapping atomic regions in a processor |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
WO2013147898A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Tracing mechanism for recording shared memory interleavings on multi-core processors |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9348642B2 (en) * | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9262320B2 (en) | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
US9015419B2 (en) | 2012-06-15 | 2015-04-21 | International Business Machines Corporation | Avoiding aborts due to associativity conflicts in a transactional environment |
US20130339680A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
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 |
US9448796B2 (en) * | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9223687B2 (en) | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in 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 |
US9348523B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Code optimization to enable and disable coalescing of memory transactions |
US9146774B2 (en) | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
US9292337B2 (en) | 2013-12-12 | 2016-03-22 | International Business Machines Corporation | Software enabled and disabled coalescing of memory transactions |
US9158573B2 (en) | 2013-12-12 | 2015-10-13 | International Business Machines Corporation | Dynamic predictor for coalescing memory transactions |
US9348522B2 (en) | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
WO2015094189A1 (en) * | 2013-12-17 | 2015-06-25 | Intel Corporation | Detection of unauthorized memory modification and access using transactional memory |
US10324768B2 (en) * | 2014-12-17 | 2019-06-18 | Intel Corporation | Lightweight restricted transactional memory for speculative compiler optimization |
US10318430B2 (en) * | 2015-06-26 | 2019-06-11 | International Business Machines Corporation | System operation queue for transaction |
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 |
US9760397B2 (en) | 2015-10-29 | 2017-09-12 | 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 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606738A (zh) * | 2001-07-17 | 2005-04-13 | Bea系统公司 | 用于具有委托承诺特征的事务处理的系统和方法 |
Family Cites Families (35)
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 |
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 |
US7328316B2 (en) * | 2002-07-16 | 2008-02-05 | Sun Microsystems, Inc. | Software transactional memory for dynamically sizable shared data structures |
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 |
US20060259589A1 (en) * | 2005-04-20 | 2006-11-16 | Lerman David R | 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 |
US7730286B2 (en) * | 2005-12-30 | 2010-06-01 | Intel Corporation | Software assisted nested hardware transactions |
US8683143B2 (en) | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
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 |
-
2006
- 2006-03-30 US US11/394,687 patent/US8180977B2/en active Active
-
2007
- 2007-03-20 JP JP2008556588A patent/JP5118652B2/ja active Active
- 2007-03-20 DE DE112007003801.2T patent/DE112007003801B3/de active Active
- 2007-03-20 CN CN2007800107806A patent/CN101410797B/zh active Active
- 2007-03-20 GB GB0812727A patent/GB2447200B/en active Active
- 2007-03-20 CN CN201310090359.8A patent/CN103257933B/zh active Active
- 2007-03-20 DE DE112007000812.1T patent/DE112007000812B4/de active Active
- 2007-03-20 WO PCT/US2007/064450 patent/WO2007115003A1/en active Search and Examination
- 2007-03-30 TW TW096111333A patent/TWI371688B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606738A (zh) * | 2001-07-17 | 2005-04-13 | Bea系统公司 | 用于具有委托承诺特征的事务处理的系统和方法 |
Non-Patent Citations (2)
Title |
---|
ANANIAN,C.S.等: "Unbounded Transactional Memory", 《HIGH-PERFORMANCE COMPUTER ARCHITECTURE》 * |
RAJWAR,R.等: "Virtualizing Transactional Memory", 《COMPUTER ARCHITECTURE》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572506A (zh) * | 2013-10-18 | 2015-04-29 | 阿里巴巴集团控股有限公司 | 一种并发访问内存的方法及装置 |
CN104572506B (zh) * | 2013-10-18 | 2019-03-26 | 阿里巴巴集团控股有限公司 | 一种并发访问内存的方法及装置 |
CN107003898A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 包括至少一个具有线程模式和事务模式的资源的设备及方法 |
CN107003897A (zh) * | 2014-12-19 | 2017-08-01 | Arm 有限公司 | 监控事务处理资源的利用率 |
US10810039B2 (en) | 2014-12-19 | 2020-10-20 | Arm Limited | Monitoring utilization of transactional processing resource |
CN106527961A (zh) * | 2015-09-15 | 2017-03-22 | 伊姆西公司 | 用于保证数据一致性的方法和装置 |
CN106527961B (zh) * | 2015-09-15 | 2019-06-21 | 伊姆西公司 | 用于保证数据一致性的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB0812727D0 (en) | 2008-08-20 |
TW200815976A (en) | 2008-04-01 |
GB2447200A (en) | 2008-09-03 |
CN101410797B (zh) | 2013-04-24 |
JP2009527866A (ja) | 2009-07-30 |
DE112007000812T5 (de) | 2009-01-22 |
DE112007003801B3 (de) | 2023-07-13 |
US20070260942A1 (en) | 2007-11-08 |
DE112007000812B4 (de) | 2023-06-07 |
CN101410797A (zh) | 2009-04-15 |
CN103257933B (zh) | 2017-12-15 |
JP5118652B2 (ja) | 2013-01-16 |
TWI371688B (en) | 2012-09-01 |
GB2447200B (en) | 2011-06-22 |
WO2007115003A1 (en) | 2007-10-11 |
US8180977B2 (en) | 2012-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101410797B (zh) | 无序处理器中的事务存储器执行的方法、设备和系统 | |
CN101059783B (zh) | 事务型存储器的虚拟化 | |
US7533197B2 (en) | System and method for remote direct memory access without page locking by the operating system | |
CN104375958B (zh) | 高速缓存存储器管理事务性存储器访问请求 | |
US7228389B2 (en) | System and method for maintaining cache coherency in a shared memory system | |
US5642494A (en) | Cache memory with reduced request-blocking | |
CN1575455B (zh) | 优化输入/输出应用的分布式读写高速缓存实现方案 | |
CA1322058C (en) | Multi-processor computer systems having shared memory and private cache memories | |
KR100243853B1 (ko) | 개량된메모리아키텍쳐를위한방법및장치 | |
US7120755B2 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
US10572179B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
US8255591B2 (en) | Method and system for managing cache injection in a multiprocessor system | |
EP2016499B1 (en) | Migrating data that is subject to access by input/output devices | |
CN101853227B (zh) | 改进存储器映射输入/输出请求处理的方法和处理器 | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
US10140052B2 (en) | Memory access in a data processing system utilizing copy and paste instructions | |
US20110252202A1 (en) | System and method for providing l2 cache conflict avoidance | |
US11086672B2 (en) | Low latency management of processor core wait state | |
US6546465B1 (en) | Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol | |
US10241945B2 (en) | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions | |
US6412047B2 (en) | Coherency protocol | |
CN104321750B (zh) | 在共享存储器编程中保持释放一致性的方法和系统 | |
CN110291507A (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
US20200183696A1 (en) | Synchronized access to data in shared memory by protecting the load target address of a fronting load | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |