局部化高速缓存块刷新指令的方法、编译器和系统技术方案

技术编号:2867772 阅读:339 留言:0更新日期:2012-04-11 18:40
微处理器和相关的编译器支持局部高速缓存块刷新指令,其中处理器的执行单元确定有效地址。处理器强制所有正在执行的、针对对应于所确定的有效地址的缓存块的访问提交给高速缓存子系统。如果在局部缓存(对应于执行该指令的处理器的高速缓存子系统)中修改所访问的缓存行,就将其写回主存储器。如果所访问的缓存块在局部缓存是有效的,就置其为无效,但仅在局部缓存置为无效。如果所访问的缓存块在局部缓存不是有效的,就不置为无效。经过系统接收到发自另一个处理器的局部高速缓存块刷新指令的远端处理器忽略该指令。

【技术实现步骤摘要】

本专利技术通常涉及微处理器体系结构,特别是使用高速缓冲存储器子系统的多处理器体系结构

技术介绍
在基于微处理器的数据处理系统
,高速缓冲存储器子系统和数据局部性的相关概念是众所周知的。高速缓冲存储器指的是一个或多个小而快速的存储阵列,从体系结构和层次上说,比系统的主存储器(DRAM)更靠近处理器核心。由于其容量受到限制,高速缓冲存储器只能够容纳系统主存储器中所存信息的一部分。当需要的数据片不在高速缓冲存储器时,系统就必须在处理开销上付出不菲的代价去访问主存储器以取得数据。从配置高速缓冲存储器获得的好处与高速缓冲存储器能够满足的数据存取请求的百分比(通常称为高速缓存的“命中率”)强烈相关。幸运的是,相对小的高速缓冲存储器常常可以提供可接受的高命中率,这是因为,正如许多应用所表现出来的,在不长的未来时间内最可能存取的数据就是不久前曾经存取过的数据。所以,只要简单地存储了最近存取过的数据,高速缓冲存储器子系统就能够向微处理器核心提供对最可能需要的数据的快速存取。然而,从根本上来说,要用一个比主存储器小得多的高速缓冲存储器实现具有100%命中率的高速缓冲存储器是不可能的。为了得到尽可能高的命中率,并且为了充分利用可获得的有限高速缓冲存储器,设计者总是对探索高速缓存中维护数据的方式有兴趣。例如,某些微处理器的指令集就包含对用户级和/或监控级的高速缓存管理指令的支持。一般来说,高速缓存管理指令能够实现对高速缓冲存储器子系统某些方面的直接软件控制。例如,IBM的POWERPC系列处理器支持几条高速缓存管理指令,包括数据高速缓存块刷新(DCBF)指令。DCBF指令允许软件将高速缓冲存储器子系统中可指定的块无效。在某些情况下,例如对于一个没有参与高速缓存一致性协议的子系统,当在允许它存取特定数据块之前希望强制实现一致性(始终针对主存储器)的时候,DCBF指令就是有用的。当能够以合理高的概率确定相关存储位置非常可能按照紧密连续位置的顺序存取一次或多次,而后起码在比较长的时间内非常不可能被存取时,DCBF指令也是有用处的。具有这种特性的数据被称为具有高度空间局部性(SPATIAL LOCALITY)和低度时间局部性(TEMPORAL LOCALITY)。空间局部性是指这样一种数据特性,其中例如在对存储器地址A进行存取之后,非常可能跟随着一次或多次对紧随A的存储器地址的存取。时间局部性是指这样一种数据特性,其中在时间T存取过的数据非常可能在时间T+Δ时又被存取,其中Δ表示一个相对短的时间间隔。显而易见,具有高度时间和空间局部性的数据最适合存储在高速缓存子系统中。时间局部性的现实存在是采用高速缓存的根本原因。然而,在某些应用中,数据可能表现出高度空间局部性和低度时间局部性。这种情况使通常实现的高速缓存子系统面临着困难。一方面,希望能够预取和高速缓存高度空间局部性的数据,以避免在需要数据时造成延迟。另一方面,当高度时间局部性的其它数据要驻留时,又不希望这些高度空间局部性的数据滞留在高速缓存里。微处理器早已能够支持一般称之为“杀灭(KILL)”的指令,它将高速缓存指定的缓存行(CACHE LINE)无效,从而为接受新数据而释放出高速缓存空间。在采用多个非同步核心的多处理器系统中,杀灭指令把该系统的所有处理器中的指定高速缓存块无效。不幸的是,以这种方式杀灭一个高速缓存块可能导致在对应的处理器还没有完成对一个特定缓存块的存取之前就使该缓存块行无效,于是产生可能的不确定状态。因此,期望实现这样的处理器,其使得操作系统、程序员以及/或者处理器能够控制、识别和无效所选择的高速缓存行,而不引起在多处理机环境中存在的定时和一致性问题。
技术实现思路
以上提出的问题主要依靠微处理器和微处理器执行方法来解决,所述微处理器和微处理器执行方法支持局部高速缓存块刷新指令,其中处理器的执行单元确定一个有效地址。处理器首先强制把针对指定高速缓存块的所有尚在进行中的访问提交给高速缓存子系统。如果被访问的高速缓存行在局部高速缓存(对应于执行指令的处理器的高速缓存子系统)中被修改,就把它写回主存储器。如果被访问的块在局部高速缓存中有效,就把它无效,但仅在局部高速缓存中无效。如果被访问的块在局部高速缓存是无效的,则不采取动作。经由系统接收到其它处理器发出的局部高速缓存块刷新指令的远端处理器忽略该指令。附图说明阅读下面的详细描述并参考附图将理解本专利技术的目的和优势,其中附图1是一个多处理器数据处理系统的所选部件的方框图;附图2A说明附图1中系统的高速缓存子系统在执行根据本专利技术的局部高速缓存管理指令之前的状态;附图2B说明附图2A中的高速缓存子系统在执行局部高速缓存管理指令之后的状态;附图3中的流程图说明依据本专利技术实施例管理高速缓存子系统的方法;附图4中的流程图表示一个支持附图3中所描绘的高速缓存管理指令的编译器。虽然很容易对本专利技术做出各种修改并且得到可选形式,然而附图中还是采用举例方法给出了具体实施例并详细说明。要知道,这里给出的附图和详细描述并不是要把本专利技术局限于所举出的特定实施例,恰恰相反,目的在于覆盖落入所附权利要求中阐述的本专利技术思路和范围之内的所有修改、等同和变型。具体实施例方式一般来说,本专利技术关注的是基于微处理器的数据处理系统,它支持高速缓存管理指令,用以在多处理器环境中刷新指定处理器的指定高速缓存行。指令执行时,确定其有效地址。如果所确定的有效地址“命中”局部处理器(执行该指令的处理器)的高速缓存中的一个缓存块,就启动局部高速缓存块刷新过程。如果该高速缓存块处于已修改状态,就把它写回主存储器。然后把该块局部无效,从而释放该高速缓存块的空间以供更适合于放入高速缓存的存储段使用。现在转向附图,附图1描述的是一个多处理器数据处理系统100的所选部件,这是一个将本专利技术用以实践的示范性设计。在所描述的实施例中,数据处理系统100包括一组4个处理器102A到102D(以下一般或整体地称之为处理器102)。从102A到102D的每个处理器都包括相应的处理器核心104A到104D(以下一般或整体地称之为核心104)和对应的局部高速缓冲存储器部件106A到106D(以下一般或整体地称之为局部缓存106)。在一个实施例中,每个核心104包括两个单独的、全功能的处理器,它们共用一个共同的局部高速缓冲存储器。在一个实施例中,每个局部缓存106包括三级高速缓冲存储器(L1、L2和L3),其中每全后面的级都比前面的级更大。例如,在IBM公司的POWER4处理器的一个示范实施例中,L1和L2缓存单元以及L3缓存的解码和目录电路都与处理器核心104集成到一个单独的芯片中,而实际的L3存储器则在外部。系统100的各个处理器102通过系统总线108通信。任何处理器所执行的存储器存取(加载和存储)均在主总线(HOST BUS)上产生保持一致性所需的事务(TRANSACTION)。例如,如果处理器102A写数据到存储器地址,必须把写事务通过主总线108发送,以便其它所有局部缓存106能够确定它们是否保留有相应于该存储器地址的缓存块的拷贝,如果有,它们就可以修改该块的拷贝。附图1中给出的系统100还包括一个主桥110,提供主总线110和系统存储器112之间的接口。系统的本文档来自技高网
...

【技术保护点】
一种通过多处理器环境中的微处理器执行指令的方法,包括:    由微处理器确定地址;    对确定与该地址对应的高速缓存块存在于该微处理器的局部高速缓冲存储器单元中作出响应;    使该高速缓存块在该局部高速缓冲存储器单元中无效;和    允许远端高速缓冲存储器单元中存在的对应于该地址的任何高速缓存块保持有效。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:约汉戴维迈卡尔宾巴拉兰辛哈罗伊德雷克爱德华威廉姆斯肯尼斯李赖特
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1