推测版本控制高速缓存内的检查点制造技术

技术编号:7367968 阅读:166 留言:0更新日期:2012-05-27 04:45
提供了用于在数据处理系统(100)的推测版本控制高速缓存(310、1210)内产生检查点(1030)的机制。所述机制执行数据处理系统(100)内的代码,其中所述代码访问推测版本控制高速缓存(310、1210)内的高速缓存行。该机制还确定(1350)指示需要在推测版本控制高速缓存(310、1210)内产生检查点(1030)的第一条件是否发生。检查点(1030)是推测高速缓存行,其被响应于需要对应于所述推测高速缓存行的高速缓存行的改变的回滚的第二条件的发生置于是非推测性的。该机制还响应于确定第一条件已经发生,在推测版本控制高速缓存(310、1210)内产生检查点(1310)。

【技术实现步骤摘要】
【国外来华专利技术】
本申请一般地涉及改进的数据处理装置和方法,并且更特别地,涉及执行推测版本控制高速缓存内的检查点,并且在某些实施例中,基于用于这些推测版本控制高速缓存的版本压力反馈机制执行这种检查点。
技术介绍
推测版本控制高速缓存是能够存储高速缓存行的多个版本以便使得能够在多线程数据处理环境中实现线程的推测执行的高速缓存存储器结构。线程的推测执行是一种优化技术,根据该技术,进行线程的提早执行(该线程的结果可能是或不是以后需要的),以便如果在代码的执行过程中需要该线程的结果(即,如果线程从推测状态转变为使用所述结果的非推测状态)的情况下实现更好的性能。推测版本控制高速缓存是典型高速缓存的扩展,其中推测版本控制高速缓存能够保持仅能被写该推测版本控制高速缓存的硬件线程访问的数据。所有带有修改注释的高速缓存行可被使用特殊命令(Abort,丢弃)丢弃,或使用另一种命令(commit,提交)使得其在结构上被其它线程可见。取决于模式,还可以由执行对应于逻辑后继任务的任务的其它线程访问在执行推测任务时由硬件线程写的数据。因此,推测版本控制需要在存储器位置的多个缓冲版本中追踪程序顺序,以便确保一定的顺序程序语义。首先,加载必须最终读取由对相同存储器位置的最近存储创建的值。这需要如果在该存储之前执行加载并且不正确地读取以前的版本,该加载必须被粉碎(squash)并且重新执行。另外,这需要在程序顺序中在该加载之后对相同存储器位置的所有存储必须被缓冲,直到该加载被执行为止。其次,存储器位置必须最终具有与版本的创建顺序无关的正确版本。从而,一个位置的推测版本必须被以程序顺序提交给体系结构存储设备。通过提供与推测线程相关联地存储高速缓存行的推测版本的能力,推测版本控制高速缓存支持推测多线程。在Gopal 等的“Speculative Versioning Cache, "Proceedings of the 4th International Symposium on High-Performance Computer Architecture, January 31 to February 04,1998,page 195中描述了推测版本控制高速缓存的一个例子。在推测版本控制高速缓存的这个例子中,为每个处理器提供专有高速缓存,以类似于基于探听总线的高速缓存一致性对称多处理器(SMP)组织系统。在专有高速缓存中命中的存储器引用不如同SMP中那样使用总线。任务提交不全体回写推测版本。当下次被访问时, 每个高速缓存行被单独处理。采用Gopal等描述的推测版本控制高速缓存,程序被划分为被称为任务的片段, 这些任务形成对应于它们在动态指令流内的顺序的序列。更高层次的控制单元预测该序列中的下一个任务,并且将其分配到空闲处理器以便执行。每个处理器执行分配给它的任务5中的指令,并且在其专有高速缓存中缓冲由该任务创建的推测状态。当检测到任务误预测时,包括不正确预测的任务和其之后的任务的该序列内的所有任务的推测状态被无效,并且释放对应的处理器。这被称为任务粉碎。然后分配该序列内的正确任务以便执行。当任务预测已被无效时,它通过将推测性缓冲状态拷贝到体系结构存储设备(例如,数据高速缓存)而提交。任务按照程序顺序一个接一个地提交。一旦任务提交,其处理器被释放以便执行下一个任务。由于任务按照程序顺序提交,因此任务被按照程序顺序分配给处理器。—旦加载的地址可获得,任务就执行该加载,推测该序列内的前面任务中的存储不向相同位置写。该位置的最近的以前版本被提供给该加载。记录被提供了以前任务的版本的加载,以便指示在潜在定义之前的使用。如果发生了定义,例如,以前任务中对相同位置的存储,该加载被提供了不正确的版本,并且违反了存储器相关性。当一个任务向一个存储器位置执行存储时,其被通知给序列内所有以后的活动任务。当一个任务从以前的任务接收到一个位置的新版本时,如果为该位置记录了定义之前的使用,即检测到存储器相关性违反,该任务被粉碎。在被粉碎的任务之后的所有任务也被作为任务误预测粉碎。最早的活动任务是非推测性的,并且可以将其推测存储器状态(即,由这个任务中的存储创建的版本)提交给体系结构存储设备。提交一个版本涉及逻辑地将版本从推测缓冲器拷贝到体系结构存储设备,例如,数据高速缓存。当任务被粉碎时,与任务相关联的推测状态被无效,并且不被提交给体系结构存储设备。各个处理器的专有高速缓存一起组成了推测版本控制高速缓存。专有高速缓存的每个高速缓存行存储标识被缓存的数据的地址标签(Tag)、标识高速缓存行是否有效的有效位(V)、标识是否发生了对高速缓存行的存储的脏位(S)、数据本身、指示是否发生了在对高速缓存行存储之前从该高速缓存行的任务加载的加载位(L)、标识具有用于该高速缓存行的版本顺序列表(VOL)内的下一个拷贝/版本(如果有的话)的处理器(或Ll高速缓存)的指针(Pointer),以及数据本身(Data)。推测版本控制高速缓存使用被称为版本控制逻辑(VCL)的组合逻辑,其提供对使用VOL的推测版本控制的支持。在处理器的专有高速缓存中命中的处理器请求不必参考 VOL。高速缓存未中发出被专有高速缓存探听的总线请求。每个专有高速缓存内的被请求的高速缓存行的状态和VOL被提供给VCL。VCL使用总线请求、任务之中的程序顺序和VOL 计算对每个高速缓存的适当响应。每个高速缓存行被基于其初始状态、总线请求和VCL响应更新。采用多线程数据处理环境中的线程的推测执行,线程被允许执行,直到遇到两个或更多个线程之间的相关性违反,例如,第一个线程执行对一个存储器位置的读取,其后比第一个线程新的第二个线程对相同存储器位置执行写,或两个或更多个线程试图修改高速缓存或存储器内的相同数据部分的状态的冲突。此时,通常允许一个线程保持其状态,而必须粉碎一个或更多个其它线程,即,由未被保持的线程执行的所有工作被回滚(roll back) 或放弃。这种线程粉碎比典型的高速缓存未中昂贵得多,这是由于其导致取消由给定的推测线程执行的所有工作以及还可能取消任意后续推测线程执行的所有工作
技术实现思路
在一个说明性实施例中,一种数据处理系统内的方法,用于产生数据处理系统的推测版本控制高速缓存内的检查点。该方法包括由数据处理系统的至少一个处理器执行数据处理系统内的代码,其中代码访问推测版本控制高速缓存内的高速缓存行。该方法还包括以数据处理系统确定指示需要产生推测版本控制高速缓存内的检查点的第一条件是否发生。检查点是推测高速缓存行,该推测高速缓存行被响应于第二条件发生置于是非推测性的,第二条件需要对应于推测版本控制高速缓存的高速缓存行的改变的回滚。该方法还包括响应于确定第一条件已经发生,产生推测版本控制高速缓存内的检查点。在另一个说明性实施例中,提供了一种包括计算机可读介质的计算机程序产品, 所述计算机可读介质具有记录在其上的计算机可读程序。当被数据处理系统执行时,所述计算机可读程序使得数据处理系统执行上面以方法实施例概述的各种操作以及这些操作的组合。在另一个说明性实施例中,提供了一种数据处理系统/装置,其包括一个或更多个处理器、耦连到一个或更多个处理器的推测版本控制高速缓存存储设备、以及耦连到推测版本控制高速缓存存储设备的以硬本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:A·埃钦伯格A·加拉M·格什温M·奥赫马特
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术