CN100461110C - 预测处理器中的竞争 - Google Patents
预测处理器中的竞争 Download PDFInfo
- Publication number
- CN100461110C CN100461110C CNB2005101352386A CN200510135238A CN100461110C CN 100461110 C CN100461110 C CN 100461110C CN B2005101352386 A CNB2005101352386 A CN B2005101352386A CN 200510135238 A CN200510135238 A CN 200510135238A CN 100461110 C CN100461110 C CN 100461110C
- Authority
- CN
- China
- Prior art keywords
- competition
- fallout predictor
- counter
- predictor
- prediction
- 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 claims description 21
- 230000002860 competitive effect Effects 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims 2
- 230000009977 dual effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 229920006395 saturated elastomer Polymers 0.000 description 8
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000036967 uncompetitive effect Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008485 antagonism Effects 0.000 description 1
- 238000000889 atomisation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施方案中,本发明包括预测器,用于预测要在程序中执行的操作的竞争。所述操作可以基于所述预测的结果来处理,所述预测可以基于多个独立的预测。在一个实施方案中,如果没有竞争被预测到,则可以优化所述操作。其他的实施方案被描述并被要求保护。
Description
技术领域
本发明涉及计算机系统,并特别地,涉及如执行多个线程的系统。
背景技术
包括多处理器(MP)系统和单处理器系统的计算机系统可以包括多个“线程”,每一个线程均独立于其他的线程执行程序指令。使用多个处理器或者线程允许更有效率地并且以更高的速度来处理各种任务或函数,甚至多个应用程序。应用多线程或处理器意味着两个或更多个处理器或者线程可以共享储存在系统内的同一数据并且同时访问它们。但是,在共享数据时必须注意保持存储器排序(memory ordering)。
出于数据一致性的目的,如果多个线程或处理器期望读、修改和写单个存储器位置,则不应该允许多个主体(agent)同时对数据进行操作。使多个处理器的使用进一步复杂的是数据经常储存在与处理器相关联、用于加速该处理器对数据的访问的缓存(cache)中。因为这种缓存通常被局限于特定处理器,所以大多数近来的对数据的更新可以被置于系统中缓存的任何一个中。任何访问该数据的主体应该从最近更新过的缓存接收到有效或更新过的数据值,并且,从该缓存写回存储器的数据或转移到其他缓存的数据必须是当前的数据,以便保持缓存一致性(cache coherency)。
多线程(MT)软件使用不同的机制来在不同的线程之间交互作用和协调。一个常见的MT同步形式是信号量(semaphore)旋转锁(spin-lock)。信号量旋转锁机制是在访问共享的存储器变量或结构(即共享元素)时用来保证多个线程间的相互排斥(即防止同时访问)的锁操作。为了提供共享元素的唯一且一致的视图,它由锁变量保护。每一个需要访问共享元素的线程必须通过原子化信号量操作获得保护锁。为了获得该锁,线程要读锁变量的值,将该值与预先确定的“自由”值比较,然后写“锁”值。这种读—修改—写操作必须要像是发生在一个步骤中,以使多个线程不同时地读“自由”值且写所述“锁”值,从而允许两个线程都相信它们已经获得了该锁。
在给定线程获得了关于锁变量的锁以后,其他期望访问该锁变量的线程通常必须一直等到最初的线程完成其锁操作为止。通常,寻求访问的其他线程将开始对锁变量地址的探查(snoop),以便对状态(即“自由”还是“锁定”)进行检查。发现了“锁定”值的线程将经常等一小段时间并再次探查,从而在小的探查—等待循环中旋转。当一个或更多个线程期望访问已经由另一个线程拥有的锁变量或者期望访问正被另一个线程访问的锁变量时,竞争出现了。在运行时期间,当一次只有唯一一个主体寻求执行关于该锁变量的锁操作时,锁操作是无竞争的。当线程完成修改共享变量或结构时,它将把“自由”值写回锁变量。
因为同步在MT应用程序中经常发生,所以处理器应该高效率地实现锁操作,以使MT应用程序可以如期望的那样执行。如果锁操作在运行时无竞争,则它能够被大大地优化。这种优化可以包括相关联缓存线(cache line)的推测性预取、锁省略(lock elision)等。但是,如果锁操作有竞争,则这些优化技术导致高昂的代价。
因此,存在预测有竞争的锁操作的需求,从而使得处理器能够高效率地实现锁操作。
附图说明
图1是根据本发明的一个实施方案的处理器的一部分的框图。
图2是根据本发明的一个实施方案的方法的流程图。
图3是根据本发明的一个实施方案的系统的框图。
图4是根据本发明另一个实施方案的多处理器系统的框图。
发明内容
在一个实施方案中,本发明包括预测器,用于预测要在程序中执行的操作的竞争。所述操作可以基于所述预测的结果来处理,所述预测可以基于多个独立的预测。在一个实施方案中,如果没有竞争被预测到,则可以优化所述操作。其他的实施方案被描述并被要求保护。
根据本发明的一个方面,公开了一种装置,包括:用于预测要被执行的操作的竞争的预测器。
根据本发明的另一方面,公开了一种系统,包括:第一预测器,用于预测锁操作是否有竞争;第二预测器,用于指示程序中竞争的水平;以及耦合到所述第一预测器并耦合到所述第二预测器的动态随机访问存储器(DRAM),以储存所述程序。
根据本发明的又一方面,公开了一种方法,包括:预测锁操作在执行期间是否有竞争;以及如果预测所述锁操作没有竞争,则优化所述锁操作。
根据本发明的再一方面,公开了一种制品,包括包含指令的机器可读储存介质,所述指令如果被机器执行,则使得所述机器能够执行一种方法,所述方法包括:预测要被执行的操作的竞争;以及基于所述预测来处理所述操作。
根据本发明的又再一方面,公开了一种装置,包括:用于预测操作是否有竞争的第一预测器,所述第一预测器具有带有多个条目的表;指示全局竞争水平的第二预测器,所述第二预测器包括全局计数器;以及耦合到所述第一预测器和所述第二预测器的预测器控制器,所述预测器控制器用于基于来自所述第一预测器和所述第二预测器的输入产生最终预测。
具体实施方案
参考图1,示出了根据本发明的一个实施方案的处理器100的一部分的框图。如图1中所示,处理器100包括锁预测器110和存储器排序缓冲器(MOB)150。虽然在图1中只示出了这些元件,但是要理解,处理器100可以包括额外的部件,例如数据缓存、分支预测单元、流水线级、各种寄存器,等等。
锁预测器110可以用来预测程序内的锁操作在执行期间是否可能是有竞争的。在图1的实施方案中,锁预测器110包括第一预测器(即表或T预测器)120和第二预测器(即全局或G预测器)130。T预测器120和G预测器130可以独立地预测锁操作是否可能是有竞争的。作为结果的来自两个预测器的预测都被提供给预测器逻辑140,预测器逻辑140可以是控制器等,用于以期望的方式对结果进行组合。虽然示出了两个单独的预测器,但是本发明的范围不限于此,并且,在一些实施方案中可以存在额外的预测器(或者甚至是单独一个)。
由预测器逻辑140产生的最终预测通过线145提供给MOB 150。更具体地说,最终预测被提供给MOB控制逻辑180,MOB控制逻辑180可以是控制器等,它用来控制MOB150内的缓冲器,所述缓冲器包括加载缓冲器160和储存缓冲器170。加载缓冲器160可以用来在加载微操作(mop)执行之前储存它们,并跟踪以前的加载或者其他的存储器操作,所述其他的存储器操作必须在给定的存储器操作自身可以被完成之前完成。类似地,储存缓冲器170可以用来储存例如储存操作的存储器操作,并用来跟踪以前的存储器操作(一般是加载),在可以提交(commit)给定的存储器操作自身之前,必须完成所述的以前的存储器操作。
当计算加载锁操作的地址时,对应于锁变量的地址可以通过线162从执行单元105提供给T预测器120,以便开始预测。此外,操作可以被输入加载缓冲器160的条目。提供给T预测器120的这个地址可以用来访问T预测器120内的查找表125,以便输出与锁变量的地址相关联的计数。该计数可以指示程序执行期间在那个锁变量上已经发生过的竞争次数。当然,有关加载锁操作的其他信息(例如其程序计数器)也可以被提供给T预测器以帮助表查找。
如图1中所示,在一些实施方案中,额外的线163可以耦合在加载缓冲器160和T预测器120之间,以便将对应于表变量的地址提供给T预测器120。该线可以用于从加载缓冲器160获得关于重分派的预测。
如图1中进一步所示,来自T预测器120的计数可以从T预测器120提供给预测器逻辑140。同时,当前存在的对线程内全局竞争的预测从G预测器输出,并提供给预测器逻辑140。预测器逻辑140可以组合这些输入,以获得最终预测,然后,所述最终预测被提供给MOB控制逻辑180。
依次,MOB控制逻辑180可以基于预测来处理锁操作。例如,MOB控制逻辑180可以基于最终预测来确定是否优化锁操作。虽然MOB控制逻辑180可以以各种方式来处理锁操作的执行,但是,如果预测指示不可能有竞争,则MOB控制逻辑180可以实现对锁操作的优化。相反,如果预测指示有可能有竞争,则MOB控制逻辑180可以使得锁操作被保守地执行。
在一个实施方案中,T预测器120可以包括在程序执行期间曾遭遇竞争的锁变量的地址表125。虽然在图1的实施方案中示出了单个表,但是可以存在多个表,每一个均对应于不同的线程。或者,单个表可以存在,并且在每一个条目中可以包括线程标识符,以便将条目与对应的线程相关联。
表125的每一个条目均可以具有饱和计数器(saturating counter),例如两位的饱和计数器。当表变量的地址在程序中第一次有竞争时,它被添加到表125,并且该条目的计数器被初始化为零。如果对应于表变量的地址再次有竞争,则该条目的计数可以被递增。如果在程序执行期间计数饱和,则T预测器120可以预测:每一个后续的访问该表变量的锁操作将是有竞争的。相反,如果地址未储存在该表中,或者与该表中的条目相关联的计数还没有饱和,则T预测器120可以预测:锁操作将是无竞争的。
在一些实施方案中,由于表条目竞争所致,表125内的条目可能被覆写。此外,在一些实施方案中,整个表可以被周期性地清除。在一个实施方案中,可以将128个条目的表用于该表。在这样的实施方案中,表125可以直接被映射,具有被用于每一个条目的4位的标签。在一个实现中,表变量地址的低六位可以被屏蔽掉,接下来较高的七位地址可以用作进入表的索引,并且接下来的4个最高位可以被储存为标签。地址的剩余位可以被丢弃。
在程序的执行期间,一些锁变量很少有竞争,而其他的则经常有竞争。在各种实施方案中,T预测器120中的计数器的饱和本质可以捕获这种行为。即,经常竞争的锁变量可以很快地使T预测器120内的计数器饱和,而很少竞争的锁变量将持续地被T预测器120预测为无竞争。在一个实施方案中,可以使用饱和上/下计数器。利用这种计数器,当锁变量有竞争时,可以递增计数器条目,而当其不竞争时,计数器条目可以被递减。然后,T预测器120内的逻辑可以将计数值与阈值进行比较,以确定给定的锁操作是否有可能有竞争。
在一个实施方案中,G预测器130可以包括指示程序内的竞争量的全局(G)计数器132。虽然在图1中被示出为单个计数器,但是可以存在多个计数器,每一个均与不同的线程相关联。
G预测器130可以用来指示程序内的竞争的全局视图。虽然在这里针对程序描述,但是在一些实施方案中,G预测器130可以以线程为基础对竞争进行分析。无论何时锁操作有竞争,G计数器132就可以被递增。G预测器130还可以包括指示程序内的竞争水平的控制逻辑。在一个实施方案中,可以将计数器值与第一阈值和第二阈值进行比较。如果当前计数低于第一阈值,则G预测器130预测程序内的竞争为低。相反,如果计数器值超过了第一阈值但是低于第二阈值,则G预测器130可以预测程序内的竞争处于中等水平。如果当前计数在第二阈值之上,则G预测器130可以预测程序内的竞争为高。在一个实施方案中,第一阈值可以被设置为5并且第二阈值可以被设置为25,尽管本发明的范围不限于此。而且,不是向预测器逻辑140发送预测,G预测器130可以输出G计数器132的当前计数值,并且预测器逻辑140可以基于该值来预测竞争。
在一些实施方案中,计数器132可以被间隔性地复位。此外,计数器132可以是饱和计数器(即,被防止溢出)。以这种方式,G预测器130可以捕获程序内的竞争突发。即,在程序的某个部分期间(例如给定数量的指令),竞争可能为高,而在程序的不同部分,竞争可以为低(或中等)。以这种方式,G预测器130可以捕获竞争的突发。此外,G预测器130可以起到对抗缘于不良书写的代码等的病态竞争情形的看门狗(watchdog)机制的作用。例如,当T预测器120中的表125被太多的锁和跟踪湮没时,G预测器130可以基于其全局视图来预测竞争。
如上所述,计数器132可以以各种间隔复位。例如,在一个实施方案中,它可以大约每隔30,000个处理器周期被复位。在这样的实施方案中,可以每个处理器周期递增第二个计数器(即复位(R)计数器)134,并且,当第二计数器134溢出时,计数器132可以被复位。在一个实施方案中,R计数器134可以是15位的计数器,且也包括在G预测器130内。在其他的实施方案中,R计数器134可以被置于G预测器130之外。此外,在其他实施方案中,G计数器132可以是饱和增/减计数器,所述计数器在发生竞争时被递增,并且在不发生竞争时被递减。
因此,独立的预测可以被从T预测器120和G预测器130提供给预测器逻辑140。现在参考表1,所示的是可以在预测器逻辑140中实施的状态图。如表1中所示,预测器逻辑140可以基于独立预测发展出最终预测。
表1
G元件 | T元件 | 预测 |
高 | 有竞争 | 有竞争 |
中等 | 有竞争 | 有竞争 |
低 | 有竞争 | 无竞争 |
高 | 无竞争 | 有竞争 |
中等 | 无竞争 | 无竞争 |
低 | 无竞争 | 无竞争 |
如表1中所示,G预测器130可以起到看门狗的作用。当竞争的全局预测是高时,无论单个锁变量的竞争历史如何,总可以预测竞争。类似地,如果G预测器130指示全局竞争为低,则有可能单个锁变量将继续是无竞争的,而不管其历史。
相反,如果G预测器130预测竞争是中等的,则最终预测可以基于特定锁变量的竞争历史(即T预测器120的输出)。虽然在表1中以特定实现示出,但是要理解,在其他的实施方案中,来自两个独立的预测器的预测可以被以其他的方式组合。
现在参考图2,所示是根据本发明的一个实施方案的方法的流程图。如图2中所示,方法200是竞争预测器的一个实现,并且可以用来确定对于给定的锁操作,竞争是否是可能的。如果预测没有竞争,则锁操作可以被优化。方法200可以通过接收从从保留站(reservation station)分派的加载操作开始(框210)。这个操作可以被写入MOB 150(框215)。同时,可以确定该加载是否是加载锁操作(菱形220)。如果它不是,则可以正常执行该操作(框230)。
相反,如果确定该加载是加载锁操作,则控制从菱形220直接传递到菱形250,在菱形250中,地址可以被分派到基于地址来预测竞争的预测器(菱形250)。例如,回头参考图1的预测器,锁变量的地址可以从线162提供给T预测器120。依次,T预测器120可以使用该地址(如上所述)来访问表125,以便确定那里是否包含锁变量。如果是,则与锁变量相关联的计数被施加到T预测器120中的逻辑,T预测器120中的逻辑将预测输出到预测器逻辑140,预测器逻辑140也从G预测器130接收当前的预测。依次,预测器逻辑140可以基于这两个输入来产生最终的竞争预测。该预测被提供给MOB控制逻辑180。
基于该预测,可以开始如下面进一步描述的协议。基于菱形250处的竞争预测,如果不满足某些条件,则协议可以阻塞(block)实际操作,而同时,如果预测是没有竞争,则仍然允许被优化的部分(例如预取或省略)继续下去。
如果在菱形250处预测了竞争,则可以执行保守的锁定协议(框270)。例如,MOB150可以等待加载缓冲器160中是最老的微操作(uop)的加载锁操作,或者可以等待储存缓冲器170排出(drain),或者是类似的过程。
反之,如果预测没有竞争,则控制从菱形250传递倒框260。在那里,锁操作可以被优化(框260)。例如,加载锁操作可以被推测性地分派,以便预取对应于加载变量的缓存线。也可以实现其他类似的这种优化。例如,在加载锁微操作和依赖性(dependent)微操作变成机器中最老的之前,或者储存缓冲器被排出之前,加载锁微操作和依赖性微操作可以被推测性地执行。
此外,在一些实施方案中,在从MOB 150重分派之后,预测器可以被访问,控制从菱形220传递到菱形250,以便为了预测重新检查。或者,可以储存和重新使用先前的预测。
在操作期间,MOB 150监视进入的探查,以便确定任何其他的线程或处理器是否想要访问同一锁变量。MOB 150继续这种监视,直到加载锁微操作已经从机器中退出为止。在MOB 150正监视锁变量时发生的探查将指示不当推测,并且将要求重新执行加载锁及其依赖性(dependent)操作。
在一个实施方案中,通过使额外的指示符与加载缓冲器160内的条目相关联来指示竞争,可以检测到加载操作的实际竞争。但是要理解,在其他实施例中可以用其他的方式检测竞争。
当为了加载操作分配了加载缓冲器160中的条目时,竞争指示符(它可以是单个的竞争位)可以被复位。如果探查操作在条目已经被分配之后并且在指令已经退出之前进入对应于加载操作的加载缓冲器,则竞争位可被置位。当对应于加载操作的加载缓冲器160的条目以后被解除分配时(在锁指令已退出之后),可以查看竞争位以检测竞争。更具体地说,条目及其相关联的竞争位可以被传递倒T预测器120和G预测器130,以便对它们进行更新。即,如果竞争位被置位,则T预测器120和G预测器130内的计数器可以被递增。在图1的实施方案中,对于这种更新,可以存在单独的更新通道165。
现在参考图3,所示是根据本发明的一个实施方案的代表性计算机系统300的框图。如图3中所示,计算机系统300包括第一处理器310a和第二处理器310b。在一个实施方案中,处理器310a可以经第二层(L2)缓存305,通过存储器系统互连320耦合到缓存一致(coherent)共享存储器子系统(“一致性存储器(coherent memory)”)330。在一个实施方案中,一致性存储器330可以包括动态随机访问存储器(DRAM),并且还可以包括用于在处理器310a和处理器310b之间共享一致性存储器330的一致性存储器控制器逻辑。
要理解,在其他的实施方案中,额外的处理器可以耦合到一致性存储器330。此外,在某些实施方案中,一致性存储器330可以分部分实现,并分散开,以使系统300内处理器的子集与一致性存储器330的某些部分通信,而其他的处理器与一致性存储器330的其他部分通信。
如图3中所示,处理器310a可以包括锁预测器312a、存储器排序缓冲器(MOB)314a,以及执行单元316a。如上所述,锁预测器312a可以耦合到MOB 314a,以提供对锁竞争的预测。基于这些预测,MOB 314a可以优化锁操作。然后,被优化的操作可以被传递到执行单元316a,执行单元316a可以具有执行所述操作的流水线级。然后,有关操作的信息可以被传递回MOB 314a,以指示操作完成且准备好了解除分配。此时,MOB 314a可以用操作的竞争状态(即有竞争或无竞争)来对锁预测器312a进行更新。当然,在处理器310a中可以存在额外的元件,例如第一层(L1)缓存。
如图3中进一步所示,处理器310b中可以存在类似的处理器元件,处理器310b可以是多处理器系统的第二个核心处理器。虽然在图3的实施方案中示出为每一个均包括预测器,但是在一些实施方案中,可能只有单个核心包括这样的预测器,所述预测器可以由多个核心共享。更进一步,在一些实施方案中,多线程应用程序可针对每一个线程使用单独的预测器。在其他的实施方案中,锁预测器可以存在于单处理器系统中。
一致性存储器330也可以(经过中心链路(hub link))耦合到输入/输出(I/O)中心(hub)335,输入/输出中心335耦合到I/O扩展总线355和外部总线350。在不同的实施方案中,I/O扩展总线355可以耦合到各种I/O设备,例如键盘或鼠标,以及其他设备。外部总线350可以耦合到各种部件,例如外部设备370,外部设备370可以是存储器设备,例如快闪存储器、插卡(add-in card),等等。尽管描述参考了系统300的具体部件,但是所示实施方案的很多修改是可能的。
在一些实施方案中,多处理器系统可以是点到点总线系统,例如在公共系统接口(CSI)系统中。现在参考图4,所示是根据本发明的另一个实施方案的多处理器系统的框图。如图4中所示,多处理器系统是点到点总线系统,并且包括经过点到点互连450耦合的第一处理器470和第二处理器480。第一处理器470包括处理器核心474、存储器控制器中心(MCH)472,以及点到点(P-P)接口476和478。类似地,第二处理器480包括相同的部件,即处理器核心484、MCH 483,以及P-P接口486和488。根据本发明的实施方案,每一个处理器470和480均可以包括预测电路。
如图4中所示,MCH 472和482将处理器耦合到相应的存储器,即存储器432和存储器434,所述存储器可以是在局部上连接到相应处理器的主存储器的一部分。
第一处理器470和第二处理器480可以通过P-P接口(interface)452和454分别耦合到芯片组490。如图4中所示,芯片组900包括P-P接口494和498。此外,芯片组490包括将芯片组490耦合到高性能图形引擎438的接口492。在一个实施方案中,先进图形端口(AGP)总线439可以用来将图形引擎438耦合到芯片组490。AGP总线439可以符合加州圣克拉拉的英特尔公司1998年4月公布的图形加速端口接口规范2.0修订本。或者,点到点互连439可以耦合这些部件。
依次,芯片组490可以通过接口496耦合到第一总线416。在一个实施方案中,第一总线416可以是如1995年6月的PCI局部总线规范,生产版,修订本2.1定义的外设部件互连(PCI)总线,或者是例如PCI Express总线或其他第三代I/O互连总线的总线,尽管本发明的范围不限于此。
如图4中所示,各种输入/输出(I/O)设备414以及总线桥418可以耦合到第一总线416,总线桥418将第一总线416耦合到第二总线420。在一个实施方案中,第二总线420可以是低引脚数(low pin count,LPC)总线。各种设备可以耦合到第二总线420,例如包括键盘/鼠标422、通讯设备426和数据储存单元428,在一个实施方案中,数据储存单元428可以包括代码430。此外,音频I/O424可以耦合到第二总线420。
可以在计算机程序中实现实施方案,所述计算机程序储存在储存介质上,具有用于对计算机系统编程来执行所述实施方案的指令。储存介质可以包括但不限于:任何类型的盘片、半导体器件,或者任何类型的适于储存电子指令的介质,所述盘片包括软盘、光盘、致密盘只读存储器(CD-ROM)、致密盘可读写存储器(CD-RW),以及磁光盘;所述半导体器件例如只读存储器(ROM)、诸如静态和动态RAM的随机访问存储器(RAM),可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、磁卡或光卡。其他的实施方案可以实现为被可编程控制设备执行的软件模块。
虽然这里描述为基于锁变量的地址来预测竞争,但是在其他实施方案中,预测也可以基于锁定指令的线性指令指针(LIP)(有时候也称为程序计数器)。此外,在其他实施方案中,预测可以基于LIP和锁变量地址的某种组合。在另一种实施方案中,预测也可以包含来自过去的分支历史/目标信息的信息。而且,其他操作的竞争预测可能受影响。
虽然已经参考有限数量的实施方案描述了本发明,但是熟练技术人员将理解由此产生的各种修改和变化。所附权利要求书旨在覆盖所有这种落入本发明的真正精神和范围的修改和变化。
Claims (34)
1.一种装置,包括:
用于预测要被执行的操作的竞争的预测器,所述预测器包括用于储存对应于锁变量的地址信息的表,用于基于对应于所述操作的锁变量的地址来预测所述竞争。
2.如权利要求1的装置,其中,所述表包括多个条目,每个所述条目包括锁变量的地址信息、线程标识符和计数器。
3.如权利要求2的装置,其中,所述装置还包括用于对线程中的竞争的发生进行计数的第二计数器。
4.如权利要求3的装置,还包括用于基于来自所述表和所述第二计数器的信息预测所述操作的竞争的预测器逻辑。
5.如权利要求4的装置,还包括用于基于所述预测器逻辑的输出优化所述操作的控制器。
6.如权利要求1的装置,其中,所述装置基于第一和第二独立预测来预测所述竞争。
7.如权利要求1的装置,还包括耦合到所述预测器的缓冲器,所述缓冲器将所述操作储存在条目中,所述条目具有与其相关联的竞争指示符。
8.如权利要求7的装置,其中,如果所述条目被探查,则所述竞争指示符指示竞争。
9.一种系统,包括:
第一预测器,用于预测锁操作是否有竞争;
第二预测器,用于指示程序中竞争的水平;以及
耦合到所述第一预测器并耦合到所述第二预测器的动态随机访问存储器,以储存所述程序。
10.如权利要求9的系统,还包括第一控制器,所述第一控制器用于基于所述第一预测器和所述第二预测器的结果产生组合预测。
11.如权利要求10的系统,还包括用于接收所述组合预测的第二控制器。
12.如权利要求11的系统,其中,如果所述组合预测指示没有竞争,则所述第二控制器将把至少一个优化施加于所述锁操作。
13.如权利要求9的系统,其中,所述第一预测器包括储存器,所述储存器用于至少储存对应于所述程序的锁变量的地址的一部分。
14.如权利要求9的系统,其中,所述第二预测器包括计数器,所述计数器用于对所述程序中的竞争发生进行计数。
15.如权利要求14的系统,还包括复位机制,所述复位机制用于在预定数量的处理器周期之后复位所述计数器。
16.如权利要求14的系统,其中,所述计数器包括增/减计数器。
17.一种方法,包括:
基于锁操作是否有竞争和/或基于程序中的竞争水平来预测所述锁操作在执行期间是否有竞争;以及
如果预测所述锁操作在执行期间没有竞争,则优化所述锁操作。
18.如权利要求17的方法,还包括使用第一预测器和第二预测器来独立地预测。
19.如权利要求18的方法,还包括组合所述第一预测器和所述第二预测器的结果。
20.如权利要求18的方法,还包括将第一有竞争锁变量的地址插入所述第一预测器的第一条目。
21.如权利要求20的方法,还包括:如果所述第一有竞争锁变量再次遭遇竞争,则递增所述第一预测器的所述第一条目的计数。
22.如权利要求21的方法,还包括基于所述计数来在所述第一预测器中预测所述第一有竞争锁变量的竞争。
23.如权利要求18的方法,还包括:如果程序的任何锁操作有竞争,则递增所述第二预测器中的计数器。
24.如权利要求18的方法,还包括:如果对应于所述锁操作的缓冲器条目被探查,则置位该条目中的竞争指示符。
25.如权利要求24的方法,还包括基于所述竞争指示符来更新所述第一预测器和所述第二预测器其中的至少一个。
26.一种设备,包括:
用于基于要被执行的操作是否有竞争和/或基于程序中的竞争水平来预测所述要被执行的操作的竞争的装置;以及
用于基于所述预测来处理所述操作的装置。
27.如权利要求26的设备,还包括:用于如果对应于所述操作的缓冲器条目被探查,则置位该条目中的竞争指示符的装置。
28.如权利要求27的设备,还包括:用于基于所述竞争指示符来更新所述第一预测器和所述第二预测器其中的至少一个的装置。
29.如权利要求26的设备,还包括:用于以基于要被执行的操作是否有竞争和基于程序中的竞争水平两种方式独立地预测所述竞争的装置。
30.一种装置,包括:
用于预测操作是否有竞争的第一预测器,所述第一预测器具有带有多个条目的储存对应于锁变量的地址信息的表;
指示全局竞争水平的第二预测器,所述第二预测器包括全局计数器;以及
耦合到所述第一预测器和所述第二预测器的预测器控制器,所述预测器控制器用于基于来自所述第一预测器和所述第二预测器的输入产生最终预测。
31.如权利要求30的装置,还包括接收所述最终预测的排序控制器。
32.如权利要求31的装置,其中,如果所述最终预测指示没有竞争,则所述排序控制器将把至少一个优化施加于所述操作。
33.如权利要求30的装置,其中,所述表至少要储存对应于锁变量的地址的一部分。
34.如权利要求30的装置,还包括用于复位所述全局计数器的复位机制。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/027,392 US7516313B2 (en) | 2004-12-29 | 2004-12-29 | Predicting contention in a processor |
US11/027,392 | 2004-12-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1797348A CN1797348A (zh) | 2006-07-05 |
CN100461110C true CN100461110C (zh) | 2009-02-11 |
Family
ID=36685309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101352386A Expired - Fee Related CN100461110C (zh) | 2004-12-29 | 2005-12-29 | 预测处理器中的竞争 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7516313B2 (zh) |
CN (1) | CN100461110C (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558946B2 (en) * | 2005-12-12 | 2009-07-07 | Intel Corporation | Breaking a lock situation in a processor without detection of the lock situation using a multi-level approach |
US7590784B2 (en) * | 2006-08-31 | 2009-09-15 | Intel Corporation | Detecting and resolving locks in a memory unit |
US8190859B2 (en) | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US7937532B2 (en) * | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
WO2008155829A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法 |
US20090125519A1 (en) * | 2007-11-13 | 2009-05-14 | Intel Corporation | Device, system, and method for regulating software lock elision mechanisms |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8266394B2 (en) * | 2008-07-14 | 2012-09-11 | International Business Machines Corporation | Methods for single-owner multi-consumer work queues for repeatable tasks |
US8479166B2 (en) * | 2008-08-25 | 2013-07-02 | International Business Machines Corporation | Detecting locking discipline violations on shared resources |
US8533436B2 (en) * | 2009-06-26 | 2013-09-10 | Intel Corporation | Adaptively handling remote atomic execution based upon contention prediction |
US8595692B2 (en) * | 2010-03-22 | 2013-11-26 | International Business Machines Corporation | Identifying lock granularization opportunities |
US8516577B2 (en) | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
WO2013101138A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Identifying and prioritizing critical instructions within processor circuitry |
WO2013113366A1 (de) * | 2012-01-31 | 2013-08-08 | Siemens Aktiengesellschaft | Verfahren zum betreiben eines prozessors |
CN104335183B (zh) * | 2012-06-29 | 2018-03-30 | 英特尔公司 | 用于测试事务性执行状态的方法、装置和系统 |
US20140101761A1 (en) * | 2012-10-09 | 2014-04-10 | James Harlacher | Systems and methods for capturing, replaying, or analyzing time-series data |
US9471397B2 (en) * | 2014-10-03 | 2016-10-18 | International Business Machines Corporation | Global lock contention predictor |
US9965727B2 (en) | 2016-01-14 | 2018-05-08 | International Business Machines Corporation | Method and apparatus for resolving contention in a computer system |
US9858107B2 (en) | 2016-01-14 | 2018-01-02 | International Business Machines Corporation | Method and apparatus for resolving contention at the hypervisor level |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003027845A2 (en) * | 2001-09-28 | 2003-04-03 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
WO2003044670A1 (en) * | 2001-11-16 | 2003-05-30 | Sun Microsystems, Inc. | Coherence message prediction mechanism and multiprocessing computer system employing the same |
US6622237B1 (en) * | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
CN1549154A (zh) * | 2003-05-21 | 2004-11-24 | 深圳市中兴通讯股份有限公司南京分公 | 一种避免双处理器写竞争的方法 |
Family Cites Families (7)
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 |
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 |
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 |
US7120762B2 (en) * | 2001-10-19 | 2006-10-10 | Wisconsin Alumni Research Foundation | Concurrent execution of critical sections by eliding ownership of locks |
-
2004
- 2004-12-29 US US11/027,392 patent/US7516313B2/en not_active Expired - Fee Related
-
2005
- 2005-12-29 CN CNB2005101352386A patent/CN100461110C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6622237B1 (en) * | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
WO2003027845A2 (en) * | 2001-09-28 | 2003-04-03 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
WO2003044670A1 (en) * | 2001-11-16 | 2003-05-30 | Sun Microsystems, Inc. | Coherence message prediction mechanism and multiprocessing computer system employing the same |
CN1549154A (zh) * | 2003-05-21 | 2004-11-24 | 深圳市中兴通讯股份有限公司南京分公 | 一种避免双处理器写竞争的方法 |
Non-Patent Citations (2)
Title |
---|
Speculative Lock Elision:Enabling HighlyConcurrent Multithreaded Execution. Ravi Rajwar, James R.Goodman.proceedings of the 34th International Symposium on Microarchitecture. 2001 |
Speculative Lock Elision:Enabling HighlyConcurrent Multithreaded Execution. Ravi Rajwar, James R.Goodman.proceedings of the 34th International Symposium on Microarchitecture. 2001 * |
Also Published As
Publication number | Publication date |
---|---|
US7516313B2 (en) | 2009-04-07 |
US20060161738A1 (en) | 2006-07-20 |
CN1797348A (zh) | 2006-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100461110C (zh) | 预测处理器中的竞争 | |
CN102622276B (zh) | 多处理器环境中基于事务的共享数据操作 | |
CN100407137C (zh) | 推测性地执行程序指令的方法、微处理器及系统 | |
CN1320452C (zh) | 用于支持数据推测式执行的微处理器与方法 | |
CN100388186C (zh) | 用排序向量实施存储器排序模型的方法与设备 | |
CN103140828B (zh) | 基于硬件限制利用可调事务尺寸来动态优化代码的装置、方法和系统 | |
US9195606B2 (en) | Dead block predictors for cooperative execution in the last level cache | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
CN103562870B (zh) | 异构核心的自动加载平衡 | |
US7594131B2 (en) | Processing apparatus | |
US20030217251A1 (en) | Prediction of load-store dependencies in a processing agent | |
US20120066455A1 (en) | Hybrid prefetch method and apparatus | |
CN102414659B (zh) | 用于在多线程微处理器中调度指令的发布的方法和设备 | |
US9330027B2 (en) | Register access white listing | |
CN102103488A (zh) | 利用缓冲器进行高效加载处理的方法和设备 | |
US11789734B2 (en) | Padded vectorization with compile time known masks | |
CN103809935A (zh) | 在超前运行期间管理潜在无效结果 | |
US20070101332A1 (en) | Method and apparatus for resource-based thread allocation in a multiprocessor computer system | |
US20130262780A1 (en) | Apparatus and Method for Fast Cache Shutdown | |
US10521368B2 (en) | Arbitration of requests requiring a variable number of resources | |
CN110023904B (zh) | 双模式本地数据存储 | |
US7631125B2 (en) | Dynamically migrating channels | |
US20080022052A1 (en) | Bus Coupled Multiprocessor | |
US11194574B2 (en) | Merging memory ordering tracking information for issued load instructions | |
US7779230B2 (en) | Data flow execution of methods in sequential programs |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090211 Termination date: 20161229 |