以高速缓存连贯性为基础的高速缓存线的预加载和预控制的制作方法

文档序号:6471447阅读:250来源:国知局
专利名称:以高速缓存连贯性为基础的高速缓存线的预加载和预控制的制作方法
发明的领域本发明通常涉及在计算机系统中的高速缓冲存储器,更具体地说涉及一个高速缓冲存储器管理系统,该系统提供预加载和预控制功能以便提高在共享存储器分布式高速缓存多处理器计算机系统中高速缓存的效率。
发明的背景多处理器计算机系统通常用于高性能的应用,因为和用单处理器系统相比它们可以提供更高的性能。利用多个处理器不能分别地提供相同的性能,这是因为多处理器计算机系统允许在多个处理器当中的计算任务的划分,这样可以减少在单处理器中完成一个给定任务需要的工作量。而且,多于一个的任务可以在单个的时间被执行,这时每个任务或线程在单独的处理器或处理器组上被执行,允许多处理器系统在某个时间内有效地提供多个功能服务。多处理器系统可以引入多种分派处理器资源的方法到它们执行的各种任务或线程,这些都被设计为利用该系统的功能实现在多于一个处理器上同时执行计算。
早期的多处理器系统典型地是大规模的大型机或巨型机,由几个装在相同物理单元中的处理器组成。近年来,多处理器系统有所发展,发展为包括阵列或互相连接的计算机网络或工作站,它们能以某种方式将它们自己的大规模的任务进行划分,该划分方式类似于传统多处理器系统中的任务划分,并且可以达到类似可观的效果。各种多处理器系统体系结构都有所发展,包括各种属性的组合,比如一个互相连接的多处理器工作站的网络,既在每个工作站中划分任务也在互相连接的工作站中划分任务。
使用多处理器处理任何结构的任务,处理器都必须存在这样一种结构,可以共享访问数据并且共享他们的计算结果。一个解决方案是使用一个集中式共享存储器,这个集中式共享存储器包括一个任何处理器可以访问的单独的存储器。其它系统中每个处理器或处理器组具有分布式的或独立的存储器,提供对存储器的更快速访问—相对一般可能在集中式存储器结构中的存储器比对每个处理器或处理器组来讲是本地的存储器更快速的访问。在这种系统中,相对于其它处理器或处理器组来讲本地的存储器可以被处理器所访问,但是这样做比访问本地存储器需要更长的时间。
所述的存储器,不论是集中式的还是分布式的,可以进一步是共享的或多地址型存储器。共享地址存储器是可以通过任何处理器访问的存储器,不论是分布式还是集中式的,都可以用其它处理器简化数据的通信。多地址存储器具有单独的存储器以用于每个处理器或处理器组,并且不许其它处理器或处理器组直接访问这个存储器。因此,多地址系统必须依靠消息在处理器之间共享数据。
高速缓存可被用于任何存储器结构,提供对处理器可能需要的数据的更快速访问,并且可以减少经由系统总线传送的通常使用的相同数据的请求。在高速缓存中储存数据提供了对该数据的更快速访问,因为高速缓冲存储器是一般要比使用普通的系统存储器更贵的,但也比使用普通的存储器更快的存储器类型。在分布式共享存储器系统中与每个处理器或处理器组相关的高速缓存都可能保持了相对于其它处理器来讲是存储在本地存储器中的数据的本地副本,这样也减少了经由系统总线检索这种数据的需要。
在存储器中每个有关存储块的信息通常存储在一个目录中,它指出哪个高速缓存有该存储决的副本,无论数据是有效的或无效的(修改过的),以及其它这种数据。该目录用于确定高速缓存连贯性,或确保系统可以决定在每个高速缓存中的数据是否是有效的。该目录还可以跟踪哪个高速缓存保存了将被写回到存储器中的数据,并且简化授权专用的写入访问一个处理器以便更新存储器。在存储器被更新之后,全部其它的存储器的缓存副本不再为当前的并且被标记为无效。
在这类高速缓存系统中,一般来讲,一个处理器请求专用的访问到或写入到一个具体的高速缓存线,使在其它的高速缓存中的该线的所有其它副本无效。在具有大型的高速缓存的系统中,大多数的高速缓存线是由于这些原因被无效而不是由于使用年限的原因而被替换,这使得高速缓存线的无效成为决定高速缓存性能的关键因素。因此需要一种方法以减少由授权专用的写入访问另一个处理器或通过另一个处理器对所述的线的修改所带来的高速缓存线无效而产生的影响。
附图的简要说明

图1表示一个根据现有技术的具有多个本地高速缓存的分布式共享存储器多处理器计算机系统。
图2表示一个根据现有技术的基于总线的具有多个本地高速缓存的共享存储器多处理器计算机系统。
图3表示一个根据本发明的实施例的具有多个本地的L1和L2高速缓存的分布式共享存储器系统的示范,实现了一个无效历史数据表格(IHT)。
详细说明在下面将详细说明本发明的实施例中的例子,并将参考作为说明书一部分的相关的附图进行说明,并且本发明中的附图所示的实施例是可以被实现的。这些实施例描述对熟悉本领域的技术人员来讲是足够详细的,是可以实施的,并且可以理解的是其它的实施例可以加以利用,并且在逻辑上、物理上、电的、及其它变化在没有脱离本发明的精神或范围的情况下是可以得到的。因此以下详细说明并不是仅限于此,并且本发明的范围仅通过附加权利要求书被定义。
本发明提供用于减少在分布式高速缓存多处理器计算机系统中有关高速缓存效率的高速缓存线无效的影响。表格1和2表示具有分布式高速缓存的多处理器系统的例子,包括如表格1所示的分布式共享存储器结构和如图2所示的基于总线的共享存储器结构。
表格1的分布存储器结构包括多个处理器,它们又包括在101的处理器1到在102的处理器n。每个处理器具有一个本地高速缓存103,这个本地高速缓存包括一个高速缓存控制器和一个本地存储器104。处理器和本地高速缓存通过总线105连接到其它的处理器及其相关联的存储器和高速缓存。在另一个实施例中,成排的处理器可以共享一个存储器104和一个高速缓存103,并且多个成排的处理器通过总线105互相连接。
图2中的基于总线的共享存储器结构也包括多个处理器,它们又包括在201的处理器1到在202的处理器n。每个处理器具有一个本地高速缓存203,该高速缓存包括一个高速缓存控制器,和通过总线204连接到其它的处理器及其本地高速缓存。总线204还用于连接每个本地处理器并缓存到公共的共享存储器205。
由于都有两种结构的本地高速缓存存储可能无效的数据的本地副本,这种无效的数据的本地副本的原因无论是由于被缓存的数据被另一个处理器改变且没有在全部本地高速缓存中更新,还是由于另一个处理器请求专用的写入访问该数据,存储在本地高速缓存中的数据没有必要保持有效,直到它被关联的本地处理器所需要。本发明提供的在一个实施例中硬件的形式来实现的方法以减少高速缓存线无效对高速缓存效率的影响。在一个实施例中本发明包括在每个高速缓存处本地记录由于无效而偶然地被放弃的高速缓存线,然后由于增加的可能性,这些被认为是预取候选者的线将被在近期重新使用。在一个实施例中数据是通过抄取(snarfing)预取的,包括在总线上的两个不同的装置之间截取被传送数据。这种抄取(snarfing)在下述情况下发生当一个远程的高速缓存传送一个线到请求设备的时候,或当一个改变的线被写回到存储器的时候。在本发明的一些实施例中选择性地经过总线广播那些被从一级高速缓存(L1高速缓存)写回到二级高速缓存(L2)的线,以便写回线数据可以通过其它具有相同线的~偶然无效的副本被抄取(snarfed)。
在高速缓存无效的补偿中,本发明以不同的实施例试图预测将来由于高速缓存线的无效而产生的高速缓存未命中。为了减少高速缓存连贯性未命中而采取的动作,比如脱离总线来抄取(snarfing)选择的数据而经过总线写回选择的数据以便简化选择的抄取(snarfing)的数据。
通过简化由于高速缓存无效所导致的高速缓存未命中的预测来确保高速缓存连贯性,在每个高速缓存中建立一个无效历史数据表格(IHT)用于记录两种类型连贯性无效活动中每一个。第一种,未修改的无效被记录在每个线,其中未修改的无效包括由于正被要求放弃独占状态或共享状态其中之一的线而带来的偶然的无效。未修改的无效线因此无效,也就是当一个未改变的高速缓存线必须由于另一个处理器的写入请求而偶然地牺牲掉专用的或共享的所有权的时候产生无效。第二种被记录无效是修改过的无效,其中在高速缓存线是无效的之前,高速缓存线中的数据已经改变。这种情况发生在一个改变的高速缓存线通过另一个处理器被请求的时候。
在本发明的一些实施例中利用了这种写回高速缓存,一个高速缓存未命中将导致在从存储器检索数据之前为请求的数据探听其它的高速缓存。该探听包括一个广播请求,该广播请求用于请求数据的其它高速缓存以确保数据检索的当前性,并且只有在该数据的当前副本没有在另一个高速缓存被发现时,才导致随后对存储器中的数据的请求。如果由探听活动引起从高速缓存到高速缓存的传输,则全部高速缓存读取抄取(snarf)被探听的数据的线地址,并且如果它还作为无效被存储在本地高速缓存而不是记录在IHT中,就使用该数据更新所述的线。在另一些实施例中,检索广播线或抄取(snarf)线的全部高速缓存在一个共享状态存储该线。
一般地说,该结果可以重新有效,该方法包括更新存储在无效高速缓存线中的数据或生成一个用于高速缓存线的、新的高速缓存线入口,每当特殊线的有效线数据在总线上广播时,所述的高速缓存线被记录在所述的IHT里。这种广播可以发生在从一个线所有者的高速缓存传输到一个正在请求的高速缓存以便响应一个读取未命中(高速缓存到高速缓存的传输)的时候,或发生在一个改变线被从所有者的高速缓存收回并且写回到存储器(改变写回)的时候。在一个高速缓存到高速缓存的传输中,只有当线是作为未修改的无效被记录在高速缓存的IHT里的时候数据才被抄取(snarfed)。修改过的无效的无效线不是从高速缓存到高速缓存抄取(snarfed)传输的,这是因为它被认为正在请求的高速缓存很可能不久将被更新,而使抄取(snarfed)线无效。
在一些实施例中,由于一条线被记录在IHT里,当它被抄取(snarfed)或预加载时,如果在它被再次无效之前不被查找,则所述的IHT将不会作为偶然被无效而再次记录该线。这就允许所述的IHT适应于其它使用相同数据的结点的需要。
在一些实施例中通过一个改变的写回进行触发,全部高速缓存抄取(snarfing)数据以共享状态接收所述的数据,而不管抄取(snarfing)是一个未修改过的无效的还是修改过的无效的IHT输入结果。这是因为数据的移动也就是改变数据然后将其写回,是以某种不可预期的顺序在处理器之中发生的。在一些实施例中给出的预控制请求响应读取高速缓存中的共享线,该高速缓存在IHT中具有所述线的、修改过的无效记录,预期该线将不久被改变。
作为IHT输入的结果且被抄取(snarfed)的预加载线在本发明的一些实施例中被安插在一个特殊的处理器或者处理器组的L1或L2高速缓存中。在另一些实施例中,预加载线被安插在一个独立的预加载缓存器中直到它们首次使用,在这时它们被提升到L2高速缓存。所述的预加载线在各种的实施例中占据高速缓存中的不同位置,从最近最少使用(LRU)到最近最多使用(MRU),其目的为了使用年限或最近最少使用高速缓存线的替换。在一些实施例中,如果是很快被使用,在最近最少使用数据位置或靠近最近最少使用位置安插预加载线可以通过从高速缓存人工转移预加载线以校正高速缓存污染问题。
在选择L1写回动作以便通过总线为可能的抄取(snarfing)广播时,总线的频带宽度必须被考虑。在许多系统中,不加选择的广播全部L1高速缓存写回动作可以使总线溢出并且延滞正常系统动作。在本发明的不同实施例中,使用两种由L1写回广播的方法来限定由L1写回广播所生成的总线业务量。第一种方法,在一个实施例中,L2连写通位是与每个L2高速缓存线输入有关的。只有当相应写通位已接通时,才会进行L1写回广播。这个写通位在处理器通过使其它的高速缓存线无效以获得线的所有权时才被设置。这种情况出现在读取或写入未命中而导致其它的高速缓存的无效之时。第二种方法,不广播写入线的地址和数据这两者,而只有当任何其它的IHT中发现相配的地址之后,数据才被发送。
在进一步的实施例中,如果写回线的写通位没有接通,从L1到L2高速缓存的写回就不用通过系统总线被写回到存储器中。在另一个实施例中,当写回线没有在另一个高速缓存的IHT中出现的时候,L1到L2的写回就没有写入到系统存储器中。这种规则限制存储器写回到多条线,这些线可能是其它的高速缓存所需要的线。这些规则用于进一步地限制通过系统存储器总线传输的数量,以便减少L1高速缓存写回动作给总线带来的溢出风险。
图3是本发明的一个示范实施例,结合了一个具有多个本地L1和L2高速缓存的分布式共享存储器系统。本实施例在处理器结301和302中实现一个无效历史数据表格(IHT)303和一个与在304所示的每个L2相关的写通位,以补偿由高速缓存连贯性的动作带来的高速缓存线的偶然丢弃。
在这个实施例的例子中,一个在308示出的无效类型位T被具体表现在每个IHT中比如在303处以表示相关的IHT输入是一个未修改过的还是修改过的无效。在304示出的写通位“W”记录将被用于通过总线305广播的L1高速缓存写回的候选者。另外,在306示出的一个预加载位P是与在L2高速缓存307中的每个输入有关的,以便识别由于早期未修改过的无效所预加载的高速缓存线。
当一个L2高速缓存读取未命中在总线305上被广播时,全部其它的处理器将在他们的L2高速缓存上查找所述的线。如果在任何一个高速缓存中发现了被改变的副本,所有者将传输该线到请求者并也更新了主存储器中的副本。如果该线作为未修改过的无效也被记录在其它处理器的IHT中,则所述的其它处理器将在高速缓存到高速缓存传输期间抄取(snarf)数据。在这种情况下,该线变成共享的。另外,一个未修改过的线在该线被抄取(snarfed)之后就从IHT中被清除。如306所示的L2高速缓存中的“P”位,在由于早期未修改过的无效使得该线被引入L2高速缓存的时候就被设置。一旦该线首次通过处理器被查找,所述的′P′位就被复位。只要“P”位保持接通,即使有其它的无效请求,所述的线也不会被再次记录在IHT中。
在上述情况中,即当改变的线没有作为未修改过的无效被记录在任何其它的IHT中的时候,初始的所有者将无效该线并且随着该数据传输所有权到请求者。在这种情况下,所述的线将作为修改过的无效被记录在初始的所有者的IHT里。其间,所述的请求者将接通写回位“W”,表示相应的线是L1写回广播的候选者。
当一个L2写入未击中在总线305上发布时,全部其它的处理器将在它们的L2高速缓存上查找所述的线。如果一个改变的副本在任何被搜索的高速缓存中被发现,所有者将随着线的所有权将线传输到请求者。所述的线从初始的所有者的高速缓存中被无效掉并且作为修改过的无效被记录在IHT中。所述的请求者将再次接通写回位“W”,表示相应的线是L1写回广播的候选者。换句话说,如果一个共享副本在一个或多个被查找的高速缓存中找到,则全部共享副本都将被无效并且作为未修改过的无效被记录在各自的IHT里。在这种情况下,所述的请求者也将接通与L2高速缓存中请求的线有关的“W”写回位。
当一个L1写回被接收并且所述的“W”位已接通时,一个早期的线的广播被触发。只要该线被记录在一个或多个IHT里,无论是作为修改过的无效还是未修改过的无效,全部处理器都将查找它们的IHT,并且抄取(snarf)该线。在这样一个例子中,该线变成共享的。当接收到一个L1读取未命中时,如果线是作为修改过的无效被记录在IHT里,而L2高速缓存线的状态是共享的,则一个预控制被触发,预期该线将在读取之后很快被改变。因为广播L1写回不是时间或连贯性决定的,如果总线非常忙,则广播可以被缓存或简简单单被丢弃。
类似地,来自L2高速缓存的改变的线的替换,将总是强迫一次写回,并且全部其它的处理器将接收在IHT上命中的数据,除了该线被从中收回的高速缓存。
除了上述讨论到的本发明的实施例,结合图3的系统,其它各种实施例是可能的,并且也在本发明的范畴内。一个与L2高速缓存线有关的IHT使用、预加载和写回位,都可以帮助减少由于授权专用写入访问另一个处理器所导致的高速缓存线无效的影响,或由另一个处理器的高速缓存线的改变所导致的高速缓存线无效的影响,从而提高了高速缓存效率。另一些实施例的作用是执行相同功能,比如使用独立的表格记录缓存的线地址,或使用其它存储信息设备,该信息可以包括本发明的一部分,而不仅限于典型实施例中描述的“W”和“P”位,这些都在本发明的范围内的。
虽然具体的实施例已经在此被图解和说明,对本领域的普通技术人员来讲,任何为了完成相同目的的方案都可以代替已经示出的具体实施例。本申请意欲涵盖本发明中任何的修改或变化。本发明仅由权利要求限定,并且完全等效它的范围。
权利要求
1.一个共享存储器多处理器计算机系统,包括多个处理器;一个连接多个处理器的总线;多个本地高速缓存;一个与每个本地高速缓存有关的高速缓存无效历史数据表格;和一个与每个本地高速缓存有关的高速缓存控制器,每个高速缓存控制器都可操作通过记录在无效历史数据表格中的无效的高速缓存的线地址以跟踪无效的高速缓存线,并且更进一步地可操作通过监控总线使记录在无效历史数据表格里的无效的高速缓存线重新生效而所述的总线用于记录在无效历史数据表格中的高速缓存线的高速缓存线地址、用于相关的高速缓存线数据,以及通过使用与被记录的高速缓存线地址有关的高速缓存线数据更新无效的高速缓存线数据使记录在无效历史数据表格里的无效的高速缓存线重新生效。
2.如权利要求1所述的共享存储器多处理器计算机系统,其中多个本地高速缓存对一个单处理器来讲是本地的。
3.如权利要求1所述的共享存储器多处理器计算机系统,其中多个本地高速缓存对一个包括多个处理器的结点来讲是本地的。
4.如权利要求1所述的共享存储器多处理器计算机系统,其中所述的多个本地高速缓存是L2高速缓存。
5.如权利要求1所述的共享存储器多处理器计算机系统,其中所述的多个本地高速缓存是写回高速缓存。
6.如权利要求1所述的共享存储器多处理器计算机系统,其中所述的高速缓存无效历史数据表格分别记录未修改过的无效和修改过的无效高速缓存线无效。
7.如权利要求6所述的共享存储器多处理器计算机系统,其中只有当线是作为已经被无效的、未修改过的无效而记录在高速缓存里的无效历史数据表格中时,一个高速缓存线才被重新生效。
8.如权利要求1所述的共享存储器多处理器系统,其中由于改变的写回,有效的高速缓存线数据呈现在总线上。
9.如权利要求1所述的共享存储器多处理器系统,其中所述的高速缓存控制器进一步地包括一个与在本地高速缓存中的输入有关的写回位,在对另一个处理器中的相同线的一次命中被检测到的时候,或者在当另一个处理器的高速缓存中的相同线是无效的时候,设置该写回位,并且只有当被写回的线使一个相关写回位被设定时,所述的系统才从一个选择的本地高速缓存中广播写回。
10.如权利要求9所述的共享存储器多处理器系统,其中选择的本地高速缓存是一个L1高速缓存。
11.如权利要求9所述的共享存储器多处理器系统,只有当相对于本地高速缓存是本地的处理器具有写入或专用的写入访问所述的线时,所述的写回位才被设置。
12.一个高速缓存控制器,所述的高速缓存控制器与一个本地高速缓存有关,所述的高速缓存控制器可操作通过记录在无效历史数据表格中的无效的高速缓存的线地址以跟踪无效的高速缓存线,并且更进一步地可操作通过监控总线使记录在无效历史数据表格里的无效的高速缓存线重新生效而所述的总线用于记录在无效历史数据表格中的高速缓存线的高速缓存线地址、用于相关的高速缓存线数据,以及通过使用与被记录的高速缓存线地址有关的高速缓存线数据更新无效的高速缓存线数据使记录在无效历史数据表格里的无效的高速缓存线重新生效。
13.如权利要求12所述的高速缓存控制器,其中所述的高速缓存控制器包括一个集成电路。
14.如权利要求12所述的高速缓存控制器,其中所述的高速缓存控制器包括一个处理器的一部分。
15.如权利要求12所述的高速缓存控制器,其中所述的高速缓存无效历史数据表格分别记录未修改过的无效的和修改过的无效的高速缓存线无效。
16.如权利要求15所述的高速缓存控制器,其中只有当线是作为已经被无效的、未修改过的无效来被记录在高速缓存无效历史数据表格中时,一个高速缓存线才被重新生效。
17.如权利要求12所述的高速缓存控制器,其中由于改变的写回,有效的高速缓存线数据呈现在总线上。
18.如权利要求12所述的高速缓存控制器,进一步地包括一个与在本地高速缓存中的输入有关的写回位,在对另一个处理器中的相同线的一次命中被检测到的时候,或者在当另一个处理器的高速缓存中的相同线是无效的时候,设置该写回位,并且只有当被写回的线使一个相关写回位被设定时,所述的系统才从一个选择的本地高速缓存中广播写回。
19.如权利要求18所述的高速缓存控制器,其中选择的本地高速缓存是一个L1高速缓存。
20.如权利要求18所述的共享存储器多处理器系统,其中只有当相对于本地高速缓存是本地的处理器具有写入或专用的写入访问所述的线时,所述的写回位才被设置。
21.一种控制高速缓存的方法,包括通过在一个无效历史数据表格中记录无效的高速缓存线的线地址来跟踪无效高速缓存线;和通过监控总线使记录在无效历史数据表格里的无效的高速缓存线重新生效,所述的总线用于记录在无效历史数据表格中的高速缓存线的高速缓存线地址、用于相关的高速缓存线数据,并且通过使用与被记录的高速缓存线地址有关的高速缓存线数据更新无效的高速缓存线数据使记录在无效历史数据表格里的无效的高速缓存线重新生效。
22.如权利要求21所述的方法,其中所述高速缓存控制器包括一个集成电路。
23.如权利要求21所述的方法,其中所述高速缓存控制器包括一个处理器的一部分。
24.如权利要求21所述的方法,其中所述的高速缓存无效历史数据表格分别记录未修改过的无效的和修改过的无效的高速缓存线无效。
25.如权利要求24所述的方法,其中只有当线是作为已经被无效的、未修改过的无效来被记录在高速缓存无效历史数据表格中时,重新生效才出现。
26.如权利要求21所述的方法,其中由于改变的写回,有效的高速缓存线数据呈现在总线上。
27.如权利要求21所述的方法,更进一步地包括设定一个与在本地高速缓存中的输入有关的写回位,在对另一个处理器中的相同线的一次命中被检测到的时候,或者在当另一个处理器的高速缓存中的相同线是无效的时候,设置该写回位,并且只有当被写回的线使一个相关写回位被设定时,所述的系统才从一个选择的本地高速缓存广播中写回。
28.如权利要求27所述的方法,其中选择的本地高速缓存是一个L1高速缓存。
29.如权利要求27所述的方法,只有当相对于本地高速缓存是本地的处理器具有写入或专用的写入访问所述的线时,所述的写回位才被设置。
全文摘要
本发明提供一个高速缓存管理系统,在各种实施例中包括预加载和预控制功能以便提高在共享存储器分布式高速缓存多处理器计算机系统中的高速缓存效率。在本发明的一些实施例中包含一个无效历史数据表格用于通过修改过的或未修改过的无效来记录无效的高速缓存线的线地址,使用上述技术可以得到如下效果通过监控一种总线,该总线用于记录在无效历史数据表格里的高速缓存线的线地址,这样就可以把记录在无效历史数据表格里的、无效的高速缓存线的高速缓存线地址重装入高速缓存中。在更进一步的一些实施例中,当命中另一个处理器的相同线被检测到的时候,或者当在另一个处理器的高速缓存中的相同线是无效的时候,一个与每个L2高速缓存输入都有关的写回位记录,并且仅当被写回的线具有已经被设置的写回位时,系统将在被选择的本地高速缓存中广播多个写回。
文档编号G06F12/08GK1447940SQ01814398
公开日2003年10月8日 申请日期2001年6月7日 优先权日2000年6月28日
发明者K·赖, W·-H·王, S·罗宾逊, J·-K·佩尔, S·张 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1