减少的可扩展缓存目录转让专利

申请号 : CN201380043355.2

文献号 : CN104583974B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 林奕林张纳新贺成洪史洪波

申请人 : 华为技术有限公司

摘要 :

处理网络包括缓存,用于存储存储数据的副本作为多个缓存线;缓存控制器,用于接收来自多个缓存代理的数据请求,并且指定至少一个所述缓存代理作为第一缓存线的所有者;以及目录,用于存储所述第一缓存线的缓存所有权指定,其中对所述目录进行编码来支持多个但少于所有所述缓存代理对所述第一缓存线的基本同步所有权。还公开了一种方法,所述方法包括从多个缓存代理接收相干事物,并且在目录中存储所述多个缓存代理对多个缓存线的所有权指定,其中所述目录用于支持存储多个但少于所有所述缓存代理的基本同步所有权指定。

权利要求 :

1.一种减少的可扩展缓存目录的处理网络,其特征在于,包括:缓存,用于存储存储数据的副本作为多个缓存线;

缓存控制器,用于:

接收来自多个缓存代理的数据请求;以及

指定所述缓存代理中的至少一个作为所述缓存线的第一缓存线的所有者;以及目录,用于存储所述第一缓存线的缓存所有权指定,并且其中对所述目录进行编码来支持多个但少于所有所述缓存代理对所述第一缓存线的基本同步所有权;

所述缓存控制器进一步用于当缓存控制器接收所述缓存代理中的第一缓存代理的对所述第一缓存线的所有权的数据请求并且当所述第一缓存线由除了所述第一缓存代理以外的最大数量的所有者拥有时,使所述缓存线所有者中的至少一个的所有权失效。

2.根据权利要求1所述的处理网络,其特征在于,所述缓存控制器进一步用于当所述缓存控制器接收所述缓存代理中的第一缓存代理的对所述第一缓存线的所有权的数据请求并且当所述第一缓存线由除了所述第一缓存代理以外的最大数量的所有者拥有时,指定所述缓存线作为广播缓存线。

3.根据权利要求1所述的处理网络,其特征在于,所述目录包括表,其中表列的数量限制最大基本同步所有权,并且其中所述列中的至少一列包括多个缓存代理的所有权数据。

4.根据权利要求1所述的处理网络,其特征在于,所述目录包括表,其中表行的数量限制最大基本同步的所有权,并且其中所述行中的至少一行包括多个缓存代理的所有权数据。

5.根据权利要求1所述的处理网络,其特征在于,对所述目录进一步编码以将任意缓存线的基本同步所有权限制为三个至四个所有者。

6.一种减少的可扩展缓存目录的处理网络,其特征在于,包括:存储部件,用于:

存储共享存储数据的副本作为多个缓存线;

接收来自多个缓存代理的所述缓存线的数据请求;以及

维护目录以存储所述缓存代理对所述缓存线的缓存所有权指定,和其中对所述目录进行编码以基本同步地指定任意但少于所有所述缓存线的所有权;

对所述目录进一步编码以将基本同步指定的缓存线的数量限制为与所述缓存代理的组合存储空间相关联的值。

7.根据权利要求6所述的处理网络,其特征在于,对所述目录进一步编码以将基本同步指定的缓存线的数量限制为大于在所述缓存代理的第一缓存代理中可存储的缓存线的最大数量且小于在所有缓存代理中可存储的缓存线的最大数量的值。

8.根据权利要求6所述的处理网络,其特征在于,归属代理用于当所述归属代理接收第二缓存线的所有权请求且当所述目录充满指定的缓存线时,使第一缓存线的所有权失效。

9.根据权利要求6所述的处理网络,其特征在于,归属代理包括地址映射,所述地址映射用于当所述目录中找不到缓存线时存储引导归属代理响应行为的数据。

10.根据权利要求9所述的处理网络,其特征在于,所述地址映射通过与未在所述目录中找到的所述缓存线相关联的存储区域指示所述归属代理响应行为。

11.根据权利要求9所述的处理网络,其特征在于,所述地址映射指示所述未找到的缓存线应被视为缓存线丢失。

12.根据权利要求9所述的处理网络,其特征在于,所述地址映射指示所述未找到的缓存线应被视为广播缓存线。

13.一种减少的可扩展缓存目录的处理方法,其特征在于,包括:接收来自多个缓存代理的相干事务;以及

在目录中存储所述缓存代理对多个缓存线的所有权指定,其中所述目录用于支持多个但少于所有所述缓存代理的基本同步所有权指定的存储;

所述方法还包括:

当缓存控制器接收所述缓存代理中的第一缓存代理的对所述第一缓存线的所有权的数据请求,并且当所述第一缓存线由除了所述第一缓存代理以外的最大数量的所有者拥有时,使所述缓存线所有者中的至少一个的所有权失效;

对所述目录进一步编码以将基本同步指定的缓存线的数量限制为与所述缓存代理的组合存储空间相关联的值。

14.根据权利要求13所述的方法,其特征在于,所述目录进一步用于基本同步地存储少于所有的所述缓存线。

15.根据权利要求14所述的方法,其特征在于,所述目录是基于随机存取存储器(RAM)的目录。

16.根据权利要求14所述的方法,其特征在于,所述目录是基于缓存的目录。

17.根据权利要求14所述的方法,其特征在于,所述目录适当地用于结合不同数量的缓存代理进行操作。

18.根据权利要求14所述的方法,其特征在于,所述目录适当地用于结合不同数量的可能缓存线进行操作。

说明书 :

减少的可扩展缓存目录

[0001] 相关申请案交叉申请
[0002] 本发明要求2013年7月29日由Iulin Lih等人递交的发明名称为“减少的可扩展缓存目录(Reduced Scalable Cache Directory)”的第13/952895号美国非临时专利申请案的在先申请优先权,所述申请案要求2012年8月17日由Iulin Lih等人递交的发明名称为“减少的可扩展缓存目录(Reduced Scalable Cache Directory)”的第61/684322号美国临时专利申请案的在先申请优先权,两个在先申请的内容以引入的方式并入本文本中。
[0003] 关于由联邦政府赞助的
[0004] 研究或开发的声明
[0005] 不适用。
[0006] 缩微平片附件的引用
[0007] 不适用。

背景技术

[0008] 现代计算机系统可依赖于多个互联的处理器来处理数据。此类处理器(多个处理器)和/或所得到的处理器簇(多个处理器簇)可以同时在大体相同的数据上进行处理操作。为了减少系统延迟,处理数据的多个副本可以存储在多个存储位置中。因此,这种多地存储系统可能需要相干存储方案。缓存相干存储方案可能是一个协议,当其他部件和/或过程修改了共享数据时,其可以允许缓存和/或随机存储器(RAM)等多个存储部件维护共享数据的本地副本并且接收更新。

发明内容

[0009] 在一项实施例中,本发明包括一种处理网络,所述处理网络包括缓存,用于存储存储数据的副本作为多个缓存线;缓存控制器,用于接收来自多个缓存代理的数据请求,并且指定至少一个所述缓存代理作为第一缓存线的所有者;以及目录,用于存储所述第一缓存线的缓存所有权指定,其中对所述目录进行编码来支持多个但少于所有所述缓存代理对所述第一缓存线的基本同步所有权。
[0010] 在另一项实施例中,本发明包括一种处理网络,所述处理网络包括存储部件,用于存储共享存储数据的副本作为多个缓存线,从多个缓存代理接收针对所述缓存线的数据请求,以及维护目录以存储所述缓存代理对所述缓存线的缓存所有权指定,其中对所述目录进行编码以基本同步地指定任意但少于所有的所述存储缓存线。
[0011] 在另一项实施例中,本发明包括一种方法,所述方法包括从多个缓存代理接收相干事务,并且在目录中存储所述多个缓存代理对多个缓存线的所有权指定,其中所述目录用于支持存储多个但少于所有所述缓存代理的基本同步所有权指定。
[0012] 结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其他特征。

附图说明

[0013] 为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表示相同部分。
[0014] 图1是多处理器网络架构的实施例的示意图。
[0015] 图2是通用计算机系统的实施例的示意图。
[0016] 图3示出了基于RAM的目录的实施例。
[0017] 图4示出了基于缓存的目录的实施例。
[0018] 图5示出了基于RAM的目录的另一实施例。
[0019] 图6示出了基于缓存的目录的另一实施例。
[0020] 图7是一种管理存储请求的方法的实施例的流程图。

具体实施方式

[0021] 最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
[0022] 处理器可更改存储器作为执行处理功能的一部分。处理器可通过更新缓存存储器中存储的数据的本地副本进行这些更改。然后这些更改可向主存储器传播。这种系统可能引发多处理器系统错误,因为第一处理器可能对数据的第一本地副本进行更改,而第二处理器可能在不了解第一处理器所进行的更改的情况下几乎同时对该数据的第二本地副本进行更改。缓存相干方案可以减轻这类错误。缓存目录或侦听过滤器(以下称为缓存目录或目录)可能是记录系统的缓存线的共享和缓存状态的表。缓存目录可用于引导共享存储系统中的缓存访问和/或侦听过程作为缓存相干方案的一部分。多个缓存代理可以访问每个缓存线,每个缓存代理可以指定为给定缓存线的所有者。
[0023] 本文所公开的是可以呈现共享内存并行计算系统的改进的可扩展性的缓存目录实施例。缓存目录可以包括缩减的表格宽度,这可以限制为包括每个缓存线的所有者列的静态数目,而不是为每个可能的缓存线所有者提供一列。目录可以包括缩减的表格深度,这可以限制为包括条目的静态数目,而不是为每个可能的缓存线提供一行。如果希望共享缓存线的所有权的实体数目超过了目录的记录能力,那么目录可以强制一个或多个所有者放弃另一缓存线的所有权。类似地,如果请求的缓存线的数目超过了目录的记录能力,那么目录可以强制缓存线的所有所有者放弃所有权,这样可以从目录中移除该线。通过限制每个缓存线的所有者数目和每次目录中呈现的缓存线的数目可以减少目录大小,这样可以提高访问速度。此外,具有静态宽度和/或深度的目录可能支持没有实质性修改的不同复杂程度的处理器网络。在一些实施例中,限制目录深度可能导致错误的缓存丢失。可以采用地址映射以确定可能的丢失是否应被视作丢失或作为向所有较低缓存广播请求的指令。为了最小化所有权和广播的损失,目录宽度和深度限制的选择可能基于统计分析。
[0024] 图1是多处理器网络架构的实施例的示意图。网络100可以包括多个通过路由网络150耦合到1级(L1)缓存120、2级(L2)缓存130和3级(L3)缓存140的处理器110。每个L1缓存
120可以包括L1缓存控制器124。每个L2缓存130可以包括L2缓存控制器134、地址映射136和目录132。L3缓存140可能包括L3缓存控制器144、目录142和地址映射146。较高阶缓存可存储数据并且响应较低阶缓存和/或处理器的请求。每个实体都可作为缓存代理和/或归属代理。归属代理可以是响应请求的较高阶实体。缓存代理可以是发起请求的较低阶实体。根据该实施例,可能关于相同的事务和/或一系列事务,存储部件(例如,缓存120、130、140和/或RAM)可作为较低阶存储部件的归属代理和较高阶存储部件的缓存代理可能关于。
[0025] 处理器110可被称为中央处理器或CPU。处理器110可以是网络100内通过执行网络100的算术、逻辑和/或输入/输出操作来处理程序指令的实体。每个处理器110可包含可执行算术、逻辑和/或其他操作的算术逻辑单元和可向存储器请求指令的控制单元(如缓存
120、130和/或140)。该控制单元还可协同算术逻辑单元解码和执行这些指令。
[0026] L1缓存120、L2缓存130和L3缓存140可以是透明存储数据和快速响应请求的部件。出于成本和数据使用效率的原因,缓存120、130和140可包括相对小容量的存储器,并且可紧邻CPU110。较低阶缓存,如L1缓存120,可包含较小的存储空间,并且可离CPU110较近;而较高阶缓存,如L3缓存140,可包含较大存储空间,并且可离CPU110较远。缓存120、130和/或
140的位置和大小的选择需兼顾存储和低时延这两个设计目标。每个缓存120,130和/或140都可为保存在主存储器(例如RAM)中的数据存储本地副本。
[0027] L1缓存控制器124、L2缓存控制器134和L3缓存控制器144可以是用于管理缓存存储器的程序和/或部件。例如,缓存控制器124、134和/或144可保证缓存中的数据有效或者标记为无效。缓存控制器124、134和/或144还可修复缓存缺失,更新请求(例如缓存线状态更新和数据更新)。缓存控制器还可处理中断请求,产生数据答复。缓存控制器124、134和/或144还可根据需要执行其他功能来保持缓存120、130和/或140之间的缓存相干性和/或提供相关的逻辑功能。
[0028] L2目录132和L3目录142可以是用于保存特定时间内缓存线使用方面的数据的部件和/或程序。例如,目录132和/或142可包含一张或多张表,表示缓存线地址、缓存线所有权(例如,表示缓存120、130和/或140可能正在特定时间存储和/或修改缓存线的数据)和/或缓存线相关的其他属性。目录132和/或142可进一步包括索引值,可用来管理表。目录132和/或142可用于保持缓存120、130和/或140之间的相干性。例如,多个处理器110可能大体同时对同一存储位置中的数据执行操作。此类数据可能大体同时归属于(例如,缓存于和/或存储于)多个缓存120、130和/或140。目录132和/或142可指示全部的缓存所有者,使得当某一缓存内的数据被另一个处理器和/或缓存修改时,该缓存的每个所有者都会得到通知(例如,由缓存控制器124、134和/或144通知)。将这些变化通知到每一个缓存所有者可保证每个缓存保存的主存储器数据的本地副本都是最新准确的,从而保证缓存相干性。目录132和/或142还可称为侦听过滤器,因为缓存可以通过该目录侦听(例如,查询/监控)缓存线的状态。
[0029] L2地址映射136和L3地址映射146可以是引导缓存控制器响应以防可能的缓存丢失的部件和/或程序。例如,地址映射136和/或146可以用于指示缓存丢失是否应被视为丢失或对所有存储位置和/或所有较低阶缓存的广播。例如,较大比例数目的缓存可以在指定的时间拥有特定的缓存线。在这种情况下,控制器124、134和/或144可以设置关联的地址映射136和/或146中的值以指示应通过广播通知所有相关缓存有关缓存线的改变,这可能允许从目录132和/或142移除缓存线。作为另一示例,指定的缓存线可能不是任意缓存在指定时间内使用的缓存线。在这种情况下,地址映射136和/或146可以指示不在目录132和/或142的缓存线应被视为丢失。地址映射中的缓存线的默认状态可以是丢失、广播或其组合。
[0030] 路由网络150可包括多个物理信道和/或多个虚拟信道,所述信道可用于网络100上各节点间的消息和/或数据传输。物理信道可包括导电材料和/或物理部件,该导电材料和/或物理部件可电耦合网络100的节点(例如,处理器110,缓存120、130和/或140和/或相关RAM)。例如,路由网络150可包含串行和/或并行总线。虚拟信道可以是物理信道的逻辑抽象。例如,虚拟信道可通过使用缓冲区和时分复用来实施。消息可存储在缓冲区中,分配给各虚拟信道。每个虚拟信道都可复用到时域中的同一物理信道和/或物理信道的集合中,使得虚拟信道可遍历大体相同的硬件,但是规则可能不同,例如传输优先级和时延等不同。
[0031] 上述设备,系统和/或方法可在任何通用网络部件上实施,例如计算机或网络部件,其具有足够的处理能力、存储资源和网络吞吐能力来处理其上的必要工作负荷。图2示出了一种典型的通用网络部件200,其适用于实施本文所揭示部件和/或方法的一项或多项实施例。网络部件200包括处理网络202(可以称为中央处理器(CPU)簇),所述处理网络与包含以下项的存储设备通信:辅助存储器204、只读存储器(ROM)206、RAM208、输入/输出(I/O)设备210,缓存模块214以及网络连接设备212。处理网络202可以作为一个或多个CPU110芯片实施,并且/或者可以作为一个或多个专用集成电路(ASIC)和/或数字信号处理器(DSP)的一部分。缓存模块214可包括多个缓存,如缓存120、130和/或140,并且可存储(例如,来自存储器204、存储器206和/或存储器208的)主存储器数据的本地副本,以便处理网络202快速访问。
[0032] 辅助存储器204通常由一个或多个磁盘驱动器或磁带驱动器组成,用于数据的非易失性存储,且如果RAM208的大小不足以保存所有工作数据,那么所述辅助存储器还用作溢流数据存储设备。辅助存储器204可以用于存储程序,当选择执行这些程序时,所述程序将加载到RAM208中。ROM206用于存储在程序执行期间读取的指令以及可能读取的数据。ROM206为非易失性存储设备,其存储容量相对于辅助存储器204的较大存储容量而言通常较小。RAM208用于存储易失性数据,并且可能用于存储指令。ROM206和RAM208两者的存取速度通常比辅助存储器204的存取速度快。网络100,目录300、400、500和/或600,以及方法700可在处理网络202、RAM208、ROM206、缓存模块214和/或辅助存储器204中存储和/或实施。
[0033] 应理解,通过将可执行指令编程和/或加载至网络部件200,处理网络202,缓存模块214,ROM206,RAM208,辅助存储器204,网络212和/或I/O210中的至少之一被改变,将网络部件200的一部分转换成特定机器或装置(例如,本发明宣扬的拥有新颖功能的多核转发架构)。加载可执行软件至计算机所实现的功能可以通过公知设计规则转换成硬件实施,这在电力工程和软件工程领域是很基础的。决定使用软件还是硬件来实施一个概念通常取决于对设计稳定性及待生产的单元数量的考虑,而不是从软件领域转换至硬件领域中所涉及的任何问题。一般来说,经常变动的设计更适于在软件中实施,因为重新编写硬件实施比重新编写软件设计更为昂贵。而稳定及大量生产的设计更适于在硬件中实施,因为大量生产运行实施的硬件较软件实施更为便宜。设计通常可以以软件形式进行开发和测试,之后通过公知设计规则转变成专用集成电路中等同的硬件实施,该集成电路硬线软件指令。由新ASIC控制的机器是一特定的机器或装置,同样地,编程和/或加载有可执行指令的电脑可视为特定的机器或装置。
[0034] 图3示出了基于RAM的目录的实施例,其可实施为表300。基于RAM的目录表300可以在RAM208上实施并可以类似于缓存目录132和/或142。表300可包括宽度313和深度314。表300的宽度313可依赖于网络中的缓存代理(例如,缓存120、130和/或140)的总数量,而表
300的深度314可取决于共享存储器中(例如,RAM208和/或ROM206)的可能的缓存线的数量。
宽度313可以分成垂直列,其中列301可以存储与每个缓存线相关的索引值,并且内容部分
310可存储目录的内容。内容部分310可以分成额外的垂直列,其中列311可存储与每个缓存线相关的属性,并且额外列315可存储有关每个缓存线的所有权的信息以及有关缓存代理和缓存线的其它缓存状态信息。表300可包括每个缓存代理的专用所有者缓存状态列315(例如,列所有者-0可与第一缓存代理相关联、列所有者-1可以与第二缓存代理相关联等等)。内容部分310可包括N+2的宽度,其中N是关联网络中的缓存(例如,可能的缓存线所有者)的数量。表300可包括行316,这些行的索引为0到深度-1,深度是缓存线大小除以共享存储器的容量。每个缓存线都可能存在行316,除了在一些实施例中可忽略任意未侦听的位置(例如,非相干存储位置)。缓存状态信息可以存储在每个行316、列311和/或列315并且可以由网络使用的实施协议确定。例如,缓存状态信息可包括修改状态、独占状态、共享状态、所有状态、无效状态、转发状态,以及其组合。修改状态可指示关联缓存线包括所谓的脏数据,其可以称为可包括与共享存储器中关联位置的值不同的值的本地数据。所有状态可以指示数据是脏的并且可以以脏形式共享(例如,在共享存储器更新之前)。例如,所有数据已经由所有者更新,但这些更新可能没有被转发到共享存储器可以要求此所有状态数据的所有者在未来某点(例如,根据当请求或过程完成时)更新共享存储器。独占状态可以指示本地数据是干净的,这意味着本地数据值与共享存储器中的数据值匹配。独占状态还可以指示本地数据存储在单个存储部件中。共享状态可以指示本地数据是干净的并且存储在多个存储部件中。无效状态可以指示关联存储位置未使用和/或不包括有用数据。
[0035] 图4示出了基于缓存的目录的实施例,其可实施为表400。基于缓存的目录表400可以在缓存模块214上实施并可以类似于缓存目录132和/或142。表400可包括宽度413、深度414、内容部分410、列401、411和415以及行416,其可以分别大体类似于宽度313、深度314、内容部分310、列301、311和315以及行316。表400可进一步包括列417,其可包括缓存线地址信息。由于内容部分410可比内容部分310多一列(例如,由于列417),部分内容410可包括N+
2的宽度,其中N是关联网络中的缓存代理(例如,可能的缓存线所有者)的数量。
[0036] 例如,在具有大量缓存代理和/或大量共享存储器的系统中,目录表300和/或400可包括相对较大的总目录容量。目录表300和/或400可包括有关每个缓存代理和每个缓存线的状态数据的数据位置。然而,共享存储系统的实验观测指示在任何特定时间内给定的缓存线的所有者的总数量通常可能很小(例如,很少在三个以上)并且可能和缓存代理的总数量不成比例。因此,在特定时间,缓存状态数据的大量目录行和/或位置可能未使用。共享存储系统的实验观测还指示每个分布存储块由代理拥有的缓存线的总数量可能不是总缓存容量的强函数。因此,针对增加的缓存大小,按比例增大目录可能没有必要。因此,可以固定每个归属代理的目录深度以减少目录的大小。只读存储器位置,例如包括非自修改代码的查找表或指令,可以构成上述实验观测的例外。然而,如果在给定的实施方案中这些位置的侦听频率预期(例如,访问频率)较低,那么可以从目录中忽略这些位置并且经由广播侦听而不是目录引导的直接侦听访问。与表300和400的全目录方法相比,可以通过在每个条目中采用较少的比特并且总共采用较少的条目实施下文所论述的表500和/或600,这可以改进目录的位置、功率和/或访问速率。
[0037] 图5示出了基于RAM的目录的另一实施例,其可实施为表500。基于RAM的目录表500可以在RAM208上实施并可以类似于缓存目录132和/或142。表500可包括宽度513、深度514、内容部分510、列501、511和515以及行516,其可以分别大体类似于宽度313、深度314、内容部分310、列301、311和315以及行316。与表300和400相比,通过限制列515的数量,内容部分510可包括固定宽度。因此,每个可能的缓存120、130和/或140可能没有被授予一个专用列
515。例如,可在行516中编码缓存线。指示第一缓存所有者的身份的值可以动态地置于对应于关联行516和所有者-0缓存状态列515之间的交叉的小区中。在第二所有者的情况下,指示第二所有者的值可以动态地置于所有者-1缓存状态列515的小区中。可以按需增加额外的所有者直到所有的列515都被采用。一旦所有的列515都被采用,缓存线可被视为广播线(例如,通过在地址映射中指示该缓存线可被视为广播线)和/或从表500移除。实验证据指示缓存线很少同时被大量缓存所有。因此,缓存线视作广播线的情况很少发生并且该情况对系统性能的影响极小。此外,将列515的数量固定为特定值(例如,3列、4列等)可以减少目录大小并且增加访问速度。此外,在没有支持网络扩展性的显著定制的情况下可以在具有不同数量的缓存中采用具有固定数量的列515的表500。
[0038] 图6示出了基于缓存的目录的另一实施例,其可在表600中实施。基于缓存的目录表600可以在缓存模块214上实施并可以类似于缓存目录132和/或142。表600可包括宽度613、深度614、内容部分610、列601、611、617和615以及行616,其可以分别大体类似于宽度
413、深度414、内容部分410、列401、411、417和415以及行416。与表400相比,表600可以通过按与表500类似的方式包括有限数量的列615来包括固定内容宽度610。此外,表600可以通过限制行616的数量来包括固定深度614。因此,可能不给每个缓存存储块分配专用行616。
实验证据指示归属代理的增加的存储大小可能没有成比例增加缓存代理网络在特定时间可能请求的缓存线的数量。因此,固定归属代理目录中的行616的数量可以归属代理的存储位置按需待缓存并且在没有分配未缓存线的未使用的表600空间的情况下动态地包括在表
600中。如果采用了所有的行616,那么缓存控制器124、134和/或144等缓存控制器可以通过将缓存线转换为广播线以及从表600移除此线来获取额外的空间。当待移出(例如移除)的缓存线由较大比例数量的归属代理所有时,此类响应可能是合适的。在另一实施例中,可以通过使关联的缓存所有者放弃线的所有权(例如,通过强制写回)移出缓存线。由于固定宽度613、固定深度614可以减少表600的大小,这样可以减少存储空间要求并且增加访问速度。固定深度还可以(例如,通过允许小型目录支持大型归属代理)增大大型存储网络中的表600的扩展性以及通过允许待与网络结合使用的表600包括具有不同存储大小的归属代理可以减少定制要求。
[0039] 上文从行和列的方面论述了上述表300、400、500和/或600。本领域技术人员将认识到“行”和“列”是术语问题,并且在不改变表的基本构造的情况下,表的行和列可以互换。因此,不应考虑限制本文中的术语“行”和“列”的使用。
[0040] 图7是一种管理存储请求的方法700的实施例的流程图。方法700可由缓存控制器124、134和/或144等缓存控制器和/或缓存模块214实施。在步骤701,归属代理(例如,缓存
120、130或140)接收存储请求。步骤703中,归属代理的缓存控制器可以为请求的缓存线检查关联的目录(例如,目录132和/或142)。在步骤705,缓存控制器可以确定请求的缓存线是否存在于目录中。如果请求的缓存线存在,那么在步骤707,缓存控制器可以返回请求的数据和/或代表缓存代理进行侦听。如果请求的缓存线不存在,那么在步骤709,缓存控制器可以检查关联的地址映射(例如,地址映射136或146)。在步骤711,缓存控制器可以确定可能的丢失是否被视为广播。如果(例如,根据地址映射)可能的丢失应被视为广播,那么在步骤
713,归属代理可以向网络中的其它缓存(例如,较低阶缓存)广播该请求。如果可能的丢失不应被视为广播,那么缓存控制器可以将可能的丢失视为丢失并且向下一较高阶缓存和/或存储位置转发该请求,这样该缓存控制器可以充当在步骤701接收请求的缓存的归属代理。
[0041] 本发明公开至少一项实施例,且本领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类明确的范围或限制应包括涵盖在上述范围或限制(如从大约1至大约10的范围包括2、3、4等;大于0.10的范围包括0.11、0.12、0.13等)内的类似数量级的迭代范围或限制。例如,每当揭示具有下限Rl和上限Ru的数值范围时,具体是揭示落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R=R1+k*(Ru–R1),其中k为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、7%、…、70%、71%、72%、…、97%、96%、97%、98%、99%或100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。除非另有说明,否则使用术语约是指随后数字的±
10%。相对于权利要求的某一要素,术语“可选择”的使用表示该要素可以是“需要的”,或者也可以是“不需要的”,二者均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由…组成”、“基本上由…组成”以及“大体上由…组成”等较窄术语的支持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请优先权日期之后的公开日期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其他细节。
[0042] 虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
[0043] 此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其他系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦接或直接耦接或通信的其他项也可以采用电方式、机械方式或其他方式通过某一接口、装置或中间部件间接地耦接或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。