CN100592269C - 用于预测性选择预取操作的范围的数据处理系统和方法 - Google Patents
用于预测性选择预取操作的范围的数据处理系统和方法 Download PDFInfo
- Publication number
- CN100592269C CN100592269C CN200710141853A CN200710141853A CN100592269C CN 100592269 C CN100592269 C CN 100592269C CN 200710141853 A CN200710141853 A CN 200710141853A CN 200710141853 A CN200710141853 A CN 200710141853A CN 100592269 C CN100592269 C CN 100592269C
- Authority
- CN
- China
- Prior art keywords
- cache
- coherency domains
- looking ahead
- scope
- prefetch operation
- 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.)
- Expired - Fee Related
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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
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)计算机系统包括全部耦合到系统互连的多个处理单元,其中,所述系统互连典型包括一个或更多地址、数据和控制总线。耦合到所述系统互连的是系统存储器,该系统存储器代表所述多处理器计算机系统中的最低层的易失性存储器,并且一般是可由所有处理单元进行读和写访问的。为减小对驻留在所述系统存储器中的指令和数据的访问等待时间,每个处理单元典型进一步由各自的多层高速缓存层级所支持,其中,所述高速缓存层级的低层可以被一个或更多处理器核心共享。
因为多个处理器核心可以请求对同一高速缓存行(cache line)的数据的写访问,以及因为被修改的高速缓存行不会立即与系统存储器同步,所以多处理器计算机系统的高速缓存层级典型实现了高速缓存一致性(coherency)协议,以确保各个处理器核心对系统存储器的内容的“视图(view)”间的至少最低层级的一致性。特别地,高速缓存一致性至少要求:在处理单元访问存储块的副本并且随后访问该存储块的已更新副本之后,该处理单元不能再次访问该存储块的旧的副本。
高速缓存一致性协议典型定义了关联于每个高速缓存层级的高速缓存行而存储的一组高速缓存状态,以及被用于在高速缓存层级之间传送高速缓存状态信息的一组一致性消息。在典型实现中,所述高速缓存状态信息采用已熟知的MESI(修改、独占、共享、无效)协议或其变型的形式,以及所述一致性消息指示存储器访问请求的请求者和/或接受者的高速缓存层级中的协议定义的一致性状态转换。
常规数据处理系统设计一般已假设维护高速缓存一致性要求遍及所述数据处理系统对所有操作的全局广播。即,所有操作必须被SMP计算机系统中的所有高速缓存层级接收。然而,本发明认识到,对操作的全局广播的要求造成对SMP计算机系统的可扩缩性的重大障碍,并且特别是随着系统的扩缩消耗越来越多的系统互连带宽。
发明内容
考虑前述内容,本发明提供了一种改进的高速缓存一致性数据处理系统、高速缓存系统和在高速缓存一致性数据处理系统中的数据处理方法。
在一实施例中,在数据处理系统的互连上发送的操作被允许具有可变的广播范围。即,一些操作可以被发送到所述数据处理系统中的所有或大部分处理单元(即较大广播范围),而其它操作可以被发送到更受限的一组处理单元(即较小广播范围)。预取预测器被维护,其指示对于在所述数据处理系统的互连上发送的一个或更多之前的预取操作的之前广播范围的历史。然后,随后的预取操作的广播范围通过参考该预取预测器来预测性选择。
在另外的实施例中,一种数据处理系统包括:至少第一和第二一致性域,所述至少第一和第二一致性域的每个包含至少一个处理单元;耦合所述第一和第二一致性域的互连结构;以及所述第一一致性域中的高速缓冲存储器。所述高速缓冲存储器包括数据阵列、所述数据阵列的内容的高速缓存目录以及包括预取预测器的高速缓存控制器。所述预取预测器确定对于具有第一目标地址的第一预取操作在所述互连结构上的广播的预测范围,所述确定基于具有不同的第二目标地址的之前的第二预取操作的范围。所述高速缓存控制器以所述预测范围在所述互连结构上发出所述第一预取操作。
在下面的详细书面描述中,本发明的所有目的、特征和优点将变得显而易见。
附图说明
被相信为本发明新颖特征的特性在权利要求中阐明。然而,通过参考下面对说明性实施例的详细描述并当结合附图阅读时,本发明以及优选的使用模式将被最好地理解,在附图中:
图1是根据本发明的示例性数据处理系统的高层框图;
图2是根据本发明的处理单元的更详细框图;
图3是图2中示出的L2高速缓存阵列和目录的更详细框图;
图4是图1的数据处理系统的系统互连上的示例性事务的时空图;
图5示出了根据本发明的优选实施例的域指示符;
图6是根据本发明的、高速缓冲存储器在数据处理系统中服务于处理器核心所接收的操作的示例性方法的高层逻辑流程图;
图7A是图2中所示的范围预测逻辑的一实施例的更详细框图;
图7B是图7A的预取预测器的更详细框图;
图8是根据本发明的范围预测的示例性过程的高层逻辑流程图;以及
图9是根据本发明的基于历史的范围预测的示例性过程的更详细逻辑流程图。
具体实施方式
I.示例性数据处理系统
现在参考附图并且特别参考图1,其示出了根据本发明的高速缓存一致对称多处理器(SMP)数据处理系统的示例性实施例的高层框图。如所示,数据处理系统100包括用于处理数据和指令的多个处理节点102a、102b。处理节点102a、102b被耦合到用于传送地址、数据和控制信息的系统互连110。系统互连110可以被实现为例如总线互连、交换互连或混合互连。
在所示实施例中,每个处理节点102被实现为包含四个处理单元104a-104d的多芯片模块(MCM),其中,所述处理单元的每个优选被实现为分别的集成电路。每个处理节点102中的所述处理单元104a-104d被局部互连114耦合以进行通信,其中,所述局部互连114像系统互连110一样可以用一个或更多总线和/或交换机来实现。
被耦合到每个局部互连114的设备不仅包括处理单元104,还包括一个或更多系统存储器108a-108d。驻留在系统存储器108中的数据和指令一般可以被数据处理系统100的任意处理节点102中的任意处理单元104中的处理器核心访问和修改。在本发明的可选实施例中,一个或更多系统存储器108可以被耦合到系统互连110而不是局部互连114。
本领域的技术人员将理解,SMP数据处理系统100可以包括许多附加的未示出的部件,例如互连桥、非易失性存储装置、用于到网络或附属设备的连接的端口等。因为所述附加部件对于本发明的理解不是必要的,所以其未在图1中被示出或在这里被进一步讨论。然而,应当理解,由本发明提供的增强可适用于多种体系结构的高速缓存一致数据处理系统,并且决不限于图1中示出的一般化数据处理系统体系结构。
现在参考图2,其示出了根据本发明的示例性处理单元104的更详细框图。在所示实施例中,每个处理单元104包括用于独立地处理指令和数据的两个处理器核心200a、200b。每个处理器核心200至少包括指令排序单元(ISU)208,所述指令排序单元用于预取和要求读取(demand fetching)指令,以及用于对指令排序以由一个或更多执行单元224执行。执行单元224优选包括加载存储单元(LSU)228,所述加载存储单元用于执行引用存储块的存储器访问指令,或者导致引用存储块的操作的生成。在优选实施例中,每个处理器核心200能够同时执行两个或更多硬件执行线程中的指令。每个处理器核心200优选支持多个并发预取流。
每个处理器核心200的操作由多层易失性存储器层级支持,其中,所述多层易失性存储器层级在其最低层具有共享系统存储器108a-108d,以及在其高层具有一个或更多层高速缓冲存储器。在所示实施例中,每个处理单元104包括集成存储器控制器(IMC)206,该集成存储器控制器响应于接收自处理器核心200a-200b的请求和由局部互连114上的监听器(snooper,S)222监听到的操作,控制对其处理节点102中的系统存储器108a-108d中的各个的读和写访问。IMC 206通过参考基地址寄存器(BAR)逻辑240确定其负责的地址。
在说明性实施例中,处理单元104的高速缓冲存储器层级包括每个处理器核心200中的通存(store-through)层一(L1)高速缓存226(其可以被分为独立的L1指令和数据高速缓存)以及被处理单元104中的所有处理器核心200a、200b共享的层二(L2)高速缓存230。L2高速缓存230包括L2阵列和目录234以及高速缓存控制器,其中,所述高速缓存控制器包括主控232和监听器236。主控232启动局部互连114和系统互连110上的事务,并且响应于接收自相关联的处理器核心200a-200b的存储器访问(和其它)请求而访问L2阵列和目录234。主控232包括:BAR寄存器252,其指示哪些地址驻留在其处理节点102中的系统存储器108中;以及范围预测逻辑250,其如下面进一步描述的可以被用于预测在互连结构上被发送的操作的范围,其中,所述互连结构包括局部互连114和系统互连110。监听器236监听局部互连114上的操作、提供合适的响应、并且实施所述操作要求的对L2阵列和目录234的任意访问。
尽管所示的高速缓存层级仅包括两层高速缓存,本领域的技术人员将理解,可选实施例可以包括附加层(L3、L4、L5等)的片上或片外直插式、后备或经受者(victim)高速缓存,其可以完全包含、部分包含或不包含上层高速缓存的内容。
每个处理单元104进一步包括响应逻辑210的实例,该实例实现了维护数据处理系统100中的高速缓存一致性的分布式一致性信令机制的一部分。另外,每个处理单元104包括互连逻辑212的实例,该实例用于选择性地转发其局部互连114与系统互连110之间的通信。最后,每个处理单元104包括支持例如I/O(输入/输出)设备216的一个或更多I/O设备的附接的集成I/O控制器214。I/O控制器214可以响应于I/O设备216的请求而发出对局部互连114和/或系统互连110的操作。
现在参考图3A,其示出了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优选包括指示希望的访问类型的事务类型和指示将被该请求访问的资源的资源标识符(例如实际地址)。通常的请求类型优选包括下面在表1中阐明的那些类型。
表1
请求 | 描述 |
READ | 出于查询目的请求存储块的镜像的 |
副本 | |
RWITM(带修改目的的读) | 以更新(修改)存储块为目的请求存储块的镜像的唯一副本;并且如果存在其它副本,则要求销毁其它副本 |
DCLAIM(数据声明) | 以更新(修改)存储块为目的请求将存储块的现有仅用于查询的副本提升为唯一副本的权限;并且如果存在其它副本,则要求销毁其它副本 |
DCBZ(数据高速缓存块归零) | 请求在不考虑存储块当前状态的情况下创建存储块的新的唯一高速缓存副本并随后修改其内容的权限;并且如果存在其它副本,则要求销毁其它副本 |
CASTOUT(逐出) | 为较高层副本的销毁做准备,将存储块的镜像从存储器的较高层复制到存储器的较低层 |
WRITE(写) | 为较高层副本的销毁做准备,请求在不考虑存储块当前状态的情况下创建存储块的新的唯一副本并立即将该存储块的镜像从较高层存储器复制到较低层存储器的权限 |
PARTIAL WRITE(部分写) | 为较高层副本的销毁做准备,请求在不考虑存储块当前状态的情况下创建部分存储块的新的唯一副本并立即将该部分存储块的镜像从较高层存储器复制到较低层存储器的权限 |
请求402被L2高速缓存230的监听器236以及存储器控制器206的监听器222接收(图2)。一般地,在有一些例外的情况下,与请求402的主控232在同一L2高速缓存230中的监听器236并不监听请求402(即,一般不存在自监听),因为仅在请求402不能由处理单元104内部进行服务的情况下,请求402才在局部互连114和/或系统互连110上被发送。接收请求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向主控232和监听器222、236提供组合响应410,以指示对请求402的系统级响应(例如成功、失败、重试等)。如果CR 410指示请求402的成功,则CR 410可以指示例如所请求的存储块的数据源、所请求的存储块将被主控232进行高速缓存的高速缓存状态、以及使一个或更多L2高速缓存230中的所请求的存储块无效的“清除”操作是否被要求。
响应于组合响应410的接收,主控232和监听器222、236中的一个或更多典型实施一个或更多操作以服务于请求402。这些操作可以包括向主控232提供数据、使其无效或更新一个或更多L2高速缓存230中被高速缓存的数据的一致性状态、实施逐出(castout)操作、向系统存储器108写回数据等。如果被请求402要求,则在组合响应410被响应逻辑210生成之前或之后,所请求的或目标存储块可以被发送到主控232或从主控232发送。
在下面的描述中,监听器222、236对请求的部分响应和由该监听器响应于该请求实施的操作和/或其组合响应将参考该监听器是否是一致性最高点(HPC)、一致性最低点(LPC)或与该请求所指定的请求地址无关地来描述。LPC这里被定义为充当存储块的储存库的存储器设备或I/O设备。当所述存储块的HPC不出现时,所述LPC保有该存储块的真实镜像,并且具有准许或拒绝对于生成该存储块的额外高速缓存副本的请求的权限。对于图1和2中的数据处理系统实施例中的典型请求,所述LPC将是用于保有所引用存储块的系统存储器108的存储器控制器206。HPC这里被定义为对所述存储块(其可以或可以不与在LPC的对应存储块一致)的真实镜像进行高速缓存的唯一标识的设备,并且具有准许或拒绝对于修改所述存储块的请求的权限。在描述上,所述HPC也可以响应于不修改所述存储块的操作而向请求者提供所述存储块的副本。由此,对于图1和2中的数据处理系统实施例中的典型请求,所述HPC(如果存在的话)将是L2高速缓存230。尽管其它指示符可以被用于指定用于存储块的HPC,但本发明的优选实施例利用L2高速缓存230的L2高速缓存目录302中的选定高速缓存一致性状态来指定用于存储块的HPC(如果存在的话),如下面参考表II进一步描述的那样。
仍然参考图4,用于请求402中所引用的存储块的HPC(如果存在的话)、或当HPC不出现时该存储块的LPC优选具有在保护窗口404a期间响应于请求402保护存储块的所有权的转移的责任。在图4中所示的示例性场景中,作为用于由请求402的请求地址指定的存储块的HPC的监听器236在保护窗口404a期间保护所请求的存储块的所有权向主控232的转移,其中,所述保护窗口404a从监听器236确定其部分响应406的时刻一直延伸到监听器236接收到组合响应410。在保护窗口404a期间,监听器236通过向指定同一请求地址的其它请求提供部分响应406来保护所有权的转移,以防止在所有权已被成功转移到主控232之前其它主控获得所有权。主控232同样启动保护窗口404b,以保护其在组合响应410的接收之后对请求402中所请求的存储块的所有权。
因为监听器222、236都具有用于处理上述CPU和I/O请求的有限资源,所以几个不同层级的部分响应和对应的CR是可能的。例如,如果负责所请求存储块的存储器控制器206中的监听器222具有可用于处理请求的队列,则该监听器222可以用指示其可以充当用于该请求的LPC的部分响应来进行响应。另一方面,如果该监听器222不具有任何可用于处理该请求的队列,则该监听器222可以用指示其是用于该存储块的LPC但当前不能服务于该请求的部分响应来进行响应。
类似地,L2高速缓存230中的监听器236可以要求监听逻辑的可用实例并访问L2高速缓存目录302以处理请求。对这些资源的任一个(或同时两个)的访问的缺失导致信号通知由于所要求的资源的缺失而当前不能服务于该请求的部分响应(和对应的CR)。
此后,如果被要求,则提供指示该监听器具有当前服务于请求所需的所有可用内部资源的部分响应的监听器222、236被宣布“肯定(affirm)”所述请求。对于监听器236,肯定所监听操作的部分响应优选在该监听器236指示所请求的或目标存储块的高速缓存状态。提供指示该监听器236不具有当前服务于所述请求所需的所有可用内部资源的部分响应的监听器222、236可以被宣布“可能隐藏”或“不能”服务于所述请求。所述监听器236“可能隐藏”或“不能”服务于请求是因为,所述监听器236由于缺少监听逻辑的可用实例或对L2高速缓存目录302的当前访问而不能在上面定义的意义上“肯定”所述请求,并且从其它主控232和监听器222、236的角度来看具有未知的一致性状态。
III.数据递送域
常规的基于广播的数据处理系统通过广播通信处理高速缓存一致性和数据递送,其中,所述广播通信在常规系统中在系统互连上被发送到该系统中的至少所有存储器控制器和高速缓存层级。与可选体系结构和类似规模的系统相比,基于广播的系统倾向于提供降低的访问等待时间和更好的数据处理以及对共享存储块的一致性管理。
随着基于广播的系统在规模上缩放,所述系统互连上的流量倍增,其意味着系统成本随着系统缩放而陡增,因为需要更多带宽用于系统互连上的通信。即,具有m个处理器核心、每个处理器核心有n个事务的平均流量的系统的流量为m×n,其意味着基于广播的系统中的流量的缩放是倍增而非累加性的。在超过对充分大的互连带宽的需求时,系统规模的增长具有增加某些访问等待时间的副作用。例如,在最坏情况下,读数据的访问等待时间受到以共享一致性状态保有所请求存储块的距离最远的低层高速缓存的组合响应等待时间的限制,其中,所请求的数据可以源于所述请求的存储块。
为了减小系统互连带宽需求和访问等待时间同时仍然保留基于广播的系统的优点,在整个数据处理系统100中分布的多个L2高速缓存230被允许以“特殊”共享一致性状态保有同一存储块的副本,其中,所述“特殊”共享一致性状态允许这些高速缓存使用高速缓存到高速缓存的干预将所述存储块提供给进行请求的L2高速缓存230。为了在例如数据处理系统100的SMP数据处理系统中实现用于共享存储块的多个并发和分布式源,两个问题必须被解决。第一,管理以上面提到的“特殊”共享一致性状态的存储块的副本的创建的某个规则必须被实现。第二,必须存在这样的规则,其管理哪个进行监听的L2高速缓存230(如果存在的话)例如响应于总线读操作或总线RWITM操作将共享存储块提供给进行请求的L2高速缓存230。
根据本发明,所述两个问题都通过数据提供(sourcing)域的实现来解决。特别地,SMP数据处理系统中的每个域(其中域被定义为包括响应于数据请求而参与的一个或更多低层(例如L2)高速缓存)被允许仅包括一个高速缓存层级,该高速缓存层级同时保有所述“特殊”共享一致性状态的特定存储块。该高速缓存层级如果在总线读类型(例如读或RWITM)操作被同一域中的进行请求的低层高速缓存启动时出现,则负责向所述进行请求的低层高速缓存提供所请求的存储块。尽管许多不同的域大小可以被定义,但在图1的数据处理系统100中,如果每个处理节点102(即MCM)被认为是数据提供域将会是便利的。所述“特殊”共享状态(即Sr)的例子在下面参考表II来描述。
IV.一致性域
尽管如上面所描述的数据递送域的实现改进了数据访问等待时间,但该增强不解决随着系统规模增长的流量的m×n倍增。为了减小流量同时仍然保持基于广播的一致性机制,本发明的优选实施例另外实现了一致性域,所述一致性域如此前描述的数据递送域一样可以方便地(但不必非要)用形成独立一致性域的每个处理节点102来实现。数据递送域和一致性域可以但不必非要是共同延伸的,并且出于说明目的,数据处理系统100的示例性操作此后将被假设为具有由处理节点102定义的边界。
一致性域的实现通过在其中请求可以用少于所有一致性域的参与来服务的情况下限制在系统互连110上的域间广播通信而减少系统流量。例如,如果处理节点102a的处理单元104a具有要发出的总线读操作,则处理单元104a可以选择首先将该总线读操作广播到其自己的一致性域(例如处理节点102a)中的所有参与者,但不广播到其它一致性域(例如处理节点102b)中的参与者。仅被发送到作为该操作的主控的同一一致性域中的那些参与者的广播操作这里被定义为“局部操作”。如果所述局部总线读操作可以在处理单元104a的一致性域中被服务,则没有任何另外的总线读操作的广播被实施。然而,如果对所述局部总线读操作的部分响应和组合响应指示该总线读操作不能单独在处理节点102a的一致性域中被服务,则广播的范围可以被扩展为除所述局部一致性域外还包括一个或更多另外的一致性域。
在基本实现中,两个广播范围可以被使用:仅包括所述局部一致性域的“局部”范围和包括所述SMP数据处理系统中的所有其它一致性域的“全局”范围。由此,被发送到SMP数据处理系统中的所有一致性域的操作这里被定义为“全局操作”。很重要地,不论是局部操作还是更广阔范围的操作(例如全局操作)被用于服务于操作,高速缓存一致性跨所述SMP数据处理系统中的所有一致性域被维持。局部和全局操作的例子在美国专利申请序列号11/055,697中详细描述,这里通过参考将其完整引入。
在优选实施例中,操作的范围在总线操作中由局部/全局范围指示符(信号)指示,其中,所述局部/全局范围指示符在一实施例中可以包括1位标记。处理单元104中的转发逻辑212优选基于经由局部互连114接收的操作中的局部/全局范围指示符(信号)的设置确定是否将该操作转发到系统互连110上。
V.域指示符
为限制不需要的局部操作的发布并且由此减小操作等待时间和保存局部互连上的额外带宽,本发明优选实现对于每个存储块的域指示符,其指示相关联存储块的副本是否在局部一致性域之外被高速缓存。例如,图5示出了根据本发明的域指示符的第一示例性实现。如图5中所示,可以用动态随机存取存储器(DRAM)实现的系统存储器108存储了多个存储块500。系统存储器108关联于每个存储块500存储相关联的错误校正码(ECC)502,其中,该关联错误校正码被用于校正存储块500和域指示符504中的错误(如果有的话)。尽管在本发明的一些实施例中,域指示符504可以标识特定一致性域(即指定一致性域或节点ID),但下文中假设域指示符504为1位指示符,其中,如果相关联存储块500根本上仅在与充当该存储块500的LPC的存储器控制器206相同的一致性域中被高速缓存,则该1位指示符则被设置(例如被设置为“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状态的高速缓存目录条目潜在地承载了有用信息,所以在至少一些实现中相比处在I状态的条目优先保留处在Ig状态的条目(例如,通过修改最近最少使用(LRU)算法,其中,该算法被用于选择用于替代的经受者高速缓存条目)是理想的。由于Ig目录条目被保留在高速缓存中,对于一些Ig条目来说可能随时间变得“陈旧”,其在于,其独占访问请求导致Ig状态的形成的高速缓存可以在不通知以Ig状态保有该存储块的地址标志的高速缓存的情况下将其存储块副本解除分配或写回。在所述情况下,错误指示出全局操作而不是局部操作应当被发出的“陈旧”Ig状态将不会导致任何一致性错误。但将仅导致一些操作作为全局操作被发出,其中,所述操作否则可以利用局部操作来进行服务。所述低效的发生将被限于“陈旧”Ig高速缓存条目的最终替代和域指示擦除期间,如下面进一步描述的那样。
一些规则管理Ig高速缓存条目的选择和替代。首先,如果高速缓存选择Ig条目作为用于替代的经受者,则该Ig条目的逐出被实施(与当I条目被选择时的情况不同)。第二,如果导致存储块被加载到高速缓存中的请求偶然遭遇该同一高速缓存中的Ig高速缓存条目,则该高速缓存将该Ig遭遇视作高速缓存遗漏,并且以该Ig条目作为被选择的经受者实施逐出操作。该高速缓存由此避免了在高速缓存目录中放置同一地址标志的两个副本。第三,Ig状态的逐出优选作为局部操作被实施,或者如果其作为全局操作被实施,则被非局部一致性域的存储器控制器忽略。如果Ig条目被允许在与存储块的LPC不在同一一致性域中的高速缓存中形成,则不需要对该LPC中的域指示符进行任何更新。第四,该Ig状态的逐出优选作为无数据的仅地址操作被实施,其中,所述域指示符被写回到LPC(如果其在实施该逐出的高速缓存的局部)。
根据本发明的Ig状态的实现改进了通信效率,其是通过即使当一致性域中的存储块的任何有效副本均没有被高速缓存在该一致性域中时仍维持该一致性域中的存储块的已高速缓存的域指示符。于是,存储块的HPC可以在不重试该请求和实施将所请求的存储块推入LPC的情况下服务于来自远程一致性域的独占访问请求(例如总线RWITM操作)。
B.In状态
In状态这里被定义为这样的高速缓存一致性状态,其指示:(1)所述高速缓存阵列中的相关联的存储块无效;(2)所述高速缓存目录中的地址标志有效;以及(3)由该地址标志标识的存储块的副本可能(如果根本)仅被该局部一致性域中的一个或更多其它高速缓存层级所高速缓存。所述In指示优选是不精确的,意味着其在不违背一致性的情况下可以是不正确的。所述In状态在较低层高速缓存中响应于该高速缓存对独占访问请求(例如总线RWITM操作)进行响应将所请求的存储块提供给同一一致性域中的请求者而被形成。
因为包括In状态的高速缓存目录条目潜在地承载了有用信息,所以在至少一些实现中相比处在I状态的条目优先保留处在In状态的条目(例如,通过修改最近最少使用(LRU)算法,其中,该算法被用于选择用于替代的经受者高速缓存条目)是理想的。由于In目录条目被保留在高速缓存中,对于一些In条目来说可能随时间变得“陈旧”,其在于,其独占访问请求导致所述In状态的形成的高速缓存可以在不通知以In状态保有该存储块的地址标志的高速缓存的情况下将该存储块的共享副本提供给远程一致性域。在所述情况下,错误指示出局部操作而不是全局操作应当被发出的“陈旧”In状态不会导致任何一致性错误,但将仅导致一些操作错误地作为局部操作而不是作为全局操作被首先发出。所述低效的发生将被限于“陈旧”In高速缓存条目的最终替代期间。在优选实施例中,所述In一致性状态的高速缓存条目不会被逐出,而是仅仅被替代。由此,与Ig高速缓存条目不同,In高速缓存条目不被用于更新系统存储器108中的域指示符504。
根据本发明的In状态的实现改进了通信效率,其是通过维护存储块的已高速缓存的域指示符,其中,所述已高速缓存的域指示符可以被主控参考以便选择其操作中的一个的局部范围。于是,其它一致性域中的局部互连114和系统互连110上的带宽被节省。
C.Sr状态
在下面描述的操作中,能够确定保有了处在Sr一致性状态的共享的所请求存储块的低层高速缓存是否与进行请求的主控位于同一域中是有益的。在一实施例中,与进行请求的主控在同一域中出现“局部”Sr监听器可以由位于低层高速缓存的监听器的响应行为来指示,其中,所述低层高速缓存保有了处在Sr一致性状态下的所请求的存储块。例如,假设每个总线操作包括指示该总线操作是否已穿越域边界(例如主控的明确域标识符或单一局部/非局部范围位)的范围指示符,则保有处在Sr一致性状态下的共享存储块的低层高速缓存可以仅对同一数据提供域中的主控的请求提供肯定该请求的处在Sr状态下的部分响应,以及提供对于所有其它请求指示S状态的部分响应。在所述实施例中,所述响应行为可以如表III中所示被概括,其中,撇(’)符号被用于指定可以不同于存储块的实际高速缓存状态的部分响应。
表III
读类型请求的主控的域 | 目录中的高速缓存状态 | 部分响应(足够的资源可用) | 部分响应(足够的资源不可用) |
“局部”(即在同一域中) | Sr | Sr’肯定 | Sr’可能隐藏 |
“远程”(即不在同一域中) | Sr | Sr’肯定 | Sr’可能隐藏 |
“局部”(即在同一域中) | Sr | Sr’肯定 | Sr’可能隐藏 |
“远程”(即不在同一域中) | Sr | Sr’肯定 | Sr’可能隐藏 |
假设上面在表III中阐明的响应行为,则共享数据的平均数据等待时间可以通过增加分布在可充当数据源的SMP数据处理系统中的存储块的共享副本的数量而被大大减小。
VII.示例性操作
首先参考图6,其示出了根据本发明在数据处理系统中服务于处理器(CPU)请求的示例性方法的高层逻辑流程图。如所示,所述过程在方框600处开始,该方框代表L2高速缓存230中的主控232从其处理单元104中的相关联处理器核心200接收CPU请求(例如CPU数据加载请求、CPU数据存储请求、CPU加载和保存请求、CPU指令加载请求、CPU预取请求等)。响应于该CPU请求的接收,主控232在方框602确定该CPU请求中由目标地址标识的目标存储块是否以一致性状态被保有在L2高速缓存目录302中,其中,所述一致性状态允许该CPU请求在不用在互连结构上发出总线操作的情况下被服务。例如,如果L2高速缓存目录302指示目标存储块的一致性状态为M、Me、Tx(例如T、Tn、Te或Ten)、Sr或S状态中的任一个,则CPU指令读取或预取请求或数据加载请求可以在不用在互连结构上发出总线操作的情况下被服务。如果L2高速缓存目录302指示目标存储块的一致性状态为M或Me状态中的一个,则CPU数据存储请求可以在不用在互连结构上发出总线操作的情况下被服务。如果主控232在方框602确定CPU请求可以在不用在互连结构上发出总线操作的情况下被服务,则主控232访问L2高速缓存阵列300以服务于该CPU请求,如方框624处所示。例如,主控232可以响应于CPU数据加载请求或指令读取请求获得所请求的存储块并将该所请求的存储块提供给进行请求的处理器核心200,或者可以将CPU数据存储请求中提供的数据存储在L2高速缓存阵列300中。在方框624之后,所述过程在方框626终止。
返回方框602,如果目标存储块未以一致性状态被保有在L2目录302中,其中,所述一致性状态允许该CPU请求在不用在互连结构上发出总线操作的情况下被服务,则还在方框604处确定是否需要对现有高速缓存行的逐出以在L2高速缓存230中容纳该目标存储块。在一实施例中,如果响应于该CPU请求,存储块被选择从进行请求的处理器的L2高速缓存230中驱逐,并在L2目录302中被标记为处于M、T、Te、Tn或Ig一致性状态中的任一个状态,则在方框604处逐出操作被要求。响应于在方框604处逐出被要求的确定,高速缓存逐出操作被实施,如在方框606处所指示。同时,主控232在方框610确定为服务于该CPU请求将被发出的总线操作的范围。例如,在一实施例中,主控232在方框610确定要广播作为局部操作还是作为全局操作的总线操作。
在其中每个总线操作最初作为局部操作被发出并且仅一次作为局部操作被发出的第一实施例中,方框610处所示的确定可以仅仅代表由主控作出的该总线操作是否之前已作为局部总线操作被发出的确定。在其中局部总线操作可以被重试的第二可选实施例中,方框610处所示的确定可以代表由主控作出的该总线操作是否之前已被发出多于阈值次数的确定。在第三可选实施例中,在方框610处作出的所述确定可以基于由主控232作出的局部总线操作是否可能在不用与其它一致性域中的处理节点通信的情况下成功地解决目标存储块的一致性的预测。该第三可选实施例的示例性实现在下面参考图7A-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的确定,其中,所述“重试全局”CR明确地指示:一致性协议委托该局部一致性域之外的一个或更多处理节点的参与,以及因此该总线操作应当作为全局总线操作被重新发出。如果是这样,则所述过程进行到方框620,该方框在下面描述。另一方面,如果所述CR是没有明确地指示该总线操作不能在所述局部一致性域中被服务的“重试”CR,则所述过程从方框616返回到方框610,其中,该方框610示出主控232再次确定是否发出局部总线操作以服务于该CPU请求。在此情况下,主控232在所述确定中可以利用由所述CR提供的任意附加信息。在方框610之后,所述过程或者进行到上面描述的方框612,或者进行到方框620。
方框620示出主控230向数据处理系统中的所有处理节点102发出全局总线操作以服务于该CPU请求。如果该全局总线读操作的CR在方框622没有指示“成功”,则主控232在方框620重新发出该全局总线操作,直到指示“成功”的CR被接收。如果该全局总线读操作的CR指示“成功”,则所述过程进行到已描述过的方框623和后续的方框。
由此,假设同一一致性域中的过程和其数据之间的密切关系(affinity),则CPU请求可以通过利用限于进行请求的主控的一致性域的范围中或小于整个全局范围的其它受限范围的广播通信而被频繁服务。如此前所描述的数据递送域和一致性域的组合由此不仅改进了数据递送等待时间,而且还通过限制广播通信的范围减少了系统互连(和其它局部互连)上的流量。
VIII.范围预测
现在参考图7A,其示出了根据本发明的一实施例的、L2高速缓存230的主控232中的范围预测逻辑250的示例性实施例的框图表示。如上面所指出的,范围预测逻辑250可以被用于实施在图6的方框610、614和616处示出的范围选择。
在优选实施例中,范围预测逻辑250包括未示出的用于生成广播总线操作的范围的静态预测的逻辑。在一实施例中,范围预测逻辑250基于将被发出的总线操作(例如读、RWITM、DClaim、DCBZ、写、部分写、预取等)的事务类型(TTYPE)和局部L2高速缓存目录302中该总线操作的目标存储块的当前一致性状态而生成所述静态预测。
如图7A中进一步示出的,范围预测逻辑250可以有利地包括基于历史的预测逻辑700,该预测逻辑700基于之前的总线操作的实际范围生成对总线操作的范围预测。因为不同类的总线操作倾向于展现不同的行为,所以基于历史的预测逻辑700独立地记录不同类的总线操作的历史信息。在一实施例中,基于历史的预测逻辑包括用于预测预取操作的范围的预取预测器740和预测器阵列702,其中,预测器阵列702包含用于预测其它类操作的范围的各个预测器704a-704n。一般地,如果所述操作类别被合适地构造,则每个类别中的总线操作的过往行为将充当同一类别中的将来总线操作的范围的准确预测器。
在一实施例中,预测器阵列702中的每个预测器704被实现为计数器。假设良好的软件密切关系,则每个操作类别中的大多数总线操作应该能够仅利用局部总线操作来被服务。相应地,在一实施例中,每个计数器704被初始化为代表全局操作范围的初始值,并被更新逻辑714对于相关联类别中的每个连续总线操作进行更新,其中,所述相关联类别中的每个连续总线操作在局部一致性域中被整体进行服务直到达到域值(例如3),并且此后所述每个计数器704指示出对相关联类别中的总线操作的局部操作范围,直到该相关联类别中的总线操作由局部处理节点102外部的参与者进行服务。在该情况下,预测器704被更新逻辑714复位为其初始值。由此,在该实施例中,预测器704缓慢地饱和于(saturate)对总线操作的局部范围的预测,而迅速反应于全局总线操作的偶尔出现。在其它实施例中,预测器704当然可以仅仅响应于全局总线操作递减,从而预测器704以相同速率饱和于全局和局部范围预测。
尽管良好的软件密切关系是典型的,但在一些情况下,特定存储块或存储页面可以展示较弱的密切关系,并且由此要求大部分的全局总线操作。相应地,基于历史的预测逻辑700可以可选地包括模式字段708,该字段可以由硬件(例如主控232)或软件(例如系统固件)设置为使得预测器704a-704n中的一个或更多以反向偏置进行工作或被解释为具有反向偏置。通过反向偏置,预测器704的初始值代表局部操作范围的预测,该预测器704当在局部一致性域中解决了域值数量的操作(例如3)之后饱和于全局操作范围的指示,并且当相关联类别中的操作在该局部一致性域中被服务时,该预测器704被更新逻辑714复位为对局部范围的预测。
如将理解的,对应于预测器阵列702的预测器704a-704n的操作类别可以使用大量准则集合中的任一个来构造。在一实施例中,这些准则形成一组读输入720和一组更新输入730,其包括线程标识符(TID)、总线操作的事务类型(TTYPE)(例如读、RWITM、DClaim、DCBZ、写、部分写等)、指示目标存储块的内容是指令还是数据的指令/数据(I/D)指示、指示所请求的数据访问是否与原子存储器更新相关(例如,所述CPU请求是否通过源处理器核心200执行加载和保留或条件存储指令而触发)的原子指示、以及LPC指示。
优选作为CPU请求的一部分或结合CPU请求从处理器核心200接收的TID唯一地标识发出将被服务的CPU请求的处理器线程。在其中多个处理器核心200共享一个L2高速缓存230的实施例中,所述TID优选包括处理器核心标识符,使得不同处理器核心200的线程可以被区别开。例如,对于包括两个处理器核心200的处理单元104的实施例,其中,所述两个处理器核心200的每个支持两个同时的硬件线程,所述TID可以用2个位来实现:1位用于标识源处理器核心200,以及1位用于标识该处理器核心200的哪个线程发出了该CPU请求。
所述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字段的索引的二进制扩展被构造。
所述TTPYE_group字段标识总线操作所落在的特定一组TTYPE。在一实施例中,总线操作的大量TTYPE由少量的TTYPE_group代表。所述TTYPE_group可以不仅基于总线操作TTYPE而且还基于例如I/D和原子指示的其它信息被构造。例如,在一实施例中,各种可能的总线操作由四种TTYPE_group代表一一指令读取、数据读取、加载和保留、以及存储,其中,所述TTYPE_group可以有利地被编码为2位的TTYPE_group字段。
如图7A中所示,基于历史的预测逻辑700包括用于生成读和更新索引的索引生成逻辑712,其中,所述读和更新索引被用于选择性地访问预测器阵列702中的对应于特定操作类别的预测器704。在实现了上面定义的四种TTYPE_group的实施例中,索引生成逻辑712根据下面的表IV(短划线(‘-’)代表“不关心”)从总线操作TTYPE以及I/D和原子指示生成读或更新索引的2位TTYPE_group字段。索引生成逻辑712然后通过用TID和LPC指示连接近所述TTYPE_group字段形成完整的索引。
表IV
TTYPE | 1/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可以进一步被实现为:当所述主导位独立于其它索引位的值被声明(assert)时,访问对应的计数器704。所述实现在其中特定类别准则比起其它索引位可能对实际范围结果更有决定性的情况下是有利的和理想的。
图7A进一步示出基于历史的预测逻辑700被耦合为从其相关联的处理器核心200接收预取流标识符(SID)。
现在参考图7B,其是图7A的预取预测器740的示例性实施例的更详细框图。在该示例性实施例中,预取预测器740被实现为M位阵列742a-742m,其中,每一位742唯一地对应于由相关联的处理器核心200支持的特定预取流。如所示,每个预取流由各自的预取流标识符(SID)标识,例如SID0、SID1、…、SIDM等,其被接收自具有预取请求地址的处理器核心200,如图7A中所示。在其中处理单元104具有共享L2高速缓存230的两个处理器核心200并且每个处理器核心200支持16个并发预取流的所示实施例中,所述SID可以用5位来实现。
在优选实施例中,预取预测器740中的每个位742反映被用于满足相关联的预取流中的紧接着的前一CPU预取请求的最终范围。由此,例如,如果所述紧接着的前一CPU预取请求通过全局范围的总线预取操作被服务,则位742被设为“1”,以及如果所述紧接着的前一CPU预取请求通过局部范围的总线预取操作被服务,则位742被复位为“0”。如图6中指示的,如果相关联的预取流中的CPU预取请求可以在不发出总线预取操作的情况下从L2高速缓存阵列300被服务,则不用对位742进行任何改变。
利用位742,预取预测器740预测随后的总线预取操作的范围。因为预取请求通常展现出顺序的引用模式(即,或者升序或者降序的高速缓存行地址),所以将给定预取流中的前一总线操作的范围充当下一总线预取操作的范围的非常高概率的指示符,其中,所述下一总线预取操作将被要求获取该预取流中的下一高速缓存行。
现在参考图8,其示出了根据本发明的优选实施例的由范围预测逻辑250实施的范围预测的示例性方法。如所示,该过程在方框800处开始,其例如响应于范围预测逻辑250在图6的方框610处对将被发出的总线操作的TTYPE的接收、L2高速缓存目录302中该总线操作的目标地址的局部一致性状态、一组读输入720、以及如果是预取操作时的预取流ID。该过程然后进行到方框801,该方框示出范围预测逻辑通过参考TTYPE确定将被主控232发出的总线操作是否是预取总线操作。如果不是,则该过程进行到方框802,该方框在下面描述。如果是,则该过程进行到方框803,该方框示出范围预测逻辑250通过参考预取预测器740确定该总线预取操作的范围。即,范围预测逻辑250访问关联于所指示的预取SID的特定位742以确定对所述预取总线操作预测局部(“0”)还是全局(“1”)范围。在方框803之后,该过程进行到方框824,该方框示出,如果预取预测器740指示局部范围则范围预测逻辑250提供局部范围预测(方框822),以及如果预取预测器740指示全局范围则提供全局范围预测(方框814)。
现在参考方框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处所示。如由判断框824所示,在所述情况下,如果基于历史的预测逻辑700指示局部范围则范围预测逻辑250提供局部范围预测(方框822),以及如果基于历史的预测逻辑700指示全局范围则提供全局范围预测(方框814)。
现在参考图9,其示出了根据本发明的基于历史的范围预测的示例性过程的更详细逻辑流程图。在图7A的实施例中,所示的过程由基于历史的预测逻辑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进行迭代,直到一组更新输入730从主控232被接收到,其中,所述更新输入描述这样的总线操作,对于该总线操作,指示“成功”的组合响应已在局部互连114上被接收。(主控232维护每个总线操作的状态直到其成功完成。)响应于所述一组更新输入730的接收,基于历史的预测逻辑700通过参考TTYPE确定该总线操作是否是总线预取操作(方框921)。如果不是,则该过程进行到方框922,该方框在下面描述。如果是这样,则如果必要,基于历史的预测逻辑700更新预取预测器740的适当位742。如上面所指出的,因为预取操作典型展现出顺序的引用模式,所以所述更新实际上是稀少的。在方框923之后,该过程返回方框920。
现在参考方框922,如果基于历史的预测逻辑700在方框921确定所完成的总线操作不是总线预取操作,则索引生成逻辑712对于已接收组合响应的总线操作生成更新索引。接下来,如在方框924处所示,更新逻辑714利用由于该总线操作被接收的组合响应生成对于预测器704的更新,其中,该更新响应于从索引生成逻辑712接收到更新索引被应用于由解码器706选择的预测器704。特别地,如果“成功”CR指示该总线操作被局部一致性域中的监听器122、236服务,则更新逻辑714输出计数器递增信号。如果“成功”CR指示该总线操作被局部一致性域之外的监听器122、236服务,则更新逻辑714输出计数器复位信号。如果模式字段708指示该更新信号将被应用于的计数器704以反向偏置进行工作,则使得对这些更新信号的解释被反向。在方框924之后,该过程返回方框920。
现在参考方框930,基于历史的预测逻辑700在方框930进行迭代,直到对模式字段930的更新被接收到。响应于模式字段708的更新的接收,基于历史的预测逻辑700更新模式字段708以正确反映哪些预测器704正以正向偏置进行工作以及哪些预测器正以反向偏置进行工作,如在方框902处所指示的。另外,被对模式字段704的更新影响的预测器704在方框904被初始化。此后,该过程返回方框930。
如已描述的,本发明提供一种用于选择或预测在数据处理系统的互连上发送的广播操作的范围的改进的方法和系统。根据本发明,至少一些广播操作的范围通过参考之前的成功广播操作的实际范围被预测。基于历史的预测可以通过对不同类别操作的操作范围的独立的历史指示进行维护而被增强。
尽管本发明已如参考优选实施例描述的那样被特别示出,但本领域的技术人员将理解,在不脱离本发明的精神和范围的情况下,在形式和细节上可以作出各种改变。
Claims (13)
1.一种用于数据处理系统的高速缓冲存储器,所述数据处理系统包括互连结构以及至少第一和第二一致性域,所述至少第一和第二一致性域的每个包含至少一个处理单元,所述高速缓冲存储器包括:
数据阵列;
所述数据阵列的内容的高速缓存目录;以及
包括预取预测器的高速缓存控制器,所述预取预测器确定对于具有第一目标地址的第一预取操作在所述互连结构上的广播的预测范围,所述确定基于具有不同的第二目标地址的之前的第二预取操作的范围,其中,所述高速缓存控制器以所述预测范围在所述互连结构上发出所述第一预取操作;
且其中,所述高速缓冲存储器属于所述第一一致性域;以及所述预取预测器响应于所述之前的第二预取操作被所述第二一致性域中的存储器所服务而选择包括所述第一和第二一致性域的第一广播范围,以及响应于所述之前的第二预取操作被所述第二一致性域之外的存储器所服务而选择包括所述第一一致性域并且不包括所述第二一致性域的第二广播范围。
2.根据权利要求1所述的高速缓冲存储器,其中,所述高速缓存控制器基于所述数据处理系统中服务于所述第一预取操作的存储器的位置更新所述预取预测器。
3.根据权利要求1所述的高速缓冲存储器,其中:
所述高速缓存控制器以预取请求接收多个预取流标识符中的一个;以及
所述预取预测器对于所述多个预取流标识符的每个维护各自的范围指示符。
4.根据权利要求3所述的高速缓冲存储器,其中,每个各自的范围指示符是单一位指示符。
5.一种处理单元,包括:
根据权利要求1的高速缓冲存储器;以及
耦合到所述高速缓冲存储器的至少一个处理器核心。
6.一种数据处理系统,其包括:
至少第一和第二一致性域,所述至少第一和第二一致性域的每个包含至少一个处理单元;
耦合所述第一和第二一致性域的互连结构;以及
所述第一一致性域中的高速缓冲存储器,所述高速缓冲存储器包括:
数据阵列;
所述数据阵列的内容的高速缓存目录;以及
包括预取预测器的高速缓存控制器,所述预取预测器确定对于具有第一目标地址的第一预取操作在所述互连结构上的广播的预测范围,所述确定基于具有不同的第二目标地址的之前的第二预取操作的范围,其中,所述高速缓存控制器以所述预测范围在所述互连结构上发出所述第一预取操作,且其中所述预取预测器响应于所述之前的第二预取操作被所述第二一致性域中的存储器所服务而选择包括所述第一和第二一致性域的第一广播范围,以及响应于所述之前的第二预取操作被所述第二一致性域之外的存储器所服务而选择包括所述第一一致性域并且不包括所述第二一致性域的第二广播范围。
7.根据权利要求6所述的数据处理系统,其中,所述高速缓存控制器基于所述数据处理系统中服务于所述第一预取操作的存储器的位置更新所述预取预测器。
8.根据权利要求6所述的数据处理系统,其中:
所述高速缓存控制器以预取请求接收多个预取流标识符中的一个;以及
所述预取预测器对于所述多个预取流标识符的每个维护各自的范围指示符。
9.根据权利要求8所述的数据处理系统,其中,每个各自的范围指示符是单一位指示符。
10.一种数据处理系统中的数据处理方法,其中,所述数据处理系统包括:互连结构以及至少第一和第二一致性域,所述至少第一和第二一致性域的每个包含至少一个处理单元,所述数据处理系统还包括所述第一一致性域中的包括预取预测器的高速缓存控制器,所述方法包括:
接收指定第一目标地址的预取请求;
响应于接收到所述预取请求,确定对于具有第一目标地址的第一预取操作在所述互连结构上的广播的预测范围,所述确定基于具有不同的第二目标地址的之前的第二预取操作的范围,其中所述确定包括:响应于所述之前的第二预取操作被所述第二一致性域中的存储器所服务而选择包括所述第一和第二一致性域的第一广播范围;以及响应于所述之前的第二预取操作被所述第二一致性域之外的存储器所服务而选择包括所述第一一致性域并且不包括所述第二一致性域的第二广播范围;以及
以所述预测范围在所述互连结构上发出所述第一预取操作。
11.根据权利要求10所述的方法,进一步包括:
维护所述预取预测器中所述之前的第二预取操作的范围;以及
基于所述数据处理系统中服务于所述第一预取操作的存储器的位置更新所述预取预测器。
12.根据权利要求10所述的方法,进一步包括:
所述预取预测器对于多个预取流标识符中的每个维护各自的范围指示符;以及
接收关联于所述预取请求的多个预取流标识符中的一个;
其中,所述确定包括通过参考所述多个预取流标识符中的所述一个的各自的范围指示符确定所述预测范围。
13.根据权利要求12所述的方法,其中,每个各自的范围指示符是单一位指示符。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/465,587 US7484042B2 (en) | 2006-08-18 | 2006-08-18 | Data processing system and method for predictively selecting a scope of a prefetch operation |
US11/465,587 | 2006-08-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101127008A CN101127008A (zh) | 2008-02-20 |
CN100592269C true CN100592269C (zh) | 2010-02-24 |
Family
ID=39095051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710141853A Expired - Fee Related CN100592269C (zh) | 2006-08-18 | 2007-08-14 | 用于预测性选择预取操作的范围的数据处理系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7484042B2 (zh) |
CN (1) | CN100592269C (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9035959B2 (en) | 2008-03-28 | 2015-05-19 | Intel Corporation | Technique to share information among different cache coherency domains |
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 |
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 |
US8874853B2 (en) | 2010-06-04 | 2014-10-28 | International Business Machines Corporation | Local and global memory request predictor |
CN102023931B (zh) * | 2010-12-17 | 2015-02-04 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
US8793442B2 (en) * | 2012-02-08 | 2014-07-29 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads |
US8909866B2 (en) * | 2012-11-06 | 2014-12-09 | Advanced Micro Devices, Inc. | Prefetching to a cache based on buffer fullness |
GB2525237B (en) * | 2014-04-17 | 2021-03-17 | Advanced Risc Mach Ltd | Reorder buffer permitting parallel processing operations with repair on ordering hazard detection within interconnect circuitry |
US10534611B2 (en) * | 2014-07-31 | 2020-01-14 | International Business Machines Corporation | Branch prediction using multi-way pattern history table (PHT) and global path vector (GPV) |
US10509732B2 (en) * | 2016-04-27 | 2019-12-17 | Advanced Micro Devices, Inc. | Selecting cache aging policy for prefetches based on cache test regions |
GB2554442B (en) * | 2016-09-28 | 2020-11-11 | Advanced Risc Mach Ltd | Apparatus and method for providing an atomic set of data accesses |
PL3552108T3 (pl) * | 2016-12-12 | 2022-01-03 | Intel Corporation | Urządzenia i sposoby dla architektury procesora |
CN108268384A (zh) * | 2016-12-30 | 2018-07-10 | 华为技术有限公司 | 读取数据的方法及装置 |
US10866893B2 (en) * | 2018-01-23 | 2020-12-15 | Home Depot Product Authority, Llc | Cache coherency engine |
CN111143242B (zh) * | 2018-11-02 | 2022-05-10 | 华为技术有限公司 | 一种缓存预取方法和装置 |
US11397685B1 (en) * | 2021-02-24 | 2022-07-26 | Arm Limited | Storing prediction entries and stream entries where each stream entry includes a stream identifier and a plurality of sequential way predictions |
CN114625674B (zh) * | 2022-03-24 | 2023-07-18 | 广东华芯微特集成电路有限公司 | 预驱指令架构与预驱指令架构的预取方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6629268B1 (en) * | 2000-01-25 | 2003-09-30 | International Business Machines Corporation | Method and apparatus for servicing a processing system through a test port |
US7437438B2 (en) * | 2001-12-27 | 2008-10-14 | Hewlett-Packard Development Company, L.P. | System and method for energy efficient data prefetching |
US7617499B2 (en) * | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
US20060095679A1 (en) * | 2004-10-28 | 2006-05-04 | Edirisooriya Samantha J | Method and apparatus for pushing data into a processor cache |
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 |
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 |
US20070033385A1 (en) * | 2005-08-02 | 2007-02-08 | Advanced Micro Devices, Inc. | Call return stack way prediction repair |
US7865570B2 (en) * | 2005-08-30 | 2011-01-04 | Illinois Institute Of Technology | Memory server |
-
2006
- 2006-08-18 US US11/465,587 patent/US7484042B2/en not_active Expired - Fee Related
-
2007
- 2007-08-14 CN CN200710141853A patent/CN100592269C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7484042B2 (en) | 2009-01-27 |
CN101127008A (zh) | 2008-02-20 |
US20080046658A1 (en) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100592269C (zh) | 用于预测性选择预取操作的范围的数据处理系统和方法 | |
CN100444134C (zh) | 数据处理系统和方法 | |
CN100428195C (zh) | 数据处理系统和方法 | |
US7389388B2 (en) | Data processing system and method for efficient communication utilizing an in coherency state | |
US8140770B2 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation | |
US7716428B2 (en) | Data processing system, cache system and method for reducing imprecise invalid coherency states | |
CN100570582C (zh) | 数据处理系统和方法 | |
US7743218B2 (en) | Updating an invalid coherency state in response to snooping an operation | |
CN100397366C (zh) | 用于初始化存储器块的处理器、数据处理系统和方法 | |
CN101162442A (zh) | 支持共享全局一致性状态的处理器、数据处理系统和方法 | |
US7475196B2 (en) | Processor, data processing system, and method for initializing a memory block in a data processing system having multiple coherency domains | |
CN100495360C (zh) | 数据处理的单元、系统和方法 | |
US7454578B2 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory | |
CN100465923C (zh) | 数据处理设备和方法 | |
CN101005446A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100224 Termination date: 20200814 |