具有独立实现优化高速缓存操作的高速缓存相关协议的制作方法

文档序号:6416203阅读:191来源:国知局
专利名称:具有独立实现优化高速缓存操作的高速缓存相关协议的制作方法
技术领域
本发明一般涉及计算机系统,更特别地,本发明涉及一种高速缓存相关协议,该协议提供一种新的用于修改数据的相关状态,允许在不需要写干预数据至系统存贮器中的情况下改进高速缓存的干预。
常规多处理器计算机系统10的基本结构示于

图1。计算机系统10有一些处理部件,图中示出了其中的两个12a和12b,这些处理部件连接到各种外设,包括输入/输出(I/O)设备14(例如显示监视器、键盘、图形指针(鼠标)、以及永久存储器(硬盘))、存贮器设备16(例如随机存取存贮器或RAM)和固件18,其中存贮器设备16用于处理部件执行程序指令,而固件18的主要目的是在每当计算机首先加电时从一个外设中(通常为永久存贮器)寻找并加载操作系统。处理部件12a和12b通过各种装置,包括普通的互连或总线20、或者直接存贮器存取通道(未示出)而与外设通信。计算机10可以具有许多未示出的附加部件,诸如用于连接到例如调制解调器或打印机的串并口等。还有其它部件可以用于连接到示于图1的方框图中的部件上;例如,一显示适配器可以用于控制视频显示监视器,一存贮控制器可以用于访问存贮器16,等等。该计算机还能具有两个以上的处理部件。
在对称多处理器(SMP)计算机中,通常所有的处理部件是相同的,即,它们都采用公共指令集或子集和协议来操作,并且通常具有相同的体系结构。一典型的体系结构示于图1中。一处理部件包括一具有许多寄存器和执行部件的处理器核22,核22执行程序指令以便操作计算机。典型的处理部件包括由IBM销售的PowerPCTM处理器。处理部件还可以具有一个或多个高速缓存,例如指令高速缓存24和数据高速缓存26,它们采用高速存贮设备实现。高速缓存通常用于临时存储一些可被处理器重复访问的值,以便通过避免从存贮器16中加载这些值的较长步骤而加速处理。当这些高速缓存与处理器核整体封装在一个集成芯片28上时,它们被称作“板上”高速缓存。每个高速缓存与一个高速缓存控制器(未示出)相关联,该控制器管理在处理器核与高速缓冲存贮器之间的指令和数据传送。
处理部件可以包括附加高速缓存,例如高速缓存30,由于它支持板上(1级)高速缓存24和26。因此高速缓存30被称作二级(L2)高速缓存。换句话说,高速缓存30充当在存贮器16和板上高速缓存之间的媒介,并且能够存储比板上高速缓存所能存储的大得多的信息(指令和数据),但是需要较长的访问负担。例如,高速缓存30可以是具有256KB或512KB存储容量的芯片,而该处理器可以是具有64KB总存储容量的板上高速缓存的IBM PowerPCTM604系列处理器。高速缓存30连接到总线20,并且从存贮器16至处理器核22的所有信息加载必须经由高速缓存30。虽然图1只描述了两级高速缓存层次,但是也能提供多级高速缓存层次,其中具有许多级(L3、L4等)串行联接的高速缓存。如果一个块存在于给定的处理部件的L1高速缓存中,则该块也存在于该处理部件的L2、L3高速缓存中。这种特性是公知的包含原理。此后,假定该包含原理适用于涉及本发明的高速缓存。
在SMP计算机中,重要的是提供一种相关存贮系统,即使对所有处理器的每一特定存贮单元的写操作以某一次序串行化。例如,假定存贮器中的一存储单元被一系列写操作采用值1、2、3、4修改。在一高速缓存相关系统中,所有的处理器将知道按照所示的次序执行对一给定存储单元的写操作。但是,一处理部件可能丢失对该存贮单元的一个写操作。读该存贮单元的一给定处理部件能够看到序列1、3、4就会丢失对值2的校正。实现这些性能的系统被称作是“相关的”系统。实际上所有的相关协议只针对高速缓存块的大小的粒度操作。这就是说,相关协议以高速缓存块为基础控制数据的传送和写允许,而不单独用于任一特定的存贮单元(其后,术语“数据”常常表示存储器的值,该存储器值既可以是由程序使用的数值,也可以是对应于程序指令的值)。
本领域的技术人员公知的是,存在许多实现高速缓存相关的协议和技术。用于保持相关的所有这些机制需要这些协议只允许一个处理器具有一“许可”,该“许可”允许在任意给定时间点上对一给定存贮单元(高速缓存块)的写操作。这种需求的结果是,只要一处理部件想要对一存贮单元进行写操作,它就必须首先通知所有其它处理部件它想要对该单元进行写操作,并且从所有其它处理部件接收许可以实现该写操作。
为了在系统中实现高速缓存相关,这些处理器通过共用的普通互连(即、总线20)而通信。这些处理器通过该互连传送表示需要读或写存贮单元的消息。当在互连上发出一操作时,所有其它的处理器“探听”(监视)该操作并且决定它们的高速缓存的状态是否能允许该请求的操作继续进行,并且如果允许,则确定允许的条件。有一些总线事务需要探听和跟踪行动以尊重这些总线事务并且维持存贮器相关。探听操作由限定的探听请求触发,前述探听请求由某些总线信号的确立而产生。仅当产生探听命中并且探听状态机确定需要附加高速缓存探听解决出错区域的相关时才中断指令处理。
在具有多个高速缓存的系统中,因为一给定存贮器块的最新有效拷贝可能已从系统存贮器16传送至系统内的一个或多个高速缓存中(如上所述),所以需要这种通信。如果一处理器(例如12a)试图访问一在其高速缓存层次中不存在的存贮单元,则含有该存贮单元的实际(当前)值的该块的校正版本,可能在系统存贮器16中,或者在另一处理部件,例如处理部件12b的许多高速缓存的其中之一中,如果该校正版本在系统的一个或多个其它的高速缓存中,则需要从系统的(这些)高速缓存中而不是系统存贮器中获得校正值。
例如,假定一处理器,例如12a试图读存贮器的一存贮单元。它首先轮询自己的¨高速缓存(24或26)。如果该块不在L1高速缓存中,则该请求转送至L2高速缓存(30)。如果该块不在L2高速缓存中,则该请求转送至更低级的高速缓存,例如L3高速缓存中。如果该块不在更低级的高速缓存中,则该请求传送到普通互连(20)上而被服务。一旦操作被放到普通互连上,则所有其它处理部件都探听该操作并且确定该块是否在它们的高速缓存中。如果一给定处理部件在其L1高速缓存中含有由前述的处理部件请求的块,并且在该块中的值被修改,则通过包含原理,L2高速缓存和任何更低级的高速缓存也具有该块的拷贝(但是,由于在该处理器的高速缓存中的拷贝被修改,因此它们的拷贝是旧的)。因此,当处理部件的最低级高速缓存(例如L3)探听该读操作时,它将确定该请求的块在较高级的高速缓存中存在并被修改。当该事件发生时,L3高速缓存发出一消息到普通互连上,以通知该处理单元它必须在稍后的时刻再“重试”其操作,因为该存贮单元的实际值在位于存贮器层次顶部的L2高速缓存中,并且必须被检索出来以便能够服务于最初的处理部件的读请求。
一旦来自最初的处理部件的请求被重试,L3高速缓存就开始一从L1高速缓存中检索该修改值的进程,并且根据实现的具体细节使该修改值可存在于L3高速缓存、或者主存贮器或者二者之中。为了从较高级高速缓存中检索该块,L3高速缓存通过至较高级高速缓存的中间高速缓存的连接,发送检索该块的消息,这些消息沿着处理部件层次向上传送直至到达L1高速缓存,并且使该块沿着该层次向下传送到最低级(L3或主存贮器),以便能够服务来自最初的处理单元的请求。
最初的处理部件最后重新在普通互连上提出该读请求。但是,这时该修改值已经从一处理部件的L1高速缓存中检索出来并且放入系统存贮器中,因此将满足来自最初处理器的读请求。这种情况通常称作“探听下推”。一读请求在普通互连上被探听,使得处理部件将该块“下堆”到该层次的底部以便满足由最初的处理部件提出的读请求。
当处理器想要读或写块时的关键点是,它必须将该需求传送到系统中的其它处理部件以便保持高速缓存的相关性。为了实现这一点,高速缓存相关协议与高速缓存层次的每一级中的每一块相关联,一状态指示器指示块的当前“状态”。该状态信息用于允许在相关协议中的某些优化,这些优化减少了在普通互连或高速缓存间连接上的消息量。作为这种机制的一个例子,当一处理部件执行一读操作时,它接收一个表示该读操作以后是否必须重试的消息。如果该读操作不被重试,则该消息通常还包括允许该处理部件确定任意其它处理部件是否也具有该块的静止的现行拷贝(通过由其它最低级的高速缓存给出一用于任意不重试的读操作的“共享”或“不共享”指示而实现)。因此,一处理部件可以确定系统中的任意其它处理器是否具有该块的拷贝。如果没有其它的处理部件具有该块的现行拷贝,则正在执行读处理的处理部件标记该块的状态为“专用”。如果一个块被标志为专用则就可以允许该处理部件后写(later write)该块而不用首先与系统中的其它处理部件通信,因为没有其它的处理部件具有该块的拷贝。因此,一处理器能够在事先不将其意图传送到互连上的情况下读或写一存贮单元,但只是其中的相关协议必须确保没有其它的处理器对该块有利害关系。
前述的高速缓存相关技术实现于称作“MESI”的具体协议中,如图2所示。在该协议中,一高速缓存块处于四种状态即“M”(修改)、“E”(专用)、“S”(共享)或“I”(无效)中的一种状态。在MESI协议中,每个高速缓存项(例如,32字节的区段)具有指示四种可能状态中的项状态的两个附加位。根据项的初始状态和请求处理器想要的访问类型,状态可以改变,并且在该请求处理器的高速缓存中为该项设置一具体状态。例如,当一个区段处于修改状态时,则该寻址区段仅在具有该修改区段的高速缓存中有效,并且修改值没有被写回到系统存贮器。当一个区段处于专用状态时,则它只存在于所提到的区段中,并且与系统存贮器一致。如果一个区段处于共享状态时,则它在该高速缓存和至少一个其它高速缓存中是有效的,所有的共享区段与系统存贮器一致。最后,当一个区段处于无效状态时,则它指示该寻址区段不驻留在该高速缓存中。如图2所示,如果一区段处于修改、共享或无效状态中的任何一个状态时,它能够根据特定的总线事务而在这些状态之间传递。而一处于专用状态的区段能够传递到任意其它状态,一区段只有在它首先为无效状态时才能变成专用状态。
采用高速缓存相关协议能够实现在访问高速缓存块时的另一改进。这种改进称作“干预”,它允许高速缓存具有超越存贮器块的控制以便直接提供在该高速缓存块中的数据至请求其值的另一高速缓存中(对于读类型的操作),换句话说就是,忽略数据写入系统存贮器并然后该请求处理器再从存贮器中读回的需求。干预只能由在其状态为修改或专用的块中具有该值的高速缓存执行。在这两种状态中,只有一个高速缓存块具有该值的有效拷贝,所以只需简单地发送(写)该值到总线20上而不必首先将该值写到系统存贮器。因此,通过避免写和读系统存贮器(实际上包括三个总线操作和两个存贮器操作)的较长的处理,该干预过程加速了处理。该过程不仅获得了较好的等待时间,而且增加了总线带宽。
作为干预过程的一部分,用于系统存贮器的存贮控制器也将接收来自具有修改状态的高速缓存行的干预响应,以便当该修改数据发送到其它处理器时,存贮控制器知道以并行方式读取该修改数据。在该过程结束时,保持该数据为修改状态的高速缓存将切换到共享状态,而其它处理器的高速缓存块也将从无效状态转换到共享状态,因为该修改数据已经拷贝到系统存贮器。在常规的高速缓存相关协议中,所述修改数据必须根据干预写到系统存贮器中,并且,虽然可以用并行方式实现以便加速处理,但在许多情况下仍然是不必要的。例如,如果在第一处理器中的修改高速缓存块用于发送数据至第二处理器中的一高速缓存,第二处理器可能正好又修改该数据,则最后将需要至系统存贮器的另一写操作。如果在第一处理器发送数据和第二处理器修改数据之间的时期内没有其它的处理器需要该数据(存贮器块),则对系统存贮器的第一次写操作(干预过程的一部分)是不必要的。
一种避免对系统存贮器的不必需的写操作的方法是,即使第二处理器只想要所发送的数据用于读操作,也强迫第二处理器将该数据保持在修改状态。在这种方式中,第二处理器对在将来把数据写回到系统存贮器负责。但是,该实现的主要问题是,干预(第一)处理器必须设置其高速缓存行为无效状态,所以不能具有数据共享;在任一时刻只能一个处理器读它,并且数据必须总在处理器之间来回传送,从而引起额外的总线通信量。因此,需要设计一种保持高速缓存相关性的方法,该方法允许高效率的数据干预而且避免对系统存贮器的不必需的写操作。如果在允许数据共享的同时,该方法允许修改的数据在高速缓存之间传送而不影响存贮器,则这将是另一个优点。
因此,本发明的一个目的是提供一种在多处理器计算机系统中保持高速缓存相关性的改进方法。
本发明的另一目的是提供这样一种方法,该方法允许高速缓存干预但避免对系统存贮器的不必需的写操作。
本发明还有的另一目的是提供这样一种方法,该方法允许修改数据的干预,而同时又允许该数据由一些不同的高速缓存保持在共享状态中。
在多处理器计算机系统的一种保持高速缓存相关性的方法中实现了前述的目的,其中采用一“标记”的相关状态表示一特定高速缓存行含有一修改值(即,一个与系统存贮器设备中的相应存贮器块不一致的值)并且该高速缓存行至少目前负责将该修改值写回到系统存贮器设备(或者在存贮器层次中的另外一处,即,通过干预)。虽然含有该修改值的一个拷贝的(在系统中支持其它处理部件的)所有其它高速缓存行被分配了一个也表示这些高速缓存行含有该修改值的第二相关状态(共享),但是这些高速缓存行不负责保证系统存贮器最后用该修改值更新。当该标记状态被分配给最新近加载该修改值的高速缓存行时,它能够(水平地)跨越这些高速缓存而移动。历史相关状态还可以用于表示一特定高速缓存行含有该修改值并且最近发送该值,使得通过当目前的标记的高速缓存行被例如作为最近最少使用的算法结果而被换出时,切换“辅助”历史状态高速缓存行至该标记状态,从而“原始”标记的高速缓存行能够免除回写责任。
本发明也能适用于一种具有许多处理部件的多处理器计算机系统,其中的所述许多处理部件分成多个组,并且多级高速缓存支持一给定的组,使得标记相关状态能够适用于在支持分离的处理部件组的每一组高速缓存中的一个高速缓存行。标记状态也能够在这样的分组系统的(多个)较低级中实现。
在一最佳实施例中,由本发明采用的每个相关状态具有一关联的优先级,使得,当产生访问一个块的请求时,仅仅具有最高优先级的响应传送到该请求处理部件。采用纵横开关(cross bar),任何标记干预响应只能传送到能够由该干预响应所影响的所选择的高速缓存。
标记协议能够与其它高速缓存相关协议结合,例如一高速缓存相关协议,其中包括一“最近”(Recent)状态,表示一高速缓存含有一最近被访问的值的拷贝,以便允许共享干预。“T”(Tagged,标记)状态还可用于分配一冲突优先级,该优先级用于废弃来自其它高速缓存的要求一存贮器块(一DCLaim操作)的冲突请求。(ⅰ)数据干预、(ⅱ)跟踪写修改数据至存贮器层次的责任、以及(ⅲ)提供DCLaim冲突优先级等三个功能不需要结合在单一的标记状态中,但是能够采用本发明的较复杂的实现独立地进行。
在下面的详细描述的说明书中,本发明的上述及其它的目的、性能和优点将变得明白。
被新性能认可的本发明特征陈述在后附的权利要求中。但是,发明本身以及最佳应用模式、其它的目的、优点,将最好通过结合附图、参照下面的示例性的实施例的详细描述来理解,其中图1是现有技术中的多处理器计算机系统的方框图2是描述现有技术的高速缓存相关协议(MESI)的状态图;图3是描述本发明的高速缓存相关协议的状态图,其中提供了一种用于修改数据的标记状态,该状态在不需要将数据写到系统存贮器的情况下允许干预;以及图4是具有多级高速缓存体系结构的多处理器计算机系统的方框图,该体系结构能够适于在全局范围和局部(CPU组)范围内实现本发明的标记相关状态;以及图5是描述本发明的高速缓存相关协议结合允许识别最近读一个值的高速缓存行的相关协议的状态图。
本发明涉及一种在多处理器系统,例如图1的系统中维持高速缓存相关性的方法,但是本发明能够适应于不一定是常规的计算机系统,即该计算机系统可以包括图1中未示出的新硬件,或者具有用于现存部件的新互连体系结构。因此,本领域的技术人员将明白,本发明不限于示于图中的普通系统。
现在参照图3,图中描述了本发明的高速缓存相关协议的一个实施例的状态图。该协议类似于图2中的先有技术MESI协议,在该协议中它包含了相同的四个现有技术的状态(修改、专用、共享和无效),但是它还包含一个新的“T”状态(标记),该状态用于提供一高速缓存块已被某个处理器修改但还没有写入系统存贮器的指示。例如,当在一个处理器中的一高速缓存块处于修改状态,并且由另一处理器请求一读操作时,则第一处理器将发送一修改干预响应,而该读处理器能够在此后将数据保持在T状态(第一处理器从修改切换到共享)。该操作能够对其它的处理器重复,使得最近读该修改数据的拷贝的高速缓存是保持该值在T状态的高速缓存,而所有其它的具有该值的拷贝的处理器保持该值的共享状态。这样,一个高速缓存被“标记”以表示它目前负责在将来的某一时刻将该修改数据写入存贮器层次,如果需要,则或者通过在一修改干预响应期间发送到另一个高速缓存,或者写回到系统存贮器。这种方法减少了对系统存贮器的写操作的总次数。
在先有技术MESI协议中。读一修改值的拷贝的一高速缓存将从无效状态切换到共享状态(而不是切换到T状态),并且修改干预响应还会被存贮控制器获取以便允许该数据写到存贮器。在这里称作“T-MESI”协议的本发明的基本协议中,存贮控制器忽略该事务,从而释放了存贮器带宽。仅当需要时,例如根据最近最少使用(LRU)的高速缓存重新分配算法的结果,一修改值才被写入系统存贮器。
当采用现有技术的协议时,M-E-S-I四个状态可以根据项的初始状态和请求处理器想要的访问类型而改变。在具有下面的连接的本发明的方法中,其中所述四个状态的改变大致与先有技术MESI协议相同。如图3所示,一高速缓存行还能从无效状态到标记状态,从标记状态到无效状态,以及从标记状态到共享状态。T-MESI协议的这个实施例还可以参照表1来理解,表1说明了在三个不同的处理器P0、P1、P2中的一特定高速缓存块的高速缓存相关状态表1
在第一行中,所有三个处理器都从高速缓存块处于无效状态开始。在第二行中,处理器P0执行一具有修改意图的读操作(RWITM),因此其高速缓存行从无效变为修改。其后,处理器P1请求读该高速缓存行;处理器P0干预并切换到共享状态,而处理器P1从无效状态变到标记状态(表1的第三行)。然后,处理器P2请求读该高速缓存行;处理器P1干预并切换到共享状态,而处理器P2从无效状态变到标记状态(表1的第四行)。
表1还说明了在T状态的一高速缓存行如何可能被强制写该数据至系统存贮器,即使该高速缓存行还没有被重新分配。当处理器允许对一个块进行写操作时,包括Power PCTM处理器在内的一些处理器体系结构允许执行一特殊指令,而不是RWITM指令。一个例子就是“DCLaim”指令。在表1的第五行中,处理器P1发送了一个用于特定高速缓存行的DCLaim的请求;处理器P2探听该DCLaim,发送一重试消息,并且尝试将该数据推入到系统存贮器。一旦该推入完成,该高速缓存行就从标记状态转变到无效,但是在处理器P0和P1中的该高速缓存行保持共享状态。在重试后,处理器P2将再发出DCLaim,它将不再被重试,因此,该高速缓存行将在P0中变为无效,在P1中变成修改状态。
可能的是,某种修改值将在所有的高速缓存范围内移动而永远不会实际地写入系统存贮器。例如,设想,请求一个值的RWITM的处理器已经保持在T状态——除了其高速缓存行位于T状态以外,在其它处理器中的所有相应的高速缓存行都保持在共享状态,则采用“拥有”该值的高速缓存(该高速缓存位于T状态)将该值通过干预发送后,该请求处理器将切换到无效状态。执行该RWITM的新处理器被设置为修改状态,因此,已经预先保持在T状态的该值永远不会写入系统存贮器。
T状态具有共享状态(由于数据在一个或多个其它处理器中保持在共享状态)和修改状态(由于数据已经被修改并且还没有写回系统存贮器)两种属性。实际上,从CPU的观点看,T状态等于S状态,而从系统总线的观点看,具有T状态的高速缓存行实质上象修改块一样对待。
在图3的实施例中,“T”状态在高速缓存行之间迁移,而在一替换实施例中,“T”状态与修改该值的原始处理器的高速缓存行在一起。换句话说,保持一个值在修改状态的一高速缓存行在发送该数据至另一个处理器时将切换到标记(Tagged)状态(而不是共享状态)。除了在修改状态的高速缓存行能够到达标记状态但不能到达共享状态外,该替换实施例的状态图与图3相似。这个替换实施例在某些结构中是合乎需求的,以便从高速缓存中“老化”(ageout)该值。例如,如果是多级高速缓存(至少到L3),则通过将值从L2高速缓存推入L3高速缓存,与如果系统必须等待以便从L2级中检索该值相比,该值能够在以后更快地发送到其它的L3高速缓存。根据背景技术中的方法,例如根据LRU重新分配的结果,不响应一特定总线操作,能够执行这种值的推入,因此获得更有效的整体操作。
在本发明中,能够建立协议以便在多处理器计算机系统中从所有与其它处理器相关联的高速缓存的探听者传送具体的相关响应至一个请求读操作的处理器。用于本发明的一个实施例的这些响应按照表2作出定义
表2
这些信号采用3位探听响应的形式,其值(地址响应)和定义显示在表2中。这些信号被编码以表示在该地址使有期后的探听结果。表2显示了用于共享行和清除(无效)行的响应,以及重试响应;这三个响应在现有技术中基本上是公知的。表2还显示了“标记干预”、“共享干预”、“远程状态(remote status)”和“重运行”等四个新的响应。当一高速缓存块保持一个值在修改或者标记状态时使用标记干预响应,表示它能够干预该值,但是请求该值的新高速缓存块必须临时负责拷贝该值到系统存贮器(如下面根据可选择的“T”状态的实现所讨论的那样,如果需要,可提供不同的响应用于修改和标记块)。
另外的三个响应不直接关系到本发明。共享干预响应允许一个块保持该值的有效拷贝以便发送它(见下面讨论的R-MESI协议)。仅用于读操作的远程状态响应用于表示该读操作将是成功的,而共享或者专用相关响应将在后面采用另一信号返回该数据。当相关响应不能够被立即确定并且请求必须发送到层次中的低层时使用重运行响应。重运行响应不同于重试响应,在其中,在前的消息必须重新发出并且必须具有相同的标识符,以便能够与预先发送的消息匹配。
如表2所示,一个优先权值还可以与每个响应相关联,以便允许系统逻辑在定义对请求处理器的单一响应中确定哪个响应应该获得优先。例如,如果一个或多个高速缓存发出标记响应(优先级2),一个或多个高速缓存发出重试响应(优先级1),则重试响应将获得优先级并且系统逻辑将对请求处理器发出重试响应。该系统逻辑可以驻留在各种部件中,例如一系统控制中心部件,或者甚至在存贮控制器中。
示于表2的优先级初值为重试响应提供了最高优先级。也可提供一替换优先级方案以增强T-MESI协议的使用。在由表2的圆括号中的优先级数字表示的该替换方案中,共享干预响应具有最高优先级,接下来是重试响应,再接下来是标记干预响应;所有其它的优先级与第一方案相同,在该替换方案中,共享干预响应将总是优先于其它响应,这有许多可接受的理由。首先,如果一高速缓存行将一个值(数值或指令)保持在下述的用于共享干预的“R”状态,则没有其它的高速缓存可以将与相同地址对应的一个值保持在修改或标记状态,因此很明显,将没有其它高速缓存能够发出标记干预响应。而且,如果任意其它高速缓存发出一重试,则根据该重试的来自相同高速缓存的任意后面的响应将至多不过是共享,这还意味着首先发出共享干预响应是可接收的。
本发明可以选择地实现于其中一些高速缓存支持T-MESI协议而另外的高速缓存不支持该协议的计算机系统中。例如,最初制造和销售的一多处理器计算机系统可以有四个处理部件安装在系统电路板上,但是有另外四个插座允许以后增加另外的处理部件。这些原始处理部件(或者它们的高速缓存控制器)可以比较便宜并因此不提供对T-MESI协议的支持,即使系统逻辑(系统控制中心部件)支持该协议。但是,例如通过采用一位标志,这些原始处理部件能够经济地提供表示它们是否支持该协议的装置,该装置通知系统逻辑T-MESI支持的存在或不存在。然后,如果加到那些插座上的新处理部件具有支持T-MESI协议的高速缓存,则系统逻辑能够采用该标志在这些高速缓存之间区分,并且将该协议用于适当的处理部件。
为了进一步解释上述内容,设想一个系统具有一些支持T-MESI协议的处理部件和一些不支持T-MESI协议的处理部件。当每个部件发出一读请求时,该请求包括所述标识T-MESI支持的标记。如果一个值(由任一类处理部件)在一高速缓存行中保持为修改状态,并且该值被一不支持T-MESI协议的处理部件请求,则系统逻辑将发出一修改干预响应至该请求处理器和存贮控制器;在请求处理器中的该高速缓存行将从无效状态切换到共享状态,并且在干预过程中存贮控制器将获取该值并将其存储在系统存贮器中。但是,如果该请求处理部件支持T-MESI,则系统逻辑将发出一标记干预响应(它将来自一非允许的高速缓存的修改干预响应转换成一标记干预响应);在请求处理部件中的该高速缓存行将从无效切换到标记,而存贮控制器将忽视该事务。在这两种情况下,在发送处理部件中的高速缓存行从修改状态切换到共享。该结构允许计算机系统具有任意支持T-MESI协议的处理部件存在的优点,而不管混合T-MESI和一般MESI高速缓存的理由。该协议的这个可选择实现还能用于诊断目的。
在不考虑使用一标志有选择地实现基于请求处理器的标记状态(异质支持)的情况下,可以提供一系统标志以便允许或禁止在全局基础上的标记状态,即,在系统逻辑中采用一位字段。例如,主处理器(请求处理器)可以支持T-MESI协议,但是系统可能希望在存贮器层次中向下传送该修改值,例如传送到纵向的L3高速缓存。
如上所述,对于那些没有示于图1和图2中的状态和操作,其转换和相关响应根据现有技术的MESI协议实现。根据在图3中实现的T-MESI协议进一步指出下列特点如果一项目前处于无效状态,则它只能切换到T状态(如果它已经处于共享状态,则它将仅保持在共享状态,而如果一高速缓存将一个值保持在T状态,则在任意其它的高速缓存中它不能保持在M或者E状态);而一个标记项只能(根据修改干预响应)切换到共享状态、(根据重新分配或DC Laim推入)切换到无效状态、或者切换到修改状态(如果同一处理器再修改该已经修改的数据)。
利用该新的T-MESI协议,如果采用最近最少使用的高速缓存替换机制,则一个块的所有权迁移到最后读该数据的高速缓存,这将是有保持最近使用的附加好处并且借此减小重新分配的可能性。高速缓存的“T”状态还能有利地用于其它应用,例如,一智能输入/输出(I/O)控制器中断最近读一存贮I/O状态的存储单元的处理器/高速缓存,由于该处理器/高速缓存很可能已经存贮了该I/O设备驱动器代码,因此,与在需要将该代码读入其高速缓存的另一处理器中相比能够更快地执行该代码。当然,本发明的特别优点在于,它允许共享已被修改和干预的数据。
“T”状态的另一方面是,当在该状态中的一高速缓存行被重新分配时,通过普通互连,该重新分配对所有的处理器是可见的。这种重新分配的可见性提供的另外的优点就是,它允许支持历史高速缓存状态信息。设想一个与表1所述相似的例子,其中三个处理器具有各自的开始于无效状态的高速缓存行。在第一处理器执行一RWITM操作时,其高速缓存行从无效变为修改状态,而当第二处理器在此后请求该高速缓存行时,第一处理器干预该数据,将其高速缓存行切换到共享状态,并且第二处理器的高速缓存行从无效状态变换到标记状态(类似于表1的最初的三行)。但是现在,第一处理器将其高速缓存行标记为一种特殊形式的共享状态,它可称作“ST”(共享-标记)。然后,如果第三处理器重新分配在“T”状态的高速缓存行(例如,通过LRU机制),则第一处理器将知道该重新分配并且能够通过改变其在“ST”状态的高速缓存行至一不同状态而响应,该不同状态依赖于具体的实现。例如,标记高速缓存行能够写到系统存贮器,而在“ST”状态的高速缓存行能够切换到一称作“R”状态(最近访问)的特定状态,该特定状态能够用于共享数据的干预。“R”状态下面将进一步讨论,并且在1997年4月14日提交的序号为08/839,557的美国专利申请中亦有论述,因此该申请将被结合于此。
在一替换实现中,不是根据重新分配将来自“T”状态的高速缓存行的修改数据值写到系统存贮器,而是在“ST”状态的高速缓存行能够简单地回复到“T”状态,从而省略该值的推入。由于在共享-标记块中的数据是相同的,因此也不需要从标记高速缓存块中拷贝数据;仅仅修改高速缓存的状态。这些步骤描述于表3的最初四行中
表3
因此,共享-标记状态的使用允许计算机系统在一标记高速缓存行重新分配后保持干预,借此改进了系统性能。
最初四行说明了“ST”状态的使用产生于在“M”状态中的高速缓存块的转换,而表3的最低四行说明了一标记高速缓存块如何也能切换到共享-标记状态。第五和第六行显示了在处理器P1的高速缓存块从“T”状态切换到“ST”状态的情况下“T”状态高速缓存块从处理器至处理器的迁移;处理器P0中的以前为共享-标记状态的高速缓存块切换到共享状态。在第七行中,处理器P2中的高速缓存块被重新分配,使得处理器P1中的高速缓存块从“ST”状态切换回“T”状态。此时,没有高速缓存块处于“ST”状态,即使一个高速缓存块处于“S”状态而另一个处于“T”状态(如果更早地重新分配共享-标记高速缓存行,则也能产生这种情况)。不过,例如在最后一行中处理器P2请求另一个读操作时,“ST”状态还能重新出现。
通过使在“T”状态的高速缓存行广播一适当的指示依赖在“ST”状态的高速缓存块避免系统存贮器等操作的需求的消息,能够实现该方法。如果该消息被在“ST”状态的高速缓存行接收,则该高速缓存行发送一适当的响应,并且在“T”状态的高速缓存行简单地被重新分配。如果没有响应(即,没有高速缓存行处于“ST”状态),则具有标记高速缓存行的处理器必须根据重新分配将该修改值写入系统存贮器。
在前述的共享-标记状态的实现中,仅有一个高速缓存行能够根据标记高速缓存行的重新分配而被推进到一不同的状态。在比较复杂的实现中,能够提供多级历史高速缓存信息。例如,代替在任意给定时刻仅存在一个共享-标记高速缓存块的是,可具有多个处于共享-标记状态的高速缓存块,通过根据其历史等级而为每个共享-标记高速缓存加上一序列号,能够方便地完成本实现,即,“ST1”状态用于刚刚发送数据至“T”高速缓存行的高速缓存行,“ST2”状态用于在以前发送数据至“ST1”高速缓存行的高速缓存行,“ST3”状态用于在以前发送数据至“ST2”高速缓存行的高速缓存行,等等。当重新分配一标记高速缓存行时,则所有的共享-标记高速缓存行被推进一级,如表4所示表4
在表4的最初三行中,与表1和表3类似,处理器P0的高速缓存行变为修改状态然后发送该值到变为标记状态的处理器P1的高速缓存行。处理器P0的高速缓存行切换到共享-标记第一级。在接下来的两行中,标记状态高速缓存行迁移到处理器P2和处理器P3,而先前的标记状态高速缓存行切换到共享-标记第一级,处于共享-标记第一级的任意高速缓存行切换到共享-标记第二级,而在第五行中,在处理器P0中的的高速缓存行从共享-标记第二级切换到共享-标记第三级。在第六行中,在处理器P3中的高速缓存行根据LRU机制被重新分配;在处理器P2中的“ST1”高速缓存行切换到“T”状态,在处理器P1中的“ST2”高速缓存行切换到“ST1”状态而在处理器P6中的“ST3”高速缓存行切换到“ST2”状态。
关于共享-标记状态级的顺序标识符的使用与LRU重新分配机制一起也实现了改进的性能,因为它减小了一在共享-标记特定级状态中的高速缓存行将被重新分配的可能,并且因此增加了该修改值将保留在水平高速缓存结构中的总的可能性。对历史高速缓存信息的级数的唯一限制是在用于高速缓存行的高速缓存相关状态字段中的位数。
本发明的前面的描述一般适用于任意级的高速缓存,例如L2、L3,等等,但是在多级高速缓存的情况下,本发明还能方便地用于一稍微不同的模式。参照图4,所示的多处理器计算机系统40包括两个CPU组42a和42b。CPU组42a具有四个CPU 44a、44b、44c、和44d,每一个具有一处理器核以及板上(L1)指令和数据高速缓存、以及L2高速缓存。四个CPU 44a、44b、44c、44d的L2高速缓存在连接到共享的L3高速缓存46a,该L3高速缓存通过普通互连或总线50连接到系统存贮器(RAM)48。类似地,CPU组42具有四个CPU 44e、44f、44g、44h,每一个也都具有一处理器核以及板上(L1)指令和数据高速缓存,以及L2高速缓存。这四个CPU 44e、44f、44g、44h的L2高速缓存连接到另一共享的L3高速缓存46b,该L3高速缓存也通过总线50连接到存贮器48。在该T-MESI协议的一层次变化中,最多三个相应的高速缓存行能够处于标记状态在CPU 44a、44b、44c、44d的L2高速缓存中的一个高速缓存行;在CPU 44e、44f、44g、44h的L2高速缓存中的一个高速缓存行,以及在两个L3高速缓存46a、46b之间的一个高速缓存行。
考虑下面的例子,其中,在CPU 44a-44h中的所有相应高速缓存行都开始于无效状态。处理器44a执行一RWITM操作,因此其高速缓缓存行从无效状态变到修改状态;在L3高速缓存46a中的相应高速缓存行也从无效变成修改状态。然后,处理器44b请求对该高速缓存行的读操作;处理器44a干预并且其高速缓存行(L2)切换到共享状态,而处理器44b的高速缓存行(L2)从无效状态变成标记状态。在L3高速缓存46a中的高速缓存行保持修改状态。然后,处理器44e请求对该高速缓存行的读操作;处理器44b干预,但是其高速缓存行(L2)保持在标记状态,因为它处于与处理器44e不同的CPU组。在处理器44e中的高速缓存行L27仍然从无效状态切换到标记状态。而且,由于该干预数据已经经由两个L3高速缓存传送,因此,在L3高速缓存46a中的高速缓存行从修改状态切换到共享,而在L3高速缓存46b中的高速缓存行从无效切换到标记状态。然后,如果处理器44f请求对该高速缓存行的读操作,则它能够通过处理器44e的高速缓存行(L2)发送。在这种情况下,处理器44e的高速缓存行(L2)从标记状态切换到共享状态而处理器44f的高速缓存行(L2)从无效状态切换到标记状态。这些步骤描述在表5中表5
在表5的最后一行中,每个CPU组有一个处于“T”状态的高速缓存行,并且L3高速缓存的其中之一也有一个高速缓存行处于“T”状态。这种情况允许该修改数据在L2级上从一局部处理器(即,在与请求处理器相同组内的一个)发送,从而进一步增强了性能。所以,如果此后处理器44c请求对该高速缓存行的读操作,则该请求将由处理器44b的高速缓存行(L2)填写,而如果此后处理器44g请求对该高速缓存行的读操作,则该请求将由处理器44f的高速缓存行(L2)填写;两个操作都在L2级上进行,而没有任何由L3高速缓存46a、46b执行的动作。如果提供了两个以上的CPU组,则“T”高速缓存行能够类似地在附加的L3高速缓存之间迁移。该原理能够扩展到具有多于三个高速缓存级(L1、L2、L3)的高速缓存结构,“T”状态不必在所有级中实现。
本发明还能与MESI协议的其它变形结合,例如上面提到并在前述的美国专利申请No.08/839,557中讨论的R MESI协议。根据该协议,一最近状态用于读共享数据的最后高速缓存,以便允许共享干预响应。因此能够设计一组合RT-MESI协议,其一个实施例示于图5。在该混合协议中,一旦修改值发送到存贮器层次中的某一其它存贮单元(即发送到另一高速缓存或系统存贮器),则处于标记状态的高速缓存行就能够切换到最近状态,并且类似地,根据到另一存贮单元的发送,处于修改状态的高速缓存行切换到最近状态。一个例子示于表6中。
表6
在表6中,在处理器P0、P1、P2中的三个相应高速缓存行都开始于无效状态并且(类似于表1),当处理器P0对其相应存贮器块执行一RWITM时,其高速缓存块变成修改状态。当处理器P0执行一读操作时,其相应的高速缓存行仍然切换到标记状态,但是现在在处理器P0中的高速缓存行切换到最近状态,而不是共享状态(表6的第三行)。此后,当处理器P2执行一读操作时,其高速缓存行切换到标记状态,而同时处理器P1的高速缓存行切换到最近状态,处理器P0的高速缓存行切换到共享状态(表6的第四行)。然后,当处理器P2重新分配该块(例如,由于LRU算法的结果)时,处理器P1仍然保持该值在“R”状态。这样,处理器P1能够在将来通过共享干预响应发送该值。在该协议的另一个变形中,唯一状态能够被忽略并实际上由最近状态代替。
本领域的技术人员将明白的是,更复杂形式的RT-MESI协议是可能的,例如,一种采用前述“ST”状态的混合版本,其中,根据目前保持该值在“T”状态的高速缓存行的重新分配,在“ST”状态的高速缓存行切换到“R”状态(而不是“T”状态),从而假定该值被写回系统存贮器。采用由多个共享标记状态提供的历史高速缓存信息能够设计类似的实施例。而且,该RT-MESI协议能够利用图4的全局/局部高速缓存结构实现。例如,假定,处理部件44d的局部高速缓存保持该值在“M”状态,并且然后发送该值到处理部件44h。如前所述,在处理部件44h中的高速缓存行将从无效切换到标记状态,但是现在,处理部件44d中的高速缓存行能够从修改状态切换到最近状态。
“T”状态和“R”状态二者都提供了一种用于从共享一个值的一组高速缓存块中唯一标识一高速缓存块的机制。如上所述,这些状态的方式便于采用干预块。这种块的唯一标记还有其它的优点。一个优点涉及前面提及的DCLaim操作。该操作能够实际上同时从许多处理器中发出,从而导致冲突。“T”状态可以用于分配一冲突优先级,该优先级取消来自其它高速缓存的冲突DCLaim请求。通过提供这种冲突优先级,来自“T”状态块的DClaim操作还能够被登记(例如,放在一用于最后广播到存贮器层次的剩余部分的高速缓存操作队列中),但是DCLaim存储指令能够立即执行,这样有助于系统的整体更快地操作,如美国专利申请No.08/024,587中所述。
因此,虽然“T”状态可以方便地用于(ⅰ)数据干预,(ⅱ)写修改数据至存贮器层次的跟踪责任,以及(ⅲ)提供DCLaim冲突优先级,但这三个功能不需要合并在一个相关状态中,下面,表7说明了一更复杂的相关协议,其中这些功能被独立地实现表7<
>在表7中,左边的列表示一特定高速缓存块的状态,而右边的列表示在其它水平高速缓存中相应块的可能相关状态。该协议变形提供了十五种相关状态,所以需要四位用于相关字段。上面提到的三个功能独立地分配如下。首先,具有下标“D”的任意相关状态(QD、QDT、RD、RDT、SD或SDT)被允许公布DC Laim操作(即,如果出现冲突DC Laim请求,则这种块将具有冲突优先级)。第二,具有下标“T”的任意相关状态(QT、QDT、RT、RDT、ST或SDT)负责在存贮器层次中向下写该修改值。第三,任意“R[x]”相关状态(R、RD、RT或RDT)有权利干预该值。“Q[x]”相关状态(Q、QD、QT或QDT)用于在不存在“R[x]”状态时提供干预,即,“R[x]”状态允许第一级干预,而“Q[x]”状态(历史的)允许第二级干预。“H”状态是下述的悬停(Hover)状态。该实施例不使用“E”状态。
虽然上述的三个功能被独立地实现,但是仍然能够与特定相关状态结合。干预和回写责任两个功能被结合在状态RT和QT中。干预和DCLaim优先级两个功能被结合在状态RD和QD中。回写责任和DCLaim优先级两个功能被结合在状态SDT中。全部三个功能都结合在状态QDT和RDT中。这三个功能的独立性能够通过用一数据流引擎设置系统位来控制。该原理也能适用于支持分组CPU的高速缓存。
最后,本发明还特别能兼容“纵横开关”(cross-bars)的使用。先有技术的高速缓存设计采用地址交叉和数据交叉二者以增强通信。一般地,高速缓存没有点对点的通信,但是必须以广播的方式发出请求和响应至存贮器层次中的其它存储单元。纵横开关仅仅是控制请求和响应至总线上的不同路径的一些开关或中继,其目的是更有效地使用总线。换句话说,所有的高速缓存互连到纵横开关,并且保持一队列以便高速缓存操作能够均匀地分配于总线的各路径之间,从而产生更大的总线带宽。系统控制器可以控制纵横开关。一给定高速缓存(例如L2)必须通知纵横开关控制器该高速缓存应该看到关于一给定标记的操作。
由于某些地址和数据操作可能只提供给需要这些操作的设备,因此T-MESI协议可以与交叉一起使用。设想四个处理部件的例子,其中一个处理部件具有一处于“T”状态的高速缓存块,另一个具有处于“ST”状态的相应块,而其它两个具有处于“I”状态的相应块。当后面的两个处理器的其中之一请求对该值的一个读操作时,系统逻辑能够确定最高优先级响应(标记干预)只应该发送至四个处理器中的三个。因此,该地址操作不提供给第四个处理器(其高速缓存块处于“I”状态的非请求处理器)。类似地,数据交叉能够用于仅仅将该值本身提供给请求处理器。如果采用其标记干预响应优先于重试响应的一优先级方案,则该响应可能需要发送到重试处理器。
虽然本发明已经参照特定实施例进行了描述,但是该描述不能被看作一种限制。根据本发明的描述,对本领域的技术人员而言,所公开的实施例的各种修改以及本发明的替换实施例将变得很明显。例如,本协议能够与除R-MESI协议之外的其它高速缓存相关协议结合;美国专利申请No.08/024,610描述了一种“H-MESI”协议,其中一高速缓存行操作在“悬停”(Hover)状态以等待有效数据的传送,并且,例如通过当一处于“H”状态的高速缓存行加载有效数据时使该悬停高速缓存行切换到“ST”状态,H-MESI协议能够与本T-MESI协议相结合。因此,可以预料的是,在不脱离由所附的权利要求定义的本发明的范围或精神的情况下可以作出这样的修改。
权利要求
1.一种在具有多个处理部件的多处理器计算机系统中保持高速缓存相关性的方法,每个处理部件具有至少一个高速缓存,其特征在于包括下列步骤拷贝一个与一存贮器块相关的值至分别位于第一高速缓存和第二高速缓存中的第一高速缓存块和第二高速缓存块,其中该第一高速缓存支持第一处理部件,该第二高速缓存支持第二处理部件;为第一高速缓存块分配第一相关状态以表示第一高速缓存块含有该值的一共享拷贝并且将排它地提供该值;以及为第二高速缓存块分配第二相关状态以表示第二高速缓存块含有该值的一共享拷贝并且具有优先于任何要求该存贮器块的冲突请求的冲突优先级。
2.如权利要求1的方法,其特征在于,所述值已经相对于在该存贮器块中的较旧的值而被修改,并且还包括步骤拷贝该修改值至位于支持第三处理部件的第三高速缓存中的第三高速缓存块;以及为第三高速缓存块分配第三相关状态以表示第三高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至所述存贮器块。
3.如权利要求1的方法,其特征在于还包括从第一高速缓存块提供该值至位于支持第三处理部件的第三高速缓存中的第三高速缓存块的步骤。
4.如权利要求1的方法,其特征在于还包括步骤发出与另一个高速缓存块相关的第一请求以要求所述存贮器块用于将来的修改;发出与所述第二高速缓存块相关的第二请求以要求所述存贮器块用于将来的修改,使得第二请求与第一请求冲突;以及根据所述发出第二请求的步骤取消第一请求。
5.如权利要求2的方法,其特征在于,还包括从所述第三高速缓存块将该修改值写入所述存贮器块。
6.一种计算机系统,包括一系统存贮器设备;一连接到所述系统存贮器设备的总线;多个连接到所述总线的处理部件,每个所述处理部件具有至少一个用于存储来自所述系统存贮设备的值的高速缓存块;以及高速缓存相关装置,该装置用于(ⅰ)拷贝一与所述系统存贮设备的一存贮器块相关的值至分别与第一处理部件和第二处理部件相关的第一高速缓存块和第二高速缓存块,(ⅱ)为所述第一高速缓存块分配第一相关状态以表示所述第一高速缓存块含有该值的一共享拷贝并且将排它地提供该值;以及(ⅲ)为所述第二高速缓存块分配第二相关状态以表示所述第二高速缓存块含有该值的一共享拷贝并且具有优先于任何要求所述存贮器块的冲突请求的冲突优先级。
7.如权利要求6的计算机系统,其特征在于,该值已经相对于在所述存贮器块中的较旧的值而被修改;以及所述高速缓存相关装置还包括一装置,该装置用于拷贝该修改值至与第三处理部件相关的第三高速缓存块,并且为所述第三高速缓存块分配第三相关状态以表示所述第三高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至所述存贮器块。
8.如权利要求6的计算机系统,其特征在于,所述高速缓存相关装置还包括用于从所述第一高速缓存块提供该值至与第三处理部件相关的第三高速缓存块的装置。
9.如权利要求6的计算机系统,其特征在于,所述高速缓存相关装置还包括一装置,该装置用于(ⅳ)发出与另一个高速缓存块相关的第一请求以要求所述存贮器块用于将来的修改;(ⅴ)发出与所述第二高速缓存块相关的第二请求以要求所述存贮器块用于将来的修改,使得第二请求与第一请求冲突,以及(ⅵ)根据第二请求取消第一请求。
10.如权利要求7的计算系统,其特征在于,所述高速缓存相关装置还包括用于从所述第三高速缓存块中将该修改值写入所述存贮器块。
11.一种在具有多个处理部件的多处理器计算机系统中保持高速缓存相关性的方法,每个处理部件具有至少一个高速缓存,其特征在于包括下列步骤拷贝一个与一存贮器块相关的值至分别位于第一高速缓存和第二高速缓存中的第一高速缓存块和第二高速缓存块,其中该第一高速缓存支持第一处理部件,该第二高速缓存支持第二处理部件,并且该值已经相对于在该存贮器块中的较旧的值而被修改;为第一高速缓存块分配第一相关状态以表示第一高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至该存贮器块;以及为第二高速缓存块分配第二相关状态以表示第二高速缓存块含有该修改值的一共享拷贝并且具有优先于任何要求该存贮器块的冲突请求的冲突优先级。
12.如权利要求11的方法,其特征在于还包括步骤发出与另一个高速缓存块相关的第一请求以要求所述存贮器块用于将来的修改;发出与第二高速缓存块相关的第二请求以要求所述存贮器块用于将来的修改,使得第二请求与第一请求冲突;以及根据所述发出第二请求的步骤取消第一请求。
13.如权利要求11的方法,其特征在于还包括从第一高速缓存块中将该修改值写入该存贮器块。
14.一种计算机系统,包括一系统存贮设备;一连接到所述系统存贮设备的总线;多个连接到所述总线的处理部件,每个所述处理部件具有至少一个用于存储来自所述系统存贮设备的值的高速缓存块;以及高速缓存相关装置,该装置用于(ⅰ)拷贝一个与所述系统存贮设备的一存贮器块相关的值至分别与第一处理部件和第二处理部件相关的第一高速缓存块和第二高速缓存块,其中该值已经相对于在所述存贮器块中的较旧的值而被修改;(ⅱ)为所述第一高速缓存块分配第一相关状态以表示所述第一高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至该存贮器块,以及(ⅲ)为所述第二高速缓存块分配第二相关状态以表示所述第二高速缓存块含有该修改值的一共享拷贝并且具有优先于任何要求所述存贮器块的冲突请求的冲突优先级。
15.如权利要求14的计算机系统,其特征在于,所述高速缓存相关装置还包括一装置,该装置用于(ⅳ)发出与另一个高速缓存块相关的第一请求以要求所述存贮器块用于将来的修改;(ⅴ)发出与所述第二高速缓存块相关的第二请求以要求所述存贮器块用于将来的修改,使得第二请求与第一请求冲突,以及(ⅵ)根据第二请求取消第一请求。
16.如权利要求14的计算机系统,其特征在于,所述高速缓存相关装置还包括用于从所述第一高速缓存块中将该修改值写入所述存贮器块。
17.一种在具有多个处理部件的多处理器计算机系统中保持高速缓存相关性的方法,每个处理部件具有至少一个高速缓存,其特征在于包括下列步骤拷贝一个与一存贮器块相关的值至分别位于第一高速缓存和第二高速缓存中的第一高速缓存块和第二高速缓存块,其中该第一高速缓存支持第一处理部件,该第二高速缓存支持第二处理部件,并且该值已经相对于在该存贮器块中的较旧的值而被修改;为第一高速缓存块分配第一相关状态以表示第一高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至该存贮器块;以及为第二高速缓存块分配第二相关状态以表示第二高速缓存块含有该值的一共享拷贝并且将排它地提供该修改值。
18.如权利要求17的方法,其特征在于还包括从第二高速缓存块中提供该修改值至位于支持第三处理部件的第三高速缓存中的第三高速缓存块的步骤。
19.如权利要求17的方法,其特征在于还包括从第一高速缓存块中将该修改值写入该存贮器块。
20.一种计算机系统,包括一系统存贮设备;一连接到所述系统存贮设备的总线;多个连接到所述总线的处理部件,每个所述处理部件具有至少一个用于存储来自所述系统存贮设备的值的高速缓存块;以及高速缓存相关装置,该装置用于(ⅰ)拷贝一个与所述系统存贮设备的一存贮器块相关的值至分别与第一处理部件和第二处理部件相关的第一高速缓存块和第二高速缓存块,其中该值已经相对于在所述存贮器块中的较旧的值而被修改,(ⅱ)为所述第一高速缓存块分配第一相关状态以表示所述第一高速缓存块含有该修改值的一共享拷贝并且负责将该修改值写回至该存贮器块,以及(ⅲ)为所述第二高速缓存块分配第二相关状态以表示所述第二高速缓存块含有该修改值的一共享拷贝并且将排它地提供该修改值。
21.如权利要求20的计算机系统,其特征在于所述高速缓存相关装置还包括用于从第二高速缓存块中提供该修改值至与第三处理部件相关的第三高速缓存块的装置。
22.如权利要求20的计算机系统,其特征在于所述高速缓存相关装置还包括用于从所述第一高速缓存块中将该修改值写入所述存贮器块的装置。
全文摘要
一高速缓存相关协议采用一“标记”相关状态以便跟踪用于将一修改值写回至系统存贮器的责任。当将该标记状态分配给一最近加载该修改值的高速缓存行时,该标记状态能够跨越一些高速缓存而(水平地)迁移。还可以使用与该标记状态相关的历史状态。本发明还可用于具有分成组的处理部件的多处理器计算机系统,使得该标记状态能够用于在支持单独的处理部件组的每一组高速缓存中的一个高速缓存行。
文档编号G06F12/08GK1226705SQ99101100
公开日1999年8月25日 申请日期1999年1月15日 优先权日1998年2月17日
发明者R·K·阿里米里, J·S·多森, J·D·刘易斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1