CN1869956A - 数据处理系统中的数据处理的方法和装置 - Google Patents

数据处理系统中的数据处理的方法和装置 Download PDF

Info

Publication number
CN1869956A
CN1869956A CNA2006100785178A CN200610078517A CN1869956A CN 1869956 A CN1869956 A CN 1869956A CN A2006100785178 A CNA2006100785178 A CN A2006100785178A CN 200610078517 A CN200610078517 A CN 200610078517A CN 1869956 A CN1869956 A CN 1869956A
Authority
CN
China
Prior art keywords
territory
response
storage block
state
cache
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
Application number
CNA2006100785178A
Other languages
English (en)
Other versions
CN100410899C (zh
Inventor
L·J·克拉克
J·S·小菲尔茨
G·L·居特里
W·J·施塔克
D·E·威廉姆斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1869956A publication Critical patent/CN1869956A/zh
Application granted granted Critical
Publication of CN100410899C publication Critical patent/CN100410899C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Abstract

响应于程序代码的执行,至少利用目标存储块的目标地址初始化局部一致性域内的清理逻辑内的控制寄存器。响应于所述初始化,清理逻辑向远程一致性域内的至少一个高速缓存层次结构发出域指示清理请求,该域指示清理请求针对可被所述至少一个高速缓存层次结构高速缓存的目标存储块。响应于接收到指示所述目标存储块没有被高速缓存在远程一致性域内的一致性响应,更新局部一致性域内的域指示以指示目标存储块仅被高速缓存在局部一致性域内,如果它被高速缓存的话。

Description

数据处理系统中的数据处理的方法和装置
技术领域
本发明一般涉及数据处理,并尤其涉及高速缓存一致性数据处理系统中的数据处理。
背景技术
传统的对称多处理器(SMP)计算机系统例如服务器计算机系统包括均连接到系统互连上的多个处理单元,该系统互连通常包括一个或多个地址、数据和控制总线。系统存储器连接到系统互连上,该系统存储器代表多处理器计算机系统内的最低层的易失存储器,并通常可被所有处理单元进行读和写访问。为了减小针对位于系统存储器上的指令和数据的访问等待时间,每个处理单元通常还被各自的多层高速缓存层次结构支持,所述高速缓存层次结构的最低层可被一个或多个处理器核心共享。
因为多个处理器核心可能请求写访问相同的数据高速缓存线,并且因为被修改的高速缓存线不是立刻与系统存储器同步,所以多处理器计算机系统的高速缓存层次结构通常实现高速缓存一致性协议以至少确保多个处理器核心对系统存储器的内容的“视图”之间的最低水平的一致性。具体地,高速缓存一致性至少要求在处理单元访问存储块的副本并随后访问该存储块的更新副本之后,该处理单元不能再次访问该存储块的旧副本。
高速缓存一致性协议通常定义了与每个高速缓存层次结构的高速缓存线相关联地存储的一组一致性状态,以及用于在各高速缓存层次结构之间传送高速缓存状态信息的一组一致性消息。在一典型实现中,一致性状态信息采取的形式为公知的MESI(修改、排他、共享、无效)协议或其变型,而一致性消息指示在存储器访问请求的请求者和/或接受者的高速缓存层次结构中的协议定义的一致性状态转变。
在一些高速缓存一致性协议中,一个或多个一致性状态响应于随后的操作不被更新或仅被不精确地更新。因此,这些一致性状态可随时间而变“陈旧”,因为它们不再准确地反应相关联存储块的系统范围的一致性状态。本发明认识到“陈旧”一致性状态的存在会导致执行这样的系统操作,即如果已更新和/或除去了“陈旧”一致性状态则不会需要这些系统操作。
发明内容
鉴于以上考虑,本发明提供了一种改进的高速缓存一致性数据处理系统、高速缓存系统和高速缓存一致性数据处理系统中的数据处理方法。
在一个实施例中,局部一致性域内的高速缓存清理(scrubbing)逻辑向远程一致性域内的至少一个高速缓存层次结构发出域查询请求。域查询请求是对通过该至少一个高速缓存层次结构与目标存储块相关联的一致性状态的非破坏性探查。接收对该域查询请求的一致性响应。响应于一致性响应指示目标存储块没有被高速缓存在该远程一致性域内,复位该局部一致性域内的域指示以指示目标存储块仅被高速缓存在局部一致性域内,如果它被高速缓存的话。
在另一个实施例中,局部一致性域内的高速缓存清理逻辑向远程一致性域内的至少一个高速缓存层次结构发出域复位请求,该域复位请求迫使该远程一致性域内保持的目标存储块的任何被高速缓存的副本无效。接收到对该域复位请求的一致性响应。响应于该一致性响应指示目标存储块没有被高速缓存在该远程一致性域内,复位该局部一致性域的系统存储器内的域指示以指示目标存储块仅被高速缓存在局部一致性域内,如果它被高速缓存的话。
在另一个实施例中,响应于程序代码的执行,至少利用目标存储块的目标地址初始化局部一致性域内的高速缓存清理逻辑内的控制寄存器。响应于该初始化,高速缓存清理逻辑向远程一致性域内的至少一个高速缓存层次结构发出高速缓存清理请求,该清理请求针对可被至少一个高速缓存层次结构高速缓存的目标存储块。响应于接收到指示目标存储块没有被高速缓存在远程一致性域内的一致性响应,复位局部一致性域内的域指示以指示目标存储块仅被高速缓存在局部一致性域内,如果它被高速缓存的话。
从下面的详细说明中可清楚地了解本发明的所有目标、特征和优点。
附图说明
在所附权利要求中阐述了被认为是本发明的特性的新颖特征。但是,当结合附图阅读时参照下面对说明性实施例的详细描述可最好地理解本发明及其优选使用方式,在附图中:
图1是根据本发明的示例性数据处理系统的高层框图;
图2是根据本发明的处理单元的更详细的框图;
图3是图2中所示的L2高速缓存阵列和目录的更详细的框图;
图4是图1的数据处理系统的系统互连上的示例性事务的时空图(time-space diagram);
图5示出根据本发明的优选实施例的域指示符;
图6A是根据本发明的启动高速缓存清理操作的方法的高层逻辑流程图;
图6B是根据本发明高速缓存监听器(snooper)用来处理被动高速缓存清理操作的方法的高层逻辑流程图;
图6C是根据本发明存储控制器监听器用来处理被动高速缓存清理操作的方法的高层逻辑流程图;
图7A是根据本发明高速缓存监听器用来处理主动高速缓存清理操作的方法的高层逻辑流程图;
图7B是根据本发明存储控制器监听器用来处理主动高速缓存清理操作的方法的高层逻辑流程图;
图8A示出根据本发明的用于启动被动或主动高速缓存清理操作的示例性域指示清理指令;以及
图8B示出根据本发明的包括高速缓存清理指令的示例性程序代码。
具体实施方式
I.示例性数据处理系统
现参照附图并尤其参照图1,示出根据本发明的高速缓存一致性对称多处理器(SMP)数据处理系统的示例性实施例的高层框图。如图所示,数据处理系统100包括用于处理数据和指令的多个处理节点102a、102b。处理节点102a、102b连接到用于传输地址、数据和控制信息的系统互连110。系统互连110可实现为例如总线互连、交换互连或混合互连。
在所示实施例中,每个处理节点102实现为包含四个处理单元104a-104d的多芯片模块(MCM),每个处理单元优选地被实现为各自的集成电路。每个处理节点102内的处理单元104a-104d通过局部互连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,和用于执行指令的一个或多个执行单元224。如下文进一步说明的,执行单元224优选地包括用于执行引用存储块或使得生成引用存储块的操作的存储器访问指令的装入-存储单元(LSU)228。
每个处理器核心200的操作由多层易失存储器层次结构支持,该层次结构在其最低层具有共享系统存储器108a-108d,而在其上层具有一级或多级高速缓冲存储器。在所示实施例中,每个处理单元104包括集成存储控制器(IMC)206,该集成存储控制器响应于从处理器核心200a-200b接收到的请求和监听器(S)222在局部互连114上监听的操作,控制对其处理节点102内的相应一个系统存储器108a-108d的读和写访问。IMC 206通过参考基址存储器(BAR)逻辑240确定它所负责的地址。
在所示实施例中,处理单元104的高速缓存层次结构包括位于每个处理器核心200内的贯穿存储(store-through)1级(L1)高速缓存226,和被处理单元104的所有处理器核心200a、220b共享的2级(L2)高速缓存230。L2高速缓存230包括L2阵列和目录234,以及包括主控(master)232和监听器236的高速缓存控制器。主控232响应于从相关联的处理器核心200a-220b接收到的存储器访问(以及其他)请求,在局部互连114和系统互连110上启动事务,并访问L2阵列和目录234。主控232包括高速缓存清理逻辑250,如下文进一步说明的,该逻辑可用于更新可被高速缓存在数据处理系统100内的分布位置内的一个或多个存储块的一致性状态和/或域指示符。监听器236监听局部互连114上的操作,提供合适的响应,并执行这些操作所需的对L2阵列和目录234的任何访问。
尽管所述高速缓存层次结构仅包括两级高速缓存,但是本领域内的那些技术人员将理解,其他可选择的实施例可包括额外的等级(L3、L4、L5等)的片内或片外的内联(in-line)或后备(lookaside)高速缓存,其可以完全包含、部分包含或不包含上级高速缓存的内容。
每个处理单元104还包括响应逻辑210的实例,其实现维护数据处理系统100内的高速缓存一致性的分布式一致性信令机制的一部分。另外,每个处理单元104包括互连逻辑212的实例,其用于在其局部互连114和系统互连110之间选择性地转发通信。最后,每个处理单元104包括支持附加一个或多个I/O设备例如I/O设备216的集成I/O(输入/输出)控制器214。I/O控制器214可响应于I/O设备216的请求在局部互连114和/或系统互连110上发出操作。
现参照图3,示出L2阵列和目录234的示例性实施例的更详细的框图。如图所示,L2阵列和目录234包括组相联(set associative)L2高速缓存阵列300,和L2高速缓存阵列300的内容的L2高速缓存目录302。如在传统的组相联高速缓存中,利用系统存储器(实)地址内的预定索引位将系统存储器108中的存储位置映射到高速缓存300内的特定同余类(congruence class)。高速缓存阵列300内存储的特定高速缓存线被记录在高速缓存目录302内,该目录对于高速缓存阵列300内的每个高速缓存线包含一个目录项。如本领域内的那些技术人员可理解的,高速缓存302内的每个目录项至少包括标记字段304,该标记字段利用对应的实地址内的标志部分指定存储在高速缓存阵列300内的特定高速缓存线,状态字段306,该状态字段指示高速缓存线的一致性状态,和LRU(最近最少使用)字段308,该LRU字段指示该高速缓存线相对于相同同余类内的其他高速缓存线的替换顺序。
II.示例性操作
现参照图4,示出在图1的数据处理系统100上的局部或系统互连110、114上的示例性操作的时空图。当L2高速缓存230的主控232(或其他主控例如I/O控制器214)在局部互连114和/或系统互连110上发出请求402时,此操作开始。请求402优选地包括指示希望的访问的类型的事务类型和指示该请求将访问的资源的资源标识符(例如实地址)。常见类型的请求优选地包括表I内给出的那些。
                          表I
 请求   描述
 READ   为查询目的请求存储块的映象的副本
 RWITM(带有修改意图而读取)   带有更新(修改)意图而请求存储块的映象的唯一副本,并且如果有的话要求破坏其他副本
 DCLAIM(数据要求)   带有更新(修改)意图而请求授权将存储块的现有的只查询副本提升为唯一副本,并且如果有的话要求破坏其他副本
 DCBZ(数据高速缓存块0)   请求授权创建存储块的新的唯一被高速缓存的副本而不管其当前状态,并随后修改其内容;如果有的话要求破坏其他副本
 DCBDQ(数据高速缓存块域查询)   非破坏性探查,来请求指示存储块是否以数据有效状态被高速缓存在主控的一致性域之外的响应
 DCBDR(数据高速缓存块域复位)   请求将存储块的域指示符复位为“局部”,和将被保持在局部一致性域之外的数据块的被高速缓存的副本进行任何必要的无效。
 CASTOUT   将存储块的映象从高层存储器复制到低层存储器以便准备破坏高层副本
 WRITE   请求授权创建存储块的新的唯一副本而不管其当前状态,并立即将该存储块的映象从高层存储器复制到低层存储器以便准备破坏高层副本
 PARTIALWRITE   请求授权创建部分存储块的新的唯一副本而不管其当前状态,并立即将部分存储块的映象从高层存储器复制到低层存储器以便准备破坏高层副本
L2高速缓存230的监听器236以及存储控制器206的监听器222接收到请求402(图1)。一般来说,除一些例外,与请求402的主控232相同的L2高速缓存230中的监听器236不监听请求402(即通常没有自监听),因为只有当请求402不能由处理单元104在内部服务时,请求402才在局部互连114和/或系统互连110上传输。接收到请求402的每个监听器222、236可提供各自的部分响应406,该部分响应代表至少该监听器对请求402的响应。存储控制器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内高速缓存的数据的一致性状态无效或以其他方式更新该一致性状态,执行掷出(castout)操作,将数据写回系统存储器108等。如果请求402这样要求,则在响应逻辑210生成组合响应410之前或之后,可向或从主控232传送被请求的或目标存储块。
在下面的说明中,将参照监听器相对于请求所指定的请求地址是一致性最高点(HPC)、一致性最低点(LPC)还是都不是,说明监听器222、236对请求的部分响应以及响应于该请求监听器执行的操作和/或其组合响应。LPC在此被定义为用作存储块的储存库的存储设备或I/O设备。在没有用于存储块的HPC的情况下,LPC保持存储块的真实映象,并有权准许或拒绝对生成存储块的另外的被高速缓存的副本的请求。对于图1和2的数据处理系统实施例中的典型请求,LPC将是用于保持被引用的存储块的系统存储器108的存储控制器206。HPC在此被定义为高速缓存存储块的真映象(可以与在LPC处的对应的存储块一致或不一致)并且有权准许或拒绝修改存储块的请求的被唯一标识的设备。作为说明,HPC还可响应于不修改存储块的操作将存储块的副本提供给请求者。因此,对于图1和2的数据处理系统实施例中的典型请求,HPC如果有的话,将是L2高速缓存230。尽管可使用其他指示符为存储块指定HPC,但是如果有HPC的话,则本发明的优选实施例利用L2高速缓存230的L2高速缓存目录302内的所选择的高速缓存一致性状态为存储块指定HPC,如下文参照表II进一步说明的那样。
仍参照图4,如果有的话用于请求402内引用的存储块的HPC或者在没有HPC的情况下存储块的LPC优选地有责任在保护窗口404a期间响应于请求402保护存储块的所有权的传递。在图4内所示的示例性情况中,作为用于由请求402的请求地址指定的存储块的HPC的监听器236在保护窗口404a期间保护被请求的存储块的所有权向主控232的传送,该保护窗口从监听器236确定其部分响应406的时间一直延伸到监听器236接收到组合响应410的时间。在保护窗口404a期间,监听器236通过向指定相同请求地址的其他请求提供部分响应406以便在所有权已成功地传送到主控232之前防止其他主控获得所有权,来保护所有权的传送。主控232类似地启动保护窗口404b以在接收到组合请求410之后保护其对在请求402中请求的存储块的所有权。
因为监听器222、236均具有有限的资源用于处理上述CPU和I/O请求,所以可存在一些不同级别的部分请求和对应的CR。例如,如果负责被请求的存储块的存储控制器206内的监听器222具有可用于处理请求的队列,则监听器222可以指示其能够用作该请求的LPC的部分响应来响应。另一方面,如果监听器222没有可用于处理请求的队列,则监听器222可以指示其是存储块的HPC、但是不能目前服务于该请求的部分响应来响应。
类似的,L2高速缓存230内的监听器236会需要监听逻辑的可用实例和对L2高速缓存目录302的访问以便处理请求。缺少对这些资源的任何一个(或全部)的访问会得到用信号通知由于没有所需的资源而目前不能服务于该请求的部分响应(和对应的CR)。
此后,提供指示监听器具有可用的如果需要的话目前服务于请求所需的所有内部资源的部分响应的监听器222、236被说成“确认”请求。对于监听器236,确认被监听的操作的部分响应优选地指示在该监听器236处被请求的或目标存储块的高速缓存状态。提供指示监听器236不具有可用的目前服务于请求所需的可用的所有内部资源的部分响应的监听器222、236可被说成“可能隐藏的”或“不能”服务于该请求。这样的监听器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提供共享存储块的规则。
根据本发明,通过实现数据提供域(sourcing domain)来解决这两个问题。具体地,允许SMP数据处理系统内的每个域每次仅包括一个以一“特殊”共享一致性状态保持特定的存储块的高速缓存层次结构,其中域被定义为包括一个或多个参与响应于数据请求的低级(例如L2)高速缓存时。如果该高速缓存层次结构在相同域内的请求低级高速缓存启动总线读类型(例如读或RWITM)操作时存在,则该高速缓存层次结构负责将被请求的存储块提供给该请求低级高速缓存。尽管可在图1的数据处理系统100中定义许多不同的域大小,但是认为每个处理节点102(即MCM)是一个数据提供域是方便的。下面参照表II说明这样的“特殊”共享状态(即Sr)的一个示例。
IV.一致性域
尽管上述的数据提供域的实现改进了数据访问等待时间,但是此增强未解决通信量会随着系统规模的增加而增加m×n倍的问题。为了减小通信量同时仍保持基于广播的一致性机制,本发明的优选实施例还实现一致性域,类似于前文所述的数据提供域,该一致性域可方便地(但不必须)这样实现,其中每个处理节点102形成单独的一致性域。数据提供域和一致性域可以但不必须具有共同范围,并且为了说明数据处理系统100的示例性操作的目的,下文将假设它们具有由处理节点102限定的边界。
一致性域的实现通过在请求可被少于所有一致性域的参与所服务的情况下限制系统互连110上的域间广播通信,减小了通信量。例如,如果处理节点102的处理单元104a将有一总线读操作要发出,则处理单元104可选择首先将总线读操作广播给其自己的一致性域(例如处理节点102a)内的所有参与者而不广播给其他一致性域(例如处理节点102b)内的参与者。仅传输给与操作的主控相同的一致性域内的那些参与者的广播操作在此被定义为“局部操作”。如果局部总线读操作可在处理单元104a的一致性域内被服务,则不进一步广播总线读操作。但是,如果对总线读操作的部分响应和组合响应指示总线读操作不能仅在处理节点102a的一致性域内被服务,则广播范围可扩展到除了该局部一致性域之外还包括一个或多个额外的一致性域。
在一基本实现中,使用两个广播范围:仅包括局部一致性域的“局部”范围和包括SMP数据处理系统内的所有其他的一致性域的“全局”范围。因此,传输到SMP数据处理系统内的所有一致性域的操作在此被定义为“全局操作”。重要的是,不管使用局部操作还是使用具有更广阔范围的操作(例如全局操作)来服务于操作,在SMP数据处理系统内的所有一致性域中维护高速缓存一致性。在全文并入此作为参考文献的美国专利申请No.11/055305中说明了局部操作和全局操作的示例。
在一优选实施例中,操作范围由总线操作内的局部/全局范围指示符(信号)指示,该指示符在一个实施例中包含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’以指示“局部”)。否则复位域指示符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之前未   是   未知   Sr、S、I、Ig、In(&LPC)
  提供则在CR之后
 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指示优选地是不精确的,这意味着它可以是不正确的但不会破坏一致性。
响应于低级高速缓存响应于排他的访问请求(例如总线RWITM操作)将被请求的存储块提供给另一个一致性域内的请求者,在该低级高速缓存内形成Ig状态。在本发明的一些实施例中,优选地仅在包含存储块的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可服务于来自远程一致性域的排他的访问请求(例如,总线RWITM操作),而无需重试该请求并将被请求的存储块推给LPC。
B.In状态
In状态在此被定义为这样的高速缓存一致性状态,其指示(1)高速缓存阵列内的关联存储块无效,(2)高速缓存目录内的地址标记有效,以及(3)该地址标记标识的存储块的副本很可能仅被局部一致性域内的一个或多个其他高速缓存层次结构高速缓存(如果被高速缓存的话)。In指示优选地不精确,这意味着它可以是不正确的而不会破坏一致性。响应于低级高速缓存响应于排他的访问请求(例如总线RWITM操作)将被请求的存储块提供给相同一致性域内的请求者,在该低级高速缓存内形成In状态。
由于包括In状态的高速缓存目录项携带着可能有用的信息,所以在至少一些实现中,希望优选于I状态的项保持In状态的项(例如,通过修改被用于选择用于替换的牺牲高速缓存项的最近最少使用(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.高速缓存清理操作
如上所述,L2高速缓存目录302内保持的Ig目录项可随时间变“陈旧”,这是因为其排他的访问请求导致形成Ig状态的非本地L2高速缓存230可能解除分配或者写回其存储块副本,而不通知以Ig状态保持该存储块的地址标记的高速缓存230。在这样的情况下,该“陈旧”的Ig指示符,其不正确地指示应发出全局操作而不是局部操作来获得关联存储块的副本,将不会导致任何一致性错误,而仅会导致一些本来可利用局部操作来服务的操作作为全局操作被发出。类似的,具有显式的或隐式的“全局”属性的其他一致性状态(例如T和Te)可由于缺少精确的高速缓存状态更新机制而变陈旧。如现在将参照图6A-8B说明的,可通过高速缓存清理来减小这些“陈旧”域指示引起的通信无效率。
首先参照图6A,描述了根据本发明的启动高速缓存清理操作的方法的高层流程图。如图所示,过程从块600开始,并随后转到块602,该块602描述了初始化高速缓存清理逻辑250内的一个或多个控制寄存器252a-252n以建立高速缓存清理操作的参数。在一个实施例中,这些参数至少包括将被清理的一个或多个目标实存储地址的指示,并且还可包括将在目标地址上执行的清理操作的类型的指示。例如,高速缓存清理逻辑250可支持一种或多种以下类型的高速缓存清理操作:(1)被动高速缓存清理操作,在该操作中,如果可能的话,根据对数据处理系统的非破坏性探查的响应,更新与存储块相关联的域指示(例如域指示符504)以指示“局部”,或(2)主动高速缓存清理操作,在该操作中,响应于传输到数据处理系统内的高速缓冲存储器的可能破坏性的请求,强制复位与存储块相关联的域指示(例如域指示符504)以指示“局部”。
尽管可能有其他实施例,但是为了便于实现,在此假设L2高速缓存230的高速缓存清理逻辑250的控制寄存器252可仅被初始化为清理分配给与高速缓存清理逻辑250处于相同一致性域内的系统存储器108的目标地址。高速缓存清理逻辑250可例如参考BAR逻辑240或类似的与L2高速缓存230相关联的基址寄存器,验证控制寄存器252a-252n的设置指定的目标地址被分配给其一致性域内的一个或多个系统存储器108。在此实施例中,高速缓存清理逻辑250简单地忽略分配给在L2高速缓存230的局部一致性域之外的系统存储器108的目标地址。
如图6A的块602所示的控制寄存器252的初始化可由例如软件或固件通过执行一个或多个存储器映射I/O写操作来执行,或者作为选择或附加通过由执行单元224(例如LSU 228)的执行或处理高速缓存清理指令来执行。例如,图8A示出包括操作码字段802和操作数字段804的一示例性高速缓存清理指令800的格式。在一个实施例中,操作码字段802支持包括第一二进制值和第二二进制值的值,该第一二进制值指定由助记的数据高速缓存块域查询(DCBDQ)表示的被动高速缓存清理操作,该第二二进制值指定由助记的数据高速缓存块域复位(DCBDR)表示的主动高速缓存清理操作。操作数字段804利用传统寻址模式标识高速缓存清理操作的一个或多个目标高速缓存块。如图8B所述,高速缓存清理指令800通常形成至少部分地存储在计算机可用介质(例如计算机存储器108)内并且要被处理器核心200执行或处理的计算机可用程序代码806的一部分。
在块602所示的初始化之后,图6A中所示的过程转到块604,该块描述L2高速缓存230的主控232的高速缓存清理逻辑250为将被清理的每个目标地址在互连114、110上发出各自的全局范围的高速缓存清理请求。例如,可响应于高速缓存清理逻辑250轮询一个或多个控制寄存器252以检测控制寄存器252的初始化,或者响应于主控232的高速缓存清理逻辑250响应于高速缓存清理指令(例如DCBDQ或DCBDR指令)的执行从相关联的处理器核心200接受到初始化控制寄存器252的高速缓存清理操作,而发出高速缓存清理请求。在互连114、110上发出的高速缓存清理请求优选地指示目标地址,以及如果实现多于一种类型的高速缓存清理的话,指示请求被动还是主动高速缓存清理的事务类型。此后,被动高速缓存清理请求被称为“域查询”请求,而主动高速缓存清理请求被称为“域复位”请求。应指出,与启动L2高速缓存230中的目标存储块的一致性状态无关地发出高速缓存清理请求。
在发出高速缓存清理请求之后,如块606所示,主控232的高速缓存清理逻辑250等待对高速缓存清理请求的系统范围的组合响应(CR)。如果组合响应指示“重试”,则过程返回块604,该块示出高速缓存清理逻辑250重新发出高速缓存清理请求。如果组合响应不指示“重试”,则高速缓存清理请求成功,并且过程在块610结束。
现在参照图6B,描述了根据本发明高速缓存监听器例如L2高速缓存监听器236用来处理域查询请求的方法的高层逻辑流程图。如图所示,响应于L2高速缓存监听器236在其局部互连114上接收到请求,过程从块620开始。响应于接收到请求,监听器236在块622确定该请求是否是域查询请求。如果不是,则如块624所示,监听器236执行其他处理,并且过程在块660结束。但是,如果监听器236在块622确定请求是域查询请求(包括相同L2高速缓存230内的高速缓存清理逻辑250发起的域查询请求),则监听器236在块630进一步确定它目前是否能够实质上响应域查询请求(例如,它是否具有监听逻辑的可用实例以及对L2高速缓存目录302的当前访问)。如果监听器236目前不能实质上响应域查询请求,则如块632所示,监听器236提供指示“重试”的部分响应(PR),并且域查询请求的处理在块660处结束。
假设监听器236能够实质上响应域查询请求,监听器236在块634确定其是否与最初发出域查询请求的启动L2高速缓存230处于相同一致性域内。例如,监听器236通过检查域查询请求内包含的范围位(或者在其他实施例中,启动L2高速缓存230的域标识符或目标地址),进行块634所示的确定。如果监听器236在块634确定其没有与启动L2高速缓存230处于相同一致性域内,则监听器236根据相对于其L2高速缓存目录302的目标地址的一致性状态提供部分响应。就是说,如果监听器236的L2高速缓存目录302指示目标地址具有数据有效一致性状态(例如M、Me、T、Te、Tn、Ten、Sr或S),则如块652所示,监听器236提供指示“全局使用中”的部分响应。相反,如果监听器236的L2高速缓存目录302指示目录地址具有数据无效一致性状态(例如Ig、In或I),则如块654所示,监听器236提供指示“非全局使用中”的部分响应。在块652或654之后,过程在块660结束。
返回块634,如果监听器236确定其处于与启动L2高速缓存230相同的一致性域(即在其局部),则如块636所示,监听器236也确定相对于其L2高速缓存目录302的目标存储地址的一致性状态。如果目标存储地址不具有记录在L2高速缓存302内的这样的相关联的一致性状态,该一致性状态显式或隐式地指示目标存储块的副本可能被高速缓存在局部一致性域之外(例如,一致性状态不同于Ig、T或Te),则不需要执行进一步的处理,并且处理在块660结束。但是,如果监听器236确定域查询请求的目标存储地址具有记录在L2高速缓存302内的这样的相关联的一致性状态,该一致性状态显式或隐式地指示目标存储块的副本可能被高速缓存在局部一致性域之外(例如,一致性状态为Ig、T或Te),则如块638所示,监听器236等待对域查询请求的组合请求。
如上所述,响应逻辑210的至少一个实例(例如启动处理单元104内的响应逻辑210)组合响应于域查询请求生成的部分响应以确定组合响应。在一个实施例中,响应逻辑210根据表IV生成组合逻辑,在该表中“Y”指示部分响应的存在,“X”代表“无所谓”,而破折号(“-”)代表没有部分响应。
                          表IV
  部分响应   重试   全局使用中   非全局使用中   组合响应
  重试   Y   X   X   重试
  全局使用中   Y   X   X   重试
  非全局使用中   Y   X   X   重试
  全局使用中   -   X   X   全局使用中
  非全局使用中   -   -   X   非全局使用中
因此,在此实施例中,如果任何监听器236、222提供了指示“重试”的部分响应,则不管存在还是不存在任何其他部分响应,组合响应逻辑210都生成指示“重试”的组合响应。如果没有监听器236、222生成指示“重试”的部分响应,并且至少一个监听器236生成指示“全局使用中”的部分响应,则组合响应逻辑210生成指示“全局使用中”的组合响应。最后,如果没有监听器236、222生成指示“重试”或“全局使用中”的部分响应,则组合响应逻辑210生成指示“非全局使用中”的组合响应。
响应于接收到对域查询请求的组合响应,监听器236在块640确定该组合响应是否指示目标存储块为“非全局使用中”(即,目标存储块仅被高速缓存在局部一致性域内(如果它被高速缓存的话))。如果组合响应不指示目标存储块是“非全局使用中”,则不需要执行进一步的处理,并且过程在块660处结束。但是,如果域查询请求的组合响应指示目标存储块为“非全局使用中”,则监听器236优选地将其L2高速缓存目录302内的与目标地址相关联的项从Ig更新到In,或从T更新到Tn,或从Te更新到Ten。这样,更新目标存储块的一致性状态以反映对域查询请求的系统范围的响应提供的域信息。
现参照图6C,描述了根据本发明存储控制器监听器例如监听器222用来处理被动域查询请求的方法的高层逻辑流程图。如图所示,响应于存储控制器监听器222在其局部互连114上接收到请求,过程从块670开始。响应于接收到请求,监听器222在块672确定该请求是否是域查询请求。如果不是,则如块674所示,监听器222执行其他处理并且过程在块692处结束。但是,如果监听器222在块672确定该请求是域查询请求,则监听器222在块676进一步确定其目前是否能够实质上响应该域查询请求(例如,其是否具有监听逻辑的可用实例)。如果监听器222目前不能实质上响应该域查询请求,则如块678所示,监听器222提供指示“重试”的部分响应(PR),并且域查询请求的处理在块692结束。
假设监听器222目前能够实质上响应域查询请求,则如块680所示,监听器222任选地提供“非全局使用中”部分请求,并且如块682所示,确定其是否是用于目标地址的LPC。例如,监听器222可通过参考BAR逻辑240进行如块682所示的确定。如果监听器222在块682确定其不是用于目标地址的LPC,则不需要进一步处理域查询请求,并且过程在块692结束。
返回参照块682,如果监听器222确定其是用于目标地址的LPC,则如块684所示,监听器222等待对域查询请求的组合响应。响应于接收到对域查询请求的组合响应,监听器222在块686和688确定组合响应是否指示目标存储块是“非全局使用中”(即,目保存储块被高速缓存在局部一致性域之内(如果被高速缓存的话))。如果组合响应未指示目标存储块是“非全局使用中”,则监听器222不需要执行进一步的处理,并且过程在块692结束。但是,如果域查询请求的组合响应指示目标存储块是“非全局使用中”,则监听器222利用读-修改-写操作来复位系统存储器108内的目标存储块的域指示符504以指示“局部”(块690)。这样,在系统存储器108内更新目标存储块的域指示符504以反映对域查询请求的系统范围的响应所提供的域信息。此后,过程在块692结束。
现在参照图7A,示出根据本发明高速缓存监听器例如L2高速缓存监听器236用来处理主动高速缓存清理请求(即域复位请求)的方法的高层逻辑流程图。如图所示,响应于L2高速缓存监听器236在其局部互连114上接收到请求,过程在块700开始。响应于接收到请求,监听器236在块702确定该请求是否是域复位请求。如果不是,则如块704所示,监听器236执行其他处理并且过程在块740处结束。但是,如果监听器236在块702确定请求是域复位请求(包括由相同L2高速缓存230内的高速缓存清理逻辑250发起的域复位请求),则监听器236进一步在块706确定其目前是否能够实质上响应域复位请求(例如,其是否具有监听逻辑的可用实例和对L2高速缓存目录302的当前访问)。如果监听器236目前不能实质上响应域复位请求,则如块708所示,监听器236提供指示“重试”的部分响应(PR),并且域复位请求的处理在块740结束。
假设监听器236能够实质上响应域复位请求,则监听器236在块710其是否处于与最初发出域复位请求的启动L2高速缓存230相同的一致性域内。例如,监听器236可通过检查域复位请求内包含的范围位(或者在其他实施例中,启动L2高速缓存230的域标识符或目标地址),进行块710所示的确定。如果监听器236在块710确定其没有处于与启动L2高速缓存230相同的一致性域内,则监听器236还确定相对于其L2高速缓存目录302的目标地址的一致性状态。如果如从块720和730到块734的过程指示的,监听器236的L2高速缓存目录302指示为该存储块存储的一致性状态是I或Ig,则监听器236提供指示“成功”的部分响应。此后,监听器236的处理在块740结束。
返回块720,如果监听器236的L2高速缓存目录302指示为该存储块存储的一致性状态为M、T或Tn,这意味着相对于系统存储器108修改了目标存储块的副本,则如块722所示,监听器236通过将被修改的存储块推入系统存储器108来更新系统存储器,并如块724所示,将L2高速缓存目录302内记录的关联的一致性状态更新为I。另外,如在块726所示,监听器236提供指示“重试”的部分响应,从而当启动L2高速缓存230重新发出域复位请求时,如块734所示,监听器236可提供指示“成功”的部分响应。在块726之后,监听器236对域复位请求的处理在块740处结束。
返回块730,如果监听器236的L2高速缓存目录302指示目标地址具有某种其他的数据有效一致性状态(例如Me、Te、Ten、Sr或S),则如块732所示,监听器236将一致性状态更新为I,并如块734所示提供指示“成功”的部分响应。在块734之后,过程在块740结束。
返回参照块710,如果监听器236确定其与启动L2高速缓存230处于相同的一致性域(即在其局部),则如块712所示,监听器236也确定相对于其L2高速缓存目录302的目标存储地址的一致性状态。如果目标存储地址不具有记录在L2高速缓存302内的这样的相关联的一致性状态,该一致性状态显式或隐式地指示目标存储块的副本可能被高速缓存在局部一致性域之外(例如,一致性状态不同于Ig、T或Te),则不需要执行进一步的处理,并且过程在块740结束。但是,如果监听器236确定域查询请求的目标存储地址具有记录在L2高速缓存302内的这样的相关联的一致性状态,该一致性状态显式或隐式地指示目标存储块的副本可能被高速缓存在局部一致性域之外(例如,一致性状态为Ig、T或Te),则如块714所示,监听器236等待对域查询请求的组合响应。
在一个实施例中,响应逻辑210根据表V生成组合逻辑,在该表中“Y”指示部分响应的存在,“X”代表“无所谓”,而破折号(“-”)代表没有部分响应。
            表V
  部分响应   重试   成功   组合响应
  重试   Y   X   重试
  成功   -   Y   成功
因此,在此实施例中,如果任何监听器236、222提供了指示“重试”的部分响应,则不管存在还是不存在任何其他部分响应,组合响应逻辑210都生成指示“重试”的组合响应。如果没有监听器236、222生成指示“重试”的部分响应,而至少一个监听器236生成指示“成功”的部分响应,则组合响应逻辑210生成指示“成功”的组合响应。
响应于接收到对域复位请求的组合响应,监听器236在块714确定该组合逻辑是否指示“成功”(即,目标存储块仅被高速缓存在局部一致性域内(如果它被高速缓存的话))。如果组合响应未指示“成功”,则不需要执行进一步的处理,并且过程在块740处结束。但是,如果域复位请求的组合响应指示“成功”,则监听器236优选地将其L2高速缓存目录302内的与目标地址相关联的项从Ig更新到In,或从T更新到Tn,或从Te更新到Ten。这样,更新目标存储块的一致性状态以反映对域查询请求的系统范围的响应提供的域信息。此后,过程在块740结束。
现在参照图7B,示出根据本发明存储控制器监听器例如监听器222用来处理域复位请求的方法的高层逻辑流程图。如图所示,响应于存储控制器监听器222在其局部互连114上接收到请求,过程在块770开始。响应于接收到请求,监听器222在块722确定该请求是否是域复位请求。如果不是,则如块774所示,监听器222执行其他处理并且过程在块790处结束。但是,如果监听器222在块772确定该请求是域复位请求,则监听器222进一步在块776确定其目前是否能够实质上响应域复位请求(例如,其是否具有监听逻辑的可用实例)。如果监听器222目前不能实质上响应域复位请求,则如块778所示,监听器222提供指示“重试”的部分响应(PR),并且域复位请求的处理在块790结束。
假设监听器222能够实质上响应域复位请求,则如块780所示,监听器222任选地提供“成功”部分响应,并且如块782所示,确定其是否是用于目标地址的LPC。例如,监听器222可通过参考BAR逻辑240进行如块782所示的确定。如果监听器222在块782确定其不是用于目标地址的LPC,则不需要进一步处理域复位请求,并且过程在块790结束。
返回参照块782,如果监听器222确定其是用于目标地址的LPC,则如块784所示,监听器222等待对域复位请求的组合响应。响应于接收到对域复位请求的组合响应,监听器222在块786确定组合响应是否指示“成功”(即,目标存储块仅被高速缓存在局部一致性域内(如果被高速缓存的话))。如果组合响应未指示“成功”,则不需要执行进一步的处理,并且过程在块790结束。但是,如果域复位请求的组合响应指示“成功”,则监听器222利用读-修改-写操作来复位系统存储器108内的目标存储块的域指示符504以指示“局部”(块788)。这样,在系统存储器108内更新目标存储块的域指示符504以反映对域复位请求的系统范围的响应提供的域信息。此后,过程在块692结束。
如上所述,本发明提供了一种改进的数据处理系统、处理单元、高速缓存层次结构和数据处理方法,其清理高速缓存以如果可能的话更新局部一致性域中指示存储块可能被高速缓存在局部一致性域之外的指示。因此,可以主动或被动方式执行的根据本发明的高速缓存清理,可被用来更新被保持在局部一致性域内的存储块的被高速缓存的副本的一致性状态,以及在系统存储器中的域指示。
尽管已参照优选实施例具体示出本发明,但是本领域内的技术人员将理解其中可在形式和细节方面进行许多改变而不会背离本发明的精神和范围。例如,尽管已相对于执行指导本发明的功能的程序代码的计算机系统说明了本发明的方面,但是应理解,作为另一种选择,本发明可实现为与数据处理系统一起使用的程序产品。可经由多种信号承载介质包括而不局限于不可重写存储介质(例如CD-ROM)、可重写存储介质(例如软盘或硬盘驱动器)以及通信介质例如数字和模拟网络,将定义本发明的功能的程序产品传送给数据处理系统。因此,应理解这样的信号承载介质在承载或编码指导本发明的功能的计算机可读指令时代表本发明的其他可选择实施例。
此外,尽管根据本发明的高速缓存清理逻辑已作为高速缓存的部件被说明,但是本领域内的那些技术人员将理解,高速缓存清理逻辑可作为替代或作为附加位于数据处理系统内的其他地方,例如位于存储控制器(例如IMC 206)内或在总线桥内,或者实现为连接到互连结构(fabric)的独立设备。在各种实施例中,高速缓存清理逻辑可实现为能够仅执行被动或主动或指示清理之一,或作为另一种选择,可实现为选择性地执行任一类型的或指示清理。
在本发明的另一个实施例中,L2高速缓存230内的高速缓存清理逻辑250可在图6A的块602自初始化,以通过扫描其高速缓存目录302来识别这样的目标存储地址来执行或指示清理操作,即这些目标存储地址(1)具有包含L2高速缓存230的一致性域作为主(home)一致性域以及(2)与Ig一致性状态或具有显式或隐式的“远程”或“全局”高速缓存指示的其他被选择的一致性状态相关联。在此实施例中,不需要控制寄存器252的软件/固件初始化。

Claims (18)

1.一种数据处理系统中的数据处理方法,所述方法包括:
响应于程序代码的执行,至少利用目标存储块的目标地址初始化局部一致性域内的清理逻辑内的控制寄存器;
响应于所述初始化,所述清理逻辑向远程一致性域内的至少一个高速缓存层次结构发出域指示清理请求,该域指示请求针对可被所述至少一个高速缓存层次结构高速缓存的目标存储块;以及
响应于接收到指示所述目标存储块没有被高速缓存在所述远程一致性域内的所述一致性响应,更新所述局部一致性域内的域指示以指示所述目标存储块仅被高速缓存在所述局部一致性域内,如果它被高速缓存的话。
2.根据权利要求1的方法,其中,所述域指示清理请求不请求所述目标存储块的副本。
3.根据权利要求1的方法,且还包括:
响应于所述一致性响应指示所述目标存储块没有被高速缓存在所述远程一致性域内,所述局部一致性域内的至少一个高速缓存层次结构将其相应的用于所述目标存储块的一致性状态从第一状态更新到第二状态,该第一状态指示所述存储块可被高速缓存在所述远程一致性域内,该第二状态指示所述目标存储块仅被高速缓存在所述局部一致性域内,如果它被高速缓存的话。
4.根据权利要求3的方法,其中,所述第一状态是第一数据无效状态,且所述第二状态是第二数据无效状态。
5.根据权利要求3的方法,其中,所述第一状态是第一共享状态,且所述第二状态是第二共享状态。
6.根据权利要求1的方法,其中,所述更新包括系统存储器的存储控制器更新所述域指示。
7.根据权利要求1的方法,其中,接收所述一致性响应包括接收代表对所述域指示清理请求的系统范围的响应的组合响应。
8.根据权利要求1的方法,且还包括执行域指示清理指令以初始化所述控制寄存器。
9.根据权利要求1的方法,且还包括响应于所述程序代码的执行,执行I/O写操作以初始化所述控制寄存器。
10.一种系统,包括:
处理器核心,其执行至少利用目标存储块的目标地址初始化控制寄存器的程序代码;
清理逻辑装置,其响应于初始化所述控制寄存器,向远程一致性域内的至少一个高速缓存层次结构发出域指示清理请求,该域指示清理请求针对可被所述至少一个高速缓存层次结构高速缓存的目标存储块;以及
监听器,其响应于接收到指示所述目标存储块没有被高速缓存在所述远程一致性域内的一致性响应,更新所述局部一致性域内的域指示以指示所述目标存储块仅被高速缓存在所述局部一致性域内,如果它被高速缓存的话。
11.根据权利要求10的系统,其中,所述域指示清理请求不请求所述目标存储块的副本。
12.根据权利要求10的系统,且还包括:
包含所述清理逻辑装置的高速缓冲存储器。
13.根据权利要求12的系统,且还包括:
连接到所述高速缓冲存储器的至少一个处理器核心。
14.根据权利要求10的系统,且还包括:
包含所述清理逻辑装置的系统存储控制器。
15.根据权利要求10的系统,且还包括:
局部一致性域,其中所述局部一致性域包括所述清理逻辑装置;
包括所述至少一个高速缓存层次结构的所述远程一致性域;
在所述局部一致性域内的高速缓冲存储器,其响应于接收到指示所述目标存储块没有被高速缓存在所述远程一致性域内的对所述域指示清理请求的一致性响应,将其相应的用于所述目标存储块的一致性状态从第一状态更新到第二状态,该第一状态指示所述存储块可被高速缓存在所述远程一致性域内,该第二状态指示所述目标存储块仅被高速缓存在所述局部一致性域内,如果它被高速缓存的话。
16.根据权利要求15的系统,其中,所述第一状态是第一数据无效状态,且所述第二状态是第二数据无效状态。
17.根据权利要求16的系统,其中,所述第一状态是第一共享状态,且所述第二状态是第二共享状态。
18.一种程序产品,包括:
计算机可用介质,该计算机可用介质包括在被处理时可使得数据处理系统执行权利要求1-9中的任何一个的步骤的程序代码。
CNB2006100785178A 2005-05-24 2006-05-08 数据处理系统中的数据处理的方法和装置 Expired - Fee Related CN100410899C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/136,642 US7467262B2 (en) 2005-05-24 2005-05-24 Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US11/136,642 2005-05-24

Publications (2)

Publication Number Publication Date
CN1869956A true CN1869956A (zh) 2006-11-29
CN100410899C CN100410899C (zh) 2008-08-13

Family

ID=37443624

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100785178A Expired - Fee Related CN100410899C (zh) 2005-05-24 2006-05-08 数据处理系统中的数据处理的方法和装置

Country Status (2)

Country Link
US (1) US7467262B2 (zh)
CN (1) CN100410899C (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458663B (zh) * 2007-12-12 2010-12-08 宇瞻科技股份有限公司 储存装置的数据存取方法
CN107341114A (zh) * 2016-04-29 2017-11-10 华为技术有限公司 一种目录管理的方法、节点控制器和系统
CN108415873A (zh) * 2017-02-08 2018-08-17 Arm 有限公司 转发对监听请求的响应

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900019B2 (en) * 2006-05-01 2011-03-01 Arm Limited Data access target predictions in a data processing system
US8370720B2 (en) * 2009-08-19 2013-02-05 Ocz Technology Group, Inc. Mass storage device and method for offline background scrubbing of solid-state memory devices
CN102333108A (zh) * 2011-03-18 2012-01-25 北京神州数码思特奇信息技术股份有限公司 分布式缓存同步系统及方法
US9767042B2 (en) * 2015-02-25 2017-09-19 Intel Corporation Enhancing cache performance by utilizing scrubbed state indicators associated with cache entries
US11803924B2 (en) * 2022-01-27 2023-10-31 Pacaso Inc. Secure system utilizing a learning engine

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115358A (en) * 1995-06-05 2000-09-05 General Data Comm, Inc. Controlling the flow of ATM cells in an ATM network
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
US6122710A (en) * 1998-02-17 2000-09-19 International Business Machines Corporation Dynamic word line driver for cache
US6415358B1 (en) 1998-02-17 2002-07-02 International Business Machines Corporation Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US7516205B2 (en) * 2004-08-16 2009-04-07 Hewlett-Packard Development Company, L.P. System and method for concurrently decoding and transmitting a memory request

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458663B (zh) * 2007-12-12 2010-12-08 宇瞻科技股份有限公司 储存装置的数据存取方法
CN107341114A (zh) * 2016-04-29 2017-11-10 华为技术有限公司 一种目录管理的方法、节点控制器和系统
CN107341114B (zh) * 2016-04-29 2021-06-01 华为技术有限公司 一种目录管理的方法、节点控制器和系统
CN108415873A (zh) * 2017-02-08 2018-08-17 Arm 有限公司 转发对监听请求的响应
CN108415873B (zh) * 2017-02-08 2024-03-22 Arm 有限公司 转发对监听请求的响应

Also Published As

Publication number Publication date
US20060271741A1 (en) 2006-11-30
CN100410899C (zh) 2008-08-13
US7467262B2 (en) 2008-12-16

Similar Documents

Publication Publication Date Title
CN100520738C (zh) 更新无效一致状态的方法、数据处理系统和高速缓存系统
CN100428195C (zh) 数据处理系统和方法
CN1869957A (zh) 数据处理系统中的数据处理方法和装置
CN1866222A (zh) 用于初始化存储器块的处理器、数据处理系统和方法
CN1873628A (zh) 数据处理系统和方法
CN101030171A (zh) 减少无效一致状态的数据处理系统、高速缓存系统和方法
CN100570582C (zh) 数据处理系统和方法
US8140770B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
CN100476760C (zh) 用于分级高速缓存行替换的方法、系统及装置
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
US8489819B2 (en) Victim cache lateral castout targeting
CN101055545A (zh) 数据处理系统中初始化存储块的方法、处理器、数据处理系统
CN1262942C (zh) 利用无数据事务获得全局促进工具的方法、设备和系统
CN1869956A (zh) 数据处理系统中的数据处理的方法和装置
CN101042678A (zh) 数据处理的单元、系统和方法
CN101162442A (zh) 支持共享全局一致性状态的处理器、数据处理系统和方法
CN1991795A (zh) 用于信息处理的系统和方法
CN101127008A (zh) 用于预测性选择预取操作的范围的数据处理系统和方法
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
TWI380173B (en) Data processing system, cache memory and method for providing cache coherency
CN1869955A (zh) 数据处理系统中的数据处理的方法和装置
JPH10214224A (ja) コンピュータ・システムでのメモリ・ストレージ・モードの効果的な選択
CN101005446A (zh) 选择操作的广播范围的数据处理系统、方法和处理单元
CN100432969C (zh) 允许i/o写操作管道化及多操作范围的数据处理系统与方法

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: 20080813