减少无效一致状态的数据处理系统、高速缓存系统和方法

文档序号:6571252阅读:317来源:国知局
专利名称:减少无效一致状态的数据处理系统、高速缓存系统和方法
技术领域
本发明一般地涉及数据处理,具体地说,涉及高速缓存一致数据处理系统中的数据处理。
背景技术
传统的对称多处理器(SMP)计算机系统(如服务器计算机系统)包括多个全部连接到系统互连的处理单元,所述系统互连通常包括一个或多个地址、数据和控制总线。连接到所述系统互连的是系统存储器,其代表所述多处理器计算机系统中的易失性存储器的最低级别并且通常可由所有处理单元进行读和写访问。为了减少对驻留在系统存储器中的指令和数据的访问等待时间,每个处理单元通常都由各自的多级别高速缓存层次结构来进一步支持,所述层次结构的较低级别可由一个或多个处理器核心所共享。
由于多个处理器核心可以请求对数据的同一高速缓存线的写访问并且由于修改后的高速缓存线不会立即与系统存储器同步,所以多处理器计算机系统的高速缓存层次结构通常实现高速缓存一致性(coherency)协议以确保系统存储器内容的各种处理器核心的“视图”之间的一致性的至少最低级别。具体地说,高速缓存一致性至少要求在处理单元访问存储器块的副本并随后访问所述存储器块的更新后的副本之后,所述处理单元不能再次访问所述存储器块的旧副本。
高速缓存一致性协议通常定义一组与每个高速缓存层次结构的高速缓存线关联存储的高速缓存状态,以及一组用于在高速缓存层次结构之间传送高速缓存状态信息的一致性消息。在一个典型实现中,高速缓存状态信息采取公知的MESI(修改、独占、共享和无效)协议或其变型的形式,并且一致性消息指示存储器访问请求的请求方和/或接收方的高速缓存层次结构中的协议定义的一致性状态转换。
在某些高速缓存一致性协议中,不精确地形成和/或更新一个或多个一致性状态以响应后续的操作。因此,这些一致性状态可能没有准确地反映关联存储器块的系统范围内的一致性状态。本发明认识到不精确或不准确的一致性状态的存在(即使没有导致一致性错误)可能导致执行系统操作,如果不精确的一致性状态被减少或消除,将无需执行所述系统操作。

发明内容
鉴于以上所述,本发明提供了一种改进的高速缓存一致数据处理系统、高速缓存系统和在高速缓存一致数据处理系统中的数据处理方法。
在一个实施例中,高速缓存一致数据处理系统至少包括第一和第二一致性域。在所述数据处理系统的所述第一一致性域内的第一高速缓冲存储器中,将与存储位置和地址标记关联的一致性状态字段设置为第一数据无效一致性状态,所述第一数据无效一致性状态指示所述地址标记有效并且所述存储位置不包含有效数据。响应于窥探数据无效状态更新请求,所述第一高速缓冲存储器将所述一致性状态字段从第一数据无效一致性状态更新为第二数据无效一致性状态,所述第二数据无效一致性状态指示所述地址标记有效、所述存储位置不包含有效数据,以及与所述地址标记关联的存储器块可能缓存在所述第一一致性域中。通过更新所述数据无效一致性状态,提高了所述数据无效一致性状态提供的提示信息的准确性,导致改进了后续数据访问操作的广播范围的选择。
本发明的所有目标、特征和优点将在以下详细的书面描述中变得显而易见。


在所附权利要求书中说明了被认为是本发明特性的新颖特征。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解本发明及其优选使用方式,这些附图是图1是根据本发明的示例性数据处理系统的高级方块图;图2是根据本发明的处理单元的更详细的方块图;图3是图2中示出的L2高速缓存阵列和目录的更详细的方块图;图4是图1的数据处理系统的系统互连上的示例性事务的时空图;图5示出了根据本发明的优选实施例的域指示符;图6是根据本发明的高速缓冲存储器通过其为数据处理系统中的处理器核心接收的操作服务的示例性方法的高级逻辑流程图;图7A-7B共同形成了根据本发明的高速缓存窥探器通过其处理存储修改操作的示例性方法的高级逻辑流程图;图8是根据本发明的高速缓冲存储器通过其在数据处理系统中发出Ix更新操作的示例性方法的高级逻辑流程图;以及图9是根据本发明的高速缓存窥探器通过其处理Ix更新操作的示例性方法的高级逻辑流程图。
具体实施例方式
I.示例性数据处理系统现在参考附图,具体地说,参考图1,其中示出了根据本发明的高速缓存一致对称多处理器(SMP)数据处理系统的一个示例性实施例的高级方块图。如图所示,数据处理系统100包括用于处理数据和指令的多个处理节点102a、102b。处理节点102a、102b与系统互连110相连以便传送地址、数据和控制信息。系统互连110可以被实现为例如总线互连、交换互连或混合互连。
在示出的实施例中,每个处理节点102都被实现为包含四个处理单元104a-104d的多芯片模块(MCM),每个处理单元优选地被实现为相应的集成电路。每个处理节点102内的处理单元104a-104d都通过本地互连114连接以便进行通信,类似于系统互连110,可以使用一个或多个总线和/或交换机来实现本地互连114。
连接到每个本地互连114的设备不仅包括处理单元104,还包括一个或多个系统存储器108a-108d。驻留在系统存储器108中的数据和指令通常可以由数据处理系统100的任何处理节点102中的任何处理单元104中的处理器核心来访问并修改。在本发明的可替代实施例中,一个或多个系统存储器108可以被连接到系统互连110,而不是本地互连114。
本领域的技术人员将理解,SMP数据处理系统100可以包括许多额外的未示出的组件,例如互连桥、非易失性存储装置、用于连接到网络或附加设备的端口等。由于此类额外组件并不是理解本发明所必需的,因此它们并未在图1中示出或在此进一步被讨论。但是,还应当理解,本发明提供的增强可应用于各种体系结构的高速缓存一致数据处理系统并且绝非限于图1中示出的通用数据处理系统体系结构。
现在参考图2,其中示出了根据本发明的示例性处理单元104的更详细的方块图。在所示实施例中,每个处理单元104包括两个用于独立地处理指令和数据的处理器核心200a、200b。每个处理器核心200至少包括用于取回和排序指令以便执行的指令定序单元(ISU)208和一个或多个用于执行指令的执行单元224。如以下进一步讨论的,执行单元224优选地包括用于执行引用存储器块或导致生成引用存储器块的操作的存储器访问指令的加载存储单元(LSU)228。
每个处理器核心200的操作都由在其最低级别具有共享系统存储器108a-108d并且在其较高级别具有一个或多个级别的高速缓冲存储器的多级别易失性存储器层次结构来支持。在所示实施例中,每个处理单元104都包括集成存储器控制器(IMC)206,集成存储器控制器206控制对其处理节点102内的系统存储器108a-108d中的相应系统存储器的读写访问,以响应从处理器核心200a-200b接收的请求和由窥探器(S)222在本地互连114上窥探的操作。IMC 206包括基地址寄存器(BAR)逻辑240,逻辑240包括定义IMC 206所负责的地址和同一处理节点102中的其他IMC206(多个)所负责的地址的范围寄存器。
在示例性实施例中,处理单元104的高速缓冲存储器层次结构包括每个处理器核心200内的直通存储(store-through)一级(L1)高速缓存226和由处理单元104的所有处理器核心200a、200b共享的二级(L2)高速缓存230。L2高速缓存230包括L2阵列和目录234以及高速缓存控制器,所述高速缓存控制器包括主机232和窥探器236。主机232发起本地互连114和系统互连110上的事务并访问L2阵列和目录234,以响应从关联的处理器核心200a-200b接收的存储器访问(以及其他)请求。窥探器236窥探本地互连114上的操作、提供相应的响应,并执行操作所需的对L2阵列和目录234的任何访问。窥探器236包括BAR逻辑238,类似于BAR逻辑240,BAR逻辑238指示了本地处理节点102中的多个IMC 206所负责的地址。
尽管示出的高速缓存层次结构仅包括两级高速缓存,但是本领域的技术人员将理解,可替代的实施例可以包括其他级别(L3、L4、L5等)的片上或片外嵌入或旁视高速缓存,其可以完全包括、部分包括或不包括较高级别的高速缓存的内容。
每个处理单元104还包括响应逻辑210的实例,该实例实现在数据处理系统100内维持高速缓存一致性的分布式一致性发信号机制的一部分。此外,每个处理单元104包括用于在其本地互连114和系统互连110之间选择性地转发通信的互连逻辑212的实例。最后,每个处理单元104包括支持附加一个或多个I/O设备(如I/O设备216)的集成I/O(输入/输出)控制器214。I/O控制器214可以响应于I/O设备216的请求而在本地互连114和/或系统互连110上发布操作。
现在参考图3,其中示出了L2阵列和目录234的示例性实施例的更详细的方块图。如图所示,L2阵列和目录234包括一组相关的L2高速缓存阵列300和L2高速缓存阵列300的内容的L2高速缓存目录302。如在传统的一组相关高速缓存中,利用系统存储器(真实)地址中的预定索引位将系统存储器108中的存储器单元映射到高速缓存阵列300中的特定一致类。存储在高速缓存阵列300中的特定高速缓存线被记录在高速缓存目录302中,高速缓存目录302包含一个用于高速缓存阵列300中的每个高速缓存线的目录表项。如本领域的技术人员所理解的,高速缓存目录302中的每个目录表项至少包括标记字段304(其利用相应真实地址的标记部分指定了存储在高速缓存阵列300中的特定高速缓存线)、状态字段306(其指示高速缓存线的一致性状态)以及LRU(最近最少使用)字段308(其指示了相对于同一一致类中的其他高速缓存线而言的高速缓存线的替换顺序)。
II.示例性操作现在参考图4,其中示出了图1的数据处理系统100的本地或系统互连110、114上的示例性操作的时空图。当L2高速缓存230的主机232(或其他主机,如I/O控制器214)在本地互连114和/或系统互连110上发出请求402时,操作开始。请求402优选地包括事务类型(指示期望的访问类型)和资源标识符(例如真实地址,指示所述请求将访问的资源)。常见的请求类型优选地包括那些在下表I中说明的类型。
表I


请求402由L2高速缓存230的窥探器236以及存储器控制器206(图1)的窥探器222接收。通常(存在某些例外),由于仅当处理单元104无法内部地为请求402服务时,请求402才在本地互连114和/或系统互连110上传输,所以在与请求402的主机232处于同一L2高速缓存230中的窥探器236不会窥探请求402(即,通常没有自窥探)。每个接收请求402的窥探器222、236都可以提供代表至少该窥探器对请求402的响应的相应部分响应406。存储器控制器206中的窥探器222根据例如窥探器222是否负责请求地址以及其是否具有可用于为所述请求服务的资源来确定部分响应406。L2高速缓存230的窥探器236可以根据例如其L2高速缓存目录302的可用性、窥探器236内处理所述请求的窥探逻辑实例的可用性以及与L2高速缓存目录302中的请求地址关联的一致性状态来确定其部分请求406。
窥探器222和236的部分响应由响应逻辑210的一个或多个实例分步或立即逻辑地组合以确定对请求402的系统范围的组合响应(CR)410。根据下面讨论的范围限制,响应逻辑210通过其本地互连114和/或系统互连110将组合响应410提供给主机232和窥探器222、236以指示对请求402的系统范围的响应(例如,成功、失败、重试等)。如果CR 410指示请求402成功,则CR 410可以指示例如请求的存储器块的数据源、其中将被主机232缓存的所述请求的存储器块的高速缓存状态,以及是否需要无效一个或多个L2高速缓存230中的请求的存储器块的“清空”操作。
响应于接收到组合响应410,一个或多个主机232和窥探器222、236通常执行一个或多个操作以便为请求402服务。这些操作可以包括向主机232提供数据、无效或更新一个或多个L2高速缓存230中缓存的数据的一致性状态、执行驱逐操作、将数据写回系统存储器108等。如果请求402需要,在响应逻辑210生成组合响应410之前或之后,请求或目标存储器块可以被传输到主机232或从主机232传输请求或目标存储器块。
在以下描述中,将根据请求指定的请求地址参考窥探器是一致性最高点(HPC)、一致性最低点(LPC)还是两者皆不是来描述窥探器222、236对所述请求的部分响应以及由所述窥探器响应于所述请求和/或其组合响应而执行的操作。LPC在此被定义为用作存储器块的库的控制点的存储器设备或I/O设备。在没有用于存储器块的HPC的情况下,LPC控制对持有存储器块的真实映像的存储的访问,并具有许可或拒绝生成所述存储器块的附加高速缓存副本的请求的授权。对于图1和2的数据处理系统实施例中的典型请求,所述LPC将是持有所述引用的存储器块的系统存储器108的存储器控制器206。HPC在此被定义为缓存所述存储器块(其与LPC处的相应存储器块可能一致,也可能不一致)的真实映像的唯一标识的设备并具有许可或拒绝修改存储器块的请求的授权。说明性地,HPC还可以响应于不修改所述存储器块的操作而向请求方提供所述存储器块的副本。因此,对于图1和2的数据处理系统实施例中的典型请求,HPC(如果存在)将是L2高速缓存230。如下面参考表II进一步描述的,尽管其他指示符可以被用来为存储器块指定HPC,但是本发明的优选实施例利用L2高速缓存230的L2高速缓存目录302内的选定高速缓存一致性状态(多个)来为存储器块指定HPC(如果存在)。
仍然参考图4,用于在请求402中引用的存储器块的HPC(如果存在),或在没有HPC的情况下,所述存储器块的LPC优选地具有保护存储器块的所有权的转移以响应保护窗口404a期间的请求402的责任。在图4中示出的示例性情况中,窥探器236(其是用于由请求402的请求地址指定的存储器块的HPC)在保护窗口404a期间(从窥探器236确定其部分响应406时延伸到窥探器236接收到组合响应410时为止)保护将所请求的存储器块的所有权转移到主机232。在保护窗口404a期间,窥探器236通过将部分响应406提供给其他请求(指定了相同的请求地址并且阻止其他主机获得所有权直到所有权已被成功地转移到主机232为止)来保护所有权的转移。主机232在接收到组合响应410后同样启动一个保护窗口404b来保护其在请求402中请求的存储器块的所有权。
由于窥探器222、236都具有用于处理上述的CPU和I/O请求的有限资源,所以若干不同级别的部分响应和相应的CR是可能的。例如,如果在负责请求的存储器块的存储器控制器206中的窥探器222具有可用于处理请求的队列,则窥探器222可以响应以指示其能够用作所述请求的LPC的部分响应。另一方面,如果窥探器222没有可用于处理请求的队列,则窥探器222可以响应以指示其是存储器块的LPC,但是当前无法为所述请求服务的部分响应。
类似地,L2高速缓存230中的窥探器236可能需要窥探逻辑的可用实例并访问L2高速缓存目录302以便处理请求。缺少对这些资源中的任一资源(或两者)的访问将导致发信号告知由于缺少所需资源而当前无法为所述请求服务的部分响应(以及相应的CR)。
此后,提供了指示窥探器具有当前为请求服务所需的全部内部资源的部分响应的窥探器222、236(如果需要)被称为“确认”请求。对于窥探器236,确认了窥探操作的部分响应优选地指示在该窥探器236处的请求或目标存储器块的高速缓存状态。提供了指示窥探器236不具有当前为请求服务所需的全部内部资源的部分响应的窥探器222、236可以被称为“可能隐藏”或“无法”为所述请求服务。由于窥探器236因缺少窥探逻辑的可用实例或对L2高速缓存目录302的当前访问而无法在以上定义的意义上“确认”请求并且从其他主机232和窥探器222、236的角度,具有未知的一致性状态,所以此类窥探器236是“可能隐藏的”或“无法”为请求服务。
III.数据传送域传统的基于广播的数据处理系统通过广播通信来处理高速缓存一致性和数据传送这两者,在传统的系统中,在系统互连上将所述广播通信至少传输到所述系统中的所有存储器控制器和高速缓存层次结构。与具有可替代体系结构和类似规模的系统相比,基于广播的系统倾向于提供降低的访问等待时间和更好的共享存储器块的数据处理和一致性管理。
随着基于广播的系统的规模的扩大,系统互连上的通信量倍增,意味着由于需要更多的带宽用于系统互连上的通信,系统成本随着系统规模而急剧增加。即,具有m个处理器核心(每个处理器核心都具有n个事务的平均通信量)的系统具有m×n的通信量,意味着基于广播的系统中的通信量成倍地而不是累加性地增加。除了对实际更大的互连带宽的要求以外,系统大小的增加具有增加某些访问等待时间的副作用。例如,读取数据的访问等待时间,在最坏的情况下,由持有处于共享一致性状态中的请求存储器块(其可以作为请求的数据的源)的最远低级高速缓存的组合响应等待时间所限制。
为了减少系统互连带宽要求和访问等待时间同时仍然保留基于广播的系统的优点,分布在整个数据处理系统100中的多个L2高速缓存230被允许持有处于“特殊”共享一致性状态中的同一存储器块的副本,所述“特殊”共享一致性状态允许这些高速缓存使用高速缓存到高速缓存干预将所述存储器块提供给发出请求的L2高速缓存230。为了实现用于SMP数据处理系统(如数据处理系统100)中的共享存储器块的多个并发和分布的源,必须解决两个问题。首先,必须实现某些管理处于以上提到的“特殊”共享一致性状态中的存储器块的副本的创建的规则。其次,必须存在管理哪一个窥探L2高速缓存230(如果存在)例如响应于总线读取操作或总线RWITM操作将共享存储器块提供给发出请求的L2高速缓存230的规则。
根据本发明,这两个问题都通过实现数据源域来解决。具体地说,SMP数据处理系统中的每个域(其中域被定义为包括一个或多个参与响应数据请求的低级(例如,L2)高速缓存)被允许每次只包括一个持有处于“特殊”共享一致性状态中的特定存储器块的高速缓存层次结构。该高速缓存层次结构,如果当同一域中的请求低级高速缓存启动总线读取类型(例如,读取或RWITM)操作时存在,负责将请求的存储器块作为源提供给发出请求的低级高速缓存。尽管可以定义许多不同的域大小,但是在图1的数据处理系统100中,如果每个处理节点102(即,MCM)都被视为数据源域是很方便的。参考表II在下面描述了此类“特殊”共享状态(即,Sr)的一个实例。
IV.一致性域尽管实现上述数据传送域改进了数据访问等待时间,但是此改进并未解决随着系统规模增加而出现的通信量的m×n倍增。为了减少通信量同时仍然维持基于广播的一致性机制,本发明的优选实施例额外地实现了一致性域,其类似于此前描述的数据传送域,可以方便地(但不是必需的)用每个形成单独的一致性域的处理节点102来实现。数据传送域和一致性域可以(但并不要求)是同延的,并且出于解释数据处理系统100的示例性操作的目的,此后将被假设为具有由处理节点102定义的边界。
通过限制在系统互连110上的域内广播通信,在其中请求可以由少于所有一致性域的域参与提供服务的情况下,一致性域的实现减少了系统通信量。例如,如果处理节点102a的处理单元104a具有总线读取操作要发布,则处理单元104a可以选择首先将所述总线读取操作广播到其自己的一致性域(例如,处理节点102a)内的所有参与者,但是不广播到其他一致性域(例如,处理节点102b)中的参与者。仅传送到那些与操作的主机在同一一致性域中的参与者的广播操作在此被定义为“本地操作”。如果可以在处理单元104a的一致性域中为本地总线读取操作服务,则不执行总线读取操作的进一步广播。但是,如果对本地总线读取操作的部分响应和组合响应指示无法单独在处理单元104a的一致性域中为总线读取操作服务,则广播的范围可以被扩展到包括(除了本地一致性域以外)一个或多个其他一致性域。
在一个基本实现中,采用了两个广播范围只包括本地一致性域的“本地”范围和包括SMP数据处理系统中的所有其他一致性域的“全局”范围。因此,被传送到SMP数据处理系统中的所有一致性域的操作在此被定义为“全局操作”。重要的是,无论是否采用本地操作或更大扩展范围的操作(例如,全局操作)来为操作服务,都将在SMP数据处理系统中的所有一致性域之间维护高速缓存一致性。在美国专利申请No.11/055,305(其全部内容在此引入作为参考)中详细描述了本地和全局操作的实例。
在一个优选实施例中,由本地/全局范围指示符(信号)指示总线操作中的操作的范围,在一个实施例中,所述指示符可以包括1-位标志。处理单元104中的转发逻辑212优选地根据操作中的本地/全局范围指示符(信号)的设置来确定是否将通过本地互连114接收到的操作转发到系统互连110上。
在本说明中,如果一致性域(或处理节点)包含存储器块的LPC,则将该一致性域称为所述存储器块的“主”一致性域(或“主”节点)。
V.域指示符为了限制不需要的本地操作的发布并由此减少操作等待时间并节约本地互连上的附加带宽,本发明优选地实现每存储器块的域指示符,该指示符指示关联存储器块的副本是否被缓存在本地一致性域之外。例如,图5示出了根据本发明的域指示符的第一示例性实现。如图5所示,系统存储器108(其可以以动态随机存取存储器(DRAM)实现)存储了多个存储器块500。系统存储器108与每个存储器块500关联地存储了用来校正存储器块500中的错误(如果存在)的关联错误校正码(ECC)502和域指示符504。尽管在本发明的某些实施例中,域指示符504可以标识特定的一致性域(即,指定一致性域或节点ID),但是此后假设域指示符504是1-位指示符,在关联的存储器块500(如果有)仅被缓存在与用作存储器块500的LPC的存储器控制器206相同的一致性域中的情况下,所述指示符被设置(例如,设置成‘1’以指示‘本地’)。否则,重置域指示符504(例如,重置为‘0’以指示‘全局’)。设置域指示符504以指示“本地”可以被不严密地实现,因为错误设置“全局”将不会引起任何一致性错误,但可能会导致操作的不需要的全局广播。
响应于操作而作为存储器块的源的存储器控制器206(和L2高速缓存230)优选地将关联的域指示符504与请求的存储器块一起传送。
VI.示例性一致性协议本发明优选地实现了高速缓存一致性协议,该协议旨在影响如上所述的数据传送和一致性域的实现。在一个优选实施例中,所述协议中的高速缓存一致性状态除了提供(1)高速缓存是否是存储器块的HPC的指示之外,还指示(2)高速缓存的副本在该存储器层次结构级别的高速缓存之间是否唯一(即,是系统范围内仅有的高速缓存副本),(3)所述高速缓存是否以及何时可以将存储器块的副本提供给用于所述存储器块的请求的主机,(4)所述存储器块的高速缓存的映像与在LPC(系统存储器)处的相应存储器块是否一致,以及(5)远程一致性域(可能)中的其他高速缓存是否持有具有匹配地址的高速缓存表项。这五个属性可以例如在下表II中总结的公知MESI(修改、独占、共享、无效)协议的示例性变型中被表达。
表II



A.Ig状态为了避免不得不访问LPC以确定存储器块是否将仅本地地被缓存(如果可能),Ig(无效全局)一致性状态被用来在其中没有存储器块的副本保持缓存在一致性域中的情况下维持域指示。所述Ig状态在此被定义为指示以下项的高速缓存一致性状态(1)高速缓存阵列中的关联存储器块是无效的,(2)高速缓存目录中的地址标志是有效的,以及(3)由地址标志标识的存储器块的副本可能被缓存在除主一致性域以外的一致性域中。所述Ig指示优选地是不精确的,意味着在不违反一致性的情况下其可能是不正确的。
所述Ig状态在所述主一致性域内的低级高速缓存中形成,以响应高速缓存响应于独占访问请求(例如,总线RWITM操作)而将请求的存储器块提供给另一个一致性域中的请求方。
由于包括Ig状态的高速缓存目录表项可能携带有用信息,所以至少在某些实现中,希望优选地保留Ig状态中的表项而不是I状态中的表项(例如,通过修改用来选择用于替换的牺牲品高速缓存表项的最近最少使用(LRU)算法)。由于Ig目录表项被保留在高速缓存中,某些Ig表项可能随着时间的推移而变得“失效”,因为高速缓存(其独占访问请求导致了Ig状态的形成)可以解除分配或写回其存储器块的副本,而不通知将存储器块的地址标记保持在Ig状态的高速缓存。在这种情况下,所述“失效”Ig状态(其错误地指示应发布全局操作而不是本地操作)将不会导致任何一致性错误,而只是导致某些操作(可以利用本地操作以其他方式为它们服务)被发布为全局操作。如下面进一步描述的,此类低效率的出现将通过最终替换“失效”Ig高速缓存表项来在持续时间上进行限制。
若干规则管理着Ig高速缓存表项的选择和替换。首先,如果高速缓存选择Ig表项作为替换的牺牲品,则执行Ig表项的驱逐(不同于当I、In、Igp表项被选择时的情况)以便更新系统存储器108中的相应域指示符504。其次,如果导致存储器块被加载到高速缓存中的请求命中该同一高速缓存中的Ig高速缓存表项,则所述高速缓存将Ig命中视为高速缓存未命中并在将Ig表项作为选定的牺牲品的情况下执行驱逐操作。所述高速缓存因此避免了将同一地址标记的两个副本放置在高速缓存目录中。第三,Ig状态的驱逐优选地作为范围限于本地一致性域的仅本地操作来执行。第四,Ig状态的驱逐优选地作为无数据仅地址操作来执行,其中将域指示写回LPC中的域指示符504。
根据本发明的Ig状态的实现通过为主一致性域中的存储器块维护缓存的域指示符(即使没有存储器块的有效副本继续缓存在该主一致性域中)来提高通信效率。如下所述,由Ig状态提供的高速缓存域指示可用来为以关联存储器块为目标的操作预测互连结构上的全局广播范围。
B.Igp状态Igp(无效全局仅预测)一致性状态被用于在其中没有存储器块的副本继续缓存在非主一致性域中的情况下维持缓存的域指示。所述Igp状态在此被定义为指示以下项的高速缓存一致性状态(1)高速缓存阵列中的关联存储器块是无效的,(2)高速缓存目录中的地址标记是有效的,(3)当前一致性域不是主一致性域,以及(4)由地址标记标识的存储器块的副本可能被缓存在除当前非主一致性域以外的一致性域中。尽管精确地形成,但是优选地不精确地维护所述Igp指示,意味着在不违反一致性的情况下其可能是不正确的。
所述Igp状态在非主一致性域内的低级高速缓存中形成,以响应高速缓存响应于独占访问请求(例如,RWITM、Dclaim、DCBZ、Kill、写入或部分写入请求)而将请求的存储器块的一致性所有权提供给另一个一致性域中的请求方。
由于包括Igp状态的高速缓存目录表项可能携带有用信息,所以至少在某些实现中,希望优选地保留Ig状态中的表项而不是I状态中的表项(如果有)(例如,通过修改用来选择用于替换的牺牲品高速缓存表项的最近最少使用(LRU)算法)。由于Igp目录表项被保留在高速缓存中,某些Igp表项可能随着时间的推移而变得“失效”,因为存储器块的副本可能返回一致性域,而没有由将存储器块的地址标记保持在Igp状态的高速缓存进行窥探。在这种情况下,所述“失效”Igp状态(其错误地指示应发布全局操作而不是本地操作)将不会导致任何一致性错误,而只是导致某些操作(可以利用本地操作以其他方式为它们服务)被发布为全局操作。此类低效率的出现将通过最终替换“失效”Igp高速缓存表项来在持续时间上进行限制。
与处理Ig表项相比,没有响应于选择Igp表项作为替换的牺牲品而执行Igp表项的驱逐,例如,根据替换算法(例如,LRU)或因为导致存储器块被加载到高速缓存的请求命中同一高速缓存中的Igp高速缓存表项。相反,只是取消分配Igp表项。没有执行驱逐,因为Igp表项没有维护基础域指示符504的缓存的并可能修改的副本。
根据本发明的Igp状态的实现通过出于范围预测目的为非主一致性域中的存储器块维护缓存的域指示符(即使没有存储器块的有效副本继续缓存在该非主一致性域中)来提高通信效率。
C.In状态In状态在此被定义为高速缓存一致性状态,所述高速缓存一致性状态指示(1)高速缓存阵列中的关联存储器块是无效的,(2)高速缓存目录中的地址标记是有效的,以及(3)由所述地址标记标识的存储器块的副本可能仅由本地一致性域中的一个或多个其他高速缓存层次结构来缓存(如果可能)。In指示优选地是不精确的,意味着在不违反一致性的情况下其可能是不正确的。In状态在低级高速缓存中形成以响应该高速缓存将请求的存储器块提供给同一一致性域中的请求方以响应独占访问请求(例如,总线RWITM操作)。
由于包括In状态的高速缓存目录表项可能携带有用信息,所以至少在某些实现中,希望优选地保留In状态中的表项而不是I状态中的表项(例如,通过修改用来选择用于替换的牺牲品高速缓存表项的最近最少使用(LRU)算法)。由于In目录表项被保留在高速缓存中,某些In表项可能随着时间的推移而变得“失效”,因为高速缓存(其独占访问请求导致了In状态的形成)自身可以将存储器块的共享副本提供给远程一致性域,而不通知将存储器块的地址标记保持在In状态的高速缓存。在这种情况下,所述“失效”In状态(其错误地指示应发布本地操作而不是全局操作)将不会导致任何一致性错误,而只是导致某些操作首先错误地被发布为本地操作而非全局操作。此类低效率的出现将通过最终替换“失效”In高速缓存表项来在持续时间上进行限制。在一个优选实施例中,处于In一致性状态的高速缓存表项不会受到驱逐,而只是被替换。因此,与Ig高速缓存表项不同,In高速缓存表项并未被用来更新系统存储器108中的域指示符504。
根据本发明的In状态的实现通过为存储器块(可由主机咨询以便为其操作中的某一操作选择本地范围)维护高速缓存的域指示符来提高通信效率。结果,节约了其他一致性域中的系统互连110和本地互连114上的带宽。
D.Sr状态在下面描述的操作中,能够确定持有处于Sr一致性状态的共享请求存储器块的低级高速缓存是否位于与发出请求的主机相同的域中是有用的。在一个实施例中,位于与发出请求的主机相同的域中的“本地”Sr窥探器的存在可以由在持有处于Sr一致性状态的请求存储器块的低级高速缓存处的窥探器的响应行为来指示。例如,假设每个总线操作都包括范围指示符,所述范围指示符指示所述总线操作是否已穿过域边界(例如,主机的显式域标识符或单个本地/非本地范围位),持有处于Sr一致性状态的共享存储器块的低级高速缓存可以提供部分响应(仅为同一数据源域中的主机的请求确认请求处于Sr状态)并提供指示所有其他请求的S状态的部分响应。在此类实施例中,响应行为可以被总结为如表III所示,其中最初的(’)符号被用来指定可能与存储器块的实际高速缓存状态不同的部分响应。
表III


假设以上在表III中说明了响应行为,通过增加在可用作数据源的SMP数据处理系统中分布的存储器块的共享副本的数量,共享数据的平均数据等待时间可以显著减少。
VII.示例性独占访问操作现在参考图6,其中示出了根据本发明的在数据处理系统中为处理器(CPU)独占访问请求服务的示例性方法的高级逻辑流程图。与在此提供的其他逻辑流程图一样,图6中示出的步骤中的至少某些步骤可以以不同于所示的顺序执行或者可以同时执行。
图6的过程开始于方块600,方块600代表从其处理单元104中的关联处理器核心200接收CPU独占访问请求(例如,CPU数据存储请求或CPU DCBZ请求)的L2高速缓存230中的主机232。响应于接收到CPU独占访问请求,主机232在方块602判定目标存储器块(其在所述CPU独占访问请求中由目标地址来标识)是否被以一致性状态(允许为所述CPU独占访问请求服务而不在互连构造上发布总线操作)保存在L2高速缓存目录302中。例如,如果L2高速缓存目录302指示所述目标存储器块的一致性状态是M或Me状态之一,则可以为CPU数据存储请求服务而不在互连构造上发布总线操作。如方块624所示,如果主机232在方块602判定可以为所述CPU独占访问请求服务而不在互连构造上发布总线操作,则主机232访问L2高速缓存阵列300来为所述CPU请求服务。例如,主机232可以将CPU数据存储请求中提供的数据存储到L2高速缓存阵列300中。在方块624之后,所述过程在方块626终止。
返回方块602,如果所述目标存储器块并未以一致性状态(允许为所述CPU独占访问请求服务而不在互连构造上发布总线操作)保存在L2目录302中,则还在方块604判定是否需要驱逐现有高速缓存线以容纳L2高速缓存230中的所述目标存储器块。在一个实施例中,如果存储器块被选择以便从请求处理器的L2高速缓存230中被驱逐以响应所述CPU请求并且所述存储器块在L2目录302中被标记为处于M、T、Te、Tn或Ig一致性状态中的任何状态,则在方块604处需要驱逐操作。响应于在方块604判定需要驱逐,如方块606所指示的,执行高速缓存驱逐操作。同时,主机232在方块610确定将被发布以便为所述CPU独占访问请求服务的总线操作的范围。例如,在一个实施例中,主机232在方块610判定将总线操作广播为本地操作还是全局操作。
在其中每个总线操作最初被发布为本地操作并且作为本地操作仅被发布一次的第一实施例中,在方块610示出的判定可以只代表由主机进行的总线操作先前是否已被发布为本地总线操作的判定。在其中本地总线操作可以被重试的第二可替代实施例中,在方块610示出的判定可以代表由主机进行的总线操作先前是否被发布了超过阈值次数的判定。在第三可替代实施例中,在方块610做出的判定可以基于由主机232进行的本地总线操作是否可能成功地解决目标存储器块的一致性而不与其他一致性域中的处理节点通信的预测。例如,如果关联的L2高速缓存目录302将目标地址与In一致性状态关联,则主机232可以选择本地总线操作,并且如果关联的L2高速缓存目录302将目标地址与Ig或Igp一致性状态关联,则主机232可以选择全局总线操作。
响应于在方块610的发布全局总线操作而不是本地总线操作的判定,所述过程从方块610继续到方块620,这将在下面进行描述。另一方面,如果在方块610做出发布本地总线操作的判定,则主机232在其本地互连114上发起本地总线操作,如方块612所示。所述本地总线操作仅在包含主机232的本地一致性域(例如,处理节点102)中广播。如果主机232接收到指示“成功”的CR(方块614),则所述过程进入方块623,这代表主机232更新了用来做出在方块610示出的范围选择的预测器(例如,一致性状态或基于历史的预测器)。另外,主机232为所述CPU请求服务,如方块624所示。此后,所述过程在方块626终止。
返回方块614,如果用于本地总线读取操作的CR未指示“成功”,则主机232在方块616做出所述CR是否是重试全局”CR(其明确指示一致性协议托管在本地一致性域以外的一个或多个处理节点的参与并且指示总线操作因此应被重新发布为全局总线操作)的判定。如果是,则所述过程进入到方块620,这将在下面进行描述。另一方面,如果所述CR是未明确指示所述总线操作无法在本地一致性域中被服务的“重试”CR,则所述过程从方块616返回到方块610,其示出了主机232再次判定是否发布本地总线操作以为所述CPU请求服务。在这种情况下,主机232可以在所述判定中采用任何由所述CR提供的附加信息。在方块610之后,所述过程进入上面描述的方块612,或进入方块620。
方块620示出了主机232向数据处理系统中的所有处理节点102发布全局总线操作以便为所述CPU请求服务。如果全局总线读取操作的CR未在方块622指示“成功”,则主机232在方块620重新发布所述全局总线操作直到接收到指示“成功”的CR。如果全局总线读取操作的CR指示“成功”,则所述过程进入到方块623和已经被描述的之后的方块。
因此,假设同一一致性域中的过程与它们的数据之间存在亲密关系,则可以利用范围限于请求主机的一致性域或其他小于整个全局范围的受限范围的广播通信来频繁地为所述CPU请求服务。如以上所述的数据传送域的组合和一致性域因此不仅改进了数据访问等待时间,而且还通过限制广播通信的范围减少了系统互连(和其他本地互连)上的通信量。
现在参考图7A-7B,其中示出了根据本发明的高速缓存窥探器(如L2高速缓存窥探器236)通过其处理独占访问操作(也称为存储修改操作)的示例性方法的高级逻辑流程图。独占访问请求包括上述的RWITM、DClaim、DCBZ、Kill、写入和部分写入操作。
如图所示,所述过程开始于图7A的方块700以响应L2高速缓存窥探器236在其本地互连114上接收到请求。响应于接收到请求,窥探器236在方块702判定所述请求是否是独占访问操作,例如,通过参考该请求内的事务类型(Ttype)字段。如果否,则窥探器236执行其他处理,如方块704所示,并且过程在方块750结束。但是,如果窥探器236在方块702判定所述请求是独占访问操作,则窥探器236在方块710进一步判定当前是否能够实质上响应独占访问操作(例如,其是否具有窥探逻辑的可用实例并当前访问L2高速缓存目录302)。如果窥探器236当前不能实质上响应独占访问请求,则如方块712所示,窥探器236提供指示“重试”的部分响应(PR),并且独占访问操作的处理在方块750结束。
假设窥探器236可以实质上响应独占访问操作,则在方块720,窥探器236判定关联的L2高速缓存目录302是否指示了包含目标地址的存储器块的数据有效一致性状态(如,Mx、Tx、Sr或S)。如果否,则过程转到方块722,方块722示出了窥探器236判定包含目标地址的存储器块的一致性状态是否是Ig状态。如果是,则窥探器236提供指示可能需要全局操作来为独占访问操作服务的“重试全局”部分响应(方块726)。另一方面,如果包含目标地址的存储器块的一致性状态不是Ig状态,则窥探器236提供“空”的部分响应。在方块724或726之后,窥探器236对独占访问操作的处理在方块750终止。
返回方块720,响应于窥探器236判定关联的L2高速缓存目录302指示了包含独占访问操作的目标地址的存储器块的数据有效状态,所述过程分为两支并且平行地继续到方块730和后面的方块(它们表示由窥探器236执行的一致性状态更新),以及通过页连接符A到760(图7B)和之后的方块(它们表示窥探器236的数据传送和保护活动(如果有))。首先参考方块730,窥探器236判定它是否与最初发布独占访问请求的设备(如,L2高速缓存230)位于同一一致性域中。例如,窥探器236可以通过检查包含在独占访问操作中的范围位来做出在方块730处示出的判定。如果窥探器236在方块730处判定它与发起独占访问操作的设备位于同一一致性域,则窥探器236将包含独占访问操作的目标地址的存储器块的一致性状态更新为其L2高速缓存目录302中的In一致性状态(方块732)。如上所述,In一致性状态提供了对存储器块的HPC驻留在本地(不一定是主)一致性域和请求存储器块的后续本地操作可能成功的不精确指示。
另一方面,如果窥探器236在方块730处判定它与发起独占访问请求的设备不在同一一致性域中,则窥探器236通过参考BAR逻辑238来判定它是否在目标存储器块的主一致性域中(方块740)。如果窥探器236在方块740处判定它在目标存储器块的主一致性域中,则如方块742所示,窥探器236将目标存储器地址的一致性状态更新为其L2高速缓存目录302中的Ig状态。但是,如果窥探器236判定它不在目标存储器块的主一致性域中,则窥探器236将目标存储器块的一致性状态更新为Igp状态(方块744)。在方块732、742和744中的任一方块之后,响应于独占访问操作的对一致性状态的更新在方块750处结束。
现在参考图7B,其中示出了窥探器236的数据传送和保护活动(如果有)。如图所示,窥探器236在方块760判定窥探的独占访问操作是否是RWITM操作,例如,通过检查操作指定的Ttype。如上表I所示,RWITM操作是独占访问操作,其中发起方从其他参与方请求存储器块映像的唯一副本并且目的是对其进行更新(修改)。如果在方块760判定独占访问操作是RWITM操作,则过程转到以下描述的方块770。如果否,则过程进入方块762,方块762示出了窥探器236判定它是否位于目标存储器块的HPC处,例如,通过参考关联的L2高速缓存目录302中的目标存储器块的一致性状态。响应于在方块762判定窥探器236没有位于独占访问操作的目标存储器块的HPC处,窥探器236生成或导致生成“空”的部分响应(方块764)。但是,响应于在方块762判定窥探器236位于HPC处,窥探器236提供(或导致提供)“HPC ack”部分响应,该部分响应确认独占访问操作的发起方已被选择为目标存储器块的新的HPC并且所述发起方扩展了保护窗口404a以防止其他请求方获得存储器块的一致性所有权(方块766)。
现在参考方块770和之后的方块,窥探器236根据它的关联的L2高速缓存目录302中的目标存储器块的一致性状态来响应RWITM操作。具体地说,如方块770和772所示,如果L2高速缓存目录302中的目标存储器块的一致性状态是Mx(如,M或Me),则扩展保护窗口404a以防止其他请求方获得目标存储器块的所有权,提供“HPC ack”部分响应,以及将存储器块的副本提供给请求方。
在备选情况中,如方块774和776所示,如果L2高速缓存目录302中的目标存储器块的一致性状态是Sr并且窥探器236与请求方在同一数据提供域(如,处理节点102)中,则窥探器236扩展保护窗口404a,提供“Ack”部分响应,并且将存储器块的副本提供给请求方。在备选情况中,如果L2高速缓存目录302中的目标存储器块的一致性状态是Tx(如,T、Te、Tn或Ten)(如方块780所示),则窥探器236扩展保护窗口404a以防止其他请求方获得目标存储器块的所有权并提供了“HPC Ack”部分响应,如方块782所示。此外,如方块784和786所示,窥探器236可以根据从响应逻辑210接收的组合响应,将目标存储器块的副本提供给请求方。即,如方块786所示,如果组合响应指示此窥探器236负责提供目标存储器块的副本(例如,同一一致性域中没有Sr窥探器236在组合响应之前提供了请求的数据),则窥探器236将目标存储器块副本传输给请求方。
再次参考方块780,响应于否定的判定,窥探器236只是提供“空”的部分响应,如方块790所示。在方块766、764、772、776、784、786和790中的任一方块之后,过程在方块792结束。
如上所示,响应逻辑210的至少一个实例(如,发起处理单元104中的响应逻辑210)响应于独占访问操作,将由窥探器236和多个IMC 206生成的部分响应组合以确定独占访问操作的组合响应。如图7A-7B所示,独占访问操作的单个窥探器236通常独立于所述组合响应来确定对其一致性状态的更新和其对数据传送和保护的责任。如参考图7B的方块784-786所描述的,此通常规则的特别例外是,具有本地缓存的目标存储器块的Tx副本的窥探器236通过参考所述组合响应来确定它对提供目标存储器块副本以响应RWITM操作的责任。
从发起独占访问操作的主机232的角度,组合响应提供了大量相关信息。例如,组合响应优选地指示(1)主机是否获得目标存储器块的一致性所有权,(2)是否必须以增大的范围重试独占访问操作以便获得目标存储器块的一致性所有权,(3)如果独占访问操作是RWITM操作,则哪个窥探器负责提供目标存储器块,(4)是否需要后台终止操作来无效可能保留的目标存储器块的非HPC副本,以及(5)所需的后台终止操作(如果存在)的范围。美国专利申请No.11/055,305(在此引入作为参考)中详细描述了从窥探器236和多个IMC 206的部分响应形成各种组合响应,因此在此不再进一步详细说明。
如已描述的,本发明提供了一种给出存储器块是缓存在一致性域之内还是之外的指示的改进的数据处理系统、处理单元、高速缓存层次结构和数据处理方法。根据本发明提供的域指示可用于预测以关联存储器块为目标的广播操作的范围。有利地,可以精确地形成域指示以响应独占访问操作并与独占访问操作的组合响应无关,意味着窥探器逻辑的实例在其间必须是活动的占有期可以在接收到组合响应之前终止。此外,即使取消分配也无需驱逐Igp域指示,这节约了互连结构上的带宽。
在前面的说明中,Ix(例如,I、In、Ig,以及Igp)一致性状态被精确地形成,如图7A的方块732、742和744所述,但是被不精确地更新以响应后续的操作。例如,在图7的方块722、724和726,可以利用Ix一致性状态来提供关于操作的适当范围的提示(以部分响应的形式),但是不会更新所述状态以响应窥探的操作,因为此类更新不要求准确(即,为了保持一致)。但是,应该理解,如果提高了Ix一致性状态的精确性,则可以改进系统互连110和本地互连114上的带宽利用。
根据一个实施例,通过使用可选的数据无效(Ix)状态更新操作(在此称为Ix更新操作)来增强Ix一致性状态的精确性,所述操作更新窥探Ix更新操作的高速缓存中的相关Ix一致性状态。现在参考图8,其中示出了根据本发明的高速缓冲存储器(例如,L2高速缓冲存储器230)通过其发出Ix更新操作的示例性过程的高级逻辑流程图。例如,如图所示,过程开始于方块800,以响应由发起独占访问操作的主机232在图6的方块622处接收到成功的组合响应。所述过程从方块800进行到方块802,方块802示出了主机232可选地判定当前是否启用了Ix更新操作。例如,可以通过参考模式字段233(见图2)的状态来做出方块802处的判定,所述模式字段233可以通过系统初始化软件在系统启动时静态地设置,或通过硬件或软件动态地设置以响应读出的互连利用率的级别。
响应于在方块802判定未启用Ix更新操作,所述过程终止于方块814且主机232未发出Ix更新操作。响应于在方块802判定启用了Ix更新操作,所述过程进行到方块804。方块804描述了主机232判定Ix更新操作的广播范围(例如,本地范围或全局范围)。如上所述,可以通过参考模式字段233的状态来在方块804做出判定,所述模式字段233可以通过系统初始化软件在系统启动时静态地设置,或通过硬件或软件动态地设置以响应读出的互连利用率的级别。
响应于在方块804选择了全局范围,发起独占访问操作的主机232在方块806发出全局范围的无数据Ix更新请求。备选地,如果在方块804选择了本地范围,则主机232在方块808发出本地范围的Ix更新请求。所述Ix更新请求优选地包括至少一个将所述请求标识为Ix更新请求的Ttype字段、在其他L2高速缓冲存储器230处为其更新(如果可能)Ix一致性状态的目标地址,以及范围指示。
在某些优选实施例中,可以使用“单触发”请求来实现Ix更新操作,所述请求不会被重新发出,即使一个或多个窥探器236未能处理Ix更新请求,从而未使用重试部分响应进行响应。在此类实施例中,所述过程从方块806或方块808直接进行到方块814并终止。在其他实施例中,所述Ix更新请求可以被重新发出一次或多次,以响应接收到由响应逻辑210响应于至少一个重试部分响应而生成的重试组合响应。在此类实施例中,所述过程从方块806或方块808进行到方块810,方块810示出了主机232等待Ix更新操作的组合响应。响应于接收到组合响应,主机232在方块812判定所述组合响应是否是重试组合响应。如果是,则所述过程返回已描述的方块804。如果所述组合响应不是重试组合响应,则所述过程从方块812转到方块814并终止。
现在参考图9,其中示出了根据本发明的L2高速缓存窥探器236通过其处理Ix更新请求的示例性方法的高级逻辑流程图。如图所示,所述过程开始于方块900以响应窥探器236在其本地互连114上接收到窥探的请求。然后,在方块902,窥探器236通过参考其Ttype来判定所述窥探的请求是否是Ix更新请求。如果否,窥探器236执行其他处理,如方块904所示,并且所述过程在方块940终止。但是,如果窥探器236在方块902判定所述窥探的请求是Ix更新请求,则所述过程进行到方块910。
方块910示出了窥探器236判定当前是否可以实质上响应窥探的Ix更新请求(例如,是否具有窥探逻辑的可用实例和对L2高速缓存目录302的当前访问)。如方块912所示,如果窥探器236当前不能实质上响应窥探的Ix更新请求,则窥探器236提供指示“重试”部分响应(PR),并且窥探器236对Ix更新请求的处理在方块940结束。
假设窥探器236能够实质上响应Ix更新请求,则窥探器236在方块914和920判定Ix更新请求的目标地址是否命中其关联的L2高速缓存目录302(即,在目录表项的标记字段304中找到了匹配的标记),并且如果是,则记录在匹配目录表项中的一致性状态是数据无效(Ix)一致性状态(如,I,In,Ig,Igp)。响应于方块914处的高速缓存未命中或响应于在方块920判定目标地址命中记录了数据有效一致性状态(即,非I,In,Ig或Igp)的目录表项,窥探器236对窥探的Ix请求的处理在方块940终止。但是,如果窥探器236判定Ix更新请求的目标地址以数据无效一致性状态(如,I,In,Ig,Igp)命中其L2高速缓存目录302,则所述过程进行到方块922。
方块922示出了判定窥探器236是否与发出Ix更新请求的主机232位于同一一致性域(例如,处理节点102)。当然,如果使用本地广播范围独占地发出了Ix更新操作,则可以省略在方块922描述的判定,因为它将始终具有肯定的结果。在Ix更新操作可选地或独占地发出为全局操作的其他实施方式中,窥探器236可以通过检查Ix更新请求中包含的范围位来做出方块922处示出的判定。如果窥探器236在方块922判定其与发起Ix更新请求的主机232在同一一致性域中,则窥探器236将Ix更新操作的目标地址的一致性状态更新为其L2高速缓存目录302中的In一致性状态(如果一致性状态不为In)(方块924和926)。如上所述,In一致性状态指示了存储器块的HPC位于本地(不一定是主)一致性域中并且请求存储器块的后续本地操作可能成功。在方块924或926之后,在窥探器236处理Ix更新请求在方块940结束。
返回方块922,如方块930和932所示,如果窥探器236判定其与发出Ix更新请求的主机232不在同一一致性域中,并且其L2高速缓存目录302中的目标地址的一致性状态为I或In,则窥探器236将所述目标存储器地址的一致性状态从I或In一致性状态更新为其L2高速缓存目录302中的Igp一致性状态。当然,如果目标地址的一致性状态已经是Igp,则不需要此类更新。类似地,如果目标地址的一致性状态为Ig并且如前所述准确地形成Ig状态,则由于Ig状态为目标地址维护域指示符504的正确状态的缓存的指示,所以不执行一致性状态更新。因此,在其中准确形成Ig一致性状态的实施例中,在窥探器236处对Ix更新请求的处理从方块930或932进行到940并终止。
在其中未准确形成Ig一致性状态的本发明的备选实施例中(意味着在窥探器236处形成Ig一致性状态以响应独占访问请求,不管目标存储器块的主系统存储器的位置为何),远程一致性域中的窥探器236可以通过参考BAR逻辑238来准确地更新Ig一致性状态以响应Ix更新请求。在此类实施例中,所述过程从方块930进行到方块934,方块934示出了窥探器236判定其L2高速缓存目录302中的目标地址的一致性状态是否是Ig。如果否,则所述过程在方块940终止。但是,如果目标地址的一致性状态是Ig,则所述过程进行到方块936。方块936示出了窥探器236通过参考BAR逻辑238判定其与Ix更新请求的目标地址的主系统存储器是否位于同一一致性域(例如,处理节点102)中。如果是,则Ig一致性状态用于缓存目标地址的域指示符504的正确状态,并且相应地不会被更新。因此,响应于在方块936的肯定判定,所述过程在方块940终止。但是,如果在方块936判定窥探器236与目标地址的主系统存储器位于同一一致性域中(意味着不精确地形成Ig一致性状态),则窥探器236将一致性状态从Ig更新为Igp,如方块932所示。此后,Ix更新操作的处理终止于方块940。
如已描述的,本发明提供了一种通过Ix更新操作提高一个或多个窥探高速缓冲存储器处的数据无效一致性状态的准确性的改进的数据处理系统、处理单元、高速缓冲存储器和数据处理方法。提高数据无效一致性状态的准确性改进了同一目标存储器块的后续数据访问请求的范围预测的正确性,这更好地利用了互连带宽。
尽管参考优选实施例具体示出并描述了本发明,但是本领域的技术人员将理解,在不偏离本发明的精神和范围的情况下,可以在其中做出形式和细节上的各种修改。例如,可以理解,虽然参考其中准确形成Ix一致性状态的优选实施例描述了本发明,但是也可以在其中不精确地形成Ix一致性状态的实施例中有利地实现在此披露的Ix状态更新操作。
权利要求
1.一种在至少包括第一和第二一致性域的高速缓存一致数据处理系统中进行数据处理的方法,所述方法包括在所述数据处理系统的所述第一一致性域内的第一高速缓冲存储器中,将与存储位置关联并且还与地址标记关联的一致性状态字段设置为第一数据无效一致性状态,所述第一数据无效一致性状态指示所述地址标记有效并且所述存储位置不包含有效数据;以及响应于窥探数据无效状态更新请求,所述第一高速缓冲存储器将所述一致性状态字段从所述第一数据无效一致性状态更新为第二数据无效一致性状态,所述第二数据无效一致性状态指示所述地址标记有效、所述存储位置不包含有效数据,以及与所述地址标记关联的存储器块可能缓存在所述第一一致性域中。
2.根据权利要求1的方法,其中所述设置包括将所述一致性状态字段设置为所述第一数据无效一致性状态,以响应所述数据处理系统的第二高速缓冲存储器的独占访问请求。
3.根据权利要求1的方法,其中所述方法还包括所述第一高速缓冲存储器判定所述数据无效状态更新请求是否源自所述第一一致性域;以及所述更新包括所述第一高速缓冲存储器将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态,以响应判定所述数据无效状态更新请求源自所述第一一致性域。
4.根据权利要求3的方法,还包括响应于判定所述数据无效状态更新请求并非源自所述第一一致性域,将所述一致性状态字段从所述第一数据无效一致性状态更新为第三数据无效一致性状态,所述第三数据无效一致下状态指示所述地址标记有效、所述数据存储位置不包含有效数据、所述第一一致性域不包含主系统存储器,以及所述存储器块可能缓存在所述第一一致性域之外。
5.根据权利要求1的方法,还包括第二高速缓冲存储器发出所述数据无效状态更新请求,以响应所述第二高速缓冲存储器已获得所述存储器块的独占一致性所有权的指示。
6.根据权利要求1的方法,还包括所述第一高速缓冲存储器通过参考所述一致性状态字段来预测将所述存储器块作为目标的数据访问请求的广播传输的范围。
7.根据权利要求1的方法,其中所述方法还包括所述第一高速缓冲存储器判定所述第一高速缓冲存储器与所述数据无效状态更新请求指定的目标地址的主系统存储器是否位于同一一致性域中;以及所述更新包括仅在响应于判定所述第一高速缓冲存储器与所述数据无效状态更新请求指定的目标地址的主系统存储器位于同一一致性域时,所述第一高速缓冲存储器才将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态。
8.一种用于至少包括第一和第二一致性域的高速缓存一致数据处理系统的高速缓冲存储器,所述第一和第二一致性域都包括至少一个处理单元,其中所述第一一致性域包括所述高速缓冲存储器,并且所述第二一致性域包括其他一致高速缓冲存储器,所述高速缓冲存储器包括高速缓存控制器;数据阵列,所述数据阵列包括用于缓存存储器块的数据存储位置;以及高速缓存目录,所述高速缓存目录包括标记字段,所述标记字段用于存储与所述存储器块相关的地址标记;一致性状态字段,所述一致性状态字段与所述标记字段和所述数据存储位置关联,其中所述一致性状态字段具有多个可能的一致性状态,所述状态包括第一和第二数据无效一致性状态,其中所述第一数据无效一致性状态指示所述地址标记有效并且所述存储位置不包含有效数据,所述第二数据无效一致性状态指示所述地址标记有效、所述存储位置不包含有效数据,以及与所述地址标记关联的存储器块可能缓存在所述第一一致性域中;其中所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态,以响应窥探数据无效状态更新请求。
9.根据权利要求8的高速缓冲存储器,其中所述高速缓存控制器将所述一致性状态字段设置为所述第一数据无效一致性状态,以响应所述数据处理系统的第二高速缓冲存储器的独占访问请求。
10.根据权利要求8的高速缓冲存储器,其中所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态,以响应判定所述数据无效状态更新请求源自所述第一一致性域。
11.根据权利要求10的高速缓冲存储器,其中响应于判定所述数据无效状态更新请求并非源自所述第一一致性域,所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为第三数据无效一致性状态,所述第三数据无效一致性状态指示所述地址标记有效、所述数据存储位置不包含有效数据、所述第一一致性域不包含主系统存储器,以及所述存储器块可能缓存在所述第一一致性域之外。
12.根据权利要求8的高速缓冲存储器,其中所述高速缓存控制器发出对目标存储器块的数据无效状态更新请求,以响应第一高速缓冲存储器已获得所述目标存储器块的独占一致性所有权的指示。
13.根据权利要求8的高速缓冲存储器,还包括所述第一高速缓冲存储器通过参考所述一致性状态字段来预测将所述存储器块作为目标的数据访问请求的广播传输的范围。
14.一种处理单元,所述处理单元包括至少一个处理器核心;以及根据权利要求7的高速缓冲存储器。
15.一种高速缓存一致数据处理系统,所述系统包括;互连结构;由所述互连结构连接的第一和第二一致性域,其中所述第一一致性域至少包括由第一高速缓冲存储器支持的第一处理单元,并且所述第二一致性域包括由一致第二高速缓冲存储器支持的第二处理单元,其中所述数据处理系统的所述第一一致性域中的所述第一高速缓冲存储器包括高速缓存控制器;数据阵列,所述数据阵列包括用于缓存存储器块的数据存储位置;以及高速缓存目录,所述高速缓存目录包括标记字段,所述标记字段用于存储与所述存储器块相关的地址标记;一致性状态字段,所述一致性状态字段与所述标记字段和所述数据存储位置关联,其中所述一致性状态字段具有多个可能的一致性状态,所述状态包括第一和第二数据无效一致性状态,其中所述第一数据无效一致性状态指示所述地址标记有效并且所述存储位置不包含有效数据,所述第二数据无效一致性状态指示所述地址标记有效、所述存储位置不包含有效数据,以及与所述地址标记关联的存储器块可能缓存在所述第一一致性域中;其中所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态,以响应窥探数据无效状态更新请求。
16.根据权利要求15的数据处理系统,其中所述高速缓存控制器将所述一致性状态字段设置为所述第一数据无效一致性状态,以响应所述数据处理系统的所述第二高速缓冲存储器的独占访问请求。
17.根据权利要求15的数据处理系统,其中所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为所述第二数据无效一致性状态,以响应判定所述数据无效状态更新请求源自所述第一一致性域。
18.根据权利要求17的数据处理系统,其中响应于判定所述数据无效状态更新请求并非源自所述第一一致性域,所述高速缓存控制器将所述一致性状态字段从所述第一数据无效一致性状态更新为第三数据无效一致性状态,所述第三数据无效一致性状态指示所述地址标记有效、所述数据存储位置不包含有效数据、所述第一一致性域不包含主系统存储器,以及所述存储器块可能缓存在所述第一一致性域之外。
19.根据权利要求15的数据处理系统,其中所述第二高速缓冲存储器发出对目标存储器块的数据无效状态更新请求,以响应第二高速缓冲存储器已获得所述目标存储器块的独占一致性所有权的指示。
20.根据权利要求15的数据处理系统,还包括所述第一高速缓冲存储器通过参考所述一致性状态字段来预测将所述存储器块作为目标的数据访问请求的广播传输的范围。
全文摘要
一种至少包括第一和第二一致性域的高速缓存一致数据处理系统。在所述数据处理系统的所述第一一致性域内的第一高速缓冲存储器中,将与存储位置和地址标记关联的一致性状态字段设置为第一数据无效一致性状态,所述第一数据无效一致性状态指示所述地址标记有效并且所述存储位置不包含有效数据。响应于窥探数据无效状态更新请求,所述第一高速缓冲存储器将所述一致性状态字段从第一数据无效一致性状态更新为第二数据无效一致性状态,所述第二数据无效一致性状态指示所述地址标记有效、所述存储位置不包含有效数据,以及与所述地址标记关联的存储器块可能缓存在所述第一一致性域中。
文档编号G06F12/08GK101030171SQ20071000657
公开日2007年9月5日 申请日期2007年2月6日 优先权日2006年2月28日
发明者G·L·格思里, D·E·威廉斯, W·J·斯塔克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1