以推测方式使高速缓存中的缓存行失效的方法及系统的制作方法

文档序号:6357186阅读:302来源:国知局
专利名称:以推测方式使高速缓存中的缓存行失效的方法及系统的制作方法
技术领域
本发明涉及高速缓存,特别是涉及使高速缓存中的缓存行失效。
背景技术
因为通常是在对密度而非在速度的考虑下设计主系统内存,所以微处理器设计者已将高速缓存加入其设计中,以便减少微处理器对直接存取主存储器的需求。高速缓存是一种存取速度快于主存储器的一种小容量内存。计算机系统可以有若干不同阶层的高速缓存。例如,一个计算机系统可以有″第一级″(L1)高速缓存及″第二级″(L2)高速缓存。通常是将这些高速缓存与微处理器集成。通常是以诸如静态随机存取内存(Static Random Access Memory;简称SRAM)等快速的存储单元构成高速缓存,而SRAM的存取时间快于主系统存储器所用的内存(通常是动态随机存取内存(Dynamic Random AccessMemory;简称DRAM)或同步动态随机存取内存(SynchronousDynamic Random Access Memory;简称SDRAM))之存取时间。因为SRAM的组件密度较低且成本较高,所以通常不将较快速的SRAM用于主系统内存。
许多其它类型的高速缓存也是可行的。例如,可将主系统内存用来作为系统的速度较慢的直接存取储存装置(例如硬盘机)的高速缓存。诸如硬盘机等的其它装置亦可设有内部的高速缓存,用以提升该装置的性能。
当微处理器需要内存中的数据时,该微处理器通常先检查其L1高速缓存,以便确定所需的数据是否已存放在该高速缓存中。如果并非如此,则检查L2高速缓存。在此同时,可向内存请求该数据,以防并未命中(miss)L2高速缓存。如果L2高速缓存储存了该数据,则L2高速缓存将该数据提供给微处理器(通常在比主系统内存可做到的快许多的速度及短许多的存取时间下提供该数据),而且如果曾经向内存请求该数据,则取消该请求。如果该数据并未缓冲储存在L1或L2高速缓存(称之为″高速缓存未命中″),则从主系统内存或其它类型的海量储存装置(例如硬盘机)读取数据。与自L1高速缓存存取数据相比时,从内存存取数据要耗用更多的时钟周期。同样地,如果数据并未存放在主系统内存,则自海量储存装置存取数据甚至要耗用更多的时钟周期。
通常是在引用的区域性(locality of reference)原理下运行高速缓存,引用的区域性是指最近使用过的数据(及该区域中的数据)现在存取的可能性要大于其余的数据。该原理是有把握的,这是因为计算机软件通常具有循环及分支,因而要重新执行先前执行过的程序代码。通过将最近存取的指令及数据储存在高速缓存中,因此微处理器不需要等候从主存储器读取的指令及数据,所以可提升系统性能。
微处理器及计算机系统设计者又进一步利用了引用的区域性原理,其方式为利用诸如分支预测等技术,而在微处理器实际需要用到指令及数据之前,就以前瞻的方式先将这些指令及数据储存在高速缓存中。额外的,当从内存读取指令或数据字节时,读取在该指令或数据之后的一些额外字节,并将这些字节储存在高速缓存中。引用的区域性原理再一次表明总体说来,处理器需要这些额外的指令及数据字节的可能性大于其它的数据或指令。
有数种不同的方式可将系统内存映射到高速缓存。一种常见的方式是采用n路组关联(set-associative)高速缓存,其中将该高速缓存分成若干组。每一组包含n个缓存行(cache lines)。缓存行是一串连续的字节(例如32或64个字节)。为了效率上的考虑,高速缓存通常是以缓存行,而不是以单个字节进行处理。可将主存储器中可存放在高速缓存中的各存储区域分别指定给这些组缓存行中的一组缓存行。因此,可将每一存储位置缓冲储存在指定的组内的n个区域中的任一区域。该n路组关联高速缓存的一个特殊情况是直接映射式高速缓存。在直接映射式高速缓存中,n=1,因而每一存储花卉只映射至该高速缓存中的一个区域。该n路组关联高速缓存的另一种特殊情况是完全关联高速缓存。在此种情况中,n=m,其中m是高速缓存中缓存行的数目(且因而只有一″组″)。在此种情况中,每一存储区域可映射至这些高速缓存区域中的任一区域。
高速缓存的两个基本性能准则是命中率(hit rate)(亦即,在高速缓存中找到的内存存取次数与内存存取总次数间之比率)及搜索速度(亦即,做出命中或未命中判定的速度)。在直接映射式高速缓存中,搜索速度最佳化,但其代价是命中率较低。这是因为直接映射式高速缓存较易判定命中/未命中(因为存储位置只映射至一条缓存行,所以只须检查该缓存行即可),但较难有较高的命中率,这是因为多个存储位置映射至单一的缓存行。相反地,完全关联高速缓存将命中率最佳化,但却牺牲了搜索速度。由于可让所有的存储位置映射至任何缓存行,所以提高了命中的机率,但是却大幅增加了搜索的复杂性,这是因为必须为每一存储位置搜索所有的缓存行。组关联高速缓存由于提供了比直接映射式高速缓存更多的关联性(因而有较高的命中率),同时也提供了比完全关联高速缓存更快的搜索速度,进而试图在上述两种内存之间提供一种折衷方案。
因为高速缓存容量受到若干因素(其中包括晶粒尺寸、电力消耗及成本)的限制,所以当将信息加载到高速缓存时,必须要小心处理。一个特别的考虑是设计者决定一方针,用以覆写高速缓存中现有的指令及数据,或使现有的指令及数据失效,以便腾出新指令及数据的空间。因此,在n>1的组关联高速缓存(因而有要用哪一缓存行来缓冲储存一特定的存储位置的选择)中,要有某一方式在可能的各缓存行中选出哪一缓存行来填入新的资料。一种常用的解决方案是追踪对每一缓冲储存的存储位置存取的相对顺序,然后以新的指令或数据取代最近最少使用的指令或数据。该解决方案是基于最近存取的缓存行有较大的可能再度被存取的原理。其它的解决方案包括随机取代及先进先出技术。
平均上,最近最少使用的(Least-Recently Used;简称LRU)高速缓存取代算法提供了比其它算法较佳的性能。然而,为了要在n路组关联高速缓存中决定最近最少使用的(LRU)缓存行,传统的方式需要有相当大量的复杂硬件(其中包括计数器及n路多任务器)来实施LRU算法。此外,要用每一高速缓存数据项的状态位来追踪每一数据项的使用情况。当在该组中做出一个新的数据项时,即扫描这些状态位,以便决定哪一缓存行是最近最少使用的或失效的。然后收回该最近最少使用的或失效的缓存行,以便腾出用于新数据项的空间。传统LRU取代算法的缺点包括硬件量、状态位数目、及实施该算法所需的时间、以及扫描该组中失效的数据项所需的时间及硬件。
一般而言,最好是能提升高速缓存子系统的性能。例如,当处理器的速度提高时,最好是能提供可更迅速地供应更多数据的高速缓存子系统。

发明内容
使高速缓存中的缓存行失效通常可能是有用的。然而,缓存行的失效操作可能取决于许多基本的因素。在许多情况中,执行错误检查,以便决定这些基本的因素是否正确。如果这些因素不正确,则该失效操作是错误的,且不应执行该失效操作。因为错误检查可能要耗用相当长的时间才能完成,所以当高速缓存控制器实际收到失效请求时,可能无法得到该失效操作是否为错误的判定。因此,失效请求便请求高速缓存控制器耗用时间等候错误检查的判定,而使得该高速缓存控制器无法执行其它待处理的工作。同时,缓存行的失效操作是错误的情况是很少见的,因而该高速缓存控制器用来等候错误检查完成的时间经常是浪费掉了。
如果高速缓存控制器被设定成以推测方式使缓存行失效,则该高速缓存控制器就能够立即响应失效请求,而不必等候错误检查的完成。为了处理失效操作是错误的因而不应执行该失效操作这种很少见的情况,该高速缓存控制器亦可在错误检查完成之前使以推测方式被失效的该缓存行不予修改。在此种方式下,如果后来发现该失效操作是错误的,则可撤销该推测式失效操作。
因此,本发明揭示了以推测方式使高速缓存中的缓存行失效的方法及系统的各实施例。在一个实施例中,计算机系统包含处理器、系统内存、高速缓存控制器、高速缓存、及错误检测单元。该高速缓存连接到该处理器,且包含多个缓存行储存区域。该高速缓存控制器连接以接收使第一缓存行失效的第一请求。响应收到的该第一请求,该高速缓存控制器被设定成以推测方式使该第一缓存行失效。为了保留该第一缓存行以防后来需要撤销该推测式失效操作,该高速缓存控制器进一步设定成在该第一缓存行的失效操作变成非推测式之前,禁止修改该第一缓存行储存区域。该错误检测单元设定成执行对应于该第一请求的至少一个检查。例如,该错误检测单元可以是该高速缓存控制器本身,且该检查可能涉及进行检查,以便在给定该第一缓存行状态的情况下,确保导致该推测式失效的一个操作(例如,响应来自较高级高速缓存的填入请求,而命中一个独占式高速缓存(exclusivecache))是正确的。如果该错误检测单元执行该检查,且并未检测到任何错误,则该第一缓存行的该失效操作变成了非推测式。
在一个实施例中,高速缓存控制器可设定成切换与第一缓存行相关联的有效位,而以推测方式使该第一缓存行失效。因此,撤销该推测式失效操作可能涉及重新切换该有效位,以便表示该第一缓存行再度是有效的。此外,在某些实施例中,可将该高速缓存控制器设定成在该第一缓存行的该失效操作变成非推测式之前,不接受相关于该第一缓存行的状态或数据的请求。在此种方式下,可将这些请求延迟到该推测式失效操作变成非推测式或被撤销为止。一般而言,在该第一缓存行的该失效操作变成非推测式之前,可将该高速缓存控制器设定成根据请求的型式,和是否请求为相关于或修改了以推测方式失效的第一缓存行,而不接收额外的请求。例如,可将该高速缓存控制器设定成不接受有下列情况的额外请求,这些情况包括来自较高级高速缓存的命中该第一缓存行的填入请求、或对该第一缓存行的探测或状态改变请求、或来自选择该第一缓存行以供取代的该较高级高速缓存的复制回(copy back)请求。可将该高速缓存控制器设定成不接受与该第一缓存行的标记的一部分相符之额外请求。
在某些实施例中,作为推测式失效操作的一部分,可将高速缓存控制器设定成储存与第一缓存行相关联的推测式失效操作取代前的状态(例如用来选择供取代的缓存行的状态),并以犹如已使该第一缓存行失效的方式,更新该第一缓存行的推测式失效操作取代后的状态。如果后来判定该推测式失效操作是错误的,则该高速缓存控制器在撤销该推测式失效操作时,可还原该储存的推测式失效操作取代前的状态。
在另一实施例中,揭示了一种以推测方式使高速缓存中的缓存行失效的方法。该方法包含下列步骤接受将造成使该高速缓存中的该缓存行失效的请求;启动用来判定该失效操作是否错误的各项检查;以及以推测方式使该缓存行失效。以推测方式使该缓存行失效的该步骤涉及下列步骤指示该缓存行是失效的;以及在完成这些检查之前,使该缓存行不会受到后续的修改。如果这些检查中的一个检查判定该失效操作是错误的,则该方法亦包含下列步骤通过再度指示该缓存行是有效的,而撤销该推测式失效操作。
在另一实施例中,揭示了一种以推测方式使独占式高速缓存中的第一缓存行失效的方法。该方法可包含下列步骤接受来自较高级高速缓存的填入请求;判定该填入请求是否命中该独占式高速缓存;启动用来判定是否错误地启动该填入请求的各项检查;以及如果该填入请求命中该独占式高速缓存,则将该独占式高速缓存的该第一缓存行提供给该较高级高速缓存。如果在将该第一缓存行的内容提供给该较高级高速缓存时,尚未完成这些检查,则可以推测方式使该第一缓存行失效。以推测方式使该缓存行失效的步骤可包含下列步骤指示该第一缓存行是失效的;以及在完成这些检查之前,使该第一缓存行不会受到后续的修改。
在又一实施例中,揭示了一种高速缓存子系统。该高速缓存子系统包含高速缓存及高速缓存控制器。该高速缓存控制器设定成以推测方式使第一缓存行失效。如果检测到该推测式失效操作是错误的,则可将该高速缓存控制器设定成撤销该推测式失效操作。该高速缓存子系统亦可包含推测式失效控制器,该推测式失效控制器设定成在该失效操作变成非推测式之前,使该第一缓存行不会被修改。检测该推测式失效操作是否错误可能需要某一数目的时钟周期,因而在该某一数目的时钟周期之前,该推测方式失效操作可能无法变成非推测方式。
虽然易于对本发明做出各种修改及替代形式,但是将以附图举例的方式示出本发明的一些特定实施例,且本文将详细说明这些特定实施例。然而,我们应当了解,本发明的这些附图及详细说明的用意并非将本发明限于所揭示的特定形式,相反地,本发明将涵盖在最后申请权利要求所界定的本发明精神及范围内的所有修改、等效物、及替代方式。


图1A是一个实施例中的包含式(inclusive)高速缓存之间的关系的维恩图(Venn diagram)。
图1B是一个实施例中的独占式(exclusive)高速缓存间的关系的维恩图(Venn diagram)。
图2是高速缓存子系统的实施例的方框图。
图3是可配合诸如图2所示的高速缓存子系统使用的地址冲突检测硬件的一个实施例。
图4A是在根据一个实施例的独占式高速缓存中如何执行失效操作的流程图。
图4B接续图4A所示的流程图。
图5是一种以推测方式使高速缓存中的缓存行失效的方法的一个实施例,且与该高速缓存是包含式、或独占式、或非以上两种的高速缓存无关。
图6是计算机系统的一个实施例的方框图。
图7示出多节点处理系统的一个实施例。
具体实施例方式
高速缓存子系统计算机系统(例如图6及图7所示的计算机系统)通常采用高速缓存子系统。这些高速缓存子系统通常包含与处理器集成的L1高速缓存、及非集成的L2高速缓存。然而,随着使半导体装置具有更高集成度的加工技术的发展,微处理器设计者现在可将第二阶(L2)高速缓存包含在芯片中,作为一种进一步提升性能的方式。通过集成L2高速缓存,可改善L1与L2高速缓存间的传输延迟时间及传输频宽,这是因为通讯不再需要经由接脚。
传统方式设计第一阶(L1)高速缓存的目标是在不产生额外存取等待时间的前提下尽量加大L1高速缓存的容量。此种大容量L1高速缓存在传统上与类似容量的L2高速缓存互补,而L2高速缓存的容量通常与L1高速缓存相同,或大L1高速缓存,且L2高速缓存的存取等待时间通常大于L1高速缓存的存取等待时间,但小于系统内存的等待时间。
可将L2高速缓存设计成包含式、或独占式、或非以上两种的高速缓存。在理想的包含式L2高速缓存中,如图1A的维恩图所示,在L1高速缓存中的每一缓存行也在L2高速缓存中。相反地,在理想的独占式L2高速缓存中,如图1B的维恩图所示,在L1高速缓存中的各缓存行并不在L2高速缓存中。请注意,在某些实施例中,包含式及独占式L2高速缓存对于系统内存而言都可以是包含式(如图1A及1B所示),因而″独占式″L2高速缓存可能只是对于L1高速缓存而言是独占式。在一个既不是包含式也不是独占式的高速缓存系统中,L2高速缓存中储存的这些缓存行并不相关于L1高速缓存中储存的那些缓存行,因而并不保证该L1高速缓存中的缓存行将存在于或不存在于该L2高速缓存中。
基于这些原理,各种高速缓存都有其优点及缺点。通常大部分的L2高速缓存是包含式。在包含式高速缓存中,可减少L1至L2高速缓存的数据转移次数。因为不需要将一个未修改的L1高速缓存排出缓存行复制到L2高速缓存,所以可减少数据转移的次数。要排出的缓存行是一个资料区块,而要先将该数据区块写回主存储器,然后才重新使用该数据区块。例如,一个填入L1高速缓存操作请求取代现有的缓存行,则该现有的缓存行或要排出的缓存行被排出L1高速缓存,而让出空间给进来的缓存行。在一个包含式高速缓存中,L1要排出的缓存行的一份拷贝业已存在于L2高速缓存中。因此,如果该L1要排出的缓存行在L1高速缓存中尚未修改过,则因为相同的缓存行业已存在于L2高速缓存,所以无须将该缓存行复制到L2高速缓存。对于芯片外的L2高速缓存而言,内容的包含可能也是相当重要,这是因为在L1至L2的复制操作期间,将因L1高速缓存中的缓存行保证是在L2高速缓存中,而无须执行外部L2标记查询。此外,该L2高速缓存可以是该L1高速缓存的总线监视过滤器(例如,在使用在线(in-line)L2高速缓存时)。
包含式高速缓存的主要缺点即是其提供了较小的有效高速缓存容量。如图1A所示,因为L1高速缓存中的每一缓存行也在L2高速缓存中,所以L1及L2高速缓存的总有效高速缓存容量只是该L2高速缓存的容量。这是L2高速缓存的容量通常大于L1高速缓存的容量的一个原因。另一个缺点是因为需要保持其包含性,所以高速缓存控制器需要有较复杂的设计。例如,当选择潜在的L2要排出的缓存行时,包含式高速缓存控制器必须回头探测L1高速缓存,以便确定该L2要排出的缓存行目前并未存在于L1高速缓存。如果潜在的L2要排出的缓存行的确存在于L1高速缓存,则可能需要选择另一要排出的缓存行,以便保持内容的包含性。此外,在某些实施例中,如果该潜在的L2要排出的缓存行也存在于L1高速缓存,则可使L1高速缓存中该对应的缓存行失效(不同于选择另一个L2要排出的缓存行),而保持内容的包含性。
因为高速缓存通常是低组件密度且高成本的内存,所以从成本及芯片内部空间的观点而言,集成L2高速缓存在传统上是一种不利的设计选择,尤其在L2高速缓存通常是包含式因而在容量上大于L1高速缓存时更是如此。
如图1B所示,独占式高速缓存与包含式高速缓存相反,可提供等于L1及L2高速缓存总容量的较大的有效高速缓存容量。该较大的有效高速缓存容量可得到较佳的命中率。此外,因为在排出L2欲排出的缓存行时,无须回头探测L1高速缓存,所以可减少L2高速缓存控制器之复杂性。
在使用独占式高速缓存时,可能会增加L1与L2高速缓存之间数据转移的次数。例如,因为根据引用的区域性原理,不论各L1要排出的缓存行是否己修改,可能都要将这些缓存行复制到L2高速缓存,而可能增加L1至L2高速缓存的数据转移次数。将L1欲排出的缓存行储存在L2高速缓存可满足引用的区域性原理,这是因为最近要用到L1欲排出的缓存行的机率大于L2高速缓存中任何其它的缓存行。视L1与L2高速缓存间的通讯链路而定,在某些例子中,L1至L2高速缓存的数据转移次数增加这一因素可能使包含式高速缓存成为较佳的选择。
独占式高速缓存亦可用于其它的高速缓冲储存应用。例如,独占式高速缓存可用来设计多阶层的高速缓存子系统,以便配合图形系统或硬盘机而使用。在这些实施例中,最好是可使用独占式高速缓存来增加该高速缓存子系统的有效容量,而不需要包含式高速缓存所需这么多的额外高速缓存。在某些实施例中,纵然并未将独占式高速缓存集成在与较高级高速缓存相同的基材上,该独占式高速缓存可能也是一种符合实际的设计选择。
图2示出高速缓存子系统407的实施例,该高速缓存子系统407设定成储存来自系统内存425的数据及(或)指令缓存行,以便为执行核心409所使用。执行核心409将地址经由地址总线411而提供给高速缓存子系统控制器419,而请求数据。该地址可以是虚拟地址。虽然在该例子中,同一高速缓存子系统控制器419控制L1及L2高速缓存,但是可在其它的实施例中使用独立的L1及L2高速缓存控制器。L2高速缓存423可以是独占式、包含式、或既非独占式也非包含式。
高速缓存子系统控制器419响应自执行核心409接收到的地址,而可将该地址提供给L1高速缓存417。在某些实施例中,可以线性地或虚拟地寻址到L1高速缓存417,因而如果自执行核心409接收的该地址是虚拟地址,则在将该地址提供给L1高速缓存417之前,可以无须转换该地址。相反地,在某些实施例中,可实体地寻址到L2高速缓存423,因而当未命中L1高速缓存417时,在将虚拟地址提供给L2高速缓存423之前,必须先转换该虚拟地址。在其它的实施例中,是以相同的方式(例如,虚拟或实体地)寻址到这两个高速缓存。
当L1高速缓存填入请求未命中L2高速缓存423时,可向系统内存425请求该缓存行,并将该缓存行放入L1高速缓存417(例如,在L2高速缓存423是独占式的情况下),或者将该缓存行放入L2及L1高速缓存(例如,在L2高速缓存423是包含式的情况下)。为了将所请求的该缓存行填入L1高速缓存417,可产生L1要排出的缓存行,并将该L1要排出的缓存行复制回L2高速缓存423(如果L2高速缓存423是独占式,则不论L1要排出的缓存行是否修改过,都要执行此复制操作;或者如果L2高速缓存423是包含式,则在L1要排出的缓存行在修改过的情况下,执行该复制操作)。如果L2高速缓存423是独占式,则该复制操作可能需要排出一个L2缓存行,因而可产生一个L2要排出的缓存行,而且如果该要排出的缓存行修改过,则将该要排出的缓存行写回到内存425。在L2高速缓存423是独占式的实施例中,L1及L2高速缓存可共享一个或多个要排出的缓存行缓冲区421,其中在将各要排出的缓存行复制回到独占式L2高速缓存423(在这些要排出的缓存行是L1要排出的缓存行的情况下)或系统内存425(在这些要排出的缓存行是修正过的L2要排出的缓存行的情况下)时,这些要排出的缓存行缓冲区421缓冲储存这些要排出的缓存行。
当L1填入请求命中L2高速缓存423时,可将缓存行复制到L1高速缓存417。如果该L1请求命中L2独占式高速缓存423,则由于与保持内容独有性相关联的数项理由下,最好是使该命中的缓存行失效(不同于保持该缓存行的有效性)。例如,如果使该缓存行失效,则高速缓存子系统407中只有该缓存行的一份拷贝。因而可大幅简化高速缓存子系统407的控制逻辑电路,这是因为在任何特定时间无须追踪该缓存行的哪一份拷贝是较新的。此外,使该缓存行失效时,空出L2高速缓存423中的一个位置,可实现由独占式高速缓存系统所提供的较大的有效高速缓存容量。然而,在使缓存行失效之前,可执行数项检查,以便判定是否错误地执行了导致该失效的操作(例如,未命中L1高速缓存,而要向L2高速缓存产生填入请求)。如果这些检查显示错误,则可取消该操作,及(或)稍后再重新尝试该操作。因此,该失效操作只能发生在这些检查指示引发该失效操作的状况并无错误的情况下。
在包含式高速缓存或既不是独占式也不是包含式的高速缓存中,也有多种可使缓存行失效的情况。如同独占式高速缓存的失效操作,这些失效操作最后要取决于用来决定该失效指令是否错误的各项检查。例如,当以非循序方式执行各指令时,可能因分支预测而提取指令。如果该分支预测证明是错误的,则可能需要取消所提取该指令的执行,及(或)可能需要撤销所提取该指令的执行效果。在替代实施例中,在非特权模式下以非循序方式执行的指令可能是特权指令。如果这些指令中的一个指令是使缓存行或数据区块失效但并未实际自高速缓存清除该缓存行的指令,且该指令使L1高速缓存中的缓存行失效,则可能也需要使包含式L2高速缓存中的该缓存行的拷贝失效。然而,如果某些检查后来检测到错误预测的分支或违反特权,则可产生异常状况(exception),且可能需要撤销那些产生数据项的指令所导致的失效操作。因此,高速缓存中的失效操作可能取决于异常状况检查。
检查的另一个例子可能涉及检查计算机系统中数据的其它版本,以便符合顺序上的请求。例如,所请求的数据线的修改后的拷贝可能储存在缓冲区(例如,较高级高速缓存的写入缓冲区或要排出的缓存行缓冲区)中。与较低级高速缓存中储存的拷贝相比时,可能最近才修改过该修改后的拷贝,因而如果检测到这份拷贝,则可取消对该较低级高速缓存的填入请求,因而提出请求的装置可接收到所请求的数据的最近修改的拷贝。
可执行的其它检查是别名检查。别名检查涉及寻找虚拟寻址式高速缓存可能发生的问题。虚拟内存系统可将实际存储页映射至一个以上的虚拟地址。可将这些不同的虚拟地址(亦即别名)缓冲储存在虚拟寻址式高速缓存中的一个以上的位置。例如,如果单一实际存储页映射至两个或更多个不同的虚拟地址,而这些虚拟地址又映射至不同的缓存行及不同的虚拟存储页,则来自该单一实际存储页的数据有可能缓冲储存在虚拟寻址式高速缓存内的多个位置。因此,即使使用不同的别名来请求某一缓存行时,可能产生命中,但是使用一个虚拟地址来请求相同的缓存行时,仍可能产生未命中。别名检查可检测到表面上的未命中实际上命中了虚拟寻址式高速缓存中的以别名寻址的缓存行。例如,在一个实施例中,虚拟寻址式L1高速缓存可包含独立的指令高速缓存及数据高速缓存。可将该L1高速缓存设定成相同数据的一份拷贝可同时存放在指令高速缓存及数据高速缓存。可能并未将该L1高速缓存控制器设定成在选择该数据高速缓存中的L1要排出的缓存行时,检查一份以别名寻址的拷贝。因此,即使L1要排出的缓存行的以别名寻址的拷贝可能仍然存在于该指令高速缓存中(或者存在于该数据高速缓存中,这是在自该指令高速缓存选出该要排出的缓存行的情况下),仍然可能将该要排出的缓存行复制回到独占式L2高速缓存。因此,针对该数据的一个稍后的填入请求可能未命中该L1高速缓存(在完成该别名检查之前),但会命中该L2高速缓存。因为该别名检查应检测该L1高速缓存中以别名寻址的拷贝,所以不应在该L2高速缓存中使该缓存行失效。因此,在该实施例中,独占式高速缓存中的失效操作可能要取决于该别名检查的结果。
检查的又一个例子可根据缓存行的状态而判定是否可存取该缓存行。许多系统追踪每一缓存行的MESI或MOESI(Modified,Owned,Exclusive,Shared,Invalid;经过修改的、拥有的、独有的、共有的、失效的)状态。视缓存行所处的状态而定,可能允许或可能不允许对该缓存行执行某些操作。例如,如果来自L1指令高速缓存的填入请求命中了L2高速缓存中一个修改过的缓存行,则在将该修改过的L2缓存行写入内存之前,可能不适合服务该填入请求(例如,如果该指令高速缓存并未储存高速缓存一致性状态,则可使用上述的限制)。因此,某些检查可能涉及在知道缓存行的目前状态的情况下,判定一特定的存取是否适当。
因此,在独占式高速缓存或包含式高速缓存中,可能因另一高速缓存操作(或部分地因另一高速缓存操作)而使缓存行失效。同时,可能要耗用较长的时间来完成的各种检查的结果可能撤销这些失效操作。如果将失效操作延迟到这些检查完成之后,则高速缓存可能将相当长的时间耗用在等候这些检查。如果高速缓存控制器在使缓存行失效之前,要等候这些检查的完成,则该高速缓存控制器可能无法执行其它的操作,因而该延迟对高速缓存的性能可能有不利的影响。反之,如果该高速缓存控制器在这些检查完成之前即执行失效操作,则在后来证实该失效操作是错误的情况下,可能无法还原己失效的该缓存行。因此,虽然执行这些检查可提升高速缓存子系统的正确性,但是该提升的正确性的代价是牺牲了性能。
高速缓存控制器为了提升诸如图2所示的高速缓存子系统的性能,可将高速缓存控制器设定成响应指令或请求,而以推测方式使缓存行失效,而不必顾及对该请求的各项检查是否已完成。例如,为了尽量缩短较低级独占式高速缓存的存取等待时间,当在较高级高速缓存中检测到未命中时,可立即将填入请求(如果该填入请求命中了该独占式高速缓存,则该填入请求终将使该独占式高速缓存中的缓存行失效)传送到该较低级独占式高速缓存控制器。此种方式可能涉及在执行诸如别名检查及顺序请求检查等的各种检查之前,先将请求传送到该较低级独占式高速缓存控制器。可能要耗用数个时钟周期才能完成这些检查,但是这些检查很少会不通过的。因此,在这些检查完成之前即先以推测方式使缓存行失效,通常可产生正确的结果,同时又避免了任何不必要的延迟。除了可提供较佳的效率之外,将高速缓存控制器设定成执行推测式失效操作可产生的另一效益即是较佳的资源使用。例如,独占式高速缓存控制器可将标记查询及推测式失效操作实施为单一命令,而无须分别执行每一命令。
在发生这些检查实际上通不过的少见情况时,可在更正了使这些检查通不过的问题之后,取消、延迟、及(或)重新尝试引发该失效操作的指令或请求。例如,如果来自指令高速缓存的填入请求命中一个独占式L2高速缓存,则在该L2高速缓存中被命中的缓存行是处于经过修改的状态的情况下,可取消该请求。然而,如果是以推测方式使命中的缓存行失效,则在完成这些检查时,可能无法撤销该失效操作。为了避免此种状况,亦可将设定执行推测式失效操作的一个高速缓存控制器设定成提供还原方法,该还原方法在稍后未通过这些检查时可还原在推测方式下失效的该缓存行。
在一个实施例中,高速缓存控制器可在这些检查完成之前保护在推测方式下失效的缓存行,而提供此种还原机制。因此,以推测方式使该缓存行失效时,可让该高速缓存控制器移到一些不会修改在推测方式下失效的该缓存行的其它操作。例如,在某些实施例中,在以推测方式使缓存行失效时间与这些检查完成时间之间,可能向高速缓存控制器提出数项请求。为了避免这些后续指令或请求与该推测式失效操作之间(在后来要撤销该推测式失效操作的情况中)的冲突,可将该高速缓存控制器设定成不接受或造成潜在冲突的任何请求。可将该高速缓存控制器设定成过滤掉与在推测方式下失效的该缓存行有关的各请求,即便是这些请求并未实际修改该缓存行也要予过滤掉。例如,如果最终要撤销该推测式失效操作(例如,因为其中一项这些检查显示错误),则在这些检查完成之前不接受这些无修改的请求时,可以不会在假设该缓存行是失效的情况下错误地处理了请求。因此,在一个实施例中,可将该高速缓存控制器设定成不接收其标记符合在推测方式下失效的该缓存行的标记的一部分的任何请求或指令。
在一个略微复杂的实施例中,可将高速缓存控制器设定成不接受基于该类请求或指令而提出的请求、及(或)该指令的潜在效果。例如,可将该高速缓存控制器设定成过滤掉符合在推测方式下失效的该缓存行的标记的填入请求、探测请求、或状态改变请求。此外,可将该高速缓存控制器设定成根据标记符合、及在推测方式下失效的该缓存行的取代状态,而不接受将会取代该缓存行的复制回请求或填入请求。例如,在假设使用了LRU取代策略的情况下,如果复制回操作符合在推测方式下失效的该缓存行的标记,且该缓存行是一组中最近最少使用的缓存行,则复制回操作通常会取代该缓存行。为了保护在推测方式下失效的该缓存行,可将该高速缓存控制器设定成不接受复制回操作。在替代实施例中,可将该高速缓存控制器设定成接受该复制回操作,但取代另一缓存行(不理会现有的取代状态),而取代在推测方式下失效的该缓存行。如果在推测方式下失效的该缓存行的取代状态指示该复制回操作或填入请求将不会覆写在推测方式下失效的该缓存行(例如,采用LRU取代架构,且在推测方式下失效的该缓存行不是该LRU缓存行),可将该高速缓存控制器设定成接受该请求。
在一个实施例中,如图3中所示,高速缓存控制器可包含地址冲突检测硬件(500)。可将该地址冲突检测硬件设定成检测造成以推测方式使缓存行失效的请求与自以使该缓存行失效时间至完成对推测式失效操作的这些检查时间之间所接收的任何后续请求或指令之间之任何互动。
地址冲突检测硬件500可包含地址寄存器504,该地址寄存器504设定成储存对应于在推测方式下失效的该缓存行的地址之全部或部分。例如,地址寄存器504可储存在推测方式下失效的缓存行的标记。为了提供以推测方式使多个缓存行失效之能力,可在储存单元(502)中提供数个这些缓存器504。比较器501可将待处理的请求的地址与地址寄存器504及(或)储存单元502中之一个或多个地址比较。如果这些地址并不相符,则比较器501可确认激活信号。高速缓存控制器可根据激活信号的状态,而接受或不接受该待处理的请求。例如,如果该待处理的请求的地址符合与在推测方式下失效的该缓存行对应的地址(或地址的一部分),则比较器501可解除确认该激活信号,而使该高速缓存控制器不接受该待处理的请求。
在某些实施例中,推测式失效控制器506可控制地址冲突检测硬件500。可将推测式失效控制器506设定成负载于储存单元502中之其中一个缓存器504,该储存单元502具有在推测方式下失效的缓存行的地址或标记的一部分。可将推测式失效控制器506设定成在完成某些检查可能耗用的最大数目的时钟周期中,保护这些一个或多个在推测方式下失效的缓存行。例如,可将推测式失效控制器506设定成在完成别名检查可能耗用的数目的时钟周期中,保护这些一个或多个在推测方式下失效的缓存行。在另一个实施例中,在完成异常状况检查可能耗用的数目的时钟周期中,推测式失效控制器506可保护这些一个或多个在推测方式下失效的缓存行。
在一个实施例中,推测式失效控制器506可将在推测方式下失效的该缓存行的标记或地址的一部分加载缓存器504,并使比较器501将该缓存器中之值与进来的请求比较,而在某一数目的时钟周期中保护在推测方式下失效的该缓存行。在该指定数目的时钟周期之后,推测式失效控制器506可清除缓存器504,或指示比较器501不要再将缓存器504中之值与进来的请求比较。亦可将该推测式失效控制器设定成如果并无任何要保护的在推测方式下失效的缓存行,则确认该激活信号,而避开该比较器501。
在一个实施例中,在这些检查完成之前,地址冲突检测硬件500可让高速缓存控制器在只要不与在推测方式下失效的该缓存行相关的情况下,接受这些额外的填入请求。同样地,只要额外的探测请求或状态改变请求并未涉及在推测方式下失效的该缓存行,则可接受这些请求;而且只要L1至L2复制回请求并未将在推测方式下失效的该缓存行选择为取代对象,则可接受该请求。因此,额外的比较可检测到某些类型的指令,且可只将这些指令与储存单元502的地址寄存器504中之值比较。
为了检测L1至L2复制回是否选择了在推测方式下失效的缓存行,地址冲突检测硬件可包含额外的逻辑电路,用以检测哪一缓存行将会选择为取代的对象。例如,在采用LRU取代策略的n路组关联高速缓存中,复制回操作通常将取代一组中最近最少使用的缓存行。然而,如果在该适当组中最近最少使用的该缓存行是在推测方式下失效的缓存行,则不应接受该复制回操作。在替代实施例中,并不是不接受该复制回操作,而是可接受该复制回操作,但此时并不取代在推测方式下失效的该缓存行,而是该复制回操作可取代该组中之另一缓存行,不必顾及在推测方式下失效的该缓存行的LRU状态。因此,地址冲突检测硬件500可包含逻辑电路,用以根据包含该缓存行的该组或该缓存行的取代状态(例如,LRU状态或FIFO状态等),而判定复制回操作是否将取代该缓存行。如果复制回操作将取代在推测方式下失效的该缓存行,则地址冲突检测硬件500可解除确认该激活信号,或使该复制回操作取代另一缓存行。
因此,请再参阅图2,并不等候数个时钟周期对于这些检查的完成,而是可将高速缓存控制器419设定成如果与第一请求或指令相关联的各项检查尚未完成,则响应该第一请求或指令,而以推测方式使缓存行失效。该高速缓存控制器可将该缓存行标示为失效(例如将有效位自有效切换至失效),而以推测方式使该缓存行失效。在一个较佳实施例中,该高速缓存控制器可指示该缓存行是失效的而不会影响到该缓存行中储存的数据,因而如果任何这些检查未通过,则可更容易地撤销使该缓存行失效的操作。高速缓存控制器419亦可包含诸如地址冲突检测硬件500等的保护机制,用以保护在推测方式下失效的缓存行。因此,高速缓存控制器419可在以推测方式使缓存行失效的同时,启动保护机制。例如,可将对应于在推测方式下失效的该缓存行的地址的全部或部分加载地址寄存器504,而启动图3中所示的保护机制。如果并未通过对应于该失效操作的各项检查,则高速缓存控制器419可通过指示该缓存行再度是有效的(例如,将有效位自失效切换至有效),而撤销该推测式失效操作。亦可将高速缓存控制器419设定成在完成这些检查之后,关闭该保护机制。
如前文所述,在许多实施例中,高速缓存控制器419可利用某些类型的取代架构来取代高速缓存中的各缓存行。例如,该高速缓存控制器可采用LRU或FIFO取代架构。为了实施此种架构,该高速缓存控制器可储存每一缓存行或一群缓存行的取代状态信息。在实施LRU取代架构的一个实施例中,该取代状态可指示该高速缓存中或高速缓存的一部分(例如一组关联高速缓存中之一组)中的每一缓存行的相对使用状态。此外,在实施FIFO取代架构的一个实施例中,该取代状态可指示相对于该高速缓存或其一部分(例如一组)中的其它缓存行,每一缓存行己存放在该高速缓存或其一部分中有多久。
当以推测方式使缓存行失效时,即使该推测式失效是非推测式失效,亦更新对应于该高速缓存或该高速缓存的一部分的取代状态。然而,如果后来取消了该推测式失效操作,则更新后的取代状态信息可能尚未反映该缓存行的适当取代状态。为了补偿,可将高速缓存控制器419设定成当以推测方式使缓存行失效时,在更新该取代状态以反映该失效操作之前,先储存先前存在的取代状态。如果后来要撤销该推测式失效操作,则可将高速缓存控制器419设定成还原所储存的该取代状态。因此,在某些实施例中,可将高速缓存控制器419设定成在执行推测式失效操作时,修改并储存该取代状态。
现在请参阅图4A及4B,图中示出在独占式高速缓存中执行推测式失效操作的方法的一个实施例。请注意,虽然在所示实施例中,是按照某一顺序安排各功能方块,但是该安排只是举例,并不表示该方法需要任何特定的时间顺序,这是因为其它的实施例可使用不同的功能方框来安排。在步骤601中,该独占式高速缓存控制器收到填入请求。在某些实施例中,该独占式高速缓存可以是L2高速缓存,且该独占式高速缓存控制器可实际控制L1及L2高速缓存。如步骤603所示,在该独占式高速缓存控制器接受该请求的前或之后的某一时点,可针对因该请求而产生的未命中请求的该高速缓存的操作及(或)命中该独占式高速缓存的操作,而开始各项检查。
如步骤605所示,如果在步骤601中接受的填入请求命中了独占式高速缓存,则该独占式高速缓存可将所请求缓存行的数据提供给提出请求的高速缓存。为了便于说明,后文中将把所请求的缓存行称为″LineN″。如步骤607所示,为了保持独占性,该独占式高速缓存控制器可使LineN失效。然而,可能在步骤603中开始的这些检查完成之前,就发生该失效操作,因而该高速缓存控制器可以推测方式执行该失效操作。为了在未通过这些检查的情况下撤销该失效操作,在步骤607中,如果该失效操作会影响到取代状态信息,则该高速缓存控制器亦可储存对应于LineN的先前的取代状态信息(亦即,用来决定将首先取代一组或高速缓存中的哪一缓存行的信息,例如LRU信息或FIFO信息),然后更新该取代状态信息,以便反映该失效操作。
推测式失效操作的额外组件可能包含独占式高速缓存控制器,用来启动保护LineN的保护机制。因此,当已使LineN失效时,该独占式高速缓存控制器即空出而可接受其它的请求,而在这些检查完成之前,该独占式高速缓存控制器可延迟或拒绝接受有能影响到或相关于LineN的请求。因此,在步骤611中,如果向该独占式高速缓存提出一个新的请求,且如步骤613所示,该请求有可能影响到或相关于LineN,则该高速缓存控制器可不接受该请求。例如,该高速缓存控制器可以不接受一个会覆写LineN的请求。然而,如果该请求并不与LineN相关,则如步骤617所示,该独占式高速缓存可接受该请求,并因而处理该请求。在某些实施例中,该独占式高速缓存控制器可检查请求的标记是否符合LineN的标记,而判定该请求是否有可能影响到LineN。在一个实施例中,当提出复制回请求时,该独占式高速缓存控制器亦可包含逻辑电路,用以在知道现行取代状态的情况下,判定该复制回请求是否将取代LineN。如果将取代LineN,则该独占式高速缓存控制器可以不接受该复制回请求,或者可接受该复制回请求,但是强制该复制回请求取代另一缓存行,而不要取代LineN。
如果在步骤603开始的检查并未通过,则独占式高速缓存控制器可在步骤623中利用还原机制来撤销该失效操作。例如,该独占式高速缓存控制器可将该缓存行再度标示为有效(例如,可将有效位自失效切换至有效),并还原对应于LineN的失效操作前的取代状态信息。如果相反地在步骤603开始的这些检查通过了,则该独占式高速缓存控制器可停止过滤有可能影响到在推测方式下失效的LineN的请求。一旦通过了这些检查之后,即可将该失效操作视为非推测式失效操作,而且如果在步骤607中储存了取代状态信息,则一旦在这些检查完成之后就可不必再维护所储存的该信息。
在某些实施例中,在高速缓存控制器完成步骤601中接受的请求的前,可能完成了在步骤603中开始的某些检查,而且如果任何一项这些检查没有通过,则可在以推测方式使缓存行失效之前,即取消该请求。在此种情况中,该高速缓存控制器可以不以推测方式使该缓存行失效(与步骤607所示的执行该推测式失效操作的情况不同)。
如果在步骤601接受的填入请求未命中独占式高速缓存,则如步骤609所示,提出请求的高速缓存可将填入请求传送到较低级高速缓存或系统内存(如果提出请求的高速缓存尚未做出此动作)。在许多实施例中,提出请求的高速缓存可在将填入请求传送到该独占式高速缓存的同时,也将填入请求传送到系统内存,以便在该填入请求未命中该独占式高速缓存的情况中,可减量缩短系统内存的存取等待时间。在传送了该填入请求之后,该独占式高速缓存可继续接收及响应其它的请求。
现在请参阅图5,图中示出一种在高速缓存中执行推测式失效操作的方法的实施例,且其与该高速缓存是独占式、或包含式、或既不是独占式也不是包含式的高速缓存无关。在步骤701中,高速缓存控制器可接受指令或请求。例如,接受的指令可以是填入请求、复制回请求、探测请求、状态改变请求或失效操作。为了要满足该请求,最后可能会请求使该接受的高速缓存中的缓存行失效。然而,如步骤703所示,可对该指令或请求的来源(例如,未命中较高级高速缓存)或导致该失效操作的事件(例如,命中独占式高速缓存)执行某些检查,而且如果没有通过这些检查,则可取消该请求及(或)失效操作。因为可能要耗用数个时钟周期才能完成这些检查,所以该高速缓存控制器可以推测方式使该缓存行失效,而使该高速缓存控制器在这些检查正在进行时可继续接受新的请求。因此,在步骤707中,该高速缓存控制器可切换该缓存行的有效位,而以推测方式使该缓存行失效,而且如果该失效操作影响到对应于失效的该缓存行的取代状态信息,则储存先前的取代状态信息,并更新该取代状态信息,以便反映该失效操作。
高速缓存控制器可在步骤703中开始的这些检查完成之前,不接受可能影响到或相关于在推测方式下失效的缓存行的请求,而保护在推测方式下失效的该缓存行。因此,如步骤719所示,如果提出了一个可能与失效的该缓存行有关的新的请求,且尚未完成这些检查,则该高速缓存控制器可不接受该请求。在步骤717中,该高速缓存控制器可接受一个可能不与在推测方式下失效的该缓存行有关的请求。如果通过了这些检查,则该高速缓存控制器可停止保护在推测方式下失效的该缓存行,这是因为该失效操作不再是推测式的。然而,如果并未通过这些检查,则如步骤723所示,该高速缓存控制器可切换失效的该缓存行之有效位,以便指示该缓存行是有效的,而且如果先前储存在取代状态信息,则还原所储存的取代状态信息,而撤销该失效操作。
在某些实施例中,如果在高速缓存控制器完成步骤701中接受的该请求的前,即未通过任何这些检查,则可在以推测方式使缓存行失效之前,即取消该请求。在此种情况中,该高速缓存控制器可以不以推测方式使该缓存行失效(与步骤707所示的执行该推测式失效操作的情况不同)。
计算机系统图6标出计算机系统200的一个实施例的方框图,该计算机系统200包含处理器10,处理器10系经由总线桥接器202而连接到各种系统组件。计算机系统的其它的实施例也是可行的,且是可考虑的。在所示的该系统中,主存储器204系经由内存总线206而连接到总线桥接器202,且图形控制器208系经由AGP总线210而连接到总线桥接器202。多个PCI装置212A-212B经由PCI总线214而连接到总线桥接器202。亦可设有辅助总线桥接器216,以便经由EISA/ISA总线220而将电气接口提供给一个或多个EISA或ISA装置218。在该例子中,处理器10系经由CPU总线224而连接到总线桥接器202,且处理器10连接到可选用的L2高速缓存228。在某些实施例中,处理器10可包含集成式L1高速缓存(图中未示出)。
总线桥接器202在处理器10、主存储器204、图形控制器208、与连接到PCI总线214的各装置之间提供了接口。当自连接到总线桥接器202的其中一个装置接收到操作时,总线桥接器202识别该操作的目标(例如特定的装置,或者在PCI总线214的情况中为PCI总线214上的目标装置)。总线桥接器202将该操作绕送到该目标装置。总线桥接器202通常将操作从由来源装置或总线所用的协议转换为由目标装置或总线所用的协议。
辅助总线桥接器216除了将接口提供给PCI总线214所用的ISA/EISA总线之外,亦可设有额外的功能。计算机系统200内亦可包含在辅助总线桥接器216之外或与辅助总线桥接器216集成的输入/输出控制器(图中未示出),用以提供对键盘及鼠标222的操作支持,并提供各种序列及并行端口。在其它的实施例,亦可在处理器10与总线桥接器202之间将外部高速缓存单元(图中未示出)连接到CPU总线224。在替代实施例中,可将该外部高速缓存连接到总线桥接器202,并可将该外部高速缓存的高速缓存控制逻辑电路集成到总线桥接器202。又在处理器10的背部组态中示出L2高速缓存228。请注意,L2高速缓存228可与处理器10分离,可连同处理器10而集成到插槽(例如槽1或槽A)中,甚至可将L2高速缓存228连同处理器10而集成到半导体基材中。
主存储器204是一种用来储存应用程序且处理器10主要用来执行的内存。适当的主存储器204包含动态随机存取内存(Dynamic RandomAccess Memory;简称DRAM)。例如,多个库的同步DRAM(Synchronous DRAM;简称SDRAM)或Rambus DRAM(RDRAM)是适用的。
PCI装置212A-212B用来表示各种外围装置,例如网络适配卡、视频加速器、声卡、硬盘或软驱或磁盘驱动器控制器、小型计算机系统接口(Small Computer System Interface;简称SCSI)配接器、及电话卡。同样地,ISA装置218用来表示各种外围装置,例如调制解调器、声卡、以及诸如GPIB或专业总线适配卡等的各种数据采集卡。
设有图形控制器208,用以控制显示器226上的文字及影像的表现处理。图形控制器208可采用本领域已知的典型图形加速器,以便呈现可有效地输入及输出主存储器204的三维数据结构。图形控制器208可因而是AGP总线210的主控装置,其方式为图形控制器208可请求及接收对总线桥接器202内的目标接口的存取,因而可获得存取主存储器204。专用的图形总线可迅速地从主存储器204提取数据。对于某些操作而言,图形控制器208可进一步设定成在AGP总线210上产生PCI协议处理。总线桥接器202的AGP接口因而可包含用来支持AGP协议处理以及PCI协议目标及起始器处理的功能。显示器226是可呈现影像及文字之任何电子显示器。一个适用的显示器226包含阴极射线管(Cathode Ray Tube;简称CRT)及液晶显示器(LiquidCrystal Display;简称LCD)等。
请注意,虽然前文中以AGP、PCI、以及ISA或EISA总线用来作为例子,但是可视需要而以任何总线架构替代。又请注意,计算机系统200可以是包含额外的处理器(例如图中示为计算机系统200的一选用组件的处理器10a)的多CPU计算机系统。处理器10a可类似于处理器10。更具体而言,处理器10a可以与处理器10相同。可经由独立的总线(如图6所示)而将处理器10a连接到总线桥接器202,或者处理器10a可与处理器10共享CPU总线224。此外,可将处理器10a连接到与L2高速缓存228类似选用的L2高速缓存228a。
多节点处理系统现在请参阅图7,图中示出计算机系统300的另一实施例。其它的实施例也是可行的,且是可考虑的。在图7所示的实施例中,计算机系统300包含数个处理节点312A、312B、312C、及312D。每一处理节点312A-312D是经由各自处理节点内包含的内存控制器316A-316D而连接到各自的内存314A-314D。此外,各处理节点312A-312D包含用来在各个处理节点312A-312D之间通讯的接口逻辑电路。例如,处理节点312A包含用来与处理节点312B通讯的接口逻辑电路318A、用来与处理节点312C通讯的接口逻辑电路318B、及用来与另一处理节点(图中未示出)通讯的第三接口逻辑电路318C。同样地,处理节点312B包含接口逻辑电路(18D、318E、及318F;处理节点312C包含接口逻辑电路318G、318H、及318I;以及处理节点312D包含接口逻辑电路318J、318K、及318L。连接处理节点312D,而经由接口逻辑电路318L与多个输入/输出装置(例如在链环中的装置320A-320B)通讯。其它的处理节点可以以一种类似的方式与其它的I/O装置通讯。
处理节点312A-312D实施用于处理节点间通讯的数据包式链路。在本实施例中,是将该链路实施为若干组单向线路(例如,线路324A是用来将数据包自处理节点312A传送到处理节点312B,且线路324B是用来将数据包自处理节点312B传送到处理节点312A)。如图7所示,其它组的线路324C-324H是用来在其它的处理节点之间传送数据包。一般而言,每一组线路324可包含一条或多条数据线、对应于这些数据线的一条或多条时钟线、以及用来指示所传送的数据包类型的一条或多条控制线。可在高速缓存一致的方式下操作该链路,以便在各处理节点之间通讯;或者可在无一致性的方式下操作该链路,以便在处理节点与I/O装置之间通讯(或总线桥接器至诸如PCI总线或ISA总线等的传统结构的I/O总线之通讯)。此外,可利用如图所示的各I/O装置间之链环结构而以非一致性操作该链路。请注意,要自某一个处理节点传送到另一处理节点的数据包可通过一个或多个中间节点。例如,如图7所示,由处理节点312A传送到处理节点312D的数据包可通过处理节点312B或处理节点312C。可使用任何适当的路由算法。计算机系统300的其它实施例可包含比图7所示的较多或较少的处理节点。
一般而言,可在各节点之间的线路324上以一个或多个位时间(bittimes)的方式传送这些数据包。位时间可以是对应的时钟线的时钟信号的上升边缘或下降边缘。这些数据包可包含用来启动交易的命令数据包、用来保持高速缓存一致性的探查数据包、及回应探查及命令的回应数据包。
处理节点312A-312D除了包含内存控制器及接口逻辑电路之外,还可包含一个或多个处理器。广义而言,处理节点包含至少一个处理器,且可视需要而选择包含内存控制器,用以与内存及其它的逻辑电路通讯。更具体而言,每一处理节点312A-312D可包含一个或多个相同的处理器10。外部接口单元可包含该节点内的接口逻辑电路318、及内存控制器316。
内存314A-314D可包含任何适用的内存装置。例如,内存314A-314D可包含一个或多个RAMBUS DRAM(RDRAM)、同步DRAM(SDRAM)、静态RAM等。将计算机系统300的地址空间分配到各内存314A-314D。每一处理节点312A-312D可包含用来决定哪些地址映射到哪些内存314A-314D以及应将对一特定地址的内存请求绕送到哪一处理节点312A-312D的内存映射表。在一个实施例中,计算机系统300内的地址的一致性点是连接到用来储存对应于该地址的字节的内存的内存控制器316A-316D。换言之,内存控制器316A-316D负责确保以一种高速缓存一致性的方式进行对应的内存314A-314D的每一内存存取。内存控制器316A-316D可包含用来介接到内存314A-314D的控制电路。此外,内存控制器316A-316D可包含请求队列,用以让各内存请求排队等候。
一般而言,接口逻辑电路318A-318L可包含各种缓冲器,用以从链路接收数据包,并缓冲储存将要经由该链路传送的数据包。计算机系统300可采用任何适用的流程控制机制,用以传送数据包。例如,在一个实施例中,每一接口逻辑电路318将每一类型的缓冲器的数目储存在用来连接该接口逻辑电路的链路的另一端上的接收器内。除非接收的接口逻辑电路具有可储存数据包的未占用的缓冲器,否则前述的接口逻辑电路将不会传送该数据包。当向前传送一个数据包而空出接收的缓冲器时,该接收的接口逻辑电路将讯息传输到该传送的接口逻辑电路,告知已空出该缓冲器。可将此种机制称为″基于配给许可的″系统。
I/O装置320A-320B可以是任何适用的I/O装置。例如,I/O装置320A-320B可包含可与这些装置连接的另一计算机系统通讯的装置(例如,网络适配卡或调制解调器)。此外,I/O装置320A-320B可包含视讯加速器、声频卡、硬盘机或软盘机或磁盘驱动器控制器、小型计算机系统接口(SCSI)配接器、电话卡、声卡、以及诸如GPIB或专业总线适配卡等的各种数据采集卡。请注意,在本文中,术语″I/O装置″及术语″外围装置″是同义的。
本领域的普通技术人员在完全了解前文所揭示的事项之后,将可易于做出多种变化及修改。而本申请的权利要求范围可理解为包含所有此类的变化及修改。
权利要求
1.一种计算机系统,包含处理器(409);系统内存(425);连接到该处理器且包含多个缓存行储存区域的高速缓存(423);连接而接收第一请求的高速缓存控制器(419),其中该高速缓存控制器设定成响应该第一请求,而以推测方式使第一缓存行储存区域中的第一缓存行失效;且其中响应以推测方式使该第一缓存行失效,该高速缓存控制器进一步设定成在该第一缓存行的失效操作变成非推测式之前,禁止修改该第一缓存行储存区域;以及错误检测单元(603),该错误检测单元设定成执行对应于该第一请求的至少一个检查,其中如果执行了该检查,且并未检测到任何错误,则该第一缓存行的该失效操作变成了非推测式。
2.根据权利要求1所述的计算机系统,其中该高速缓存控制器(419)设定成通过切换与该第一缓存行相关联的有效位,而以推测方式使该第一缓存行失效。
3.根据权利要求2所述的计算机系统,其中如果执行了该检查,且并未检测到错误,则该高速缓存控制器(419)进一步设定成通过切换与该第一缓存行相关联的该有效位,而撤销该推测执行。
4.一种以推测方式使高速缓存(423)中的缓存行失效的方法,该方法包含接受将造成使该高速缓存中的该缓存行失效的请求;开始用来决定该失效操作是否错误的各项检查;响应所述接受,而以推测方式使该缓存行失效,其中以推测方式失效的该步骤包含下列步骤指示该缓存行是失效的;以及在完成这些检查之前,保护该缓存行不会受到后续的修改;响应决定该失效操作是错误的这些检查中的一项检查,指示该缓存行是有效的,而撤销该推测方式的失效操作。
5.根据权利要求4所述的方法,其中该推测式失效步骤包含切换与该缓存行相关联的有效位。
6.一种高速缓存子系统,包含高速缓存(423),该高速缓存包含多个缓存行储存区域;以及连接而接收第一请求的高速缓存控制器(419),该高速缓存控制器设定成响应接收到的该第一请求,而以推测方式使该第一缓存行储存区域中的第一缓存行失效;其中该高速缓存控制器进一步设定成如果检测到该推测式失效操作是错误的,则撤销该第一缓存行的该推测式失效操作;其中检测该推测式失效操作是否为错误的要耗用某一数目的时钟周期;以及测式失效控制器(506),该推测式失效控制器设定成响应该高速缓存控制器以推测方式使该第一缓存行失效,而在该数目的时钟周期中,使该第一缓存行不会修改;其中在该数目的时钟周期之后,该推测式失效操作变成非推测式。
7.根据权利要求6所述的高速缓存子系统,其中该高速缓存控制器(419)设定成通过切换与该第一缓存行相关联的有效位,而以推测方式使该第一缓存行失效。
8.根据权利要求7所述的高速缓存子系统,其中该高速缓存控制器(419)进一步设定成通过切换与该第一缓存行相关联的该有效位,而撤销该推测的执行。
9.根根据权利要求6所述的高速缓存子系统,其中该推测式失效控制器(506)进一步设定成在一定数目的时钟周期中,使该高速缓存控制器不接受会修改或相关于在推测方式下失效的该第一缓存行的额外要求。
10.根据权利要求9所述的高速缓存子系统,其中该推测式失效控制器(506)设定成响应该高速缓存控制器以推测方式使该第一缓存行失效,而将该第一缓存行的标记的第一部分加载到寄存器(504)。
全文摘要
设定成以推测方式使缓存行失效的高速缓存控制器,可立即响应失效请求或指令,而不必等候错误检查的完成。为了避免错误检查判定该失效操作是错误的而不应执行该失效操作,所以在该错误检查完成之前,该高速缓存控制器使在推测方式下失效的该缓存行不会被修改。在此种方式下,如果后来发现该失效操作是错误的,则可撤销该推测方式失效操作。如果完成了错误检查,且并未检测到任何错误,则该推测方式失效操作变成非推测方式。
文档编号G06F12/08GK1509436SQ02809983
公开日2004年6月30日 申请日期2002年3月21日 优先权日2001年5月16日
发明者T-C·谭, B·T·森德, T-C 谭, 森德 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1