CN101937331B - 用于自适应处理远程原子执行的方法、设备和系统 - Google Patents
用于自适应处理远程原子执行的方法、设备和系统 Download PDFInfo
- Publication number
- CN101937331B CN101937331B CN201010220346.4A CN201010220346A CN101937331B CN 101937331 B CN101937331 B CN 101937331B CN 201010220346 A CN201010220346 A CN 201010220346A CN 101937331 B CN101937331 B CN 101937331B
- Authority
- CN
- China
- Prior art keywords
- instruction
- core
- contention
- catalogue
- project
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000006399 behavior Effects 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims description 26
- 230000015654 memory Effects 0.000 claims description 25
- 238000003619 Marshal aromatic alkylation reaction Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 17
- 239000003795 chemical substances by application Substances 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 17
- 229910003460 diamond Inorganic materials 0.000 description 13
- 239000010432 diamond Substances 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- JLQUFIHWVLZVTJ-UHFFFAOYSA-N carbosulfan Chemical compound CCCCN(CCCC)SN(C)C(=O)OC1=CC=CC2=C1OC(C)(C)C2 JLQUFIHWVLZVTJ-UHFFFAOYSA-N 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001200 poly(ethylene-vinyl acetate) Polymers 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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 or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的名称为自适应处理远程原子执行在一个实施例中,一种方法包括接收用于在处理器核中解码的指令并基于是否预测到争用而用多个行为之一动态处理指令。如果没预测到争用,则在核中执行指令,并且如果预测到争用,则与指令相关联的数据被编组,并被发送到所选的远程代理以便执行。描述了其它实施例,并要求了其权利。
Description
技术领域
本发明涉及自适应处理远程原子执行。
背景技术
在许多指令集架构(ISA)中,存在指令以处理所谓的原子序列。在原子序列中,代理以如下方式执行对数据的操作:确保代理具有数据的独占拥有权,直到执行完成。通常这可通过锁定序列来实现,其中锁变量与数据相关联,使得代理在访问要对其操作的数据之前首先获得对锁变量的独占访问,以阻止其它代理在该操作期间访问对应的数据。
有两种典型的方法用于处理争用的原子,即本地操作或远程执行(remote execution)。第一种方法对于执行原子操作是快速的,但是由于高速缓存行跳动(cacheline bouncing)和一致性而具有高开销成本,对于争用数据导致低带宽。第二种方法对于原子操作具有差的等待时间,但是对于争用数据具有高带宽。
原子序列上的管芯上(On-die)争用(利用临界区域或其它构造)通常留给编程器明确管理。通过仔细检测(instrumentation)原始程序,降低原子操作的粒度并且可最小化争用。然而,这种性能调整工作一般不可从一类机器缩放到另一类。而且,仔细检测需要编程器额外注意以开发考虑了原子操作的代码,这通常需要额外的编程器工作,并且无法很好地适合不同的机器。例如,在具有两个核的处理器中可避免争用的编程器编写的代码可能无法很好地适合于(scale very well to)许多核的实现,其中存在其中每个都可执行多线程的许多核。
发明内容
本发明的第一方面在于一种方法,包括:接收用于在处理器的第一核中解码的第一指令,并相对于所述第一指令确定是否预测到争用;以及用 多个行为之一动态处理所述第一指令,包括:如果没预测到争用,则在所述第一核中执行所述第一指令,并且,如果预测到争用,则在所述第一核中编组与所述第一指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述第一指令。
本发明的第二方面在于一种设备,包括:多核处理器,包含:多个核,其中每个核都包含前端以解码指令并相对于所述指令确定是否预测到争用;执行逻辑,如果没预测到争用,则本地执行所述指令,并且如果预测到争用,则编组与所述指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述指令;以及预测器,具有多个项目,每个项目用于存储有关在执行期间是否要争用与所述项目相关联的指令的预测。
本发明的第三方面在于一种系统,包括:处理器,包含具有:前端,解码指令并相对于所述指令确定是否预测到争用;动态执行逻辑,如果没预测到争用,则本地执行所述指令,否则编组与所述指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述指令;以及预测器,具有多个项目,每个项目用于存储有关在执行期间是否要争用与所述项目相关联的指令的预测;目录,具有多个项目,每个项目用于存储有关所述系统的高速缓存中所存储的高速缓存行的标签信息,每个目录还包含具有各与核相关联的多个核字段的争用矢量,每个核字段包含第一指示符和第二指示符,各用于指示相关联的核在时段内利用原子操作访问所述高速缓存行;以及动态随机存取存储器(DRAM),耦合到所述目录和所述处理器。
附图说明
图1是根据本发明一个实施例的预测器的框图。
图2是根据本发明一个实施例基于争用预测来处理指令的流程图。
图3是根据本发明一个实施例的争用标签矢量(contention tag vector)的框图。
图4A是根据本发明一个实施例处理操作的远程执行的流程图。
图4B是根据本发明一个实施例在目录中处理远程执行的流程图。
图4C-4E例证了根据本发明一个实施例在拥有者核中处理远程执行的流程图。
图5是根据本发明一个实施例的处理器的框图。
图6是根据本发明一个实施例的系统的框图。
具体实施例
在各种实施例中,透明微架构机构可动态检测和优化争用的原子操作(诸如前缀为LOCK的指令)。具体地说,当在程序执行的全部时间中锁经历了变化级别的争用时,实施例可以对编程器、操作系统和指令集架构(ISA)透明的方式自适应地在模式之间切换。
在一个实现中,可使用如下组件实现动态锁操作:(i)基于预测来动态识别争用行为的机构;(ii)在指令解码期间对于任何给定指令在争用/不争用行为之间切换以选择最有效执行的机构;(iii)提供反馈以更新预测器系统的机构;以及(iv)用于原子操作的代理执行(proxy-execution)的机构。
在指令解码的时候,程序计数器(EIP)可用作争用预测器的查找值。在一个实施例中,预测器可以是预测是否将争用指令的操作的表。在一个实现中,可为每个指令给出预测,但是仅某些指令将使用该预测。作为一个示例,在英特尔TM架构(IA)平台中,这些指令可以是前缀为LOCK的指令,诸如交换(xchg)、交换-加(xadd)、递增(inc)和递减(dec)。如果该核支持多于1个硬件上下文的话,为了访问该表,可对EIP进行哈希操作(hashed)以在预测器表中创建索引,并与硬件线程标识符(ID)位级联。然后将参考这个表以确定是否预期争用该操作。
现在参考图1,示出了根据本发明一个实施例的预测器的框图。如图1所示,预测器10可采取可使其位于与处理器核相关联的高速缓冲存储器的专用存储区(storage)中的表的形式。在图1的实施例中,预测器10可包含多个项目,每个项目存储提供预测的一个或多个位。在一个实施例中,每个项目可存储单个位以指示存在或不存在争用(例如设置状态以指示争用,而重置状态以指示没有争用)。然而,在其它实施例中,可能存在多个位,其中最高有效位(MSB)指示该预测,而其它位充当饱和计数器。在图1所示的实施例中,可使用通过级联程序计数器的至少一些位可获得的 索引20来访问预测器10,这些位可以是程序计数器15的散列位(hashedbits)子集,连同线程标识符(TID)18的位,但是也可以实现索引和访问预测器10的其它方法。
基于由预测器表提供的预测,核可以给定方式处理指定指令。在一个实施例中,预测可用于确定适当的指令执行。例如,预测可以操纵核在处理指令时所用的微代码编程(或等效物)。注意,本文所描述的实施例针对其中指令解码器确定使用哪种模式的流水线(并由此不具有可用存储器操作数的地址)。然而,在其它实施例中,以后流水线可例如用微代码进行争用/不争用判定。在这种实施例中,以后可使预测器位于流水线中,而不是指令解码器中。备选地,流水线可具有操作数地址,并将那个值包含在预测器表的散列中。
现在参考图2,示出了根据本发明一个实施例基于争用预测来处理指令解码和不同指令执行行为之间切换的流程图。如图2中所示,方法100可在处理器核中指令解码期间开始执行。如所看到的,方法100可开始于计算要解码的下一指令的下一指令指针(块110)。可以取这个下一指令(块115)。例如,可以从指令高速缓存中取该指令,或者如果指令高速缓存中还未存在该指令,则可以从存储器层级(memory hierarchy)的另外部分获得该指令。取指令的同时,也可发生预测器查找(块120)。使用计算的EIP,可生成索引,并将其用于访问争用预测器以获得对应指令的预测。
仍参考图2,当取指令时,可以在解码期间确定该指令是否是预定类型的操作(菱形块125)。虽然本发明的范围不限于这个方面,但是这种操作可对应于ISA的一些或所有前缀为LOCK的操作。如果指令不是预定类型,则可以忽略预测信息,并可发生所获得指令的正常执行(块130)。在没有争用(NC)预测的情况下,解码器可按照指令的现有ISA定义行为准备要在核上本地执行的操作的微代码或微操作(uops)。一致性引擎、诸如高速缓存控制器等可用于获得数据以便执行指令。由此可以解码指令,获得所需的指令的源,并可执行该指令然后引退(retired)该指令。
否则,当遇到这些特殊操作之一时,控制转到块135,在此可发生所取指令(例如LOCK类型指令)与预测之间的级联。然后,在菱形块140, 可以确定是否预测到争用。这种预测可基于预测器的所获得输出。如果预测到没有这种争用,则控制转到块145,在此可本地执行指令,即在解码指令的核中。这种执行可如上面所描述的。
如果相反预测到争用,则控制转到块150,在此可以编组(marshal)与指令相关联的各种数据。由此当预测器指示预期的争用时,使用不同的行为。代替执行本地操作,解码器对于指令行为使用备选路径。这个备选路径收集要执行的操作所需的本地值(编组数据)。那么,可将这种所编组数据连同指令一起发到所选位置,以便远程执行指令(块155)。在一个实施例中,这种请求可以是一致性协议消息类型,称为远程原子执行(remote-atomic-execute)(RAE),以将要执行的操作(例如xadd、inc、dec、xchg)和编组的数据发送到所选位置以便执行。表1示出了远程原子执行消息分组的示例。
表1
操作 | 地址 | 值1 | 值2 | EFLAG | 填充 |
如表1所示,RAE消息分组可包含各种字段,包括:操作字段,其是要远程执行的所请求操作;地址字段,与操作的源数据相关联;多个值,可对应于被编组供操作使用的来自始发核的本地数据;标记(flag)字段,可包含供结合执行操作使用的标记信息,并且可从始发核的控制寄存器获得;以及填充字段,可包含多个填充位以将消息填充到分组宽度。当然,其它示例也是可能的。
在各种实施例中,所选位置可以改变。在一些实现中,所选位置可以是专用位置,用于处理远程执行请求,诸如用于这种请求的处理器的专用核,或与处理器的另一组件相关联的逻辑,诸如存储控制器的逻辑或目录。在又一些实施例中,所选位置可对应于指令的源数据的拥有者核。
最后,始发核可以接收远程执行的结果(块160)。此外,还可以接收与指令相关联的状态信息,包括预测更新。始发核可基于这个信息更新各种寄存器、标记等,连同预测器更新。操作结果由此由作为始发节点代理执行这个操作的远程节点返回,并且可以返回附加状态,指示认为/不认为高速缓存行处于争用。在后面的情况下,本地核相应地更新它的预测器 表,并且操作的将来执行将与非争用行为一起发生。虽然通过图2的实施例中的这个具体实现示出,但是本发明的范围不限于这个方面。
注意,可在始发核上与高速缓存未命中(miss-to-cache)相同地处理远程执行,停止硬件上下文,直到操作的远程执行已经完成并且结果已经返回为止。在一个实施例中,可以执行线程切换以使另一个线程能够在这个停止期间前向进行。
相应地,反馈可用于保持预测器表准确。对于没有实现标签目录(tagdirectories)以跟踪拥有权并相反依赖于探听(snooping)行为的系统,可以在每个核中实现用于提供oracle级反馈的表。对于实现标签目录的系统,用于提供反馈的表可驻留在标签目录中。为了实现有效的操作,可以区分存储操作与基于LOCK的操作之间的读取拥有权(Read-For-Ownership)(RFO)请求。来自多个核(不是单个核)太频繁发生的RFO-Lock操作是在原子序列中的争用指示。在一个实施例中,一致性控制器可保存关于哪些核已经在给定时间窗上练习(exercised)RFO-Lock请求或RAE事件的位矢量。虽然本发明的范围不限于这个方面,但是这个时间窗可以在处理器的大约500与1000个时钟周期之间。
为了提供滞后,可使用双位矢量格式。在这个实现中,对于每个高速缓存行,系统中的每个核由争用矢量中的两个位来表示:一个用于“当前”阶段,一个用于“先前”阶段。现在参考图3,示出了根据本发明一个实施例的争用矢量的框图。如图3所示,每个高速缓存行可在目录200中包含项目205。如所看到的,每个项目包含高速缓存行标签206和争用矢量208。在争用矢量208内,每个核可由两位表示,即第一位2090和第二位2091。在图3所示的实施例中,位2090可对应于当前计数阶段位,而位2091对应于重置阶段位。在第一时段期间,试图用原子操作访问高速缓存行的每个核会为那个核在那个高速缓存行上设置当前计数阶段位2090。每个时钟报时信号(clock tick)、计时器、例如全局向下计数计时器210可递减1,箝位(clamping)在0值,没有绕回。当计时器210达到0时,对于每个核,在每个高速缓存行上清除“重置阶段”位2091。然后,在第二时段期间,将计数阶段设置成最近清除的位,而将当前计数阶段设置成相反。 换句话说,在这个下一计数阶段期间,设法执行原子操作的核将引起位2091的设置,而不是位2090。通过使用这种交替两位重置方案,保存了争用历史,同时观察程序行为的窗被限制到向下计数计时器值的两倍,允许动态适配。
无论何时多于1个核在项目中具有非零计数,都提供争用反馈。当查找高速缓存行时,每个核的2位值2090和2091一起进行逻辑“或”,以表示最近历史中那个核是否已经请求向那个高速缓存行请求原子使用。如果多于1个核已经在历史窗期间进行了这种请求,则对应于该项目的高速缓存行被预测为争用,否则它被预测为非争用。
为了准确地反映争用,每个RFO-Lock和RAE消息被发送到记录这个历史的状态机,其可存在于目录中。始发者节点将预期预测器反馈响应消息,并将适当地更新它的本地预测器表。在一个实施例中,通过始发核已将所有未完成的(in-flight)RFO-Lock/RAE操作存储在可使用始发程序计数器(EIP)和环消息序列号访问的表中,发生这种更新。当对应的响应反馈序列号返回时,EIP将再次被用作预测器表的索引。当反馈用于争用(C)预测时,预测器表将被设置成逻辑1值,对应于C预测,否则该值被设置成0,以指示NC。
在其中用于RFO-Lock或RAE操作的始发节点已经生成错误类型请求(例如预期NC但是C)的情况下,响应反馈将向始发核指示用正确的操作重放(replay)原始指令。也就是,如果始发节点发送预期不争用行为的RFO-Lock,则反馈将向始发节点指示更新本地预测器表,并重发/重放指令为争用,这将在重放期间向委托代理(proxy agent)发送修订RAE请求。可以执行这种重放,原因在于RFO-Lock携载的信息不足以立即通过转发而代理执行(proxy-execute)锁操作,并且在一些实施例中,不能处理高速缓存行的RAE请求移动回始发核。然而,其它实施例可合并RFO-Lock和RAE消息以携载足够的语义来实现重放。在其中预期C但是行实际上是NC的误预测情况下,远程代理执行将正常地实施,但是预测器的反馈将返回NC以允许更新本地预测器表。
在争用原子执行行为的情况下,拥有者/标签目录会将所编组数据转 发到所选位置,其应该具有适当修改(M)或独占(E)状态中的目标高速缓存行。这个远程节点然后将例如在专用算数逻辑单元(ALU)中执行所请求操作,将适当值和/或状况标记返回到始发节点,以及预测器校正更新。
现在参考图4A,示出了根据本发明一个实施例处理代理执行操作的流程图。如所描述的,可在各种位置执行远程执行,诸如专用核、存储控制器或与远程执行操作中要使用的数据相关联的核中。图4A针对其中远程执行发生在存储控制器中的实现。如所看到的,在该方法中存在两个不同的入口点。在入口点305,远程执行请求到达。可以从始发节点、例如始发核直接接收这个请求。可为请求队列330中的请求分配时隙号(块310)。相应地,这个请求可与指示它未准备好执行的标记一起存储在请求队列中(块315)。为了确定与操作相关联的高速缓存行是否被争用,并为了请求高速缓存行的拥有权,执行块320。
如在图4A中还看到的,当对高速缓存行状态的更新和/或对于拥有权的请求到达时到方法300的另一个入口可利用标签目录(TD)(块350)。当这种请求对应于远程执行请求时,目录可将该请求标记为准备就绪,此外还设置也存在于请求队列330的对应项目中的预测器状态(块355)。
如在图4A中还看到的,可访问请求队列330的项目以确定是否任何项目准备就绪(菱形块360)。这种准备就绪确定可基于这个准备就绪标记状态。如果请求准备就绪,则可提取对应的项目(块365),并且可确定与该请求相关联的高速缓存行是否保持在修改或独占状态(菱形块370)。如果否,则该项目可被标记为未准备就绪,原因在于这指示存储控制器不是高速缓存行的正确拥有者。相应地,控制转回到块320以寻找高速缓存行的拥有权。以这种方式,当标签目录利用块350提供更新的拥有权状态时,可重放该操作。
仍参考图4A,如果相反在菱形块370确定高速缓存行处于修改或独占状态,则控制转到块380,在此可本地执行请求。也就是说,可基于与远程执行请求一起接收的信息连同从高速缓存行获得的数据来执行该请求。然后,存储控制器可准备响应,其中响应包含与始发节点相关联的结果和预测器更新(块385)。然后可在块390发送这个响应。虽然通过在图 4A的实施例中的这个具体实现示出,但是本发明的范围不限于这个方面。
由此,在准确预测(C或NC)的情况下,执行适当的行为。如果相反误预测发生,当不应该是争用行为时误预测指示预期争用行为,则始发核将在执行这个操作期间恢复。始发核将生成对于远程原子执行的向高速缓存行拥有者的请求。远程代理将自动验证高速缓存行是否仍处于争用,收集目录的预测器反馈。用来自目录的响应,代理然后将执行所请求操作。远程代理将目录反馈响应与操作结果(和标记)一起提供给始发核。
如果误预测发生,当操作应被争用时指示NC,则三种情形之一将发生:(a)高速缓存行本地存在于M或E状态;(b)高速缓存行本地存在于共享(S)状态;或(c)高速缓存行未本地驻留到这个核。在(a)的情况下,这个核是数据的实际拥有者,并且原子操作可本地执行,没有干扰系统或其它核。在(b)情况下,当这个核向拥有者/标签目录发送RFO-Lock请求时,反馈将与争用状态一起回来,并且操作的重放将完成,其中执行(图2的)争用路径。在(c)的情况下,当生成RFO-Lock请求以将高速缓存行带入核中时,与(b)中相同的反馈和重放序列将发生。
其中在存储控制器(MC)内处理远程执行行为的实施例中,一致性协议可支持MC。另外,MC可包含本地高速缓存、ALU和状态机。为了避免其中多核正在竞争远程执行同时可能发生高速缓存行跳动的竞态状况(race condition),附加信息可与标签目录项目相关联。具体地说,标签目录可在每个高速缓存行标签上包含状态位,以指示对于那个高速缓存行,远程执行操作是未完成。当核在高速缓存行上请求远程执行时,它将生成带有RFO-Lock消息的“谁拥有CL<addr>”,发往标签目录。标签目录然后在项目的标签部分中设置“远程执行未完成(RemoteExecInFlight)”指示符,并通过那个请求的高速缓存行的当前高速缓存行拥有者响应。始发核然后将直接请求拥有者核执行RAE以实施操作并通过适当结果对请求核应答。请求核在接收到来自高速缓存行拥有者的结果后则将通知标签目录已经服务于RAE。在一个实施例中,标签目录可允许多个RAE请求同时未完成(跟踪多少正在未决的计数),直到对于同一高速缓存行,非RFO-Lock(non-RFO-Lock)(远程执行)请求到达。在接收到这种请求后,阻 止此后到达的所有请求,直到未完成的远程执行事件从系统排出(drainfrom)。执行然后按照从新的非RFO-Lock操作的顺序重新开始。
辅助的次要的竞态状况是有可能的,原因在于在始发核请求“谁拥有CL<addr>”与RAE能够到达标签目录所报告的这个拥有者的时间之间,那个拥有者可能已经从其高速缓存层级(cache hierarchy)驱逐(evict)该高速缓存行。为了解决这个状况,在一个实施例中,可以在通信路径中添加额外跳(hop)。也就是说,标签目录通知当前拥有者远程执行请求即将到达。在它回答请求核谁是拥有者之前,它将等待该通知被确认。在这个“即将来临的远程执行”消息与实际RAE消息之间的时间期间,当前拥有者不能驱逐目标高速缓存行。
现在参考图4B,示出了根据本发明一个实施例在目录中处理远程执行的流程图。一般而言,该流程可类似于上面对于图4A描述的。然而,看到方法301的处理中的各种变化。具体地说,在接收到远程执行请求后,目录可将对应的高速缓存行标记为封锁,直到处理了该远程请求,例如利用目录项目的标签部分的未完成指示符(块307)。接下来,目录可确定在目录中高速缓存行是否保持在修改/独占状态(菱形块308)。如果否,则执行上面对于图4A讨论的有关分配时隙和将请求存储在请求队列内的流程。还如在块316中所看到的,目录可以向保持(holding)对应高速缓存行的任何核发送驱逐(块316)。在其它方面,相对于在目录中接收回状态信息和/或拥有权以及为了将请求标记为准备就绪并本地执行该请求、准备响应并发送结果连同预测更新而执行的操作,可如上面参考图4A讨论一样发生。
在又一些实施例中,可由与该请求相关联的高速缓存行的当前拥有核处理远程执行。图4C-4E例证了用于在请求核(图4C)、目录(图4D)和拥有者核(图4E)中处理这种操作的流程图。如在图4C中所看到的,方法302可实现上面相对于处理远程执行的请求而在图2中阐述的许多操作。如所看到的,当预测到争用时(菱形块140),请求核可编组数据(块150),请求目录确定谁拥有该高速缓存行,并在远程执行队列中设置对应的标记(块152)。在从目录中接收到指示高速缓存行拥有者以及预测更新的消息后(块 175),可以确定请求核是否已经变成拥有者(菱形块178)。如果是,则执行可本地发生(块180)。否则,可以加载远程执行队列中的项目,并可设置对应的标记(块182和183)。相应地,在这点,请求核可向拥有核发出远程执行请求(块155)。在接收到结果后(块160),请求核处理该结果(块165),清除远程执行队列中的对应项目(块168),并通知目录远程执行完成了(块170)。
现在参考图4D,示出了用于在目录中处理远程执行请求的流程。方法250开始于接收来自请求核的消息以确定高速缓存行的拥有者(块255)。然后可以确定该高速缓存行是否标记为封锁(菱形块258)。如果否,则可对于远程执行请求将高速缓存行标记为未完成(块260)。相应地,目录可回答该询问并向请求核提供拥有者信息,连同预测器更新(块262)。如果相反在菱形块258确定高速缓存行封锁,则控制转到块265,在此可为请求先进先出(FIFO)队列280中的请求分配时隙号。相应地,请求被存储在对应的FIFO项目中,并标记为未准备就绪(块268)。
在以后的时间,目录可确定请求FIFO中的任何项目是否准备就绪(菱形块270)。如果是,则可提取项目(块272),并处理请求(块275)。
有可能在远程执行请求未决期间,另一个消息到达了(块281)。目录然后可确定该高速缓存行是否具有未完成的已经未决的远程执行请求(菱形块282)。如果否,则可处理该请求(块275)。否则,可以确定高速缓存行拥有者是否正在要求重新获得拥有权。如果是,则可在块275处理该请求。否则,对应的高速缓存行可标记为封锁(块285),从此控制转到块265。
当在块290完成远程执行序列时,目录可将该高速缓存行标记为没有来自请求核的未完成的远程执行请求,并且如果对于那个高速缓存行没有其它未完成的请求未决,则可以清除未完成标记(块295)。
现在参考图4E,示出了根据本发明一个实施例在拥有者核中处理远程执行请求的流程图。如所看到的,方法303一般可以类似于上面关于图4A和4B讨论的方式进行(flow)。当远程执行请求到达时(块305),可以确定高速缓存行是否保持在修改/独占(M/E)状态(菱形块308)。如果是,则可 本地执行请求,准备响应,并将结果发送回请求核(块380、385和390)。
否则,如果高速缓存行未保持在修改或独占状态,则控制转到块310,在此可以分配请求队列330中的时隙,与未准备就绪的标记一起存储请求(块315),并且向目录请求拥有权(块317)。在从目录接收到提供高速缓存行状态和/或拥有权的消息后(块350),对应的请求可被标记为准备就绪,并相应地更新预测器状态(块357)。相应地,这个请求准备就绪,并且可在块365提取它以便本地执行。虽然通过在图4A-4E的实施例中的这些具体操作示出,但是要理解到,可在不同的实现中以其它方式处理根据本发明实施例的远程执行。
可以在各种多核处理器中实现实施例。虽然本发明的范围不限于这个方面,但是可在其中核数例如可大于16或32个或更多这种核的许多核处理器中实现一些实施例。
现在参考图5,示出了根据本发明一个实施例的处理器400的框图。如图5中所示,处理器400可以是包含多个核410a-410n的许多核处理器。在各种实施例中,每个核可以是具有无序流水线的多线程宽(multi-threadedwide)单指令多数据(SIMD)能力的处理器核。在图5中更详细示出了一个这种核410a的示例。如所看到的,核410a包含可用于取指令并准备它们以便在一个或多个执行单元414中无序执行的前端(FE)单元412,执行单元414可包含各种结构以执行不同的操作,包括算数逻辑单元(ALU)、浮点单元等。注意,FE单元412包括逻辑411,其可根据争用预测以不同方式控制某些指令的性能,即锁指令。这种预测可由预测器提供,例如作为高速缓冲存储器416一部分的根据本发明实施例的争用预测器。例如,高速缓存416可以是管芯上本地高速缓存,并且在一些实施例中其还可分段成指令高速缓存和数据高速缓存。由此,基于由预测器417提供的预测,逻辑411可使得在执行单元414中按常规处理锁操作,或者可使得向另一个核410或另一个位置发送同一指令,以便当预测到争用时根据本发明实施例进行代理执行。如在图5中还看到的,核410还包含引退逻辑(retirement logic)418,其可接收在执行单元414中处理的各种指令的结果,并按程序顺序将它们重新排序。虽然通过在图5的实施例中的这个高级视 图示出,但是要理解,本发明的范围不限于这个方面。
仍参考图5,除了多核,处理器400还可包含附加高速缓冲存储器420,诸如二级(L2)高速缓存,其提供比在各种核的各个本地高速缓存中可用存储区更大的存储区。如所看到的,可利用环(ring)425将这些核耦合在一起。此外,可使用由多个分布式目录部分415a-415n形成的分布式目录保持一致性,每个目录部分都与对应的核相关联。当然,处理器400中的其它组件也可具有与之关联的分布式目录部分。
为了允许与耦合到处理器400的存储器通信,可以提供存储控制器440。而且,为了提供到各种系统组件的接口,可存在系统接口450,在一个实施例中其可提供点对点连接,但是本发明的范围不限于这个方面。而且,显示接口460提供从处理器400到附连的显示器的直接链路,该显示器可以是计算机系统、手持装置、移动终端等的显示器。在图5所示的实施例中,处理器400还可包含用于处理某些操作的附加专用逻辑单元。例如,固定功能单元435的任务可以是执行特定操作,诸如专门图形或物理处理。类似地,图形逻辑430可执行专门图形功能,诸如织构化,但是其它操作也是可能的。虽然在图5的实施例中示为是具有芯片上高速缓存和目录的多核处理器,但是本发明的范围不限于这个方面,并且其它实施例可与具有多个处理器的系统一起使用,每个处理器具有一个或多个核和目录,其以另一方式实现,例如利用专用目录或分布式目录。更进一步,可以在不使用目录机构而相反使用基于探听的系统保持一致性的系统中实现实施例。
实施例由此可便于以动态适应任何给定微架构实现的方式更好地管理争用。不需要附加的编程器负担,也不产生任何工具链(toolchain)支持问题。也就是说,不需要编程器、编译器或任何其它实体分析程序或其行为以确定锁操作是否有可能被争用,并预先确定这种操作的执行行为。相反,实施例可以在指令解码期间动态确定是否存在争用,并基于这种争用的预测,从多个执行行为中动态选择。由此,无需新指令或正常指令上的特殊前缀标记,即,ISA中的第二组指令(诸如“atomic_inc”操作)要对于争用锁执行。
可以许多不同的系统类型实现实施例。现在参考图6,示出了根据本发明一个实施例的系统的框图。如图6所示,多处理器系统500是点对点(P-P)互连系统,并包含利用点对点互连550耦合的第一处理器570和第二处理器580。如图6所示,每一个处理器570和580可以是多核处理器,包括第一和第二处理器核(即处理器核574a和574b以及处理器核584a和584b),但是在处理器中可能存在更多的核。处理器核可执行各种线程,并可基于与某些指令相关联的争用预测,通过不同行为动态处理这些指令。
仍参考图6,第一处理器570还包含存储控制器集线器(MCH)572和点对点(P-P)接口576和578。类似地,第二处理器580包含MCH 582和P-P接口586和588。如图6所示,MCH 572和582将处理器耦合到相应的存储器,即存储器532和存储器534,它们可以是本地附连到相应处理器的主存储器的部分(例如动态随机存取存储器(DRAM))。第一处理器570和第二处理器580可分别利用P-P互连552和554耦合到芯片组590。如图6所示,芯片组590包含P-P接口594和598。
而且,芯片组590包含接口592以通过P-P互连539将芯片组590与高性能图形引擎538耦合。芯片组590又可利用接口596耦合到第一总线516。如图6所示,各种输入/输出(I/O)装置514可耦合到第一总线516,连同将第一总线516耦合到第二总线520的总线桥518。各种装置可耦合到第二总线520,在一个实施例中例如包括键盘/鼠标522、通信装置526和数据存储单元528,诸如可包含代码530的其它大容量存储装置或盘驱动器。另外,音频I/O 524可耦合到第二总线520。
实施例可以用代码实现,并可存储在其上存储有指令的存储介质上,其可用于对系统编程以执行指令。存储介质可包含但不限于任何类型的盘,包括软盘、光盘、光盘、固态驱动器(SSD)、压缩盘只读存储器(CD-ROM)、压缩盘可重写(CD-RW)和磁光盘、半导体器件、诸如只读存储器(ROM)、随机存取存储器(RAM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或适合于存储电子 指令的任何其它类型的介质。
虽然已经相对于有限数量的实施例描述了本发明,但是本领域技术人员将认识到从其而得的各种修改和变化。意图是,所附的权利要求书涵盖落入本发明真实精神和范围内的所有这种修改和变化。
Claims (19)
1.一种用于自适应处理远程原子执行的方法,包括:
接收用于在处理器的第一核中解码的第一指令,并相对于所述第一指令确定是否预测到争用;以及
用多个行为之一动态处理所述第一指令,包括:如果没预测到争用,则在所述第一核中执行所述第一指令,并且,如果预测到争用,则在所述第一核中编组与所述第一指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述第一指令,所述预测至少部分基于与所编组数据相关联的目录的项目的争用矢量是否指示多个核在程序行为观察的窗口期间设法自动访问所编组数据,所述争用矢量具有各与核相关联的多个核字段,每个核字段包含第一指示符和第二指示符,各用于指示所述相关联的核在时段内利用原子操作访问对应的高速缓存行。
2.如权利要求1所述的方法,其中在所述第一核或所述所选远程代理中执行所述第一指令对用户和操作系统是透明的。
3.如权利要求1所述的方法,还包括:基于所述预测确定在解码所述第一指令时是在所述第一核中还是在所述所选远程代理中执行所述第一指令。
4.如权利要求1所述的方法,还包括:如果所述第一指令不是所选类型,则忽略所述争用预测。
5.如权利要求4所述的方法,还包括:从所述第一核向目录发送请求以确定与所述第一指令相关联的编组数据的拥有者,所述请求向所述目录指示所述第一核要请求所述远程执行,其中所述目录要更新与所述编组数据相关联的所述目录的项目以指示由所述第一核访问所述编组数据,并更新未完成指示符以表明所述远程执行请求未决。
6.如权利要求5所述的方法,还包括:在所述第一核中接收来自所述目录的消息以指示所述编组数据的拥有者核。
7.如权利要求6所述的方法,还包括:响应于来自所述目录的所述消息,从所述第一核向所述编组数据的所述拥有者核发送所述远程执行请求。
8.如权利要求5所述的方法,其中更新所述目录项目包括设置矢量的与所述第一核相关联的核字段的第一指示符以指示利用原子操作访问所述编组数据。
9.如权利要求8所述的方法,其中当计时器计满时,在所述目录中确定是否设置所述矢量的核字段的多个指示符,并且如果是,则更新预测反馈值以反映争用。
10.如权利要求9所述的方法,还包括:在所述第一核中接收所述远程执行请求的结果和所述预测的更新,以及用所述更新来更新对应于所述第一指令的所述第一核的预测器的项目。
11.一种用于自适应处理远程原子执行的设备,包括:
多核处理器,包含:多个核,其中每个核都包含前端以解码指令并相对于所述指令确定是否预测到争用;执行逻辑,如果没预测到争用,则本地执行所述指令,并且如果预测到争用,则编组与所述指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述指令;以及预测器,具有多个项目,每个项目用于存储有关在执行期间是否要争用与所述项目相关联的指令的预测,所述设备还包括:目录,具有多个项目,每个项目用于存储有关所述多核处理器的一个或多个核中存在的高速缓存行的标签信息,每个项目还包含具有各与核相关联的多个核字段的争用矢量,每个核字段包含第一指示符和第二指示符,各用于指示所述相关联的核在时段内利用原子操作访问所述高速缓存行。
12.如权利要求11所述的设备,其中每个目录项目还包含标签部分用于存储未完成指示符以指示与所述高速缓存行相关联的远程执行请求未决。
13.如权利要求11所述的设备,其中所述多个核中的第一核要向所述目录发送第一消息以确定与所述指令相关联的编组数据拥有者,并指示所述第一核要请求远程执行。
14.如权利要求13所述的设备,其中所述第一核要响应于接收到来自所述目录的响应消息而向所述编组数据的拥有者发送第二消息,所述第二消息包含所述远程执行请求和所述所编组数据。
15.如权利要求14所述的设备,其中所述第一核要接收所述远程执行请求的结果和所述预测的更新,并用所述更新来更新对应于所述指令的所述预测器的项目。
16.如权利要求11所述的设备,其中所述所选远程代理是所述多核处理器的存储控制器,所述存储控制器包含执行逻辑。
17.一种用于自适应处理远程原子执行的系统,包括:
处理器,包含:前端,解码指令并相对于所述指令确定是否预测到争用;动态执行逻辑,如果没预测到争用,则本地执行所述指令,否则编组与所述指令相关联的数据,并将具有所编组数据的远程执行请求发送到所选远程代理以便执行所述指令;以及预测器,具有多个项目,每个项目用于存储有关在执行期间是否要争用与所述项目相关联的指令的预测;
目录,具有多个项目,每个项目用于存储有关所述系统的高速缓存中所存储的高速缓存行的标签信息,每个目录还包含具有各与核相关联的多个核字段的争用矢量,每个核字段包含第一指示符和第二指示符,各用于指示相关联的核在时段内利用原子操作访问所述高速缓存行;以及
动态随机存取存储器(DRAM),耦合到所述目录和所述处理器。
18.如权利要求17所述的系统,其中所述处理器要向所述目录发送第一消息以确定与所述指令相关联的编组数据的拥有者,并指示所述处理器要请求远程执行。
19.如权利要求18所述的系统,其中所述处理器响应于接收到来自所述目录的响应消息而要向对应于所述编组数据的拥有者的所述所选远程代理发送第二消息,所述第二消息包含所述远程执行请求和所述所编组数据,并且其中所述处理器要接收所述远程执行请求的结果和所述预测的更新,并用所述更新来更新对应于所述指令的所述预测器的项目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/492,652 US8533436B2 (en) | 2009-06-26 | 2009-06-26 | Adaptively handling remote atomic execution based upon contention prediction |
US12/492652 | 2009-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101937331A CN101937331A (zh) | 2011-01-05 |
CN101937331B true CN101937331B (zh) | 2015-05-06 |
Family
ID=43382048
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010220346.4A Expired - Fee Related CN101937331B (zh) | 2009-06-26 | 2010-06-24 | 用于自适应处理远程原子执行的方法、设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8533436B2 (zh) |
KR (1) | KR101168544B1 (zh) |
CN (1) | CN101937331B (zh) |
BR (1) | BRPI1001929A2 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55148837A (en) * | 1979-05-09 | 1980-11-19 | Toto Ltd | Faucet |
US9122476B2 (en) | 2010-12-07 | 2015-09-01 | Advanced Micro Devices, Inc. | Programmable atomic memory using hardware validation agent |
US8793471B2 (en) | 2010-12-07 | 2014-07-29 | Advanced Micro Devices, Inc. | Atomic program verification |
US8788794B2 (en) * | 2010-12-07 | 2014-07-22 | Advanced Micro Devices, Inc. | Programmable atomic memory using stored atomic procedures |
US10007523B2 (en) | 2011-05-02 | 2018-06-26 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
US8832505B2 (en) | 2012-06-29 | 2014-09-09 | Intel Corporation | Methods and apparatus to provide failure detection |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
CN104216684B (zh) * | 2013-06-04 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种多核并行系统及其数据处理方法 |
GB2518613A (en) | 2013-09-25 | 2015-04-01 | Ibm | Multiple core processing with high throughput atomic memory operations |
US9471397B2 (en) | 2014-10-03 | 2016-10-18 | International Business Machines Corporation | Global lock contention predictor |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10127153B1 (en) | 2015-09-28 | 2018-11-13 | Apple Inc. | Cache dependency handling |
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
US20200242042A1 (en) * | 2020-03-26 | 2020-07-30 | Jonas Svennebring | System, Apparatus and Method for Performing a Remote Atomic Operation Via an Interface |
US11119767B1 (en) | 2020-06-19 | 2021-09-14 | Apple Inc. | Atomic operation predictor to predict if an atomic operation will successfully complete and a store queue to selectively forward data based on the predictor |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1797348A (zh) * | 2004-12-29 | 2006-07-05 | 英特尔公司 | 预测处理器中的竞争 |
CN1973261A (zh) * | 2004-06-30 | 2007-05-30 | 英特尔公司 | 用于预测执行无竞争的锁定指令的方法和装置 |
CN101187862A (zh) * | 2006-11-13 | 2008-05-28 | 英特尔公司 | 用于硬件锁定取消的临界区检测和预测机制 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US6240414B1 (en) * | 1997-09-28 | 2001-05-29 | Eisolutions, Inc. | Method of resolving data conflicts in a shared data environment |
US6032242A (en) * | 1997-10-15 | 2000-02-29 | Industrial Technology Research Institute | Methods and systems for generating alternate and zigzag address scans based on feedback addresses of alternate and zigzag access patterns |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6651088B1 (en) * | 1999-07-20 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs |
US7243356B1 (en) * | 2000-05-09 | 2007-07-10 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
US6678772B2 (en) * | 2000-12-19 | 2004-01-13 | International Businesss Machines Corporation | Adaptive reader-writer lock |
US6950945B2 (en) * | 2001-06-21 | 2005-09-27 | International Business Machines Corporation | Apparatus and method for intersystem lock optimization |
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
US20070124728A1 (en) * | 2005-11-28 | 2007-05-31 | Mark Rosenbluth | Passing work between threads |
-
2009
- 2009-06-26 US US12/492,652 patent/US8533436B2/en not_active Expired - Fee Related
-
2010
- 2010-06-24 CN CN201010220346.4A patent/CN101937331B/zh not_active Expired - Fee Related
- 2010-06-25 KR KR1020100060789A patent/KR101168544B1/ko not_active IP Right Cessation
- 2010-06-25 BR BRPI1001929-4A2A patent/BRPI1001929A2/pt not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973261A (zh) * | 2004-06-30 | 2007-05-30 | 英特尔公司 | 用于预测执行无竞争的锁定指令的方法和装置 |
CN1797348A (zh) * | 2004-12-29 | 2006-07-05 | 英特尔公司 | 预测处理器中的竞争 |
CN101187862A (zh) * | 2006-11-13 | 2008-05-28 | 英特尔公司 | 用于硬件锁定取消的临界区检测和预测机制 |
Also Published As
Publication number | Publication date |
---|---|
US20100332801A1 (en) | 2010-12-30 |
KR101168544B1 (ko) | 2012-07-27 |
BRPI1001929A2 (pt) | 2014-02-18 |
US8533436B2 (en) | 2013-09-10 |
CN101937331A (zh) | 2011-01-05 |
KR20110000533A (ko) | 2011-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101937331B (zh) | 用于自适应处理远程原子执行的方法、设备和系统 | |
US8549263B2 (en) | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts | |
TWI307465B (en) | System, method and storage medium for memory management | |
CN1191524C (zh) | 预取指令的执行方法和设备 | |
CN100487642C (zh) | D缓存缺失预测和调度的方法和装置 | |
EP1990713B1 (en) | Branch predicting device for computer | |
US6883086B2 (en) | Repair of mis-predicted load values | |
US5353419A (en) | Memory-side driven anticipatory instruction transfer interface with processor-side instruction selection | |
US10997079B2 (en) | Method and arrangement for saving cache power | |
US10606600B2 (en) | Fetched data in an ultra-short piped load store unit | |
CN105659212A (zh) | 对于分区休眠的热页的检测 | |
EP3850480B1 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
CN107728935A (zh) | 对分布式计算系统中的数据重新分区 | |
CN114020441B (zh) | 一种多线程处理器的指令预测方法及相关装置 | |
US20200356485A1 (en) | Executing multiple data requests of multiple-core processors | |
US20050050303A1 (en) | Hierarchical reorder buffers for controlling speculative execution in a multi-cluster system | |
CN108292268A (zh) | 用于分布式一致性存储器的系统、方法和设备 | |
US11321146B2 (en) | Executing an atomic primitive in a multi-core processor system | |
CN117194283A (zh) | 基于risc-v指令集的向量读写指令的处理方法 | |
US20210141642A1 (en) | Instruction address based data prediction and prefetching | |
US10572384B2 (en) | Operating different processor cache levels | |
US20130275733A1 (en) | Multi-level tracking of in-use state of cache lines | |
US7047365B2 (en) | Cache line purge and update instruction | |
US8484423B2 (en) | Method and apparatus for controlling cache using transaction flags | |
US11481331B2 (en) | Promoting prefetched data from a cache memory to registers in a processor |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150506 Termination date: 20160624 |
|
CF01 | Termination of patent right due to non-payment of annual fee |