CN1873628A - 数据处理系统和方法 - Google Patents
数据处理系统和方法 Download PDFInfo
- Publication number
- CN1873628A CN1873628A CNA200610084674XA CN200610084674A CN1873628A CN 1873628 A CN1873628 A CN 1873628A CN A200610084674X A CNA200610084674X A CN A200610084674XA CN 200610084674 A CN200610084674 A CN 200610084674A CN 1873628 A CN1873628 A CN 1873628A
- Authority
- CN
- China
- Prior art keywords
- scope
- broadcasting
- fallout predictor
- cache
- handling system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
根据一种数据处理的方法,维护为在数据处理系统的互连上传输的一个或多个先前操作指示广播的历史范围的预测器。通过参考所述预测器来预测性地选择后续操作的广播的范围。
Description
技术领域
本发明一般地涉及数据处理,具体地说,涉及高速缓存一致数据处理系统中的数据处理。
背景技术
传统的对称多处理器(SMP)计算机系统(如服务器计算机系统)包括多个全部连接到系统互连的处理单元,所述系统互连通常包括一个或多个地址、数据和控制总线。连接到所述系统互连的是系统存储器,其代表所述多处理器计算机系统中的易失性存储器的最低级别并且通常可由所有处理单元进行读和写访问。为了减少对驻留在系统存储器中的指令和数据的访问等待时间,每个处理单元通常都由各自的多级别高速缓存层次结构来进一步支持,所述层次结构的较低级别可由一个或多个处理器核心所共享。
由于多个处理器核心可以请求对数据的同一高速缓存线的写访问并且由于修改后的高速缓存线不会立即与系统存储器同步,所以多处理器计算机系统的高速缓存层次结构通常实现高速缓存一致性(coherency)协议以确保系统存储器内容的各种处理器核心的“视图”之间的一致性的至少最低级别。具体地说,高速缓存一致性至少要求在处理单元访问存储器块的副本并随后访问所述存储器块的更新后的副本之后,所述处理单元不能再次访问所述存储器块的旧副本。
高速缓存一致性协议通常定义一组与每个高速缓存层次结构的高速缓存线关联存储的高速缓存状态,以及一组用于在高速缓存层次结构之间传送高速缓存状态信息的一致性消息。在一个典型实现中,高速缓存状态信息采取公知的MESI(修改、独占、共享和无效)协议或其变型的形式,并且一致性消息指示存储器访问请求的请求方和/或接收方的高速缓存层次结构中的协议定义的一致性状态转换。
传统的高速缓存一致性协议通常假设要维持高速缓存一致性,必须采用一致性消息的全局广播。即,所有一致性消息都必须被SMP计算机系统中的所有高速缓存层次结构所接收。但是本发明认识到,一致性消息的全局广播的要求对SMP计算机系统的可伸缩性产生了明显的妨碍,具体地说,随着系统的扩展,将消耗所述系统互连的越来越多的带宽量。
发明内容
鉴于以上所述,本发明提供了一种改进的高速缓存一致数据处理系统、高速缓存系统和在高速缓存一致数据处理系统中的数据处理的方法。
在一个实施例中,为在数据处理系统的互连上传输的一个或多个先前操作维护指示广播的历史范围的预测器。通过参考所述预测器来预言性地选择后续操作的广播范围。
本发明的所有目标、特征和优点将在以下详细的书面描述中变得显而易见。
附图说明
在所附权利要求书中说明了被认为是本发明特性的新颖特征。但是,当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解本发明及其优选使用方式,这些附图是:
图1是根据本发明的示例性数据处理系统的高级方块图;
图2是根据本发明的处理单元的更详细的方块图;
图3是图2中示出的L2高速缓存阵列和目录的更详细的方块图;
图4是图1的数据处理系统的系统互连上的示例性事务的时空图;
图5示出了根据本发明的优选实施例的域指示符;
图6是根据本发明的高速缓冲存储器通过其为数据处理系统中的处理器核心接收的操作服务的示例性方法的高级逻辑流程图;
图7是图2中示出的范围预测逻辑的一个实施例的更详细的方块图;
图8是根据本发明的范围预测的示例性过程的高级逻辑流程图;以及
图9是根据本发明的基于历史的范围预测的示例性过程的更详细的逻辑流程图。
具体实施方式
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都能够在两个或更多个硬件执行线程中同时执行指令。
每个处理器核心200的操作都由在其最低级别具有共享系统存储器108a-108d并且在其较高级别具有一个或多个级别的高速缓冲存储器的多级别易失性存储器层次结构来支持。在所示实施例中,每个处理单元104都包括集成存储器控制器(IMC)206,集成存储器控制器206控制对其处理节点102内的系统存储器108a-108d中的相应系统存储器的读写访问,以响应从处理器核心200a-200b接收的请求和由窥探器(S)222在本地互连114上窥探的操作。IMC 206通过引用基地址寄存器(BAR)逻辑240来确定其所负责的地址。
在示例性实施例中,处理单元104的高速缓冲存储器层次结构包括每个处理器核心200内的直通存储(store-through)一级(L1)高速缓存226(其可以分成单独的L1指令和数据高速缓存)和由处理单元104的所有处理器核心200a、200b共享的二级(L2)高速缓存230。L2高速缓存230包括L2阵列和目录234以及高速缓存控制器,所述高速缓存控制器包括主机(master)232和窥探器236。主机232启动本地互连114和系统互连110上的事务并响应于从关联的处理器核心200a-200b接收的存储器访问(以及其他)请求而访问L2阵列和目录234。主机232包括BAR注册器252(其指示哪些地址驻留在其处理节点102内的系统存储器108中)和范围预测逻辑250,如以下进一步描述的,范围预测逻辑250可以被用来预测在包括本地互连114和系统互连110的互连构造上传输的操作的范围。窥探器236窥探本地互连114上的操作、提供适合的响应,并执行所述操作所需的对L2阵列和目录234的任何访问。
尽管示出的高速缓存层次结构仅包括两级高速缓存,但是本领域的技术人员将理解,可替代的实施例可以包括其他级别(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上的示例性操作的时空图。尽管互连110、114不必是总线互连,但是在一个或多个本地互连114和/或系统互连110上传输的操作在此被称为“总线操作”,以便将其与在处理器核心200与驻留在它们自己的高速缓存层次结构内的高速缓冲存储器之间传输的CPU请求区分开。
当L2高速缓存230的主机232(或其他主机,如I/O控制器214)在本地互连114和/或系统互连110上发出请求402时,示出的总线操作开始。请求402优选地包括事务类型(指示期望的访问类型)和资源标识符(如,真实地址,指示将被所述请求访问的资源)。常见的请求类型优选地包括那些在下表I中说明的类型。
表I
请求 | 描述 |
READ | 请求用于查询目的的存储器块的映像的副本 |
RWITM(具有修改目的的读) | 请求存储器块的映像的唯一副本,其目的是对其进行更新(修改)并要求破坏其他副本(如果有) |
DCLAIM(数据要求) | 请求授权以将存储器块的现有只查询副本提升为唯一副本,其目的是对其进行更新(修改)并要求破坏其他副本(如果有) |
DCBZ(数据高速缓存块清零) | 请求授权以创建存储器块的与其当前状态无关的新的唯一高速缓存副本并随后修改其内容;要求破坏其他副本(如果有) |
CASTOUT | 将存储器块的映像从较高级别的存储器复制到较低级别的存储器,以便为破坏较高级别的副本做准备 |
WRITE | 请求授权以创建存储器块的与其当前状态无关的新的唯一副本并立即将存储器块的映像从较高级别的存储器复制到较低级别的存储器,以便为破坏较高级别的副本做准备 |
PARTIALWRITE | 请求授权以创建部分存储器块的与其当前状态无关的新的唯一副本并立即将部分存储器块的映像从较高级别的存储器复制到较低级别的存储器,以便为破坏较高级别的副本做准备 |
请求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,697(其全部内容在此引入作为参考)中详细描述了本地和全局操作的实例。
在一个优选实施例中,由本地/全局范围指示符(信号)指示总线操作中的操作的范围,在一个实施例中,所述指示符可以包括1-位标志。处理单元104中的转发逻辑212优选地根据操作中的本地/全局范围指示符(信号)的设置来确定是否将通过本地互连114接收到的操作转发到系统互连110上。
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
高速缓存状态 | HPC? | 唯一? | 数据源? | 与LPC一致? | 缓存在本地域外? | 法定的并发状态 |
M | 是 | 是 | 是,在CR前 | 否 | 否 | I、Ig、In(&LPC) |
Me | 是 | 是 | 是,在CR前 | 是 | 否 | I、Ig、In(&LPC) |
T | 是 | 未知 | 是,如果在CR前未提供则在CR后 | 否 | 未知 | Sr、S、I、Ig、In(&LPC) |
Tn | 是 | 未知 | 是,如果在CR前未提供则在CR后 | 否 | 否 | Sr、S、I、Ig、In(&LPC) |
Te | 是 | 未知 | 是,如果在CR前未提供则在CR后 | 是 | 未知 | Sr、S、I、Ig、In(&LPC) |
Ten | 是 | 未知 | 是,如果在CR前未提供则在CR后 | 是 | 否 | Sr、S、I、Ig、In(&LPC) |
Sr | 否 | 未知 | 是,在CR前 | 未知 | 未知 | T、Tn、Te、Ten、S、I、Ig、In(&LPC) |
S | 否 | 未知 | 否 | 未知 | 未知 | T、Tn、Te、Ten、Sr、S、I、Ig、In(&LPC) |
I | 否 | n/a | 否 | n/a | 未知 | M、Me、T、Tn、Te、Ten、Sr、S、I、Ig、In(&LPC) |
Ig | 否 | n/a | 否 | n/a | 假设如此,在缺少其他信息的情况下 | M、Me、T、Tn、Te、Ten、Sr、S、I、Ig、In(&LPC) |
In | 否 | n/a | 否 | n/a | 假设不如此,在缺少其他信息的情况下 | M、Me、T、Tn、Te、Ten、Sr、S、I、Ig、In(&LPC) |
A.Ig状态
为了避免不得不访问LPC以确定存储器块是否将仅本地地被缓存(如果可能),Ig(无效全局)一致性状态被用来在其中没有存储器块的副本保持缓存在一致性域中的情况下维持域指示。所述Ig状态在此被定义为指示以下项的高速缓存一致性状态:(1)高速缓存阵列中的关联存储器块是无效的,(2)高速缓存目录中的地址标志是有效的,以及(3)由地址标志标识的存储器块的副本可能被缓存在另一个一致性域中。所述Ig指示优选地是不精确的,意味着在不违反一致性的情况下其可能是不正确的。
所述Ig状态在低级高速缓存中形成以响应高速缓存将请求的存储器块提供给另一个一致性域中的请求方以响应独占访问请求(例如,总线RWITM操作)。在本发明的某些实施例中,仅在包含用于所述存储器块的LPC的一致性域中形成所述Ig状态是优选的。在此类实施例中,某些机制(例如,LPC的部分响应和随后的组合响应)必须被实现以便向作为请求的存储器块的源的高速缓存指示所述LPC在其本地一致性域中。在不支持传送所述LPC是本地的指示的其他实施例中,可以在高速缓存将存储器块作为源提供给远程一致性域以响应独占访问请求的任何时刻形成所述Ig状态。
由于包括Ig状态的高速缓存目录表项可能携带有用信息,所以至少在某些实现中,希望优选地保留Ig状态中的表项而不是I状态中的表项(例如,通过修改用来选择用于替换的牺牲品高速缓存表项的最近最少使用(LRU)算法)。由于Ig目录表项被保留在高速缓存中,某些Ig表项可能随着时间的推移而变得“失效”,因为高速缓存(其独占访问请求导致了Ig状态的形成)可以解除分配或写回其存储器块的副本,而不通知将存储器块的地址标记保持在Ig状态的高速缓存。在这种情况下,所述“失效”Ig状态(其错误地指示应发布全局操作而不是本地操作)将不会导致任何一致性错误,而只是导致某些操作(可以利用本地操作以其他方式为它们服务)被发布为全局操作。如下面进一步描述的,此类低效率的出现将通过最终替换“失效”Ig高速缓存表项和通过域指示擦除来在持续时间上进行限制。
若干规则管理着Ig高速缓存表项的选择和替换。首先,如果高速缓存选择Ig表项作为替换的牺牲品,则执行Ig表项的驱逐(不同于当I表项被选择时的情况)。其次,如果导致存储器块被加载到高速缓存中的请求命中该同一高速缓存中的Ig高速缓存表项,则所述高速缓存将Ig命中视为高速缓存未命中并在将Ig表项作为选定的牺牲品的情况下执行驱逐操作。所述高速缓存因此避免了将同一地址标记的两个副本放置在高速缓存目录中。第三,Ig状态的驱逐优选地被作为本地操作执行,或者如果作为全局操作执行,则被非本地一致性域的存储器控制器所忽略。如果允许在与用于存储器块的LPC不同的一致性域内的高速缓存中形成Ig表项,则无需更新LPC中的域指示符。第四,Ig状态的驱逐优选地被执行为无数据仅地址操作,其中域指示符被写回LPC(如果对于执行驱逐的高速缓存是本地的)。
根据本发明的Ig状态的实现通过为一致性域中的存储器块维护高速缓存的域指示符(即使没有存储器块的有效副本继续缓存在该一致性域中)来提高通信效率。结果,用于存储器块的HPC可以为来自远程一致性域的独占访问请求(例如,总线RWITM操作)服务,而无需重试所述请求并执行将请求的存储器块推动到LPC。
B.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上的带宽。
C.Sr状态
在下面描述的操作中,能够确定持有处于Sr一致性状态的共享请求存储器块的低级高速缓存是否位于与发出请求的主机相同的域中是有用的。在一个实施例中,位于与发出请求的主机相同的域中的“本地”Sr窥探器的存在可以由在持有处于Sr一致性状态的请求存储器块的低级高速缓存处的窥探器的响应行为来指示。例如,假设每个总线操作都包括范围指示符,所述范围指示符指示所述总线操作是否已穿过域边界(例如,主机的显式域标识符或单个本地/非本地范围位),持有处于Sr一致性状态的共享存储器块的低级高速缓存可以提供部分响应(仅为同一数据源域中的主机的请求确认请求处于Sr状态)并提供指示所有其他请求的S状态的部分响应。在此类实施例中,响应行为可以被总结为如表III所示,其中最初的(’)符号被用来指定可能与存储器块的实际高速缓存状态不同的部分响应。
表III
读取类型请求的主机的域 | 目录中的高速缓存状态 | 部分响应(足够的资源可用) | 部分响应(足够的资源不可用) |
“本地”(即,在同一域中) | Sr | Sr’确认 | Sr’可能隐藏 |
“远程”(即,不在同一域中) | Sr | S’确认 | S’可能隐藏 |
“本地”(即,在同一域中) | S | S’确认 | S’可能隐藏 |
“远程”(即,不在同一域中) | S | S’确认 | S’可能隐藏 |
假设以上在表III中说明了响应行为,通过增加在可用作数据源的SMP数据处理系统中分布的存储器块的共享副本的数量,共享数据的平均数据等待时间可以显著减少。
VII.示例性操作
首先参考图6,其中示出了根据本发明的在数据处理系统中为处理器(CPU)请求服务的示例性方法的高级逻辑流程图。如图所示,所述过程开始于方块600,方块600代表从其处理单元104中的关联处理器核心200接收CPU请求(例如,CPU数据加载请求、CPU数据存储请求、CPU负载和保留请求、CPU指令加载请求等)的L2高速缓存230中的主机232。响应于接收到所述CPU请求,主机232在方块602判定目标存储器块(其在所述CPU请求中由目标地址来标识)是否被以一致性状态(允许为所述CPU请求服务而不在互连构造上发布总线操作)保存在L2高速缓存目录302中。例如,如果L2高速缓存目录302指示所述目标存储器块的一致性状态是M、Me、Tx(例如,T、Tn、Te或Ten)、Sr或S状态中的任何状态,则可以为CPU指令取回请求或数据加载请求服务而不在互连构造上发布总线操作。如果L2高速缓存目录302指示所述目标存储器块的一致性状态是M或Me状态中的一个状态,则可以为CPU数据存储请求服务而不在互连构造上发布总线操作。如方块624所示,如果主机232在方块602判定可以为所述CPU请求服务而不在互连构造上发布总线操作,则主机232访问L2高速缓存阵列300来为所述CPU请求服务。例如,主机232可以获得请求的存储器块并将所述请求的存储器块提供给发出请求的处理器核心200以响应CPU数据加载请求或指令取回请求或者可以将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进行的本地总线操作是否可能成功地解决目标存储器块的一致性而不与其他一致性域中的处理节点通信的预测。参考图7-9在以下更详细地描述了此第三可替代实施例的示例性实现。
响应于在方块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请求服务。如以上所述的数据传送域的组合和一致性域因此不仅改进了数据访问等待时间,而且还通过限制广播通信的范围减少了系统互连(和其他本地互连)上的通信量。
VIII.范围预测
现在参考图7,其中示出了根据本发明的一个实施例的L2高速缓存230的主机232中的范围预测逻辑250的示例性实施例的方块图表示。如上所述,可以采用范围预测逻辑250来执行在图6的方块610、614和616处示出的范围选择。
在一个优选实施例中,范围预测逻辑250包括用于生成广播总线操作的范围的静态预测的未示出的逻辑。在一个实施例中,范围预测逻辑250根据要被发布的总线操作(例如,读取、RWITM、DClaim、DCBZ、写入、部分写入等)的事务类型(TTYPE)和本地L2高速缓存目录302中的总线操作的目标存储器块的当前一致性状态来生成所述静态预测。
如图7中进一步示出的,范围预测逻辑250可以有利地包括基于历史的预测逻辑700,预测逻辑700根据先前总线操作的实际范围来为总线操作生成范围预测。由于不同类的总线操作趋向于展示不同的行为,基于历史的预测逻辑700为预测器阵列702的各种预测器704a-704n中的不同类的总线操作单独记录历史信息。通常,如果正确地构建操作类,则每个类中的总线操作的过去行为都将用作同一类中的未来总线操作的范围的精确预测器。
在一个实施例中,每个预测器704都被实现为计数器。假设良好的软件密切关系,每个操作类中的大多数总线操作都应能够只利用本地总线操作来服务。因此,在一个实施例中,每个计数器704都被初始化为代表全局操作范围的初始值,由更新逻辑714为完全在本地一致性域中提供服务的关联类中的每个连续总线操作来更新直到达到阈值(例如,3),并且此后指示关联类中的总线操作的本地操作范围,直到关联类中的总线操作由本地处理节点102以外的参与者来提供服务。在此情况下,预测器704被更新逻辑714重置为其初始值。因此,在此实施例中,预测器704对总线操作的本地范围的预测缓慢地饱和,但对不经常发生的全局总线操作迅速做出反应。在其他实施例中,当然,预测器704可以只是递减以响应全局总线操作以便预测器704以相同速率对全局和本地范围预测饱和。
尽管良好的软件密切关系是典型的,但是在某些情况下,特定存储器块或存储器页可以展示较弱的密切关系并因此需要很大比例的全局总线操作。因此,基于历史的预测逻辑700可以可选地包括模式字段708,其可以由硬件(例如,主机232)或软件(例如,系统固件)来设置以导致一个或多个预测器704a-704n使用相反偏差来操作,或被解释为具有相反偏差。利用相反偏差,预测器704的初始值代表本地操作范围的预测,预测器704在阈值数量的操作(例如,3)在本地一致性域中被解决之后对全局操作范围的指示饱和,并且预测器704在关联类中的操作被在本地一致性域中服务时被更新逻辑714重置为本地范围的预测。
如将被理解的,可以利用大量准则集合中的任何准则来构造对应于预测器704a-704n的类。在一个实施例中,这些准则形成了一组读取输入720和一组更新输入730,包括:线程标识符(TID)、总线操作(例如,读取、RWITM、DClaim、DCBZ、写、部分写等)的事务类型(TTYPE)、指示目标存储器块的内容是指令还是数据的指令/数据(I/D)指示、指示请求的数据访问是否与原子存储器更新相关的原子指示(例如,CPU请求是否通过源处理器核心200执行加载并保留或存储条件指令来被触发),以及LPC指示。
TID(其优选地作为CPU请求的一部分或结合CPU请求从处理器核心200接收)唯一地标识发布了将被服务的CPU请求的处理器线程。在其中多个处理器核心200共享L2高速缓存230的实施例中,所述TID优选地包括处理器核心标识符以便能够消除不同处理器核心200的线程的歧义。例如,对于包括两个处理器核心200(每个处理器核心200都支持两个同时的硬件线程)的处理单元104的实施例,所述TID可以使用2个位来实现:1位标识源处理器核心200,1位标识发布了所述CPU请求的处理器核心200的线程。
所述I/D指示也优选地作为CPU请求的一部分或结合CPU请求由L2高速缓存230从处理器核心200接收。所述I/D指示可以由L1高速缓存226根据所述CPU请求是起因于指令取回未命中还是数据访问来生成。
所述LPC指示提供了用于目标存储器块的LPC是否驻留在包含L2高速缓存230的本地一致性域中的指示。所述LPC指示可以例如由主机232的BAR注册器252以常规方法来生成。
根据读取输入720和更新输入730组,至少部分地基于索引(至少包括TTYPE_group字段、TID字段以及LPC字段)的二进制扩展来构造操作类。
TTYPE_group字段标识了总线操作落入其中的特定一组TTYPE。在一个实施例中,总线操作的大量TTYPE由较少数量的TTYPE_group来表示。TTYPE_group不但可以基于总线操作TTYPE而且可以基于诸如I/D和原子指示之类的其他信息来构造。例如,在一个实施例中,由四个TTYPE_group(指令取回、数据取回、加载并保留以及存储,它们可以被有利地编码为2-位TTYPE_group字段)来表示各种可能的总线操作。
如图7所示,基于历史的预测逻辑700包括用于生成读取和更新索引的索引生成逻辑712,所述读取和更新索引用来选择性地访问与特定操作类对应的预测器阵列702中的预测器704。在实现以上定义的四个TTYPE_group的实施例中,索引生成逻辑712根据下表IV(破折号(“-”)表示“无关”),从所述总线操作TTYPE、I/D以及原子指示来生成读取或更新索引的2-位TTYPE_group字段。索引生成逻辑712然后通过将所述TTYPE_group字段与所述TID和LPC指示链接在一起来形成完整的索引。
表IV
TTYPE | I/D | 原子 | TTYPE_group |
READ | I | 否 | 指令取回 |
READ | D | 否 | 数据取回 |
READ | D | 是 | 加载并保留 |
RWITM(具有修改目的的读) | D | - | 存储 |
DCLAIM(数据要求) | D | - | 存储 |
DCBZ(数据高速缓存块清零) | D | - | 存储 |
假设索引生成逻辑712生成包括2-位TTYPE_group字段、2-位TID字段和1-位LPC字段的5-位索引,预测器阵列702可以支持32(即,25)个操作类(每个都具有相应的预测器704)的基于历史的范围预测。由索引生成逻辑712生成的更新索引可以被解码器706用来更新特定预测器704的值,并且读取索引可以被N到1多路转换器710用来输出特定预测器704的范围预测。当然,可以根据其他类准则(例如,目标存储器地址的位子范围等)来实现其他类和索引位。
还应该注意,对于每个包括在读取和更新索引内的附加位,预测器704的数量可以(但不必)加倍。相反,可以与由所述索引中的主导位表示的特定准则联合建立单个计数器704。解码器706和多路转换器710可以被进一步实现成当主导位被断言时访问该相应的计数器704,而不管其他索引位的值。在其中特定类准则可能比其他索引位更确定实际范围结果的情况下,此类实现将是有利和所希望的。
现在参考图8,其中示出了根据本发明的优选实施例的由范围预测逻辑250执行的范围预测的示例性方法。如图所示,所述过程开始于方块800,例如,响应于在图6的方块610处由范围预测逻辑250接收到将被发布的总线操作的TTYPE、L2高速缓存目录302中的总线操作的目标地址的本地一致性状态以及一组读取输入720。然后,所述过程进入到方块802,方块802示出了范围预测逻辑250判定TTYPE输入指示由主机232发布的总线操作是总线读取、总线RWITM还是总线DCBZ操作。如果否,则所述过程进入到下面描述的方块810。另一方面,如果TTYPE输入指示将被发布的总线操作是总线读取、总线RWITM或总线DCBZ操作,则如果可能,范围预测逻辑250中未示出的逻辑优选地根据目标存储器块的本地一致性状态来预测所述总线操作的范围。
也就是说,如果一致性状态输入指示就本地L2高速缓存目录302而言的目标地址的一致性状态是In,则范围预测逻辑250为所述总线操作预测了本地范围,如方块804和822所示。可替代地,如果一致性状态输入指示就本地L2高速缓存目录302而言的目标地址的一致性状态是Ig,则范围预测逻辑250为所述总线操作预测了全局范围,如方块808和814所示。可替代地,如果目标地址并未与L2高速缓存目录302中的In或Ig一致性状态关联,则范围预测逻辑250优选地利用基于历史的预测逻辑700来预测所述总线操作的范围,如方块820所示以及如参考图9在下面更详细地描述的。
现在参考方块810,如果范围预测逻辑250确定将被发布的总线操作是总线写入或总线驱逐操作,则范围预测逻辑250中未示出的逻辑优选地基于LPC输入来预测总线操作的范围,如方块812所示。因此,如果LPC输入指示用于目标地址的LPC不在本地处理节点104内,则范围预测逻辑250为所述总线操作预测全局范围(方块814),否则,为所述总线操作预测本地范围(方块822)。
再次参考方块810,如果TTYPE输入指示所述总线操作是另一类操作,例如,总线DClaim操作,则范围预测逻辑250优选地利用基于历史的预测逻辑700来预测总线操作的范围,如方块820所示。如果这样,当基于历史的预测逻辑700指示本地范围时,范围预测逻辑250提供本地范围预测(方块822),而当基于历史的预测逻辑700指示全局范围时,范围预测逻辑250提供全局范围预测(方块814)。
现在参考图9,其中示出了根据本发明的基于历史的范围预测的示例性过程的更详细的逻辑流程图。在图7的实施例中,由基于历史的预测逻辑700来实现所示的过程。
如图所示,所述过程开始于方块900并且此后进入到方块902和904,它们分别示出了例如作为硬件加电重置操作和/或固件初始化过程的一部分的模式字段708和预测器704的初始化。此后,所述过程分为三叉并平行地进入方块906、920和930中的每一个方块。
方块906表示基于历史的预测逻辑700不断循环直到接收到一组与将被发布的预期总线操作关联的读取输入720为止。当接收到一组读取输入720时,索引生成逻辑712生成读取索引,如方块908所示。响应于接收到读取索引,多路转换器710从预测器阵列702选择并输出与由读取索引标识的操作类对应的特定预测器704的值,如方块910所示。如果对于当前总线操作,范围预测逻辑250已选择了基于历史的预测(例如,根据图8的方法),则范围预测逻辑250通过参考预测器值和模式字段708的值(如果存在)来确定范围预测。例如,假设模式字段708(如果存在)被设置以便相关预测器704具有默认的偏差,范围预测逻辑250在预测器值低于饱和阈值时预测全局范围,而在预测器值等于或高于饱和阈值时预测本地范围。如果模式字段708被设置以便相关预测器704具有相反偏差,则预测相反。在方块910之后,所述过程返回方块906。
现在参考方块920,基于历史的预测逻辑700在方块920循环,直到从主机232接收到一组描述总线操作(已为其在本地互连114上接收到指示“成功”的组合响应)的更新输入730为止。(主机232为每个总线操作维持状态直到它成功地完成为止。)响应于接收到一组更新输入730,索引生成逻辑712为为其接收到组合响应的总线操作生成更新索引,如在方块922指示的。接着,如方块924所示,更新逻辑714利用为总线操作接收的组合响应来生成用于预测器704的更新,该更新被应用到由解码器706选择的预测器704以响应从索引生成逻辑712接收到更新索引。具体地说,如果“成功”CR指示总线操作由本地一致性域内的窥探器122、236来服务,则更新逻辑714输出计数器递增信号。如果“成功”CR指示总线操作由本地一致性域之外的窥探器122、236来服务,则更新逻辑714输出计数器重置信号。如果模式字段708指示将对其应用更新信号的计数器704使用相反偏差来工作,则对这些更新信号的解释变得相反。在方块922之后,所述过程返回方块920。
现在参考方块930,基于历史的预测逻辑700在方块930循环,直到接收到对模式字段930的更新为止。响应于接收到对模式字段708的更新,基于历史的预测逻辑700更新模式字段708以正确地反映哪个预测器704使用正向偏差工作以及哪个预测器704使用相反偏差工作,如方块902所示。此外,受对模式字段708的更新影响的一个或多个预测器704在方块904被初始化。此后,所述过程返回方块930。
如所描述的,本发明提供了一种用于选择或预测在数据处理系统的互连上传输的广播操作的范围的改进的方法和系统。根据本发明,通过参考以前成功的广播操作的实际范围来预测至少某些广播操作的范围。通过为不同类的操作维护操作范围的单独历史指示,可以增强基于历史的预测。
尽管参考优选实施例具体示出并描述了本发明,但是本领域的技术人员将理解,在不偏离本发明的精神和范围的情况下,可以在其中做出形式和细节上的各种修改。
Claims (21)
1.一种用于数据处理系统的高速缓冲存储器,所述数据处理系统包括互连构造并包括至少第一和第二一致性域,每个域都包含至少一个处理单元,所述高速缓冲存储器包括:
数据阵列;
所述数据阵列的内容的高速缓存目录;以及
包括范围预测逻辑的高速缓存控制器,所述范围预测逻辑还包括:
多个预测器,每个预测器都为多个操作类中的一个相应类的一个或多个先前操作指示所述互连构造上的广播的历史范围;
索引生成逻辑,所述索引生成逻辑响应于接收到一组表征将被发布的预期总线操作的读取输入,生成读取索引以便由所述多个预测器中的一个预测器选择范围预测指示以用在所述预期总线操作的传输中;以及
更新逻辑,所述更新逻辑响应于接收到对成功完成的总线操作的组合响应,根据所述数据处理系统中的服务窥探器的位置来生成对所述多个预测器中的一个预测器的更新。
2.一种数据处理系统中的数据处理的方法,所述方法包括:
维护为在数据处理系统的互连上传输的一个或多个先前操作指示广播的历史范围的预测器;以及
通过参考所述预测器来预测性地选择后续操作的广播的范围。
3.根据权利要求2的方法,其中:
所述数据处理系统包括至少第一和第二一致性域;以及
所述预测性地选择包括响应于所述预测器的第一设置而选择包括所述第一和第二一致性域两者的广播的第一范围,以及响应于所述预测器的第二设置而选择包括所述第一一致性域并且不包括所述第二一致性域的广播的第二范围。
4.根据权利要求2的方法,其中所述维护包括在所述数据处理系统中的低级高速缓存处维护所述预测器。
5.根据权利要求2的方法,其中所述维护包括维护多个预测器,其中所述多个预测器中的每个预测器都指示处于多个操作类中的一个相应类中的操作的广播的历史范围。
6.根据权利要求2的方法,其中:
所述预测性地选择包括在后续操作具有第一预定操作类型时,通过参考所述预测器来预测性地选择所述操作的广播的范围;以及
所述方法还包括在后续操作具有第二预定操作类型时,通过参考所述操作的目标存储器地址的一致性状态来预测性地选择所述操作的广播的范围。
7.根据权利要求2的方法,其中所述维护包括维护在预测更窄广播范围时饱和的饱和计数器。
8.根据权利要求7的方法,还包括反转由所述饱和计数器指示的预测以响应模式字段的设置。
9.一种数据处理系统,所述数据处理系统包括:
至少第一和第二一致性域,每个域都包含至少一个包括高速缓冲存储器的处理单元;
连接所述第一和第二一致性域的互连构造;以及
在所述第一一致性域内的范围预测逻辑,所述范围预测逻辑包括为在所述互连构造上传输的一个或多个先前操作指示广播的历史范围的预测器,其中所述范围预测逻辑通过参考所述预测器来预测性地选择后续操作的广播的范围。
10.根据权利要求9的数据处理系统,其中所述范围预测逻辑响应于所述预测器的第一设置而预测性地选择包括所述第一和第二一致性域两者的广播的第一范围,以及响应于所述预测器的第二设置而选择包括所述第一一致性域并且不包括所述第二一致性域的广播的第二范围。
11.根据权利要求9的数据处理系统,其中所述第一一致性域的所述高速缓冲存储器包括所述范围预测逻辑。
12.根据权利要求9的数据处理系统,其中所述范围预测逻辑包括多个预测器,每个预测器都指示处于多个操作类中的一个相应类中的操作的广播的历史范围。
13.根据权利要求9的数据处理系统,其中所述范围预测逻辑在后续操作具有第一预定操作类型时,通过参考所述预测器来预测性地选择所述操作的广播的范围,并且在后续操作具有第二预定操作类型时,通过参考所述操作的目标存储器地址的一致性状态来预测性地选择所述操作的广播的范围。
14.根据权利要求9的数据处理系统,其中所述预测器包括在预测更窄广播范围时饱和的饱和计数器。
15.根据权利要求14的数据处理系统,其中所述范围预测逻辑包括模式字段,并且其中所述范围预测逻辑反转由所述饱和计数器指示的预测以响应所述模式字段的设置。
16.一种用于数据处理系统的高速缓冲存储器,所述数据处理系统包括互连构造并包括至少第一和第二一致性域,每个域都包含至少一个处理单元,所述高速缓冲存储器包括:
数据阵列;
所述数据阵列的内容的高速缓存目录;以及
包括范围预测逻辑的高速缓存控制器,其中所述范围预测逻辑包括预测器,所述预测器为在所述互连构造上由所述高速缓冲存储器传输的一个或多个先前操作指示广播的历史范围,其中所述范围预测逻辑通过参考所述预测器来预测性地选择后续操作的广播的范围。
17.根据权利要求16的高速缓冲存储器,其中所述范围预测逻辑响应于所述预测器的第一设置而预测性地选择包括所述第一和第二一致性域两者的广播的第一范围,以及响应于所述预测器的第二设置而选择包括所述第一一致性域并且不包括所述第二一致性域的广播的第二范围。
18.根据权利要求16的高速缓冲存储器,其中所述范围预测逻辑包括多个预测器,每个预测器都指示处于多个操作类中的一个相应类中的操作的广播的历史范围。
19.根据权利要求16的高速缓冲存储器,其中所述范围预测逻辑在后续操作具有第一预定操作类型时,通过参考所述预测器来预测性地选择所述操作的广播的范围,并且在后续操作具有第二预定操作类型时,通过参考记录在所述高速缓存目录中的所述操作的目标存储器地址的一致性状态来预测性地选择所述操作的广播的范围。
20.根据权利要求16的高速缓冲存储器,其中所述预测器包括在预测更窄广播范围时饱和的饱和计数器。
21.一种处理单元,所述处理单元包括:
根据权利要求16的高速缓冲存储器;以及
至少一个连接到所述高速缓冲存储器的处理器核心。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/140,821 US7444494B2 (en) | 2005-05-31 | 2005-05-31 | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction |
US11/140,821 | 2005-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1873628A true CN1873628A (zh) | 2006-12-06 |
CN100444134C CN100444134C (zh) | 2008-12-17 |
Family
ID=37464813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610084674XA Expired - Fee Related CN100444134C (zh) | 2005-05-31 | 2006-05-29 | 数据处理系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (3) | US7444494B2 (zh) |
CN (1) | CN100444134C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005538A (zh) * | 2014-04-17 | 2015-10-28 | Arm有限公司 | 许可对互连电路内的排序风险检测进行修复的装置和方法 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168639A1 (en) * | 2006-01-17 | 2007-07-19 | Mccalpin John D | Data processing system and method for selecting a scope of broadcast of an operation by reference to a translation table |
US7254678B2 (en) * | 2005-03-17 | 2007-08-07 | International Business Machines Corporation | Enhanced STCX design to improve subsequent load efficiency |
US7444494B2 (en) * | 2005-05-31 | 2008-10-28 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction |
US7716428B2 (en) * | 2006-02-28 | 2010-05-11 | International Business Machines Corporation | Data processing system, cache system and method for reducing imprecise invalid coherency states |
US7484042B2 (en) * | 2006-08-18 | 2009-01-27 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of a prefetch operation |
US7890704B2 (en) * | 2006-12-19 | 2011-02-15 | International Business Machines Corporation | Implementing an enhanced hover state with active prefetches |
US8127106B2 (en) * | 2008-04-18 | 2012-02-28 | International Business Machines Corporation | Access speculation predictor with predictions based on a domain indicator of a cache line |
US8122222B2 (en) * | 2008-04-18 | 2012-02-21 | International Business Machines Corporation | Access speculation predictor with predictions based on a scope predictor |
US8131974B2 (en) * | 2008-04-18 | 2012-03-06 | International Business Machines Corporation | Access speculation predictor implemented via idle command processing resources |
US8122223B2 (en) * | 2008-04-18 | 2012-02-21 | International Business Machines Corporation | Access speculation predictor with predictions based on memory region prior requestor tag information |
US8949545B2 (en) * | 2008-12-04 | 2015-02-03 | Freescale Semiconductor, Inc. | Memory interface device and methods thereof |
US20110145837A1 (en) * | 2009-12-14 | 2011-06-16 | Bower Kenneth S | Filtering Broadcast Recipients In A Multiprocessing Environment |
US8874853B2 (en) | 2010-06-04 | 2014-10-28 | International Business Machines Corporation | Local and global memory request predictor |
JP6213366B2 (ja) * | 2014-04-25 | 2017-10-18 | 富士通株式会社 | 演算処理装置とその制御方法 |
US10579527B2 (en) | 2018-01-17 | 2020-03-03 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US10387310B2 (en) | 2018-01-17 | 2019-08-20 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US10713169B2 (en) | 2018-01-17 | 2020-07-14 | International Business Machines Corporation | Remote node broadcast of requests in a multinode data processing system |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852716A (en) * | 1996-07-02 | 1998-12-22 | Sun Microsystems, Inc. | Split-SMP computer system with local domains and a top repeater that distinguishes local and global transactions |
US6606676B1 (en) | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
US6754782B2 (en) | 2001-06-21 | 2004-06-22 | International Business Machines Corporation | Decentralized global coherency management in a multi-node computer system |
US6785774B2 (en) | 2001-10-16 | 2004-08-31 | International Business Machines Corporation | High performance symmetric multiprocessing systems via super-coherent data mechanisms |
US7100001B2 (en) | 2002-01-24 | 2006-08-29 | Intel Corporation | Methods and apparatus for cache intervention |
US7096323B1 (en) | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
CN1445661A (zh) * | 2003-04-21 | 2003-10-01 | 杭州中天微系统有限公司 | 一种降低指令cache功耗的控制逻辑 |
GB2403560A (en) | 2003-07-02 | 2005-01-05 | Advanced Risc Mach Ltd | Memory bus within a coherent multi-processing system |
US7454578B2 (en) * | 2005-02-10 | 2008-11-18 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory |
US7536513B2 (en) | 2005-03-31 | 2009-05-19 | International Business Machines Corporation | Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state |
US7444494B2 (en) * | 2005-05-31 | 2008-10-28 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction |
-
2005
- 2005-05-31 US US11/140,821 patent/US7444494B2/en not_active Expired - Fee Related
-
2006
- 2006-05-29 CN CNB200610084674XA patent/CN100444134C/zh not_active Expired - Fee Related
-
2007
- 2007-09-28 US US11/863,979 patent/US20080016284A1/en not_active Abandoned
- 2007-12-17 US US11/957,996 patent/US20090006766A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005538A (zh) * | 2014-04-17 | 2015-10-28 | Arm有限公司 | 许可对互连电路内的排序风险检测进行修复的装置和方法 |
CN105005538B (zh) * | 2014-04-17 | 2019-09-13 | Arm 有限公司 | 许可对互连电路内的排序风险检测进行修复的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100444134C (zh) | 2008-12-17 |
US20090006766A1 (en) | 2009-01-01 |
US20080016284A1 (en) | 2008-01-17 |
US7444494B2 (en) | 2008-10-28 |
US20060271744A1 (en) | 2006-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1873628A (zh) | 数据处理系统和方法 | |
CN101030171A (zh) | 减少无效一致状态的数据处理系统、高速缓存系统和方法 | |
CN100428195C (zh) | 数据处理系统和方法 | |
CN100592269C (zh) | 用于预测性选择预取操作的范围的数据处理系统和方法 | |
CN1866222A (zh) | 用于初始化存储器块的处理器、数据处理系统和方法 | |
CN100520738C (zh) | 更新无效一致状态的方法、数据处理系统和高速缓存系统 | |
CN100495360C (zh) | 数据处理的单元、系统和方法 | |
US7389388B2 (en) | Data processing system and method for efficient communication utilizing an in coherency state | |
CN100570582C (zh) | 数据处理系统和方法 | |
CN101162442A (zh) | 支持共享全局一致性状态的处理器、数据处理系统和方法 | |
US20060179241A1 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation | |
US7475196B2 (en) | Processor, data processing system, and method for initializing a memory block in a data processing system having multiple coherency domains | |
CN1156771C (zh) | 用于在非均匀存储器存取计算机系统内提供逐出协议的方法和系统 | |
CN100465923C (zh) | 数据处理设备和方法 | |
CN1869957A (zh) | 数据处理系统中的数据处理方法和装置 | |
US7454578B2 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory | |
CN1869956A (zh) | 数据处理系统中的数据处理的方法和装置 | |
CN101005446A (zh) | 选择操作的广播范围的数据处理系统、方法和处理单元 | |
CN1869955A (zh) | 数据处理系统中的数据处理的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081217 |