具有空悬(h)和最新(r)状态的高速缓存相关性协议的制作方法

文档序号:6416209阅读:163来源:国知局
专利名称:具有空悬(h)和最新(r)状态的高速缓存相关性协议的制作方法
技术领域
本发明总体涉及一种数据处理方法和系统,特别是一种在多处理器数据处理系统中保持高速缓存相关性的方法和系统。更具体来说,本发明涉及一种用于多处理器数据处理系统的高速缓存相关性协议,它包括一个最新(R)状态和一个空悬(H)状态,前者支持共享干预(shared intervention),后者允许当第二个高速缓存在连接第一个和第二个高速缓存的互连上独立地传输有效数据时,用该有效数据更新第一个高速缓存。
在常规的对称多处理器(SMP)数据处理系统中,所有处理器都基本相同,就是说,所有处理器都使用相同的指令集和通讯协议,都具有类似的硬件结构,一般都配备类似的分级存储器体系。例如,某常规SMP数据处理系统中可能含有一个系统存储器,多个处理单元—每个处理单元包括一个处理器和一级或多级高速缓存,以及一个将各处理单元互相连接并与系统存储器连接的系统总线。要获得SMP数据处理系统中的有效执行结果,重要的是保持一个相干的分级存储器体系,即对所有处理器提供单一内存内容视图。
要保持相干的分级存储器体系,就要选择使用某种存储相关性协议,例如MESI协议。在MESI协议中,至少所有高层次(高速缓冲)存储器的每个相关区组(coherency granule)(例如高速缓冲存储器行或区段)都相联地存储着一个表示相关性状态的指示项。各相关区组具有下述4种状态之一修改(M)、排他(E)、共享(S)、无效(I)。在高速缓存目录中用两个二进制位来表示状态。修改状态表示,相关区组只有存储在被修改相关区组的高速缓存中,并且修改相关区组的值尚未写入系统存储器时才是有效的。如果相关区组被指示处于排他状态,则该相关区组仅驻留在分级存储器体系中所有同一层次高速缓存中含有排他状态的相关区组的高速缓存中。不过,排他状态的数据是与系统存储器一致的。如果相关区组在高速缓存目录中被指示处于共享状态,则该相关区组驻留在相联高速缓存中,同时还驻留在分级存储器体系中至少另一个同一层次的高速缓存中,并且相关区组的所有拷贝都与系统存储器一致。最后一个是无效状态,它表示与相关区组相联的数据和地址标记都无效。
各相关区组(例如高速缓冲存储器行)被设置到何种状态,既依赖于高速缓冲存储器行的上一个状态,也依赖于请求处理器寻求的存储器访问的类型。因此,要保持多处理器数据处理系统中的存储相关性,就要求处理器在系统总线上传播表明其对存储单元读写意向的消息。例如,如果某处理器希望向某存储单元写数据,则处理器首先必须向所有其它处理单元通报其要向该存储单元写数据的意向,在收到所有其它处理单元的允许信息后,才能执行写操作。由请求处理器接收的允许消息,表示对该存储单元内容的所有其它高速缓存的拷贝都已经被无效,由此保证其它处理器不会访问过时的本地数据。这种消息交换称作交叉无效(XI)。
本发明认为,尽管高速缓存项目的交叉无效有助于保持SMP数据处理系统中的存储相关性,但是远程处理器对高速缓存项目的无效却会因为本地高速缓存命中率的降低,而对数据处理系统的效能产生负面影响。因此,即使配备了大容量的本地高速缓存,当某个处理单元检索曾经在本地高速缓存中驻留的、来自另一个处理单元中远程高速缓存或来自系统存储器的数据时,也可能会引起长时间的访问延滞。以上表明,需要提供某种方法和系统,它要能既保持SMP数据处理系统中的存储相关性,同时又减少由于高速缓存项目的交叉无效而对系统效能带来的损失。
本发明还认为,常规MESI协议并不支持有效地检索远程高速缓存中存储的数据。某些已知的多处理器数据处理系统支持所谓的修改干预(modified intervention),而修改干预允许存储着处于修改状态的数据的远程高速缓存响应读请求而提供修改数据(modified data)。尽管如此,MESI协议并没有规定当被请求数据处于共享状态时将数据提供到另一个处理单元的责任。因此,尽管被请求数据可以以相对短的访问延滞存储在多个远程处理单元中,但在常规多处理器数据处理系统中,共享数据总是必须从系统存储器检索。因此,需要提供一种支持共享干预的改进高速缓存相关性协议。
因此,本发明的一个目的是,提供一种改进的数据处理方法和系统。
本发明的另一个目的是,提供一种在多处理器数据处理系统中保持高速缓存相关性的方法和系统。
本发明的再一个目的是,提供一种用于多处理器数据处理系统的高速缓存的改进相关性协议,它包括一个最新(R)状态和一个空悬(H)状态,前者支持共享干预,后者允许当第二个高速缓存在连接第一个和第二个高速缓存的互连上独立地传输有效数据时,用该有效数据更新第一个高速缓存。
现在说明上述目的的实现方法。所提供的数据处理系统,包括多个处理器和多个与互连部件相连的高速缓存。根据本发明的方法,第一个数据项是与表示该第一数据项的一个地址标记关联存储在第一个高速缓存中的。第一个高速缓存中的相关性指示符被设置到第一状态,表示该地址标记有效,第一数据项无效。然后,窥探该互连部件,监测由多个高速缓存中另一个高速缓存启动的数据传输,其中该数据传输要与该地址标记表示的该地址关联,并且含有一个有效的第二数据项。在相关性指示符设置在第一状态期间,响应对这种数据传输的检测,将第二数据项与该地址标记关联存储在第一个高速缓存中,替换第一数据项,并且将相关性指示符更新到第二状态,表示该第二数据项有效,第一个高速缓存能够应请求提供第二数据项。
本发明的上述及其它目的、特点和优点显见于以下的详细说明中。
本说明书后附的权利要求中陈述了本发明特有的新颖特点。然而,欲透彻理解本发明本身以及它的一种优选使用方式及其进一步的目的和优点,则要参阅以下结合各附图对示例性实施例的说明。附图简介如下

图1表示按照本发明的多处理器数据处理系统的一个示例性实施例。
图2是表示按照本发明的高速缓存的一个示例性实施例的框图。
图3是表示本发明的HR-MESI高速缓存相关性协议的一个示例性实施例的状态图。
现在参见各附图,特别是图1,该图用高度抽象的框图表示了按照本发明的一个多处理器数据处理系统。如图所示,数据处理系统8中包括许多处理器10a~10n,每个处理器最好是IBM公司生产的PowerPCTM系列的某种处理器。除了常规寄存器、指令流逻辑和用来执行程序指令的执行单元之外,处理器10a~10n中每个处理器还包括一个相联的第一层次的(L1)机载高速缓存12a~12n,用于暂时存储相联处理器可能要访问的指令和数据。图1中将L1高速缓存12a~12n一律表示为既存储指令又存储数据(本文以后将指令和数据统称为数据)的高速缓存,不过本领域的熟练人员明白,L1高速缓存12a~12n的每个高速缓存也都可以选择用分开的指令高速缓存和数据高速缓存来实现。
为了尽量降低数据访问延滞,数据处理系统8还包括另外一层或多层高速缓存,例如第二层次的(L2)高速缓存14a~14n,用于分级传递数据到L1高速缓存。换言之,第二层次的(L2)高速缓存14a~14n起着系统存储器与L1高速缓存12a~12n之间中间存储器的作用,与L1高速缓存12a~12n相比,它一般能存储更多的数据量,但访问延滞的时间更长。例如,L2高速缓存14a~14n的存储容量为256或512KB,而L1高速缓存12a~12n的存储容量为64或128KB。处理器10a进一步由第三层次的(L3)后备高速缓存15a支持。后备高速缓存与L2高速缓存14a并联到互连部件16,存储容量最好等于或大于L2高速缓存14a。
如图所示,数据处理系统8进一步包括输入输出设备20、系统存储器18和非易失性存储器22,它们都与互连部件16相连。输入输出设备20包括有常规的外部设备,例如显示器、键盘和图形指针,它们都通过常规适配器而与互连部件16相连。非易失性存储器22存储着操作系统和其它软件,它们要随数据处理系统的通电而被写入易失性系统存储器18中。当然,本领域的熟练人员明白,数据处理系统8可以包含未在图1中表示的许多其它部件,例如用于连接网络或附属设备的串行与并行端口,控制对系统存储器18访问的存储控制器,等等。
互连部件16中含有一个或多个总线,或者一个交叉点开关,它作为一个管道,用于L2高速缓存14a~14n、L3高速缓存15a、系统存储器18、输入/输出设备20和非易失性存储器18之间的通讯事务。互连部件16上典型的通讯事务包括一个表示事务源的源标记、一个指定事务的接收者的目的地标记、以及地址和/或数据。与互连部件16相连的各设备最好都窥探在互连部件16上的所有通讯事务。
现在参见图2,该图是表示按照本发明的L2高速缓存14的一个示例性实施例的更详细的框图。在该示例性实施例中,L2高速缓存14是一个使用32位地址的8分路(way)组关联高速缓存。与此相应,L2高速缓存14的数据阵列34中包含许多同余类(congruence classes),每个同余类含有8个用于存储高速缓冲存储器行的分路。如常规的组关联高速缓存中的一样,利用存储单元地址内的变址位(例如32位地址中的20~26位),就能将系统存储器18的存储单元映射到数据阵列34内的特定同余类。
在数据阵列34中存储的高速缓冲存储器行被记录在高速缓存目录32中。对应数据阵列34中的每个分路,该目录都有一个目录项。每个目录项中包含标记域40、相关性状态域42、最近最少使用(LRU-least recently used)域44和蕴含域46。标记域40通过存入高速缓冲存储器行的系统存储器地址中的标记位(例如0~19位),载明哪个高速缓冲存储器行被存储在数据阵列34的对应分路中。相关性状态域42利用预定的位组合,来表示存储在数据阵列34的对应分路中的数据的相关性状态(下文将结合图3详细讨论)。LRU域44表示的是,数据阵列34的对应分路,相对于其同余类的其它分路,在最近什么时间被访问过,由此进而指示,当发生高速缓存失中(miss)时,应当将哪个高速缓冲存储器行从该同余类中抛弃。最后是蕴含域46,它表示在数据阵列34的对应分路中存储的高速缓冲存储器行,是否也存储在关联的L1高速缓存12中。
还是参见图2,L2高速缓存14进一步包括高速缓存控制器36,它管理着数据阵列34内部数据的存储和检索,以及根据从相关的L1高速缓存12接收的信号和在互连部件16上窥探到的事务,对高速缓存目录32进行更新。如图所示,高速缓存控制器36中含有一个读队列50和一个写队列52,高速缓存控制器32根据队列的内容,执行对高速缓存目录32的更新以及对数据阵列34的访问。例如,如果从关联的L1高速缓存12接收到一个读请求,高速缓存控制器36就将该读请求放置到读队列50内的一个单元上。高速缓存控制器36为该读请求所作的服务是,将所请求的数据提供给关联的L1高速缓存12,然后将该读请求从读队列50中删除。另一个例子是,高速缓存控制器36窥探到由L2高速缓存14a~14n中的另一个高速缓存启动的一个事务,这表明某远程处理器10打算修改其对某高速缓冲存储器行的本地拷贝的内容。当窥探到该事务时,高速缓存控制器36就在读队列50中放置一个要求读高速缓存目录32的请求,目的是确定该高速缓冲存储器行是否驻留在数据阵列34中。如果是,高速缓存控制器36就在互连部件16上放置一个适当的应答,必要的话,还在写队列52中插入一个目录写请求—如果目录写请求得到服务,就更新该高速缓冲存储器行相关的相关性状态域。尽管图2所示的实施例只使用了一个读队列和一个写队列,应当明白,高速缓存控制器36所采用的队列的数目只是一个设计选择问题,而且高速缓存控制器36还可以采用独立的队列分别用于对高速缓存目录的访问和对数据阵列的访问。
L3高速缓存15a与图2所示的L2高速缓存14的结构几乎相同,只有很少的例外。具体来说,如上所述,L3高速缓存15a的高速缓存控制器并不是通过高速缓存间连路与L2高速缓存14a相连,而是与L2高速缓存14a并联到互连部件16,使得L3高速缓存15a的高速缓存控制器能窥探到互连部件16上由L2高速缓存14a发出的所有事务。
参见图3。该图表示了根据本发明的HR-MESI高速缓存相关性协议的一个示例性实施例的状态图。所示HR-MESI协议,最好由分级存储器体系中最低层次的联机(in-line)高速缓存(例如L2高速缓存14a~14n)、以及稍作变化,由较低层次的后备高速缓存(例如L3高速缓存15a)来执行。较高层次的高速缓存最好执行诸如MESI协议、R-MESI协议之类的协议子集。本文的引证文献—美国专利申请系列号08/839,557描述了R-MESI协议。然而应当明白,数据处理系统8的另选方案的实施例中,可以以增加高速缓存间通信量为代价,在分级存储器体系中任何层次的高速缓存上执行HR-MESI协议。
如图3所示,HR-MESI高速缓存相关性协议包括MESI协议的4个常规状态修改(M)、排他(E)、共享(S)、无效(I),图中分别用引用号80、82、84、86表示。此外,本发明的HR-MESI高速缓存相关性协议还包括空悬(H)状态90和R状态92。空悬状态表示,在关联的标记域40中存储的地址标记是有效的,但是在数据阵列34的对应分路中存储的数据项(例如高速缓冲存储器行或高速缓存区段)却是无效的。R状态表示,在存储某数据项的拷贝的多个高速缓存中,哪个高速缓存在离当前最近的时间通过互连部件16上的某个事务接收了该共享数据项。
在一个最佳实施例中,在系统通电时,各L2高速缓存目录32的各目录项的相关性状态域42被初始化到I状态86,表示标记域40以及在数据阵列34的对应分路中存储的数据项均为无效。与此类似,L1和L3高速缓存的目录项的初始化状态也是无效状态。然后,在L2高速缓存14a~14n的其中之一、或在处于无效状态86的L3高速缓存15a中存储的高速缓冲存储器行(或高速缓存区段)的相关性状态,可以被更新到M状态80、E状态82或R状态92的其中某一个状态,具体状态取决于处理器10a~10n提出的存储器请求的类型以及分级存储器体系对这些请求的响应。
例如,如果处理器10a根据某个加载指令而提出读请求,L1高速缓存12a首先判断被请求数据是否驻留在L1高速缓存12a。如果在L1高速缓存12a中命中该数据,L1高速缓存12a就将该被请求数据提供给处理器10a。然而,如果在L1高速缓存12a中没有命中该数据,L1高速缓存12a就通过高速缓存间连路,将该读请求传递到L2高速缓存14a。如果在L2高速缓存14a中命中该数据,L2高速缓存14a就将该被请求数据提供给L1高速缓存12a,后者将该被请求数据结合适当的相关性状态存储起来,并将该被请求数据传递到处理器10a。
然而,如果该读请求在L1高速缓存12a和L2高速缓存14a中都没有命中,则L2高速缓存14a的高速缓存控制器36就将读请求作为一个事务传送到互连部件16上,L2高速缓存14b~14n及L3高速缓存1 5a都能窥探到该事务。根据对互连部件16上的该读请求的窥探,L2高速缓存14b~14n中每个的高速缓存控制器36就要判断,被请求数据是驻留在其数据阵列34中还是驻留在L1高速缓存12b~12n中一个关联的高速缓存中。L3高速缓存15a的高速缓存控制器36类似地判断读请求是否在L3高速缓存目录中命中。如果L2高速缓存14b~14n、L1高速缓存12b~12n及L3高速缓存15a都没有存储被请求数据,则L2高速缓存14b~14n及L3高速缓存15a每个都返回一个空应答(null response)给L2高速缓存14a,后者然后就向系统存储器18请求该数据。当被请求数据从系统存储器18返回到L2高速缓存14a,高速缓存控制器36就将被请求数据传递到L1高速缓存12a,在其数据阵列34中存储该请求数据,将与存储被请求数据的分路相关的相关性状态域42从I状态86更新为E状态82—如引用号100所示。如常规的MESI协议一样,E状态82表示相关的高速缓冲存储器行有效,并且不驻留在分级存储器体系中第二层次的任何其它高速缓存中。L3高速缓存15a类似地将被请求数据以E状态82储存起来。
如果由处理器10a请求的数据没有驻留在L1高速缓存12a、L2高速缓存14a、或L3高速缓存15a中,但却存储在例如L1高速缓存12n中,处于M状态80,则L2高速缓存14n的高速缓存控制器36根据读请求产生一个修改应答,指示L1高速缓存12n将该被请求数据压入L2高速缓存14n。以后,L2高速缓存14n将在互连部件16上提供该被请求数据。根据读请求,L1高速缓存12n和L2高速缓存14n中的被请求数据的相关性状态被更新为S状态84—如引用号102所示。根据本发明,L2高速缓存14a中存储被请求数据的分路的相关性状态从I状态86转换到R状态92—如引用号104所示。如上所述,R状态92表示,其关联的数据是最晚被L2高速缓存14a引用的,如果窥探到互连部件16上有对该数据的请求,则L2高速缓存14a要提供该数据。当L3高速缓存15a窥探到该被请求数据从系统存储器18返回时,L3高速缓存15a提取被请求数据,将其以S状态84存储起来。图中引用号105所示的I状态86与S状态84之间转换是用虚线表示的,虚线表示这种转换仅适用于L3高速缓存15a。本领域的熟练人员由以上的例子会明白,在不支持修改干预的其它选择方案的本发明实施例中也能作同样的状态转换,然而,在这些其它选择方案的实施例中,被请求数据是从系统存储器18获得的,其代价是增加了访问延滞。
L2高速缓存14a在收到因其读请求而产生的共享干预应答或共享应答时,类似地进行一次由I状态86到R状态92的转换。如果L2高速缓存14b~14n之一,例如L2高速缓存14n存储着R状态92或者E状态82的被请求数据,则L2高速缓存14a会收到一个共享干预应答(以及被请求数据)。根据读请求,L2高速缓存14n的高速缓存控制器36将其对被请求数据的拷贝的相关性状态由R状态92更新到S状态84—如引用号106所示。如果L2高速缓存14b~14n都没有存储着R状态92的被请求数据,但至少有一个存储着S状态84的被请求数据,则存储着S状态84的被请求数据的L2高速缓存14用一个共享应答来响应该读请求,将其对被请求数据的拷贝保留在S状态84。如果只收到一个共享应答,L2高速缓存14a就从系统存储器18检索被请求数据,并将被请求数据以R状态92存储起来。在这两种情况,L3高速缓存15a采样被请求数据,并将其以S状态84存储。
如果L2高速缓存14a在互连部件16上发出一个“意欲修改的读”请求,表示处理器10a需要排他使用某存储单元,目的是对其修改,如上所述,该请求数据可以从L3高速缓存15a、某个远程L2高速缓存14或者系统存储器18获得。然而当被请求高速缓冲存储器行被获得时,L1高速缓存12a和L2高速缓存14a以M状态将被请求高速缓冲存储器行存储起来一如引用号107所示。此外,由于“意欲修改的读”请求事务指出,其它对被请求高速缓冲存储器行的拷贝将变得过时无用,所以L3高速缓存15a和远程L1和L2高速缓存必须指示,它们对被请求高速缓冲存储器行的拷贝是无效的。在L1高速缓存12b~12n中,所有对被请求高速缓冲存储器行的拷贝都被简单地标记为无效。然而,在L3高速缓存15a和L2高速缓存14b~14n中存储的对被请求高速缓冲存储器行的拷贝的相关性状态,却不像在使用交叉无效(XI)的常规多处理器数据处理系统中的那样被更新到I状态86。相反,根据本发明的一个重要方面,存储着对被请求高速缓冲存储器行的拷贝的L3高速缓存15a和L2高速缓存14b~14n中的各高速缓存,要将与其拷贝关联的相关性状态域42,从R状态92、S状态84、M状态80或E状态82中的任何状态更新到H状态90—分别如引用号108、110、112、114所示。如上所述,H状态90表示,标记域40中的标记保持有效,而数据阵列34内关联的高速缓冲存储器行是无效的。L2和L3高速缓存目录中的目录项,根据窥探到的其它要求使数据无效的事务—包括删除(即明确地无效掉特定数据块的事务)、清仓(即无效掉特定数据块并将修改数据拷贝到系统存储器的事务)和放弃(即响应某个因存储而被修改的本地高速缓冲存储器行的拷贝,无效掉各远程高速缓存中标记为共享的该高速缓冲存储器行的拷贝的事务),也类似地被更新到H状态90。
如引用号116和118所示,高速缓存目录项根据高速缓存接收的事务的类型,可以由H状态90分别转换到E状态82或M状态80。例如,处于H状态90的L2高速缓存14a的某目录项,在提出读请求的处理器10a(在L1高速缓存12a和L2高速缓存14a中都没有命中后)收到L3高速缓存15a和L2高速缓存14b~14n发来的空应答时,转换到E状态82。E状态82表示,从系统存储器18检索的数据,将只被存储到L2高速缓存14a~14n中的L2高速缓存14a中。另一方面,如果处理器10a提出意愿,要向L1高速缓存12a的某个处于H状态90的分路存储数据,则L1高速缓存12a向L2高速缓存14a指出该意愿,后者然后在互连部件16上发出一个“意欲修改的读”事务。如上所述,当窥探到“意欲修改的读”事务时,在L3高速缓存15a和L2高速缓存14b~14n中存储的被请求高速缓冲存储器行的拷贝被更新到H状态90,在L1高速缓存12b~12n中存储的被请求高速缓冲存储器行的拷贝被标记为无效。一旦获得被请求高速缓冲存储器行,L2高速缓存14a和L1高速缓存12a中的该高速缓冲存储器行的相关性状态就被设置到M状态80,表示该高速缓冲存储器行有效,但与系统存储器18不相干。
H状态90的高速缓存目录项也可以被更新到S状态84—如引用号120所示。如上所述,L2高速缓存14a~14n每个都能窥探一切在互连部件16上发出的事务。如果L2高速缓存14a~14n其中之一,例如L2高速缓存14a,窥探到由L2高速缓存14b~14n中的另一个发出的事务含有L2高速缓存14a存储的H状态90的数据的更新(即有效)拷贝,则L2高速缓存14a的高速缓存控制器36从互连部件16提取该数据,将该窥探数据存储到数据阵列34,并将其关联的相关性状态域42由H状态90更新到S状态84。这样,本发明允许将高速缓存目录项,在相关的处理器10没有提出数据请求、或高速缓存没有在互连部件16上启动事务的情况下,由H状态90更新到S状态84。当然,在上述情形中,如果需要应答来保持相关性,则L2高速缓存14a也向被窥探的事务提供应答。例如,如果被窥探的事务是个读请求,则L2高速缓存14a必须提供一个共享应答,表示其要提取被请求数据的意愿,使得提出请求的L2高速缓存以R状态92而不是E状态82存储被请求数据。能按这种方式窥探、以刷新与某有效地址标记关联的无效数据的互连部件16上的事务包括读事务、写事务、因高速缓冲存储器行的丢弃而向系统存储器18的数据回写,等等。
H状态90的高速缓存目录项,也可以根据许多不同的请求/响应情况,被更新到R状态92。例如,如果处理器10a提出的读请求在L1高速缓存12a中没有命中,导致在L2高速缓存14a命中一个标记,并且如果该匹配标记相关的相关性状态域42处于H状态90,则L2高速缓存14a的高速缓存控制器36在互连部件16上发出一个读事务。如果从L3高速缓存15a和L2高速缓存14b~14n收到对该读事务的共享干预应答、共享应答或修改应答,则L2高速缓存14a的高速缓存控制器36将被请求数据相关的相关性状态域42由H状态90更新到R状态92—如引用号122所示。
更重要的是,H状态90的高速缓存目录项,在相关的处理器没有请求数据的情况下,也能被更新到R状态92。例如,在由处理器10a提出“意欲修改的读”请求后,L1高速缓存12a和L2高速缓存14a以M状态80存储被请求数据,同时将该高速缓冲存储器行在L3高速缓存15a和L2高速缓存14b~14n中的拷贝的相关性状态设置到H状态90。如果例如因为读漏失(read miss),随后从L2高速缓存14a选择被请求数据作为替代,则L2高速缓存14a的高速缓存控制器36在互连部件16上发出一个写事务,以便将被请求数据存储到系统存储器18。当L3高速缓存15a的高速缓存控制器36窥探到这个写事务时,就提取数据,将数据存储到它的L3数据阵列,并将相关的相关性状态域由H状态90更新到R状态92,这样,L3高速缓存15a以后就能在收到读或“意欲修改的读”请求时作为数据源来提供该数据。
下面的表Ⅰ,总结了图3所示的HR-MESI高速缓存相关性协议的示例性实施例中所能进行的状态转换。
表Ⅰ
如上所述,本发明提供一种用于保持多处理器数据处理系统中高速缓存相关性的改进方法和装置。本发明提供的改进高速缓存相关性协议能在本地处理器不明确发出读或写请求的情况下,将与有效地址标记关联存储在某高速缓存中的无效数据项自动更新为有效数据项。以这种方式,因远程处理器的操作而无效的数据能在本地处理器访问之前被刷新,由此实质性地减少数据访问延滞,这是因为不需要从远程高速缓存或系统存储器中检索数据。实质性地减少数据访问延滞的另一个原因是,本发明的高速缓存相关性协议支持共享干预,即不从系统存储器而是从远程高速缓存提供共享状态下存储的数据。
以上结合示例性实施例具体地表示和叙述了本发明,然而本领域的熟练人员明白,在不偏离本发明的实质和范围的前提下,对实施例的形式和内容可以有各种改变。例如,可以修改图3所示的高速缓存相关性协议,删除其中的I状态86,因为该状态仅仅用于在通电时初始化目录项,其它状态永远不会转换到这个状态。如果将I状态86删除,在通电时各L2目录项的相关性状态域就被初始化为H状态90,各L2目录项的标记域就被初始化成一个至少在同一同余类中是唯一的标记值。
权利要求
1.一种保持数据处理系统中高速缓存相关性的方法,其中的数据处理系统包括多个连接着一个互连部件上的高速缓存和多个处理器,该方法的特征在于包含将第一数据项与表示其地址的某地址标记关联存储在多个高速缓存中的第一个高速缓存中;将第一个高速缓存中的某相关性指示符设置到第一状态,第一状态表示第一个高速缓存中该地址标记有效,该第一数据项无效;然后,窥探检测互连部件上与地址标记指示的地址关联的数据传输,其中该数据传输是由多个高速缓存中的另一个高速缓存启动的,并且包括有第二个数据项;在相关性指示符设置在第一状态期间,如果检测到互连部件上与地址标记指示的地址关联的数据传输,则,将第二数据项与该地址标记关联存储在第一个高速缓存中,并且,更新相关性指示符到第二状态,表示该第二数据项有效,并且第一个高速缓存能够应请求提供第二数据项。
2.权利要求1的方法,其特征在于,将相关性指示符更新到第二状态的步骤包含,将相关性指示符更新到表示第二数据项既存储在第一个高速缓存、又存储在多个高速缓存中另一个高速缓存的第二状态的步骤。
3.权利要求1的方法,其特征在于,将相关性指示符设置到第一状态的步骤包含,当多个高速缓存其中之一表示要向地址标记表示的地址存储的意愿时,将相关性指示符设置到第一状态的步骤。
4.权利要求1的方法,其特征在于,进一步包含以下步骤在相关性指示符设置在第二状态期间,当在第一个高速缓存通过互连部件而收到要求第二数据项的请求时,将第二数据项放到互连部件上。
5.权利要求1的方法,其特征在于,第一个高速缓存与多个处理器中的某特定处理器关联,并且窥探检测互连部件上与地址标记指示的地址关联的数据传输的步骤包含,窥探检测由与该特定处理器关联的某更高层次高速缓存发出的数据传输的步骤。
6.一种用于支持包括多个连接在一个互连部件上的高速缓存和多个处理器的数据处理系统中的高速缓存相关性的高速缓存,该高速缓存包含数据存储器;存储表示数据存储器中保存的第一数据项的地址的地址标记的标记存储器;一个至少有第一和第二状态的相关性指示符,其中第一状态表示地址标记有效而第一数据项无效;窥探所述互连部件以检测在其上与所述地址标记指示的地址关联的数据传输的装置,所述数据传输由所述多个高速缓存中的另一个启动,并包括一个第二数据项;以及在相关性指示符设置在第一状态期间,当检测到互连部件上与地址标记指示的地址关联的数据传输时,(1)将第二数据项与该地址标记关联存储在数据存储器中,并且,(2)将相关性指示符更新到第二状态,表示该第二数据项有效,并且第一个高速缓存能够应请求提供第二数据项的装置。
7.权利要求6的高速缓存,其特征在于,将相关性指示符更新到第二状态的装置包含,将该相关性指示符更新到表示第二数据项既存储在第一高速缓存又存储在多个高速缓存中另一个高速缓存的第二状态的装置。
8.权利要求6的高速缓存,其特征在于,进一步包含,当多个处理器其中之一表示要向地址标记表示的地址存储的意愿时,将相关性指示符设置到第一状态的装置。
9.权利要求6的高速缓存,其特征在于,进一步包含,在相关性指示符设置在第二状态期间,当在第一个高速缓存通过互连部件而收到要求第二数据项的请求时,将第二数据项放到互连部件上的装置。
10.权利要求6的高速缓存,其特征在于,高速缓存与多个处理器中的某特定处理器关联,并且窥探检测互连部件上与地址标记指示的地址关联的数据传输的装置包含,窥探检测由与该特定处理器关联的某更高层次高速缓存发出的数据传输的装置。
11.权利要求6的高速缓存,其特征在于,高速缓存以后备配置方式与互连部件相连。
12.一个数据处理系统,包括一个互连部件;多个连接在所述互连部件上的处理器;多个高速缓存,其每一个均与多个处理器中的一个处理器关联,其中所述多个高速缓存中的第一个高速缓存包括数据存储器;存储表示在所述数据存储器中包含的一个第一数据项的地址的一个地址标记的标记存储器;一个具有至少第一和第二状态的相关性指示符,其中第一状态表示,地址标记有效,而第一数据项无效;窥探所述互连部件、检测在该互连部件上与由地址标记表示的地址关联的数据传输的装置,所述数据传输由多个高速缓存中的另一个启动,并包括一个第二数据项;在相关性指示符设置在第一状态期间,当检测到互连部件上与由地址标记表示的地址关联的数据传输时,用于(1)将第二数据项与地址标记关联存储在数据存储器中,以及用于(2)更新相关性指示符为第二状态的装置,该第二状态表示,第二数据项有效并且第一高速缓存能响应请求提供第二数据项。
13.权利要求12的数据处理系统,其特征在于,更新相关性指示符为第二状态的装置包括更新相关性指示符为表示第二数据项既存储在第一高速缓存,也存储在多个高速缓存中另一个高速缓存中的第二状态的装置。
14.权利要求12的数据处理系统,其特征在于,进一步包括当多个处理器中一个处理器表示要向地址标记表示的地址存储时,设定相关性指示符为第一状态的装置。
15.权利要求12的数据处理系统,其特征在于进一步包括,在相关性指示符设定为第二状态期间,第一高速缓存通过所述互连部件接收到要求第二数据项的请求时,把第二数据项放在所述互连部件上的装置。
16.权利要求12的数据处理系统,其特征在于,第一高速缓存与多个处理器中某特定处理器关联,所述窥探检测在互连部件上与地址标记表示的地址关联的数据传输的装置包括窥探检测由一个与该特定处理器关联的较高层次高速缓存发出的数据传输的装置。
17.权利要求12的数据处理系统,其特征在于,第一高速缓存以后备配置方式连接在互连部件上。
全文摘要
本文介绍一种保持数据处理系统中高速缓存相关性的高速缓存和方法。根据本发明的方法,第一个高速缓存的第一个数据项是与表示其地址的一个地址标记关联存储的。第一个高速缓存的相关性指示符被设置到第一状态。然后,窥探互连部件,监测由多个高速缓存中另一个高速缓存启动的数据传输。如果在相关性指示符设置在第一状态期间,检测到这种数据传输,则将第二数据项与该地址标记关联存储在第一个高速缓存中,并且将相关性指示符设置到第二状态。
文档编号G06F12/08GK1226706SQ9910130
公开日1999年8月25日 申请日期1999年1月15日 优先权日1998年2月17日
发明者R·K·阿里米里, J·S·多德森, J·D·刘易斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1