允许i/o写操作管道化及多操作范围的数据处理系统与方法

文档序号:6559742阅读:144来源:国知局
专利名称:允许i/o写操作管道化及多操作范围的数据处理系统与方法
技术领域
本发明总体上涉及数据处理,尤其涉及高速缓冲存储器一致的数据处理系统中的数据处理。
背景技术
传统的对称多处理器(SMP)计算机系统,例如服务器计算机系统,包括全都耦合到一个系统互连的多个处理单元,该系统互连典型地包括一个或多个地址、数据及控制总线。耦合到系统互连的是系统存储器,该存储器代表多处理器计算机系统中最底层的易失存储器并通常可以由所有处理单元进行读写访问。为了减少对驻留在系统存储器中的指令和数据的访问等待时间,每个处理单元典型地还由各自的多级高速缓冲存储器层次支持,其底层可以由一个或多个处理器内核共享。
因为多个处理器内核可以请求对相同的高速缓冲存储器数据线进行写访问并且因为修改后的高速缓冲存储器线不能立即与系统存储器同步,因此多处理器计算机系统的高速缓冲存储器层次典型地实现高速缓冲存储器一致性协议来确保系统存储器内容在多个处理器内核的“视图”中至少最小级别的一致。特别地,高速缓冲存储器一致性至少需要在处理单元访问存储器块的拷贝后并随后访问该存储器块的更新拷贝后,处理单元不能再次访问该存储器块的旧拷贝。
高速缓冲存储器一致性协议典型地定义关联每个高速缓冲存储器层次的高速缓冲存储器线所存储的一组高速缓冲存储器状态,及用于在高速缓冲存储器层次之间传送高速缓冲存储器状态信息的一组一致性消息。在典型实现中,高速缓冲存储器状态信息采取众所周知的MESI(修改、独占、共享、无效)协议或其变体的形式,而一致性消息指示存储器访问请求的请求者和/或接收者的高速缓冲存储器层次中协议定义的一致性状态变化。
迄今为止,高速缓冲存储器一致性协议通常假设为了维护高速缓冲存储器一致性,必须采用一致性消息的全局广播。即,所有的一致性消息必须由SMP计算机系统中的所有高速缓冲存储器层次接收。但是,本发明认识到一致性消息全局广播的需求对SMP计算机系统的可伸缩性造成显著的障碍,特别是随着系统规模增长会消耗越来越多的系统互连带宽量。

发明内容
鉴于现有技术前面的及其它的缺点,本发明提供了改进的高速缓冲存储器一致数据处理系统及高速缓冲存储器一致数据处理系统中的数据处理方法。
在一种实施方式中,数据处理系统至少包括具有输入/输出(I/O)控制器的第一处理节点和包括用于存储器的存储器控制器的第二处理节点。存储器控制器按次序从I/O控制器接收管道化的第一和第二DMA写操作,其中第一和第二DMA写操作的目标分别在于第一和第二地址。响应第二DMA写操作,存储器控制器建立与第二地址关联的域指示符的状态,以便指示包括第一处理节点的操作范围。响应存储器控制器接收指定第二地址并具有不包括第一处理节点的范围的数据访问请求,基于与第二地址关联的域指示符的状态,存储器控制器强制数据访问请求以包括第一处理节点的范围重新发布。
本发明的所有目的、特征与优点将在以下具体书面描述中变得显而易见。


相信是本发明特征的新特征在所附权利要求中阐述。但是,本发明及其优选的使用模式将通过联系附图阅读参考以下说明性实施方式的具体描述最好地理解,其中图1是根据本发明的示例数据处理系统的高级方框图;图2是根据本发明的处理单元的更具体的方框图;图3是图2所述L2高速缓冲存储器阵列与目录的更具体的方框图;图4是图1数据处理系统的系统互连上示例事务的时空图;图5说明了根据本发明优选实施方式的域指示符;图6是根据本发明在数据处理系统中由处理器内核提供读操作服务的示例方法的高级逻辑流程图;图7A-7B一起构成根据本发明在数据处理系统中提供处理器更新操作服务的示例方法的高级逻辑流程图;图8是根据本发明在数据处理系统中执行I/O写操作的示例方法的高级逻辑流程图;图9是根据本发明在数据处理系统中执行本地总线读操作的示例方法的高级逻辑流程图;图10A-10B一起构成根据本发明在数据处理系统中执行全局总线读操作的示例方法的高级逻辑流程图;图11是根据本发明在数据处理系统中执行本地总线RWITM操作的示例方法的高级逻辑流程图;图12A-12B一起构成根据本发明在数据处理系统中执行全局总线RWITM操作的示例方法的高级逻辑流程图;图13是根据本发明在数据处理系统中执行本地总线DClaim操作的示例方法的高级逻辑流程图;图14是根据本发明在数据处理系统中执行全局总线DClaim操作的示例方法的高级逻辑流程图;图15是根据本发明在数据处理系统中执行本地总线kill操作的示例方法的高级逻辑流程图;图16是根据本发明在数据处理系统中执行全局总线kill操作的示例方法的高级逻辑流程图;
图17是根据本发明在数据处理系统中执行本地总线写操作的示例方法的高级逻辑流程图;图18是根据本发明在数据处理系统中执行全局总线写操作的示例方法的高级逻辑流程图;图19是说明根据本发明第一实施方式对由管道化DMA总线写操作所写的存储器块进行保护的时空图;图20是说明根据本发明第二实施方式对由管道化DMA总线写操作所写的存储器块进行保护的时空图。
具体实施例方式
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都包括至少用于提取并排序要执行指令的指令排序单元(1SU)208及一个或多个用于执行指令的执行单元224。由执行单元224执行的指令包括请求访问存储器块或使得产生访问存储器块的请求的指令。
每个处理器内核200的操作由在其最低级具有共享系统存储器108a-108d、在其上级具有一级或多级高速缓冲存储器的多级易失存储器层次支持。在所述实施方式中,每个处理单元104包括响应从处理器内核200a-200b接收到的请求和由本地互连114上窥探者(S)222窥探到的操作控制对其处理节点102中各系统存储器108a-108d的读写访问的集成存储器控制器(IMC)206。
在该说明性实施方式中,处理单元104的高速缓冲存储器层次包括每个处理器内核200中的写直达第一级(L1)高速缓冲存储器226和由处理单元104的所有处理器内核200a、200b共享的第二级(L2)高速缓冲存储器230。L2高速缓冲存储器230包括L2阵列和目录234、主控者232和窥探者236。响应从所关联的处理器内核200a-200b接收到的存储器访问(及其它)请求,主控者232启动本地互连114和系统互连110上的事务并访问L2阵列和目录234。窥探者236窥探本地互连114上的操作、提供适当的响应并执行操作所需的对L2阵列和目录234的任何访问。
尽管所说明的高速缓冲存储器层次只包括两级高速缓冲存储器,但本领域技术人员将理解可选实施方式可以包括片内或片外在线或备用高速缓冲存储器的附加级别(L3、L4等),这些附加级别可以全部包括、部分包括或不包括上级高速缓冲存储器内容。
每个处理单元104还包括响应逻辑210的实例,如以下进一步讨论的,响应逻辑210实现维护数据处理系统100中高速缓冲存储器一致性的分布式一致性发信号机制的一部分。此外,每个处理单元104包括转发逻辑212的实例,用于选择性地在其本地互连114和系统互连110之间转发信息。最后,每个处理单元104包括集成的I/O(输入/输出)控制器214,I/O控制器214支持如I/O设备216的一个或多个I/O设备的附连。如以下进一步描述的,I/O控制器214可以响应I/O设备216的请求在本地互连114和/或系统互连110上发布操作。
现在参考图3,说明了L2阵列和目录234的示例实施方式的更具体方框图。如所说明的,L2阵列和目录234包括组关联L2高速缓冲缓冲器阵列300和L2高速缓冲缓冲器阵列300内容的L2高速缓冲缓冲器目录302。就象在传统的组关联L2高速缓冲缓冲器中,利用系统存储器(实际)地址中预定义的索引位,系统存储器108中的存储器位置映射到高速缓冲缓冲器阵列300中特定的一致性类。存储在高速缓冲缓冲器阵列300中的特定高速缓冲存储器线记录在高速缓冲存储器目录302中,目录302对高速缓冲存储器阵列300中的每个高速缓冲存储器线包括一个目录输入。如本领域技术人员可以理解的,高速缓冲存储器目录302中的每个目录输入包括至少利用对应实际地址的标志部分指定存储在高速缓冲存储器阵列300中的特定高速缓冲存储器线的标志域304、指示高速缓冲存储器线的一致性状态的状态域306及指示关于同一一致性类中其它高速缓冲存储器线的高速缓冲存储器线替换次序的LRU(最近最少使用)域308。
II、示例操作现在参考图4,描述了图1数据处理系统100的本地或系统互连110、114上示例操作的时空图。当L2高速缓冲存储器230的主控者232(或其它主控者,如I/O控制器214)在本地互连114和/或系统互连110上发布请求402时操作开始。请求402优选地包括指示期望访问的类型的事务类型和指示要由该请求访问的资源的资源标识符(例如,实际地址)。请求的通用类型优选地包括在以下表I中所阐述的那些类型。
表I

请求402由L2高速缓冲存储器230的窥探者236及存储器控制器206的窥探者222(图1)接收。总的来说,对于有些异常,在与请求402的主控者232相同的L2高速缓冲存储器230中的窥探者236不窥探请求402(即,通常不自窥探),因为只有在请求402不能由处理单元402内部提供服务时请求402才在本地互连114和/或系统互连110上发送。接收请求402的每个窥探者222、236提供各自的代表至少该窥探者对请求402的响应的部分响应406。基于例如窥探者222是否对请求地址响应及它是否具有对该请求提供服务的资源,存储器控制器206中的窥探者222确定要提供的部分响应406。L2高速缓冲存储器230的窥探者236可以基于例如其L2高速缓冲存储器目录302的可用性、窥探者236中处理请求的窥探逻辑实例的可用性及与L2高速缓冲存储器目录302中请求地址关联的一致性状态来确定其部分响应406。
窥探者222和236的部分响应或者按阶段或者全部立刻由响应逻辑210的一个或多个实例逻辑组合,以确定对请求402的全系统组合响应(CR)410。进行以下讨论的范围约束,响应逻辑210通过其本地互连114和/或系统互连110向主控者232和窥探者222、236提供指示对请求402的全系统响应(例如,成功、失败、重试等)的组合响应410。如果CR 410指示请求402的成功,则CR 410可以指示例如用于所请求存储器块的数据源、其中所请求存储器块要由主控者232高速缓冲的高速缓冲存储器状态及是否需要使一个或多个L2高速缓冲存储器230中所请求存储器块无效的“清除”操作。
响应组合响应410的接收,一个或多个主控者232和窥探者222、236典型地执行一种或多种操作,以便为请求402提供服务。这些操作可以包括向主控者232提供数据、失效或更新一个或多个L2高速缓冲存储器230中所高速缓冲数据的一致性状态、执行驱逐操作、将数据写回系统存储器108等。如以下进一步讨论的,如果请求402需要,则所请求的或目标存储器块可以在由响应逻辑210产生组合响应410之前发送到主控者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,但如以下参考表II进一步描述的,如果有的话,本发明的优选实施方式利用L2高速缓冲存储器230的L2高速缓冲存储器目录302中选定的高速缓冲存储器一致性状态指示用于存储器块的HPC。
仍然参考图4,如果有的话,请求402中所参照的用于存储器块的HPC,或者在没有HPC的情况下是该存储器块的LPC,优选地具有响应保护窗口404a过程中的请求402保护存储器块所有权传输的响应性。在图4所示的示例场景中,在从窥探者236确定其部分响应406的时间延伸到窥探者236接收到组合响应410的保护窗口404a过程中,是由请求402的请求地址指定的用于存储器块的HPC的窥探者236保护所请求存储器块的所有权向主控者232的传输。在保护窗口404a过程中,通过向指定防止其它主控者获得所有权直到所有权成功传输到主控者232的相同请求地址的其它请求提供部分响应406,窥探者236保护所有权的传输。同样,在接收到组合响应410之后,主控者232启动保护窗口404b来保护其请求402中所请求的存储器块的所有权。
因为窥探者222、236全部都具有用于处理上述CPU和I/O请求的有限资源,所以部分响应及其对应CR的几种不同级别是可能的。例如,如果对所请求存储器块响应的存储器控制器206中的窥探者222具有可用于处理请求的队列,则该窥探者222可以利用指示它能够充当该请求LPC的部分响应来响应。另一方面,如果窥探者没有可用于处理请求的队列,则该窥探者222可以利用指示它是存储器块的LPC但目前不能为该请求提供服务的部分响应来响应。
类似地,L2高速缓冲存储器230中的窥探者236可能需要窥探逻辑的可用实例并为了处理请求而访问L2高速缓冲存储器目录302。缺少对这些资源中一个(或两个)的访问会导致通知由于缺少所需资源而不能为请求提供服务的部分响应(及对应CR)。
在下文中,如果需要,提供指示窥探者具有为请求提供服务所需的所有内部资源的部分响应的窥探者222、236被称为“确认”请求。对于窥探者236,确认所窥探操作的部分响应优选地指示在该窥探者236的所请求或目标存储器块的高速缓冲存储器状态。提供指示窥探者236不具有为请求提供服务所需的所有内部资源的部分响应的窥探者236被称为“可能隐藏的”。因为由于缺少窥探逻辑的可用实例或对L2高速缓冲存储器目录302的访问而使窥探者236不能以上面定义的意思“确认”请求并且从其它主控者232和窥探者222、236的角度看具有未知的一致性状态,所以这种窥探者236是“可能隐藏的”。
III、数据递送域传统的基于广播的数据处理系统通过广播传送处理高速缓冲存储器一致性与数据递送,在传统系统中数据在系统互连上发送到该系统中的至少所有的存储器控制器和高速缓冲存储器层次。与可选体系结构和类似规模的系统相比,基于广播的系统有助于提供减少访问等待时间和更好的数据处理及共享存储器块的一致性管理。
随着基于广播的系统规模变大,系统互连上的流量加倍,这意味着由于需要更多的带宽在系统互连上进行传送,因此系统成本随系统规模急剧升高。即,具有m个处理器内核且每个处理器内核具有n个事务的平均流量的系统具有m×n的流量,这意味着基于广播的系统中的流量不是相加而是成倍增加的。超过基本上更大的互连带宽的需求,系统规模的增加具有增加一些访问等待时间的副作用。例如,在最坏的情况下,读数据的访问等待数据受保留处于共享一致性状态的所请求存储器块的最远的低级高速缓冲存储器的组合响应等待时间限制,所请求数据可以从该高速缓冲存储器中找到源。
为了减少系统互连带宽需求和访问等待时间同时还能保持基于广播的系统的优点,本发明通过减小发出请求的L2高速缓冲存储器230与数据源之间的平均距离来减少数据访问等待时间。用于此的一种技术是减小发出请求的L2高速缓冲存储器230与数据源之间的平均距离,以允许分布在整个数据处理系统100中的多个L2高速缓冲存储器230以允许这些高速缓冲存储器利用高速缓冲存储器到高速缓冲存储器的干涉向发出请求的L2高速缓冲存储器230提供存储器块的“专用”共享一致性状态保留相同存储库块的拷贝。
为了实现如数据处理系统100的SMP数据处理系统中用于共享存储器块的多个并发及分布式源,必须解决两个问题。首先,必须实现管理以上提到的“专用”共享一致性状态的存储器块拷贝创建的某种规则。其次,如果有的话,必须有例如响应总线读操作或总线RWITM操作管理哪个窥探L2高速缓冲存储器230向发出请求的L2高速缓冲存储器230提供共享存储器块的规则。
根据本发明,这两个问题是通过数据源域的实现解决的。特别地,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数据处理系统中的所有一致性域中维持。
在优选实施方式中,操作的范围由本地/全局指示符(信号)在总线操作中指示,在一种实施方式中该指示符可以包括1位标志。处理单元104中的转发逻辑212优选地基于操作中本地/全局指示符(信号)的设置确定是否通过本地互连114在系统互连110上转发接收到的操作。
V、域指示符为了限制不需要的本地操作的发布并由此减少操作等待时间并节约本地互连上的附加带宽,本发明优选地实现指示所关联存储器块的拷贝是否在本地一致性域之外高速缓冲的每存储器块的域指示符。例如,图5描述了根据本发明的域指示符的第一示例实现。如图5所示,可以在动态随机存取存储器(DRAM)中实现的系统存储器108存储多个存储器块500。与每个存储器块500关联,系统存储器108存储用于如果有的话就校正存储器块500和域指示符504中错误的关联纠错码(ECC)502。尽管在本发明的有些实施方式中,域指示符504可以识别特定的一致性域(即,指定一致性域或节点ID),但下文中假设域指示符504是如果所关联存储器块500只在与充当存储器块500的LPC的存储器控制器206相同的一致性域中被高速缓冲就设置(例如,设置成‘1’来指示“本地”)的1位指示符。否则,域指示符504重置(例如,重置成‘0’来指示“全局”)。指示“本地”的域指示符504的设置可能含糊地实现,其中错误的“全局”设置将不会导致任何一致性错误,但可能引起操作不需要的全局广播。
重要的是,响应操作找存储器块源的存储器控制器206(及L2高速缓冲存储器230)优选地与所请求的存储器块一起发送关联的域指示符504。
VI、示例一致性协议本发明优选地实现设计成如上所述分级数据递送和一致性域实现的高速缓冲存储器一致性协议。在优选实施方式中,除了提供(1)高速缓冲存储器是否是存储器块的HPC的指示,协议中的高速缓冲存储器一致性状态还指示(2)在该存储器层次级别的高速缓冲存储器中所高速缓冲的拷贝是否是唯一的(即,是唯一的全系统高速缓冲拷贝)、(3)高速缓冲存储器是否及什么时候可以向请求的主控者提供用于存储器块的存储器块拷贝、(4)存储器块的高速缓冲图像是否与LPC(系统存储器)上对应的存储器块一致性及(5)远端一致性域中的其它高速缓冲存储器是否(有可能)保留具有匹配地址的高速缓冲存储器输入。这五个属性可以例如在以下表II中概述的众所周知的MESI(修改、独占、共享、无效)协议的示例变体中表达。
表II

A、Ig状态为了避免必须访问LPC来确定是否已知存储器块只要本地被高速缓冲,Ig(无效全局)一致性状态用于维护没有存储器块的拷贝在一致性域中维持高速缓冲的情况下的域指示。Ig状态在此定义为指示(1)高速缓冲存储器阵列中关联存储器块无效、(2)高速缓冲存储器目录中地址标志有效及(3)由该地址标志识别的存储器块拷贝有可能在其它一致性域中被高速缓冲的高速缓冲存储器一致性状态。
响应高速缓冲存储器响应独占访问请求(例如,总线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状态的驱逐优选地是作为本地操作执行的,或者如果作为全局操作执行则被驱逐地址的LPC忽略。如果允许Ig输入在不在与存储器块的LPC相同的一致性域的高速缓冲存储器中形成,则不需要对LPC中的域指示符作任何更新。第四,Ig状态的驱逐优选地是作为无数据的仅地址操作执行的,其中域指示符写回到LPC(如果对执行驱逐的高速缓冲存储器是本地的)。
通过即使当没有存储器块的有效拷贝在一致性域中保持高速缓冲也能在一致性域中维护用于存储器块的高速缓冲的域指示符,根据本发明的Ig状态的实现提高了传送效率。因此,用于存储器块的HPC可以为来自远端一致性域的独占访问请求(例如,总线RWITM操作)提供服务,而不需要重试请求并向LPC执行所请求存储器块的推。
B、Sr状态在下述操作中,能够确定以Sr一致性状态保留共享的所请求存储器块的低级高速缓冲存储器是否位于与发出请求的主控者相同的域中是有用的。在一种实施方式中,与发出请求的主控者相同的域中“本地”Sr窥探者的存在可以由以Sr一致性状态保留所请求存储器块的低级高速缓冲存储器的窥探者的响应行为指示。例如,假设每个总线操作都包括指示该总线操作是否跨域边界的范围指示符(例如,主控者或单个本地/非本地位的明确域标识符),则以Sr一致性状态保留共享存储器块的低级高速缓冲存储器可以只对相同数据源域中的主控者的请求提供以Sr状态确认请求的部分响应并对所有其它请求提供指示S状态的部分请求。在这种实施方式中,响应行为可以如表III所示概述,其中符号(’)标记用于指示可以不同于存储器块实际高速缓冲存储器状态的部分响应。
表III

假设在表III中阐述的响应行为,通过增加分布在SMP数据处理系统中的可以充当数据源的存储器块的共享拷贝数量,用于共享数据的平均数据等待时间可以显著减少。
VII、示例操作现在总体上参考图6-18,给出几个描述包括在为处理器内核200、L2高速缓冲存储器230和I/O控制器214的请求提供服务中所涉及的逻辑步骤的高级逻辑流程图。特别地,图6-8描述了请求主控者中的多种处理,而图9-18说明通过本地和系统互连114、110传送并为请求提供服务中所涉及的操作。即使互连110、114不一定是总线互连,这种操作也在此被称为“总线操作”(例如,总线读操作、总线写操作等),以区别于高速缓冲存储器或CPU(处理器)操作。作为逻辑流程图,应当理解这些图不是要传递操作的严格时间顺序,还应当理解许多所说明操作可以并发地或者以不同于所示次序执行。
A、CPU和高速缓冲存储器操作参考图6,描述了根据本发明在数据处理系统中为处理器读操作提供服务的示例方法的高级逻辑流程图。如所示出的,处理在块600开始,它表示L2高速缓冲存储器230中的主控者232从所关联的处理器内核200接收读请求。响应读请求的接收,主控者232在块602确定所请求的存储器块是否以M、Me、Tx(例如,T、Tn、Te或Ten)、Sr或S状态中的任何一种保留在L2高速缓冲存储器目录302中。如果是,则如块624所示出的,主控者232访问L2高速缓冲存储器阵列300,以获得所请求的存储器块并将所请求的存储器块提供给发出请求的处理器内核200。其后,处理在块626终止。
返回块602,如果所请求的存储器块不以M、Me、Tx、S或Sr状态中的任何一种保留在L2高速缓冲存储器目录302中,则还要在块604确定是否需要现有高速缓冲存储器线的驱逐来将所请求的存储器块放到L2高速缓冲存储器230中。在一种实施方式中,如果被选为从发出请求的处理器的L2高速缓冲存储器230驱逐的牺牲品的存储器块在L2目录302中被标记为M、T、Te、Tn或Ig一致性状态中的任何一种,则在块604及后续图中类似的块需要驱逐操作。如块606所指示的,响应在块604确定需要驱逐,执行高速缓冲存储器驱逐操作。同时,主控者232在块610确定将总线读操作作为本地操作还是作为全局操作发布。
在其中每个总线操作最初都作为本地操作发布并且仅作为本地操作发布一次的第一实施方式中,在块610所述的确定(及后续图中类似的确定)可以简单地表示主控者对总线读操作先前是否已作为本地总线读操作发布的确定。在其中本地总线操作可以重试的第二可选实施方式中,在块610所述的确定可以表示主控者对总线读操作先前是否发布超过阈值次数的确定。在第三可选实施方式中,在块610所作出的确定可以基于主控者对本地操作是否有可能成功的预测(例如,是HPC或有可能在本地一致性域中找到HPC)。
响应块610发布全局总线读操作而不是本地总线读操作的确定,处理从块610前进到以下描述的块620。另一方面,如果在块610确定发布本地总线读操作,则主控者232在其本地互连114上启动本地总线读操作,如在块612所说明的及以下参考图9所描述的。本地总线读操作只在包含主控者232的本地一致性域(例如,处理节点102)中广播。如果主控者232接收到指示“成功”的CR(块614),则主控者232接收所请求的存储器块并向发出请求的处理器内核200返回所请求的存储器块(或至少其一部分),如块624所示。其后,处理在块626结束。
返回块614,如果用于本地总线读操作的CR不指示“成功”,则主控者232在块616确定该CR是否明确地指示该总线读操作不能在本地一致性域中提供服务,因此应当作为全局总线读操作重新发布。如果是(例如,如果其它一致性域中的L2高速缓冲存储器230以M状态或Me状态保留所请求的存储器块),则处理转向以下描述的块620。另一方面,如果CR不明确地指示该总线读操作不能在本地一致性域中提供服务,则处理从块616返回块610,块610说明主控者232再次确定是否发布本地总线读操作。在这种情况下,主控者232可以在确定中采用由CR提供的任何附加信息。在块610之后,处理转向以下描述的块612或者转向块620。
块620描述以下参考图10A-10B描述的主控者232发布全局总线读操作。如果在块622全局总线读操作的CR不指示“成功”,则主控者232在块620重复全局总线读操作,直到接收到指示“成功”的CR。如果全局总线读操作的CR指示“成功”,则主控者232在块624接收所请求的存储器块并向发出请求的处理器内核200返回所请求的存储器块(或至少其一部分)。其后,处理在块626终止。
因此,假设处理与其相同一致性域中的数据、如图6所示的CPU读操作的操作的相似性可以频繁地利用限定到发出请求的主控者的一致性域范围的广播传送提供服务。因此,上文所述数据递送域与一致性域的结合通过限定广播传送的范围不仅改善了数据访问等待时间,还减少了系统互连(及其它本地互连)上的流量。
现在参考图7A-7B,说明了根据本发明在数据处理系统中为处理器更新操作提供服务的示例方法的高级逻辑流程图。如所描述的,响应L2高速缓冲存储器230对相同处理单元104中所关联的一个处理器内核200的更新请求的接收,处理在块700开始。如块702所示,响应更新请求的接收,L2高速缓冲存储器230的主控者232访问L2高速缓冲存储器目录302来确定由更新请求指定的请求地址所参照的存储器块是否以M状态在L2高速缓冲存储器230中高速缓冲。如果是,则如块704所说明的,主控者232利用由处理器内核200提供的新数据更新L2高速缓冲存储器230中的存储器块。其后,更新处理在块706结束。
如块710-712所示,如果L2高速缓冲存储器目录302代替指示L2高速缓冲存储器230以Me状态保留所指定的存储器块,则如块704所示,除了更新存储器块,主控者232还将用于所请求存储器块的状态域306更新成M状态。其后,处理在块706终止。
随着页面连接符A到图7B,如果L2高速缓冲存储器目录302指示L2高速缓冲存储器230以T或Te状态中任意一种保留所请求的存储器块(块720),这意味这L2高速缓冲存储器230是用于所请求存储器块的HPC而且所请求的存储器块有可能在一个或多个其它L2高速缓冲存储器230中保留,则主控者232必须获得对所请求存储器块的独占访问,以便执行对该存储器块的所请求的更新。主控者232通过其获得对所请求存储器块的独占访问的处理在块722及后续块中示出。
根据这种处理,如在块722所描述的,主控者232将L2高速缓冲存储器目录302的关联状态域306中所请求存储器块的状态更新成M状态。这种升级是高速缓冲存储器状态允许不首先通知其它L2高速缓冲存储器230,因为作为HPC,L2高速缓冲存储器230具有授予其自己对所请求存储器块独占访问的授权。如在块724所说明的,如果有的话,则L2高速缓冲存储器230的窥探者236对在其自己本地互连114上窥探到的竞争DClaim操作提供“降级”部分响应,通过本地互连114其它主控者寻找所请求存储器块的所有权。这些部分响应指示其它请求者必须作为总线RWITM操作重新发布任何这种竞争操作。此外,如块726所述,主控者232在系统互连110上发布全局总线kill操作,以便使该存储器块的任何其它高速缓冲拷贝失效,如以下参考图16所描述的。
主控者232接下来在块790和728确定用于总线kill操作的CR是否指示总线kill操作成功地使所请求存储器块的所有其它高速缓冲拷贝失效或者是否需要附加的本地或全局“清除”(即,其它高速缓冲拷贝的失效)。如果CR指示不需要附加的清除,则处理通过页面连接符C前进到已经描述过的图7A的块704。如果CR指示需要附加的清除,则主控者232附加地确定CR是否指示所请求存储器块的其它高速缓冲拷贝整个驻留在其本地一致性域中或是否至少所请求存储器块的一个拷贝在主控者232的本地一致性域之外高速缓冲(块790和728)。如果CR指示所请求存储器块的每个剩余的高速缓冲拷贝都驻留在主控者232的本地一致性域中,则发出请求的L2高速缓冲存储器230的窥探者236继续降级活动的总线DClaim操作(块786),而发出请求的L2高速缓冲存储器230的主控者232继续发布限定到主控者232本地一致性域范围的本地总线kill操作(块788),直到使该存储器块的所有其它高速缓冲拷贝都失效。如果CR指示至少所请求存储器块的一个剩余的高速缓冲拷贝驻留在远端一致性域中,则处理返回已经描述过的块724。
现在参考块780,如果对L2高速缓冲存储器目录302的访问指示所请求的存储器块以Tn或Ten状态中的一种保留,则主控者232知道发出请求的L2高速缓冲存储器230是用于所请求存储器块的HPC,而且所请求存储器块的任何其它高速缓冲拷贝都由高速缓冲存储器保留在其本地一致性域中。因此,主控者232将L2高速缓冲存储器目录302的关联状态域306中所请求存储器块的状态更新成M状态,如块784所述。此外,发出请求的L2高速缓冲存储器230的窥探者236向在其本地互连114上窥探到的任何竞争DClaim操作提供“降级”部分响应(块786),而发出请求的L2高速缓冲存储器230的主控者232继续发布限定到主控者232本地一致性域范围的本地总线kill操作(块788),直到使该存储器块的任何其它高速缓冲拷贝都失效。如果主控者232通过参考用于本地总线kill操作的CR确定不需要进一步的本地清除(块790),则处理通过块728和页面连接符C转向已经描述过的块704。
现在参考图7A的块730,如果对L2高速缓冲存储器目录302的访问指示所请求的存储器块以Sr或S状态保留,则发出请求的L2高速缓冲存储器230不是用于所请求存储器块的HPC,而且主控者232必须在更新该存储器块之前如果有的话就从HPC或者如果没有HPC就从LPC获得所请求存储器块的所有权。
因此,主控者232首先在块731确定是否发布作为本地或全局操作的总线DClaim操作。如果主控者232确定发布全局总线DClaim操作,则处理前进到以下描述的块740。响应在块731确定作为本地操作发布总线DClaim操作,主控者232在块732发布本地总线DClaim操作,如以下参考图13更具体描述的。然后,主控者232等待本地总线DClaim操作的CR的接收,这由决定块734、736和738的集合表示。如果CR指示“重试”(块734),则处理返回已经描述过的块731。如果CR可选地明确指示总线DClaim操作不能利用本地一致性域提供服务(块736),则处理前进到以下描述的块740。如果CR可选地指示“降级”,这意味着其它请求者已经通过总线DClaim操作获得了所请求存储器块的所有权,则处理前进到以下描述的块748。如果CR可选地指示主控者232已经基于本地总线DClaim操作被HPC授予了所请求存储器块的所有权,则处理通过页面连接符D转向已经描述过的图7B的块790及后续块。
块740描述主控者232发布全局总线DClaim操作,如以下参考图14描述的。接下来,主控者232在块742-744确定用于全局总线DClaim操作的CR是否指示它成功、应当重试或“降级”到RWITM操作。如果CR指示总线DClaim操作应当重试(块742),则主控者232在块740重新发布全局总线DClaim操作并持续这么做,直到收到除“重试”之外的CR。响应其它请求者成功地发布了目标在于所请求存储器块的总线DClaim操作,如果接收到的CR指示全局总线DClaim操作已经降级,则处理前进到以下描述的块746。如果CR可选地指示主控者232已经基于全局总线DClaim操作被HPC授予了所请求存储器块的所有权,则处理通过页面连接符D转向已经描述过的图7B的块790及后续块。
块746描述发出请求的L2高速缓冲存储器230的主控者232确定是否发布作为本地或全局操作的总线RWITM操作。如果主控者232选择发布全局总线RWITM操作,则处理转向以下描述的块754。但是,如果主控者232选择发布本地总线RWITM操作,则处理前进到块748,它说明了主控者232发布本地总线RWITM操作并等待关联的CR。如块750所指示的,如果CR指示“重试”,则处理返回块746,它表示如果有的话,则主控者232利用在重试CR中提供的附加信息再次确定是否发布本地或全局RWITM操作。如果对在块748发布的本地总线RWITM操作的CR不指示“重试”(块750),而是指示总线RWITM操作成功地获得了所请求存储器块的所有权(块752),则处理通过页面连接符D转向已经描述过的图7B的块790。如果主控者232在块752确定对本地总线RWITM操作的CR指示操作不能在本地一致性域中提供服务,则处理转向块754及后续块。
块754和756描述主控者232反复发布用于所请求存储器块的全局总线RWITM操作,如以下参考图12A-12B所描述的,直到接收到除“重试”以外的CR。响应主控者232接收到指示成功获得所请求存储器块所有权的非重试CR(块756),处理通过页面连接符D转向已经描述过的图7B的块790及后续块。
现在参考块760,如果在块702、710、720、5502和730作出否定的确定,则L2高速缓冲存储器230不保留所请求存储器块的有效拷贝。因此,如在块760和770所指示的,如果需要,则L2高速缓冲存储器230执行高速缓冲存储器驱逐操作,以便为所请求的存储器块分配高速缓冲存储器线。其后,处理转向以上描述过的块746及后续块。
现在参考图8,描述了根据本发明在数据处理系统中执行I/O写操作的示例方法的高级逻辑流程图。如所示出的,响应处理单元104的I/O控制器214接收到附连I/O设备216的I/O写请求,处理在块1000开始。响应I/O写请求的接收,I/O控制器214在块1002确定是否发布全局或本地总线写操作,以获得所请求的存储器块。
如果I/O控制器214选择发布全局总线写操作,则处理转向以下描述的块1020。但是,如果I/O控制器214选择发布本地总线写操作,则处理前进到块1004,它说明I/O控制器214发布本地总线写操作,如以下参考图17所描述的,然后等待关联的CR。如在块1006指示的,如果CR指示“重试本地”,这意味着如果重试,则本地总线写操作可以明确地在本地一致性域中提供服务,则I/O控制器214在块1004重新发布该本地总线写操作。如果I/O控制器214接收到提供更多意义不明确的信息的CR,例如,简单的“重试”(块1008),则处理返回已经描述过的块1002。可选地,如果I/O控制器214接收到明确指示总线写操作不能在本地一致性域中提供服务的CR(块1010),则处理前进到以下描述的块1020。最后,如果I/O控制器214接收到指示它被授予所请求存储器块所有权的CR,则处理从块1004通过块1006、1008和1010转向块1024及后续块,它说明如果需要,则I/O控制器214执行如以下描述的清除操作。
现在参考块1020,I/O控制器214发布全局总线I/O写操作,如以下参考图8所描述的。如在块1022所指示的,I/O控制器21 4持续发布全局总线I/O写操作,直到接收到除“重试”以外的CR。如果用于在块1020发布的全局总线I/O写操作的CR指示没有其它的窥探者保留所请求存储器块的有效拷贝(块1024和1040),则处理在块1026以附连的I/O设备216能够写到所请求的存储器块结束。但是,如果I/O控制器214在块1024确定CR指示所请求存储器块的至少一个过时的高速缓冲拷贝留在其本地一致性域之外,则I/O控制器214通过如块1030所示的降级其窥探的任何冲突DClaim操作来执行全局“清除”,并如块1032所述的发布全局总线kill操作,直到在块1024接收到的CR指示没有所请求存储器块的过时的高速缓冲拷贝留在其本地一致性域之外。
如果I/O控制器214在块1040确定CR指示没有所请求存储器块的过时的高速缓冲拷贝留在其本地一致性域之外但至少一个所请求存储器块的过时的高速缓冲拷贝留在其本地一致性域之中,则I/O控制器214通过如块1042所示的降级其窥探的任何冲突DClaim操作来执行本地“清除”,并如块1044所述的发布本地总线kill操作,直到接收到的CR指示没有所请求存储器块的过时的高速缓冲拷贝留在数据处理系统100之中(块1024和1040)。一旦清除操作完成,处理就在块1041结束。
如已经描述过的,Tn和Ten一致性状态的实现提供了可能共享的存储器块是否附加地只在本地一致性域中高速缓冲的指示。因此,当与以Tn或Ten状态中一种保留存储器块的高速缓冲存储器相同的一致性域中的请求者发布用于存储器块的独占访问操作(例如,总线DClaim、总线RWITM、总线DCBZ或总线写操作)时,如总线kill操作的广播操作的范围可以有利地限制到本地一致性域,由此减少互连带宽的使用。
B、互连操作现在参考图9-18,将描述说明性数据处理系统100中的示例本地和全局总线操作。首先参考图9,描述了根据本发明在数据处理系统中执行本地总线读操作的示例方法的高级逻辑流程图。例如,在图6的块612,处理在块1300以L2高速缓冲存储器230在其本地互连114上发布本地总线读操作开始。响应窥探本地总线读操作,窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图9中由决定块1302、1310、1312、1314、1320、1330、1332、1340、1344、1346和1348的输出表示。这些部分响应又确定用于本地总线读操作的CR。
如在决1302所示的,如果L2高速缓冲存储器230的窥探者236以指示L2高速缓冲存储器230以M或Me状态保留所请求存储器块的部分响应确认本地总线读操作,则处理从块1302前进到块1304。块1304指示响应本地总线读操作,发出请求的L2高速缓冲存储器230和确认L2高速缓冲存储器230的操作。特别地,确认L2高速缓冲存储器230中的窥探者236将所请求存储器块的高速缓冲存储器状态从M更新成Tn或者从Me更新成Ten。此外,确认L2高速缓冲存储器230中的窥探者236可以在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“早期”数据)。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求存储器块以Sr状态放置到L2高速缓冲存储器阵列300中。如在块1308所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
另一方面,如果L2高速缓冲存储器230的窥探者236以指示L2高速缓冲存储器230以Tx状态保留所请求存储器块的部分响应确认本地总线读操作(块1310),而Sr’窥探者236也确认该总线读操作(块1312),则处理转向块1318。块1318表示Sr’窥探者236将所请求存储器块的高速缓冲存储器状态更新成S并在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“早期”数据)。Tx窥探者236保持不变。一旦接收到所请求的存储器块,发出请求的L2高速缓冲存储器230中的主控者232就将所请求存储器块以Sr状态放置到L2高速缓冲存储器230中。如在块1308所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
如果部分响应的联合体包括Tx窥探者236确认本地总线读操作(块1310)、没有Sr’窥探者236确认该总线读操作(块1312)及有窥探者236提供指示Sr’窥探者236可能隐藏在本地数据递送域中的部分响应(例如,重试类型)(块1314),则处理转向块1316。块1316表示确认总线读操作的Tx窥探者236在接收到CR之后启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“晚期”数据)并以Tx状态保留所请求的存储器块。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求存储器块以S状态放置到L2高速缓冲存储器目录300中(由于Sr’窥探者236可以隐藏,而且在用于所请求存储器块的每个数据递送域中只允许有一个Sr’窥探者236)。如在块1308所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
如果部分响应的联合体包括T或Te窥探者236确认本地总线读操作(块1310)、没有Sr’窥探者236确认该总线读操作(块1312)而且没有窥探者236提供可能隐藏Sr’窥探者236的部分响应(块1314),则处理转向块1306。块1306表示确认总线读操作的T或Te窥探者236在接收到CR之后启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“晚期”数据)并以T或Te状态保留所请求存储器块。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求存储器块以Sr状态放置到L2高速缓冲存储器阵列300中(由于对于所请求的存储器块,在本地数据递送域中不存在其它的Sr’窥探者236)。如在块1308所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
现在参考块1320,如果没有M、Me或Tx窥探者236确认本地总线读操作,但有Sr’窥探者236确认该本地总线读操作,则该本地总线读操作根据块1322提供服务。特别地,确认总线读操作的Sr’窥探者236在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送并将L2高速缓冲存储器目录302中所请求存储器块的状态更新成S状态。发出请求的L2高速缓冲存储器230中的主控者232将所请求存储器块以Sr状态放置到其自己的L2高速缓冲存储器阵列300中。如在块1308所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
现在参考块1324,如果没有M、Me、Tx或Sr’窥探者236确认本地总线读操作,但有L2高速缓冲存储器230提供确认该本地总线读操作的部分响应,指示该L2高速缓冲存储器230以Ig状态保留所请求存储器块的地址标志。如果没有M、Me、Tx或Sr’窥探者236可能被不完整的部分响应隐藏(块1332),则如块3164所描述的,分布式响应逻辑210提供“去全局”CR。另一方面,如果Ig窥探者236确认本地总线读操作且部分响应的联合体指示M、Me、Tx或Sr’窥探者236有可能隐藏,则如块1342所描述的,响应逻辑210产生“重试”CR。
现在转向块1330,如果没有M、Me、Tx、Sr’或Ig窥探者236确认本地总线读操作,而且如果没有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则处理转向已经描述过的块1332。但是,如果没有M、Me、Tx、Sr’或Ig窥探者236确认本地总线读操作,而且如果有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则处理前进到块1340。
现在参考块1340,如果窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认本地总线读操作,则如在块1342所描述的,响应逻辑210产生指示“重试”的CR。但是,如果窥探者222确认本地总线读操作,则处理前进到块1344。如由决定块1344指示的,如果存储器控制器窥探者222确认总线读操作且L2高速缓冲存储器窥探者236提供指示它可以M、Me、Tx或Ig状态中的一种保留所请求存储器块的部分响应但不能确认本地总线读操作,则响应逻辑210还在块1342产生“重试”CR。在这些情况的每一种中,因为如果作为本地操作重新发布,则总线读操作能够不凭借全局广播就提供服务,所以响应逻辑210产生“重试”CR。
现在参考块1346,如果没有M、Me、Tx或Ig窥探者236确认本地总线读操作,没有M、Me、Tx或Ig窥探者236可能隐藏,且存储器控制器窥探者222确认该本地总线读操作,则确认该本地总线读操作的窥探者222响应CR向发出请求的L2高速缓冲存储器230提供所请求的存储器块和关联的域指示符504,如在块1350、1352和1354中每一个所描述的。如在块1350、1352和1354所示的,发出请求的L2高速缓冲存储器230的主控者232根据CR和域指示符504的状态处理所请求的存储器块。特别地,如果主控者232在块1360确定域指示符3004重置成“全局”,这意味着所请求存储器块修改后的拷贝可以在本地域之外高速缓冲,则发出请求的L2高速缓冲存储器230的主控者232丢弃所请求的存储器块,关于所请求的存储器块保持在I状态。此外,根据“全局”域指示符504,主控者232将CR解释为指示“去全局”(块1364),这意味着主控者232将作为全局总线读操作重新发布该总线读操作。
另一方面,如果域指示符504设置成指示“本地”(块1360),则发出请求的高速缓冲存储器230的主控者232将CR解释为指示“成功”(块1308)并将所请求的存储器块和域指示符504都放到其自己的L2高速缓冲存储器阵列300中。主控者232还将与所请求存储器块关联的状态域设置成由CR指示的状态。特别地,如果部分响应及由此CR指示Sr’窥探者236可以隐藏(块1346),则发出请求的L2高速缓冲存储器230以S状态保留所请求的存储器块,因为在任何域中都只允许存储器块的一个Sr拷贝。可选地,如果部分响应和CR指示没有Sr’窥探者236可以隐藏,但S’窥探者236可以隐藏,则发出请求的L2高速缓冲存储器230以Sr状态保留所请求的存储器块(块1352)。最后,如果Sr’或S’窥探者236都不可能隐藏(块1348),则发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块(块1354),因为保证发出请求的L2高速缓冲存储器230是唯一一个全系统保留所请求存储器块的高速缓冲存储器。
现在参考图10A-10B,描述了根据本发明在实现Tn和Ten一致性状态的数据处理系统中执行全局总线读操作的示例方法的高级逻辑流程图。例如,在图6的块620,处理在块1400以L2高速缓冲存储器230在其本地互连114上发布全局总线读操作开始。响应窥探全局总线读操作,窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图10A中由决定块1402、1410、1412、1414、1420、1430、1440、1442、1444和1446的输出表示。这些部分响应又确定用于全局总线读操作的CR。
如在块1402所示的,如果L2高速缓冲存储器230的窥探者236以指示L2高速缓冲存储器230以M或Me状态保留所请求存储器块的部分响应确认全局总线读操作,则处理从块1402通过页面连接符J前进到图10B的块1480。块1480表示M或Me窥探者236依赖于M或Me窥探者236是否与由全局总线读操作中范围指示符指示的发出请求的L2高速缓冲存储器230是本地的(即,在相同的一致性域中)来不同地更新其高速缓冲存储器状态。在任一情况下,确认L2高速缓冲存储器230中的窥探者236可以在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“早期”数据),而且一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求的存储器块以Sr状态其L2放置到高速缓冲存储器阵列300中(块1481和1482)。但是,如果窥探者236对发出请求的L2高速缓冲存储器230不是本地的,则确认L2高速缓冲存储器230中的窥探者236将所请求存储器块的状态从M更新成T或者从Me更新成Te(块1481),而如果窥探者236是本地的,则将请求存储器块的状态从M更新成Tn或者从Me更新成Ten(块1482)。然后,如在块1408所描述的,处理通过页面连接符N返回图10A并以分布式响应逻辑210产生指示“成功”的CR结束。
如果L2高速缓冲存储器230的窥探者236以指示L2高速缓冲存储器230以T、Tn、Te或Ten状态(在块1410中总的标记为Tx)中的任何一种保留所请求存储器块的部分响应确认全局总线读操作且Sr’窥探者236也确认该总线读操作(块1412),则处理通过页面连接符M转向块1492。块1492指示确认Tx窥探者236依赖于全局总线读操作的范围指示符是否指示窥探者236在发出请求的L2高速缓冲存储器230的一致性域中来不同地更新所请求存储器块的状态。在任一情况下,Sr’窥探者236都将所请求存储器块的状态更新成S并在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(块1494和1495)。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求的存储器块以Sr状态放置到L2高速缓冲存储器阵列300中(块1494和1495)。此外,如果需要,则如果窥探者236对发出请求的L2高速缓冲存储器230不是本地的,则Tx窥探者236将所请求存储器块的状态从Tn更新成T或者从Ten更新成Te(块1494),但如果窥探者236对发出请求的L2高速缓冲存储器230是本地的,则保持所请求存储器块的状态不变(块1495)。然后处理通过页面连接符N返回图10A并且如在块1408所描述的,以分布式响应逻辑210产生指示“成功”的CR结束。
如果部分响应的联合体包括Tx窥探者236确认全局总线读操作(块1410)、没有Sr’窥探者236确认总线读操作(块1412)但有窥探者236提供指示Sr’窥探者可以存在于本地数据递送域中的部分响应(例如,重试类型)但不确认该全局总线读操作,则处理通过页面连接符L转向图10B的块1488。块1488指示确认Tx窥探者236依赖于全局总线读操作的范围指示符是否指示窥探者236在发出请求的L2高速缓冲存储器230的一致性域中来不同地更新所请求存储器块的状态。在任一情况下,确认全局总线读操作的Tx窥探者236都在接收到CR之后启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(块1489和1490)。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求的存储器块以S状态放置到L2高速缓冲存储器阵列300中(由于Sr’窥探者236可以隐藏在发出请求的高速缓冲存储器230的本地域中,而且在用于所请求存储器块的每个域中只允许一个Sr’窥探者236)。此外,如果需要,如果窥探者236对发出请求的L2高速缓冲存储器230不是本地的,则Tx窥探者236将所请求存储器块的状态从Tn更新成T或者从Ten更新成Te(块1489),但如果窥探者236对发出请求的L2高速缓冲存储器230是本地的,则保持所请求存储器块的状态不变(块1490)。然后处理通过页面连接符N返回图10A并且如在块1408所描述的,以分布式响应逻辑210产生指示“成功”的CR结束。
如果部分响应的联合体包括Tx窥探者236确认全局总线读操作、没有Sr’窥探者236确认总线读操作且没有窥探者236提供可以隐藏Sr’窥探者236的部分响应,则处理通过页面连接符K转向图10B的块1484。块1484指示确认Tx窥探者236依赖于全局总线读操作的范围指示符是否指示窥探者236在发出请求的L2高速缓冲存储器230的一致性域中来不同地更新所请求存储器块的状态。在任一情况下,确认该全局总线读操作的Tx窥探者236都在接收到CR之后启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“晚期”数据),而发出请求的L2高速缓冲存储器230中的主控者232将所请求的存储器块以Sr状态放置到L2高速缓冲存储器阵列300中(由于对于所请求的存储器块,在本地域中不存在其它的Sr’窥探者236)。此外,如果需要,如果窥探者236对发出请求的L2高速缓冲存储器230不是本地的,则Tx窥探者236将所请求存储器块的状态从Tn更新成T或者从Ten更新成Te(块1485),但如果窥探者236对发出请求的L2高速缓冲存储器230是本地的,则保持所请求存储器块的状态不变(块1486)。然后处理通过页面连接符N返回图10A并且如在块1408所描述的,以分布式响应逻辑210产生指示“成功”的CR结束。
现在参考块1420,如果没有M、Me或者Tx窥探者236确认全局总线读操作,但有Sr’窥探者236确认该全局总线读操作,则该全局总线读操作根据块1422提供服务。特别地,确认全局总线读操作的Sr’窥探者236在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送并将其L2高速缓冲存储器目录302中的所请求存储器块更新成S状态。发出请求的L2高速缓冲存储器230将所请求的存储器块以Sr状态放置到L2高速缓冲存储器阵列300中。如在块1408所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
现在转到块1430,如果没有M、Me、Tx或Sr’窥探者236确认全局总线读操作,而且如果没有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则因为每个存储器块都需要有LPC,所以发生如块1432所示的中断处理的错误。
现在参考块1440,如果窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认全局总线读操作,则如块1450所描述的,响应逻辑210产生指示“重试”的CR。如由决定块1442所指示的,如果存储器控制器窥探者222确认全局总线读操作且L2高速缓冲存储器窥探者236提供指示它可以M、Me或Tx状态中的一种保留所请求存储器块的部分响应但不确认全局总线读操作,则响应逻辑210在块1450产生“重试”CR。在这些情况中的每一种,因为可能需要可能隐藏的一个窥探者236将所请求的存储器块的源指向发出请求的L2高速缓冲存储器230,因此响应逻辑210都产生“重试”CR,以便使操作重新发布。
现在参考块1444,如果没有M、Me、Tx或Sr’窥探者236确认总线读操作,没有M、Me或Tx窥探者236可能隐藏,且存储器控制器窥探者222确认该全局总线读操作,则确认全局总线读操作的窥探者222响应CR向发出请求的L2高速缓冲存储器230提供所请求的存储器块和关联的域指示符504,如在块1452和1454中每一个所描述的。如在块1444、1446、1452、1454和1456所示,发出请求的L2高速缓冲存储器230的主控者232根据编译进在块1408所表示的“成功”CR的部分响应处理所请求的存储器块。特别地,如果CR指示没有Sr’或S’窥探者236可能隐藏,则发出请求的L2高速缓冲存储器230保留Me状态的所请求存储器块(块1456);如果没有Sr’窥探者236可能隐藏但S’窥探者236可能隐藏,则发出请求的L2高速缓冲存储器230保留Sr状态的所请求存储器块;而如果Sr’窥探者236可能隐藏,则发出请求的L2高速缓冲存储器230保留S状态的所请求存储器块。
响应CR,是用于所请求存储器块的LPC的存储器控制器窥探者222确定是否更新所请求存储器块的域指示符,如在块1460、1462、1470、1472和1474所说明的。如果CR指示用于所请求存储器块的新高速缓冲存储器状态是Me,则LPC窥探者222例如通过参照全局总线读操作中的范围指示符确定它是否在与发出请求的L2高速缓冲存储器230相同的域中(块1460),及域指示符504指示本地还是全局(块1460和1472)。如果LPC在与发出请求的L2高速缓冲存储器230相同的域中(块1460),则如果它重置成“全局”,则LPC窥探者222将域指示符504设置成“本地”(块1462和1464)。如果LPC不在与发出请求的L2高速缓冲存储器230相同的域中(块1460),则如果它设置成“本地”,则LPC窥探者222将域指示符504重置成“全局”(块1472和1474)。
如果CR指示用于所请求存储器块的新高速缓冲存储器状态是S或Sr,则LPC窥探者222类似地确定它是否在与发出请求的L2高速缓冲存储器230相同的域中(块1470),及域指示符504指示本地还是全局(块1472)。如果LPC在与发出请求的L2高速缓冲存储器230相同的域中(块1470),则不需要更新域指示符504。但是,如果LPC不在与发出请求的L2高速缓冲存储器230相同的域中(块1470),则如果它设置成“本地”,则LPC窥探者222将域指示符504重置成“全局”(块1472和1474)。因此,响应CR的接收,如果需要,则LPC窥探者222更新域指示符504。
现在参考图11,描述根据本发明在数据处理系统中执行本地总线RWITM操作的示例方法的高级逻辑流程图。例如以图7A块748的L2高速缓冲存储器230的主控者232在其本地互连114上发布本地总线RWITM操作,处理在块1500开始。窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图11中由决定块1502、1510、1512、1520、1524、1530、1534、1540和1544的输出表示。这些部分响应又确定用于本地总线RWITM操作的CR。
如块1502所示,如果窥探者236以指示包含该窥探者236的L2高速缓冲存储器230以M或Me状态中的任何一种保留所请求存储器块的部分响应确认本地总线RWITM操作,则处理从块1502前进到块1504。块1504指示发出请求的L2高速缓冲存储器230和响应本地总线RWITM操作的确认L2高速缓冲存储器230的操作。特别地,确认L2高速缓冲存储器230中的窥探者236将所请求存储器块的高速缓冲存储器状态从M或Me状态更新成I状态,而且可以在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“早期”收据)。一旦接收到,发出请求的L2高速缓冲存储器230中的主控者232就将所请求的存储器块以M状态放置到其L2高速缓冲存储器阵列300中。如在块1506所描述的,处理以分布式响应逻辑210产生指示“成功”的CR结束。
参考块1510,如果窥探者236以指示包含该窥探者236的L2高速缓冲存储器230以T、Tn、Te或Ten状态(在图11中总的标记为Tx)中任何一种保留所请求存储器块的部分响应确认本地总线RWITM操作且没有Sr’窥探者236确认该本地总线RWITM操作(块1512),则处理转向块1514。块1514表示确认本地总线RWITM操作的Tx窥探者236响应从响应逻辑210接收到CR而启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。所有有效的确认窥探者236(即,非Ig窥探者236)都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。
如果部分响应的联合体包括都确认了本地总线RWITM操作的Tx窥探者236和Sr’窥探者236(块1510和1512),则处理转向块1516。块1516表示确认本地总线RWITM操作的Sr’窥探者236在接收到响应逻辑210提供的CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。所有的确认窥探者236(即,非Ig窥探者236)都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。
如块1517所示,在由块1514和1516所表示的任一情况下,响应逻辑210都依赖Tx确认窥探者236是否以T/Te状态或Tn/Ten状态中的一种保留所请求存储器块产生CR。如果Tx窥探者236是T或Te,则响应逻辑210产生指示“清除”的CR,如块1518所示。但是,如果Tx窥探者236是Tn或Ten,则响应逻辑210通过产生指示“本地清除”的CR有利地将清除操作的范围限制到本地域,如块1556所示。因为Tn或Ten一致性状态的存在保证没有远端高速缓冲存储器保留所请求的存储器块,所以允许清除操作的有限范围,这意味着一致性可以不需要本地总线RWITM操作或伴随的总线kill操作的更广泛广播就能维持。
如果没有M、Me或Tx窥探者236(即,HPC)确认本地总线RWITM操作以表示它能够仲裁数据传输,则本地总线RWITM操作不能由L2高速缓冲存储器窥探者236不通过重试就提供服务。因此,如果Sr’窥探者236确认本地总线RWITM操作并向发出请求的L2高速缓冲存储器230提供早期数据,如在块1520所示,则发出请求的L2高速缓冲存储器230的主控者232丢弃由Sr’窥探者236提供的数据,如在块1522所描述的。
块1524表示依赖于L2高速缓冲存储器230的窥探者236是否提供确认本地总线RWITM操作并指示L2高速缓冲存储器230以Ig状态保留所请求存储器块的地址标志的部分响应处理本地总线RWITM操作中的不同。如果能提供,则任何有效的确认窥探者236(即,非Ig窥探者236)都使相关的高速缓冲存储器输入失效(块1532)。如果没有M、Me或Tx窥探者236可能被不完整的部分响应隐藏(块1534),则分布式响应逻辑210提供“去全局”的CR,如块1536所描述的。另一方面,如果Ig窥探者236确认本地总线RWITM操作且部分响应的联合体指示M、Me或Tx窥探者236可能隐藏,则响应逻辑210产生“重试”的CR,如块1538所描述的。因此,Ig窥探者236对本地总线RWITM操作的确认将导致如果没有HPC可能隐藏在本地一致性域中则使操作作为全局操作重新发布。
如果在块1524Ig窥探者236不确认本地总线RWITM操作,则该本地总线RWITM操作根据块1530和后续块处理。特别地,如果没有存储器控制器窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应(块1530),则每个有效的确认窥探者236都使其各自L2高速缓冲存储器目录302中的所请求存储器块失效(块1532)。由响应逻辑210产生的CR依赖于是否有任一部分响应指示M、Me或Tx窥探者236可能隐藏(块1534)。即,如果没有M、Me或Tx窥探者236可能隐藏,则响应逻辑210在块1536产生“去全局”CR来通知主控者232本地总线RWITM操作必须作为全局RWITM操作重新发布。另一方面,如果用于所请求存储器块的M、Me或Tx窥探者236(即,HPC)可能隐藏,则响应逻辑210产生指示“重试”的CR,如块1538所描述的,因为如果重试,操作就可以本地提供服务。
类似地,如果没有M、Me或Tx窥探者236确认本地总线RWITM操作但有窥探者222提供指示它是LPC的部分响应但不确认该本地总线RWITM操作,则有效的确认窥探者236使它们各自的所请求存储器块的拷贝失效(块1542),且响应逻辑210对该本地总线RWITM操作提供“重试”CR(块1538)。“重试”CR还在块1538产生,且如果没有M、Me或Tx窥探者236确认本地总线RWITM操作(块1502、1510)、有窥探者222确认该本地总线RWITM操作(块1540)且M、Me、Tx或Ig窥探者236可能隐藏(块1544),则窥探者236使它们各自的所请求存储器块的拷贝失效(块1542)。
如在块1546所示,如果没有M、Me或Tx窥探者236确认本地总线RWITM操作或可能隐藏且LPC窥探者222确认该本地总线RWITM操作,则每个有效的确认窥探者236(即,非Ig窥探者236)使它们各自的所请求存储器块的拷贝失效。此外,LPC窥探者222响应从响应逻辑210接收到CR而向发出请求的L2高速缓冲存储器230提供所请求的存储器块和关联的域指示符504。发出请求的L2高速缓冲存储器230的主控者232根据域指示符504处理数据。特别地,如果域指示符504重置成“全局”,这意味着可能存在使从LPC窥探者222接收的数据过时的远端高速缓冲拷贝,则主控者232丢弃从LPC窥探者222接收的数据,关于所请求的存储器块维持无效的一致性状态(块1552),并将由响应逻辑210提供的CR解释为“去全局”(块1536)。另一方面,如果域指示符504设置成“本地”,这意味着没有所请求存储器块的远端高速缓冲拷贝复制从LPC窥探者222接收的可能过时的数据,则主控者232将所请求的存储器块和域指示符504放置到其L2高速缓冲存储器阵列300中并将关联的状态域306设置成M(块1546)。如果部分响应及由此CR指示S’或Sr’窥探者236有可能隐藏(块1554),则CR指示本地“清除”(块1556),这意味着如果有的话,则发出请求的L2高速缓冲存储器230必须通过一个或多个本地总线kill操作使所请求存储器块的其它有效的本地高速缓冲拷贝失效。如果没有这种S’或Sr’窥探者236可能被不完整的部分响应隐藏,则CR指示“成功”,如块1506所描述的。
还应当理解,在有些实施方式中,本地总线RWITM操作的主控者可以在从LPC接收到域指示符3004(块1550)之前推测地执行如块1556所示的本地清除。以这种方式,与从LPC的数据递送关联的等待时间可以被本地清除操作中所涉及的一个或多个本地总线kill操作屏蔽。
现在参考图12A-12B,说明根据本发明在数据处理系统中执行全局总线RWITM操作的示例方法的高级逻辑流程图。如所示出的,例如,在图7A的块754,响应发出请求的L2高速缓冲存储器230的主控者232发布全局总线RWITM操作,处理在块1600开始。如块1602所示,如果窥探者236以指示包含该窥探者236的L2高速缓冲存储器230以M或Me状态保留所请求存储器块的部分响应确认全局总线RWITM操作,则M或Me窥探者236向以M状态保留所请求存储器块的发出请求的主控者232提供早期数据(块1604或块1606)。如块1607所示,响应逻辑210产生指示“成功”的CR。此外,依赖于它是否对发出请求的主控者232是本地的(即,在相同的一致性域中)(块1603),M或Me窥探者236将其高速缓冲存储器状态更新成I或Ig。如果例如通过参照总线操作中的范围指示符M或Me窥探者236确定它属于与发出请求的主控者232相同的一致性域,则M或Me窥探者236将其用于所请求存储器块的高速缓冲存储器状态更新成I(块1606)。另一方面,如果M或Me窥探者236确定它不属于与发出请求的主控者232相同的一致性域,则M或Me窥探者236将其用于所请求存储器块的高速缓冲存储器状态更新成Ig,以便在其一致性域中维护用于所请求存储器块的高速缓冲域指示符(块1604)。因此,响应全局总线RWITM操作,不需要重试推来更新LPC系统存储器108中的域指示符504。
现在转向块1610,如果窥探者236以指示包含该窥探者236的L2高速缓冲存储器230以Tn或Ten状态中任何一种保留所请求存储器块的部分响应确认全局总线RWITM操作,则处理转向块1612,它表示Tn或Ten窥探者236确定它对于发出请求的主控者232是否是本地的。如果是,则全局总线RWITM操作根据以下描述的块1614及后续块处理。但是,如果确认全局总线RWITM操作的Tn或Ten窥探者236确定它对于发出请求的主控者232不是本地的,则依赖于是否有Sr’窥探者236也确认该全局总线RWITM操作,全局总线RWITM操作根据块1618或块1620处理。
如块1618所示,如果Sr’窥探者236确认全局总线RWITM操作,则该Sr’窥探者236向发出请求的主控者232提供早期数据,而确认全局总线RWITM操作的Tn或Ten窥探者236将其用于包含所请求存储器块的输入的高速缓冲存储器状态更新成Ig。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。此外,除Tn或Ten窥探者236之外的任何有效的确认窥探者236(即,非Ig窥探者236)将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。可选地,如块1620所述,如果Sr’窥探者236不确认全局总线RWITM操作,则Tn或Ten窥探者236响应CR的接收提供晚期数据。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。此外,Tn或Ten窥探者236将其高速缓冲存储器状态更新成Ig,而任何其它有效的确认窥探者236(即,非Ig窥探者236)将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。因此,如果远端Tn或Ten窥探者236确认全局总线RWITM操作,则确认Tn或Ten窥探者236输入Ig状态,以便在其一致性域中维护用于所请求存储器块的高速缓冲域指示符。因此,响应全局总线RWITM操作,不需要重试推来更新LPC系统存储器108中的域指示符504。
在由块1618和1620所表示的任一情况下,响应逻辑210依赖S’或Sr’窥探者236是否有可能隐藏并因此不能够响应窥探全局总线RWITM操作而使其所请求存储器块的拷贝失效来产生CR。如果响应逻辑210在块1626基于对全局总线RWITM操作的部分响应确定S’或Sr’窥探者236有可能隐藏,则响应逻辑210产生指示“清除”的CR,如块1628所示。可选地,如果响应逻辑210确定没有S’或Sr’窥探者236可能隐藏,则响应逻辑210产生指示“成功”的CR,如块1607所描述的。
返回块1612,如果对发出请求的主控者232是本地的Tn或Ten窥探者236确认全局总线RWITM操作,则依赖于Sr’窥探者236是否也确认该全局总线RWITM操作,该全局总线RWITM操作根据块1624或块1622提供服务。
如块1624所示,如果Sr’窥探者236确认该全局总线RWITM操作,则Sr’窥探者236向发出请求的主控者232提供早期数据,而且确认该全局总线RWITM操作的每个有效的窥探者236将其各自用于包含所请求存储器块的输入的高速缓冲存储器状态更新成I。响应接收到所请求的存储器块,发出请求的高速缓冲存储器230以M状态保留所请求的存储器块。可选地,如块1622所述,如果Sr’窥探者236不确认该全局总线RWITM操作,则Tn或Ten窥探者236响应CR的接收提供晚期数据。响应接收到所请求的存储器块,发出请求的高速缓冲存储器230以M状态保留所请求的存储器块。此外,每个有效的确认窥探者236(即,非Ig窥探者236)都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。
在由块1624和1622表示的任一情况下,响应逻辑210都基于S’或Sr’窥探者236是否可能隐藏并因此不能响应窥探全局总线RWITM操作而使其所请求存储器块的拷贝失效来产生CR。如果响应逻辑210在块1625基于对全局总线RWITM操作的部分响应确定S’或Sr’窥探者236有可能隐藏,则响应逻辑210产生指示“本地清除”的CR,如块1632所示。因此,确保一致性所需的总线kill操作的范围被有利地限定到包含发出请求的L2高速缓冲存储器230及(以前)Tn或Ten窥探者236的本地一致性域。可选地,如果响应逻辑210确定没有S’或Sr’窥探者236可能隐藏,则响应逻辑210产生指示“成功”的CR,如块1607所描述的。
随着页面连接符0到达图12B的块1630,如果T或Te窥探者236确认全局总线RWITM操作,则处理转向块1632,它表示T或Te窥探者236确定其对于发出请求的主控者232是否是本地的。如果是,则全局总线RWITM操作根据以下具体描述的块1638及后续块处理。但是,如果确认全局总线RWITM操作的T或Te窥探者236确定其对于发出请求的主控者232不是本地的,则依赖于是否有Sr’窥探者236确认该全局总线RWITM操作,该全局总线RWITM操作根据块1636或块1635提供服务。
如在块1635所示,如果Sr’窥探者236确认该全局总线RWITM操作,则该Sr’窥探者236向发出请求的主控者232提供早期数据,而确认该全局总线RWITM操作的T或Te窥探者236将包含所请求存储器块的输入的高速缓冲存储器状态更新成Ig。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。此外,除T或Te窥探者236之外的任何有效的确认窥探者236都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。可选地,如在块1636所描述的,如果Sr’窥探者236不确认该全局总线RWITM操作,则T或Te窥探者236响应CR的接收提供晚期数据。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。此外,T或Te窥探者236将其高速缓冲存储器状态更新成Ig,而任何其它有效的确认窥探者236都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。因此,如果远端T或Te窥探者236确认该全局总线RWITM操作,则确认T或Te窥探者236输入Ig状态,以便在其一致性域中维护用于所请求存储器块的高速缓冲域指示符。因此,响应全局总线RWITM操作,不需要重试推来更新LPC系统存储器108中的域指示符504。
在由块1635和1636表示的任一情况下,响应逻辑210都基于S’或Sr’窥探者236是否可能隐藏并因此不能响应窥探全局总线RWITM操作而使其所请求存储器块的拷贝失效来产生CR。如果响应逻辑210在块1644基于对总线RWITM操作的部分响应确定S’或Sr’窥探者236有可能隐藏,则响应逻辑210产生指示“清除”的CR,如块1626所示。可选地,如果响应逻辑210确定没有S’或Sr’窥探者236可能隐藏,则响应逻辑210产生指示“成功”的CR,如块1607所描述的。
返回块1632和1638,如果T或Te窥探者236在块3412确定它对于发出请求的主控者232是本地的,则依赖于是否有Sr’窥探者236也确认该全局总线RWITM操作,全局总线RWITM操作根据块1640或块1642提供服务。即,如块1640所示,如果没有Sr’窥探者236确认该全局总线RWITM操作(块1638),则确认该全局总线RWITM操作的T或Te窥探者236响应接收到CR而启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“晚期”数据)。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求存储器块。此外,所有有效的确认窥探者236都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。可选地,如在块1642所描述的,如果Sr’窥探者236确认该全局总线RWITM操作(块1638),则该Sr’窥探者236在接收到CR之前启动所请求存储器块向发出请求的L2高速缓冲存储器230的发送(即,提供“早期”数据)。响应接收到所请求的存储器块,发出请求的L2高速缓冲存储器230以M状态保留所请求的存储器块。此外,所有有效的确认窥探者236都将其各自用于所请求存储器块的高速缓冲存储器状态更新成I。在块1640或块1642之后,处理转向已经描述过的块1644。
现在参考块1650,如果没有M、Me或Tx窥探者236确认全局总线RWITM操作,而且如果没有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则如在决1652所描述的,发生造成处理中断的错误。另一方面,如果没有M、Me或Tx窥探者236确认全局总线RWITM操作,但有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认该总线RWITM操作(块1660),则每个有效的确认窥探者236(即,非Ig窥探者236)都使其各自L2高速缓冲存储器目录302中的所请求存储器块失效(块1672),而响应逻辑210产生指示“重试”的CR,如在块1674所描述的。此外,如果有的话,则由确认该全局总线RWITM操作的Sr’窥探者236提供的数据被主控者232丢弃(块1668和1670)。如由决定块1662所指示的,如果存储器控制器窥探者222确认该全局总线RWITM操作(块1660)且L2高速缓冲存储器窥探者236提供指示它可以M、Me或Tx中任一种状态保留所请求存储器块的部分响应但不能确认该全局总线RWITM操作(块1662),则确认窥探者236类似地在块1672使其各自的所请求存储器块拷贝失效,而响应逻辑210在块1674产生“重试”CR。
现在参考块1664,如果没有M、Me或Tx窥探者236确认全局总线RWITM操作或有可能隐藏,但有窥探者222确认该全局总线RWITM操作,且有Sr’窥探者236确认该全局总线RWITM操作,则该全局总线RWITM操作根据以上描述过的块1642及后续块提供服务。假设除没有Sr’窥探者236确认该全局总线RWITM操作之外的这些相同条件,则该全局总线RWITM操作根据块1666提供服务。特别地,响应CR,LPC窥探者222向发出请求的L2高速缓冲存储器230提供所请求的存储器块,发出请求的L2高速缓冲存储器230获得M状态的所请求存储器块,而如果有的话,则所有有效的确认窥探者236都使其各自的所请求存储器块拷贝无效。
块1666之后,处理转向块1680-1686,它们共同表示LPC窥探者222基于LPC窥探者222对于发出请求的主控者232是否是本地的(块1680)及域指示符的当前状态(块1682和1684)确定是否更新用于所请求存储器块的域指示符504。如果LPC窥探者222对于发出请求的L2高速缓冲存储器230是本地的且系统存储器108中的域指示符504被设置成指示“本地”,则不需要更新,而且处理通过页面连接符P转向已经描述过的图12A的块1625。另一方面,如果LPC窥探者222对于发出请求的主控者232是本地的且域指示符504被重置成指示“全局”或者如果LPC窥探者222对于发出请求的主控者232不是本地的且域指示符504被重置成指示“本地”,则LPC窥探者222在块1686改变域指示符504的状态。
如果部分响应指示S’或Sr’窥探者236有可能隐藏(块1644),则发出请求的L2高速缓冲存储器230在块1628接收“清除”CR,指示它必须使所请求存储器块的任何其它有效的高速缓冲拷贝失效。如果没有S’或Sr’窥探者236可能被不完整的部分响应隐藏,则如在块1607所描述的,响应逻辑210产生“成功”CR。
现在参考图13,说明根据本发明在数据处理系统中执行本地总线DClaim操作的示例方法的高级逻辑流程图。如所示出的,例如,在图7A的块732,处理在块1700以主控者232在其本地互连114上发布本地总线DClaim操作开始。响应本地总线DClaim操作,窥探者236可以提供给分布式响应逻辑210的多种部分响应在图13中由决定块1702、1710、1720、1740和1744的输出表示。这些部分响应又确定响应逻辑210对本地总线DClaim操作产生什么CR。
如在块1702所示,如果任何窥探者236发布将本地总线DClaim操作降级成总线RWITM操作的部分响应,例如在图7A的块748和754所说明的,则保留有效状态的所请求存储器块的每个其它确认窥探者236都使其各自的所请求存储器块拷贝失效,如在块1703所示的。响应本地总线DClaim操作和部分响应,如在块1704所示的,分布式响应逻辑210产生指示“降级”的CR。响应这种CR,本地总线DClaim操作的主控者232接下来必须尝试利用本地总线RWITM操作获得所请求存储器块的所有权,如在图7A的块748所描述的。
如在块1710所示的,如果窥探者236以指示包含该窥探者236的L2高速缓冲存储器230以T或Te状态中任意一种保留所请求存储器块的部分响应确认该本地总线DClaim操作,则处理转向块1712。因为响应总线DClaim操作,不需要数据传输,因此块1712指示发出请求的L2高速缓冲存储器230中的主控者232将L2高速缓冲存储器目录302中所请求存储器块的高速缓冲存储器状态更新成M状态。所有有效的确认窥探者236都将其各自的用于所请求存储器块的高速缓冲存储器状态更新成I。如在块1718所示的,分布式响应逻辑210产生指示“清除”的CR,这意味着发出请求的L2高速缓冲存储器230必须发布一个或多个总线kill操作,以便如果有的话,则使保留在本地一致性域之外的所请求存储器块拷贝失效。
如在块1740所说明的,如果Tn或Ten窥探者236确认本地总线DClaim操作,则处理转向块1742。因为响应总线DClaim操作,不需要数据传输,因此块1742指示发出请求的L2高速缓冲存储器230中的主控者232将L2高速缓冲存储器目录302中所请求存储器块的高速缓冲存储器状态更新成M状态。所有有效的确认窥探者236都将其各自的用于所请求存储器块的高速缓冲存储器状态更新成I。如在块1744所示的,分布式响应逻辑210产生依赖于由响应逻辑210接收到的部分响应是否指示Sr’或S’窥探者236可能隐藏的CR。如果不是,则因为Tn或Ten一致性状态的存在保证没有本地一致性域之外的L2高速缓冲存储器230保留所请求存储器块的拷贝,所以如在块1746所示的,分布式响应逻辑210产生指示“成功”的响应。如果部分响应指示Sr’或S’窥探者236可能隐藏,则如在块1748所示的,响应逻辑210产生指示“本地清除”的CR。因为Tn或Ten一致性状态再次保证没有本地一致性域之外的L2高速缓冲存储器230保留所请求存储器块的有效拷贝,所以只需要本地清除操作。
现在转向块1720,如果没有窥探者降级本地总线DClaim操作(块1702),没有Tx窥探者236确认该本地总线DClaim操作(块1710和1740),但有窥探者236提供指示它可以Tx状态保留所请求存储器块的部分响应但不能确认该本地总线DClaim操作,则每个有效的确认窥探者236都将其各自的用于所请求存储器块的一致性状态更新成I状态(块1721)。此外,如在决1722所描述的,响应逻辑210产生指示“重试”的CR。响应该“重试”CR,发出请求的主控者232可以作为本地或全局操作重新发布该总线DClaim操作,如以上参考图7A的块736所解释的。但是,如果没有窥探者降级本地总线DClaim操作(块1702),没有Tx窥探者236确认该本地总线DClaim操作或可能隐藏(块1702、1710、1740和1720),则如在块1732所示的,响应逻辑210提供“去全局”CR,而且如果有的话,则所有具有所请求存储器块有效拷贝的确认窥探者都使其各自的所请求存储器块拷贝失效,如在块1730所示。响应“去全局”CR,主控者232作为全局操作重新发布该总线DClaim操作,如在图7A的块740所描述的。
现在参考图14,描述根据本发明在数据处理系统中执行全局总线DClaim操作的示例方法的高级逻辑流程图。例如,在图7A的块740,处理在块1800以L2高速缓冲存储器230的主控者232在系统互连110上发布全局总线DClaim操作开始。响应全局总线DClaim操作,窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图14中由决定块1802、1810、1818、1830、1840、1842和1819的输出表示。这些部分响应又确定响应逻辑210对全局总线DClaim操作产生什么CR。
如在块1802所示,如果任何窥探者236发布将全局总线DClaim操作降级成总线RWITM操作的部分响应,则除降级窥探者236之外的每个有效确认窥探者236(即,非Ig窥探者236)都使其各自的所请求存储器块拷贝失效,如在块1803所示的。此外,如在块1804所示的,分布式响应逻辑210产生指示“降级”的CR。响应这种CR,全局总线DClaim操作的主控者232接下来必须尝试利用总线RWITM操作获得所请求存储器块的所有权,如在图7A的块748和754所描述的。
如在块1810所示,如果Tx(例如,T、Te、Tn或Ten)窥探者236确认全局总线DClaim操作,则处理转向块1812。块1812描述Tx窥探者236确定它对于发出请求的主控者232是否是本地的。如果不是,则Tx窥探者236将其相关输入的状态更新成Ig,以便如块1814所示维护用于所请求存储器块的高速缓冲域指示符。此外,发出请求的主控者232将其所请求存储器块拷贝的一致性状态更新成M,而且除Tx窥探者236之外的每个有效确认窥探者236都将其所请求存储器块的一致性状态更新成I(块1814)。
返回块1812,如果Tx窥探者236确定它对于发出请求的主控者232是本地的,则全局总线DClaim操作根据块1816处理。特别地,发出请求的L2高速缓冲存储器230中的主控者232将其所请求存储器块拷贝的状态更新成M状态,而所有有效的确认窥探者236都将其各自的所请求存储器块的高速缓冲存储器状态更新成I。
如在块1818和1822所示的,如果部分响应指示没有S’或Sr’窥探者236可能隐藏,则处理以响应逻辑210产生指示“成功”的CR结束(块1822)。另一方面,如果在块1818确定至少一个指示存在可能隐藏的S’或Sr’窥探者236的部分响应响应全局总线DClaim操作而给出,则将需要某种类型的清除操作。如果确认Tx窥探者236在与发出请求的主控者232相同的一致性域中,而且在操作之前是处于Te和Ten状态中的一种,则分布式响应逻辑210产生指示“本地清除”的CR(块1824),这意味着发出请求的L2高速缓冲存储器230必须发布一个或多个本地总线kill操作,以便使任何这种隐藏的S’或Sr’窥探者236中的所请求存储器块失效。如果确认Tx窥探者236不在与发出请求的主控者232相同的一致性域中,或者在操作之前确认Tx窥探者236处于Te或Ten一致性状态中的一种,则需要全局清除,而且分布式响应逻辑210产生指示“清除”的CR(块1820)。因此,Tn或Ten一致性状态的存在可以再次用于限定总线kill操作的范围。
现在转到块1830,如果没有Tx窥探者236确认全局总线DClaim操作,而且如果没有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则如在块1832所描述的,发生造成处理中断的错误。另一方面,如果没有Tx窥探者236确认全局总线DClaim操作,但有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认该全局总线DClaim操作(块1840),则每个有效的确认窥探者236都使其各自的所请求存储器块拷贝失效(块1843),而响应逻辑210产生指示“重试”的CR,如在块1844所描述的。如由决定块1842所指示的,如果存储器控制器窥探者222确认该总线DClaim操作(块1840)且Tx窥探者236可能隐藏(块1842),则每个有效的确认窥探者236还在块1843使其各自的所请求存储器块拷贝失效,而响应逻辑210类似地在块1844产生“重试”CR。
如在块1842所描述的,如果没有Tx窥探者236确认全局总线DClaim操作或可能隐藏,但有窥探者222确认该全局总线DClaim操作,则该全局总线DClaim操作根据以上描述过的块1816提供服务。
现在参考图15,说明根据本发明在数据处理系统中执行本地总线kill操作的示例方法的高级逻辑流程图。本地总线kill操作的范围限定到一个一致性域是通过由Tn和Ten一致性状态提供的附加信息,即在该一致性域之外没有存储器块的共享拷贝驻留,启用的。
如所描述的,例如,在图7B的块788或图8的块1044,处理在块1900以L2高速缓冲存储器230的主控者232在其本地互连114上发布本地总线kill操作开始。响应本地总线kill操作,窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图15中由决定块1902和1906的输出表示。这些部分响应又确定响应逻辑210对本地总线kill操作产生什么CR。
特别地,如在块1902和1904所描述的,处于M、Me、Tx、Sr’或S’状态中任意一种的确认总线kill操作的任何窥探者236都响应接收到CR而使其所请求存储器块拷贝失效,而无需任何数据发送。如果有的话,则确认Ig窥探者236保留在Ig状态。如在块1906、1908和1910进一步示出的,如果任何窥探者236提供不确认本地总线kill操作的部分响应而产生指示“成功”的CR,则响应逻辑210产生指示“本地清除”的CR。
现在参考图16,说明根据本发明执行全局总线kill操作的示例方法的高级逻辑流程图。如所描述的,例如,在图6的块626或图7的块726,处理在块2000以L2高速缓冲存储器230的主控者232在系统互连110上发布总线kill操作开始。响应全局总线kill操作,窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图16中由决定块2002和2006的输出表示。这些部分响应又确定响应逻辑210对本地总线kill操作产生什么CR。
特别地,如在块2002和2004所描述的,处于M、Me、Tx、Sr’或S’状态中任意一种的确认总线kill操作的任何有效窥探者236都响应接收到CR而使其所请求存储器块拷贝失效,而无需任何数据发送。如果有的话,则确认Ig窥探者236保留在Ig状态。如在块2006、2008和2010进一步示出的,如果任何窥探者236提供不确认总线kill操作的部分响应而产生指示“成功”的CR,则响应逻辑210产生指示“清除”的CR。
现在参考图17,说明根据本发明在数据处理系统中执行本地总线写操作的示例方法的高级逻辑流程图。例如,在图8的块1004,处理在块2500以I/O控制器214在本地互连114上发布本地总线写操作开始。窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图17中由决定块2502、2510、2512、2520、2522和2530的输出表示。这些部分响应又确定用于本地总线写操作的CR。
如果没有窥探者222提供指示它对目标存储器块响应(即,LPC)的部分响应(块2502),则如块2504所示出的,每个有效的确认窥探者236使其各自的目标存储器块拷贝失效,而且如在块2506所说明的,响应逻辑210提供“去全局”CR,因为LPC是总线写操作中的必需参与者。如在块2510所描述的,如果窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认该本地总线写操作(块2512)并且有M或Me窥探者236确认该本地总线写操作(块2510),则该M或Me窥探者236使其所请求存储器块的拷贝失效(块2254)。此外,如在块2518所描述的,因为LPC必需可用于接收目标存储器块,所以响应逻辑210产生指示“重试本地”的CR。
如果存储器控制器窥探者222指示它是用于目标存储器块的LPC、没有M、Me或Tx窥探者236确认本地总线写操作且部分响应指示M、Me或Tx窥探者236可能隐藏(块2530),则响应逻辑210类似地在块2534产生“重试”CR,而且每个有效的确认窥探者236都使其各自的所请求存储器块拷贝失效(块2532)。在这种情况下,如果有的话,则每个确认窥探者236都使其目标存储器块的拷贝失效,而且响应逻辑210产生“重试”CR,使得只有当没有所请求存储器块的HPC拷贝保留在系统中时本地总线写操作才成功。
再次参考块2512,假设M或Me窥探者236确认本地总线写操作且有窥探者222作为LPC确认该本地总线写操作,则发出请求的L2高速缓冲存储器230向LPC窥探者222发送所请求的存储器块,而且如果有的话,则有效的确认窥探者236使其各自的所请求存储器块拷贝失效(块2514)。此外,LPC窥探者222将与目标存储器块关联的域指示符504设置成“本地”。处理在块2516以分布式响应逻辑210产生指示“成功”的CR结束。
如在块2520及后续块所描述的,如果窥探者222提供指示它是用于目标存储器块的LPC的部分响应(块2502)但不能确认本地总线写操作(块2522),没有M或Me窥探者236确认该本地总线写操作(块2510),但有Tx窥探者236确认该本地总线写操作,则分布式响应逻辑210产生指示“重试本地”的CR(块2518),以强制操作本地重新发布,而确认该本地总线写操作的有效窥探者236使其各自的所请求存储器块拷贝失效(块2524)。假设除LPC窥探者222确认本地总线写操作之外的相同的部分响应(块2522),发出请求的L2高速缓冲存储器230向LPC窥探者222发送所请求的存储器块,而确认本地总线写操作的每个有效窥探者236都使其各自的所请求存储器块拷贝失效(块2526)。此外,LPC窥探者222将与目标存储器块关联的域指示符504设置成“本地”。
响应本地总线写操作和确认本地总线写操作的Tx窥探者236与LPC窥探者222的部分响应,如果在失效之前Tx窥探者236以Tn和Ten状态中的一种保留目标存储器块,则分布式响应逻辑210产生指示“本地清除”的CR(块2540和2542),否则产生指示“清除”的CR(块2528)。应当指出,Tn或Ten一致性状态的存在使清除操作过程中总线kill操作的范围被限定到本地一致性域。
现在参考图18,描述根据本发明在数据处理系统中执行全局总线写操作的示例方法的高级逻辑流程图。如所示出的,例如,在图8的块1020,处理在块2600以I/O控制器214在系统互连110上发布全局总线写操作开始。窥探者222、236可以提供给分布式响应逻辑210的多种部分响应在图18中由决定块2610、2620、2624、2626和2641的输出表示。这些部分响应又确定用于本地总线写操作的CR。
如在块2610所描述的,如果没有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应,则如在块2612所描述的,发生造成处理中断的错误。但是,如果有窥探者222提供指示它对所请求存储器块响应(即,LPC)的部分响应但不确认该全局总线写操作(块2620),别每个有效的确认窥探者236都使其各自的所请求存储器块拷贝失效(块2621),而因为LPC必需可用于接收所请求的存储器块,所以响应逻辑210产生指示“重试”的CR(块2622)。如果存储器控制器窥探者222确认全局总线写操作但部分响应指示M、Me或Tx窥探者236可能隐藏(块2624、2621和2622),则响应逻辑210类似地产生“重试”CR,而每个有效的确认窥探者236使其各自的所请求存储器块拷贝失效。在这种情况下,产生“重试”CR,使得只有当没有所请求存储器块的HPC拷贝保留在系统中时全局总线写操作才成功。
再次参考块2624,假设窥探者222作为LPC确认全局总线写操作而且没有产生指示M、Me或Tx窥探者236可能隐藏的部分响应,则发出请求的L2高速缓冲存储器230向LPC窥探者222发送所请求的存储器块,而且如果有的话,则确认该总线写操作的有效窥探者236使其各自的所请求存储器块拷贝失效(块2628或块2640)。如由块2626和2630所表示的,如果部分响应指示没有S’或Sr’窥探者236可能隐藏,则处理以分布式响应逻辑210产生指示“成功”的CR结束。此外,LPC窥探者222将与所请求存储器块关联的域指示符504设置成“本地”(块2628)。另一方面,如果响应全局总线写操作给出至少一个指示可能隐藏的S’或Sr’窥探者236存在的部分响应(块2626),则分布式响应逻辑210产生指示需要清除操作的CR。特别地,如果在失效之前Tx窥探者236以Tn和Ten状态中的一种保留目标存储器块且LPC窥探者222和Tx窥探者236都在发出请求的I/O控制器214的本地一致性域中(块2641),则分布式需要逻辑210产生指示“本地清除”的CR(块2644)。否则,分布式响应逻辑210产生指示“清除”的CR(块2642)。
VIII、DMA写管道化优选的数据一致性模型需要使由特定DMA主控者(例如,I/O控制器214)通过直接存储器访问(DMA)存储到系统存储器108中的数据可以用于向系统存储器108传输DMA数据的总线写操作发布的次序用于访问。因此,应当使由时间靠后DMA写操作存储到系统存储器108中的数据不早于由最近完成的相同DMA主控者先前发布的DMA写操作写入系统存储器108的数据用于读访问。
满足这种数据一致性模型的简单方法是严格排序DMA写操作,使得如果有的话,则DMA主控者在前面的DMA写操作成功完成之前不能发布下一DMA写操作。但是,随着数据处理系统变得越来越大和DMA访问等待时间的增加,DMA写操作的严格序列化会严重限制DMA设备能够实现的吞吐量。因此,期望能够管道化DMA写操作,即,重叠DMA写操作,使得附加等待时间的影响被屏蔽。
为了在管道化DMA写操作存在的情况下遵照优选的数据一致性模型,必需采用某种技术来保护时间靠后DMA写操作的数据不被访问,直到来自相同DMA主控者的所有时间靠前的DMA写操作都已经完成。在本发明的优选实施方式中,这种保护是通过域指示符504的适当设置及DMA主控者(例如,IOC 214)和1MC 206的保护窗口404a的实现提供的。
现在参考图19,描述根据本发明第一实施方式在支持多操作范围(例如,本地和全局)的示例数据处理系统100中用于管道化DMA写操作的方法的时空图。在图19所示的示例环境中,数据处理系统100包括至少两个标记为N1和N2的处理节点102。处理节点N1 102包括IOC 214,而处理节点N2 102包括至少一个处理单元104和具有关联的系统存储器108的IMC 206。为了避免使本发明模糊,有些操作的完整范围、有些部分响应及所有操作的数据使用期都从图19忽略掉了。
在示例操作场景中,如处理节点N1 102中的IOC 214的DMA主控者发布目标在于实际地址A和B的一连串管道化的总线写操作2700a、2700b,其中地址A和B分配给系统存储器108中由处理节点N2 102中的IMC 206控制的存储器位置。特别地,应当注意,处理节点N1 102中的IOC 214在接收到总线写操作2700a成功的指示(例如,接收到成功、清除或本地清除的组合响应(CR))之前发布目标在于实际地址B的总线写操作2700b。在图19所示的操作场景中,因为缺少处理总线写操作2700a的可用队列输入,所以处理节点N2 102中的IMC 206提供重试部分响应2702,而响应逻辑210相应地提供用于总线写操作2700a的重试组合响应2704。当然,在其它操作场景中,如总线写操作2700a的总线写操作可以因为其它原因接收重试组合响应,例如因为是用于目标存储器块的HPC的L2高速缓冲存储器230的窥探者236提供重试部分响应或者因为与先前读操作的地址冲突。
因为DMA总线写操作在图19所示的操作场景中被管道化,因此有可能在前面的总线写操作2700a成功之前后续的总线写操作2000b成功(例如,接收到成功、清除或本地清除CR)。例如,在这种操作场景中,IMC窥探者206(及其它窥探者)模糊或明确地提供确认部分响应2708,而响应逻辑210向处理节点N1 102中的IOC 214和处理节点N2 102中的IMC 206提供成功CR 2710。为了确保处理节点N1 102中的IOC 214能够加强其中只有来自相同源的先前发布的DMA写操作成功完成后DMA数据才可用于读访问的优选一致性模型,处理节点N2 102中的IMC 206响应成功CR 2710将与在地址B的目标存储器块关联的域指示符504重置成指示“全局”,如在标号2712所示出的。因此,基于域指示符504的状态,任何目标在于地址B的后续本地读类型操作,例如处理节点N2 102的处理单元104的本地总线读操作2720,模糊或明确地给出由处理节点N2 102的IMC 206的重试部分响应2722。重试部分响应2722使响应逻辑210产生重试CR 2724,这强制处理节点N2 102的处理单元104作为由包括处理节点N1 102的IOC 214在内的所有处理节点102的窥探者观察的全局总线读操作2726重新发布其读请求。
如在重试部分响应2730和重试组合响应2732所指示的,IOC 214保护地址B的目标存储器块不被读访问,直到先前发布的目标在于地址A的总线写操作(作为总线写操作2734重新发布)成功完成,如由IMC 206的确认部分响应2738和响应逻辑210的成功组合响应2736所指示的。响应成功组合响应2738,处理节点N2 102的IMC 206将与地址A的存储器块关联的域指示符504重置成指示“全局”,如在标号2740所示出的。以这种方式,IOC 214在必要的时候可以保护地址A的目标存储器块不被读操作,直到其先前的所有DMA总线写操作都成功完成。
一旦所有先前发布的DMA写操作都成功完成,处理节点N1 102的IOC 214就不再继续它对与地址B关联的存储器块的保护,而对存储器块的后续总线读操作,如全局总线读操作2742,将继续,如由确认部分响应2744和成功组合响应2746所指示的。
如从图19可以理解的,图19所示的管道化DMA写操作的示例方法需要重新设置是DMA写操作目标的每个存储器块的域指示符504,以确保IOC 214可以保护将破坏优选数据一致性性模型的对DMA收据的读访问。因此,需要全局总线读操作来成功地读DMA数据。尽管这种需求保护优选一致性性模型不被破坏,但它过宽,因为在先前发布的DMA总线写操作在对DMA数据的读访问之前全部完成的情况下,不再需要对DMA数据的进一步保护,而且域指示符可以重置成指示“本地”。因此,图20描述了管道化DMA写操作的增强方法,其中包含DMA数据的存储器块的域指示符在DMA写操作的数据相设置或重置,使得如果可能地话,给较早的DMA写操作在域指示符状态建立之前完成的机会。
现在参考图20,描述说明根据本发明第二实施方式在支持多操作范围(例如,本地和全局)的示例数据处理系统100中用于管道化DMA写操作的方法的时空图。在图20所示的示例环境中,数据处理系统100同样包括至少两个标记为N1和N2的处理节点102。处理节点N1102包括IOC 214,而处理节点N2 102包括至少一个处理单元104和具有关联系统存储器108的IMC 206。
在图20所示的示例操作场景中,如处理节点N1 102中IOC 214的DMA主控者发布一连串目标在于实际地址A和B的管道化总线写操作2800a、2800b,其中地址A和B分配给系统存储器108中由处理节点N2 102的IMC 206控制的存储器位置。同样应当指出,处理节点N1 102中的IOC 214在接收到总线写操作2800a成功的指示(例如,接收到成功、清除或本地清除组合响应(CR))之前发布目标在于实际地址B的总线写操作2800b。在图20所示的示例操作场景中,处理节点N2 102的IMC 206提供重试部分响应2802(例如,因为它缺少处理总线写操作2800a的可用队列输入),处理节点N2 102的处理单元104提供确认部分响应2802b,而响应逻辑210相应地提供用于总线写操作2800a的重试组合响应2804。
因为在图20所示的操作场景中DMA总线写操作被管道化,因此对于后续的写操作2800b,有可能在先前的总线写操作2800a成功之前成功(例如,接收到成功、清除或本地清除CR)。例如,在这种操作场景中,IMC窥探者206(及其它窥探者)模糊或明确地提供确认部分响应2808a、2808b,而响应逻辑210向处理节点N1 102中的IOC 214(及向处理节点N2 102中的IMC 206)提供成功CR 2810。不像其中处理节点N2 102中的IMC 206响应成功CR将与DMA总线写操作的每个目标存储器块关联的域指示符504设置成指示“全局”的图19的第一实施方式,IMC 206等待建立域指示符504的适当状态,直到从带DMA数据的IOC 214接收到适当状态的指示。因此,在加强用于DMA数据的总线读操作的全局范围之前,对先前发布的DMA总线写操作给予额外的时间。
例如,如图20所示,在发送与DMA总线写操作2800b关联的数据使用期2822之前,IOC 214可以重新发布目标在于存储器地址A的DMA总线写操作2812。在这个例子中,例如,基于IMC 206提供确认部分响应2814和处理单元104提供可能隐藏的部分响应2818,依靠IOC 214接收来自响应逻辑210的对DMA总线写操作2812的清除组合响应2816,同样是目标在于实际地址A的DMA总线操作2812在发送数据使用期2822之前成功。(如以上参考图8指出的,响应清除组合响应,IOC 214发布一个或多个总线kill操作2820,以便使与地址A关联的存储器块的任何剩余高速缓冲拷贝失效。)假设其每个先前的DMA写操作都已经成功而且所有与其关联的kill操作(例如,总线kill操作2820)都接收到成功CR(例如,基于确认部分响应2819和2821产生的成功CR 2823),IOC 214向带用于DMA总线写操作2800a的数据使用期的IMC 206发送所关联域指示符504应当重置成指示“本地”的指示。响应接收到数据使用期2822,IMC 206相应地存储地址B的DMA数据并将所关联的域指示符504重置成指示“本地”(标号2824)。当然,如果IOC 214已经在接收到成功CR 2823之前的任何时候发送了数据使用期2822,则IOC 214将带数据提供所关联域指示符应当设置成指示“全局”的指示,而IMC 206将相应地将与地址B关联的域指示符504设置成指示“全局”。
其后,当处理节点N2 102的IMC 206接收到目标在于地址B的本地读类型操作时(例如,处理节点N2 102的处理单元104的本地总线读操作2830),IMC 206可以基于域指示符504的重置状态提供确认部分响应2832。对此进行响应,响应逻辑210产生成功组合响应2834,这意味着目标在于DMA数据的本地总线读操作2830可以不用将广播范围扩大到包括IOC 214就能提供服务,同时在管道化DMA写操作存在的情况下仍然能观察到优选一致性模型。假设所有先前发布的DMA总线写操作都已经成功,则与DMA总线写操作2812关联的数据使用期2836类似地指示IMC 206应当将存储器地址A的域指示符504重置成指示“本地”,如标号2838所示的。
如已经描述过的,本发明提供了用于处理DMA写操作的改进的方法与系统。根据本发明,如I/O控制器的DMA主控者启动管道化DMA写操作的序列并保护DMA数据在所有先前的DMA写操作成功之前不接受将使与DMA写操作关联的DMA数据被访问的任何读类型访问。为了保护DMA数据,DMA主控者强加一个保护窗口,其中DMA主控者在DMA写操作启动之后立刻重试目标在于所关联DMA数据的读类型访问,直到如果有的话,该DMA写操作和所有旧的DMA写操作都关于LPC(例如,存储器控制器)和HPC成功。通过确保在保护窗口中使所有相关读类型操作都对DMA主控者可见,由存储器控制器维护的域指示符帮助强加该保护窗口。如上面所指出的,在至少有些实施方式中,这种可见性不是对所有目标在于DMA数据的读类型操作都需要的。如果来自相同源的关联DMA写操作和所有更早的DMA写操作都已经成功并且,如果有的话,用于所有这种DMA写操作的所有kill操作都接收到成功组合响应,则用于DMA数据的域指示符可以重置成指示不包括DMA主控者的范围(例如,“本地”范围)。
尽管本发明已经如参考优选实施方式所述具体地示出,但本领域技术人员应当理解在不背离本发明主旨与范围的情况下可以对其进行形式与细节的各种改变。
权利要求
1.一种在至少包括具有输入/输出(I/O)控制器的第一处理节点和包括用于存储器的存储器控制器的第二处理节点的数据处理系统中的数据处理方法,所述方法包括所述存储器控制器按次序从所述I/O控制器接收管道化的第一和第二DMA写操作,其中所述第一和第二DMA写操作目标分别在于第一和第二地址;响应所述第二DMA写操作,所述存储器控制器建立与所述第二地址关联的域指示符的状态,以便指示包括所述第一处理节点的操作范围;及响应所述存储器控制器接收到指定所述第二地址并具有不包括所述第一处理节点的范围的数据访问请求,基于与所述第二地址关联的所述域指示符的所述状态,所述存储器控制器强制所述数据访问请求以包括所述第一处理节点的范围重新发布。
2.如权利要求1所述的方法,还包括在所述第一DMA写操作之前所述第二DMA写操作成功。
3.如权利要求1所述的方法,还包括所述存储器控制器从所述第二处理节点中的处理单元接收所述数据访问请求。
4.如权利要求1所述的方法,还包括所述I/O控制器保护与所述第二地址关联的存储器块不被所述数据访问请求访问,直到所述第一DMA写操作成功。
5.如权利要求1所述的方法,其中所述建立包括根据从所述I/O控制器接收到的状态指示建立所述状态。
6.如权利要求5所述的方法,还包括所述存储器控制器接收带所述第二DMA写操作的数据使用期的所述状态指示。
7.如权利要求5所述的方法,其中其中所述状态包括至少第一和第二状态中的第一状态;所述建立包括只有当所述状态指示指示所述第一DMA写操作还未成功时才在所述第一状态中建立所述域指示符;及所述方法还包括响应接收到指示所述第一DMA写操作已经成功的状态指示,存储器控制器在所述第二状态中建立所述域指示符,以便指示不包括所述第一处理节点的操作范围。
8.一种数据处理系统,包括互连;第一处理节点,耦合到所述互连并包括输入/输出(I/O)控制器;第二处理节点,耦合到所述互连并包括用于存储器的存储器控制器,其中所述存储器控制器按次序从所述I/O控制器接收管道化的第一和第二DMA写操作,所述第一和第二DMA写操作目标分别在于所述存储器中的第一和第二地址,其中响应所述第二DMA写操作,所述存储器控制器建立与所述第二地址关联的域指示符的状态,以便指示包括所述第一处理节点的操作范围,而且其中响应所述存储器控制器接收到指定所述第二地址并具有不包括所述第一处理节点的范围的数据访问请求,基于与所述第二地址关联的所述域指示符的所述状态,所述存储器控制器强制所述数据访问请求以包括所述第一处理节点的范围重新发布。
9.如权利要求8所述的数据处理系统,还包括在所述第二处理节点中发布所述数据访问请求的处理单元。
10.如权利要求8所述的数据处理系统,其中所述I/O控制器保护与所述第二地址关联的存储器中的存储器块不被所述数据访问请求访问,直到所述第一DMA写操作成功。
11.如权利要求8所述的数据处理系统,其中所述存储器控制器根据从所述I/O控制器接收到的状态指示建立所述状态。
12.如权利要求11所述的数据处理系统,其中所述存储器控制器接收带所述第二DMA写操作的数据使用期的所述状态指示。
13.如权利要求11所述的数据处理系统,其中其中所述状态包括至少第一和第二状态中的第一状态;所述存储器控制器只有当所述状态指示指示所述第一DMA写操作还未成功时才在所述第一状态中建立所述域指示符;及响应接收到指示所述第一DMA写操作已经成功的状态指示,所述存储器控制器在所述第二状态中建立所述域指示符,以便指示不包括所述第一处理节点的操作范围。
14.一种用于存储器的存储器控制器,包括用于按次序从I/O控制器接收管道化的第一和第二DMA写操作的装置,所述第一和第二DMA写操作目标分别在于存储器中的第一和第二地址;用于响应所述第二DMA写操作,建立与所述第二地址关联的域指示符的状态以便指示包括所述第一处理节点的操作范围的装置;及用于响应所述存储器控制器接收到指定所述第二地址并具有不包括所述第一处理节点的范围的数据访问请求,基于与所述第二地址关联的所述域指示符的所述状态,强制所述数据访问请求以包括所述第一处理节点的范围重新发布的装置。
15.如权利要求14所述的存储器控制器,还包括用于从所述第二处理节点中的处理单元接收所述数据访问请求的装置。
16.如权利要求14所述的存储器控制器,其中所述存储器控制器根据从I/O控制器接收到的状态指示建立所述状态。
17.如权利要求16所述的存储器控制器,其中所述存储器控制器接收带所述第二DMA写操作的数据使用期的所述状态指示。
18.如权利要求14所述的存储器控制器,其中其中所述状态包括至少第一和第二状态中的第一状态;所述存储器控制器只有当所述状态指示指示所述第一DMA写操作还未成功时才在所述第一状态中建立所述域指示符;及响应接收到指示所述第一DMA写操作已经成功的状态指示,所述存储器控制器在所述第二状态中建立所述域指示符,以便指示不包括所述第一处理节点的操作范围。
全文摘要
一种数据处理系统,至少包括具有输入/输出(I/O)控制器的第一处理节点和包括用于存储器的存储器控制器的第二处理节点。存储器控制器按次序从I/O控制器接收管道化的第一和第二DMA写操作,其中第一和第二DMA写操作目标分别在于第一和第二地址。响应第二DMA写操作,存储器控制器建立与第二地址关联的域指示符状态,以便指示包括第一处理节点的操作范围。响应存储器控制器接收到指定第二地址并具有不包括第一处理节点的范围的数据访问请求,基于与第二地址关联的域指示符的状态,存储器控制器强制所述数据访问请求以包括第一处理节点的范围重新发布。
文档编号G06F13/28GK1932787SQ20061009461
公开日2007年3月21日 申请日期2006年6月21日 优先权日2005年9月15日
发明者小詹姆斯·S.·菲尔德斯, 盖伊·L.·古德里, 威廉·J.·斯达克, 小乔治·W.·达里, 杰弗里·A.·斯图切利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1