首页> 中国专利> 多处理机数据处理系统中同级到同级的超高速缓存移动

多处理机数据处理系统中同级到同级的超高速缓存移动

摘要

一种多处理机玻璃下使用的超高速缓存系统。第一处理机利用第一层1超高速缓存访问数据,而第二处理机利用第二层1超高速缓存访问数据。在第一、第二层1超高速缓存、层2超高速缓存和主存储器之间设置一个存储控制电路。层2超高速缓存保持主存储中的数据的拷贝并且还保持那些具有数据的拷贝的层1超高速缓存的指示以及这些拷贝是否被修改过的指示。该高速缓存系统改进了由多个处理机重复地写同一数据的操作。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-03-24

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2004-03-17

    授权

    授权

  • 2000-09-20

    公开

    公开

  • 2000-08-23

    实质审查请求的生效

    实质审查请求的生效

说明书

本发明涉及改进超高速缓存性能下的超高速缓冲存储器系统的管理。

在数据处理系统中,从存储器向一个或多个处理机传送指令以及相关的数据以供处理,并且接着把处理机生成的结果数据回送给存储器以供存储。从而,典型的处理操作涉及到对存储器频繁的和反复的读和写。因此,存储器存取延迟常常是数据处理系统性能上的主要限制。从而,为使性能最佳,最好使存储器存取速度最大。然而,成本以及其它限制常常要求主存储器是用存取时间相对长的电路构成的。为了克服所带来的性能不足,典型地采用存储器超高速缓存。

超高速缓存典型地包括相对小但速度高的存储区,和主存储器相比处理机对它的访问更快。在超高速缓存中重复主存储器中的一些存储单元。当在超高速缓存中复制正由处理机访问的特定存储单元(即所谓的超高速缓存“命中”事件)时,处理机可快速地访问超高速缓存而不是等待访问主存储器。超高速缓存的管理目标是使在超高速缓存中命中的访问份额为最大。

通常把超高速缓存组织成多个“行”,行是主存储器中的相对长的一序列存储单元。典型地当在超高速缓存中未复制处理机所访问的存储单元时(即所谓的超高速缓存“未命中”事件),把包含该未命中的存储单元及其邻近存储单元的一条整行作为从其它超高速缓存或主存储器的检索部分放在该超高速缓存中,此即所谓的对超高速缓存的“填行”事件。

每个超高速缓存行通常和主存储器中的多个单元的组相关。每个超高速缓存行存储相关的多个存储器单元组的拷贝,并且存储当前在该行中存储哪些存储器单元组的指示。从而,当处理机请求访问某特定存储器单元时,访问和该存储器单元对应的超高速缓存行以判定该超高速缓存行是否存储包括该被请求单元的存储器单元组。若是,则访问超高速缓存中的被请求存储器单元。若不是,把包含该被请求单元的一组存储器单元按行填入到超高速缓存中。

通常n路相联的超高速缓存每次把和某超高速缓存行对应的数组单元的n组存储到超高速缓存中。当把一组存储器单元填行到超高速缓存中时,可能需要更换相同的超高速缓存单元中的存储器内容。若被更换的超高速缓存线的内容被修改,必须把该行存回到主存储器中的一组对单单元里,即所谓的从超高速缓存的“注回”或“回写”事件。

在高性能数据处理系统中,通常存在二个或更多的超高速缓存,并组织成首先通常尝试在“层1”或L1超高速缓存中定位某存储器单元的复制使处理机尝试访问某存储器单元。若L1超高速缓存里未命中,则尝试在“层2”或L2超高速缓存里定位所需存储器单元的复制。若未在L2超高速缓存里命中,以相同的方式顺序地检查每个较低的层。若在超高速缓存之一里命中,则从该超高速缓存得到所需的存储器单元,并且通常把被访问的存储器单元以及构成一条超高速缓存行的邻近单元一起至少复制到L1超高速缓存的适当位置处,尽管在某些情况下访问可能是“超高速缓存禁止的,在这种情况下检索后不把数据存储到L1超高速缓存中。若在所有的超高速缓存中都未命中,则从主存储器检索该未命中的单元以及构成一完整超高速缓存行的邻近单元,并且若该访问不是超高速缓存禁止的则把该行填到一个或多个超高速缓存中。类似地,若从某超高速缓存注回某行,可能把该行写到较高层的超高速缓存、主存储器、或者二者中。

通常利用缓冲器把指令以及数据的行从超高速缓存和从处理机传送到其它的超高速缓存和处理机。例如,在一种体系结构中二个缓冲器分别和层1超高速缓存和层2超高速缓存连接。这些缓冲器还通过系统总线和主存储器、主处理机以及可能和其它处理机连接。缓冲器允许在具有不同传送率的部件之间平滑地传送指令和数据。

在多处理机系统中,常常由多个处理机共享一个或多个较低层的超高速缓存或主存储器。在这样的环境下,当某处理机修改数据时,必须注意在别的处理机访问该数据之前把修改送回到共享的超高速缓存或存储器,从而使处理机不会对尚未更新的数据执行操作。在这样的环境,通常在处理机可以修改数据之前,它必须请求拥有该数据。一旦赋予某处理机对该数据的拥有权,该处理机排它地访问该数据,并且在该数据回写到共享超高速缓存或存储器之前禁止其它处理机访问或修改该数据。若第一处理机企图访问由第二处理机排它地持有的数据,第一处理机请求对该数据的拥有权;其后果是,强制第二处理机把该数据回写到共享的超高速缓存或存储器,然后把该数据发送给第一处理机。

在一些特殊情况下这种典型结构会导致低效率,例如两个处理机同时写同一数据。在这种情况下,第一处理机将得到该数据的拥有权以写该数据。接着,第二处理机请求拥有权以写该数据,强制第一处理机把该数据回写到共享超高速缓存或存储器,从而可在排它状态下把该数据发送给第二处理机。接着第一处理机请求拥有权以写该数据,强制第二处理机把该数据回写到共享超高速缓存或存储器,从而可在排它状态下把该数据发送给第一处理机。只要二个处理机试图写数据将会反复这种交换,导致对共享超高速缓存或存储器的多余回写并降低性能。

从而,需要一种以改善其性能的方式下管理的超高速缓存,尤其是在多处理机环境下。

依所本发明的原理,在具有第一和第二处理机的多处理机环境下采用一种超高速缓存系统。第一处理机利用第一超高速缓存以及共享的低层存储访问数据,而第二处理机利用第二超高速缓存和共享的低层存储访问数据。在第一、第二超高速缓存和低层存储之间设置一个存储控制电路。当第一或第二处理机访问未驻留在各自的第一或第二超高速缓存中的数据时,向存储控制电路发出对该数据的请求。为了改进第一和第二处理机反复地写同一数据的现象,当存储控制电路接收对来自第一超高速缓存的数据的请求并且该数据已被第二处理机修改并以修改形式存储在第二超高速缓存中时,存储控制电路使第二超高速缓存在不把该数据回送给共享的低层存储下把修改后的数据发送到第一超高速缓存。

在后面说明的特定实施例中,共享低层存储系统包括与作为层1超高速缓存的第一和第二超高速缓存相比为更低层的或层2超高速缓存。层2超高速缓存保持主存储中数据的拷贝并且还保持层1超高速缓存所具有的数据拷贝的指示以及那些拷贝是否已被修改的指示,当存储控制电路接收对来自层1超高速缓存的数据的请求时,把该请求发送到层2超高速缓存,后者判定另一个层1超高速缓存是否正存储着该数据的修改拷贝,若是则层2超高速缓存向存储控制电路回送指向具有该数据的修改拷贝的层1超高速缓存的指针。

层2超高速缓存在一个队列里按从最近最不使用到最新使用的次序保持数据。当通过返回指向另一个层1超高速缓存的指针而满足对来自层1超高速缓存数据的请求时,更新层2队列以把层2超高速缓存中该数据的拷贝标识成是最新使用的。

每个层1超高速缓存中保持层1超高速缓存中约数据是否是共享的或被修改的指示。若企图写共享的数据,在写该数据之前向层2超高速缓存发送对拥有权的请求。层2超高速缓存中保持层2超高速缓存中的数据是否是共享的、排它的或被修改的指示。当层1超高速缓存做出对某数据的拥有权请求时,如层2超高速缓存中的该数据被标识成为共享的,则在把拥有权授予层1超高速缓存之前层2超高速缓存请求来自系统总线的该数据的拥有权。此外,作为向层1超高速缓存授予对数据的拥有权的一部分,以及作为对带有修改意图的读的响应向层1超高速缓存发送数据的一部分,层2超高速缓存指示所有具有该数据的拷贝的层1超高速缓存清仓该数据。层2超高速缓存还响应带有修改意图的读把数据标记成被修改的,一旦向层1超高速缓存授予拥有权或者已对其发送该数据,把该数据标记成被修改的。

当层2超高速缓存因老化去掉数据或者因去掉对其处理机集合体的拥有权而去掉数据时,层2超高速缓存指示任何具有该数据的未修改拷贝的层1超高速缓存对该层1超高速缓存清仓该数据,或者指示具有该数据的修改拷贝的层1超高速缓存把修改数据回写到主存储并且对该层1超高速缓存清仓该数据。当层2超高速缓存从另一个处理机复合体接收读数据的请求时,该层2超高速缓存指示任一具有该数据的修改拷贝的层1超高速缓存向主存储以及向层2超高速缓存回写该数据,并且把该数据标记成为共享的。

在本文中后附的并且构成本文的另一部分的权利要求书中叙述表征本发明的这些以及其它的特性和优点。然而,为了更好地理解本发明以及更好地理解通过本发明的使用获得的好处及目的,应参照各附图以及相随的说明材料,其中本发明的示范实施例得到说明。

图1是在访问主存储器中实现本发明的原理的系统处理部件的方块图,其包括处理机和超高速缓存系统、主存储器以及外围部件;

图2是依据本发明的原理的和超高速缓存系统一起使用的单线程和多线程的处理机的方块图;

图3是图2中示出的L2超高速缓存的内容的框图;

图4是图2中示出的L1超高速缓存的内容的框图;

图5A是图2中示出的L1超高速缓存响应接收到来自相关处理机的读操作而执行的操作的流程图;

图5B是图2中示出的L1超高速缓存响应接收到来自相关处理机的写操作而执行的操作的流程图;

图5C是图2中示出的L1超高速缓存响应从更低层存储部件接收到的共享回写、清仓回写或清仓命令而执行的操作的流程图;

图5D是图2中示出的L1超高速缓存执行的向L1超高速缓存增添一个超高速缓存行(CL)以存储新数据的操作的流程图;

图6A是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的读请求或带有修改意图的读请求的响应部分的操作的流程图;

图6B是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L2超高速缓存接收到的清仓回写命令或共享回写命令的响应部分的操作的流程图;

图6C是由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的老化回注(castback)的响应部分的操作的流程图;

图6D是可由图2中示出的存储控制单元中的过渡超高速缓存(超高速缓存缓冲器)执行的作为对从L1超高速缓存接收到的不再存在的注回的响应部分的供选用操作的流程图;

图7A是由图2中示出的L2超高速缓存执行的作为对来自过渡超高速缓存(超高速缓存缓冲器)的读请求或者带有修改意图的读请求的响应部分的操作的流程图;

图7B是由图2中示出的L2超高速缓存执行的作为对来自L1超高速缓存的拥有权请求的响应部分的操作的流程图;

图7C是由图2中示出的L2超高速缓存执行的作为对从过渡超高速缓存(超高速缓存缓冲器)接收的共享回写命令、老化回注命令、供选用的不再存在的回注命令和清仓回写命令的响应部分的操作的流程图;

图7D是由图2中示出的L2超高速缓存执行的作为向L2超高速缓存增添新数据的超高速缓存行(CL)的操作的流程图;

图7E是由图2中示出的L2超高速缓存执行的作为对在系统总线上接收来自另一个L2超高速缓存的拥有权请求的响应部分的操作的流程图;

图7F是由图2中示出的L2超高速缓存执行的作为对在系统总线检测到的来自另一个L2超高速缓存的读请求或带有修改意图的读请求的响应部分的操作的流程图。

如在图1中所见,采用本发明的原理的典型计算机系统由系统处理部件10(其包括一个或多个系统处理机)和超高速缓存系统12、主存储单元14、包括着用于把光纤电缆引线连接到输入/输出扩充单元的模块的本地总线插卡16、带有存储部件18′的存储控制器18以及带有工作站20′的工作站控制器20构成。

图2示出依据本发明的原理的处理机和超高速缓存系统12。依据后面更详细说明的本发明的原理,在第一处理机复合体32内,存储控制单元22以提高存储器性能的方式管理由处理机使用的数据。

计算机系统的每个处理机24和L1超高速缓存以及控制电路28交互以便得到和存储所需的数据。每个L1超高速缓存28存储相对少的,例如512到1024的超高速缓存行。每个超高速缓存行存储主存储14中的一组相继的存储器单元的拷贝,例如128个相继存储器单元的拷贝。主存储14中的每个地址唯一地和L1超高速缓存中的一个行相关;从地址位组中的子集可以确定特定地址L1超高速缓存28中的相关行。通过该同一的相关,L1超高速缓存28中的每个超高速缓存行和几组可存储到该超高速缓存行的相继地址相关。任何时刻,L1超高速缓存28中超高速缓存行可以存储少量的,例如和该超高速缓存行相关的地址范围内的二个,相继存储器单元的拷贝。

每个L1超高速缓存28包括一个目录,该目录标识哪些相继的存储器单元正存储在该L1超高速缓存28中。具体地,该L1超高速缓存目录为主存储14中其拷贝当前驻留在L1超高速缓存28中的某行里的存储器单元的地址范围存储指示。如上面所提到,主存储14中的多个不同的相继存储器单元组可映射到L1超高速缓存28中的同一个行;从而,该L1超高速缓存目录标识多个主存储14中的不同存储器单元组的哪一组驻留在L1超高速缓存28中。

L1超高速缓存28和存储控制单元22交互以得到执行计算机程序的数据和指令。当处理机24a和24b分别通过L1超高速缓存及控制电路28a和28b访问某存储器单元时,若该L1超高速缓存及控制电路未存储该所需的数据,则把该访问请求发送到存储控制单元22。利用后面说明的电路和功能,存储控制单元22作出响应,得到被请求的数据并把该数据发送到请求的L1超高速缓存L1及控制电路28a或28b。

实现本发明的原理的存储控制单元22利用包括着超高速缓存、缓冲器、主存储器的各种存储部件控制从/至处理机24a、24b以及L1超高速缓存28a、28b的数据输入输出。存储控制单元22还管理对处理机24a、24b的指令的发送及输入。

如图2中所示,存储控制单元22和主存储14交互。主存储14典型地包括容量相对大的中等速度的存储器,例如一个或多个DRAM芯片。主存储14实现分页存储器管理方式;具体地,该中等速度的存储器存储换出海量存储器的一部分(见图1的18′)的多个存储器单位页,以加快更迅速地访问这些存储器单元。

主存储14中的每个存储单元和一个地址相关,该地址唯一地标识主存储14中所有存储器单元中的该存储器单元。为了访问某存储器单元,向主存储14发送一个地址,并且作为响应,主存储14发送该被确定的存储器单元的内容。作为这种访问的一部分,向系统总线23提供该访问的说明,其中包括地址和访问类型。这样,当别的处理机复合体访问主存储14时,存储控制单元22可监视系统总线23以便识别访问类型并且采取适当的如后面说明的行为。

为了对频繁使用的存储单元提供高速访问,存储控制单元还和层2或L2超高速缓存26交互。L2超高速缓存26类似于L1超高速缓存28。L2超高速缓存26中的每行和若干相继的存储器地址组相关,每次可把其中的一些组存储到相关的L2超高速缓存行中。此外,L2超高速缓存还和L2超高速缓存目录相关。L2超高速缓存目录中的每个条目标识L2超高速缓存26中存储的存储器单元的地址范围。为了确定所需的地址是否驻留在L2超高速缓存26中,利用地址中的选定位组选择L2超高速缓存目录中一个唯一相关的条目,然后把该选出的L2超高速缓存目录条目中存储的地址范围和所需的地址进行比较。

在发送到L1超高速缓存28之前,大多数访问要在存储控制单元22中被缓冲。具体地,存储控制单元22包括一个超高速缓存缓冲器30,其也称为中间或过渡超高速缓存,用于管理从/至L1超高速缓存28至/从L2超高速缓存26和/或主存储14的数据传送。超高速缓存缓冲器30包括少量的例如八条数据存储行,每行能够存储与L1超高速缓存28和L2超高速缓存26中的一行相同数量的数据。当在超高速缓存28、26和主存储14之间传送数据时,超高速缓存缓冲器30中的八条行用于缓冲L1超高速缓存28和L2超高速缓存26中的行组或者用于缓冲主存储14中的对应存储器单元组。

超高速缓存缓冲器30中的每行存储标识着当前使用的以及超高速缓存缓冲器行的状态的数据;具体地,该行是否使用,以及若使用被使用行的访问类型、服务该访问的状态、访问地址以及其它信息。一旦在某L1超高速缓存28中存在未命中并且必须从L2超高速缓存26或主存储14得到数据,则向该未命中分配超高速缓存缓冲器30中的一个行,从而当从L2超高速缓存26或主存储器回送该数据时,该数据被存储在超高速缓存缓冲器30的该分配好的行中,并且接着从该行发送到L1超高速缓存28和/或L2超高速缓存26。类似地,一旦在L1超高速缓存28或L2超高速缓存26中检索某行或者在其它条件下需要从某行回注到L2超高速缓存26或主存储14,为该回注分配超高速缓存缓冲器30中的某行,从而从L1超高速缓存28或L2超高速缓存26把数据回注到超高速缓存缓冲器30中的该指定行,并且接着从该行传送到L2超高速缓存26或主存储14。

把超高速缓存行分配给特定的访问和回注、把得到的用于访问和回注的数据处理到超高速缓存缓冲器30之中以及从超高速缓存缓冲器30传送数据,是通过存储控制单元20中的逻辑电路利用其中所存储的数据来管理的。可以理解,具有其自己的处理机及超高速缓存系统(未在图2中示出)的其它处理机复合体例如32′可和主存储14以及系统总线23连接以便装入和存储数据。

现参照图3,以说明L2超高速缓存26的细节。L2超高速缓存26包括用于和存储控制单元22通信的接口逻辑电路34以及多个各用于存储被高速缓存的数据的超高速缓存行36。行36包括一些控制字段以及个用于存储被高速缓存的数据的字段38。这些控制字段对于实现本发明的原理是必需的,其中包括用于标识具有由该超高速缓存线管理的数据的拷贝的L1超高速缓存的L1存在位组字段40、用于标识该行的状态(排它的、共享的或已修改的)的状态字段42以及用于标识主存储14中和字段38中的数据相对应的地址的标签字段44。如后面详细解释的那样,L2超高速缓存26对从存储控制单元22接收的命令和数据作出响应以保存数据或者从行36检索数据。L2超高速缓存26还通过保持行36的一个队列管理各行36在其内的替换,以便把这些行按从最近最少使用到最新使用排序。

现参照图4,以解释L1超高速缓存的细节。每个L1超高速缓存28包括用于和存储控制单元22通信的接口逻辑电路46以及多个各用于存储被高速缓存的数据的超高速缓存行52。行52包括一些控制字段以及一个用于存储被高速缓存的数据的字段54。对于实现本发明的原理为必需的这些控制字段包括:用于标识超高速缓存中的数据是否有效的有效字段56,用于标识主存储14中的字段54中的数据相对应的地址的标签字段58,以及用于标识超高速缓存行52的数据的该行状态(共享的或已修改的)的状态字段60。如后面详细解释的那样,L1超高速缓存28对从存储控制单元22接收到的命令和数据作出响应以便保存数据或从行52检索数据。L1超高速缓存28还通过保持行36的一个队列管理各行36在其内的替换,以便把这些行按从最近最少使用到最新使用排序。

现参照图5A,以解释L1超高速缓存响应从相关处理机接收读操作厚执行的操作。响应于该读操作(步骤100),L1超高速缓存判定其是否具有被请求数据的有效CL(步骤102)。若有效,则在步骤104把该被定位的CL移动到该超高速缓存中的最新使用位置,并且在步骤106从该定位好的CL读所需的数据并回送给处理机。然而,若不存在被请求数据的有效CL,则在步骤108(该步骤在后面的图5D中更详细说明)向该L1超高速缓存增添一个含有被请求数据的超高速缓存行,并接着在步骤106从定位好的CL读所需的数据并且回送到处理机。

现参照图5B,以解释L1超高速缓存响应于从相关处理机接收写操作而执行的操作。作为第一步骤110,L1超高速缓存判定在其中是否存在用于所需数据的CL。若存在,处理在步骤112继续,以使定位好的CL成为最新使用的。接着在步骤114,评估该定位好的CL以判定该CL是否标记成“已修改的”。

如前面所提及,L1超高速缓存中的每个CL可具有“共享的”或“已修改的”状态。“共享的”状态表示L1超高速缓存中的数据未被修改过因为它是从L2超高速缓存或主存储器读到该L1超高速缓存中的,并且可能存在一个或更多的存储着相类似的该数据的未修改拷贝的其它超高速缓存。“已修改的”状态表示L1超高速缓存中的数据已被修改过的因为它是从L2超高速缓存或主存储器中读到该超高速缓存中的。如将看到那样,若某L1超高速缓存已请求并且接收对某数据的排它性拥有权,该L1超高速缓存可把该CL置成“已修改的”状态;这样,当某CL处于“已修改的”状态时,它还表示别的超高速缓存都不存储该数据的拷贝。

从而,若在步骤114中确定该定位好的CL未标记为“已修改的”,则可确定该定位好的CL中的数据是未修改过的并且可能存在别的具有该数据的拷贝的超高速缓存。因此,在写至该定位好的CL之前,在步骤116中向L2超高速缓存26发送对拥有权的请求。如将在后面所看到,该请求或者由L2超高速缓存接收或者由其拒绝。在步骤118判定是否已接收该对拥有权的请求,并若未接收则在步骤116重试该请求。重复步骤118和116的循环,直至接收该对拥有权的请求。此刻,在步骤120L1超高速缓存判定该定位好的CL是否继续具有用于该请求的有效数据。由于可能在试图得到拥有权重复步骤116和118的循环期间可出现在L1超高速缓存中处理别的请求而要执行该步骤。

若在步骤120该定位好的L1 CL继续具有用于该请求的有效数据,则在步骤122该定位好的L1 CL被标记成“已修改过的”以表示该CL中的数据已被改变,并且接着在步骤124由处理机写的数据被写入到L1 CL。

若在步骤120该定位好的L1 CL不再具有用于该请求的有效数据,或者若在步骤110中在超高速缓存里不存在具有用于该请求的数据的有效CL,则处理到达步骤126,其中如后面参照图5D讨论的那样对L1超高速缓存增添一个具有新数据的CL。在该步骤之后,则在步骤124把用于该请求的数据写到新增添的CL。

现参照图5C,以解释L1超高速缓存响应于接收到共享回写、清仓回写或清仓命令所执行的操作。

如后面详细说明那样,当同一处理机复合体中的L2超高速缓存确定另一个处理机复合体试图读共享回写命令的对象的数据并且还确定该数据的修改版本在其L1超高速缓存中时,该L1超高速缓存接收共享回写命令。响应于共享回写命令,L1超高速缓存中的修改过的数据回写到L2超高速缓存和主存储器,并且把该L1超高速缓存中的该修改过的数据的状态从“已修改的”改变到“共享的”。

还如后面详细说明那样,当同一处理机复合体中的L2超高速缓存确定另一个处理机复合体试图读清仓回写命令的对象的数据并且还确定该数据的修改版本在其L1超高速缓存中时,该L1超高速缓存接收清仓回写命令。当由于老化L2超高速缓存去掉该L2超高速缓存中的对应数据的超高速缓存行并且在其L1超高速缓存中存在该L2超高速缓存行的数据的修改版本时,也可生成清仓回写命令。当L2超高速缓存指示过渡超高速缓存把修改过的数据从一个L1超高速缓存传送到另一个L1超高速缓存时,也可以生成清仓回写命令。响应于清仓回写命令,L1超高速缓存中的修改过的数据回写到过渡超高速缓存,并使L1超高速缓存中的数据失效。接着过渡超高速缓存恰如其份地把该数据传送到L2超高速缓存和主存储器或者把该数据传送到另一个L1超高速缓存。

最后,如后面所见,当同一处理机复合体中的L2超高速缓存确定要从L1超高速缓存中去掉未在L1超高速缓存中修改过的数据时,L1超高速缓存接收清仓命令。这可以出现在当L2超高速缓存确定同一处理机复合体中的另一个处理机或者另一个处理机复合体试图得到该数据的拥有权时,或者,当L2超高速缓存因老化去掉它的用于同一数据的超高速缓存线时。响应于清仓命令,L1超高速缓存使L1超高速缓存中的该数据失效。

从而,一旦L1超高速缓存接收到清仓回写或共享回写中之一,必须通过过渡超高速缓存缓冲器把数据回送到L2超高速缓存或主存储器或者二者中。因此,在接收到清仓或共享中写命令后的第一步骤130中,L1超高速缓存接收应把数据写到其中的过渡超高速缓存行号。接着在步骤132,L1超高速缓存确定含有清仓回写或共享回写命令中标识的数据的L1超高速缓存里的CL。通常,L1超高速缓存中存在一个用于该被标识数据的CL;但是,在由并发的老化操作(参见图5D)造成的一些少见情况下,在接收到对数据的清仓回写或共享回写时,该数据的CL可能已经失效。(若不存在用于由清仓回写或共享回写命令标识的数据的CL,则废弃该清仓回写或共享回写命令,因为老化操作会达到和清仓回写命令相同的结局。)

在标识用于清仓回写或共享回写命令的CL后,在步骤134该CL中的数据被写到步骤130中所确定的过渡超高速缓存缓冲器。此刻,对清仓回写命令或共享回写命令采用不同的操作。若是共享回写命令(步骤136),在步骤138把该确定的CL标记成“共享的”以表明另一个超高速缓存或处理机复合体将具有该数据的拷贝,并完成对共享回写命令的处理。若是清仓回写命令(步骤140),在步骤142,把该确定的CL标记成失效的并且移动到由L1超高速缓存保持的队列里的最近最少使用(LRU)位置,从而该CL可迅速地重新使用,并完成对该命令的处理。

由于不必把数据回写到过渡超高速缓存缓冲器中,接收到清仓命令后的操作相对简单。从而,响应于清仓命令,L1超高速缓存确定L1超高速缓存中含有清仓命令中所标识的数据的CL。在常规情况下,在L1超高速缓存中可能存在或不存在用于该标识数据的CL;若完成不再存在的选择回注(参见图5D、6D和7C),接着在大多数情况下L2超高速缓存被告知何时L1超高速缓存不再具有特定的数据,并且不会向L1超高速缓存发送不必要的清仓命令;然而,即使完成不再存在的回注,在由并发的老化操作造成的一些少见情况下(参见图5D),当接收清仓命令时,该数据的CL可能已经失效。(若没有用于由清仓命令标识的数据的CL,则废弃该清仓命令,因为老化操作会达到如清仓命令相同的结局。)在标识用于清仓命令中所标识的数据的CL后,在步骤142,把该确定的CL标记成失效的,并且移动到由L1超高速缓存保持的队列里的最近最少使用(LRU)位置,从而该CL可迅速地重新使用,并且完成对该命令的处理。

现参照图5D,以解释由L1超高速缓存执行的作为增添一条超高速缓存线(CL)部分的操作。从前面可以注意到,作为对读数据请求的响应结果(步骤108)或者作为对写数据请求的响应结果,可能需要向某L1超高速缓存增添一个CL。在这二种情况中,从L2超高速缓存或从主存储器得到数据。在获取数据以满足写数据请求下(步骤126),如后面详细说明那样,则是借助带有修改意图的读操作获取该数据的。

为了开始向该L1超高速缓存增添一个CL,在步骤150,在该L1超高速缓存中选择一个供替换的CL。这可能会涉及到确定该L1超高速缓存中哪个CL是最近最少使用的,或者可能会涉及到和L1的各CL的使用统计有关的其它更为复杂的操作。在任何情况下,一旦选择一个供替换的CL,在步骤152评估该选定的CL以判定它是否标记成有效的和已修改的。若是,则该选定CL中的数据已被修改过并且必须被回写到L2超高速缓存和/或主存储器。从而在该情况下,在步骤154为该选择用于替换的CL中的旧数据向过渡超高速缓存缓冲器发送一个老化回注命令。过渡超高速缓存作出响应而向该老化回注分配一个过渡超高速缓存缓冲器行号并向L1超高速缓存回送在步骤156中接收的该行号。然后,在步骤158,把来自选择用于替换的CL的旧数据写到该L1超高速缓存中被标识的行号中。

若在步骤152中确定该选定的CL是失效的,或者虽然有效但不含有修改过的数据,则不需要把来自该选定CL的数据回写到L2超高速缓存或主存储器中。若选定的CL是失效的,为准备使该CL存储新数据无需采取任何其它步骤。然而,若该CL是有效的但数据未被修改过,则可执行选用的步骤160以告诉L2超高速缓存L1超高速缓存不再存储该数据的拷贝。这是通过向过渡超高速缓存发送一个标识选择成用于替换的CL中的旧数据的不再存在回注命令完成的。如后面更详细地看到那样,该步骤是选用的,但若执行,以后处理的流水线可使L2超高速缓存避免不必要的清仓命令。

步骤158或供选用的步骤160后,在步骤162中采取措施以建立存储新数据的CL。具体地,在该CL中适当地设置标志以标识新数据的地址,并且做出任何其它字段更改或管理更改以把该CL和新数据关联起来。

接着,为了得到数据,在步骤164中向过渡超高速缓存发送一个读请求或者带有修改意图的读请求以便为该CL获取新数据。作为响应,过渡超高速缓存缓冲器将对该请求分配一个行号并向L1超高速缓存回送在步骤166中接收的该行号。在步骤168,随着新数据被写入在步骤166中确定的过渡超高速缓存中,L1超高速缓存接收该新数据。在此同时,接收该数据的状态,即共享的或已修改的。如后面可看到那样,当从L2超高速缓存、主存储器或其它L1超高速缓存向过渡超高速缓存发送数据时还一起发送状态,以指示该数据是修改过的,即和主存储器中的数据是不同的,或者替代地是共享的,即和主存储器中存储的数据是相同的并且在该情况下在别的超高速缓存中可能存在该数据的其它拷贝。

在步骤170中,在该选定的CL中存储新近接收的数据。接着在步骤172中,把该选定的CL标记成是有效的,从而可使用它以满足该待决的请求。最后,根据启动该检索数据的请求的类型采取措施以适当地把该CL设成共享状态或修改过的状态。具体地,若检索该新数据以满足来自和该L1超高速缓存连接的处理机的读请求(步骤174)并且该数据在标记成共享的下回送,则在步骤176把该选定的CL标记成共享的,在步骤177使该选定的CL成为该超高速缓存中的最新使用的CL,并结束增添CL的处理。替代地,若在标记成“修改过的”下回送新数据(步骤178),则和启动数据检索的访问类型无关,在步骤180把该CL标记成“修改过的”,在步骤177使它成为该L1超高速缓存中的最新使用的CL,并且结束处理。最后,若检索该数据以满足来自于和该L1超高速缓存连接的处理机的写请求(步骤182),则在标记成“共享的”下回送数据,然后必须采取动作以得到该数据的拥有权。具体地,在该情况下在步骤184向L2超高速缓存发送对拥有权的请求。在步骤186,若拒绝该请求,则处理返回步骤184并再次作出该请求。最终会接受该拥有权请求,并且处理从步骤186进入步骤180,其中把该选定的CL标记记成“修改过的”以反映该CL中的数据是由处理机写的,并接着在步骤177使该选定的CL成为该L1超高速缓存中的最新使用的CL,并且结束处理。

现参照图6A,以解释由过渡超高速缓存缓冲器作为响应从某L1超高速缓存接收读请求或带有修改意图的读请求的部分所执行的操作。如上面所提及,作为对这二种请求的初始响应,在步骤190对该请求分配一个过渡超高速缓存行,并且在步骤192把该超高速缓存行回送到L1超高速缓存。接着,在步骤194,恰如其份地把读请求或带有修改意图的读请求和步骤192中分配的行号一起发送给L2超高速缓存。接着L2超高速缓存在步骤196以三种方式中的一种方式响应。

首先,L2超高速缓存可作出响应,标识另一个具有由该读请求或带有修改意图的读请求寻找的数据的修改版本的L1超高速缓存(步骤198)。若这出现,则在步骤200向该另一个L1超高速缓存发送清仓回写命令,以使该另一个L1超高速缓存把该数据清仓回到过渡超高速缓存缓冲器,从而可把它移动至请求的L1超高速缓存。接着,在步骤202,向该另一个L1超高速缓存发送步骤192中分配的过渡超高速缓存缓冲器行号,从而该另一个L1超高速缓存将把修改过的数据回送由该请求L1超高速缓存监视的同一个过渡超高速缓存缓冲器行上。在步骤204,把该另一个L1超高速缓存中的数据回送到分配好的过渡超高速缓存行中,并且在步骤206,随着其被写到过渡超高速缓存行把该数据送到请求的L1超高速缓存。在一种实施中,该请求的L1超高速缓存可监视对过渡超高速缓存的写并且当该数据从另一个L1超高速缓存向过渡超高速缓存写时直接接收该数据,从而尽可能快地由该请求的L1超高速缓存得到该数据。在回送该数据时,把它标记成“修改过的”以表明该数据与L2超高速缓存中和/或主存储器中的数据不同。接着,如前面说明那样,该请求的L1超高速缓存将对该数据采取适当的动作。

请注意,由于数据可以在不必回写到L2超高速缓存或主存储器的情况下直接从一个L1超高速缓存传送到另一个L1超高速缓存,该功能明显地节省时间。尤其当二个处理机反复地重写相同的数据的情况下,本发明的使修改过的数据在L1超高速缓存之间直接传送的这种特性明显地节省超高速缓存开销。

若(步骤208)该请求的L1超高速缓存寻找的数据在L2超高速缓存中并已被修改过,但它不存在其它的L1超高速缓存中(因为该修改过的数据已从这些L1超高速缓存中清仓和老化掉),则L2超高速缓存作出响应,将通过把该数据在标记成“修改过的”下回送到过渡超高速缓存。类似地,若L1超高速缓存在带有修改意图下读数据并且L2超高速缓存中的数据标记成“排它的”,则L2超高速缓存将作出响应,把该数据标记成“排它的”回送到过渡超高速缓存。在这二种情况下,则在步骤206中,在把数据写到过渡超高速缓存时,在标记成“修改过的”下把它送到该请求L1超高速缓存。具体地,该请求L1超高速缓存可监视对过渡超高速缓存的写并且可在把数据从L2超高速缓存写到过渡超高速缓存时直接得到它,从而尽可能快地由该请求的L1超高速缓存得到该数据。接着,如前面说明那样,该请求的L1超高速缓存将对该数据采取适当的动作。

若请求的L1超高速缓存寻找的数据不在L2超高速缓存中并且未被修改过,或者若该数据不在L2超高速缓存中并且必须从主存储器取到L2超高速缓存中,则在步骤210,L2超高速缓存将在标记成“共享的”或“排它的”下把数据回送到过渡超高速缓存缓冲器。若数据标记成“共享的”回送,则在步骤212在标记成“共享的”下把该数据回送到L1超高速缓存。若数据标记成“排它的”回送,并且L1超高速缓存在不带修改意图下读数据,则在步骤212在标记成“共享的”下把该数据回送到L1超高速缓存。如上面讨论那样,L1超高速缓存会适当地响应,并且可能产生对拥有权的请求。

现参照图6B,以了解响应从L2超高速缓存接收清仓回写或共享回写命令由过渡超高速缓存执行的操作。如前面提及并如下面详细说明,当L2超高速缓存确定因相应L2超高速缓存行的老化或因对访问的请求和/或别的处理机复合体对该数据的拥有权必须清仓某L1超高速缓存中的该数据时过渡超高速缓存接收这些命令。

在后一种情况下,如后面提到那样,在L2超高速缓存等待完成被请求的回写的同时,该L2超高速缓存将阻止/拒绝其它处理机复合体的读或拥有权请求。然后该其它的处理机复合体会发出对读或拥有权请求的重试。

若尚未分配一个过渡超高速缓存行,则在步骤222分配一行。接着在步骤224向具有修改过的数据的L1超高速缓存发送一个清仓回写或共享回写命令,并且在步骤226向该L1超高速缓存发送步骤224中分配的过渡超高速缓存行。之后,在步骤228,L1超高速缓存通过向该确定的行发送数据做出响应。

此刻,根据L2超高速缓存发出的回写命令的类型执行不同的处理。若该命令是清仓回写(步骤230),则在步骤232把从L1超高速缓存接收的数据直接发送到主存储器,并且在步骤234向该L2超高速缓存发送清仓回写确认。不在该L2超高速缓存中存储该数据,因为该L2超高速缓存已确定应从整个处理机复合体清仓该数据。若该命令是共享回写(步骤236),则在步骤238把该数据发送到主存储器,并且此外还在步骤240向L2超高速缓存发送共享回写命令而且在步骤242向L2超高速缓存发送该数据并存储在其中。

现参照图6C,以解释响应来自L1超高速缓存的老化回注由过渡超高速缓存执行的操作。如前面所解释,当来自某L1超高速缓存的修改过的数据老化时发生老化回注。因为不存在别的处理机复合体需要该修改过的数据的指示,过渡超高速缓存只把它发送到L2超高速缓存。从而,在第一步骤250,对该命令分配一个过渡超高速缓存行,并在步骤252把该行号发送给L1超高速缓存。在步骤254,从L1超高速缓存接收该数据。接着,在步骤256,向L2超高速缓存发送老化回注命令,并且在步骤258向L2超高速缓存发送接收到的数据。

现参照图6D,以解释响应来自L1超高速缓存的不再存在的回注由过渡超高速缓存执行的供选用的操作。如前面所提及,不再存在的回注告诉L2超高速缓存发起该回注的L1超高速缓存不再具有所确定的数据的版本。该数据本身未改变过从而不从L1超高速缓存回送。从而,在接收到不再存在的回注后(步骤260),在步骤262向L2超高速缓存发送该同一数据的不再存在的回注。

现参照7A,以解释响应来自过渡超高速缓存的读或带有修改意图的读请求由L2超高速缓存执行的部分操作。作为第一步骤270,从该过渡超高速缓存接收用于该操作的过渡超高速缓存行号。接着,在步骤272,通过搜索用于该被请求数据的有效CL判定被请求的数据是否在该L2超高速缓存中。若在该L2超高速缓存中存在用于该数据的CL,则在步骤274使该确定的CL成为最最近使用的。接着,在步骤276检查该CL以判定它是否标记成“修改过的”。若是,则在步骤277,L2超高速缓存通过确定在该标识的CL中是否设置存在位来判定是否存在具有该修改过的数据的L1超高速缓存。

若在步骤277存在设定位,则出现前面讨论的情况,其中某L1超高速缓存具有另一个L1超高速缓存需要的修改过的数据。在该情况下,在步骤278,向过渡超高速缓存发送指向具有存在设定位的L1超高速缓存的指针,以使该过渡超高速缓存从当前具有该数据的L1超高速缓存向需要该数据的L1超高速缓存发送该修改过的数据。如前面所提及,这种直接的L1对同级L1的数据传送可以明显地减少在管理超高速缓存数据中所涉及到的开销,尤其在二个处理机反复地重写相同数据的情况下。在步骤278之后,在步骤280清除掉当前具有该修改过的数据的L1超高速缓存的存在位,并对请求该数据的L1超高速缓存设置该存在位,以反映现在该修改过的数据在该请求L1超高速缓存中。之后,结束对该请求的处理。

若在步骤276,定位好的CL未标记成;修改过的”,或者在步骤277在CL中未设定存在位,则从L2超高速缓存CL回送被请求的数据。在这种情况下,根据从过渡超高速缓存接收到的读请求的类型采取不同的行为(步骤282)。若该请求是读(步骤284),则在步骤286,设定请求的L1超高速缓存的存在位,并且接着在步骤288向在步骤270中确定的过渡超高速缓存线发送L2超高速缓存CL中的数据以及该L2超高速缓存CL的修改过的、共享的或排它的状态。若该请求是带有修改意图的读(步骤290),则接着在步骤292检查该L2超高速缓存CL以判定它是否“排它的”状态;若是,则在步骤294把该CL改变成“修改过的”状态,因为别的处理机复合体都不具有该数据的拷贝。若在步骤292中该CL不在“排它的”状态下,或者在步骤294中把该CL设置成“修改过的”状态后,在步骤296向任何在定位好的该CL中具有存在设定位的L1超高速缓存发送对相应数据的清仓命令;这样做是为了从别的L1超高速缓存中消除该数据的任何拷贝,从而由请求的CL拥有该数据。接着,在步骤298,清除掉用于各L1超高速缓存的所有存在设定位以指示L1超高速缓存已被清仓。处理接着进入步骤286和288,以对该请求的L1超高速缓存设定存在位,并且从该L2超高速缓存CL向过渡超高速缓存回送数据以及该L2超高速缓存CL的共享的、修改过的或排它的状态。

若在步骤272中,在该L2超高速缓存中不存在用于被请求数据的CL,则处理进入步骤300,其中向该L2超高速缓存增添一个用于该新数据的CL,如后面参照图7D说明那样。之后,处理进入步骤286和288,以对该用于请求的L1超高速缓存的添加的CL设定存在位,并且从该添加的L2超高速缓存CL向过渡超高速缓存回送数据以及该添加的L2超高速缓存CL的共享的、修改过的或排它的状态。

现参照图7B,以解释响应从某L1超高速缓存接收拥有权请求由L2超高速缓存执行的操作。如前面所提及,当某L1超高速缓存接收写请求并在该L1超高速缓存中具有标记为“共享的”对应数据时,该L1超高速缓存发出对拥有权的请求。响应于拥有权请求,L2超高速缓存必须确保别的L1超高速缓存不具有该数据的拷贝,并且确保别的处理机复合体不具有该数据的拷贝,并在该L2超高速缓存中把该数据标记成“修改过的”。

从而,响应于拥有权请求,在第一步骤310中,L2超高速缓存在该L2超高速缓存中定位一个用于该拥有权请求中所标识的数据的CL。可以理解任一L1超高速缓存中的所有数据也都在L2超高速缓存中,从而由L2超高速缓存接收拥有权请求时,在该L2超高速缓存中应存在一个用于该数据的CL。

在确定一个L2超高速缓存CL后,在步骤312评估该定位好的CL以判定它是否标记成“共享的”。若该L2超高速缓存CL标记成“共享的”,则存在另一个具有同一数据的拷贝的处理机复合体。因此,若该L2超高速缓存CL标记成“共享的”,则在步骤314该L2超高速缓存向系统总线发送拥有权请求,以试图使别的处理机复合体放弃它们的对该数据的拷贝。可能接受或拒绝该请求。若该请求被拒绝(步骤316),例如因为另一个处理机复合体具有该数据的修改过的拷贝,则在步骤318L2超高速缓存将拒绝该来自L1超高速缓存的拥有权请求,并且完成对拥有权请求的处理。从上面对L1超高速缓存的行为的说明中可理解到,当拒绝某L1超高速缓存的拥有权请求时,该L1超高速缓存将重试该请求,直至被接受。从而,在拒绝某拥有权请求后,该L2超高速缓存在此之后很快接收重复的请求,并且重新开始图7B的处理。还可从前面的讨论中理解到,当另一个处理机复合体拒绝拥有权请求时,它开始向主存储器回写修改过的数据,以便在其重试时接受该拥有权请求。

从而,最终接受发送到系统总线的该拥有权请求(步骤320),在该情况下在步骤322接受来自L1超高速缓存的拥有权请求。此外,若步骤312中该L2 CL未标记成共享的,处理直接进入步骤322并且立即接受来自L1超高速缓存的请求。在接受拥有权请求后,在步骤324向除了请求拥有权的L1超高速缓存之外的所有在L2 CL中具有存在设定位的L1超高速缓存发送清仓命令。该步骤确保其它L1超高速缓存都不具有该数据的拷贝。接着在步骤326,清除所有L1超高速缓存的存在位,但请求拥有权的L1超高速缓存除外。最后,在步骤328,把该定位好的L2超高速缓存CL标记成“修改过的”,以表明在请求拥有权的L1超高速缓存中修改了和该CL相关的数据。

现参照图7C,以解释响应共享回写、老化回注、供选用的不再存在的回注以及清仓回写命令由L2超高速缓存执行的操作。当作为另一个处理机复合体试图读数据的结果某L1超高速缓存已把修改过的数据回写到主存储器或者L2超高速缓存时由L2超高速缓存接收共享回写命令(步骤330)。从而,当接收共享回写命令时,在步骤332确定对应的L2超高速缓存CL并设置成共享的,以反映另一个处理机复合体令检索该数据的拷贝。接着,在步骤334中,该L2超高速缓存从过渡超高速缓存接收用于该共享回写的修改过的数据并存储在该确定的L2超高速缓存CL中。

当某具有修改过的数据的L1超高速缓存老化该数据并把它回送给L2超高速缓存时该L2超高速缓存接收老化回注(步骤336)。从而,当接收老化回写命令时,在步骤338确定对应的L2超高速缓存CL,并且清除CL中发起该回注命令的L1超高速缓存的存在位,以反映在该L1超高速缓存中不再有用于该命令的该数据。接着在步骤334,把用于老化回注的修改过的数据回写到该确定的L2超高速缓存CL中。

当L1超高速缓存老化未修改过的数据时,L2超高速缓存接收供选用的不再存在的回注命令(步骤340)。从而,当接收不再存在的回注命令时,在步骤342,确定对应的L2超高速缓存CL并清除该CL中发起该命令的L1超高速缓存的存在位,以反映在该L1超高速缓存中不再有用于该命令的该数据。

当具有修改过的数据的L1超高速缓存已把该数据回送到主存储器时,L2超高速缓存接收清仓回写确认命令(步骤344)。这可出现在另一个处理机复合体试图写该数据时,或者L2超高速缓存已从该L2超高速缓存中老化掉相关的CL时。从而,当接收清仓回写确认命令时,该L2超高速缓存可能具有或者不具有一个用于相关数据的CL。从而,在第一步骤346,判定该L2超高速缓存中是否存在用于该相关的数据的一个CL。若没有,则不需要进一步的处理。但是,若在该L2超高速缓存中存在用于由该清仓回写确认标识的数据的一个CL,则在步骤348把该CL标识成“失效的”并把它移动到由该L2超高速缓存保持的CL条目队列中的最近最少使用位置上。

现参照图7D,以解释为对新数据向L2超高速缓存添加一个超高速缓存行(CL)由L2超高速缓存执行的操作。作为第一步骤350,选择一个供替换的该L2超高速缓存中的CL。这可能涉及到选择最近最少使用的CL,或者某些更为复杂的操作。接着在步骤352,评估选定的CL以判定它是否标记成“修改过的”。若是,则必须执行特定处理以把该修改过的数据移回到主存储器。从而,在步骤354,评估该选定的CL以判定在该CL中是否设定了存在位。若未设定,则该修改过的数据在该L2超高速缓存CL中并且在步骤356把该数据从该L2超高速缓存发送到主存储器中,并且在步骤358建立该CL以管理新数据,包括设置该CL的标签以标识新数据的地址。

若在步骤354,该选定的CL具有存在设定位,则由该存在设定位确定的该L1超高速缓存CL存储着修改过的数据。在该情况下,在步骤360L2超高速缓存CL向具有存在设定位的L1超高速缓存发送一个清仓回写命令,以使L1超高速缓存清仓该修改过的数据并把该数据回送到主存储器。如前面所讨论,该清仓回写命令是经过过渡超高速缓存发送的,从而过渡超高速缓存将管理数据的回送。接着处理进入步骤358以为接收新数据建立该选定的CL。

若在步骤352中,选定的CL未标记成“修改过的”,则必须从所有的L1 CL清仓该数据的所有拷贝。从而,该情况下在步骤362向所有具有存在设定位的L1超高速缓存发送对旧数据的清仓命令,从而使这些L1超高速缓存清仓数据。接着处理进入步骤358以为接收新数据建立该选定的CL。

在步骤358之后,得到用于存储到该选定的CL中的新数据。第一步骤是向系统总线发送读请求或带有修改意图的读请求以得到该新数据。若L2超高速缓存建立新的CL以响应来自过渡超高速缓存的读请求则发送读请求,若L2超高速缓存建立新的CL以响应来自过渡超高速缓存的带有修改意图的读请求则发送带有修改意图的读请求。

在向系统总线发出该请求后,根据系统总线以及主存储器的响应采取不同的行为。若数据是在读指令下请求的并且回送标记成“共享的数据”(步骤366),则在步骤368中把选定的L2超高速缓存标记成“共享的”以表示别的处理机复合体具有该数据的拷贝,并且接着在步骤370使该选定的L2超高速缓存CL成为最新使用的,从而完成对L2超高速缓存增添数据的处理。替代地,若该数据是在读命令下请求的并且回送标记成“排它的”数据(步骤372),接着在步骤374把该选定的L2超高速缓存L2标记成“排它的”以表示别的处理机复合体都不具有该数据的拷贝,并且接着在步骤370使该选定的L2超高速缓存CL成为最新使用的,从而完成对L2超高速缓存增添数据的处理。

若数据是在带有修改意图的读命令中请求的并且回送标记成“排它的”数据(步骤376),则在步骤378把该选定的L2超高速缓存CL标记成“修改过的”以表示在该处理机复合体中将修改该数据,并且接着在步骤370使该选定的L2超高速缓存CL成为最新使用的,从而完成对L2超高速缓存增添数据的处理。替代地,若响应该读请求从系统总线接收“重试”(步骤380),这表示另一个处理机复合体具有该数据的修改过的版本并且处于向主存储器回送该修改版本的过程中。在该情况下,必须重试该请求,从而处理返回步骤364以重试该请求。

现参照图7E,以解释响应从另一个处理机复合体接收拥有权请求由L2超高速缓存执行的操作。作为第一步骤390,该L2超高速缓存判定在该L2超高速缓存中是否有用于该被请求的数据的CL。若有,则必须评估该CL以确定如何处理该所有权请求。在该情况下,在步骤392,检查该CL以判定它是否标记成“修改过的”。若是,则在该处理机复合体中存在该数据的尚未回送到主存储器的修改过的拷贝。该问题接着变成该修改过的数据是否在该L2超高速缓存中或者是否必须从L1超高速缓存中的一个中清仓掉。从而,在步骤394,检查该L2超高速缓存CL中的存在位以判定它们是否都被清除。若是,则该L2超高速缓存具有该修改过的数据的最新版本,在步骤396把该选定的L2超高速缓存CL中的数据回送到主存储器,并在步骤398把该选定的L2超高速缓存CL标记成“无效的”并移到由该L2超高速缓存保持的CL队列中的最近最少使用的位置上。此刻,可在步骤400接受该拥有权请求,并且该另一个处理机复合体从主存储器读该修改过的数据。

若在步骤390,L2超高速缓存确定它不具有用于该确定的数据的CL,则L2超高速缓存立即转到步骤400并接受该拥有权请求。

若在步骤392,L2超高速缓存确定它具有用于该数据的CL,但该数据是未修改过的,则必须简单地从该处理机复合体清仓该数据,从而在步骤402该L2超高速缓存向所有具有存在设定位的L1超高速缓存发送对该数据的清仓命令,并且接着L2超高速缓存进入步骤398以把该CL标记成无效的而且然后在步骤400接收该拥有权请求。

若在步骤394,该L2超高速缓存判定存在着存在设定位,则该修改过的数据在某L1超高速缓存中,并且必须被清仓。在该情况下,在步骤404拒绝该拥有权请求以使该L1超高速缓存得到把该数据清仓回主存储器的时间。然后在步骤406,该L2超高速缓存向具有存在设定位的L1超高速缓存发送清仓回写命令,以使该L1超高速缓存把该数据清仓回主存储器。可理解该另一个处理机复合体会重复该拥有权请求,直至接收到表示该L1超高速缓存已经成功地把该数据回送到主存储器的清仓回写确认,这标示着该L2超高速缓存将具有用于该数据的CL条目并且将遵循相同的路径并拒绝该拥有权请求。一旦该L1超高速缓存成功地把数据回送到主存储器,该L2超高速缓存将使它的CL条目失效(见上面的图(7C),并且接着接受来自该另一个处理机复合体的下次拥有权请求。

现参照图7F,以解释当L2超高速缓存监听到来自另一个处理机复合体的读请求或带有修改意图的读请求时它所执行的操作。当该L2超高速缓存在系统总线上监测到读或带有修改意图的读请求时,该L2超高速缓存必须判定它是否具有该数据的修改过的版本并且必须通过“重试”命令阻止该访问,和/或必须判定该L2超高速缓存是否具有该数据的未修改的拷贝并且必须使该数据在标记成“共享的”下回送到该另一个处理机复合体。这些判定是在图7F中进行的。

作为第一步骤410,L2超高速缓存判定在它之中是否具有用于该被请求数据的一个CL。若没有,无需更多的动作。然而,若在该L2超高速缓存中存在用于该被请求数据的CL,则在步骤412评估该CL以判定它是否标记成“修改过的”。若是,则必须阻挡该来自另一个处理机复合体的请求,并且在步骤414向系统总线发送“重试”指示,以得到时间把该数据返回到主存储器。

一旦由于在该处理机复合体中存在修改过的数据而阻挡别的处理机的访问时,在步骤416,该L2超高速缓存通过评估CL中的存在位组以判定是否设定任何存在位组确定修改过的数据在何处。若设定(步骤418)根据访问类型采取不同的行为。若该访问是读访问(步骤420),则在步骤422向具有存在设定位的L1超高速缓存发送对该数据的共享回写命令,以使把该L1超高速缓存中的数据回写到主存储器和L2超高速缓存并且标记成“共享的”。在此发生之前,将借助“重试”通过上面说明的相同路径阻止读请求的任何重试。一旦该L1已把数据回写到主存储器和L2超高速缓存并且该L2超高速缓存CL已被标记成“共享的”(见图7C),则如后面所提及允许该访问。类似地,若该来自另一个处理机复合体的访问是带有修改意图的读访问(步骤424),则在步骤426向具有存在设定位的L1超高速缓存发送对该数据的清仓回写命令,以使该L1超高速缓存中的该数据被回写到主存储器并且接着使该L2超高速缓存CL失败。在此发生之前,通过上面说明的相同路径阻止该读请求的任何重试。

若在步骤416,L2超高速缓存判定不存在存在设定位,则该修改过的数据的最近版本在L2超高速缓存CL中。在该情况下,在步骤428从L2超高速缓存CL把该修改过的数据发送到主存储器,以在重试该读请求时可得到它。接着,根据访问类型(步骤430),采取不同的行为。若该访问是读访问(步骤432),则把该L2超高速缓存CL标记成“排它的”以表明该L2超高速缓存数据相对于主存储器未被修改过,而且此刻该L2超高速缓存具有该数据的唯一拷贝。相继地,当由该另一个处理机复合体重试访问时,将把该L2超高速缓存CL标记成“共享的”,如后面解释那样。若该访问是带有修改意图的读访问(步骤436),则应从该L2超高速缓存清仓该数据。从而,在该情况下在步骤438把该L2超高速缓存标记成“无效的”并成为最近最少使用的。

若在步骤412,L2超高速缓存确定用于受读请求或带有修改意图的读请求的数据的CL未标记成“修改过的”,接着根据请求类型采取不同的行为(步骤440)。若该请求为带有修改意图的读请求(步骤442),则应从该处理机复合体彻底清除该数据。从而,在步骤444向任何具有存在设定位的L1超高速缓存发送对该CL数据的清仓命令,并且处理立即进入把该L2超高速缓存CL标记成“失效的”和成为最近最少使用的步骤438。若该请求是读请求(步骤446),则应接受该访问但应在标记成“共享的”下回送该数据,而且该处理机复合体中的数据也应标记成“共享的”以反映该另一个处理机复合体具有该数据的拷贝。从而,在步骤448向系统总线发送“共享的”指示,这样别的处理机复合体会共享地接收该数据。接着,在步骤450,该定位好的L2超高速缓存CL标记成“共享的”以反映该另一个处理机复合体具有该数据的拷贝。

上述说明示范了所申请的本发明。在更阔的观点下本发明不受这些示出的和说明的具体细节、说明性的设备及方法以及示例的限制。从而,在不背离申请人的总发明概念的实质或范围下可偏离这些细节。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号