一种在具有多系统总线的计算机系统中保持存储器相关性的系统和方法

文档序号:6413130阅读:224来源:国知局
专利名称:一种在具有多系统总线的计算机系统中保持存储器相关性的系统和方法
背景技术
为了提高具有单一中央处理部件的计算机的性能,计算机设计者已经开发了具有多个中央处理部件的计算机。有时,在这种多处理计算机中这些中央处理部件互相连接并通过单一公用总线与系统主存储器连接。然而,近来,中央处理部件的性能的提高快于总线性能技术。较快的内部中央处理机性能需要更多的外部带宽。即,在公用总线上传输的数据总量必须增加以支持已增强的中央处理性能。结果,可以连接到公用总线上的中央处理机的数量受限于需要支持中央处理机的带宽和公用总线的总带宽。
一种降低在多处理系统中每一个处理机要求的总线带宽的方法是放置一个高速缓存部件在每一个处理机和公用总线之间。一旦数据装入处理机的相关高速缓存部件,该处理机就能访问高速缓存部件中的数据而不使用公用总线。一般来说,当处理机从它的高速缓存部件中获取数据时,很少数据通过有限的公用总线带宽传输。
在许多情况下,处理机将多次修改特定的数据值。每次数据值修改时,需要依次将数据值再写回主存储器。然而,将修改的数据值再写回主存储器,增加了支持处理机需要的总线带宽量。因此,如果写操作次数能减少,则需要支持处理机的总线带宽就能减少。
一种高速缓存部件,能降低写操作次数,称为“回写”高速缓冲存储器。回写高速缓冲存储器临时存储已修改的数据值,因而降低将数据值写回主存储器需要的总线事务数。例如,处理机可以多次在回写高速缓冲存储器中修改数据值而不用将数据写回主存储器。回写高速缓冲存储器保证已修改的数据最后被写回到主存储器。
当回写高速缓存器能很有效地减少多处理系统需要的总的总线带宽时,不幸的是,回写高速缓存产生存储器相关性问题。例如,每一个回写高速缓存器包含它自己的数据值的拷贝。在这种情况下,如果不止一个处理机可以独立地修改一个数据值,那么同一数据值的不同的版本可能存在于不止一个回写高速缓存器中。这将产生错误的操作,结果,某些机构必须保证所有的处理机在任何时候对所有的数据值有一个一致的版本。
例如,当处理机修改数据值时,在已修改的数据值写回到主存储器之前已修改的数据值存在于回写高速缓存器中。在本例中,在回写高速缓存把已修改的数据值写回到主存储器之前,主存储器和另一个高速缓存部件一直包含陈旧的数据值的拷贝。然而,为了保持数据完整性,请求该数据值的另一个处理机,必须获取最新版本的该数据值,而不是陈旧的数据值。
保证所有的处理机有一个所有的数据值的一致版本的过程称为高速缓存相关性。一套普遍和成功的提高高速缓存相关性方法依赖于所称的“探询操作”。一般来说,当多种探询操作存在时,在高速缓存部件中的探询操作监控该公用总线上的总线事务。探询操作标识哪一个事务影响高速缓存部件的内容或者哪一个事务涉及存在于高速缓存部件中的已修改的数据。探询操作一般要求所有的处理机和与它们相关的高速缓存部件共享一个公用总线。当特定的高速缓存部件包含一个已修改的数据值时,共享公用总线允许高速缓存部件来监控总线事务和有效地干预总线事务。
高速缓存相关性方法一般也利用相关性状态信息,该信息指示在高速缓存部件中特定的数据值是否是无效的、已修改的、共享的、专门被占用的,等等。当很多高速缓存相关性方法存在时,两个流行的版本包括MESI高速缓存相关性协议和MDESI高速缓存相关性协议。MESI缩写表示已修改的、独占的,共享和无效的状态,而MDESI缩写表示已修改的、被占用的,独占的、共享和无效的状态。
状态的含义从一个实现变化到另一个。普遍地说,已修改的状态通常表示特定的高速缓存部件已经修改了特定的数据值。独占的状态和被占用状态通常表示特定的高速缓存部件可以修改数据值的拷贝。共享状态通常表示数据值的拷贝可以存在于不同的高速缓存部件,而无效状态表示在高速缓存部件中的数据值是无效的。
操作中,高速缓存部件探询总线操作并使用相关性状态信息来保证高速缓存相关性。例如,假定具有第一高速缓存部件的第一处理机,希望获取一个特定的数据值。而且,假定具有第二高速缓存部件的第二处理机,包含一个已修改的数据值版本(相关性状态信息指示在第二高速缓存部件中的数据值处于已修改的状态)。
在本例中,第一处理机使读总线请求初始化以获取该数据值,第二高速缓存部件探询读总线请求并确定它包含数据值的已修改的版本,第二高速缓存部件然后通过公用总线插入和传送已修改的数据值给第一处理机。根据该系统,已修改的数据值可以或者不可以被同时写到主存储器。
在另一例中,假定第一处理机希望专门占有特定的数据值。而且,假定第二高速缓存部件包含一个未修改的、共享的数据值拷贝(相关性状态信息表示数据值在第二高速缓存部件中处于共享状态)。在本例中,第一处理机使请求专用数据的读总线请求初始化。
第二高速缓存部件探询读总线请求并确定它包含共享数据值的拷贝。第二高速缓存部件然后通过将数据值的相关性状态信息变成无效状态使它的共享数据值无效。将数据值的相关性状态变成无效状态使在第二高速缓存部件内的数据值无效。第一处理机然后完成读总线请求并从主存储器中获取该数据值的拷贝以专门使用。
在带有单一公用总线的多处理系统中,当探询操作保持高速缓存相关性时,具有较强功能的计算机包含不止一个总线以便每个总线与带有多处理机的主存储器互连;然而,因为一个公用总线具有它能支持的处理机数的增长极限,多总线系统可能有必要实现要求的性能水准。一个与多总线相关的问题是在一个总线上的处理机不能监控由其他总线上的处理机初始化的事务。结果,探询操作不能在多总线计算机中保持存储器相关性。
在多总线系统中保持高速缓存相关性的一种方法是将在每个总线初始化的总线事务扩展到所有的其他总线。不幸的是,这种方法致使所有总线的组合总线带宽负荷传输给每个总线。正如所预料的,这显著降低了系统性能并排除了多总线的益处。
第二方法基于被称作根目录的高速缓存相关性方法。IEEEScaleableCoherentInterconnect是一个多总线根目录高速缓存相关性系统的例子,在目录模式下,该处理机不探询总线事务。反而,主存储器子系统通过存储额外的拥有实际数据的信息保持存储器相关性。
在主存储器子系统中的额外信息一般表示为1)哪一个处理机或者哪些处理机已经获取一个数据值的拷贝,2)该数据值的相关性状态。例如,额外的信息可以指示不止一个处理机共享同一数据值。在另一个例子中,额外的信息可以指示只有单一处理机具有修改一个精确的数据值的权利。
当处理机请求数据值时,主存储器子系统确定它是否具有该数据值的最新版本。如果没有,主存储器子系统从拥有最新的数据值的处理机中传送最新的数据值给请求处理机。或者,主存储器能指示请求处理机,其他哪个处理机具有最新的数据值。
因为关于每个数据值的最新的版本的位置的信息被主存储器子系统保存,所以该处理机不需要“探询”总线事务。然而,保持这种目录,能给系统增加费用,这是由于必须为在主存储器中的每个数据值保持的附加信息的缘故。另外,为主存储器中的每个数据值保持目录也能使系统性能降低,这是由于需要定位和传送需要的数据给请求处理机的时间的缘故。
另一种根目录的系统应该是总线互连,它存储与实际上存储在高速缓存部件内的数据值相关的相关性状态信息。这样,不是随主存储器增加而成比例增加的存储器(如基于目录的模式),而是存储量仅涉及组合的高速缓存部件的更小尺寸。然而,这种方法,需要多总线系统来在每一个高速缓存部件中存储与所有的数据值相关的相关性状态信息的双份拷贝。
例如,SunMicrosystem’sUltraSparc系统使用总线交换来互连多总线,其中每个总线与具有内部高速缓存部件的处理机通信,总线交换保持与高速缓存部件中所有的的数据值相关的相关性状态信息的双份拷贝。在UltraSparc系统中,总线交换能保持相关性状态信息双份拷贝,因为在UltraSparc系统中,处理机被配置来提供准确的信息,即那个数据值正被替换而允许外部高速缓存标记可被保持。
然而,这种总线交换,不适合于许多现有的处理机,因为它们不输出准确的高速缓存数据替换信息。例如,许多常规处理机仅在它们的内部高速缓存部件内保持准确的相关性状态信息。这样,其他设备不能确定一个数据值何时从内部高速缓存部件中移出,没有关于内部高速缓存部件内的相关性状态信息的准确信息,总线交换不能保持相关性状态信息的双份拷贝。
发明概述本发明提供一种高速缓存相关的、多总线系统,该系统有效地增加单一总线系统的总的处理机性能极限。本发明知道多总线、多处理系统需要一种低等待时间、高带宽系统,该系统1)将多系统总线和多I/O设备与共享主存储器互连以及2)有效地保持高速缓存相关性而减小对系统内等待时间和总的带宽的影响。附属发明用“相关性滤波器”来说明这些问题,“相关性滤波器”允许总线-到-总线通信并列,以这种方式保持高速缓冲存储器相关性而减少交叉总线通信量的过量。
在本发明优选的实施例中,系统总线、I/O总线及存储器部件通过多端口总线交换耦合。这种总线交换不仅连接任何系统总线或者I/O总线到任何存储器部件,而且处理交叉总线通信量。另外,优选的总线交换包含总线接口逻辑,该逻辑确定需要应答总线事务的操作。然而,本发明不限于这种多端口总线交换并能被利用于多种其他总线互连,例如,当独立的总线桥用于数据路径时。
在多总线、多处理系统中,为了保证高速缓存相关性,每个支持高速缓存器的总线具有一个分配的相关性滤波器。每个相关性滤波器包含标记控制器,循环编码器和规则表。另外,每个相关性滤波器耦合到标记存储器。一般来说,每个标记控制器与所有的标记存储器接口。每个循环编码器确定哪种总线事务正发生在循环编码器的分配总线上,每个规则表确定什么总线事务或者事务群必须保持高速缓存相关性。
现在,来看标记存储器,每个标记存储器保持以下记录1)定位于与标记存储器的分配总线连接的高速缓存部件中的数据值的地址,及2)与数据值相关的高速缓存相关性状态。众所周知,每个在主存储器中的数据值用相应存储器地址来标识。在优选的实施例中,标记存储器存储标识数据值,而不是实际数据值的数据值地址。除存储数据值地址之外,优选的标记存储器也存储与数据值地址相关的相关性状态信息。
例如,假定第一相关性滤波器和第一标记存储器分配给第一总线。还假定在第一总线上的第一处理机从主存储器中请求数据值。第一相关性滤波器保持在第一标记存储器中的存储器地址的记录。另外,第一相关性滤波器还存储与第一标记存储器中的存储器地址相关的相关性状态信息。
在存储器事务中被访问的数据总量从系统到系统变化。在大多数常规系统中,当处理机执行存储器读事务时,该处理机访问足够的存储器以填充该处理机的内部高速缓冲存储器的一部分。一般来说,内部高速缓冲存储器在所称为的高速缓存线中存储多数据值。
众所周知,在常规计算机处理系统中的存储器被分成8位数量(字节),16位数量(字)和32位数量(双倍字)。在许多当前的32位处理机中,主存储器被设计成双倍字(32位)边界。在大多数32位处理机中,每个高速缓存线能保持多双倍字。
一般情况下,当处理机请求数据值时,该处理机获取足够的数据以填充整个高速缓存线。例如,在PentiumPro处理机中,每个内部数据值在长度上变化,但不超过64个位。然而,PentiumPro的高速缓存线,保持32位字节数据(256位)。当PentiumPro处理机希望从主存储器中获取数据值时,它一般获取需要填充一个高速缓存线的8个数据值(256位)。
在常规系统中,每个高速缓存线由高速缓存线地址来标识。例如,在PentiumPro系统中,高速缓存线具有与高速缓存线中的最低数据值的存储器地址相同的高速缓存线地址。然而,因为每个高速缓存线包含32位字节数据,所以每一个高速缓存线的高速缓存线地址较短并且不包括5个最低地址位。在优选的实施例中,每个分配给特定的总线的标记存储器存储高速缓存线地址。
除存储高速缓存线地址之外,每个标记存储器也存储与高速缓存线地址相关的相关性状态。相关性状态涉及高速缓存部件中的高速缓存线状态。在优选的实施例中,相关性状态包含三个不同的相关性状态无效状态、共享状态或者被占用状态。
无效状态表示高速缓存线无效以及存储高速缓存线的高速缓存入口为空并能存储新的高速缓存线。共享状态表示处理机具有高速缓存线的拷贝,但没有修改权。共享高速缓存线,例如,时常是没有被修改的程序指令或者是主读数据项目。被占用状态表示高速缓存线可以被已经获取高速缓存线的处理机修改。
然而,在本领域中的普通技术人员可以理解,高速缓存线的相关性状态不只限于无效,共享和被占用协议。实际上,本领域的技术人员知道,相关性状态可能用大范围的相关性协议来实现,如已修改的、独占的、共享和无效的(MESI)协议,已修改的、独占的、专用的、共享和无效的(MDESI)协议,已修改的、共享的、无效(MSI)协议,两状态无效和被占用协议,Berkeley协议,UniversityofIllinois相关性协议,数字设备的Firefly协议,XeroxDragon协议,等等。优选的实施例利用了无效、共享和被占用协议,这是因为它能有效地与利用MESI协议的PentiumPro处理机连接。
在许多常规处理机中,这些处理机有内部高速缓存部件,内部高速缓存部件不输出关于存储于内部高速缓存部件内的高速缓存线的准确的相关性状态信息。例如,内部高速缓存部件可以废弃未修改的高速缓存线而不发出高速缓存线已经被废弃的信号。在另一个实例中,内部高速缓存部件可以获取具有高速缓存部件没有修改的修改优先权的高速缓存线。在本例中,高速缓存部件可以废弃高速缓存线而不发出高速缓存线已经被废弃的信号。结果,监控高速缓存部件的设备可以认为高速缓存部件具有高速缓存线的一个已修改的拷贝,而这时高速缓存线实际上已经废弃高速缓存线。然而,在优选的本发明的实施例中,每个标记存储器特别适应于为不输出当前的相关性状态信息的内部高速缓存部件保证高速缓存相关性。
本发明的一个重要方面是每个标记存储器通过保持可能当前保持在内部高速缓存部件中的高速缓存线地址的超集,来保证高速缓存相关性。这样,在标记存储器中的高速缓存线地址的超集可以指示在高速缓存部件中的特定的高速缓存线处于共享状态,而这时高速缓存部件实际上已经废弃高速缓存线。在其他情况下,标记存储器中高速缓存线地址的超集可以指示高速缓存部件中特定的高速缓存线处于已修改的状态,而这时,高速缓存部件实际上已经将高速缓存线写回到主存储时器。
为了保持高速缓存线地址的超集,优选的相关性滤波器使用所称作的涵盖规则。涵盖规则保证存储于与特定的总线连接的高速缓存部件中的高速缓存线地址总是分配给总线的标记存储器中的高速缓存线地址的子集。因为每个相关性滤波器监控所有的由它的相关的总线访问的高速缓存线,所以与每个被访问的高速缓存线相关的地址被保持于分配给总线的标记存储器中。当高速缓存线地址必须从一个标记存储器中被删除时,涵盖规则指示相关的高速缓存部件以从它们的高速缓冲存储器中删除高速缓存线。
例如,当标记存储器没有存储器容量以保持新的高速缓存线地址时,必须通过从标记存储器中排除一个现存的高速缓存线地址(旧的高速缓存线地址)来为新的高速缓存线地址在标记存储器内准备空间。如果旧的高速缓存线地址处于无效状态(与总线连接的高速缓存部件不再使用与旧的高速缓存地址相关的高速缓存线),分配给标记存储器的相关性滤波器简单地用新的高速缓存线地址替换旧的高速缓存线地址。
然而,当旧的高速缓存线地址处于共享或者被占用状态时,相关性滤波器不能从标记存储器中排除旧的高速缓存线地址,直到高速缓存部件使旧的高速缓存线地址无效。如上所述,优选的标记存储器保持高速缓存线地址超集,这样旧的高速缓存线地址必须在旧的高速缓存线地址能用新的高速缓存线地址替换之前首先在高速缓存部件中被无效。
相关性滤波器通过执行无效总线事务使高速缓存部件中的旧的高速缓存线地址无效。无效总线事务指示与总线连接的高速缓存部件以在内部使旧的高速缓存线地址和它相关的高速缓存线无效。
例如,假定具有第一高速缓存部件的第一处理机和具有第二高速缓存部件的第二处理机被连接到第一总线,第一总线有一个被分配的相关性滤波器和一个标记存储器。而且,假定第一高速缓存部件包含处于共享状态的第一高速缓存线。在本例中,标记存储器包含第一高速缓存线地址和共享状态信息。另外,假定第二处理机初始化请求第二速缓冲行的读总线事务。最后,假定标记存储器没有存储器容量给第二高速缓存线地址。
在本例中,相关性滤波器需要排除第一高速缓存线地址为第二高速缓存线地址准备空间。然而,在相关性滤波器能排除第一高速缓存线地址之前,相关性滤波器必须执行使第一高速缓存部件中的第一高速缓存线地址无效的总线事务。为了使第一高速缓存地址行无效,相关性滤波器执行一个无效总线事务,该无效总线事务指示第一高速缓存部件以使与第一高速缓存线地址相关的高速缓存线无效。
当执行无效总线事务时,相关性滤波器暂停用于第二高速缓存线地址的读总线事务,因为第一高速缓存线地址处于共享状态(第一高速缓存线没被修改),第一高速缓存部件响应无效总线事务并使第一高速缓存线无效。完成无效总线事务之后,相关性滤波器用第二高速缓存线地址替换标记存储器中的第一高速缓存线地址。
然而,在某种情况下,第一高速缓存部件可能已修改第一高速缓存线(例如,第一高速缓存线处于被占用状态)。如果第一高速缓存线处于被占用状态,第一相关性滤波器再执行使第一高速缓存线无效的无效总线事务。然而,如果第一高速缓存部件已经修改了第一高速缓存线,则第一高速缓存部件通过执行写总线事务来响应无效总线事务,该写总线事务将已修改的第一高速缓存线写回到主存储器。
在将已修改的第一高速缓存线写回到主存储器之后,第一高速缓存部件使第一高速缓存线无效。相关性滤波器然后用第二高速缓存线地址替换标记存储器中的第一高速缓存线地址。这样,在某种情况下,保持在标记存储器中的高速缓存线地址的一个超集要求高速缓存部件在无效标记存储器中的高速缓存线之前将已修改的数据写回到主存储器。
在优选的实施例中,每个相关性滤波器使用直接映象技术存储标记存储器中的高速缓存线地址。直接映象技术指定每个高速缓存线地址被映象到标记存储器中特定的标记入口。尽管优选的实施例使用直接映象技术时,本领域的普通技术人员知道许多不同的技术能被用来设定标记存储器内的高速缓存线地址。例如,替代直接映象技术,标记存储器完全可以使用相关映象技术。在一个完全相关系统中,任何高速缓存线地址能存在于任何标记入口。在其他实施例中,每个高速缓存线地址只能被存储在于两个不同的标记入口(双向组关联)之一,或者四个不同的标记入口(四向组关联)之一,等等。
现在,来看优选的实施例中的直接映象技术。每个高速缓存线地址用作索引来标识特定的标记入口。在优选的实施例中,标记存储器中的入口数定义称为标记页的长度。最好是,耦合到每个系统总线上的标记存储器具有同一标记页长度。标记页长度与该处理机的高速缓存的总的高速缓冲存储器量有关。而且,耦合到I/O总线的标记存储器在长度上较小,这是因为一般耦合到I/O桥的小高速缓存部件。
标记页不应该与主存储器页混淆。众所周知,在本领域中,计算机的物理存储器地址空间一般能被设成称为存储器页的多扇区,其中每一个存储器页包含多高速缓存线。存储器页由处理系统定义并且是独立的标记页。
在优选的实施例中,高速缓存线地址标识1)标记页,它包含高速缓存线地址,2)在标记页内的高速缓存线地址位置。特别地,高速缓存线地址中的高位标识标记页而低位标识在标记页内的高速缓存线地址位置。
一般来说,低位被称为索引,因为低位标识标记内高速缓存线地址位置。例如,对于第一标记页内的第一高速缓存线地址,高地址位标识第一标记页,低地址位标识第一记页内的第一高速缓存线地址位置。
在优选的实施例中,在相关性滤波器内的标记控制器直接将高速缓存线地址映象到标记存储器。例如,当与第一总线连接的处理机初始化请求特定的高速缓存线地址的总线事务时,第一标记控制器评价高速缓存线地址。第一标记控制器使用较低地址位作为索引以标识第一标记存储器中的特定的标记入口。第一标记控制器然后在已标识的标记入口中存储高位(标记页)。
在优选的实施例中,标记存储器用静态存储器实现。静态存储器实现允许每个标记控制器在总线事务期间快速访问每个标记存储器。而本发明被应用于静态存储器,在本领域中的普通技术人员,也知道不同类型的存储机构可以被用来实现标记存储器。更可取地,不同类型的存储机构会提供存储器与总线时钟频率相等的访问速度以达到最佳性能。
当两个高速缓存线地址映象到同一标记入口时,标记控制器排除在先的高速缓存线地址为新的高速缓存线地址准备空间。如上所述,这种过程能延迟与新的高速缓存线地址相关的总线事务,直到旧的高速缓存线地址已经被无效。而且,无效旧的高速缓存线地址可以要求附加总线事务来保证标记存储器保持一个存在于高速缓存部件中的高速缓存线地址超集。
在本发明的一个实施例中,每个相关性滤波器还包含无效队列,该队列保持旧的高速缓存线地址和新的高速缓存线地址而不暂停与新的高速缓存线地址相关的总线事务。这能提高系统性能,因为使旧的高速缓存线无效的无效总线事务能发生在晚些时候。
现在,来看在多总线中保持高速缓存相关性,优选的相关性滤波器确定监控它们的分配总线上的总线事务时何时需要交叉总线事务。特别地,每个相关性滤波器中的循环编码器监控每个发生在相关性滤波器的被分配的总线上的总线事务。在优选的实施例中,循环编码器使用公知的监控总线控制行的总线监控逻辑。循环编码器然后传输1)总线事务的类型和2)在与总线事务相关的标记存储器中的高速缓存状态信息给相关性规则表。
现在,来看规则表,规则表确定何时执行交叉总线事务以保证高速缓存相关性。在优选的实施例中,规则表确定是否执行部分根据标记存储器中的相关性状态信息的交叉总线事务。例如,如果第一总线上的总线读事务标识特定的高速缓存线地址,则分配给第一总线的规则表评价在分配给另一个总线的标记存储器的(远程标记存储器)高速缓存线地址的相关性状态。
利用来自远程标记存储器中的相关性状态信息,规则表确定远程总线事务是否必须保证高速缓存相关性。如下面更详细描述的,在特定的相关性滤波器中,标记控制器访问远程标记存储器和输入高速缓存状态到规则表中。另外,循环编码器确定总线事务类型和输入总线事务信息给规则表。
在优选的实施例中,规则表作为大的真值表起作用。使用总线事务信息和远程标记存储器信息,规则表确定哪一个交叉总线事务或者总线事务组必须保持高速缓存相关性。
例如,假定处理机初始化第一总线上的读总线事务。在本例中,初始化总线事务的第一总线指局部总线,而多总线系统中的另一个总线被称为远程总线。读总线事务传输要求的高速缓存线地址给分配给局部总线的相关性滤波器(局部相关性滤波器)。局部相关性滤波器然后评价高速缓存线地址是否存在于分配给远程总线的标记存储器(远程标记存储器)中。
本例中的远程标记存储器指示要求的高速缓存线地址的相关性状态为无效状态。在这种情况下,没有必要执行交叉总线事务来保持高速缓存相关性,因为远程总线中的高速缓存线地址是无效的。目此,局部相关性规则表将总线事务限制给局部总线和主存储器,在远程总线上不产生总线事务。将总线事务限制给局部总线,降低交叉总线通信量。
然而,如果远程标记存储器指示需要交叉总线事务,规则表确定合适的交叉总线事务或者用以保证高速缓存相关性需要的事务组。例如,一个远程标记存储器可以指示高速缓存线地址为被占用状态,这样,与远程总线连接的高速缓存部件可能具有一个已修改的高速缓存线版本。如果远程标记存储器指示高速缓存线地址处于被占用状态,局部规则表指示与远程总线连接的总线主控制器(busmaster)逻辑需要执行在远程总线上的总线读命令来保证高速缓存相关性。
当执行在远程总线上的总线读命令时,远程高速缓存部件探询总线读命令并确定它们是否具有一个已修改的要求的高速缓存线版本。如果远程总线上的一个远程高速缓存部件返回一个已修改的高速缓存线版本,则规则表正向传送高速缓存线给局部总线上的请求处理机。
然而,如果远程总线上没有一个高速缓存部件已修改高速缓存线,则高速缓存部件不响应总线读命令。规则表然后确定最新的高速缓存线存在于主存储器中。因此,本发明传输主存储器中最新的高速缓存线给局部总线上的请求处理机。这样,本发明优选的实施例使用标记存储器中的高速缓存线地址超集来确定何时需要交叉总线事务来保持高速缓存相关性。
本发明的另一方面包括第三总线,用于连接输入/输出设备。在优选的实施例中,这种第三总线称为输入/输出(I/O)总线。优选的I/O总线与另一个处理机总线为同一类型总线;然而,本领域的普通技术人员知道I/O总线和其他每个处理机总线可以使用不同的总线协议。
优选的I/O总线以与其他处理机总线类似的方式进行操作。在高性能计算机中大多数I/O传送用直接存储器访问(DMA)传送来完成。DMA传送通常由I/O设备初始化,I/O设备直接在主存储器和I/O设备之间移动数据而不用直接的中央处理机介入。在发生在I/O总线的I/O事务上保持存储器相关性避免在每个DMA传送之前和之后高速缓存部件中的高速缓存线溢出另一类型的I/O传送包括由处理机直接编程访问I/O数据。在优选的实现中,总线交换正向传送直接I/O传送给I/O总线并正向传送所有的存储器访问,而不是对主存储器地址空间的访问给I/O总线作为存储器映象的I/O传送。这种I/O传送不包括高速缓存相关性,但是,如下面更详细描述的,被从一个总线到另一个总线以特定的方式传输。
优选的I/O总线包含I/O相关性滤波器和I/O总线接口,I/O总线接口提高I/O映象通过多系统总线和提高I/O数据处理及降低系统总线复杂性。发生在总线上的I/O数据事务被自动地传送给I/O总线。另外,在I/O总线上产生的事务被送到目的总线而不扩展总线事务给另一个总线。
本发明的另一个方面优化在多总线之间的通信。例如,常规总线交换将不同的总线与独立连接路径互连。这样,在常规多总线系统中,第一总线和第二总线通常与独立连接路径互连,第一总线和第三总线与另一个独立连接路径互连,而第二总线及第三总线也与另一个独立连接路径互连。如所期望的,这种独立的连接路径增加总线交换实现的复杂性。
例如,当第一总线希望传送第一总线事务给第二总线时,第一总线将第一总线事务放置于第一队列,该第一队列将第一总线与第二总线连接。第二总线然后从第一队列的输出中获取第一总线事务。同样当第二总线希望传送第二总线事务给第一总线时,第二总线将第二总线事务放置于第二队列,第二队列将第二总线与第一总线连接。第一总线然后从第二队列的输出中获取第二总线事务。
因此,两个总线要求两个队列。当附加总线互连时需要更多的队列。例如,在一个三-总线系统中,每个总线-到-总线连接需要两个队列。结果,三-总线系统需要六个队列。
然而,在优选的实施例中,应用总线交换的特定的方法,用可由所有的总线访问的存储器单元多端口池降低这种系统复杂性,利用这种独特的总线交换,数据能从任何总线流向任何其它总线而不干涉其他可以同时发生的数据传送。如下面更详细描述的,从每个总线来的总线传送进入公用存储器单元池。在公用存储器池中的总线事务然后被传送给它们的目的总线。有利地,任何总线能从任何其它总线读或者写给任何其它总线,而不使用独立连接路径。
在优选的实施例中,与每个总线事务相关的信息被存储于三个不同的被称作数据单元、请求单元和地址单元的存储器单元。数据单元存储与总线事务相关的数据。请求单元包含总线事务信息,总线事务信息定义传送给目的总线的总线事务的类型。最后,地址单元包含有关总线事务的地址信息和相关性状态信息。
在优选的实施例中,一一对应关系存在于每个数据单元,每个请求单元和每个地址单元之间。这样每个数据单元、请求单元或者地址单元,或者这些单元任何的组合可以包含为特定的总线事务的信息。而优选的实施例使用三个存储器单元来保持总线事务信息。总线事务信息可能存在于少于或者超过三个的存储器单元。
一般,数据单元、请求单元和地址单元能被视为存在于多端口存储器的单一池中。尽管,在优选的实施例中,数据单元、请求单元和地址单元位于不同的单元,但它们继续保持它们的一一对应关系。在优选的实施例中,数据接口缓冲器包含数据单元而系统访问控制器包含地址单元和请求单元。
现在,来看优选的数据接口缓冲器,在数据接口缓冲器中的每个数据单元为多端口并可由所有的总线访问。每个数据单元包含与特定的总线事务相关的数据。有利地,在数据接口缓冲器中的数据单元池与总线数据路径互连。
现在,来看优选的系统访问控制器,系统控制器包含中央请求表、缓冲器管理器、多个总线主控制器和多个总线从设备。众所周知在该领域中,每一个总线主控制器将在总线之一上的总线事务初始化而每个总线从设备接收由连接到总线之一的另一设备初始化的总线事务。中央请求表保持请求单元池,缓冲器管理器保持地址单元池。
在中央请求表中的每个请求单元为多端口并由所有的总线访问。每一个请求单元包含目标总线标识符,也被称作总线事务代码的动作代码,和占用者总线标识符。目标总线标识符标识特定的目的总线,总线事务代码标识特定的总线事务以及占用者总线标识符标识发端总线。
现在,来看缓冲器管理器中的地址单元的池。每个地址单元为多端口并且包含“在-使用”信息,存储器地址和数据单元状态信息。地址单元中的在-使用信息指示是否地址单元可以使用。在优选的实施例中,在-使用信息包括在-使用位,在-使用位被设定来指示是否地址单元处于使用或者空闲状态。在某种情况下,当在-使用位被设定为空闲时,有效数据可以存在于数据单元。这允许优化,它再使用空闲数据单元中的有效的数据。
另一方面,存储器地址包含与总线事务相关的存储器地址而数据单元状态指示数据单元中的数据状态。除地址单元池之外,缓冲器管理器也包括地址单元优先级编码器,多先进先出(FIFO)存储器及多地址比较器。地址单元优先级编码器确定哪个地址单元正在使用及哪个地址单元是空闲的以接收新的总线事务信息。在优选的实施例中,地址单元优先级编码器通过评价每个地址单元中的在-使用信息确定哪个地址单元是空闲的。
地址单元优先级编码器不仅确定哪个地址单元是空闲的。而且分配空闲地址单元给不同的总线,更为可取地,地址单元优先级编码器分配空闲地址单元给不同的总线。在分配空闲地址单元给总线之后,地址优先级编码器设定在-使用位以指示地址单元不是空闲的。例如,假定在三个总线系统中,优先级编码器确定三个地址单元是空闲的。优选的优先级编码器分配第一空闲地址单元给第一总线,第二空闲地址单元给第二总线以及第三空闲地址单元给第三总线。
当第四地址单元变成空闲时,地址单元优先级编码器循环回到第一总线并且分配第四地址单元给第一总线。当优选的地址单元优先级编码器使用这种技术来分配空闲地址单元给不同的总线时,本领域中的普通技术人员可以理解地址单元优先级编码器能利用大范围的分配模式来分配空闲地址单元给不同的总线。
现在,来看缓冲器管理器中的FIFO存储器,FIFO存储器临时存储被分配的地址单元直到它们被总线需要。在优选的实施例中,FIFO存储器存储地址单元标识符,此标识符标识被分配的地址单元。地址单元标识符是一种数据变量,它包含被分配的地址单元的存储器位置。总线使用地址单元标识符以访问由地址单元标识符标识的地址单元存储器位置。
在优选的实施例中,每个FIFO存储器分配给特定的总线。而且,每个FIFO存储器耦合到总线从设备之一和分配给同一总线作为每个FIFO存储器的相关性滤波器之一。当总线从设备之一或者相关性滤波器之一希望发送总线事务给另一个总线时,它们从它们分配的FIFO存储器中获取地址单元标识符之一。
例如,假定在第一总线上的第一处理机希望发送数据值给在第二总线上的第二I/O设备。在本例中,第一总线从设备被连接到第一总线。当第一处理机初始化发送数据值给第二I/O设备的总线事务时,该总线事务由第一总线从设备接收。第一总线从设备然后确定总线事务需要正向传送给第二总线。
因此,第一总线从设备访问缓冲器管理器中的第一FIFO存储器并获取地址单元标识符。使用地址单元标识符,第一总线从设备访问已标识的地址单元,并存储数据值地址以及如果必要,也包括地址单元的数据值的相关性状态。在相应请求单元中,第一总线从设备用目标总线标识符指定第二总线,用动作代码(也被称作总线事务代码)指定总线事务代码,以及用占用者总线标识符指定第一总线。而且,第一总线从设备存储与总线事务相关的数据值在相应的数据单元。
在不同的实例中,假定分配给第一总线的第一高速缓存相关性滤波器确定高速缓存线访问需要在第二总线上的总线事务以保证高速缓存相关性。在本例中,第一高速缓存相关性滤波器访问缓冲器管理器中的第一FIFO存储器并获取地址单元标识符。
第一相关性滤波器使用地址单元标识符以访问已标识的地址单元。第一相关性滤波器然后存储高速缓存线地址和相关性状态信息在地址单元中。另外,在请求单元中,第一相关性滤波器用目标总线标识符指定第二总线,用总线标识符指定合适的总线事务代码和第一总线。然而,在本例中,相应数据单元仍然为空,因为高速缓存线数据不需要保证高速缓存相关性。一旦总线事务信息已经加到该单元,则适当的总线必须获取总线事务信息和执行要求的总线事务。
在优选的实施例中,中央请求表中的多个总线优先级编码器连接到请求单元。如上所述,请求单元中的目标总线标识符标识目的总线,一般来说,总线优先级编码器评价请求单元中的目标总线标识符以确定哪一个总线应执行总线事务。
例如,假定请求单元中的目标总线标识符指定第一总线和第二总线。在本例中,第一总线优先级编码器评价请求单元中的目标总线标识符来标识哪个请求单元给第一总线,而第二总线优先级编码器评价目标总线标识符以标识哪个请求单元给第二总线。
除标识目的总线之外,每个总线优先级编码器也确定哪一个与特定的总线相关的总线请求单元具有最高优先级,在优选的实施例中,每个总线优先级编码器使用循环技术确定最高优先级总线请求单元。循环技术保证每个总线优先级编码器依次地分配最高优先级给总线请求单元。
每个总线优先级编码器正向传送最高优先级总线请求单元给总线主控制器之一。如上所述,除具有总线标识符之外,请求单元也包含总线事务代码。总线主控制器然后执行在请求单元中标识的总线事务。在某种情况下,如下面更详细描述的,执行事务的总线需要将数据写回到将总线事务初始化的总线。在这种情况下,总线主控制器将使用数据单元来存储回写数据并再使用请求单元来与发端总线通讯。如上所述,发端总线是由存在于请求单元的占用者总线标识符标识的。然而,对于总线事务的完成,总线主控制器设定地址单元500,请求单元600和数据单元700为空闲。
当总线主控制器执行总线事务时,总线优先级编码器标识分配给它的总线的下一个最高级优先级请求单元并正向传送请求单元给总线主控制器。当总线优先级编码器到达分配给它的总线的最后一个总线请求单元时,总线优先级编码器循环写回到分配给它的总线的第一总线请求单元。在循环基础上分配最高优先级给每个总线请求单元,保证每个总线请求单元最后被正向传送给总线。因此,当新的请求单元加到中央请求表时,每个总线优先级编码器获取对新的请求单元立即的访问并分配最高优先级。
在本发明的另一个方面,缓冲器管理器包含多个标识地址冲突的地址比较器,一般来说,当两个不同的总线事务涉及同一数据值并同时发生时,地址冲突增加。在这种情况下,可能出现两个总线事务对同一数据可以同时试图存在于地址单元、请求单元和数据单元。如所预料的,这种地址冲突能导致不正确的结果。
在优选的实施例中,地址比较器组分配给每个总线。每组地址比较器与相关性滤波器之一,及总线从设备和缓冲器管理器中所有的地址单元之一耦合。对每个总线事务,分配给总线的地址比较器将总线事务地址与地址单元中所有的地址进行比较。如果地址冲突被查出。为保证正确的操作,必须进行下面详细的合适的动作。
附图简述通过阅读下面的详细的描述和参考附图,本发明的这些方面以及其他方面优点和新颖性就变得非常明显

图1是一个优选的多总线、多总线系统的框图。
图2是一个优选的系统访问控制器的框图。
图3是一个优选的相关性滤波器和标记存储器的框图。
图4是一个优选的高速缓存线地址和优选的标记存储器的框图。
图5A和5B是优选的缓冲器管理器的框图。
图6是一个优选的中央请求表的框图。
图7是一个优选的数据接口缓冲器的框图。
图8是一个流程图,表示已述及在总线读命令期间保持存储器相关性方法。
图9是一个流程图,表示优选的在总线无效命令期间保持存储器相关性的方法。
图10是本发明的另一实施例中的无效队列框图。
在这些图中,任何3位数字的第一位表示图号,在该图中,首先出现该部件。例如,带有参考序号402的部件首先在图4中出现。另外,类似的参考序号在整个附图中使用,表示部件之间的对应关系。
优先实施例的详述优选的实施例提供一种高速缓存相关性,多总线系统,该系统1)将多系统总线和I/O总线与共享主存储器互连,以及2)有效的保持高速缓存相关性而减小对系统内的等待时间和总的带宽的影响。特别地,本发明包括相关性滤波器,它以这种方式调整总线-到-总线通信来用小的交叉总线通信量保持高速缓冲存储器相关性。
尽管本发明参考优选的多总线系统进行了描述,但本发明不只限于此,并能被使用于多种其他多总线内容。为了便于充分理解本发明,详细描述的提示组成下面部分及小部分Ⅰ.词汇与缩写索引Ⅱ.优选的多总线系统概况Ⅲ.系统访问控制器A.相关性滤波器1.标记存储器2.标记控制器
3.循环编码器4.规则表B.缓冲器管理器C.中央请求表Ⅳ.数据接口缓冲器Ⅴ.保持高速缓存相关性A.处理总线读行命令B.处理总线读使行无效命令Ⅵ.其他实施例Ⅶ.结论Ⅰ.词汇和缩写索引ASIC专用集成电路。
BRL命令。总线读行命令。总线读行命令读总线上的高速缓存线BRIL命令。总线读使行无效命令。总线读使行无效命令读并使在总线上的高速缓存线无效。
总线主控制器(BusMaster)控制特定的总线事务的控制逻辑。在某些一个以上的设备共享公用总线的系统中,每个设备具有内部逻辑以成为总线主控制器。在总线主控制器执行总线事务之后,总线主控制器放弃总线以便另一个设备能成为总线主控制器。这种设备包括处理机,I/O设备。存储器控制器,等等。
总线从设备(BusSlave)从总线主控制器中接收总线事务的控制逻辑。
总线探询(BusSnooping).一种由带有高速缓冲存储器的处理机使用来监控由其它处理机执行的存储器事务的技术DIB.数据接口缓冲器。
DEFER#信号.DEFER#信号延迟总线事务。在优选的PentiumPro总线中,DEFER#信号不是一个信号而是特定的发出DEFER#信号的含义的控制信号的编码。
DEN#信号.DEN#信号指示何时总线事务能被延迟。延迟总线事务不按顺序执行。即,如果第一总线事务被延迟,则第二总线事务在延迟的第一总线事务之前被完成。发出总线事务的处理机通过认定它的DEN#信号指示总线事务是否可以延迟。
FIFO.先进先出存储器。FIFO是一种存储器阵列,它以与项目被增加的同一顺序输出项目。即,第一项目进,第一项目出。
HIT#信号.在优选的实施例中,每一个处理机具有HIT#信号,HIT#信号在总线上线连在一起。处理机产生HIT#信号来指示数据值为共享。例如,当第一处理机请求数据值时,第二处理机监控总线事务并产生HIT#信号,这时第二处理机包含被请求的数据值的拷贝。
HITM#信号.在优选的实施例中,每一个处理机具有HITM#信号。当总线探询操作指示一个已修改的数据值存在于高速缓冲存储器中时,处理机认定HITM#信号。
I/O输入/输出.一般指输入/输出设备的输入/输出事务。
PCI总线.外部设备互连总线。
处理机(Processor).在整个详细的描述中,处理机表示计算或控制部件。处理机通过总线事务与主存储器通讯并且可以包括中央处理部件,微处理器,智能的输入/输出设备,以及任何其它存储,处理或者传送信息设备。
RAM.随机访问存储器,SRAM.静态随机访问存储器。
SDRAM.同步动态随机访问存储器。
探询命中(SnoopHit).在处理机探测它的高速缓冲存储器包含在特定的存储器事务中被请求的数据时出现探询命中。
Ⅱ.优选的多总线系统概况如图1所示,优选的多总线系统100包含三个系统总线第一系统总线102、第二系统总线104和第三系统总线106。每个系统总线102、104和106还包括一组地址和控制行108a、108b和108c,以及一组数据行110a、110b和110c。地址和控制行都是指地址和控制行108。数据行110a、110b和110c指的都是数据行110。在整个详细的描述中,第一系统总线102也指左边的总线102,第二系统总线104指右边的总线104,第三系统总线106指I/O总线106。
在优选的实施例中,每个系统总线102、104和106为PentiumPro系统总线,它由Intel公司指定。PentiumPro系统总线提供36个地址位,64个数据位和多种控制和错误校正信号。当优选的实施例利用了PentiumPro总线时,本领域的普通技术人员知道本发明适应于大范围的实现探询高速缓存相关性协议的系统总线,而且,一种总线的格式可以不同于另一个总线的格式。
被连接到左边的总线102的是多处理机112a和112b,等等。被连接到右边的总线104的是多处理机112c和112d,等等。处理机112a、112b、112c和112d都指处理机112。在优选的实施例中,每一个处理机112具有内部高速缓存部件114。尽管4个处理机112被示意出,但每个总线102和104能被连接到附加处理机112。在优选的实施例中的处理机112为PentiumPro处理机,由Intel公司提供。尽管本发明优选的实施例利用了PentiumPro处理机,但本领域的普通技术人员知道,本发明适应于可与特定的系统总线兼容的大范围的处理机112。
处理机112中的高速缓冲存储器114通过局部存储数据提高处理性能。一般地,高速缓冲存储器114允许该处理机112访问数据值而使用较少总线带宽。优选的实施例中的高速缓冲存储器114设置数据值到高速缓存线,其中每个高速缓存线包含32位字节数据。
在优选的实施例中的第三系统总线106在多个I/O桥120和主存储器132之间传输输入/输出(I/O)事务,因此被称作I/O总线106。优选的I/O桥120为82450GXPCIsetOrionPCIBridge,由Intel公司制造。在优选的实施例中,I/O桥120使用PCI总线从I/O总线106传送I/O事务给多个I/O设备122。然而,本领域的普通技术人员知道,I/O桥120可以用提供对多种I/O设备122访问的大范围的设备来实现。另外,I/O桥120可选用,并且兼容的I/O设备122可以直接接到I/O总线106。
优选的多总线系统100也包括奇数主存储器模块132a,偶数主存储器模块132b和数据接口缓冲器134。在优选的实施例中,奇数主存储器模块132a和偶数主存储器模块132b都指主存储器132。优选的奇数存储器模块132a和优选的偶数存储器模块132b包括同步动态随机访问存储器(SDRAM),它能从32兆位变化到32千兆位。SDRAM使用同步串行接口,它提供高速数据字符串。
优选的多总线系统也包括系统访问控制器130和数据接口缓冲器134。普遍地说,系统访问控制器控制多总线系统操作。系统访问控制器为每个总线102、104和106耦合到地址和控制行108a、108b和108c。另外,系统访问控制器130也耦合到一组奇数存储器地址和控制行138a,一组偶数存储器地址和控制行138b,和一组数据接口缓冲器(DIB)控制行140。
另一方面,数据接口缓冲器134在不同的总线102、104和106之间提供数据路径给主存储器132。数据接口缓冲器134为每个总线102、104和106耦合到数据行110a、110b及110c。另外。数据接口缓冲器134耦合到一组主存储器数据行142。
处理机112通过从主存储器132中读数据来填充它们的高速缓冲存储器114。为了在高速缓冲存储器114中保持最新的数据。在特定的总线上的处理机112内的高速缓冲存储器114,探询发生在它们的分配总线102、104或者106上的主存储器总线事务。这被称为总线探询。
当高速缓冲存储器114包含与在总线事务中标识的高速缓存线相同的高速缓存线时,探询命中发生。当探询命中发生时,具有数据值共享拷贝的处理机112或者处理机112认定HIT#信号。HIT#信号是地址和控制行108之一。HIT#信号通知另一个处理机112与存储器事务相关的数据与处理机112共享。在优选的实施例中,如果没有其他处理机112认定HIT#信号,则请求处理机设定要求的数据值的相关性状态为被占用状态。
在其他情况下,处理机112可以修改它们的高速缓冲存储器114中的高速缓存线。然而,为了降低总线通信量,高速缓冲存储器114可以不发送已修改的高速缓存线到主存储器132,直到另一个处理机112从主存储器132中请求同一高速缓存线。例如,当处理机112更新高速缓存线时,另一个处理机112可以不具有高速缓存线的拷贝或希望获取同一高速缓存线。在这种情况下,具有最新的高速缓存线的处理机112没有将最新的高速缓存线写回到主存储器132。反而,处理机112在它的高速缓冲存储器114内保持最新的高速缓存线。
在优选的实施例中,处理机112之一认定HITM#信号,这时总线探询操作指示一个已修改的高速缓存线存在于处理机的高速缓冲存储器114中。HITM#信号为地址和控制行108之一并指示具有最新的高速缓存线的处理机112需要将高速缓存线写回到主存储器132。例如,在优选的实施例中,假定在左边的总线102上的第一处理机112a在它的高速缓冲存储器114中包含一个已修改的高速缓存线。当在左边的总线102上的第二处理机112b希望获取同一高速缓存线的拷贝时,第二处理机112b控制左边的总线102并对标识要求的高速缓存线的主存储器132执行存储器事务。然后,第一处理机112a探询存储器事务并确定它包含要求的高速缓存线的一个已修改的版本。
在响应中,第一处理机112a认定它的HITM#信号,HITM#信号指示它包含一个高速缓存线的已修改的版本。第一处理机112a获取左边的总线102的命令并将已修改的高速缓存线写回到主存储器132。在第一处理机112a将已修改的高速缓存线写回到主存储器132之后,第二处理机112b重新将主存储器事务初始化并获取最新的高速缓存线。
优选的处理机112可以表示总线事务是否能延迟。发出总线事务的处理机112用它的DEN#信号表示是否总线事务可以延迟。认定HITM#信号的处理机控制事务响应。一旦该处理机认定HITM#信号,该处理机或者按顺序执行总线事务(如存储器已完成的),或者如果事务可以延迟,则系统访问控制器130认定延迟总线事务的DEFER#信号。DEFER#信号为某控制行108的编码。
Ⅲ.系统访问控制器现在,来看系统访问控制器130,如图2所示,优选的系统访问控制器130即为专用集成电路(ASIC)。普遍地说,在多总线系统100中保持高速缓存相关性时,系统访问控制器130控制三个总线102、104和106以及主存储器132。
最为可取地,系统地址控制器130包含左边的相关性滤波器200a、右边的相关性滤波器200b和I/O相关性滤波器200c。在整个详细的描述中,左边的相关性滤波器200a、右边的相关性滤波器200b和I/O相关性滤波器200c都指相关性滤波器200。系统访问控制器130也包含左边的总线主控制器202a、右边的总线主控制器202b和I/O总线主控制器202c。在整个这种详细的描述中,左边的总线主控制器202a、右边的总线主控制器202b和I/O总线主控制器202c都指总线主控制器202。
另外,系统访问控制器130包含左边的总线从设备204a、右边的总线从设备204b及I/O总线从设备204c。在整个详细的描述中,左边的总线从设备204a、右边的总线从设备204b及I/O总线从设备204c都指总线从设备204。而且,系统访问控制器130包含奇数存储器控制器206a和偶数存储器控制器206b。在整个详细的描述中,奇数存储器控制器206a和偶数存储器控制器206b都指存储器控制器206。
系统访问控制器130也包含中央请求表208和缓冲器管理器210。最后,系统访问控制器130耦合到外部左边的标记存储器212a、外部右边的标记存储器212b及内部I/O标记存储器212c。在整个详细的描述中,左边的标记存储器212a、右边的标记存储器212b和I/O标记存储器212c都指标记存储器212。
在优选的实施例中,左边的标记存储器212a、左边的相关性滤波器200a、左边的总线主控制器202a和左边的总线从设备204a分配给左边的总线102。右边的标记存储器212b、右边的相关性滤波器200b、右边的总线主控制器202b及右边的总线从设备204b分配给右边的总线104。I/O标记存储器212c、I/O相关性滤波器200c、I/O总线主控制器202c及I/O总线从设备204c分配给I/O总线106。
现在,来看系统访问控制器130中的互连,左边的相关性滤波器200a与左边的总线地址及控制行108a、左边的标记存储器212a、右边的标记存储器212b、I/O标记存储器212c、缓冲器管理器210和中央请求表208通信。右边的相关性滤波器200b与右边的总线地址及控制行108b、左边的标记存储器212a、右边的标记存储器212b、I/O标记存储器212c、缓冲器管理器210和中央请求表208通信。I/O相关性滤波器200c与I/O总线地址及控制行108c、左边的标记存储器212a、右边的标记存储器212b、I/O标记存储器212c、缓冲器管理器210和中央请求表208通信。
左边的总线主控制器202a与左边的总线地址及控制行108a和中央请求表208通信。右边的总线主控制器202b与右边的总线地址及控制行108b和中央请求表208通信。I/O总线主控制器202c与I/O总线地址及控制行108c和中央请求表208通信。
左边的总线从设备204a与左边的总线地址及控制行108a、奇数存储器控制器206a、偶数存储器控制器206b和缓冲器管理器210通信。右边的总线从设备204b与右边的总线地址和控制行108b、奇数存储器控制器206a、偶数存储器控制器206b和缓冲器管理器210通信。I/O总线从设备204c与I/O总线地址及控制行108c、奇数存储器控制器206a、偶数存储器控制器206b和缓冲器管理器210通信。
因此,中央请求表与左边的相关性滤波器200a、右边的相关性滤波器200b、I/O相关性滤波器200c、左边的总线主控制器202a、右边的总线主控制器202b和I/O总线主控制器202c通信。缓冲器管理器210与左边的相关性滤波器200a、右边的相关性滤波器200b、I/O相关性滤波器200c、左边的总线主控制器202a、右边的总线主控制器202b、I/O总线主控制器202c、左边的总线从设备204a、右边的总线从设备204b、I/O总线从设备204c、奇数存储器控制器206a和偶数存储器控制器206b通信。
现在,来看总线主控制器202。总线主控制器202控制在它们的被分配的总线102、104和106上的总线事务。例如,左边的总线主控制器202a初始化在左边的总线102上的总线事务。在总线主控制器202执行一个或者更多的总线事务之后,总线主控制器202放弃总线以便另一设备能成为总线主控制器。用来实现控制器202的控制逻辑是本领域的技术人员周知的。
现在,来看总线从设备204,总线从设备204接收由一个处理机112或者I/O桥120初始化的在它们的分配总线102、104和106上的总线事务。例如,一个该处理机112为主存储器132中的一个特定的数据值可以初始化读总线事务。总线从设备204接收总线事务并从主存储器132中获取被请求的数据值。实现总线从设备204的控制逻辑是本领域的技术人员周知的。
奇数存储器控制器206a和偶数存储器控制器206b分别控制对奇数主存储器模块132a和偶数主存储器模块132b的访问。奇数存储器控制器206a和偶数存储器控制器206b使用本领域的技术人员熟知的存储器控制技术控制奇数主存储器模块132a和偶数主存储器模块132b。
A.相关性滤波器现在,来看优选的相关性滤波器200。每个相关性滤波器200确定什么总线事务或者总线事务组必须保持高速缓存相关性。在优选的实施例中,在多总线系统200中,当交叉总线事务不必要保持高速缓存相关性时,每一个相关性滤波器200通过限制交叉总线通信量来提高性能。
如上所描述的,左边的相关性滤波器200a监控左边的总线地址和控制行108a,右边的相关性滤波器200b监控右边的总线地址和控制行108b,I/O相关性滤波器200c监控I/O地址和控制行108c。如图3所示,每个相关性滤波器200包含标记控制器300,循环编码器302和规则表304。另外,每个相关性滤波器200被分配给标记存储器212之一。
1.标记存储器。
更为可取地,每个标记存储器212存储于位于系统访问控制器130外部的静态随机访问存储器(SRAM)。左边的标记存储器212a和右边的标记存储器212b最好为同一长度而I/O标记存储器在长度上较小,这是因为一般耦合到I/O桥120等的很小的高速缓存部件。分配给特定的总线的标记存储器212保持这些超集记录1)位于与分配总线连接的高速缓冲存储器114中的高速缓存线,和2)高速缓存线的高速缓存状态。在优选的实施例中,高速缓存状态用一组高速缓存相关性状态来表示,高速缓存状态比高速缓冲存储器114中的高速缓存相关性状态包括较少的状态。
众所周知,主存储器中的每个高速缓存线用高速缓存线地址来标识。高速缓存线的长度从一个多总线系统100到另一个多总线系统100都有变化。在优选的实施例中,高速缓存线包含32个8位数据值(256位)。每个标记存储器212存储标识高速缓存线,不是实际高速缓存线的高速缓存线地址。除存储高速缓存线地址之外,每个标记存储器212也存储与高速缓存线地址相关的相关性状态信息。这样,每一个标记存储器212保持的信息作为存储于与标记存储器的分配总线连接的高速缓冲存储器114的高速缓存数据的可能的内容和状态。
例如,当在左边的总线102上的处理机112a产生一个访问主存储器132中的高速缓存线的读总线事务时,该处理机112a放置要求的高速缓存线地址在左边的总线地址和控制行108a上。如下面更详细描述的,左边的相关性滤波器200a接收要求的高速缓存线地址并在左边的标记存储器212a中存储高速缓存线地址。另外,左边的相关性滤波器200a在左边的标记存储器212a中存储与高速缓存线地址相关的相关性状态。
与每个高速缓存线地址相关的相关性状态涉及高速缓冲存储器114中的高速缓存线的状态。在优选的实施例中,相关性状态包含三个不同的相关性状态无效状态、共享状态或者被占用状态。无效状态表示高速缓存线是无效的,处理机112不能使用它。共享状态表示处理机112不能修改高速缓存线。例如,共享高速缓存线时常是不被修改的程序指令。被占用状态表示高速缓存线可以被占有高速缓存线的处理机112修改。优选的实施例利用了无效,共享和被占用协议,是因为它适应于大范围的包括被PentiumPro处理机112利用的MESI协议的高速缓存相关性协议。
然而,本领域的普通技术人员知道,高速缓存线的相关性状态不限于无效,共享和被占用协议。实际上,本领域的普通技术人员知道,相关性状态可能用一个大范围的相关性协议实现,如已修改的、独占的、共享和无效的(MESI)协议,已修改的、被占用、独占的、共享和无效的(MOESI)协议,已修改的、共享和无效(MSI)协议,Berkeley协议,UniversityofIllinois相关性协议,或者其他等。
相关性状态也可能用两状态相关性协议如一个两状态无效和被占用协议来实现。在双总线系统,一个两状态相关性协议中,所有的总线被认为具有所有的高速缓存线的共享拷贝。这时常降低相关性存储器的长度,因为当所有的高速缓存线被看成为共享时,相关性存储器仅需要保持与处于无效和被占用状态的数据值相关的记录。有利地,当总线为共享数据执行一个标准读事务时,共享状态信息不能存储于相关性存储器中。这减少了与保持相关性存储器中的相关性状态信息超集相关的问题。
然而,在这种两状态系统中,所有的专用读事务或者无效事务要求一个或者更多的交叉总线事务来保证高速缓存相关性。这种交叉总线事务必须看是否另一个总线实际上包含与无效命令的专用读事务相关的数据的共享版本。而在双总线系统中,一个两状态协议可以导致较高的总性能,利用两个以上总线,两状态协议的益处是极大地依赖于工作负荷的特性。
优选的PentiumPro处理机112不输出准确的关于存储于它们的内部高速缓冲存储器114中的高速缓存线的相关性状态信息。例如,内部高速缓冲存储器114可以废弃未修改的高速缓存线而不发出该高速缓存线已被废弃的信号。在本发明优选的实施例中,每个标记存储器212独特地适应于为不输出当前相关性状态信息的内部高速缓冲存储器114保证高速缓存相关性。
每个标记存储器212通过保持一个高速缓存线地址的超集来保证高速缓存相关性,高速缓存线地址可能当前保存在与特定的总线连接的内部高速缓冲存储器114中。例如,左边的标记存储器212保持一个高速缓存线地址超集,高速缓存线地址可能保存在处理机112a和处理机112b内部高速缓冲存储器114中。因为高速缓存线地址超集不必要包含准确的标记状态信息,当高速缓冲存储器114实际上已经废弃高速缓存线时标记存储器212可以表示高速缓冲存储器114中特定的高速缓存线处于共享状态。在其他情况下,当高速缓冲存储器114,实际上。已将高速缓存线回写给主存储器132时,标记存储器212中的高速缓存线地址的超集可以表示高速缓冲存储器114中特定的高速缓存线处于已修改的状态。
为了保持一个高速缓存线地址超集,优选的标记存储器212使用被称作的涵盖规则。涵盖规则保证存储于与特定的总线连接的高速缓冲存储器114中的高速缓存线地址总是分配给那个总线的标记存储器212中的高速缓存线地址的子集。当高速缓存线地址从一个标记存储器212中被删除时,涵盖规则指示相关的高速缓冲存储器114以使它们的高速缓冲存储器中的高速缓存线无效。
例如,当左边的标记存储器212a没有存储器容量来保存新的高速缓存线地址时,必须通过从左边的标记存储器212中排除一个现存的高速缓存线地址(旧的高速缓存线地址),在左边的标记存储器212a中给新的高速缓存线地址准备空间。如果旧的高速缓存线地址处于无效状态(与总线连接的高速缓冲存储器114不再使用与旧的高速缓存地址相关的高速缓存线),左边的相关性滤波器200a简单地用新的高速缓存线地址替换旧的高速缓存线地址。
然而,当旧的高速缓存线地址处于共享或者被占用状态时,左边的相关性滤波器200a不能从左边的标记存储器212a中排除旧的高速缓存线地址,直到高速缓冲存储器114使旧的高速缓存线地址无效。如上所述,左边的标记存储器212a在与左边的总线102连接的高速缓冲存储器114中必须保持一个高速缓存线地址超集,这样,在左边的标记存储器212a能用新的高速缓存线地址替换旧的高速缓存线地址之前,旧的高速缓存线地址必须首先在高速缓冲存储器114中被无效。
如下面更详细描述的,左边的相关性滤波器200a通过执行无效总线事务使与左边的总线102连接的高速缓冲存储器114中的旧的高速缓存线地址无效。无效总线事务发生在左边的总线上,左边的总线指示高速缓冲存储器114内部地使旧的高速缓存线地址无效。
然而,在某种情况下,旧的高速缓存线可以处于被占用状态并且一个高速缓冲存储器114可以已修改旧的高速缓存线。如果高速缓冲存储器114可能已修改旧的高速缓存线,总线读使行(BRIL)事务无效被执行。如果高速缓冲存储器114已经修改了旧的高速缓存线,则在总线读使行事务无效期间,高速缓冲存储器114取总线事务的命令并将对应于旧的高速缓存线地址的已修改的高速缓存线写回到主存储器132。将已修改的高速缓存线写回到主存储器之后,左边的相关性滤波器200a用新的高速缓存线地址替换左边的标记存储器212a中旧的高速缓存线地址。这样,为了在标记存储器212中保持一个高速缓存线地址的超集,在某种情况下,在旧的高速缓存线能被替换之前,高速缓冲存储器114必须将已修改的数据写回到主存储器132。
高速缓存线地址400和每个标记存储器212的格式示于图4中。高速缓存线地址400从概念上被分成两个部分。第一部分包含标记页地址402,而第二部分包含位移地址404。在优选的实施例中,标记存储器212中的标记入口410数定义被称为标记页的长度。更为可取地,每个标记存储器212具有标记入口410的数目,这样,它们具有同一标记页长度。
在优选的实施例中,标记页地址402标识包含高速缓存线地址400的标记页,而位移地址404标识标记页内的高速缓存线地址400的位置。特别地。高速缓存线地址400中的高位标识标记页地址而其低位标识位移地址404。
一般来说,低位被称作索引,因为低位标识标记页内的高速缓存线地址的位置。例如,对于第一高速缓存线地址400,高地址位标识标记页地址402和低地址位标识标记页内的高速缓存地址行400的位置。
因为标记页能在长度上变化,分配给标记页地址402和位移地址404的位数也变化。在优选的实施例中,如果左边的标记存储器212a和右边的标记存储器212b包含216个入口,那么位移地址404包括高速缓存线地址400的较低的16位,标记页地址402包括高速缓存线地址400的较高的15位。如上所述,I/O标记存储器212c在长度上较小,因而包含较少的入口。在优选的实施例中,I/O标记存储器212包含32个入口。
下面的表示意标记存储器212的不同的长度和高速缓存线地址400中的相应标记页地址402和位移地址404的长度。<
在优选的实施例中,相关性滤波器200使用直接映象技术存储高速缓存线地址400于标记存储器200中。直接映象表示每个高速缓存线地址400映象到一个特定的标记入口410。图4示意优选的标记存储器212,它包括216个标记入口410。每一个标记入口410包含高速缓存线地址400的标记页地址402。另外,每个标记入口410包含相关性状态位412和奇偶性位414。奇偶性位414提供周知的奇偶性错误检测。
当处理机112访问高速缓存线地址400时,相关性滤波器200使用位移地址404来标识特定的标记入口410。相关性滤波器200然后存储标记页地址402在已标记的标记入口410中。例如,当在左边的总线102上的第一处理机112a访问第一标记页中的第一高速缓存线地址400时,左边的相关性滤波器200a使用高速缓存线位移地址404来定位左边的标记存储器212a中的第一标记入口410。左边的相关性滤波器212a然后存储标记页地址402到左边的标记存储器212a中的第一标记入口410。
除存储高速缓存线地址400的标记页地址402之外,标记入口410也给高速缓存线地址400存储一组相关性状态位412。更为可取地,标记入口410中的相关性状态位412包含优选的三个相关性状态无效状态、共享状态或者被占用状态。三个相关性状态用两个相关性状态位412来表示。下面的表定义分配给相关性状态位412的相关性状态
2.标记控制器直接映象高速缓存线地址400到标记存储器212的控制逻辑位于标记控制器300中。分配给左边的总线102的标记控制器300称为左边的标记控制器300a。分配给右边的总线104的标记控制器300称为右边的标记控制器300b。分配给I/O总线106的标记控制器300称为I/O标记控制器300c。例如,左边的标记控制器300包含直接映象逻辑,直接映象逻辑直接映象高速缓存线地址400到左边的标记存储器212a中。
标记控制器300中的控制逻辑类似于被用来直接映象高速缓存线到高速缓冲存储器114中的控制逻辑。这样,标记控制器300使用那些本领域中的普通技术人员熟知的直接映象逻辑。然而,这不同于优选的PentiumPrO处理机112中的高速缓存控制逻辑,优选的PentiumPrO处理机112利用四向组相关映象技术。
如下面更详细描述的,相关性滤波器200部分地根据标记存储器212中的相关性状态信息确定是否执行交叉总线事务。在优选的实施例中,每个标记控制器300也耦合到它自己的标记存储器212和分配给其他总线的标记存储器212。当每个标记控制器300能访问标记存储器212中的标记入口410时,每一个标记控制器300仅修改它自己分配的标记存储器212中的标记入口。例如,左边的标记控制器300a可以访问左边的标记存储器212a、右边的标记存储器212b和I/O标记存储器212c中的标记入口410,但左边的标记控制器300仅修改左边的标记存储器212a中的标记入口410。
例如,当左边的总线102为特定的高速缓存线地址400传输总线事务时,左边的标记控制器300a使用高速缓存线地址400以从右边的标记存储器212a和I/O标记存储器212b中获取相应的相关性状态位412。在本例中,高速缓存线地址400直接被映象到右边的标记存储器212b以获取右边的相关性状态位。另外,高速缓存线地址直接被映象到I/0标记存储器212c以获取I/O相关性状态位412。在整个详细的描述中,从分配给其他总线的另一个标记存储器212中获取的相关性状态位412被当作远程相关性状态位412。一旦左边的标记控制器300a获取远程相关性状态位412,左边的标记控制器300a就正向传送远程相关性状态位412给循环编码器302。
3.循环编码器每个循环编码器302确定哪一种总线事务正发生在总线102、104或者106之一上。分配来监控左边的总线102的循环编码器302被称为左边的循环编码器302a。分配来监控右边的总线104的循环编码器302被称为右边的循环编码器302b。分配来监控I/O总线102的循环编码器302被称为I/O循环编码器302c。这样,每个循环编码器302监控与它的分配总线102、104或者106相关的地址和控制行108。
更为可取地,循环编码器302使用与应用于总线102、104和106上的特定的总线协议相关的周知技术,来监控总线控制行,以便确定是否总线事务从主存储器132中读数据或者给主存储器132写数据。在优选的实施例中,循环编码器302使用周知的技术来确定哪一个PentiumPrO总线事务正从主存储器132中读取数据或者将数据写到主存储器132中。一旦循环编码器302确定发生在它的分配总线上的总线事务的类型,循环编码器302就传输总线循环的类型给规则表304。
4.规则表现在,来看示意于图3中的规则表304,规则表确定何时执行交叉总线事务来保证高速缓存相关性。在优选的实施例中,分配给左边的总线102的规则表304称为左边的规则表304a。分配给右边的总线102的规则表304称为右边的规则表304b。分配给I/O总线的规则表304称为I/O规则表304c。
每个规则表304评价总线事务类型信息和从循环编码器302中获取的远程相关性状态位412。在优选的实施例中,每个规则表304是一个大的真值表,位于静态随机访问存储器(SRAM)中。存储于每个规则表存储器位置的,是需要被执行以保证高速缓存相关性的交叉总线事务和局部总线事务的类型。
另外,规则表304执行探询动作。在优选的实施例中,当远程标记存储器表示它们具有高速缓存线的共享拷贝时,规则表304可以认定HIT#信号。认定HIT#信号表示在远程总线上的一个或者更多的高速缓冲存储器具有高速缓存线的共享拷贝。规则表304也可以认定HIT#信号以将代码读事务强行设成共享状态以便在另一个总线上的将来代码读事务不产生交叉总线通信量。
必须保证高速缓存相关性的特定的交叉总线事务代码装入在系统访问控制器130的控制下的规则表304。优选的多总线系统100在系统的初始化期间将交叉总线事务代码加载到规则表304。因为交叉总线事务代码能被修改,所以交叉总线事务对不同的多总线系统100能被有效地调整。
B.缓冲器管理器缓冲器管理器210,中央请求表208和数据接口缓冲器134,示意于图1和2,在多总线之间优化通信。在优选的实施例中,中央请求表208,缓冲器管理器210和数据接口缓冲器134包含存储器单元(未示出)的多端口池,它们可以被所有的总线102、104和106访问。有利地,任何总线102、104或者106可以从任何其它总线102、104或者106读或者写给任何其它总线102、104或者106而不使用独立连接路径。
在优选的实施例中,与每个总线事务相关的信息被细分成三个部分,它们被存储于三个不同的存储器单元,即被称作的地址单元、请求单元和数据单元。因此。一一对应关系存在于每个数据单元,每个请求单元和每个地址单元之间。如下面更详细描述的,地址单元位于缓冲器管理器210,请求单元位于中央请求表208及数据单元位于数据接口缓冲器134。
优选的缓冲器管理器210示例于图5A和5B。见图5A,缓冲器管理器210包括地址单元500、地址单元优先级编码器504、左边的先进先出(FIFO)存储器506a、I/OFIFO506b和右边的FIFO506c的池。每个地址单元500为多端口,并与地址单元优先级编码器504、总线主控制器202、总线从设备204、存储器控制器206和示例于图5B的比较器510通信。
优选的缓冲器管理器210包含64个地址单元500。如图5A所示,每个地址单元500包含一个“在-使用”位502,存储器地址504和一组数据单元状态位505。在-使用位502表示特定的地址单元500是否可以使用。在优选的实施例中,在-使用位502被设定来表示是否地址单元500处于使用或者空闲状态。存储器地址504包含存储器地址504,而数据单元状态位505表示总线事务的类型。特别地,数据单元状态位505表示无效总线事务是否将被执行。
现在,来看地址单元优先级编码器504,地址单元优先级编码器504确定哪一个地址单元500正在使用,哪一个地址单元500为空闲以接收新的总线事务信息。在优选的实施例中,地址单元优先级编码器504中的逻辑通过评价每个地址单元500中在-使用位502来确定哪一个地址单元500为空闲。如果在-使用位502设定,则地址单元500在使用。如果在-使用位502未设定,则地址单元是空闲的。空闲单元以循环方式被选择。
地址单元优先级编码器504不仅确定哪一个地址单元500是空闲的,而且分配空闲地址单元500给不同的总线102、104和106。更为可取地,地址单元优先级编码器504以一种循环方式分配空闲地址单元500给不同的总线102、104和106。如下面更详细描述的,当总线事务信息被存储于空闲地址单元500时,在-使用位502被设定来表示地址单元500不是空闲的。
例如,假定第一,第二和第三地址单元500是空闲的。优选的优先级编码器504确定第一,第二和第三地址单元500是空闲的,并分配第一地址单元500给左边的总线102,第二地址单元500给右边的总线104,第三地址单元500给I/O总线106。当第四地址单元500变成空闲时,地址单元优先级编码器504循环回到左边的总线102,并分配第四地址单元500给左边的总线500。当优选的地址单元优先级编码器504分配空闲地址单元给不同的总线时,一个本领域中的普通技术人员可以理解地址单元优先级编码器504可以利用大范围的分配模式来分配空闲地址单元500给不同的总线102、104和106。
现在,来看缓冲器管理器中的FIFO存储器506,FIF0存储器506临时存储标识被分配的地址单元500的地址单元标识符,地址单元标识符是一个数据变量,它包含被分配的地址单元500的存储器位置。在优选的实施例中,地址单元标识符标识64个地址单元504。如下面更详细描述的,总线主控制器202使用FIFO存储器506中的地址单元标识符以访问由地址单元标识符标识的地址单元存储器位置。
在优选的实施例中,每个FIFO存储器506向总线从设备204和相关性滤波器200输出。这样,左边的FIFO存储器506a向左边的总线从设备204a和左边的相关性滤波器200a输出。右边的FIFO存储器506b向右边的总线从设备204b和右边的相关性滤波器200b输出。I/OFIFO存储器506c向I/O总线从设备204c和I/O相关性滤波器200c输出。当总线从设备204之一或者相关性滤波器200之一希望发送一总线事务给另一个总线时,它们从它们被分配的FIFO存储器506中获取一个地址单元标识符。
这样,优选的缓冲器管理器210提供与所有的总线102、104和106互连的地址单元500的池,提供这种地址单元500的池而不是独立的总线路径,降低了系统复杂性。而且,地址单元优先级编码器504和FIFO存储器506保证空闲地址单元500平等分配于总线102、104和106之间。
在本发明的另一个方面,如图5B所示,优选的缓冲器管理器210包含多个标识地址冲突的地址比较器510,一般来说,当两个不同的总线事务涉及同一数据值并同时发生时,地址冲突产生。在这种情况下,可能出现两个地址单元500对地址单元500中的两个不同的总线事务包含同一存储器地址504。在这种情况下,可能发生不正确的总线事务。
当一个总线从设备204接收总线事务时,总线从设备204正向传送与总线事务相关的地址给分配给与总线从设备204相同的总线的地址比较器510。地址比较器510比较新的存储器地址504与所有的存在于在-使用地址单元500的存储器地址504。如果同一存储器地址在在-使用地址单元500中被查出,地址比较器510产生输出,该输出通知总线从设备204地址冲突存在。总线从设备204然后发送重试信号给使产生地址冲突的总线事务初始化的处理机112。处理机112然后在晚些时候初始化总线事务。
在优选的实施例中,一组地址比较器510分配给每个总线。这样,左边的地址比较器510a组分配给左边的总线102。右边的地址比较器510c组分配给右边的总线104并且I/O地址比较器510a组分配给I/O总线106。当总线从设备204接收新的存储器地址504时,总线从设备204正向传送新的存储器地址504给地址比较器510。地址比较器501然后评价存在于在-使用地址单元500中的存储器地址504以确定地址冲突是否存在。
例如,右边的总线从设备202b可以接收一种I/O事务,这种事务被传送给一个在I/O总线106上的I/O桥120。对于接收与I/O事务相关的存储器地址,右边的总线从设备202b正向传送该存储器地址给右边的地址比较器510c。右边的地址比较器510c比较该存储器地址与现存的在-使用地址单元500中的存储器地址504。如果该存储器地址的拷贝存在于在-使用地址单元500中,地址比较器则发送一个信号到右边的总线从设备202b,表示地址冲突存在。在本例中,右边的总线从设备202b指示处理机112c或者112d以在晚些时候重试I/O事务。
当必须执行无效总线事务,使标记存储器212的一个入口无效时,希望延迟无效操作直到晚些时候总线不忙时。一种方法是在缓冲器管理器中存储旧的高速缓存线地址(将被无效的高速缓存线地址)。在优选的实施例中,缓冲器管理器210中的地址单元500包括一个高速缓存线的整个存储器地址,高速缓存线包括与高速缓存线相关的标记页地址402和位移地址404。增加旧的高速缓存线地址给一个地址单元500允许多总线系统100继续进行新的总线事务,尽管旧的高速缓存线地址实际上还没有被无效。
假定另一个总线事务涉及存在于缓冲器管理器210中的旧的高速缓存线地址400,当总线事务由一个总线从设备204接收时,总线从设备204正向传送与总线事务相关的地址给地址比较器510。地址比较器510比较与总线事务相关的位移地址404和旧的高速缓存线地址的位移地址404。如果任何地址冲突存在,则比较器评价数据单元状态位505。如果数据单元状态505表示旧的高速缓存线地址需要被无效,那么新的总线事务被强制重试,直到旧的高速缓存线地址400能被无效。这种方法的另一实施例在下面的题为“其他实施例”的部分中说明C.中央请求表现在,来看优选的中央请求表208,示意于图6,中央请求表208包含请求单元600,左边的总线优先级编码器602a,右边的总线优先级编码器602b和I/O总线优先级编码器602c的池。每个请求单元600为多端口并与每个地址单元优先级编码器602通信。在优选的中央请求表208中,有64个请求单元600。而且,一一对应关系存在于64个地址单元500和64个请求单元600之间。
每个请求单元600包含目标总线标识符604,总线事务代码606和占用者总线标识符608。目标总线标识符604标识目的总线102、104或者106。如下面更详细描述的,总线标识符604不被预定义,反而,优选的实施例设定总线标识符604来标识右边的总线102,左边的总线104或者I/O总线106。例如,目标总线标识符604可以指定总线事务代码606给右边的总线104,另一方面,总线事务代码标识在目的总线上的总线事务的类型以执行。在优选的实施例中,总线主控制器202执行由总线事务代码606标识的总线事务。占用者总线标识符608标识发端总线。例如,占用者总线标识符604可以指示在左边的总线102上发端的总线事务代码606。
总线优先级编码器评价在每个请求单元600中的目标总线标识符604以确定哪个请求单元指定不同的总线。与总线102、104或者106之一相关的总线主控制器202然后执行在特定的请求单元600中被标识的总线事务。例如,左边的总线优先级编码器602a评价所有的目标总线标识符604以标识哪个请求单元600给左边的总线102。右边的总线优先级编码器602b评价所有的目标总线标识符604以标识哪个请求单元600给右边的总线104。I/O总线优先级编码器602c评价所有的目标总线标识符604以标识哪个请求单元600给I/O总线106。
除标识目的总线102、104和106之外,每个总线优先级编码器602还确定哪个与特定的总线102、104或者106相关的总线请求单元500具有最高优先级。在优选的实施例中,每个总线优先级编码器602使用循环逻辑确定最高优先级请求单元600。一旦每个总线优先级编码器602正向传送最高优先级请求单元600给它的分配总线,每个总线优先级编码器602就循环分配优先级给每个请求单元600。循环逻辑保证每个总线优先级编码器602依次地分配最高优先级给所有的总线请求单元600。这种循环逻辑为那些本领域的普通技术人员熟知。
例如,假定右边的总线优先级编码器602b已经标识两个请求单元600给右边的总线104。右边的总线优先级编码器602b分配第一请求单元600最高优先级并发送第一请求单元标识符给右边的总线主控制器202b。右边的总线优先级编码器602b然后分配第二请求单元600最高优先级并发送第二请求单元标识符给右边的总线主控制器202b。当右边的总线优先级编码器602b到达分配给右边的总线104的请求单元600的结束符时,右边的总线优先级编码器返回到请求单元500的池的开始。
这样,中央请求表208提供一个与所有的总线102、104和106互连的请求单元600的池。这种请求单元600池,当与独立总线连接路径对比时,它可以降低系统复杂性。而且,中央请求表208中的总线优先级编码器602保证每个请求单元中的总线事务由总线102、104和106来执行。
Ⅳ.数据接口缓冲器现在,来看优选的数据接口缓冲器134,如图7所示,数据接口缓冲器1 34包含一个数据单元700池,以及控制和索引机构702。每个请求单元600为多端口并与数据行110a、11 0b和110c及与连接到奇数主存储器模块132a和偶数主存储器模块132b上的数据行142a和142b通信。在优选的中央请求表208中,有64个数据单元700。而且,一一对应存在于64个数据单元700、64个请求单元600和64个地址单元500之间。每个数据单元700包含一个与总线事务相关的数据值。
控制和索引机构702从总线从设备204中接收DIB控制行140。DIB控制行140标识特定的数据单元700和总线102、104或者106之一。例如,当I/O总线从设备204增加新的总线事务给一个地址单元500和一个请求单元600时,I/O总线从设备204也增加与新的总线事务相关的数据给相应的数据单元700。在本例中,I/O总线从设备204认定DIB控制行以标识固有数据单元700。控制和索引机构702然后使固有数据单元700能从I/O数据行110c中接收数据。
这样,数据接口缓冲器提供能被所有的总线102、104或者106访问的数据单元700池,提供这种数据单元700池而不是独立的总线互连,降低了系统复杂性并提高性能。
Ⅴ.保持高速缓存相关性由相关性滤波器200监控的总线事务包括总线读行命令和总线读使行无效命令。总线读行(BRL)命令从主存储器132中读取指令代码或者数据的高速缓存线并使其无效。总线读使行无效(BRIL)命令使高速缓存线无效。尽管优选的规则表304适应于这些总线命令时,本领域的普通技术人员知道规则表304能适应于许多不同的总线命令,而不限于优选的实施例的总线命令。
A.处理总线读行命令图8示意一个流程图,该图表示当总线102、104或者106之一执行总线读行(BRL)命令时保持高速缓存相关性。从开始块800开始,一个处理机112执行BRL命令。在BRL命令执行期间,处理机112发送要求的高速缓存线的高速缓存线地址400给它分配的相关性滤波器200和总线从设备204。
当总线从设备204接收高速缓存线地址时,总线从设备204正向传送高速缓存线地址给分配给同一总线的地址比较器510。地址比较器510比较该位移地址404和存在于在-使用地址单元500的存储器地址504的位移部分来确定是否存在任何地址冲突。地址比较器510也评价数据单元状态位505以确定产生地址冲突的地址单元500是否涉及无效事务。如果这样,地址比较器510发送地址冲突信号给总线从设备204。总线从设备204然后指示请求处理机112a以在晚些时候重试BRL命令。
如果地址比较器没有指示地址冲突存在,则优选的实施例继续进行块802,循环编码器302确定总线102、104或者106执行BRL命令。而且,分配给总线102、104或者106的标记控制器300使用在BRL命令中标识的高速缓存线地址400以访问在分配给其他总线102、104和106的标记存储器212(远程标记存储器212)中的高速缓存线地址400。远程标记存储器212返回远程相关性状态位412,它指示远程高速缓存线地址400是否处于无效状态、共享状态或者被占用状态。
只有一个远程标记存储器212可以包含处于被占用状态的特定的高速缓存线地址。然而,不止一个远程标记存储器212可以包含特定的处于共享或者无效的状态的高速缓存线地址。如果一个远程标记存储器212包含处于共享状态的高速缓存线地址的拷贝而另一个远程标记存储器300包含处于无效状态的同一高速缓存线地址的拷贝,处于共享状态的相关性状态位412优先。如下面更详细描述的,如果不止一个远程标记存储器300包含特定的处于共享状态的高速缓存线地址的拷贝,则相关性规则304可以执行在不止一个远程总线102、104或者106上的远程总线事务以保证高速缓存相关性。另外,如果远程标记存储器300中没有一个包含特定的高速缓存线地址400,那么与高速缓存线地址400相关的远程相关性状态位412被认为处于无效状态。
例如,当在左边的总线102上的第一处理机112a为块802中特定的高速缓存线地址400产生BRL命令时,左边的循环编码器302a确定左边的总线执行BRL命令。而且,左边的标记控制器300使用高速缓存线地址400以访问远程右边的标记存储器212b和远程I/O标记存储器212c。标记控制器300从右边的标记存储器212b和I/O标记存储器212c中获取远程相关性状态位412,远程相关性状态位412表示右边的标记存储器212b和I/O标记存储器212c中的高速缓存线地址400是否处于无效状态、共享状态或者被占用状态。如果既不是右边的标记存储器212b也不是I/O标记存储器212c包含高速缓存线地址400,则左边的标记控制器300a认为远程相关性状态位412处于无效状态。
现在,来看优选的规则表304的操作,这里,与局部总线102、104或者106相关的循环编码器302使用局部和远程标志数据,发送局部规则表304,总线事务的类型(BRL命令)和远程高速缓存状态位412的状态。如果远程相关性状态位412指示远程高速缓存线地址400处于无效状态,则局部规则表304继续进行块804。在优选的实施例中,如果远程相关性状态位412处于无效的状态,则局部规则表304不在远程总线102、104或者106中任一个上产生BRL交叉总线事务。反而,局部规则表304在局部标记存储器300中保持高速缓存线地址400超集。
继续进行块804,局部处理机112询问它们的内部高速缓冲存储器114以确定是否任一个局部处理机112包含要求的高速缓存线的拷贝。在优选的实施例中,一个处理机112也认定HITM#信号,这时,总线探询操作指示已修改的高速缓存线存在于该处理机的高速缓冲存储器114中。HITM#信号是地址和控制行108之一并指示具有最新的高速缓存的行处理机112需要将高速缓存线写回到主存储器132。
在块806中,具有已修改的高速缓存线的局部处理机112通过将已修改的高速缓存线写回到主存储器132来响应总线事务并同时更新主存储器132。继续进行块808,局部规则表304指示局部标记控制器300来将局部标记存储器212中的相关性状态位412设定为共享状态。局部规则表304然后继续进行结束块810。
返回到块804,如果局部处理机112不包含一个已修改的高速缓存线的拷贝,则规则表304继续进行块812。在块812中,局部规则表304评价在局部总线102、104或者106上的HIT#信号。如上所述,当局部处理机112在它们的高速缓冲存储器114中包含未修改的高速缓存线的拷贝时,局部处理机112产生HIT#信号。如果局部处理机112包含未修改的高速缓存线的拷贝。则局部规则表304继续进行块814。
在块814中,局部总线从设备204从主存储器132中获取高速缓存线。如果高速缓存线地址为奇数,那么局部总线从设备204从奇数主存储器132a中获取高速缓存线。如果高速缓存线地址为偶数,那么局部总线从设备204从偶数主存储器模块132b中获取高速缓存线。局部总线从设备204然后发送高速缓存线给请求处理机112。
继续进行块808,局部规则表304指示局部标记控制器300来设定局部标记存储器300中的相关性状态位412为共享状态,局部规则表304然后继续进行结束块810。
返回到块812,如果局部处理机112不认定HIT#信号或者HITM#信号,则高速缓存线不再存在于由块816代表的局部处理机112中。继续进行块818,如果局部标记存储器212没有高速缓存线地址400的拷贝,则规则表304增加高速缓存线地址400给局部标记存储器212。如上所述,局部标记存储器需要从局部标记存储器中排除现存的高速缓存线地址以为新的高速缓存线地址准备空间。如果这样,在新的高速缓存线地址加到局部标记存储器之前,旧的高速缓存线地址首先被无效。左边的总线从设备然后从主存储器132中获取期望的高速缓存线并将其发送给请求处理机112。
局部规则表304继续进行块822并指示局部标记控制器300来设定局部标记存储器212中的高速缓存线相关性状态位412为被占用状态。然而,如果局部总线上的一个局部处理机112认定HIT#信号,则局部标记存储器212被设定为共享。另外,如果BRL命令用于代码并且远程状态没有被占用,则规则表304认定HIT#信号。如果没有HITM#被检测到,则将BRL命令初始化的处理机将它的内部高速缓存状态标为共享。如果HITM#信号被认定,则一个隐含的回写被执行并且局部标记存储器212被设定为共享。然后,局部规则表304继续进行结束块810。
现在,返回到块802,下面的讨论来看当远程标记存储器300指示远程高速缓存线地址400处于共享状态时会发生什么。当远程相关性状态位412指示高速缓存线地址400处于共享状态时,局部规则表304在远程总线102、104或者106上不产生BRL交叉总线事务。反而,局部规则表304从主存储器132中获取要求的高速缓存线并更新局部标记存储器300。
继续进行块830,为了代码读,局部规则表304认定在局部总线102、104或者106上的HIT#信号。局部规则表304然后继续进行块832。在块832中,局部规则表304从主存储器132中获取要求的高速缓存线。如果要求的高速缓存线地址不存在于局部标记存储器212中,则标记控制器增加新的高速缓存线地址400给局部标记存储器212。如上所描述,标记控制器300可以排除一个较旧的高速缓存线地址400以为新的高速缓存线地址400准备空间。
继续进行状态808,局部规则表304设定高速缓存线的相关性状态位412为共享并继续进行结束块610。
现在,返回到块802,下面的讨论来看当远程标记存储器212之一表示远程高速缓存线地址400之一处于被占用状态时会发生什么。如果远程相关性状态位412指示远程高速缓存线地址400之一处于被占用状态,则远程总线具有最新的要求的高速缓存线的版本,这样,最新的高速缓存线必须从远程总线中被获取。在块802中,规则表304产生BRL交叉总线事务来保证高速缓存相关性。在优选的无效,共享和被占用协议中,只有一个总线能及时在任何给定点占有高速缓存线。这样,远程高速缓存线必须被变成不同的相关性状态。
继续进行块840。局部规则表304确定是否局部BRL命令能延迟。延迟局部BRL命令允许局部总线继续传输总线事务。如上所述,发出总线事务的处理机104通过认定它的DEN#信号指示是否总线事务被延迟。如果DEN#信号被认定,则局部规则表304继续进行块842并指示局部总线从设备204以延迟局部BRL命令。继续进行块844,局部规则表304然后指示本发明来执行在远程总线102、104或者106之一上的BRL命令。
返回到块840,如果总线事务不能被延迟,则局部规则表304继续进行块846并指示局部总线从设备204来延迟局部BRL命令。继续进行块844,局部规则表304然后指示本发明来执行在远程总线102、104或者106之一上的BRL命令。
在块844中,缓冲器管理器210和中央请求表208传送BRL命令给要求的总线。例如,假定在左边的总线102上的第一处理机112a给一个特定的高速缓存线地址执行BRL命令。而且,假定对于高速缓存线地址400,右边的总线相关性状态位412指示高速缓存线地址400处于被占用状态。
在本例中,左边的规则表304a确定在右边的总线104上的BRL命令必须保证高速缓存相关性。左边的规则表304a然后从左边的FIFO506a中获取空闲的地址单元标识符。左边的规则表304a访问由地址单元标识符标识的地址单元506a并将高速缓存线地址400输到存储器地址504。另外。左边的规则表304a访问相应的请求单元600并将右边的总线标识符存储在目标总线标识符604中,将BRL命令存储在总线事务代码606中,将左边的总线标识符存储在占用者总线标识符608中。
一旦右边的总线优先级编码器602b分配最高优先级给请求单元600,则右边的总线主控制器202b执行在右边的总线104上的BRL命令。继续进行块848,右边的处理机响应在右边的总线104上的BRL命令。在块848中,右边的处理机评价在它们的高速缓冲存储器114中的高速缓存线地址的状态。如果右边的处理机不再有要求的高速缓存线地址的拷贝,则右边的处理机不认定HIT#和HITM#信号。
继续进行块850,右边的标记控制器300b设定在右边的标记存储器212b中的相关性状态位412为无效状态。如果局部总线事务被延迟,则左边的总线从设备202a在左边的总线102上发出一个延迟的响应事务。继续进行块818,左边的总线从设备202a从主存储器132中获取要求的高速缓存线并将其发送给在左边的总线102上的请求处理机112。左边的规则表304a然后继续进行块822或者824并到达如上所述的结束块810。
现在,返回到块848,如果右边的处理机112c或者112d包含未修改的高速缓存线的拷贝,则它们认定右边的HIT#信号,并且本发明继续进行块852。在块852中,右边的标记控制器300b设定在右边的标记存储器212b中的相关性状态位412为共享状态。
继续进行块854,如果左边的标记存储器212b没有高速缓存线地址400的拷贝,则左边的规则表304指示左边的标记控制器300a以增加高速缓存线地址400给左边的标记存储器212a。如上所述,局部标记存储器必须从左边的标记存储器排除现存的高速缓存线地址400以为新的高速缓存线地址准备空间。如果这样,在新的高速缓存线地址被加到左边的标记存储器之前,旧的高速缓存线地址首先被无效。
而在块852中,左边的总线从设备从主存储器132中获取期望的高速缓存线并将其发送给在左边的总线102上的请求处理机112a。继续进行块808,左边的规则表304a指示左边的标记控制器300a来设定在左边的标记存储器212a中的相关性状态位412为共享并继续进行结束块810。
现在,返回到块848,如果右边的处理机112c或者112d之一在它的高速缓冲存储器114中有一个已修改的高速缓存线的拷贝,则右边的处理机112c或者112d认定右边的HITM#信号。继续进行块856,已修改的高速缓存线提供给左边的总线102。特别地,已修改的高速缓存线加载到数据接口缓冲器134中的相应的数据单元700,然后传送给由占用者总线标识符608标识的左边的总线102。数据单元700然后被左边的总线从设备204a访问,左边的总线从设备204a传输已修改的高速缓存线(如果起始总线事务被延迟则带有延迟响应)给左边的总线102。另外,右边的标记控制器300b将右边的标记存储器中的相关性状态位设定成共享状态。
继续进行状态858,作为响应的部分,已修改的高速缓存线被写回到主存储器132。本发明然后继续进行块852、854、块808和如上所述的结束块810。这样,当有必要保持高速缓存相关性时,本发明就执行BRL交叉总线事务。尽管上面的实例讨论了当左边的总线102初始化BRL命令时的过程,而当右边的总线104或者I/O总线106初始化BRL命令时,类似的过程也同样发生。
B.处理总线读使行无效命令图9示出一个当总线102、104或者106之一执行总线读使行(BRIL)无效命令时保持高速缓存相关性的流程图。从开始块900开始,一个处理机112执行BRIL命令。在BRIL命令的执行期间,处理机112之一发送要求的高速缓存线地址400给它分配的相关性滤波器200。
继续进行块902,循环编码器302确定总线102、104或者106正在执行BRIL命令。同样,被分配的标记控制器300使用标识于BRIL命令中的高速缓存线地址400以访问在远程标记存储器212中的高速缓存线地址400。如果远程标记存储器212包含高速缓存线地址400,则它们返回远程相关性状态位412,远程相关性状态位412表示远程高速缓存线地址400处于无效状态、共享状态或者被占用状态。
如上所述,只有一个远程标记存储器212可以包含特定的在被占用状态下的高速缓存线地址。然而,不止一个远程标记存储器212可以包含共享或者无效状态下的特定的高速缓存线地址。如果一个远程标记存储器212包含共享状态下的高速缓存线地址的拷贝而另一个远程标记存储器300包含无效状态下的同一高速缓存线地址的拷贝,则共享状态下相关性状态位412优先。如下面更详细描述的,如果不止一个远程标记存储器300包含共享状态下特定的高速缓存线地址的拷贝,则相关性规则304可以执行在不止一个远程总线102、104或者106上的远程总线事务以保证高速缓存相关性。另外,如果远程标记存储器300中没有一个包含特定的高速缓存线地址400,则与高速缓存线地址400相关的远程相关性状态位412被认为它们处于无效的状态。
例如,当在左边的总线102上的处理机112a为块902中特定的高速缓存线地址400产生BRIL命令时,左边的循环编码器302a确定左边的总线102正在执行BRIL命令。同样,左边的标记控制器300a使用高速缓存线地址400以访问右边的标记存储器212b和I/0标记存储器212c。标记控制器300从右边的标记存储器212b和I/O标记存储器212c中获取远程相关性状态位412,该远程相关性状态位412表示在右边的标记存储器212b和I/O标记存储器212c中的高速缓存线地址400是否处于无效状态、共享状态或者被占用状态。如果既不是右边的标记存储器212b也不是I/O标记存储器212c包含高速缓存线地址400,则左边的标记控制器300a认为远程相关性状态位412处于无效状态。
现在,来看优选的规则表304的操作,使用局部和远程标志数据,与局部总线102、104或者106相关的循环编码器302向局部规则表304发送总线事务(BRIL命令)的类型和远程相关性状态位412的状态。如果远程相关性性状态位412指示远程高速缓存线地址400处于无效状态,则局部规则表304继续进行块904。在优选的实施例中,如果远程相关性状态位412处于无效的状态,则局部规则表304在任何远程总线102、104或者106上不产生BRIL交叉总线事务。反而,局部规则表304在局部标记存储器300中保持高速缓存线地址的超集400。
继续进行块904,局部处理机112询问它们的内部高速缓冲存储器114以确定是否任一个局部处理机112包含要求的高速缓存线的拷贝。在优选的实施例中,当总线探询操作表示已修改的高速缓存线存在于该处理机高速缓冲存储器114中时,该处理机112之一也认定HITM#信号。HITM#信号为地址和控制行106之一并指示具有最新的高速缓存线的处理机112需要将高速缓存线写回到主存储器132。
在块906中,局部处理机112响应总线事务并同时通过将已修改的高速缓存线写回到主存储器132来更新主存储器132。继续进行块908,局部规则表304指示局部标记控制器300来设定局部标记存储器212中的相关性状态位412为被占用状态。局部规则表304然后继续进行结束块910。
返回到块904,如果局部处理机112不包含一个已修改的高速缓存线的拷贝,则局部规则表304继续进行块912。如上所述,如果局部标记存储器212没有高速缓存线地址400的拷贝,则局部规则表304增加高速缓存线地址400给局部标记存储器304。这样,局部标记存储器必须从局部标记存储器中排除现存的高速缓存线地址以为新的高速缓存线地址准备空间。如果这样,在新的高速缓存线地址被加到局部标记存储器之前,旧的高速缓存线地址首先被无效。而在块912中,左边的总线从设备也从主存储器132中获取期望的高速缓存线并将其发送给请求处理机112。
现在,返回到块902,下面的讨论来看当远程标记存储器300指示远程高速缓存线地址400处于共享或者被占用状态时会发生什么。当远程相关性状态位412表示远程高速缓存线地址400处于共享或者被占用状态时,局部规则表304产生BRIL交叉总线事务以保证高速缓存相关性。
继续进行块920,局部规则表304确定是否局部BRIL命令能被延迟。如上所述,发出总线事务的处理机104通过认定它的DEN#信号来指示总线事务是否可延迟。如果DEN#信号被认定,则局部规则表304继续进行块922并指示局部总线从设备204来延迟局部BRIL命令。继续进行块924,局部规则表304然后指示本发明来执行在远程总线102、104或者106之一上的BRIL命令。
返回到块920,如果总线事务不能被延迟,则局部规则表304继续进行块926并指示局部总线从设备204以延迟局部BRIL命令。继续进行块924,局部规则表304然后指示本发明来执行在远程总线102、104或者106之一上的远程BRIL命令。
在块924中,如上所述,参考块844,缓冲器管理器210和中央请求表208传送BRIL命令给期望的远程总线102、104或者105。继续进行块928,BRIL命令在远程总线102、104和106上被执行。在块928中,远程处理机评价在它们的高速缓冲存储器114中的高速缓存线地址状态。如果远程处理机不再有要求的高速缓存线地址400的拷贝,则右边的处理机不认定HIT#或者HITM#信号。
继续进行块930,远程标记控制器300设定在远程标记存储器212中的相关性状态位412为无效状态。继续进行块932,左边的总线从设备从主存储器132中获取要求的高速缓存线并将其发送给左边的总线102上的请求处理机112。而且,如果高速缓存线地址400不存在于局部标记存储器212中,则局部规则表304指示局部标记控制器300以增加新的高速缓存线地址400给局部标记存储器。如上所述,这可以要求现存的高速缓存线地址的无效。继续进行块908,局部标记控制器300设定局部标记存储器212中的相关性状态位为被占用,然后继续进行结束块910。
现在,返回到块928,如果远程处理机112包含未修改的高速缓存线的拷贝,则它们认定远程HIT#信号并且本发明继续进行块930、块932、块908和如上所述的结束块910。在返回到块928,如果远程处理机112之一在它的高速缓冲存储器114中有一个已修改的高速缓存线的拷贝,则远程处理机112认定远程HITM#信号。
继续进行块934,已修改的高速缓存线被提供给局部总线102、104或者106。特别地,已修改的高速缓存线被装入数据接口缓冲器134中的合适的数据单元700并被送回到占用者总线标识符608标识的总线。局部总线从设备204然后在局部左边的总线102上传输已修改的高速缓存线(如果初始总线事务可延迟则带有延迟响应)。另外,远程标记控制器300设定在远程标记存储器中的远程相关性状态位为无效状态。作为响应的一部分,已修改的高速缓存线被写回到主存储器132。
本发明然后继续进行块908,以及如上所述的结束块910。这样,当有必要保持高速缓存相关性时,本发明执行BRIL交叉总线事务。
Ⅵ.其他实施例实现本发明的另一个实施例包含所称的无效队列。现在,来看无效队列1000,示意于图10,每个总线具有分配的无效队列1000。无效队列1000包含相对较小数目的队列入口1002。每个队列入口1002给高速缓存线地址400之一存储标记页地址402,位移地址404,相关性状态位412和奇偶性位414。
在优选的实施例中,优选的标记存储器212小于主存储器132。这样,任何时候,不止一个高速缓存线地址400将映象到同一标记入口410。当高速缓存线映象到已占用标记入口410时,标记控制器300必须从标记存储器212中排除被占用的标记入口410。即,被占用的标记入口410中的现存的高速缓存线必须被无效,以便标记控制器300能在标记入口410中存储新的高速缓存线地址400。
另外,当两个处理机112试图访问映象到同一标记入口410的两个高速缓存线时,相关性滤波器200就使第一高速缓存线地址400无效并用第二高速缓存线地址400将其替换。然后,相关性滤波器200使第二高速缓存线地址400无效并用第一高速缓存线地址400将其替换。这种乒乓(ping-pong)效果称为标记存储器系统颠簸。当可能用较大的标记存储器212减小标记存储器系统颠簸时,这种方法能显著增加标记存储器212的价格。有利地,无效队列1000,显著降低标记存储器系统颠簸而减小附加存储器价格。
而且,当旧的高速缓存线地址必须被无效时,与新的高速缓存线地址相关的总线事务必须被延迟,直到旧的高速缓存线无效完成。优选的无效队列100允许新的总线事务继续进行。然后,旧的高速缓存线地址在晚些时候总线可能空闲时被无效。
当相关性滤波器200之一需要从它的标记存储器212中排除标记入口410时,标记入口410被存储于相关性滤波器无效队列1002中。当优选的无效队列1000存储8个以上被排除的标记入口410时,无效队列1002能包含大数目的被排除的标记入口410。当相关性滤波器200之一排除多于8个标记入口410时,无效队列1000保持大多数最近被访问的标记入口410并使溢出的标记入口410无效。
无效队列1000以不同于标记存储器212中的标记入口410的格式存储队列入口1002。特别地,优选的队列入口1002包含从标记存储器212中被排除的标记入口410的标记页地址402,位移地址404,相关性状态位412和奇偶性位414。因为任何高速缓存线地址400能存在于任何队列入口1002中,所以每个无效队列1000为所述的完全相关。
因为每个无效队列1000包含一个相对较小数目的无效队列入口1002,所以每个无效队列1000提供低价格或者增加标记存储器212的长度。在优选的实施例中,无效队列1000用存在于在系统访问控制器130中的静态随机访问存储器来实现。
Ⅶ.结论虽然描述了本发明的优选的实施例,但这些实施例仅以实例提供,并不想限制本发明的范围。例如,尽管本发明参考三-总线系统100进行了描述,但本发明可能包含更多总线。而且,本发明可能在多种多处理系统中实现。因此,本发明的宽度和范围根据下面的权利要求和它们的等价物来限定。
权利要求
1.一种多总线、多处理系统包括一种系统存储器;一种与所述的系统存储器通信的第一总线,所述的第一总线,至少具有一个高速缓冲存储器与其耦合,所述的高速缓冲存储器被配置来存储从所述的系统存储器中获取的多个数据值,所述的高速缓冲存储器还被配置来保持关于所述的带有第一组相关性状态的数据值的高速缓存相关性信息;一种与所述的第一总线通信的相关性存储器,所述的相关性存储器被配置来保持与所述的带有第二组相关性状态的数据值相关的相关性状态记录,该相关性状态比所述的第一组相关性状态包含较少的相关性状态;一种与所述的系统存储器通信的第二总线,所述的第二总线能产生总线事务;及一种与所述的第二总线通信的相关性滤波器,所述的相关性滤波器被配置来监控所述的在所述的第二总线上的总线事务和根据所述的相关性状态记录禁止在所述的第一总线上的交叉总线事务。
2.权利要求1所述的系统,还包括多个高速缓冲存储器,其中所述的高速缓冲存储器保持带有所述的第一组相关性状态的高速缓存相关性信息。
3.权利要求1所述的系统,其中所述的总线事务标识与所述的数据值之一相关的存储器地址。
4.权利要求3所述的系统,其中所述的相关性状态记录包含多个入口,其中,每个所述的入口被配置来存储与存储于所述的高速缓冲存储器的数据值相关的存储器地址。
5.权利要求1所述的系统,其中每个所述的入口被配置来存储所述的第二组相关性状态。
6.权利要求5所述的系统,其中每个所述的入口还被配置来存储所述的第二组相关性状态之一。
7.权利要求6所述的系统,其中每个所述的存储器地址直接被映象到所述的入口之一。
8.一种在多总线系统中保持高速缓存相关性方法包括保持与存在于高速缓存部件中的第一多个数据值相关的高速缓存状态信息,高速缓存部件耦合到第一总线,所述的高速缓存状态信息基于第一组相关性状态;保持与所述的数据值相关的相关性状态记录,所述的相关性状态记录基于第一组第二相关性状态,它比所述的第一组相关性状态利用了较少的相关性状态;传输在第二总线上的总线事务;及禁止在所述的第一总线上的交叉总线事务,这时所述的相关性状态记录表示存储器相关性不是所述的总线事务所致。
9.权利要求8所述的方法,其中所述的相关性状态记录为每个所述的数据值保持一些入口以便每个所述的入口包含所述的第二组相关性状态之一。
10.权利要求9所述的方法,其中所述的检测步骤还包括鉴定所述的在所述的与所述的总线事务相关的相关性状态记录中的入口来确定是否所述的入口为无效的状态。
11.权利要求9所述的方法,其中所述的检测步骤还包括鉴定所述的在所述的与所述的总线事务相关的相关性状态记录中的入口来确定是否所述的入口处于无效的状态。
12.权利要求11所述的方法还包括当所述的入口处于被占用状态时修改所述的与所述的总线事务相关的入口的步骤。
13.权利要求11所述的方法还包括修改所述的与所述的总线事务相关的入口从被占用状态变成共享状态的步骤。
14.权利要求11所述的方法还包括修改所述的与所述的总线事务相关的入口从被占用状态变成无效状态。
15.一种多总线、多处理系统包括一种系统存储器;一种与所述的系统存储器通信的系统总线,所述的系统总线,具有至少一个高速缓冲存储器与其耦合,所述的高速缓冲存储器被配置来存储从所述的系统存储器中获取的多个数据值,所述的高速缓冲存储器还被配置来保持关于所述的带有第一组相关性状态的数据值的高速缓存相关性信息;一种与所述的系统总线通信的相关性存储器,所述的相关性存储器被配置来保持与所述的带有第二组相关性状态的数据值相关的系统总线相关性状态记录,第二组相关性状态比所述的第一组相关性状态包括较少的相关性状态;一种与所述的系统存储器通信的输入/输出总线,所述的输入/输出总线能产生至少一个总线事务;及一种与所述的输入/输出总线通信的输入/输出相关性滤波器,所述的输入/输出相关性滤波器被配置来监控所述的在所述的输入/输出总线上的总线事务并根据所述的系统总线相关性状态记录禁止所述的系统总线上的交叉总线事务。
16.权利要求15所述的系统,其中所述的输入/输出相关性滤波器还被配置来监控直接存储器访问所述的I/O总线并执行交叉总线事务,该交叉总线事务对避免所述的高速缓冲存储器中的高速缓存线溢出是必要的。
17.权利要求15所述的系统,其中所述的输入/输出总线还包括一些I/O桥,它们包含内部I/O高速缓冲存储器,所述的I/O高速缓冲存储器被配置来存储第二多个数据值。所述的I/O高速缓冲存储器还被配置来保持关于所述的带有所述的第一组相关性状态的数据值的高速缓存相关性信息。
18.权利要求17所述的系统还包括与所述的I/O总线通信的I/O相关性存储器,所述的I/O相关性存储器被配置来保持与带有所述的第二组相关性状态的数据值相关的I/O相关性状态记录。
19.权利要求18所述的系统还包括一种与所述的系统总线通信的系统总线相关性滤波器,所述的系统总线相关性滤波器被配置来监控所述的在所述的系统总线上的总线事务及根据所述的I/O相关性状态记录禁止在所述的I/O总线上的交叉总线事务。
20.一种在多总线系统中保持高速缓存相关性方法包括一种保持与存在于耦合到系统总线的高速缓存部件中的第一多个数据值相关的高速缓存状态信息,所述的高速缓存状态信息基于第一组相关性状态;一种保持与所述的数据值相关的相关性状态记录,所述的相关性状态记录基于第二组相关性状态,其比所述的第一组相关性状态包括较少的相关性状态;传输在输入/输出总线上的总线事务;及禁止在所述的系统总线上的交叉总线事务,这时所述的相关性状态记录指示存储器相关性将不由所述的输入/输出总线事务所导致。
21.权利要求20所述的方法,其中所述的传输在输入/输出总线上的总线事务的步骤是一种直接存储器访问。
22.权利要求20所述的系统还包括高速缓存在所述的I/O总线上传送的多个I/O数据值的步骤。
23.权利要求22所述的系统还包括保持与所述的基于所述的第一组相关性状态的I/O数据值相关的高速缓存状态信息的步骤。
24.权利要求23所述的方法还包括保持与所述的I/O数据值相关的I/O相关性状态记录的步骤,所述的I/O相关性状态记录基于所述的第二组相关性状态。
25.权利要求24所述的方法还包括以下步骤;传输所述的系统总线上的总线事务;及禁止所述的I/O总线上的交叉总线事务,所述的I/O相关性状态记录指示存储器相关性不是由所述的系统总线事务所导致。
26.一种多总线、多处理系统包括一种系统存储器;一种与所述的系统存储器通信的第一系统总线和第二系统总线,所述的第一总线和第二总线具有至少一个高速缓冲存储器与其耦合。所述的高速缓冲存储器被配置来存储从所述的系统存储器中获取的多个数据值,所述的高速缓冲存储器还被配置来保持关于所述的带有第一组相关性状态的数据值的高速缓存相关性信息;一种与所述的第一系统总线通信的第一相关性存储器,所述的第一相关性存储器被配置来保持与所述的所述的高速缓存部件中的数据值相关的第一相关性状态记录,所述的高速缓存部件与带有第二组相关性状态的第一系统总线连接,第二组相关性状态比所述的第一组相关性状态包括较少的相关性状态;一种与所述的第二系统总线通信的第二相关性存储器,所述的第二相关性存储器被配置来保持与所述的在所述的高速缓冲存储器中的数据值相关的第二相关性状态记录,所述的高速缓冲存储器与所述的带有所述的第二相关性协议的第二系统总线连接;一种与所述的第一总线通信的第一相关性滤波器。所述的第一相关性滤波器被配置来监控在所述的第一总线上的总线事务并禁止在所述的第二总线上的基于所述的第二相关性状态记录的交叉总线事务;及一种与所述的第二总线通信的第二相关性滤波器,所述的第二相关性滤波器被配置来监控所述的第二总线上的总线事务并禁止所述的第一总线上的基于所述的第一相关性状态记录交叉总线事务。
27.权利要求26所述的系统还包括一种与所述的系统存储器通信的I/O总线和多个I/O设备,I/O设备存储I/O数据值在至少一个I/O高速缓冲存储器中;及一种与I/O总线通信的I/O相关性存储器,所述的I/O相关性存储器被配置来保持与带有所述的第二相关性协议的I/O数据值相关的I/O相关性状态记录。
28.权利要求27所述的系统,其中所述的第一相关性滤波器也与所述的I/O相关性存储器通信,并且,其中所述的第一相关性滤波器被配置来监控在所述的第一总线上的总线事务并禁止在所述的I/O总线上的基于所述的I/O相关性状态记录的交叉总线事务。
29.权利要求27所述的系统,其中所述的第二相关性滤波器也与所述的I/O相关性存储器通信,并且,其中所述的第二相关性滤波器被配置来监控在所述的第二总线上的总线事务并禁止在所述的I/O总线上的基于所述的I/O相关性状态记录的交叉总线事务。
30.权利要求27所述的系统还包括与所述的第一相关性存储器和所述的第二相关性存储器通信的I/O相关性滤波器,所述的I/O相关性滤波器被配置来监控在所述的I/O总线上的总线事务并禁止在所述的第一总线上基于所述的第一相关性状态记录的交叉总线事务以及禁止在所述的第二总线上基于所述的第二相关性状态记录的交叉总线事务。
31.一种多总线。多处理系统包括一种系统存储器;一种与所述的系统存储器通信的第一总线和第二总线,所述的第一总线和所述的第二总线至少具有一个与其耦合的高速缓冲存储器,所述的高速缓冲存储器,配置来存储从所述的系统存储器中获取的多个数据值。所述的高速缓冲存储器还配置来保持关于所述的带有第一相关性协议的数据值的高速缓存相关性信息,第一相关性协议包括一些相关性状态;一种第一相关性存储器设备,用来保持与所述的带有第二相关性协议数据值相关的第一相关性状态记录,第二相关性协议包括与所述的第一相关性协议不同的相关性状态;及一种第一相关性滤波器设备,用来监控在所述的第二总线上的总线事务并禁止在所述的第一总线上基于所述的第一相关性状态记录的交叉总线事务。
32.一种多总线、多处理系统包括一种系统存储器;一种与所述的系统存储器通信的第一总线,所述的第一总线,至少具有一个与其耦合的高速缓冲存储器,所述的高速缓冲存储器配置来存储从所述的系统存储器中获取的多个数据值,所述的高速缓冲存储器还配置来保持关于所述的带有第一组相关性状态的数据值的相关性状态信息;一种与所述的第一总线通信的相关性存储器,所述的相关性存储器配置来保持与所述的带有第二组相关性状态的数据值相关的相关性状态记录,其中所述的第二组相关性状态不同于所述的第一组相关性状态;一种与所述的系统存储器通信的第二总线。所述的第二总线能产生总线事务;一种与所述的第二总线通信的相关性滤波器,所述的相关性滤波器配置来监控在所述的第二总线上的总线事务并禁止在所述的第一总线上基于所述的相关性状态记录的交叉总线事务。
33.权利要求32所述的系统,其中所述的第一相关性滤波器还包括第一相关性存储器控制器,它被配置来接收总线事务地址,所述的第一相关性存储器控制器还被配置来访问所述的第二相关性状态记录中的入口,第二相关性状态记录对应于所述的总线事务地址。
34.权利要求33所述的系统,其中所述的第一相关性存储器控制器获取所述的存在于所述的入口的相关性状态。
35.权利要求34所述的系统,其中所述的第一相关性滤波器还包括循环编码器,循环编码器标识总线事务代码,总线事务代码标识所述的总线事务。
36.权利要求35所述的系统,其中所述的第一相关性滤波器还包括规则表,它接收所述的相关性状态和总线事务代码,总线事务代码标识所述的总线事务。
37.一种在多总线系统中保持高速缓存相关性方法包括保持与存在于高速缓存部件中的第一多个数据值相关的高速缓存状态信息,高速缓存部件耦合到第一总线,所述的高速缓存状态信息基于第一组相关性状态;保持与所述的数据值相关的相关性状态记录,所述的相关性状态记录基于第二组相关性状态,其中所述的第二组相关性状态不同于所述的第一组相关性状态;传输在第二总线上的总线事务;及禁止在所述的第一总线上的交叉总线事务,这时所述的相关性状态记录指示存储器相关性不是由所述的总线事务所导致。
38.权利要求37所述的方法还包括访问所述的第二相关性状态记录中的入口的步骤,所述的第二相关性状态记录对应于总线事务地址。
39.权利要求37所述的方法还包括获取所述的存在于所述的入口的相关性状态的步骤。
40.权利要求39所述的方法还包括对所述的总线事务代码进行编码以产生总线事务代码的步骤,总线事务代码标识所述的总线事务。
41.权利要求40所述的方法还包括评价所述的总线事务代码及所述的相关性状态来确定是否交叉总线事务必须保持高速缓存相关性的步骤。
42.一种多总线、多处理系统包括一种系统存储器;一种与所述的系统存储器通信的第一总线和第二总线,所述的第一总线和所述的第二总线具有与其耦合的多个高速缓冲存储器,所述的高速缓冲存储器被配置来执行探询操作并为从所述的系统存储器中获取的多个数据值保持高速缓存状态信息,所述的高速缓冲存储器还被配置来内部修改所述的与某些所述的数据值相关的高速缓存状态信息而不输出所述的内部修改;一种与所述的第一总线通信的相关性存储器,所述的相关性存储器被配置来保持与所述的由在所述的第一总线上的高速缓冲存储器获取的数据值相关的相关性状态记录;及一种与所述的第二总线通信的相关性滤波器,所述的相关性滤波器被配置来监控在所述的第二总线上的总线事务并禁止在所述的第一总线上基于所述的相关性状态记录的交叉总线事务。
43.一种在多总线系统中保持高速缓存相关性方法包括保持与存在于高速缓存部件中的第一多个数据值相关的高速缓存状态信息,该高速缓存部件耦合到系统总线;内部修改所述的在所述的高速缓存部件中的高速缓存状态信息而不输出所述的内部修改;保持与所述的数据值相关的相关性状态记录;传输第二总线上的总线事务;及禁止在所述的系统总线上的交叉总线事务,这时所述的相关性状态记录指示存储器相关性不由所述的总线事务所导致。
44.一种在多处理系统中保持存储器相关性的相关性滤波器;所述的相关性滤波器包括一种具有多个入口的存储器阵列,每个所述的入口被配置来记录存在于多处理机中的数据值的相关性状态;及一种与所述的存储器阵列通信的无效队列,所述的无效队列被配置来比所述的存储器阵列有一个较高程度的相关性,所述的无效队列还被配置来存储所述的从所述的存储器阵列中被排除的入口;
45.一种多总线、多处理系统包括一种第一总线,具有至少一个处理机与其耦合;一种第二总线,具有至少一个处理机与其耦合;一种多端口存储器,耦合到所述的第一总线和所述的第二总线,所述的多端口存储器具有一个存储器单元池,其被配置来在所述的第一总线和所述的第二总线之间传送总线事务,每一个所述的存储器单元被配置来存储总线代码,该总线代码标识或者所述的第一总线或者所述的第二总线作为目的总线,每个所述的存储器单元还被配置来存储总线事务信息,该总线事务信息指示所述的目的总线以执行总线事务;一种第一总线优先级编码器,耦合所述的存储器单元和所述的第一总线,所述的第一总线优先级编码器被配置来评价所述的存储器单元以标识哪个存储器单元指定所述的第一总线;及一种第二总线优先级编码器,耦合所述的存储器单元和所述的第一总线,所述的第二总线优先级编码器被配置来评价所述的存储器单元以标识哪个存储器单元指定所述的第二总线。
46.权利要求45所述的系统还包括空闲的单元编码器,它被配置来确定哪个存储器单元为空闲,可以存储总线事务信息。
47.权利要求45所述的系统还包括一组地址比较器,该地址比较器比较新的总线事务与所述的存在于所述的存储器单元中的总线事务,所述的地址比较器被配置来用所述的新的总线事务和所述的存在于所述的存储器单元中的总线事务指示何时冲突存在。
48.权利要求45所述的系统,其中每个所述的存储器包括地址单元。请求单元和数据单元。
49.权利要求48所述的系统,其中每个所述的地址单元被配置来存储总线事务地址信息。
50.权利要求49所述的系统,其中每个所述的地址单元还被配置来存储在-使用信息。
51.权利要求48所述的系统,其中每个所述的请求单元被配置来存储所述的总线代码和所述的总线事务信息。
52.权利要求48所述的系统,其中每个所述的数据单元被配置来存储所述的总线事务数据。
全文摘要
一种高速缓存相关,多总线,多处理系统及方法使多系统总线(1,2)和I/O总线互连到一种共享主存储器(132),并有效地保持高速缓存相关性而减小对系统内等待时间和总带宽的影响。该系统提供相关性滤波器(200),相关性滤波器(200)以某种方式调整总线—到—总线通信用小量的交叉总线通信量来保持高速缓存相关性。另外,该系统提供一种使多总线互连的存储器单元的多端口池。
文档编号G06F15/16GK1238050SQ97199718
公开日1999年12月8日 申请日期1997年9月16日 优先权日1996年9月16日
发明者P·D·沃格特, G·P·怀特, S·S·常 申请人:科罗拉利公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1