具有标记状态和历史信息的高速缓存相干性协议的制作方法

文档序号:6414763阅读:194来源:国知局
专利名称:具有标记状态和历史信息的高速缓存相干性协议的制作方法
技术领域
本发明一般涉及计算机系统,更具体地涉及一种高速缓存相干性协议,它为修改的数据提供一种新的相干性状态,从而改进高速缓存的插入操作而不必要求将插入的数据写至系统存储器。
常规多处理器计算机系统10的基本结构示于

图10中。计算机系统10具有多个处理单元,其中有两个12a和12b被描述,它们连至不同外设,包括输入/输出(I/O)设备14(例如显示器,键盘,图形指点器(鼠标)和永久存储设备(硬盘),供处理单元使用以执行程序指令的存储设备16(例如随机存取存储器或RAM)以及其主要用途是当第一次接通计算机电源时自外设中之一个(通常是永久存储设备)中找出并装载一个操作系统的固件18。处理单元12a和12b通过各种渠道与外设通信,包括通用的互连或总线20或存储器直接存取通道(未示出)。计算机系统10可具有许多未示出的附加部件,例如用于与例如调制解调器或打印机连接的串行和并行端口。还有可与图1框图中所示部件一起使用的其它部件;例如,可用于控制视频显示器的显示适配器,可用于访问存储器16的存储器控制器,等等。计算机也可具有两个以上处理单元。
在对称多处理器(SMP)计算机中,所有处理单元一般是都相同的,也即,它们都在运行中使用一套公共指令和协议集或子集,并一般具有相同体系结构。一种典型体系结构示于图1中。一个处理单元包括一个具有众多用于执行程序指令以操作计算机的寄存器和执行单元的处理器核22。一个示例性处理单元包括由国际商业机器公司推上市场的Power PCTM处理器。处理单元也可具有一个或多个高速缓存,例如可用高速存储设备实现的指令高速缓存24和数据高速缓存26。高速缓存通常用于临时存放可由处理器重复地存取的值,以便加速处理而省掉自存储器16中装载值的较长时间的步骤。当这些高速缓存与处理器核整体地封装在单个集成芯片28上时,它们称为“片上的”。每个高速缓存与一个高速缓存控制器(未示出)相关连,后者管理处理器核与高速缓存之间的数据和指令的传送。
处理单元可包括附加高速缓存,例如高速缓存30,由于它支持片上(级别1)高速缓存24和26,它被称为级别2(L2)高速缓存。换而言之,高速缓存30用作存储器16和片上高速缓存之间的中间级,并能存储比片上高速缓存所能存储的大得多的信息(指令和数据),但是存取开销大些。例如,高速缓存30可能是一片其存储容量为256或512仟字节的芯片,而处理器可能是一个具有其总存储量为64仟字节的片上高速缓存的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试图读取存储器中一个单元。它首先轮询它自已的L1高速缓存(24或26)。如该块不在L1高速缓存内,该请求即被送至L2高速缓存(30)。如该块仍不在L2高速缓存内,该请求则被送至较低高速缓存级,例如L3高速缓存。如该块不在较低级别高速缓存中,则该请求送至通用互连(20)上以供处理。一旦一个操作被置于通用互连上,则所有其它处理单元探听该操作并确定该块是否在它们的高速缓存内。如果一个给定处理单元具有一个其L1高速缓存中处理单元所请求的块及该块中的值被修改,则按照相容原理L2高速缓存和任何较低级别高速缓存也具有块的副本(然而它们的副本是过时的,因为处理器高速缓存中的副本已修改过)。因此当处理单元的最低级高速缓存(例如L3)探听读取操作时,它应确定被请求的块在较高级高速缓存中并被修改。当此事发生时,L3高速缓存在通用互连上放置一个消息,通知处理单元稍后时间必须“重试”其操作,因为存储器单元的实际值在存储器层次顶层L1高速缓存中,必须检索以使它可用来服务于原请求处理单元的读取请求。
一旦原请求处理单元的请求被重试后,L3高速缓存启动一个过程,以便自L1高速缓存中检索修改值,并按照准确实现细节将它提供给L3高速缓存、主存储器或两者。为自更高级高速缓存中检索该块,L3高速缓存通过高速缓存间的连接将消息送至更高级高速缓存,以请求检索该块。这些消息沿处理单元层次往上传送,直至它们到达L1高速缓存,并使该块沿层次往下移至最低级别(L3或主存储器)以便能服务于来自原请求单元的请求。
原请求单元实际上将读取请求重新送至通用互连上。然而此时修改值已自处理单元的L1高速缓存中检索出并置于系统存储器中,因此原请求处理器的读请求得到满足。刚才描述的方案通常称为“探听推动”。在通用互连上探听读取请求,使处理单元将块“推”至层次底部以满足原请求处理单元的读取请求。
关键是当处理器希望读取或写入块时,它必须将该愿望通知系统中其它处理单元以便维持高速缓存相干性。为做到这点,高速缓存相干性协议与高速缓存层次的每一级别中的每一块相关连,有一个状态标示器用于标示块的当前“状态”。状态信息用于使相干性协议得到一定优化,从而减少通用互连和高速缓存间连接上的消息通信量。举一个此种机制的例子,当一个处理单元执行读操作时,它接收一条消息,标示以后是否还要重试该读操作。如不重试读(原文借,已改)操作,则通常该消息还包括信息,用于让处理单元确定是否任何其它处理单元尚有该块的仍在工作的副本(其它最低级高速缓存为任何它们不重试的读操作发出一个“共享”或“不共享”标示,从而完成这点)。因此处理单元能确定系统中是否任何其它处理器具有该块的副本。如其它处理单元都没有此块的工作副本,则正读取的处理单元将该块状态标为“唯一”。如一块标定为唯一,则允许该处理单元随后写入该块而不必先与系统中其它处理单元连系,因其它处理单元都没有该块的副本。只当相干性协议保证其它处理器对该块都没有兴趣时,处理器才可能读或写一个单元而不必先将此愿望送上互连。
上述高速缓存相干性技术在称为“MESI”的专门协议中实现,并阐述于图2中。在此协议中,高速缓存块可有下列四种状态之一“M”(修改),“E”(唯一)。“S”(共享)或“I”(无效)。在MESI协议下,每个高速缓存信息单元(例如一个32字节扇区)具有两个附加位,用于标示该信息单元的四个可能状态中的一个状态。此状态可根据信息单元初始状态和原请求处理器所要求访问类型加以改变,并在原请求处理器高速缓存中为该信息单元设置特定状态。例如,当一个扇区处于修改状态时,只当该扇区位于具有修改的扇区的高速缓存中及当修改值尚未写回至系统存储器时,所访问的扇区才有效。当扇区为唯一时,它只在所提及的扇区中才存在,并与系统存储器一致。如扇区为共享,则它在这个和至少另一个高速缓存中都有效,所有共享的扇区都与系统存储器一致。最后,当扇区为无效时,这标示所访问扇区不在该高速缓存内。如在图2中所见的,如扇区不处于修改、共享或无效状态中的任何一个状态中时,它可根据具体总线事务处理在不同状态间变换。一个处于唯一状态中的扇区可变为任何其它状态,而一个扇区只有首先成为无效才能变为唯一。
可利用高速缓存相干性协议进一步改善对高速缓存块的访问。称为“插入”的此项改善允许控制存储器块的高速缓存将该块内数据直接提供给另一个请求数值的高速缓存(对读取操作而言),换言之,不必将数据写入系统存储器及再由原请求处理器自存储器读回来。插入只能由具有其状态为修改或唯一的块中的值的高速缓存完成。在这两种状态中,只有一个高速缓存块具有值的有效副本,所以在总线20上送(写)值而不必首先将它写入系统存储器是一件简单事情。插入过程因此加速处理过程而避免写入和读出系统存储器的较长过程(它实际上涉及三个总线操作和两个存储器操作)。此过程不仅能得到较好等待时间,还能得到增大的总线带宽。
作为插入过程的一部分,系统存储器的存储器控制器也能自具有修改状态的高速缓存线接收插入响应,以便存储器控制器知道当数据提供给其它处理器时以并行方式读取修改的数据。在过程末尾时,由于修改的数据将会被拷贝至系统存储器,在修改状态中保持数据的高速缓存将变为共享状态,同时其它处理器的高速缓存块也将自无效状态变为共享状态。在常规高速缓存相干性协议中,在插入操作时修改的数据必须写至系统存储器,虽然这可用并行方式执行以加速处理,但在许多场合中可能并不必要。例如,如果第一处理器中的修改的高速缓存块用于将数据提供给第二处理器中的高速缓存,而第二处理器可能会同样地进一步改变该数据,这将最终要求另一次对系统存储器的写操作。如果在第一处理器提供数据与第二处理器修改该数据之间的时间内没有其它处理器需要该数据(存储器块),则对系统存储器的第一次写操作(插入过程的一部分)是多余的。
有一个方案可避免对系统存储器的不必要写操作;即使处理器只需要读取数据也强迫第二处理器在修改状态中保持提供的数据。以此方式,第二处理器负责将来将数据写回系统存储器。然而,此种实现方案的主要问题是插入(第一个)处理器必须将它的高速缓存线设为无效状态以禁止共享数据;任何时候都只有一个处理器能读它,而该数据必须一直在处理器之间来回移动,产生多余总线通信量。因此希望提供一种维持高速缓存相干性的方法,允许数据能有效地插入,但能避免对系统存储器的不必要的写操作。如该方法允许修改的数据在高速缓存之间移动而不影响存储器但仍能使数据共享,则更为有利。
因此本发明的一个目的是提供一种在多处理器计算机系统中维持高速缓存相干性的改进的方法。
本发明的另一个目的是提供这样一种允许高速缓存插入但能避免对系统存储器的不必要写操作的方法。
本发明的又一个目的是提供这样一种允许插入修改的数据并允许数个不同高速缓存在共享状况下保持该数据的方法。
上述目的通过一种在多处理器计算机系统中维持高速缓存相干性的方法来达到,该方法使用“标记的”相干性状态以标示一条特定高速缓存线包含一个修改值(也即,与系统存储设备中相应存储器块不一致的值)及此高速缓存线至少在目前对将修改值写回至系统存储设备负责(或写至存储器层次中其它地方,即通过插入)。所有其它包含修改值的副本的高速缓存线(支持系统中其它的处理单元的线)被赋予第二相干性状态(共享),这也标示这些线包含修改值,但这些线不负责保证事实上用修改值更新系统存储器。此标记的状态可在高速缓存间(水平地)迁徙,它被赋予最近装载了最新修改值的高速缓存线。历史相干性状态可进一步用于标示特定的高速缓存线包含修改值并且最近已将它送出,以便当现有标记的高速缓存线例如作为最近最少使用算法的结果被逐出时将“第二”历史状态高速缓存线变换为标记状态从而解脱“第一”标记的高速缓存线的回写责任。
本发明也能用于具有众多组合成群集的处理单元和具有多个支持给定的群集的高速缓存级的多处理器计算机系统,以便将标记的相干性状态用于每个支持单独处理单元群集的高速缓存组中高速缓存线中的一条线。标记状态也能在这种群集系统的较低级中实现。
在优选实施例中,本发明所用每个相干性状态具有一个相关连的优先级,以便当有请求要访问一个块时,只有具有最高优先级的响应才送至原请求处理单元。使用纵横杆可将任何标记的插入响应只送给选择的会受插入响应影响的高速缓存。
标记的协议可与其它高速缓存协议相组合,例如包括“最近”状态的协议,该“最近”状态标示一个高速缓存包含一个最近刚被访问过的值的副本从而允许共享的插入。该“T”状态可进一步用于赋予碰撞优先级以要求一个存储器块,该碰撞优先级能改变来自其它高速缓存的互相冲突的请求(DClaim操作)。不必在单个标记的状态中将(ⅰ)插入数据,(ⅱ)跟踪将修改的数据写至存储器层次的责任,和(ⅲ)提供DCIaim碰撞优先级这三项功能组合在一起,而可以使用本发明的更复杂的实施单独地执行这些功能。
在下面详细的书写描述中本发明的上述和附加目的、特征和优点将更为明显。
在所附权利要求书中阐述了本发明的新颖特征和可信的特征。然而结合附图参阅阐述性实施例的下列详细描述,可以很地理解本发明本身,使用的优选模式,进一步的目的和它们的优点,附图中
图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中所示,高速缓存线也可自无效状态变至标记状态,自标记状态变至无效状态,及自标记状态变至共享状态。可进一步参照表1理解T-MESI协议的这一实施例,表1阐述三个不同处理器P0、P1和P2中特定高速缓存块的高速缓存相干性状态表1
在第一排中,所有三个处理器开始时的高速缓存块都处于无效状态。第二排中,处理器P0执行一个“读并企图修改”操作(RWITM),因此它的高速缓存线自无效变至修改,此后,处理器P1请求高速缓存线的读操作;处理器P0插入并变至共享状态,及处理器P1自无效状态变至标记状态(表1第三排)。以后处理器P2请求高速缓存线的读操作;处理器P1插入并变至共享状态,及处理器P2自无效状态变至标记状态(表1的第四排)。
表1还阐述即使一条处于T状态的高速缓存线未被释放它也可能被迫将数据写至系统存储器。当处理器需要写至一个块的许可时,有些处理器体系结构,包括PowerPCTM处理器,允许在RMITM指令之外执行一条特殊指令。“DClaim”指令是一个例子。在表1第五行中,处理器P1发送了一个对特定高速缓存线的DClaim请求;处理器P2探听该DClaim,发送一个重试消息,并试图将数据推至系统存储器。一旦完成推动该高速缓存线自标记变为无效,但处理器P0和P1中的高速缓存线仍为共享的。在重试后,处理器P2将再发送DClaim,并不会再重试,因此P0中的高速缓存线将变为无效,及P1中的变为修改。
某些修改的值可能在高速缓存间迁徙但实际上从未写至系统存储器。例如,考虑一个处理器请求一个早已保持在T状态中的值的RWITM,在“拥有”该值的高速缓存(处于T状态中的高速缓存)通过插入发送该值后其它处理器中所有保持在共享状态中的相应的高速缓存线及处于T状态中的高速缓存线都将变为无效的。执行RWITM的新处理器设为修改状态,因此先前保持于T状态中的值从不写至系统存储器。
T状态具有共享状态(由于在其它一个或多个处理器中该数据保持于共享状态中)和修改状态(由于该数据已经修改但尚未写回至系统存储器)两者的性质。的确,从CPU看来,T状态相当于S状态,但从系统总线看来,带有T状态的高速缓存线主要作为修改的块来对待。
在图3的实施例中,“T”状态在高速缓存线之间迁徙,而在另一可替换的实施例中,“T”状态保持于将值修改了的原处理器的高速缓存线中。换言之,于修改状态将值保持的高速缓存线将在将数据发送至另一处理器之时变为标记状态(而不是变为共享状态)。此可替换的实施例的状态图类似于图3,不同处是修改状态中的高速缓存线变换为标记状态而不是共享状态。这种可替换的实施例在一定结构中是需要的,以便使值在高速缓存中“老化”。例如,如高速缓存是多级(至少到L3),则通过将值自L2高速缓存推至L3高速缓存,此值可在以后更块地发送至其它L3高速缓存而不必让系统等待它自L2级中检索出。该值的推动可在后台方式下发生,例如作为LRU释放的结果而不是对特定总线操作的响应,因此其结果是更有效的总的操作。
本本明可在多处理器计算机系统中构成协议将特定相干性响应自所有与其它处理器相关连的高速缓存的探听者中传送至请求读操作的处理器中。本发明的一个实施例的响应按表2中格式构成表2
信号采取了位探听响应格式,其值(访问响应)和定义阐释于表2中。这些信号编码以便标示地址使用期以后的探听结果。表2显示一条共享线和一条干净(无效)线的响应及一个重试响应;这三个响应是在现有技术中都知道的。表2还显示四个新响应“标记插入”,“共享插入”,“远距状态”和“重运行”。当高速缓存块或在修改状态或在标记状态中保持值时,使用标记插入响应以标示它能插入该值,但请求该值的新高速缓存块必须临时负责将它复制回系统存储器(如下面所讨论的“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与正常MESI高速缓存混合起来的理由如何,协议的选择性实现也可用于诊断目的。
除根据原请求处理器使用标志以选择性地实现标记状态(异构支持)外,可提供一个系统标志以在全局基础上使用或禁止标记状态,也即使用系统逻辑中的一个一位域。例如,主处理器(原请求处理器)可能支持T-MESI协议,但该系统可能需要将修改值往下带至存储器层次中,例如带至垂直的L3高速缓存中。
如上所指出的,对于表1和2中所示状态和操作,根据现有技术MESI协议完成转移和相干性响应。下面诸点涉及图3中实施的T-MESI协议一个信息单元只当它当前处于无效状态中时才能变换为T状态(如它早已处于共享状态中,则它就只停留于共享状态中,及如一个高速缓存在T状态中保持一个值,则任何其它处于M或E状态中的高速缓存都不能保持它);以及一个标记的信息单元只能变换为共享的(在修改的插入响应时),无效的(在释放或DCIaim推动时)或修改的(如同一处理器进一步修改早已修改过的数据)。
使用此新的T-MESI协议时,块的拥有权迁徙至最后一个读取数据的高速缓存,这样做的附加优点是最新使用驻留,因此当使用最近最少使用(LRU)高速缓存替代机制时能减少释放机会。“T”高速缓存状态也能有利地用于其它应用场合。例如一个智能输入/输出(I/O)控制器可将最新地读取一个被高速存储的I/O状态单元的处理器/高速缓存中断,因为此处理器/高速缓存最有可能曾高速存储过I/O设备驱动程序码,因此能比其它处理器更快地执行该码,因其它处理器需要将该码读入它的高速缓存。当然,本发明的特别有利之处在于它允许共享那些修改过和插入过的数据。
“T”状态的另一方面是当处于此状态中的高速缓存线被释放时,所有处理器可通过通用互连看见此释放。此释放的可见性还有一个优点是它支持历史高速缓存状态信息。考虑一个相似于表1中阐述内容的例子,其中三个处理器所具有的相应的高速缓存线在起始时处于无效状态中。当第一处理器执行一条RWITM操作时,它的高速缓存线自无效的变换为修改的,及当第二处理器以后请求读取高速缓存线时,第一处理器插入该数据,将其高速缓存线变为共享状态,而第二处理器的高速缓存线则自无效状态变为标记状态(类似于表1的前三排)。然而现在第一处理器将其高速缓存线标定为具有共享状态的特殊形式,称为“ST”(共享-标记)。然后,如第三处理器在“T”状态中释放高速缓存线(例如通过LRU机构),第一处理器察觉到此释放并能将其处于“ST”状态中的高速缓存线变为不同状态以表响应;此不同状态决定于具体实施。例如,标记的高速缓存线可被写至系统存储器,及处于“ST”状态中的高速缓存线可变为特殊状态,称为“R”状态(最近访问),它可用于共享数据的插入。下面将进一步讨论“R”状态,这里收录的于1997年4月14日中请的美国专利申请系列号08/839,557中也有此点。
在替换的实施中,处于“ST”状态中的高速缓存线可跳过值的推动操作而简单地反转为“T”状态,而不是在释放时将修改的数据值自“T”状态高速缓存线写至系统存储器。由于共享-标记块是相同的,不必自标记的高速缓存块中复制数据;只是将高速缓存状态更新一下。这些步骤在表3的前四排中得到阐述表3<
>
使用共享-标记状态因此可使计算机系统在释放标记的高速缓存线之后维持插入操作,因而改善系统性能。
前四排阐述“ST”状态的使用,该状态起源于处于“M”状态中的高速缓存块的转换,而表3的后四排阐述标记的高速缓存块也可如何变为共享-标记的。第五和第六排显示在处理器间迁徙的“T”状态高速缓存块,处理器P1中的高速缓存块自“T”状态变为“ST”状态;原先为共享-标记的处理器P0中的高速缓存块变为共享。在第七排中,处理器P2中的高速缓存块被释放,使处理器P1中的高速缓存块自“ST”状态变回为“T”状态。此时即使有一块处于“S”状态中和另一块处于“T”状态中,但没有一个高速缓存块处于“ST”状态(如果共享-标记高速缓存线更早地释放,也会出现此情况)。然而,“ST”状态能再出现,例如末排中处理器P2请求另一个读操作。
此方法可如下实施由处于“T”状态中的高速缓存线广播一个合适的消息,表达愿望想依靠处于“ST”状态中的高速缓存块而避免系统存储器的写操作。如处于“ST”状态中的高速缓存线收到该消息,该高速缓存线发送一个合适的响应,接着处于“T”状态中的高速缓存线即简单地释放掉。如果没有响应(即没有一条高速缓存线处于“ST”状态中),则具有标记的高速缓存线的处理器在释放时必须将修改的值写至系统存储器中。
在上述共享-标记状态的实施中,在释放标记的高速缓存线时,只有一条高速缓存线可变为不同状态。在更精确的实施中,可提供多级别的历史高速缓存信息。例如,在任何给定时刻可有多块而不单是一块高速缓存块处于共享-标记状态中。根据每块共享-标记高速缓存块的历史级别可给它赋予一个序别号从而有利于实施,也即“ST1”状态用于刚将数据送至“T”高速缓存线的高速缓存线;“ST2”状态用于先前将数据送至“ST1”高速缓存线的高速缓存线;“ST3”状态用于先前将数据送至“ST2”高速缓存线的高速缓存线,以此类推,当一条标记的高速缓存线释放时,所有共享-标记高速缓存线提升一级,如表4中所阐述
表4
>在表4的前三排中,类似于表1和表3,处理器P0的高速缓存线变为修改的,接着将值送至处理器P1的已变为标记的高速缓存线。处理器P0的高速缓存线变为共享-标记第1级。在后两排中,标记的高速缓存线迁徙至处理器P2和P3,其中原先标记的高速缓存线变为共享-标记第1级。曾是共享-标记第1级的任何线变为共享-标记第2级,及在第五排中处理器P0中的线自共享-标记第2级变为共享-标记第3级。在第六排中,处理器P3中的高速缓存线由LRU机制释放;处理器P2中的“ST1”高速缓存线变为“T”状态,处理器P1中的“ST2”高速缓存线变为“ST1”状态,及处理器P0中的“ST3”高速缓存线变为“ST2”状态。
与LRU释放机制一起使用共享-标记状态级别的序别识别符再一次改善了性能,因为这减少了处于特定共享-标记第n级状态中的高速缓存线被释放的可能性,因而增加了修改的值停留在水平的高速缓存结构中的可能性。对历史高速缓存信息的级别数量的唯一限制是高速缓存线的高速缓存相干性状态域中的位数。
上述对本发明的描述一般适用于任何级的高速缓存体系结构,例如L2、L3等等,但在多级高速缓存的例子中,本发明使用一个略为不同的模型将更为有利。参照图4,所示的多处理器计算机系统40包括两个CPU群集42a和42b。CPU群42a具有四个CPU44a,44b,44c和44d,它们中每一个具有一个带有片上(L1)指令和数据高速缓存和一个L2高速缓存的处理器核。这四个CPU44a,44b,44c和44d的L2高速缓存都连至一个共享的L3高速缓存46a,后者通过通用互连或总线50连至系统存储器(RAM)48,CPU群42b类似地具有四个CPU44e,44f,44g和44h,它们中每一个也具有一个带有片上(L1)指令和数据高速缓存和一个L2高速缓存的处理器核。这四个CPU44e,44f,44g和44h的L2高速缓存都连至另一个共享的L3高速缓存46b,后者又通过总线50连至存储器48。在T-MESI协议的层次结构中,可多至三个相应的高速缓存线处于标记状态中CPU44a,44b,44c和44d的L2高速缓存之间的高速缓存线;CPU44e,44f,44g和44h的L2高速缓存之间的高速缓存线;及两个L3高速缓存46a和46b之间的高速缓存线。
考虑以下例子,其中CPU44a-44h中的所有相应的高速缓存线开始时都处于无效状态中。处理器44a执行一个RWITM操作,所以它的高速缓存线(L2)自无效状态变为修改状态;L3高速缓存46a中的相应的高速缓存线也自无效的变为修改的。因此,处理器44b请求高速缓存线的读操作;处理器44a进行插入及其高速缓存线(L2)变为共享状态,而处理器44b的高速缓存线(L2)自无效状态变为标记状态。L3高速缓存46a的高速缓存线仍为修改状态。以后处理器44e请求高速缓存线的读操作;处理器44b进行插入,但它的高速缓存线(L2)仍为标记状态,因为它和处理器44e处于不同CPU群中。然而处理器44e中的高速缓存线(L2)自无效状态变为标记状态。此外,由于插入的数据已通过两个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协议组合使用,例如以前提到过并还在前面提到的美国专利应用系列号08/839,557中讨论到的R-MESI协议。按照此协议,一个最近状态用于最后读取共享的数据的高速缓存,以允许提供共享插入响应。因此可设计一个组合RT-MESI协议,它的一个实施例示于图5中。在此混合协议中,一旦修改的值送至存储器层次中的其它一些单元(即送至其它高速缓存或系统存储器),处于标记状态中的高速缓存线即变为最近状态,及在送至其它单元时处于修改状态的高速缓存线类似地变为最近状态。表6显示一个例子表6
<p>表6中处理器P0、P1和P2中的所有三个相应的高速缓存线起始时都处于无效状态以及(类似于表1)当处理器P0在相应的存储器块上执行RWITM时,它的高速缓存线变为修改的。当处理器P1执行读操作时,它的相应的高速缓存线仍变为标记的,但处理器P0的高速缓存线现变为最近的而不是共享的(表6第三排)。此后,当处理器P2执行读操作时,它的高速缓存线变为标记的,而处理器P1的高速缓存线变为最近的,及处理器P0的高速缓存线变为共享的(表6第四排)。然后当处理器P2释放该块时(即由于LRU算法),处理器P1仍将该值保持于“R”状态中。以此方式,处理器P1可在将来通过共享插入响应发送该值。在此协议的另外方案中,唯一状态可以忽略而用最近状态有效地代替它。
熟悉技术的人知道可有RT-MESI协议的更复杂形式,例如使用前面提及的“ST”状态的混合版本,其中当现正在“T”状态中保持值的高速缓存线释放并假定该值被写回至系统存储器时,处于“ST”状态的高速缓存线变为“R”状态(而不是“T”状态)。可使用由多共享-标记状态提供的历史高速缓存信息设计类似实施例。此外,可利用图4的全局/局部高速缓存结构实现RT-MESI协议。例如,考虑在“M”状态中保持值的处理单元44d的局部高速缓存,然后它将该值送至处理单元44h。如前面一样,处理单元44h中的高速缓存线自无效的变为标记的,而现在处理单元44d中的高速缓存线可自修改的变为最近的。
“T”和“R”状态两者都提供一种机制,用于自一组共享一个值的高速缓存块中唯一地识别一个高速缓存块。如所指出的,这些状态的这一方面便于使用该块于插入操作。将该块唯一地标定还有其它优点。这涉及前面提到的DClaim操作。实际中许多处理器都可同时执行该操作,因而导致碰撞。“T”状态可用于赋给碰撞优先级,从而改变来自其它高速缓存的冲突的DClaim请求。通过提供这一碰撞优先级,来自“T”状态块的DClaim操作可被公布(即放于高速缓存操作队列中以便事实上广播至存储器层次的其余部分),但可立即完成DClaim存储指令,这样可实现系统的总的更快操作,如美国专利申请系列号08/024,587中所讨论的。
虽然“T”状态可有利地用于(ⅰ)插入数据,(ⅱ)追踪将修改数据写至存储器层次的责任和(ⅲ)提供DClaim碰撞优先级,但这三项功能不必组合在单个相干性状态中。表7在下面阐述更复杂的相干性协议,其中这些功能独立地被执行表7
表7中,左列标示特定高速缓存块的状态,而右列标示其它水平的高速缓存中相应的块的可能的相干性状态。此协议方案提供十五个相干性状态,所以相干性域需要四位。上述三个功能单独地赋值如下,首先,任何带有“D”下标的相干性状态(QD、QDT、RD、RDT、SD或SDT)允许公布一个DClaim操作(也即,如冲突的DClaim请求出现时这样的块将具有碰撞优先级)。其次,任何带有“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”状态是下面将提及的垫升状态。此实施例不使用“E”状态。
三个提到的功能是单独地实施的,然而可在特定相干性状态中组合起来。插入和回写责任两个功能在状态RT和QT中组合起来。插入和DClaim优先级两个功能在状态RD和QD中组合起来。回写责任和DCIaim优先级两个功能在状态SDr中组合起来。所有三个功能在状态QDT和RDT中组合起来。可使用数据流发动机通过设置系统位来控制这三个功能的独立性。此概念也可用于支持群集CPU的高速缓存。
最后,本发明也特别与“枞横杆”的使用兼容。现有技术高速缓存设计使用地址纵横杆和数据纵横杆两者以加强通信。高速缓存一般不具有点对点通信,但是必须以广播方式向存储器层次中其它单元发送请求和响应。纵横杆只是些用于将请求和响应送至总线上不同路径的开关或继电器以便更有效地使用总线。换言之,所有高速缓存都互连至纵横杆,及它维持一个队列以使高速缓存操作能均匀地分布于总线中不同路径之间,建立宽得多的总线频带。系统控制器可控制这些纵横杆。一个给定的高速缓存(如L2)必须通知纵横杆控制器该高速缓存必须观看有关给定标记的操作。
T-MESI协议与纵横杆一起是有用的,因一定地址和数据操作只提供给要求这些操作的设备。考虑四个处理单元的例子,其中一个具有处于“T”状态的高速缓存块,另一个具有处于“ST”状态的相应块,而其它两个则具有处于“I”状态的相应块。当后两个处理器中的一个请求读值时,系统逻辑可决定使最高优先级响应(标记的插入)应只送至四个处理器中的三个。因此,此地址操作不提供给第四个处理器(其块处于“I”状态的非请求处理器)。类似地,数据纵横杆可用于只将值本身提供给原请求处理器。如果使用标记插入响应改变重试响应的优先级方案,则该响应可能需要提供给重试的处理器。
虽然本发明是参照具体实施例描述的,但本描述并不意味着被解释为限制性的。熟悉技术的人参照本发明的描述将能理解所公开的实施例和本发明的可替换的实施例的不同修改。例如,此协议可与R-MESI协议以外的高速缓存相干性协议组合使用;美国专利申请系列号08/024,610描述了一个“H-MESI”协议,其中一条高速缓存线运行于“垫升”状态中以等待传送有效数据,以及H-MESI协议可与现有T-MESI协议相结合,例如当垫升的高速缓存线装载有效数据时,有一条处于“H”状态的高速缓存线变为“ST”状态。因此设想可在不背离所附权利要求书中所定义的本发明实质或范围的情况下做出这种修改。
权利要求
1.一种用于在多处理器计算机系统中维持高速缓存相干性的方法,该计算机系统具有多个处理单元,每个处理单元具有至少一个高速缓存,该方法的特征在于包括以下步骤自第一处理单元的第一高速缓存线将修改值送至第二处理单元的第二高速缓存线,该修改值对应于计算机系统的系统存储设备的一个存储块;将第一相干性状态赋予第一高速缓存线以标示第一高速缓存线包含修改值并最近刚送出修改值,及标示修改值尚未写至系统存储设备的存储块;以及将第二相干性状态赋予第二高速缓存线以标示第二高速缓存线包含修改值并将唯一地送出修改值,及标示修改值尚未写至系统存储设备的存储块。
2.权利要求1的方法,其特征在于进一步包括在所述自第一高速缓存线将修改值送至第二高速缓存线的步骤之前,自第三处理单元的第三高速缓存线将修改值送至第一处理单元的第一高速缓存线的步骤。
3.权利要求1的方法,其特征在于进一步包括在自第一高速缓存线将修改值送至第二高速缓存线之后,自第二高速缓存线将修改值送至第三处理单元的第三高速缓存线的步骤。
4.权利要求1的方法,其特征在于每个处理单元具有一个处理器核,并进一步包括以下步骤自第一处理单元的第一处理器核将修改值装入第一高速缓存线;以及在所述送出步骤之前,将第三相干性状态赋予第一高速缓存线以标示第一高速缓存线唯一地包含修改值。
5.权利要求1的方法,其特征在于进一步包括以下步骤释放第二处理单元的第二高速缓存线;以及向第一处理单元广播一条消息,声称第二高速缓存线正被释放中。
6.权利要求2的方法,其特征在于进一步包括在所述自第一高速缓存线将修改的值送至第二高速缓存线的步骤之后,将第三相干性状态赋予第三高速缓存线以标示第三高速缓存线包含修改值并以前已将修改值送至第三处理单元以外的一个处理单元的步骤。
7.权利要求3的方法,其特征在于进一步包括以下步骤在所述自第二高速缓存线将修改值送至第三高速缓存线的步骤之后,将第三相干性状态赋予第一高速缓存线以标示第一高速缓存线包含修改值并以前已将修改值送至第一处理单元以外的一个处理单元;以及在所述自第二高速缓存线将修改值送至第三高速缓存线的步骤之后,将第一相干性状态赋予第二高速缓存线以标示第二高速缓存线包含修改值并在最近刚送出修改值。
8.权利要求5的方法,其特征在于进一步包括响应于所述广播步骤,将一个相干性状态赋予第一高速缓存线以标示第一高速缓存线将在第二高速缓存线被释放之后送出修改值的步骤。
9.权利要求7的方法,其特征在于进一步包括在所述自第二高速缓存线将修改值送至第三高速缓存线的步骤之后,将第二相干性状态赋予第三高速缓存线以标示第三高速缓存线包含由第三处理单元以外的一个处理单元修改的修改值的步骤。
10.权利要求8的方法,其特征在于所述将一个相干性状态赋予第一高速缓存线以标示第一高速缓存线将在第二高速缓存线被释放之后送出修改值的步骤是通过将第二相干性状态赋予第一高速缓存线而完成的。
11.权利要求8的方法,其特征在于所述释放步骤是使用一个最近最少使用释放机制而完成的。
12.一个计算机系统,包括一个系统存储设备;一个连至所述系统存储设备的总线;众多连至所述总线的处理单元,所述处理单元中的每一个具有至少一条用于存放来自所述系统存储设备的值的高速缓存线;以及高速缓存相干性装置,用于(ⅰ)自第一个所述处理单元的第一高速缓存线将修改值送至第二个所述处理单元的第二高速缓存线,修改值与所述系统存储设备的一个存储块相关连,(ⅱ)将第一相干性状态赋予所述第一高速缓存线以标示所述第一高速缓存线包含修改值并最近刚送出修改值,及标示修改值尚未写至系统存储设备的存储块,以及(ⅲ)将第二相干性状态赋予所述第二高速缓存线以标示所述第二高速缓存线包含修改值并将唯一地送出修改值,及标示修改值尚未写至系统存储设备的存储块。
13.权利要求12的计算机系统,其特征在于所述高速缓存相干性装置进一步包括用于在自所述第一高速缓存线将修改值送至所述第二高速缓存线之前,自第三个所述处理单元的第三高速缓存线将修改值送至所述第一处理单元的所述第一高速缓存线的装置;以及用于在自所述第一高速缓存线将修改值送至所述第二高速缓存线之后,将第三相干性状态赋予所述第三高速缓存线的装置,所述第三相干性状态标示所述第三高速缓存线包含修改值并以前已将修改值送至所述第三处理单元以外的一个处理单元。
14.权利要求12的计算机系统,其特征在于所述高速缓存相干性装置进一步包括用于在所述自所述第一高速缓存线将修改值送至所述第二高速缓存线的步骤之后,自所述第二高速缓存线将修改值送至第三个所述处理单元的第三高速缓存线的装置。
15.权利要求12的计算机系统,其特征在于修改值是自所述第一处理单元的第一处理器核装入所述第一高速缓存线的;以及所述高速缓存相干性装置进一步包括用于在所述第一高速缓存线送出修改值之前将第三相干性状态赋予所述第一高速缓存线的装置,所述第三相干性状态标示所述第一高速缓存线唯一地包含修改值。
16.权利要求12的计算机系统,其特征在于所述高速缓存相干性装置进一步包括用于响应于所述第二高速缓存线的释放,向所述第一处理单元广播消息的装置。
17.权利要求14的计算机系统,其特征在于所述高速缓存相干性装置进一步包括用于在自所述第二高速缓存线将修改值送至所述第三高速缓存线之后,将第三相干性状态赋予所述第一高速缓存线以标示所述第一高速缓存线包含修改值并以前已将修改值送至所述第一处理单元以外的一个处理单元的装置;用于在自所述第二高速缓存线将修改值送至所述第三高速缓存线之后,将所述第一相干性状态赋予所述第二高速缓存线以标示所述第二高速缓存线包含修改值并最近刚送出修改值的装置;以及用于在自所述第二高速缓存线将修改值送至所述第三高速缓存线之后,将所述第二相干性状态赋予所述第三高速缓存线以标示所述第三高速缓存线包含由所述第三处理单元以外的一个处理单元修改的修改值的装置。
18.权利要求16的计算机系统,其特征在于所述高速缓存相干性装置进一步包括用于响应于所述消息将所述第二相干性状态赋予所述第一高速缓存线以标示所述第一高速缓存线将在所述第二高速缓存线被释放之后送出修改值。
19.权利要求18的计算机系统,其特征在于所述处理单元中的每一个还包括使用最近最少使用释放机制将所述高速缓存线释放的装置。
全文摘要
一种高速缓存相干性协议使用一种“标记”相干性状态以追踪将修改值写回至系统存储器的责任,允许插入该值而不必立即将它写回至系统存储器,因而增加存储器频带。该标记状态能赋予最近刚装载修改值的高速缓存线,从而在高速缓存间(水平地)迁涉。能进一步使用与标记状态有关的历史状态。本发明也能用于具有群集处理单元的多处理器计算机系统,以使标记状态能用于支持单独处理单元群集的每个组中的高速缓存线中的一条。可将优先级赋予不同高速缓存状态,包括标记状态,以响应于访问相应存储块的请求。
文档编号G06F12/08GK1229951SQ9812599
公开日1999年9月29日 申请日期1998年12月31日 优先权日1998年2月17日
发明者拉维·库玛·阿里米利, 约翰·史蒂文·多德森, 杰里·唐·刘易斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1