数据处理系统和方法

文档序号:6560324阅读:276来源:国知局
专利名称:数据处理系统和方法
技术领域
本发明一般涉及数据处理系统,尤其涉及改进的用于数据处理系统的互连构造。
背景技术
诸如服务器计算机系统之类的、传统的对称多处理器(SMP)计算机系统包括全部耦接到系统互连的多个处理单元,其中系统互连一般包括一条或多条地址、数据和控制总线。系统存储器耦接到系统互连,该系统存储器表示在多处理器计算机系统中最低等级的易失性存储器,并且其通常可由所有处理单元访问以用于读和写访问。为了减少对驻留在系统存储器中的指令和数据的访问延迟,每个处理单元通常还由相应的多级高速缓存分级结构所支持,该分级结构中的较低级别(一个或多个)可以由一个或多个处理器核心所共享。

发明内容
随着处理单元能够操作的时钟频率上升以及系统规模增加,在处理单元之间经由系统互连的通信延迟已经变为关键的性能问题。为了解决这个性能问题,已经提议和/或实现了旨在在传统的总线互连上提高性能和可伸缩性的各种互连设计。
本发明提供了改进的数据处理系统、互连构造以及数据处理系统中的通信方法。在一个实施例中,数据处理系统包括第一处理节点和第二处理节点。第一处理节点包括彼此耦接以便通信的多个第一处理单元,而且第二处理节点包括彼此耦接以便通信的多个第二处理单元。该多个第一处理单元中的每一个通过多个点到点链接中的相应一个耦接到第二处理节点中的该多个第二处理单元中的相应一个。
在以下详细编写的描述中,本发明的所有目的、特征、和优点将变得明显。


在所附权利要求中阐述了认为是本发明的新颖特性的特征。然而,当结合附图阅读时,通过参考以下对说明性实施例的详细说明,本发明以及优选使用模式将得到最好的理解,在附图中图1是根据本发明的处理单元的高级框图;图2A是根据本发明的数据处理系统的第一示例性实施例的高级框图;图2B是根据本发明、其中耦接多个节点以形成超级节点的数据处理系统的第二示例性实施例的高级框图;图3是包括请求阶段、部分响应阶段和组合响应阶段的示例性操作的时间-空间图;图4A是在图2A的数据处理系统内、全系统范围的示例性操作的时间-空间图;图4B是在图2A的数据处理系统内、仅仅节点范围的示例性操作的时间-空间图;图4C是图2B的数据处理系统内的示例性的超级节点广播操作的时间-空间图;图5A-5C描述了在图4C中描述的示例性超级节点广播操作的信息流;图5D-5E描述了根据本发明、用于示例性超级节点广播操作的示例性数据流;图6是示例性操作的时间-空间图,其说明了任意数据处理系统拓扑结构的定时约束;图7A-7B说明了根据本发明、用于第一和第二层链接的示例性链接信息分配;图7C是包括在链接信息分配内的、用于写请求的部分响应字段的示例性实施例;图8是说明在操作的请求阶段利用的、图1中的互连逻辑部分的框图;图9是图8中的本地中心(hub)地址启动缓冲器的更详细框图;图10是图8中的标记FIFO队列的更详情框图;图11和12分别是图8中的本地中心部分响应FIFO队列和远程中心部分响应FIFO队列的更详细框图;图13A-13D是分别描述在本地主设备(master)、本地中心、远程中心、和远程叶子处的操作中的请求阶段的流程图;图13E是根据本发明、在窥探器处生成部分响应的示例性方法的高级逻辑流程图;图14是说明在操作的部分响应阶段中利用的图1中的互连逻辑部分的框图;图15A-15C是分别描述在远程叶子、远程中心、本地中心、和本地主设备处的操作中的部分响应阶段的流程图;图16是说明在操作的组合响应阶段中利用的图1中的互连逻辑部分的框图;图17A-7C是分别描述在本地中心、远程中心、和远程叶子处的操作中的组合响应阶段的流程图;图18是图2A或者图2B中的数据处理系统的示例性窥探组件的更详细框图。
具体实施例方式
1.处理单元和数据处理系统现在参见附图,并特别参见图1,其中说明了根据本发明的处理单元100的示例性实施例的高级框图。在所描述的实施例中,处理单元100是包括用于独立地处理指令和数据的两个处理器核心102a、102b的单个集成电路。每个处理器核心102至少包括用于取出和排序指令以便执行的指令定序单元(ISU)104以及用于执行指令的一个或多个执行单元106。由执行单元106执行的指令可以包括,例如,定点和浮点算术指令、逻辑指令、以及请求对存储块的读和写访问的指令。
每个处理器核心102a、102b的操作由多级易失性存储器分级结构所支持,该结构在其最低级别具有一个或多个共享的系统存储器132(图1中仅仅示出其中之一),并且在其较高级别具有一级或多级高速缓冲存储器。如同所示,处理单元100包括集成存储控制器(IMC),其响应于从处理器核心102a、102b接收的请求以及由窥探器在互连构造(如下所述)上窥探的操作,控制对系统存储器132的读和写访问。
在该说明性实施例中,处理单元100的高速缓冲存储器分级结构包括在每个处理器核心102a、102b内的贯穿存储(store-through)第一级(L1)高速缓存108,以及由处理单元100的所有处理器核心102a、102b共享的第二级(L2)高速缓存110。L2高速缓存110包括L2阵列和目录114、主设备112和窥探器116。主设备112启动在互连构造上的事务,并且响应于从相关联的处理器核心102a、102b接收的存储器访问(及其他)请求而访问L2阵列和目录114。窥探器116检测在互连构造上的操作,提供适当的响应,并且执行操作所需要的、对L2阵列和目录114的任何访问。虽然所说明的高速缓存分级结构仅仅包括二级高速缓存,但是本领域技术人员将理解,替换实施例可以包括另外级别(L3、L4等)的片内或片外、内联或后备(lookaside)高速缓存,其可以完全包括、部分包括、或者不包括较高级别的高速缓存的内容。
如图1中进一步所示,处理单元100包括集成的互连逻辑120,处理单元100可以通过该互连逻辑120连接到互连构造,作为更大数据处理系统的一部分。在所描述的实施例中,互连逻辑120支持任意数目t1个“第一层”互连链接,其在这种情况下包括进入(in-bound)和外出(out-bound)X、Y和Z链接。互连逻辑120还支持任意数目t2个第二层链接,其在图1中指定为进入和外出A和B链接。利用这些第一和第二层链接,每个处理单元100可以双向通信地耦接到高达t1/2+t2/2(在这种情况下,五个)其它的处理单元100。互连逻辑120包括用于在操作的不同阶段期间处理和转发信息的请求逻辑121a、部分响应逻辑121b、组合响应逻辑121c和数据逻辑121d。此外,互连逻辑120包括配置寄存器123,其包括用来配置处理单元100的多个模式位。如下面进一步所述,这些模式位优选地包括(1)一个或多个模式位的第一集合,其选择期望的用于第一和第二层链接的链接信息分配;(2)一个或多个模式位的第二集合,其指定处理单元100的第一和第二层链接中的哪些链接连接到其它处理单元100;(3)一个或多个模式位的第三集合,其确定保护窗口扩展的可编程持续时间;(4)一个或多个模式位的第四集合,如在上面引用的美国专利申请第11/055,305号中所述,其在逐个操作的基础上,从仅仅节点的广播范围或者全系统的范围当中,预测性地选择用于由处理单元100发起的操作的广播范围;以及(5)一个或多个模式位的第五集合,其指示处理单元100是否属于以“超级节点”模式耦接到至少一个其它处理节点的处理节点,在“超级节点”模式中,广播操作跨越以下面参考图2B所述的方式耦接的多个物理处理节点。
每个处理单元100还包括响应逻辑122的实例,其实现了分布式一致性信令机制部分,该机制维护在处理单元100的高速缓存分级结构和其它处理单元100中的高速缓存分级结构之间的高速缓存一致性。最后,每个处理单元100包括集成的I/O(输入/输出)控制器128,其支持诸如I/O设备130之类的一个或多个I/O设备的附连。I/O控制器128可以响应于I/O设备130的请求而在X、Y、Z、A和B链接上发出操作以及接收数据。
现在参见图2A,其中描述了根据本发明、由多个处理单元100形成的数据处理系统200的第一示例性实施例的框图。如同所示,数据处理系统200包括八个处理节点202a0-202d0和202a1-202d1,在所描述的实施例中,其中每个都被实现为多芯片模块(MCM),该多芯片模块(MCM)包括包含四个处理单元100的封装。如同所示,在每个处理节点202内的处理单元100由处理单元的X、Y、和Z链接耦接以用于点对点通信。每个处理单元100还由处理单元的A和B链接耦接到在两个不同的处理节点202中的处理单元100以用于点对点通信。虽然在图2A中用双头箭头进行了说明,但是应当理解,每对X、Y、Z、A和B链接优选地(但不一定)实现为两个单向链接而不是双向链接。
用于形成图2A所示的拓扑结构的通用表示式可以如下所示给出对于所有I≠J,节点[I][K].芯片[J].链接[K]连接到节点[J][K].芯片[I].链接[K];以及节点[I][K].芯片[I].链接[K]连接到节点[I][非K].芯片[I].链接[非K];以及节点[I][K].芯片[I].链接[非K]连接到(1)不进行连接,保留用于将来扩展;或者(2)节点[额外][非K].芯片[I].链接[K],在充分利用了所有链接(即,形成72路系统的九个8路节点)的情况下;以及其中I和J属于集合{a,b,c,d},并且K属于集合{A,B}。
当然,可以定义替换的表示式以形成功能等效的拓扑结构。此外,应该理解,所述拓扑结构对于实施本发明的数据处理系统拓扑结构是代表性而非穷举性的,而且其它的拓扑结构是可能的。在这样的替换拓扑结构中,例如,耦接到每个处理单元100的第一层和第二层链接的数目可以是任意数目,而且在每一层内的处理节点202的数目(即,I)无需与每个处理节点100的处理单元100的数目(即,J)相等。
即使以图2A所示的方式全连接,所有处理节点202也无需将每个操作传递到所有其它处理节点202。具体而言,如上所述,处理单元100可能利用局限于它们的处理节点202的范围、或者利用诸如包括所有处理节点202的全系统范围之类的较大范围来广播操作。
如图18所示,在数据处理系统200内的示例性窥探设备1900,例如L2(或者较低级别)高速缓存的窥探器116或者IMC 124的窥探器126,可以包括标识真实地址空间的一个或者多个区域的一个或多个基地址寄存器(BAR)1902,该真实地址空间包括窥探设备1900所负责的真实地址。窥探设备1900还可以可选地包括哈希逻辑1904,其在属于由BAR 1902所标识的真实地址空间的区域(一个或多个)内的真实地址上执行哈希函数,以进一步证明(qualify)该窥探设备1900是否对该地址负责。最后,窥探设备1900包括多个窥探器1906a-1906m,其响应于窥探到的、指定由BAR 1902和哈希逻辑1904证明合格的请求地址的请求,访问资源1910(例如,L2高速缓存阵列和目录114或者系统存储器132)。
如同所示,资源1910可以具有存储体结构(banked structure),其包括多个存储体(bank)1912a-1912n,每个存储体与各自的真实地址集合相关联。如本领域技术人员所知的那样,经常采用这样的存储体设计,以通过有效地将资源1910细分为多个可独立访问资源,支持对资源1910的请求的较高到达速率。用这样的方式,即使窥探设备1900和/或资源1910的工作频率为窥探设备1900不能与访问资源1910的请求的最大到达速率那样快地为这些请求服务,但是只要在给定时间间隔内针对任何存储体1912接收的请求数目不超过该存储体1912可以在该时间间隔内进行服务的请求数目,则窥探设备1900可以为这些请求服务而无需重试。
本领域的技术人员将会理解,SMP数据处理系统100可以包括诸如互连桥接器、非易失性存储器、用于连接到网络或者附连设备的端口等之类的许多另外未说明的组件。因为这样的另外组件对于本发明的理解不是必需的,因此未在图2A中示出它们,或者在这里进一步讨论它们。
图2B描述了根据本发明、其中耦接多个处理单元100以形成“超级节点”的数据处理系统200的示例性第二实施例的框图。如同所示,数据处理系统220包括两个处理节点202a0和202b0,在所描述的实施例中,其中每个都被实现为多芯片模块(MCM),该多芯片模块(MCM)包括包含四个依据图1的处理单元100的封装。如同所示,在每个处理节点202内的处理单元100由处理单元的X、Y、和Z链接耦接以用于点对点通信。每个处理单元100还由处理单元的A和/或B链接耦接到在其它处理节点202中的相应处理单元100以用于点对点通信。虽然在图2B中用双头箭头进行了说明,但是应当理解,每对X、Y、Z、A和B链接优选(而不是必须)实现为两个单向链接而不是双向链接。
用于形成图2B所示的拓扑结构的通用表示式可以给出如下节点[I].芯片[J].链接[L]连接到节点[非I].芯片[非J].链接[L];以及节点[I].芯片[K].链接[L]连接到节点[非I].芯片[非K].链接[L],其中I属于{a,b},J属于集合{a,b},K属于集合{c,d},以及L属于集合{A,B}。
此外应该理解,所述拓扑结构是体现本发明的数据处理系统拓扑结构的代表而不是该拓扑结构的穷举,而且其它具有耦接特定节点对的多个链接的拓扑结构是可能的。如上参考图2A所述,在这样的替换拓扑结构中,耦接到每个处理单元100的第一层和第二层链接的数目可以是任意数目。此外,另外的处理节点202可以由另外的第二层链接耦接到处理节点202a0和202b0。
当期望最大化节点间通信的带宽时,可以采用诸如图2B中所述的拓扑结构。例如,如果在特定处理和它们的相关联数据之间的亲合力(affinity)不是大到足够让操作占优势地在单个处理节点202内得到服务,则可以采用图2B的拓扑结构来提高节点间的通信带宽(例如,在这种情况下,提高了高达4倍)。通过增加耦接特定节点对的第二层链接的数目来提高节点间带宽可以因此对特定的工作负载产生重要的性能益处。
II.示例性操作现在参见图3,其中描述了在图2A的数据处理系统200或者图2B的数据处理系统220的互连构造上的示例性操作的时间-空间图。当主设备300(例如,L2高速缓存110的主设备112或者I/O控制器128内的主设备)在互连构造上发出请求302时,开始该操作。请求302优选地至少包括指示期望访问类型的事务类型,以及指示要由该请求访问的资源的资源标识符(例如,真实地址)。常见的请求类型优选地包括下面在表格I中所阐述的那些。
表格I


有关这些操作以及有助于这些操作的高效处理的示例性高速缓存一致性协议的更多细节可以在通过引用并入在此的、共同未决的美国专利申请第11/055,305号中找到。
请求302由遍及数据处理系统200分布的窥探器304例如L2高速缓存110的窥探器116以及IMC 124的窥探器126所接收。一般而言,尽管有一些例外,在与请求302的主设备112相同的L2高速缓存110中的窥探器116不窥探请求302(即,一般不存在自我窥探),这是因为只有当请求302不能由处理单元100在内部进行服务时,才在互连构造上传送请求302。接收和处理请求302的窥探器304每个都提供了各自的部分响应306,其表示至少窥探器304对请求302的响应。IMC 124内的窥探器126例如基于窥探器126是否对该请求地址负责以及它是否具有可用于为该请求服务的资源,确定要提供的部分响应306。L2高速缓存110中的窥探器116可以例如基于其L2高速缓存目录114的可用性、在窥探器116内处理该请求的窥探逻辑实例的可用性、以及与在L2高速缓存目录114中的请求地址相关联的一致性状态,确定它的部分响应306。
窥探器304的部分响应306由响应逻辑122的一个或多个实例分阶段地或同时地进行逻辑组合,以确定对请求302的组合响应(CR)310。在一个下文中将要采用的优选实施例中,负责生成组合响应310的响应逻辑122的实例位于包含发出请求302的主设备300的处理单元100中。响应逻辑122经由互连构造向主设备300和窥探器304提供组合响应310,以指示对请求302的响应(例如,成功、失败、重试等)。如果CR 310指示请求302的成功,则例如,CR 310可以指示用于所请求存储块的数据源、其中所请求的存储块要由主设备300高速缓存的高速缓存状态、以及是否需要使一个或者多个L2高速缓存110中的所请求存储块无效的“清除”操作。
响应于组合响应310的接收,一个或多个主设备300和窥探器304通常执行一个或多个操作以便为请求302服务。这些操作可以包括向主设备300提供数据、使在一个或多个L2高速缓存110中高速缓存的数据的一致性状态无效或者更新该状态、执行逐出(castout)操作、将数据写回到系统存储器132中等。如果请求302要求的话,可以在由响应逻辑122生成组合响应310之前或之后,向或从主设备300传送所请求或目标存储块。
在以下的描述中,将参考窥探器相对于由请求所指定的请求地址是一致性最高点(HPC)、一致性最低点(LPC)、还是都不是,来描述窥探器304对请求302的部分响应306以及由窥探器304响应于请求302而执行的操作,和/或它的组合响应310。此处将LPC定义为用作存储块的储存库(repository)的存储器设备或者I/O设备。在不存在用于存储块的HPC的情况下,LPC保存存储块的真实映像,并且具有允许或者拒绝生成该存储块的附加高速缓存副本的请求的授权。对于在图1和2的数据处理系统实施例中的典型请求,LPC将是用于保存所引用的存储块的系统存储器132的存储控制器124。此处将HPC定义为对存储块的真实映像(其可能或者可能不与LPC处的对应存储块相一致)进行高速缓存的唯一标识的设备,并且具有允许或者拒绝修改该存储块的请求的授权。叙述性地,HPC还可以响应于不修改存储块的操作而向请求者提供存储块的副本。因此,对于在图1和2的数据处理系统实施例中的典型请求,若有的话,HPC将会是L2高速缓存110。虽然可以利用其它指示符来指定用于存储块的HPC,但是本发明的优选实施例利用在L2高速缓存110的L2高速缓存目录114内的选定高速缓存一致性状态(一个或多个),来指定用于存储块的HPC(若有的话)。
仍然参见图3,用于在请求302中所引用的存储块的HPC(若有的话),或者在不存在HPC时该存储块的LPC,优选地具有响应于请求302、在必要时保护存储块的所有权转移的责任。在图3所示的示例性场景中,在用于由请求302的请求地址所指定的存储块的HPC(或者在不存在HPC时,LPC)处的窥探器304n在保护窗口312a期间和随后的窗口扩展312b期间保护所请求的存储块的所有权到主设备300的转移,其中保护窗口312a从窥探器304n确定它的部分响应306的时间延伸到窥探器304n接收组合响应310为止,而窗口扩展312b从窥探器304n对组合响应310的接收开始外延一可编程时间。在保护窗口312a和窗口扩展312b期间,窥探器304n通过向其它指定相同请求地址的请求提供防止其它主设备获得所有权的部分响应306(例如重试部分响应)直到所有权已经成功地被转移到主设备300为止,来保护所有权转移。主设备300同样也启动保护窗口313,以在收到组合响应310之后保护它对在请求302中请求的存储块的所有权。
因为窥探器304全都具有有限的资源用于处理上述CPU和I/O请求,几个不同级别的部分响应和对应的CR是可能的。例如,如果对所请求的存储块负责的存储控制器124内的窥探器126具有可用于处理请求的队列,则该窥探器126可以用指示它能够用作该请求的LPC的部分响应进行响应。相反,如果窥探器126没有可用于处理该请求的队列,则窥探器126可以用指示它是该存储块的LPC、但是当前不能为该请求服务的部分响应进行响应。类似地,L2高速缓存110中的窥探器116可能需要窥探逻辑的可用实例以及对L2高速缓存目录114的访问,以便处理请求。缺少对这些资源中的任何一个(或者两者)的访问导致通知由于缺少所需要的资源而不能为该请求服务的部分响应(以及对应的CR)。
III.示例性操作的广播流程现在参见图4A,其中说明了在图2A的数据处理系统200中、全系统范围的操作的示例性操作流程的时间-空间图。在这些附图中,数据处理系统200内的各个处理单元100用两个位置标识符标记,第一个标识处理单元100所属的处理节点202,而且第二个标识在处理节点202内的特定处理单元100。因此,例如,处理单元100a0c是指处理节点202a0的处理单元100c。此外,每一处理单元100用功能标识符标记,该功能标识符指示其相对于参与操作的其它处理单元100的功能。这些功能标识符包括(1)本地主设备(LM),其指定发起操作的处理单元100;(2)本地中心(LH),其指定在与本地主设备相同的处理节点202中并且负责将该操作传送到其它处理节点202的处理单元100(本地主设备也可以是本地中心);(3)远程中心(RH),其指定在与本地主设备不同的处理节点202中、并且负责将该操作分发到它的处理节点202中的其它处理单元100的处理单元100;以及(4)远程叶子(RL),其指定在与本地主设备不同的处理节点202中、并且不是远程中心的处理单元100。
如图4A所示,示例性操作至少具有上面参考图3所述的三个阶段,即请求(或者寻址)阶段、部分响应(Presp)阶段、和组合响应(Cresp)阶段。这三个阶段优选地以上述次序出现并且不重叠。该操作另外可以具有数据阶段,其可以可选地与请求、部分响应和组合响应阶段中的任意一个相重叠。
仍然参见图4A,当本地主设备100a0c(即,处理节点202a0的处理单元100c)向在它的处理节点202a0内的每个本地中心100a0a、100a0b、100a0c和100a0d执行例如读取请求的请求的同步广播时,请求阶段开始。应当注意到,本地中心列表包括本地中心100a0c,其也是本地主设备。如下面进一步所述,有利地采用该内部传送来同步本地中心100a0c和本地中心100a0a、100a0b和100a0d的操作,以便可以更容易地满足下面讨论的定时约束。
响应于请求的接收,每个通过其A或B链接耦接到远程中心100的本地中心100将该操作传送到其远程中心(一个或多个)100。因此,本地中心100a0a不在其外出A链接上进行操作的传送,而是经由其外出B链接将操作传送到处理节点202a1内的远程中心。本地中心100a0b、100a0c和100a0d经由其各自的外出A和B链接分别将操作传送到处理节点202b0和202b1、处理节点202c0和202c1、以及处理节点202d0和202d1中的远程中心。每个接收操作的远程中心100又将该操作传送到其处理节点202中的每个远程叶子100。因此,例如,本地中心100b0a将操作传送到远程叶子100b0b、100b0c和100b0d。用这样的方式,利用在不超过三个链接上的传送,将操作高效地广播到数据处理系统200内的所有处理单元100。
如图4A所示,在请求阶段之后,发生部分响应(Presp)阶段。在部分响应阶段,每个远程叶子100计算(evaluate)该操作,并且将其对该操作的部分响应提供给其各自的远程中心100。例如,远程叶子100b0b、100b0c和100b0d将其各自的部分响应传送到远程中心100b0a。每个远程中心100又将这些部分响应、以及它自己的部分响应传送到本地中心100a0a、100a0b、100a0c和100a0d中的各个。本地中心100a0a、100a0b、100a0c和100a0d然后将这些部分响应、以及它们自己的部分响应广播到处理节点202a0中的每个本地中心100。应当注意,由处理节点202a0内的本地中心进行的部分响应广播包括由于定时的原因,由每个本地中心100对它自己的部分响应的自我广播。
应当理解,以所示方式收集部分响应可以以多种不同的方式实现。例如,有可能从每个其它本地中心、远程中心和远程叶子将单独的部分响应传递回到每个本地中心。可替换地,为了更大的效率,可能期望在将部分响应传递回到本地中心时累积这些部分响应。为了确保将每个部分响应的效果准确地传递回到本地中心100,优选地,例如利用逻辑或函数以及其中当经受这样的函数时不丢失相关信息的编码(例如,“一热(one-hot)”编码),以非破坏性方式累积部分响应(若有的话)。
如在图4A中进一步所示,在处理节点202a0内的每个本地中心100处的响应逻辑122汇集其它处理单元100的部分响应以获得代表对该请求的全系统范围响应的组合响应。然后,本地中心100a0a-100a0d沿着与请求阶段所采用的路径相同的分发路径将该组合响应广播到所有处理单元100。因此,该组合响应首先被广播到远程中心100,其又将该组合响应传送到在其各自的处理节点202内的每个远程叶子100。例如,远程中心100a0b将该组合响应传送到远程中心100b0a,其又将该组合响应传送到远程叶子100b0b、100b0c和100b0d。
如上所述,为操作服务可能需要另外的数据阶段。例如,如果操作是诸如读取或RWITM操作之类的读取类型的操作,则远程叶子100b0d可以经由将远程叶子100b0d连接到远程中心100b0a的链接、将远程中心100b0a连接到本地中心100a0b的链接、以及将本地中心100a0b连接到本地主设备100a0c的链接,将所请求的存储块供应(source)到本地主设备100a0c。相反,如果操作是写入类型的操作,例如,将修改的存储块写回到远程叶子100b0b的系统存储器132中的高速缓存逐出操作,则经由将本地主设备100a0c连接到本地中心100a0b的链接、将本地中心100a0b连接到远程中心100b0a的链接、以及将远程中心100b0a连接到远程叶子100b0b的链接传送该存储块。
现在参见图4B,其中说明了在图2A的数据处理系统200中、仅仅节点范围的操作的示例性操作流程的时间-空间图。在这些附图中,数据处理系统200内的各个处理单元100用两个位置标识符标记,第一个标识处理单元100所属的处理节点202,而且第二个标识处理节点202内的特定处理单元100。因此,例如,处理单元100b0a是指处理节点202b0的处理单元100b。此外,每一处理单元100用功能标识符标记,该功能标识符指示其相对于参与操作的其它处理单元100的功能。这些功能标识符包括(1)节点主设备(NM),其指定发起仅仅节点范围的操作的处理单元100,以及(2)节点叶子(NL),其指定在与节点主设备相同的处理节点202中并且不是节点主设备的处理单元100。
如图4B所示,示例性的仅仅节点的操作至少具有如上所述的三个阶段,即请求(或者寻址)阶段、部分响应(Presp)阶段、和组合响应(Cresp)阶段。同样,这三个阶段优选地以上述次序出现并且不重叠。该操作另外可以具有数据阶段,其可以可选地与请求、部分响应和组合响应阶段中的任意一个相重叠。
仍然参见图4B,当非常类似于图4A的操作场景中的远程中心而工作的节点主设备100b0a(即,处理节点202b0的处理单元100a)向其处理节点202b0内的每个节点叶子100b0b、100b0c、和100b0d执行例如读取请求的请求的同步广播时,请求阶段开始。应当注意,因为广播传送的范围限于单个节点,因此没有采用在节点主设备100b0a内的请求的内部传送来同步该请求的节点外传送。
如图4B所示,在请求阶段之后,发生部分响应(Presp)阶段。在部分响应阶段,节点叶子100b0b、100b0c和100b0d中的每一个计算该操作并且向节点主设备100b0a提供它对该操作的部分响应。接下来,如在图4B中进一步所示,在处理节点202b0内的节点主设备100b0a处的响应逻辑122汇集其它处理单元100的部分响应,以获得代表对该请求的节点范围响应的组合响应。节点主设备100b0a然后利用节点主设备100b0a的X、Y和Z链接,将该组合响应广播到所有节点叶子100b0b、100b0c和100b0d。
如上所述,为操作服务可能需要另外的数据阶段。例如,如果操作是诸如读取或者RWITM操作之类的读取类型操作,则节点叶子100b0d可以经由将节点叶子100b0d连接到节点主设备100b0a的Z链接将所请求的存储块供应到节点主设备100b0a。相反,如果操作是写入类型操作,例如将修改的存储块写回到远程叶子100b0b的系统存储器132中的高速缓存逐出操作,则经由将节点主设备100b0a连接到节点叶子100b0b的X链接传送该存储块。
现在参见图4C,将结合图5A-5E对其进行描述,其说明了在图2B的数据处理系统220中的操作的示例性操作流程的时间-空间图。在这些图中,在数据处理系统220内的各个处理单元100利用与上述相同的两个位置标识符标记。此外,每个处理单元100用功能标识符标记,该功能标识符指示其相对于参与操作的其它处理单元100的功能。这些功能标识符包括(1)节点主设备(NM),其指定发起操作的处理单元100;(2)节点叶子(NL),其指定在与节点主设备相同的处理节点202中但不是该节点主设备的处理单元100;(3)远程中心(RH),其指定在与本地主设备不同的处理节点202中、并且负责将操作分发到其处理节点202中的其它处理单元100的处理单元100;以及(4)远程叶子(RL),其指定在与本地主设备不同的处理节点202中、并且不是远程中心的处理单元100。
如图4C所示,示例性操作至少具有上面参考图3所述的三个阶段,即请求(或者寻址)阶段、部分响应(Presp)阶段、和组合响应(Cresp)阶段。这三个阶段优选地以上述次序出现并且不重叠。该操作另外可以具有数据阶段,其可以可选地与请求、部分响应和组合响应阶段中的任意一个相重叠。
仍然参见图4C并且另外参见图5A,当节点主设备(NM)100a0c(即,处理节点202a0的处理单元100c)向其处理节点202a0内的每个节点叶子100a0a、100a0b、和100a0d以及向处理节点202b0中的远程中心100b0d执行例如读取请求的请求的同步广播时,请求阶段开始。远程中心100b0d又将该操作传送到每个远程叶子100b0a、100b0b和100b0c。用这样的方式,利用在不超过两个链接上的传送,将该操作高效地广播到在数据处理系统200内的所有处理单元100。
如图4A和5B所示,在请求阶段之后,发生部分响应(Presp)阶段。在部分响应阶段,每个远程叶子100计算该操作并且将其各自的对该操作的部分响应提供给其各自的远程中心100。例如,远程叶子100b0a、100b0c和100b0c将它们各自的部分响应传送到远程中心100b0d。每个远程中心100又将这些部分响应、以及它自己的部分响应传送到节点主设备100a0c。每一个节点叶子100a0a、100a0b和100a0d类似地计算该请求,并且将其各自的部分响应传送到节点主设备100a0c。
可以理解,以所示方式收集部分响应可以以多种不同的方式实现。例如,有可能从每个其它节点叶子、远程中心和远程叶子将单独的部分响应传递回到节点主设备。作为替换,为了更大的效率,可能期望在将部分响应传递回到发起处理节点时累积这些部分响应。为了确保将每个部分响应的效果准确地传递回到节点主设备100,优选地,例如,利用逻辑或函数以及其中当经受这样的函数时不丢失相关信息的编码(例如,“一热”编码),以非破坏性方式累积部分响应(若有的话)。
如图4A和图5C中进一步所示,在节点主设备100a0c处的响应逻辑122汇集其它处理单元100的部分响应,以获得代表对该请求的全系统范围响应的组合响应。节点主设备100a0c然后沿着与请求阶段所采用的路径相同的分发路径将该组合响应广播到所有处理单元100。因此,该组合响应首先被广播到节点叶子100a0a、100a0b和100a0d以及远程中心100b0d。远程中心100b0d又将该组合响应传送到每个远程叶子100b0a、100b0b和100b0c。
如上所述,如图5D或5E所示,为操作服务可能需要另外的数据阶段。例如,如图5D所示,如果操作是诸如读取或RWITM操作之类的读取类型的操作,则远程叶子100b0b可以经由将远程叶子100b0b连接到节点叶子100a0a的链接、以及将节点叶子100a0a连接到本地主设备100a0c的链接,将所请求的存储块供应到节点主设备100a0c。相反,如果操作是写入类型的操作,例如将修改的存储块写回到远程叶子100b0b的系统存储器132中的高速缓存逐出操作,则如图5E所示,经由将节点主设备100a0c连接到远程中心100b0d的链接传送该存储块。
当然,对于可能在诸如数据处理系统200或数据处理系统220之类的多处理器数据处理系统中同时发生的多种可能操作,图4A-4C中描述的操作仅仅是示例性的。
IV.定时考虑如上面参考图3所述,通过保护窗口312a、窗口扩展312b、和保护窗口313,在可能存在竞争相同存储块的所有权的其它主设备的情况下,在存储块的一致性所有权从窥探器304n“移交”到请求主设备300的期间保持一致性。例如,如图6所示,保护窗口312a和窗口扩展312b一起必须具有足够的持续时间,以在存在竞争主设备(CM)320的竞争请求322的情况下,保护所请求的存储块的一致性所有权从窥探器304n到获胜主设备(WM)300的转移。为了确保保护窗口312a和窗口扩展312b具有足够的持续时间来保护所请求的存储块的所有权从窥探器304n转移到获胜主设备300,优选地约束依据图4A、4B和4C的处理单元100之间的通信的延迟,使得满足以下条件
A_lat(CM_S)≤A_lat(CM_WM)+C_lat(WM_S)+ε,其中A_lat(CM_S)是任何竞争主设备(CM)320到拥有所请求存储块的一致性的窥探器(S)304n的寻址延迟,A_1at(CM_WM)是任何竞争主设备(CM)320到由窥探器304n给予一致性所有权的“获胜”主设备(WM)300的寻址延迟,C_lat(WM_S)是从由获胜主设备(WM)300收到组合响应的时间到由拥有所请求存储块的窥探器(S)304n收到组合响应的时间的组合响应延迟,以及ε是窗口扩展312b的持续时间。
如果不满足可应用于任意拓扑结构的系统的前述定时约束,则可以(1)在获胜主设备300取得一致性所有权并且启动保护窗口312b之前由获胜主设备300、以及(2)在保护窗口312a和窗口扩展312b结束之后由窥探器304n,接收竞争主设备320的请求322。在这样的情况下,获胜主设备300和窥探器304n都将不会对竞争请求322提供防止竞争主设备320取得存储块的一致性所有权并且从存储器中读取非一致数据的部分响应。然而,为了避免这个一致性错误,可以将窗口扩展312b可编程地(例如,通过适当地设置配置寄存器123)设置为任意长度(ε),以补偿延迟差异或者物理实现的欠缺,其否则可能不能满足对于保持一致性必须满足的定时约束。因此,通过求解上述方程以获得ε,可以确定用于任何实现的窗口扩展312b的理想长度。对于图2A和2B的数据处理系统实施例,如果对于具有包括多个处理节点202的范围的广播操作,ε具有等于一个第一层链接芯片跳跃(chip-hop)的延迟的持续时间,并且对于仅仅节点范围的操作,ε具有零持续时间,则这是优选的。
可以进行有关上述定时约束的几个观察(observation)。首先,从竞争主设备320到拥有窥探器304a的寻址延迟不必具有下限,但是必须具有上限。通过在尤其给定最大可能的振荡器漂移、耦接处理单元100的最长链接、累积停顿的最大数目、以及所保证的最坏情况吞吐量的情况下确定可得到的最坏情况延迟,来设计上限。为了确保观察到上限,互连构造必须确保非阻塞的行为。
其次,从竞争主设备320到获胜主设备300的寻址延迟不必具有上限,但是必须具有下限。通过在尤其给定不存在停顿、处理单元100之间的最短可能链接、以及给定特定静态配置时的最慢振荡器漂移的情况下可得到的最佳情况延迟,来确定该下限。
虽然对于给定操作,获胜主设备300与竞争主设备320中的每一个都仅仅具有一个定时限制用于其各自的请求,但是应当理解,在操作过程中,任何处理单元100对于一些操作可能是获胜主设备,而对于其它操作可能是竞争(以及失败)主设备。因此,每个处理单元100有效地具有用于其寻址延迟的上限和下限。
第三,从生成组合响应的时间到由获胜主设备300观察到该组合响应的时间的组合响应延迟不必具有下限(该组合响应可能在任意的较早时间到达获胜主设备300),但是必须具有上限。相反,从生成组合响应的时间直到由窥探器304n收到该组合响应为止的组合响应延迟具有下限,但是不必具有上限(虽然可以任意地施加上限来限制同时进行的操作数目)。
第四,对部分响应延迟没有约束。也就是说,因为上面列举的定时约束的所有项都与请求/寻址延迟以及组合响应延迟有关,所以窥探器304和竞争主设备320到获胜主设备300的部分响应延迟不必具有上限或下限。
V.示例性链接信息分配连接处理单元100的第一层和第二层链接可以各种方式实现以获得在图2A和2B中描述的拓扑结构以及满足图6所述的定时约束。在一个优选实施例中,每个进入和外出第一层(X,Y和Z)链接和每个进入和外出第二层(A和B)链接被实现为单向8字节总线,其包含多个不同的虚拟通道或者占有期(tenure)来传达地址、数据、控制和一致性信息。
现在参见图7A-7B,其中说明了用于第一层X、Y和Z链接以及第二层A和B链接的第一示例性时间分割信息分配。如同所示,在这个第一实施例中,信息以重复的8个周期帧分配在第一层和第二层链接上,其中前4个周期包含传输地址、一致性和控制信息的两个地址占有期,并且后4个周期专用于提供数据传输的数据占有期。
首先参见图7A,其说明了用于第一层链接的链接信息分配。在周期数对8取模的余数为0的每个周期中,字节0传递第一操作的事务类型700a(例如,读取),字节1-5提供了第一操作的请求地址的较低地址字节702a1,而且字节6-7形成保留字段704。在下一个周期(即,周期数对8取模的余数是1的周期)中,字节0-1传递标识第一操作的主设备300的主设备标记706a(例如,L2高速缓存主设备112或者I/O控制器128内的主设备之一),而且字节2传达第一操作的请求地址的高地址字节702a2。连同这个关于第一操作的信息一起传递的高达关于不同操作的三个另外的字段,即旨在用于在同一处理节点202中的本地主设备的本地部分响应708a(字节3-4),在字节5中的组合响应710a,以及旨在用于在不同的处理节点202中的本地主设备的远程部分响应712a(或者在仅仅节点范围的广播的情况下,从节点叶子100传递到节点主设备100的部分响应)(字节6-7)。如上所述,这前两个周期形成了这里所谓的地址占有期。
如图7A中进一步说明的那样,除了保留字段704被替换为形成数据占有期的一部分的数据标记714和数据令牌715之外,接下来的两个周期(即,周期数对8取模的余数为2和3的周期)形成了具有与第一地址占有期相同的基本模式的第二地址占有期。具体地说,数据标记714标识出现在周期4-7中的32个字节的数据有效载荷716a-716d被定向的目的数据宿。它在地址占有期内的位置紧邻在有效载荷数据之前,这有利地允许在接收有效载荷数据之前进行下游操纵的配置,并由此高效地将数据路由到指定的数据宿。数据令牌715提供了已被释放的下游队列条目的指示,并且因此,另外的数据可以在成对的X、Y、Z或者A链接上传送而没有过载的危险。再次应当注意,事务类型700b、主设备标记706b、低地址字节702b1、和高地址字节702b2全都属于第二操作,而数据标记714、本地部分响应708b、组合响应710b以及远程部分响应712b全都涉及不同于第二操作的一个或多个操作。
每个事务类型字段700和组合响应字段710优选地包括范围指示符730,其能够指示它所属的操作具有仅仅节点(本地)的范围还是具有全系统(全局)的范围。当配置寄存器123被设置为以超级节点模式配置处理单元100时,不使用范围指示符730,并且该范围指示符具有“无关”值。如在上面通过引用并入在此的、交叉引用的美国专利申请第11/055,305号中更详细描述的那样,数据标记714还包括域指示符732,其可以由LPC设置来指示是否可能存在包含在数据有效载荷716a-716d内的数据的远程副本。优选地,当配置寄存器123被设置为以超级节点模式配置处理单元100时,也不使用域指示符732,并且该域指示符具有“无关”值。
图7B描述了用于第二层A和B链接的链接信息分配。通过与图7A的比较可以看出,除了本地部分响应字段708a、708b被替换为保留字段718a、718b之外,在第二层A和B链接上的链接信息分配与在图7A中给出的用于第一层链接的分配相同。因为简单的原因,即作为第二层链接,不需要传递本地部分响应,所以进行这个替换。
图7C说明了写入请求部分响应720的示例性实施例,其可以响应于写入请求,在本地部分响应字段708a、708b或者远程部分响应字段712a、712b内传输。如同所示,写入请求部分响应720在长度上为两个字节,并且包括15位目的地标记字段724和1位有效(V)标记722,其中目的地标记字段724用于指定作为写入数据的目的地的窥探器(例如,IMC窥探器126)的标记,而有效标记722用于指示目的地标记字段724的有效性。
VI.请求阶段结构和操作现在参见图8,其描述了这样的框图,该框图说明了在操作的请求阶段处理中利用的、在图1的互连逻辑120内的请求逻辑121a。如同所示,请求逻辑121a包括主设备多路复用器900,其被耦接以由处理单元100的主设备300(例如,L2高速缓存110内的主设备112以及I/O控制器128内的主设备)接收请求。主设备多路复用器900的输出形成请求多路复用器904的一个输入。请求多路复用器904的第二输入端耦接到远程中心多路复用器903的输出端,该远程中心多路复用器903的输入端与保持缓冲器902a、902b的输出端相耦接,该保持缓冲器902a、902b又被耦接以分别在进入A和B链接上接收和缓冲请求。远程中心多路复用器903实现了下面详细描述的公平分配策略,其从在保持缓冲器902a-902b中缓冲的、从进入A和B链接接收的请求当中公平地进行选择。如果存在的话,由远程中心多路复用器903向请求多路复用器904提供的请求总是由请求多路复用器904给予优先权。请求多路复用器904的输出驱动请求总线905,该请求总线905与输出X、Y和Z链接、节点主设备/远程中心(NM/RH)保持缓冲器906、以及本地中心(LH)地址启动缓冲器910中的每一个相耦接。也耦接到请求总线905的先前请求FIFO缓冲器907优选地为多个先前地址占有期中的每一个保持少量地址相关的信息,以允许确定在该地址占有期中传递的地址(若有的话)哈希(hash)到其的地址片段或者资源存储体1912。例如,在一个实施例中,先前请求FIFO缓冲器907的每个条目包含“一热”编码,其标识相关联请求的请求地址哈希到其的存储体1912a-1912n中的特定一个。对于其中没有在请求总线905上传送请求的地址占有期,一热编码将是全0。
进入第一层(X,Y和Z)链接每个都耦接到LH地址启动缓冲器910,以及节点叶子/远程叶子(NL/RL)保持缓冲器914a-914c中的各个。NM/RH保持缓冲器906、LH地址启动缓冲器910、和NL/RL保持缓冲器914a-914c的输出全都形成窥探多路复用器920的输入。另一个先前缓冲器911也耦接到LH地址启动缓冲器910的输出,该先前缓冲器911优选地也类似于先前的请求FIFO缓冲器907进行构造。窥探多路复用器920的输出驱动窥探总线922,其中标记FIFO队列924、处理单元100的窥探器304(例如,L2高速缓存110的窥探器116和IMC 124的窥探器126)、以及外出A和B链接耦接到该窥探总线922。窥探器304还耦接到本地中心(LH)部分响应FIFO队列930和节点主设备/远程中心(NM/RH)部分响应FIFO队列940,并且由它们支持。
虽然其它实施例是可能的,但是如果缓冲器902、906、和914a-914c保持简短以便最小化通信延迟,则这是优选的。在一个优选实施例中,控制每个缓冲器902、906、和914a-914c的大小以仅仅保持选定链接信息分配的单个帧的地址占有期(一个或多个)。
现在参见图9,其中说明了图8的本地中心(LH)地址启动缓冲器910的更详细框图。如同所述,LH地址启动缓冲器910的本地和进入X、Y和Z链接输入形成了映射逻辑1010的输入,该映射逻辑1010将在每个特定输入端上接收的请求放置到各自对应的位置相关FIFO队列1020a-1020d中。在所描述的命名法中,在处理节点/MCM 202的左上角的处理单元100a是“S”芯片;在处理节点/MCM 202的右上角的处理单元100b是“T”芯片;在处理节点/MCM 202的左下角的处理单元100c是“U”芯片;以及在处理节点202的右下角的处理单元100d是“V”芯片。因此,例如,对于本地主设备/本地中心100ac,在本地输入端上接收的请求由映射逻辑1010放置在U FIFO队列1020c中,在进入Y链接上接收的请求由映射逻辑1010放置在S FIFO队列1020a中。采用映射逻辑1010来标准化输入流,以便同步所有本地中心100中的判优逻辑1032(如下所述)来同一地处理请求而无需采用任何显式的相互通信。
虽然被放置在位置相关FIFO队列1020a-1020d中,但是请求未被立即标记为有效并且可用于分派。相反,在每个位置相关FIFO队列1020a-1020d中的请求的验证经受可编程延迟1000a-1000d中的各自一个,以便同步在每个地址占有期期间在四个输入端上接收的请求。因此,与本地输入端相关联的可编程延迟1000a通常比与其它输入端相关联的可编程延迟明显更长,其中该本地输入端在本地主设备/本地中心100处接收请求的自我广播。为了确保验证适当的请求,由可编程延迟装置1000a-1000d生成的验证信号经受与底层请求相同的、由映射逻辑1010进行的映射。
位置相关FIFO队列1020a-1020d的输出形成本地中心请求多路复用器1030的输入,该本地中心请求多路复用器1030响应于由判优器1032生成的选择信号,从位置相关FIFO队列1020a-1020d中选择一个请求以便提供给窥探多路复用器920。判优器1032实现了公平判优策略,其在选择时与在给定处理节点202内的所有其它本地中心100的判优器1032同步,以便如图4和5A中所述,相同的请求由处理节点202中的所有本地中心100同时在外出A链接上广播。因此,给定图7B和8B所示的示例性链接信息分配中的任何一个,本地中心请求多路复用器1030的输出与外出A链接请求帧的地址占有期(一个或多个)时间片对齐。
因为LH地址启动缓冲器910的输入带宽是其输出带宽的四倍,所以位置相关FIFO队列1020a-1020d的过载是设计考虑。在优选实施例中,通过为每个位置相关FIFO队列1020实现在大小上等于相关联的位置相关FIFO队列1020的深度的本地中心令牌池,来防止队列过载。需要空闲的本地中心令牌来让本地主设备发送请求到本地中心并且保证本地中心可以将该请求排入队列。因此,当由本地主设备100向本地中心100中的位置相关FIFO队列1020发出请求时分配本地中心令牌,并且当判优器1032从位置相关FIFO队列1020中发出条目(entry)时,释放该令牌以便重用。
现在参见图10,其中描述了图8的标记FIFO队列924的更详细框图。如同所示,标记FIFO队列924包括本地中心(LH)标记FIFO队列924a、远程中心(RH)标记FIFO队列924b0-924b1、节点主设备(NM)标记FIFO队列924b2、远程叶子(RL)标记FIFO队列924c0-924c1、924d0-924d1和924e0-924e1、以及节点叶子(NL)标记FIFO队列924c2、924d2和924e2。当在以针对特定请求的这些给定角色(LH、RH、和RL)中的每一个服务的处理单元(一个或多个)100处接收到该请求时,全系统范围的操作的请求的主设备标记被存放在标记FIFO队列924a、924b0-924b1、924c0-924c1、924d0-924d1和924e0-924e1的每一个中。类似地,当在以针对特定请求的这些给定角色(NM和NL)中的每一个服务的处理单元(一个或多个)100处接收到该请求时,仅仅节点范围的操作的请求的的主设备标记被存放在标记FIFO队列924b2、924c2、924d2和924e2的每一个中。当在相关联的处理单元100处接收到组合响应时,从标记FIFO队列924的每一个中检索主设备标记。因此,不是与组合响应一起传送主设备标记,而是根据需要由处理单元100从其标记FIFO队列924中检索主设备标记,从而导致在第一和第二层链接上的带宽节省。假定在各个处理单元100处接收组合响应的次序与接收相关联的请求的次序相同,则可以有利地采用用于分配和检索主设备标记的FIFO策略。
LH标记FIFO队列924a包括多个条目,每个条目包括主设备标记字段1100,用于存储由判优器1032启动的请求的主设备标记。标记FIFO队列924b0-924b1中的每一个类似地包括多个条目,每个至少包括主设备标记字段1100,用于存储由远程中心100经由进入A和B链接中的相应一个接收的、全系统范围的请求的主设备标记。类似地构造标记FIFO队列924c0-924c1、924d0-924d1和924e0-924e1,并且这些队列中的每个都保持由远程叶子100经由进入第一和第二层链接的唯一对接收的、全系统范围的请求的主设备标记。对于仅仅节点广播范围的请求,NM标记FIFO队列924b2保持由节点主设备100发起的请求的主设备标记,并且NL标记FIFO队列924c2、924d2和924e2中的每一个提供了对由节点叶子100在第一层X、Y和Z链接的相应一个上接收的请求的主设备标记的存储。
在LH标记FIFO队列924a内的条目具有全系统范围广播操作的最长占有期,并且NM标记FIFO队列924b2具有仅仅节点范围广播操作的最长占有期。因此,LH标记FIFO队列924a和NM标记FIFO队列924b2的深度分别限制了处理节点202可以在互连构造上发出的、全系统范围的并行操作的数目,以及给定处理单元100可以在互连构造上发出的、仅仅节点范围的并行操作的数目。这些深度不一定有关系并且可以是不同的。然而,优选地将标记FIFO队列924b0-924b1、924c0-924c1、924d0-924d1和924e0-924e1的深度设计为等于LH标记FIFO队列924a的深度,以及优选地将标记FIFO队列924c2、924d2和924e2的深度设计为等于NM标记FIFO队列924b2的深度。
现在参见图11和12,其中说明了图8的本地中心(LH)部分响应FIFO队列930和节点主设备/远程中心(NM/RH)部分响应FIFO队列940的示例性实施例的更详细框图。如同所示,LH部分响应FIFO队列930包括多个条目1200,其中每个条目包括部分响应字段1202和响应标记阵列1204,该部分响应字段1202用于为请求存储累积的部分响应,响应标记阵列1204具有相应的标记用于6个可能来源中的每一个,其中本地中心100可以在不同的时间或者可能同时从这些来源中接收部分响应(即,本地(L)、第一层X、Y、Z链接、以及第二层A和B链接)。在LH部分响应FIFO队列930内的条目1200经由分配指针1210分配,并且经由释放指针释放。利用A指针1214、B指针1215、X指针1216、Y指针1218、和Z指针1220访问组成响应标记阵列1204的各个标记。
如下面进一步描述的那样,当由本地中心100处的部分响应逻辑121b接收到对特定请求的部分响应时,在部分响应字段1202内累积该部分响应,并且通过在响应标记阵列1204内设置对应标记来记录从其接收到该部分响应的链接。指针1214、1215、1216、1218和1220中的对应一个然后前进到随后的条目1200。
当然,如上所述,每个处理单元100无需通过其5个进入(X,Y,Z,A和B)链接中的每一个全耦接到其它处理单元100。因此,忽略在响应标记阵列1204内与未连接的链接相关联的标记。例如,可以通过在配置寄存器123中指示的配置来指示每个处理单元100中的未连接的链接(若有的话),该配置寄存器123可以例如在系统启动时由引导代码或者在对数据处理系统200进行分区时由操作系统进行设置。
通过图12和图11的比较可以看出,NM/RH部分响应FIFO队列940类似于LH部分响应FIFO队列930进行构造。NM/RH部分响应FIFO队列940包括多个条目1230,其中每个条目包括部分响应字段1202和响应标记阵列1234,该部分响应字段1202用于存储累积的部分响应,而且响应标记阵列1234具有相应的标记用于高达4个可能来源中的每一个,其中节点主设备或者远程中心100可以从这些来源接收部分响应(即,节点主设备(NM)/远程(R)、以及第一层X、Y、和Z链接)。此外,每个条目1230包括路由字段1236,其标识操作是仅仅节点范围的广播操作还是全系统范围的广播操作,以及对于全系统范围的广播操作,该请求在哪个进入第二层链接上接收(以及因此累积的部分响应将在哪个外出第二层链接上传送)。在NM/RH部分响应FIFO队列940内的条目1230经由分配指针1210分配,并且经由释放指针1212释放。利用X指针1216、Y指针1218、和Z指针1220访问和更新组成响应标记阵列1234的各个标记。
如上面相对于图11所述,每个处理单元100无需通过其第一层X、Y、和Z链接中的每一个全耦接到其它处理单元100。因此,忽略在响应标记阵列1204内与未连接的链接相关联的标记。可以例如通过在配置寄存器123中指示的配置来指示每个处理单元100中的未连接链接(若有的话)。
现在参见图13A-13D,分别给出了描述根据本发明的示例性实施例、在请求阶段期间在本地主设备(或节点主设备)、本地中心、远程中心(或节点主设备)、以及远程叶子(或节点叶子)处的操作的示例性处理的流程图。现在具体参见图13A,在本地主设备(或如果是仅仅节点或者超级节点广播的话,节点主设备)100处的请求阶段处理从块1400开始,其中由本地(或节点)主设备100内的特定主设备300(例如,L2高速缓存110内的主设备112或者I/O控制器128内的主设备之一)生成请求。在块1400之后,处理继续到块1402、1404、1406、和1408,这些块中的每个都代表有关由特定主设备300发布请求的条件。在块1402和1404处说明的条件代表主设备多路复用器900的操作,并且在块1406和1408处说明的条件代表请求多路复用器904的操作。
首先转向块1402和1404,如果支配主设备多路复用器900的公平判优策略从(可能的)多个竞争主设备300的请求中选择特定主设备300的请求(块1402),并且如果该请求是全系统范围的广播,如果存在可分配给该请求的本地中心令牌(块1404),则主设备多路复用器900输出特定主设备300的请求。如块1415所示,如果主设备300将其请求范围选择为具有仅仅节点或者超级节点范围(例如,如在上面引用的美国专利申请第11/055,305号中所述的那样,通过参考配置寄存器123的设置和/或范围预测机制),则不需要本地中心令牌,并且省略在块1404处说明的条件。
假定特定主设备300的请求通过主设备多路复用器900前进到请求多路复用器904,则只有当在外出第一层链接信息分配中有地址占有期可用于请求时,请求多路复用器904才在请求总线905上发出该请求(块1406)。也就是说,请求多路复用器904的输出与选定链接信息分配进行时间片对齐,并且将仅仅在被设计成承载请求的周期(例如,图7A的实施例中的周期0或者2)期间生成输出。如在块1408处进一步说明的那样,只有当不存在由远程中心多路复用器903提供的、来自进入的第二层A和B链接的请求(总是向该请求给予优先权)(块1406)时,请求多路复用器904才会发布请求。因此,保证相对于进入请求、第二层链接不被阻塞。即使利用这样的不阻塞策略,也可以通过在上游中心的判优器1032中的适当策略的实现来防止主设备300发出的请求的“挨饿(starving)”,其中上游中心的判优器1032中的适当策略防止在下游中心的进入A和B链接上的多个连续地址占有期期间“挡住(brickwalling)”请求。
如果在任何块1402-1408处做出了否定的确定,则如块1410处所指示的那样,延迟该请求直到其中在块1402-1408处说明的所有确定都是肯定的后续周期为止。相反,如果在所有块1402-1408上都做出了肯定的确定,则处理继续到块1417。块1417代表仅仅节点范围(由Ttype字段700的范围指示符730所指示)或者超级节点范围(如由配置寄存器123所指示)的请求经受附加的条件。
首先,如块1419所示,如果该请求是仅仅节点或者超级节点的广播请求,则只有当NM标记FIFO队列924b2中存在可分配给该请求的条目时,请求多路复用器904才将发布该请求。如果不存在的话,则该处理从块1419传递到已经描述的块1410。
其次,如块1423所述,在所描述的实施例中,只有当请求地址不哈希到与在先前请求FIFO缓冲器907内缓冲的、任意选定数目的先前请求相同的存储体资源1910中的存储体1912时,请求多路复用器904才将发布仅仅节点或者超级节点范围的请求。例如,假定窥探设备1900和它相关联的资源1910被构造成窥探设备1900不能以最大请求到达速率为请求服务,而是可以被表达为1/R的最大到达速率的一部分来为请求服务,则先前请求的选定数目优选地为R-1,其中将为由请求多路复用器904启动而竞争的当前仅仅节点范围请求与这些先前请求进行比较,以确定它是否在同一地址片段中。如果要以这样的方式保护多个不同的窥探设备1900以防止请求过载,则优选地将请求的选定数目R-1设置成为各个窥探设备1900计算的量R-1的集合中的最大值。因为处理单元100优选地不协调它们对用于广播的请求的选择,所以以在块1423处所述的方式进行请求调速(throttle)不保证在特定窥探设备1900处的请求到达速率不会超过窥探设备1900的服务速率。然而,以所示方式对仅仅节点范围的广播请求进行调速将限制在给定数目的周期中可到达的请求数目,其可以表示为throttled_arr_rate=每R个周期的PU请求数其中PU是每个处理节点202的处理单元100的数目。窥探设备1900优选地被设计为处理以这样已调速的到达速率到达的、仅仅节点范围的广播请求而不重试。
如果不满足在块1423处所示的条件,则处理从块1423传递到已经描述的块1410。如果满足在块1419和1423处说明的条件,则如果请求为仅仅节点范围,则请求多路复用器904在请求总线905上发布请求,并且该处理通过页面连接符1425传递到图13C的块1427。相反,如果如在块1401处确定该请求为超级节点范围,则只有当请求多路复用器904确定了它在连续的地址占有期中没有输出太多请求时,它才发布该请求。具体地说,如块1403所示,为了避免使在A和/或B链接上的进入请求挨饿,请求多路复用器904在不超过可用地址占有期一半(即,1/t2)的期间启动主设备300的请求。如果满足了在块1401处所描述的条件,则请求多路复用器904在请求总线905上发布超级节点请求,并且该处理通过页面连接符1425传递到图13C的块1427。如果不满足在块1401处所描述的条件,则该处理从块1401传递到已经描述的块1410。
再次返回到块1417,如果该请求是全系统范围的广播请求而不是仅仅节点范围或者超级节点广播请求,则该处理继续到块1412。块1412描述了请求多路复用器904在请求总线905上将该请求广播到外出X、Y和Z链接的每一个上以及广播到本地中心地址启动缓冲器910。此后,该处理分叉并且通过页面连接符1414和1416传递到图13B,该图13B说明了在每个本地中心100处对请求的处理。
现在参见图13B,在也是本地主设备100的本地中心100处对全系统范围请求的处理被示出为从块1416开始,并且在与本地主设备100相同的处理节点202中的每个其它本地中心100处对请求的处理被描述为从块1414开始。首先转向块1414,由本地中心100在进入X、Y和Z链接上接收的请求由LH地址启动缓冲器910所接收。如块1420和图9中所述,映射逻辑1010将每个X、Y和Z请求映射到位置相关FIFO队列1020a-1020d中的适当一个以便缓冲。如上所述,在X、Y和Z链接上接收并且放置在位置相关队列1020a-1020d内的请求不被立即验证。相反,这些请求经受调整延迟装置1000a-1000d中的相应一个,这些延迟同步对给定本地中心100上的X、Y和Z请求以及本地请求的处理和对同一处理节点202中的其它本地中心100处的对应请求的处理(块1422)。此后,如块1430所示,调整延迟装置1000验证在位置相关FIFO队列1020a-1020d中的它们各自的请求。
现在参见块1416,在本地主设备/本地中心100处,请求总线905上的请求被直接馈送到LH地址启动缓冲器910中。因为没有穿越芯片间链接,所以这个本地请求到达LH地址启动FIFO 910早于在相同周期中发布的请求到达进入X、Y和Z链接。因此,在由块1424所述的、由映射逻辑1010进行的映射之后,调整延迟装置1000a-1000d之一将长延迟应用到该本地请求以同步其验证与在进入X、Y和Z链接上接收的请求的验证(块1426)。在这个延迟间隔之后,如块1430所示,相关调整延迟装置1000验证该本地请求。
在块1430处对在LH地址启动缓冲器910内排队的请求进行验证之后,该处理然后继续到块1434-1440,其中每个块都代表由判优器1032强制的、从LH地址启动缓冲器910中发布请求的条件。如上所述,同步在所有处理单元100内的判优器1032,以便由所有本地中心100进行相同的判定而无需相互通信。如块1434所述,只有当在外出第二层链接信息分配中存在可用于请求的地址占有期时,判优器1032才允许本地中心请求多路复用器1030输出该请求。因此,例如,判优器1032导致本地中心请求多路复用器1030仅仅在图7B的实施例的周期0或2期间才启动请求的传送。此外,如果由判优器1032实现的公平判优策略确定请求属于接下来应该被服务的位置相关FIFO队列1020a-1020d,则由本地中心请求多路复用器1030输出该请求(块1436)。
如在块1437和1438处进一步描述的那样,判优器1032导致只有当本地中心请求多路复用器1030确定它没有在连续的地址占有期中输出太多请求时,它才输出请求。具体地说,如块1437所示,为了避免过度驱动连接到外出A和B链接的中心100的请求总线905,判优器1032假定最坏情况(即,连接到下游中心100的另一个第二层链接的上游中心100在相同的周期内传送请求),并且在不超过可用地址占有期一半(即,1/t2)的期间启动请求。此外,如块1438所述,判优器1032还将请求的启动限制为低于通信量(traffic)在第二层链接上的公平分配,以避免可能使耦接到其外出A和B链接的处理单元100中的主设备300“挨饿”。
例如,给定图2A的实施例,其中每个处理节点有2对第二层链接和4个处理单元100,在下游中心100的请求总线905上的通信量经受高达9个处理单元100的竞争,即在通过第二层链接耦接到下游中心100的2个处理节点202的每一个中的4个处理单元100,以及下游中心100本身。因此,将请求总线905的带宽在可能的请求源中平均分配的示例性公平分配策略向进入A和B链接中的每一个分配4/9的带宽,并且向本地主设备300分配1/9的带宽。针对任意数目的第一和第二层链接而推广,由判优器1032所采用的示例性公平分配策略所消耗的、分配的可用地址帧的部分可以表示为部分=(t1/2+1)/(t2/2*(t1/2+1)+1)其中t1和t2代表处理单元100可以耦接到其的第一和第二层链接的总数,量“t1/2+1”代表每个处理节点202的处理单元100数目,量“t2/2”代表下游中心100可以耦接到其的处理节点202的数目,并且常量“1”代表分配给下游中心100的部分带宽。
如块1439所示,判优器1032还对全系统范围广播请求的传送进行调速,这是通过只有当请求地址不哈希到与在先前请求FIFO缓冲器911内缓冲的R-1个先前请求中的任何一个请求相同的存储体资源1910的存储体1912时才发布全系统范围的广播请求,其中1/R是最大到达速率的一部分,并且最慢的受保护窥探设备1900可以该到达速率为请求服务。因此,以所示方式对全系统范围的广播请求进行调速将限制在给定数目的周期内可到达给定窥探设备1900的请求的数目,其可以表示为throttled_arr_rate=每R个周期的N个请求其中N是处理节点202的数目。窥探设备1900优选地被设计为处理以这样已调速的到达速率到达的请求而不重试。
最后参见块1440所示的条件,只有当LH标记FIFO队列924a中有可用于分配的条目时,判优器1032才允许由本地中心请求多路复用器1030输出请求(块1440)。
如果在任何块1434-1440处做出了否定的确定,则如块1442所指示的那样,延迟该请求直到其中在块1434-1440处说明的所有确定都是肯定的后续周期为止。相反,如果在所有块1434-1440处进行了肯定的确定,则判优器1032向本地中心请求多路复用器1030通知将选定请求输出到多路复用器920的输入端,该多路复用器920总是向由LH地址启动缓冲器910提供的请求(若有的话)给予优先权。因此,多路复用器920在窥探总线922上发布该请求。应当注意,多路复用器920的其它端口(例如,RH、RLX、RLY、和RLZ)可以与LH地址启动缓冲器910一起同时提供请求,这意指窥探总线922的最大带宽必须等于外出A和B链接的带宽的10/8(假定图7B的实施例),以便跟得上最大到达速率。
还应当观察到,仅仅在本地中心地址启动缓冲器910内缓冲的请求在外出A和B链接上传送,并且要求与链接信息分配内的地址占有期对齐。因为所有其它竞争由多路复用器920发布的请求仅仅以本地窥探器304以及它们相应的FIFO队列而不是外出A和B链接作为目标,所以可以在信息帧的剩余周期内发布这样的请求。因此,与由多路复用器920采用的特定判优方案无关,保证所有同时向多路复用器920提供的请求在单个信息帧的延迟之内传送。
如块1444所示,响应于请求在窥探总线922上的发布,LH标记FIFO队列924a在下一个可用条目的主设备标记字段1100中记录在该请求中指定的主设备标记。然后,如块1446所示,将该请求路由到外出A和B链接。该处理然后通过页面连接符1448传递到图13B,其描述了在请求阶段期间在每个远程中心处对请求的处理。
图13B中描述的处理还从块1446继续到块1450,其说明了响应于从LH地址启动缓冲器910中移除请求,本地中心100释放分配给该请求的本地中心令牌。如块1452所示,该请求被进一步路由到本地中心100中的窥探器304。响应于该请求的接收,窥探器304生成部分响应(块1454),其被记录在LH部分响应FIFO队列930内(块1456)。具体而言,在块1456处,通过参考分配指针1210将LH部分响应FIFO队列930中的条目1200分配给该请求,递增分配指针1210,在所分配条目的部分响应字段1202内放置本地中心的部分响应,并且在响应标记字段1204中设置本地(L)标记。此后,在块1458处,结束在本地中心100处的请求阶段处理。
现在参见图13C,其中描述了根据本发明、在远程中心(或者对于仅仅节点范围的广播请求,节点主设备)100处的请求处理的示例性方法的高级逻辑流程图。如同所述,对于全系统范围或者超级节点广播请求,当在远程中心100处在其进入A和B链接之一上收到请求时,该处理从页面连接符1448开始。如上所述,在如块1460所示将请求锁存到保持缓冲器902a-902b的相应一个中之后,如块1464和1465所述,由远程中心多路复用器903和请求多路复用器904计算该请求以便在请求总线905上传送该请求。具体而言,在块1464处,远程中心多路复用器903根据将地址占有期平均地分配给在进入第二层链接上接收的请求的公平分配策略,确定是否输出全系统范围的广播请求(超级节点请求总是“获胜”的请求,这是因为没有由节点主设备100在其它第二层链接上同时供应的竞争请求)。此外,如块1465所述,只有当地址占有期可用时,与第一层链接信息分配时间片对齐的请求多路复用器904才会输出请求。因此,如块1466所示,如果请求不是多路复用器903的公平分配策略下的获胜请求,如果适用,或者如果没有地址占有期是可用的,则多路复用器904等待下一地址占有期。然而应当理解,即使延迟了在进入第二层链接上接收的请求,该延迟也将不会超过第一层链接信息分配的一帧。
如果满足在块1464和1465处描述的条件,则多路复用器904在请求总线905上启动该请求,并且该处理从块1465继续到块1468。如同所示,从图13A的块1421开始、在块1423处继续的节点主设备100处的请求阶段处理也传递到块1468。块1468说明了在请求总线905上发布的请求到外出X、Y和Z链接以及NM/RH保持缓冲器906的路由。在块1468之后,该处理分叉。第一路径通过页面连接符1470传递到图13D,其说明了在远程(或节点)叶子100处的请求处理的示例性方法。第二路径从块1468继续到块1474,其说明了窥探多路复用器920确定要将在其输入端提供的哪个请求在窥探总线922上输出。如同所示,窥探多路复用器920使本地中心请求优先于远程中心请求,远程中心请求又优先于在NL/RL保持缓冲器914a-914c中缓冲的请求。因此,如果由LH地址启动缓冲器910提供了本地中心请求以便选择,则如块1476所示,延迟在NM/RH保持缓冲器906内缓冲的请求。然而,如果没有由LH地址启动缓冲器910提供请求,则窥探多路复用器920将来自NM/RH保持缓冲器906的请求发布在窥探总线922上(在超级节点请求的情况下,没有由LH地址启动缓冲器910提供竞争请求,并且在块1474处描述的确定将总是具有否定的结果)。
响应于在窥探总线922上检测到请求,标记FIFO队列924b中的适当一个(即,在节点主设备处,NM标记FIFO队列924b2,或者在远程中心处,与在其上接收了请求的进入第二层链接相关联的RH标记FIFO队列924b0和924b1之一)将由该请求指定的主设备标记放置到其下一个可用条目的主设备标记字段1100中(块1478)。如上所述,仅仅节点范围的广播请求和全系统范围的广播请求通过该请求的Ttype字段700内的范围指示符730来区分,而超级节点模式由配置寄存器123所指示。如块1480所示,该请求被进一步路由到节点主设备100或远程中心100中的窥探器304。此后,该处理分叉并且继续到块1482和1479中的每一个。
首先参见块1482,窥探器304响应于请求的接收而生成部分响应,并且将该部分响应记录在NM/RH部分响应FIFO队列940内(块1484)。具体而言,通过参考分配指针1210将NM/RH部分响应FIFO队列940中的条目1230分配给该请求,递增该分配指针1210,在部分响应字段1202内放置远程中心的部分响应,并且在响应标记字段1234中设置节点主设备/远程标志(NM/R)。应当注意到,NM/RH部分响应FIFO队列940因此以相同的数据结构缓冲不同范围的操作的部分响应。此外,如块1483和1485所示,如果该请求是在节点主设备100处的超级节点请求,则还在LH部分响应FIFO队列930的条目1200内屏蔽处理器100的部分响应,并且设置响应标记阵列1204内的本地标志。在块1483或者块1485之后,在节点主设备100或者远程中心100处的请求阶段处理在块1486结束。
现在转向块1479,如果配置寄存器123指示超级节点模式并且该处理器是节点主设备100,则进一步将该请求路由到第二层链接中的预定一个(例如,链接A)。然后,该处理通过块1477传递到块1448,其中块1448表示在远程中心100处对该请求的请求阶段处理。相反,如果在块1479处做出了否定的确定,则该处理简单地在块1481终止。
现在参见图13D,其中说明了根据本发明、在远程叶子(或节点叶子)100处的请求处理的示例性方法的高级逻辑流程图。如同所示,当在远程叶子或节点叶子100处在其进入X、Y和Z链接之一上接收到请求时,该处理从页面连接符1470开始。如块1490所示,响应于请求的接收,该请求被锁存到与在其上接收了请求的第一层链接相关联的NL/RL保持缓冲器914a-914c中的特定一个中。接下来,如块1491所述,该请求连同在窥探多路复用器920的输入端提供的其它请求一起由窥探多路复用器920计算。如上所述,窥探多路复用器920使本地中心请求优先于远程中心请求,远程中心请求又优先于在NL/RL保持缓冲器914a-914c中缓冲的请求。因此,如果提供了本地中心或者远程中心请求以便选择,则如块1492所示,延迟在NL/RL保持缓冲器914内缓冲的请求。然而,如果没有向窥探多路复用器920提供较高优先级的请求,则窥探多路复用器920通过在X、Y和Z请求之间进行公平的选择,在窥探总线922上发布来自NL/RL保持缓冲器914的请求。
响应于在窥探总线922上检测到请求,与请求范围以及接收该请求的路由相关联的标记FIFO队列924c0-924c2、924d0-924c2和924e0-924e2中的特定一个将由该请求指定的主设备标记放置到其下一个可用条目的主设备标记字段1100中(块1493)。也就是说,在该请求的Ttype字段700内的范围指示符730用来确定该请求是仅仅节点范围还是全系统范围,而配置寄存器123的设置用来指示超级节点模式。对于仅仅节点范围以及超级节点广播请求,与在其上接收了请求的进入第一层链接相关联的NL标记FIFO队列924c2、924d2和924e2中的特定一个缓冲该主设备标记。对于全系统范围和超级节点广播请求,将主设备标记放置在与在其上接收了请求的进入第一和第二层链接的组合相对应的远程节点中的RL标记FIFO队列924c0-924c1、924d0-924d1和924e0-924e1中的特定一个中。如块1494所示,该请求被进一步路由到远程叶子100中的窥探器304。响应于请求的接收,窥探器304处理该请求,生成它们各自的部分响应,并且累积该部分响应以获得该处理单元100的部分响应(块1495)。如页面连接符1497所示,远程叶子或节点叶子100的窥探器304的部分响应根据下面所述的图15A进行处理。
图13E是示例性方法的高级逻辑流程图,窥探器304利用该方法例如在图13B-13D的块1454、1482和1495处生成对请求的部分响应。响应于由窥探器304(例如,IMC窥探器126、L2高速缓存窥探器116或者I/O控制器128内的窥探器)接收到请求,该处理从块1401开始。响应于请求的接收,窥探器304通过参考由该请求指定的事务类型,确定该请求是否是诸如逐出请求、写入请求、或者部分写入请求之类的写入类型的请求。响应于窥探器304在块1403处确定该请求不是写入类型的请求(例如,读取或者RWITM请求),该处理继续到块1405,其中说明了如果需要的话,窥探器304通过常规处理生成对该请求的部分响应。然而,如果窥探器304确定该请求是写入类型的请求,则该处理继续到块1407。
块1407描述了窥探器304确定它是否是用于由该写入类型请求所指定的请求地址的LPC。例如,窥探器304可以通过参考一个或多个基地址寄存器(BAR)和/或指定窥探器304所负责的地址范围(即,LPC)的地址哈希函数,来进行所述确定。如果窥探器304确定它不是用于该请求地址的LPC,则该处理传递到块1409。块1409说明了窥探器304生成写入请求部分响应720(图7C),其中有效字段722和目的地标记字段724由全‘0’形成,由此表示该窥探器304不是用于该请求地址的LPC。然而,如果窥探器304在块1407处确定它是用于该请求地址的LPC,则该处理传递到块1411,其中描述了窥探器304生成写入请求部分响应720,其中有效字段722被设置为‘1’,并且目的地标记字段724指定了唯一地标识窥探器304在数据处理系统200内的位置的目的地标记或者路由。在块1409或1411中的任一个之后,图13E所示的处理在块1413结束。
VII.部分响应阶段结构和操作现在参见图14,其中描述了说明在图1的互连逻辑120内的部分响应逻辑121b的示例性实施例的框图。如同所示,部分响应逻辑121b包括路由逻辑1500,其将由远程叶子(或节点叶子)100处的窥探器304生成的远程部分响应路由回到远程中心(或节点主设备)100,其中经由外出第一层X、Y和Z链接中的适当一个从该远程中心(或节点主设备)100接收了该请求。此外,部分响应逻辑121b包括组合逻辑1502和路由逻辑1504。组合逻辑1502累积从远程(或节点)叶子100接收的部分响应以及在NM/RH部分响应FIFO队列940内缓冲的、对相同请求的其它部分响应(一个或多个)。对于仅仅节点范围的广播操作,节点主设备100的组合逻辑1502直接将累积的部分响应提供给响应逻辑122。对于全系统范围或者超级节点广播操作,组合逻辑1502将累积的部分响应提供给路由逻辑1504,其经由外出A和B链接之一将累积的部分响应路由到本地中心100。
部分响应逻辑121b还包括保持缓冲器1506a-1506b,其从远程中心100接收和缓冲部分响应;多路复用器1507,其应用公平判优策略以从在保持缓冲器1506a-1506b内缓冲的部分响应当中进行选择;以及广播逻辑1508,其将由多路复用器1507选择的部分响应广播到其处理节点202内的每个其它处理单元100。如将多路复用器1507的输出端耦接到可编程延迟装置1509的路径进一步所示,多路复用器1507执行由可编程延迟装置1509延迟大约一个第一层链接延迟时间的部分响应的本地广播,以便与在进入X、Y和Z链接上从其它处理单元100接收的部分响应大致同时地由组合逻辑1510接收该本地广播部分响应。组合逻辑1510累积在进入X、Y和Z链接上接收的部分响应和从进入第二层链接接收的本地广播部分响应以及本地生成的部分响应(其在LH部分响应FIFO队列930内缓冲),并且当不处于超级节点模式时,将所累积的部分响应传送到响应逻辑122,以便生成该请求的组合响应。
现在参见图15A-15C,其中说明了分别描述了在远程叶子(和节点叶子)、远程中心(和对于非超级节点模式操作的节点主设备)、以及本地中心(或者对于超级节点模式操作的节点主设备)处的操作的部分响应阶段期间的示例性处理。在这些附图中,部分响应的传送可能经受未显式示出的各种延迟。然而,因为如上所述、在部分响应延迟上没有定时约束,所以这样的延迟(如果存在的话)将不会导致操作出错,并因此不在此处进行进一步的描述。
现在具体参见图15A,当远程叶子(或节点叶子)100的窥探器304生成请求的部分响应时,在远程叶子(或节点叶子)100处的部分响应阶段处理从块1600开始。如块1602所示,路由逻辑1500然后使用链接信息分配的远程部分响应字段712,经由与在其上接收了请求的进入第一层链接相对应的外出X、Y或Z链接,将该部分响应路由到用于该请求的远程中心100。如上所示,在其上接收了请求的进入第一层链接通过标记FIFO队列924c0-924c2、924d0-924d2和924e0-924e2中的哪一个保持用于该请求的主设备标记来指示。此后,如页面连接符1604所示以及如下面参考图15B所述,在远程中心(或节点主设备)100处继续部分响应处理。
现在参见图15B,其中说明了根据本发明、在远程中心(以及对于非超级节点模式操作,在节点主设备)处的部分响应处理的方法的示例性实施例的高级逻辑流程图。响应于接收到通过第一层X、Y和Z链接之一耦接到远程中心(或节点主设备)100的远程叶子(或节点叶子)100之一的部分响应,所述处理从页面连接符1604开始。响应于该部分响应的接收,组合逻辑1502读出分配给该操作的、在NM/RH部分响应FIFO队列940内的条目1230。如与在其上接收了部分响应的链接相关联的X、Y或Z指针1216-1220所示,由在NM/RH部分响应FIFO队列940内所观察到的FIFO次序标识该条目。组合逻辑1502然后累积远程(或节点)叶子100的部分响应与所读取条目1230的部分响应字段1202的内容。如上所述,累积操作优选地是诸如逻辑或操作之类的非破坏性操作。如块1605和1607所示,对于超级节点模式中在节点主设备100处的请求,还在LH部分响应FIFO队列930的条目1200内屏蔽所累积的部分响应,并且设置响应标志阵列1204内的适当标志。在块1605或块1607之后,该处理继续到块1614。在块1614处,组合逻辑1502通过参考NM/RH部分响应FIFO队列940中的条目1230的响应标志阵列1234,利用在块1604接收的部分响应来确定所有的远程(或节点)叶子100是否已经报告了它们各自的部分响应。如果否,则该处理继续到块1616,其中说明了组合逻辑1502用所累积的部分响应更新分配给该操作的条目1230的部分响应字段1202,在响应标志阵列1234中设置适当的标志来指示哪个远程(或节点)叶子100提供了部分响应,以及使指针1216-1220中相关联的一个前进。此后,在块1618处结束该处理。
再次参见块1614,响应于由组合逻辑1502确定所有远程(或节点)叶子100都已经报告了它们各自的对该操作的部分响应,组合逻辑1502通过参考释放指针1212,从NM/RH部分响应FIFO队列940中释放用于该操作的条目1230(块1620)。接下来,如块1621所述,组合逻辑1502检查已释放条目的路由字段1236,以确定该操作的范围。如果已释放条目的路由字段1236指示该操作在远程节点处处理,则如块1622所述,组合逻辑1502利用链接分配信息中的远程部分响应字段712,将所累积的部分响应路由到由路由字段1236的内容所指示的外出A和B链接中的特定一个。(超级节点模式中的操作的部分响应优选地在第二层链接的预定一个(例如,链接A)上传送。)此后,该处理通过页面连接符1624传递到图15C。再次参见块1621,如果该条目的路由字段1236指示该操作在节点主设备100处处理,则如果配置寄存器123未指示超级节点模式,则组合逻辑1502直接将所累积的部分响应提供给响应逻辑122(块1617)。此后,该处理通过页面连接符1625传递到下面所述的图17A。然而,如果组合逻辑1502在块1617确定配置寄存器123指示超级节点模式,则该处理简单地在块1619结束而不用让组合逻辑1502将从NM/RH部分响应FIFO队列940中释放的部分响应路由到响应逻辑122。不需要这样的路由是因为如下面参考图15C所述,用于这样操作的组合响应从由LH部分响应FIFO队列930所维护的屏蔽副本中生成。
现在参见图15C,其中描述了根据本发明的实施例、在本地中心100(对于超级节点模式,包括本地主设备100或者节点主设备100)处的部分响应处理的示例性方法的高级逻辑流程图。响应于在本地中心100处经由进入A和B链接之一从远程中心100接收到部分响应,该处理从块1624开始。在接收时,该部分响应被放置在耦接到在其上接收了部分响应的进入第二层链接的保持缓冲器1506a、1506b内(块1626)。如块1627所示,如果配置寄存器123未指示超级节点模式,则多路复用器1507应用公平判优策略,以从在保持缓冲器1506a-1506b内缓冲的部分响应当中进行选择。因此,如果通过公平判优策略未选择部分响应,则如块1628所示,延迟部分响应的广播。必要时,一旦通过公平判优策略(可能在延迟之后)选择了部分响应,则多路复用器1507将部分响应输出到广播逻辑1508和可编程延迟装置1509。因为部分响应的到达速率由请求启动的速率所限制,所以多路复用器1507的输出总线将不会因部分响应而变得过载。如块1625所示,如果配置寄存器123未指示超级节点模式,则该处理接下来继续到块1629,否则省略块1629并且直接继续到块1630。
块1629描述了广播逻辑1508经由第一层X、Y和Z链接将由多路复用器1507选择的部分响应广播到其处理节点202中的每个其它处理单元100,并且多路复用器1507通过将部分响应输出到可编程延迟装置1509来执行部分响应的本地广播。此后,该处理分叉并且继续到块1631和块1630中的每一个,其中块1631说明了在其它本地中心100处的部分响应阶段处理的继续。如块1630所示,如果配置寄存器123未指示超级节点模式,则当前本地中心100内的部分响应广播由有选择应用的可编程延迟装置1509延迟大约第一层链接的传送延迟时间,以便该本地广播部分响应与在进入X、Y和Z链接上、从其它处理单元100接收的部分响应(一个或多个)大约同时地由组合逻辑1510接收。如块1640所示,组合逻辑1510将远程中心100的本地广播部分响应与从进入第一层链接(一个或多个)接收的部分响应(一个或多个),以及与在LH部分响应FIFO队列930内缓冲的本地生成的部分响应一起累积。
为了累积部分响应,组合逻辑1510首先读出LH部分响应FIFO队列930内分配给该操作的条目1200。如与在其上接收了本地广播部分响应的链接相对应的指针1214、1215中的特定一个所示,该条目由LH部分响应FIFO队列930内所观察到的FIFO次序所标识。组合逻辑1510然后累积远程中心100的本地广播部分响应与所读取条目1200的部分响应字段1202的内容。接下来,如块1642所示,组合逻辑1510还通过参考条目1200的响应标志阵列1204,利用当前接收的部分响应(一个或多个),确定是否已经从被期望部分响应的每个处理单元中接收了部分响应。如果否,则该处理传递到块1644,其描述了组合逻辑1510用新累积的部分响应更新从LH部分响应FIFO队列930中读取的条目1200。此后,在块1646结束该处理。
回到块1642,如果组合逻辑1510确定所有被期望部分响应的处理单元100都已经报告了它们的部分响应,则该处理继续到块1650。块1650描述了组合逻辑1510通过参考释放指针1212从LH部分响应FIFO队列930中释放分配给该操作的条目1200。然后如块1652所述,组合逻辑1510将所累积的部分响应传递到响应逻辑122,以便生成组合响应。此后,该处理通过页面连接符1654传递到图17A,其中说明了在本地中心(或节点主设备)100处的组合响应处理。
现在参见块1632,当由组合逻辑1510接收部分响应(一个或多个)时,在非超级节点模式中在一个或多个第一层链接上由本地中心100接收的部分响应(一个或多个)的处理开始。如块1634所示,组合逻辑1510可以向在进入第一层链接上接收的部分响应(一个或多个)应用小的调整延迟,以便使部分响应(一个或多个)的处理彼此同步以及与本地广播部分响应同步。此后,如在已经描述过的块1640以及后续块处所描述的那样,处理该部分响应(一个或多个)。
VIII.组合响应阶段结构和操作现在参见图16,其中描述了根据本发明、在图1的互连逻辑120内的组合响应逻辑121c的示例性实施例的框图。如同所示,组合响应逻辑121c包括保持缓冲器1702a-1702b,每个保持缓冲器从通过进入A和B链接中的相应一个耦接到本地中心100的远程中心100接收并缓冲组合响应。保持缓冲器1702a-1702b的输出形成第一多路复用器1704的两个输入,第一多路复用器1704应用公平判优策略以从由保持缓冲器1702a-1702b缓冲的组合响应(若有的话)当中进行选择,以便启动到信息帧的组合响应字段710内的第一总线1705上。
第一多路复用器1704具有第三输入端,通过该第三输入端,由响应逻辑122提供仅仅节点范围的广播操作的组合响应,以便在保持缓冲器1702a-1702b中缺少任何组合响应的情况下,选择和启动到信息帧的组合响应字段710内的第一总线1705上。因为第一多路复用器1704总是给予从远程中心100接收的全系统范围的广播操作的组合响应优先于仅仅节点范围的广播操作的本地生成组合响应的优先权,所以在某些操作条件下,响应逻辑122可能必须等待相当长的时段以便让第一多路复用器1704选择它提供的组合响应。因此,在最坏情况下,响应逻辑122必须能够让数目等于NM标记FIFO队列924b2中的条目数的组合响应和部分响应对排队,该条目数确定了给定处理单元100在任一时刻可以同时具有的仅仅节点范围的广播操作的最大数目。即使组合响应被延迟了相当长的时段,由主设备300和窥探器304对该组合响应的观察也将被延迟相同的时间量。因此,组合响应的延迟启动不会有违背上述定时约束的危险,这是因为在由获胜主设备300对该组合响应的观察和由拥有窥探器304对该组合响应的观察之间的时间没有因此减少。
第一总线1705耦接到外出X、Y和Z链接以及节点主设备/远程中心(NM/RH)缓冲器1706中的每一个。对于仅仅节点范围的广播操作,NM/RH缓冲器1706对由在这个节点主设备100处的响应逻辑122提供的组合响应和累积部分响应(即,目的地标记)进行缓冲。
进入第一层X、Y和Z链接每个都耦接到远程叶子(RL)缓冲器1714a-1714c中的相应一个。NM/RH缓冲器1706和RL缓冲器1714a-1714c的输出形成第二多路复用器1720的4个输入。第二多路复用器1720具有另外的第五输入端,其耦接到本地中心(LH)保持缓冲器1710的输出端,该本地中心(LH)保持缓冲器1710为全系统范围的广播操作缓冲由在这个本地中心100处的响应逻辑122提供的组合响应和累积的部分响应(即,目的地标记)。第二多路复用器1720的输出将组合响应驱动到第二总线1722上,其中标记FIFO队列924和外出第二层链接耦接到该第二总线1722。如同所述,标记FIFO队列924还被耦接以经由附加信道接收在LH保持缓冲器1710或NM/RH缓冲器1706中缓冲的累积的部分响应(即,目的地标记)。主设备300和窥探器304还耦接到标记FIFO队列924。与标记FIFO队列924的连接允许窥探器304观察组合响应并且允许相关的主设备300接收组合响应和目的地标记(若有的话)。
在没有上述窗口扩展312b的情况下,由主设备300和窥探器304在基本上相同的时间观察组合响应,在一些操作情况下,可能导致关于从获胜主设备300到窥探器304n的组合响应延迟的定时约束项(即,C_lat(WM_S))接近于零,这违反了定时约束。然而,因为窗口扩展312b具有大致为第一层链接传送延迟的持续时间,所以尽管主设备300和窥探器304基本上同时观察组合响应,但是还可以满足上述定时约束。
现在参见图17A-17C,其中描述了分别描述根据本发明的示例性实施例、在本地中心(或节点主设备)、远程中心(或节点主设备)、以及远程叶子(或节点叶子)处的示例性组合响应阶段处理的高级逻辑流程图。现在具体参见图17A,在本地中心(或节点主设备)100处的组合响应阶段处理从块1800开始,然后继续到块1802,其描述了响应逻辑122基于请求类型和累积的部分响应而生成对操作的组合响应。如块1803-1805所示,如果组合响应710内的范围指示符730指示该操作是仅仅节点范围的广播操作或者配置寄存器123指示超级节点模式,则在节点主设备100处的组合响应阶段处理在图17B的块1863处继续。然而,如果范围指示符730指示该操作是全系统范围的广播操作,则如块1804所示,远程中心100的响应逻辑122将该组合响应和累积的部分响应放置到LH保持缓冲器1710中。借助于利用或操作累积部分响应,对于写入类型的请求,累积的部分响应将包含被设置为‘1’的有效字段722,以表示在伴随的目的地标记字段724中存在有效的目的地标记。对于其它类型的请求,累积的部分响应中的位0将被设置为‘0’,以指示不存在这样的目的地标记。
如块1844所述,第二多路复用器1720与所选择的第二层链接信息分配时间片对齐,并且只有当外出第二层链接信息分配中有可用于组合响应的地址占有期时,才从LH保持缓冲器1710中选择组合响应和累积的部分响应,以便启动。因此,例如,仅仅在图7B的实施例的周期1或3期间,第二多路复用器1720才从LH保持缓冲器1710输出组合响应和累积的部分响应。如果在块1844做出了否定的确定,则如块1846所示,延迟LH保持缓冲器1710内的组合响应的启动,直到其中地址占有期可用的后续周期为止。相反,如果在块1844处做出了肯定的确定,则第二多路复用器1720优先于其它输入而选择LH保持缓冲器1710内的组合响应,以便启动到第二总线1722上并且随后在外出第二层链接上传送。
还应当注意,第二多路复用器1720的其它端口(例如,RH、RLX、RLY、和RLZ)也可以与LH保持缓冲器1710同时地提供请求,这意味着第二总线1722的最大带宽必须等于外出第二层链接的带宽的10/8(假定图7B的实施例),以便跟得上最大到达速率。此外应当观察到,仅仅在LH保持缓冲器1710内缓冲的组合响应在外出第二层链接上传送,并且要求与链接信息分配内的地址占有期对齐。因为竞争由第二多路复用器1720发布的所有其它组合响应仅仅以本地主设备300、窥探器304以及它们各自的FIFO队列而不是外出第二层链接作为目标,所以可以在信息帧的剩余周期内发布这样的组合响应。因此,与由第二多路复用器1720采用的特定判优方案无关,保证同时向第二多路复用器1720提供的所有组合响应在单个信息帧的延迟之内传送。
在第二总线1722上发布组合响应之后,该处理分叉并且继续到块1848和1852中的每一个。块1848描述了将启动到第二总线1722上的组合响应路由到外出第二层链接,以便传送到远程中心100。此后,该处理通过页面连接符1850继续到图17C,其中图17C描述了在远程中心100处的组合响应处理的示例性方法。
现在参见块1852,还利用在第二总线1722上发布的组合响应来查询LH标记FIFO队列924a,以从其中的最旧条目中获得主设备标记。此后,LH标记FIFO队列924a释放分配给操作的条目(块1854)。在块1854之后,该处理分叉并且继续到块1810和1856中的每一个。在块1810,LH标记FIFO队列924a确定该主设备标记是否指示发起了与组合响应相关联的请求的主设备300驻留在这个本地中心100中。如果不是的话,则这个路径中的处理在块1816结束。然而,如果该主设备标记指示发起的主设备300驻留在当前本地中心100中,则LH标记FIFO队列924a将该主设备标记、组合响应和累积的部分响应路由到由该主设备标记标识的发起主设备300(块1812)。响应于组合响应和主设备标记的接收,发起主设备300处理该组合响应,如果对应的请求是写入类型请求,则还处理累积的部分响应(块1814)。
例如,如果组合响应指示“成功”并且对应的请求是读取类型的请求(例如,读取、DClaim或RWITM请求),则发起主设备300可以更新或准备接收所请求的存储块。在这种情况下,丢弃累积的部分响应。如果组合响应指示“成功”而且对应的请求是写入类型的请求(例如,逐出、写入或部分写入请求),则发起主设备300从累积的部分响应中提取目的地标记字段724,并且利用其内容作为数据标记714,该数据标记714用于将该操作的后续数据阶段路由到其目的地。如果“成功”的组合响应指示或暗示用于发起主设备300的HPC状态的准予,则如标号313所述,发起主设备300将另外开始保护它对存储块的所有权。然而,如果在块1814处接收的组合响应指示诸如“重试”之类的其它结果,则可能要求发起主设备300或许以不同的范围(例如,全局而非本地)重新发布请求。此后,该处理在块1816结束。
现在参见块1856,LH标记FIFO队列924a还将组合响应和相关联的主设备标记路由到本地中心100内的窥探器304。响应于组合响应的接收,窥探器304处理该组合响应,并且执行响应于其所需的任何操作(块1857)。例如,窥探器304可以将所请求的存储块供应到请求的发起主设备300,使所请求的存储块的高速缓存的副本无效等。如果该组合响应包括窥探器304要将存储块的所有权转移到请求主设备300的指示,则窥探器304在其保护窗口312a的末尾附加一可编程长度的窗口扩展312b,对于所说明的拓扑结构,其优选地具有大致为在第一层链接上的一个芯片跳跃的延迟的持续时间(块1858)。当然,对于其它数据处理系统拓扑结构和互连逻辑120的不同实现,可以有利地将可编程窗口扩展312b设置为其它长度,以补偿链接延迟差异(例如,耦接不同处理节点202的不同长度的电缆)、拓扑结构或者物理约束、电路设计约束、或者各个操作阶段的有界延迟的较大变化性。此后,在本地中心100处的组合响应阶段处理在块1859结束。
现在参见图17B,其中描述了根据本发明、在远程中心(或节点主设备)100处的组合响应阶段处理的示例性方法的高级逻辑流程图。如同所述,对于在远程中心100处的组合响应阶段处理,当在远程中心100处在其进入A或B链接之一上接收到组合响应时,该处理从页面连接符1860开始。然后如块1862所示,在保持缓冲器1702a-1702b中相关联的一个内缓冲该组合响应。一旦都满足了在块1864和1865处描述的条件,则由第一多路复用器1704在第一总线1705上传送缓冲的组合响应。特别地,在第一层链接信息分配中地址占有期必须可用(块1864),并且由第一多路复用器1704实现的公平分配策略必须选择其中缓冲了组合响应的保持缓冲器1702a、1702b(块1865)。如前所述,在超级节点模式中,缓冲组合响应的保持缓冲器1702a总是第一多路复用器1704的公平分配策略的获胜者,这是因为在其它第二层链接(一个或多个)上没有为访问第一总线1705而竞争的操作。
如块1864所示,如果不满足这些条件中的任何一个,则在块1866延迟由第一多路复用器1704将该组合响应启动到第一总线1705上直到下一个地址占有期为止。然而,如果满足块1864和1865所述的两个条件,则该处理从块1865继续到块1868,其说明了第一多路复用器1704在第一总线1705上将组合响应广播到外出X、Y和Z链接以及组合响应字段710内的NM/RH保持缓冲器1706。如包含块1863和1867的路径到块1868的连接所示,对于仅仅节点范围和超级节点广播操作,只有当没有由保持缓冲器1702a-1702b提供竞争的组合响应时,第一多路复用器1704才将由响应逻辑122提供的组合响应发布到第一总线1705上,以便路由到外出X、Y和Z链接以及NM/RH保持缓冲器1706。如果经由进入第二层链接之一从远程中心100接收了对全系统范围的广播操作的任何竞争组合响应,则如块1867所示,延迟仅仅节点范围广播操作的本地生成的组合响应。当第一多路复用器1704最终选择仅仅节点范围广播操作的本地生成的组合响应时,响应逻辑122直接将相关联的累积部分响应放置到NM/RH保持缓冲器1706中。
在块1868之后,该处理分叉。第一路径通过页面连接符1870传递到图17C,其说明了在远程叶子(或节点叶子)100处的组合响应阶段处理的示例性方法。第二路径从块1868继续到块1874,其说明了第二多路复用器1720确定在其输入端提供的哪个组合响应要在第二总线1722上输出。如同所示,第二多路复用器1720使本地中心组合响应优先于远程中心组合响应,远程中心组合响应又优先于在远程叶子缓冲器1714a-1714c中缓冲的组合响应。因此,如果由LH保持缓冲器1710提供了本地中心组合响应以便选择,则如块1876所示,延迟在远程中心缓冲器1706内缓冲的组合响应。然而,如果没有由LH保持缓冲器1710给出组合响应(在超级节点模式的情况下总是这样),则第二多路复用器1720将来自NM/RH缓冲器1706的组合响应发布到第二总线1722上。
响应于第二总线1722上的组合响应检测,如块1878所述,与在其上接收组合响应的第二层链接相关联的标记FIFO队列924b0和924b1中的特定一个(或者,对于仅仅节点或者超级节点广播操作,NM标记FIFO队列924b2)从其最老条目的主设备标记字段1100中读出由相关的请求指定的主设备标记,然后释放该条目(块1880)。该处理然后分成三叉并且继续到块1882、1881、和1861中的每一个。块1882描述了标记FIFO队列924b中的相关一个将组合响应和主设备标记路由到远程中心(或节点主设备)100中的窥探器304。响应于组合响应的接收,窥探器304处理该组合响应(块1884)并且如上所述,执行任何需要的操作。如果该操作是全系统范围的或者超级节点广播操作并且如果组合响应包括窥探器304要将存储块的一致性所有权转移到进行请求的主设备300的指示,则如块1885所示,窥探器304向其保护窗口312a附加窗口扩展312b。此后,在块1886处结束在远程中心100的组合响应阶段处理。
现在参见块1881,如果组合响应字段710内的范围指示符730和配置寄存器123的设置指示该操作不是仅仅节点范围或超级节点广播操作,而是全系统范围广播操作,则不在远程中心100处执行进一步的处理,并且在块1886结束该处理。然而,如果范围指示符730指示该操作是仅仅节点范围广播操作,或者配置寄存器123指示超级节点模式并且当前的处理器100是节点主设备100,则该处理传递到块1883,其说明了NM标记FIFO队列924b2将主设备标记、组合响应和累积的部分响应路由到由主设备标记所识别的发起主设备300。响应于组合响应和主设备标记的接收,发起主设备300处理该组合响应,并且如果对应的请求是写入类型的请求,则还处理累积的部分响应(块1887)。
例如,如果组合响应指示“成功”并且对应的请求是读取类型的请求(例如,读取、DClaim或RWITM请求),则发起主设备300可以更新或者准备接收所请求的存储块。在这种情况下,丢弃累积的部分响应。如果组合响应指示“成功”并且对应的请求是写入类型的请求(例如,逐出、写入或部分写入请求),则发起主设备300从累积的部分响应中提取目的地标记字段724,并且使用其内容作为数据标记714,该数据标记714用于将该操作的后续数据阶段路由到其目的地。如果“成功”的组合响应指示或暗示用于发起主设备300的HPC状态的准予,则如标号313所述,发起主设备300将另外开始保护它对存储块的所有权。然而,如果在块1814接收的组合响应指示诸如“重试”之类的其它结果,则可能要求发起主设备300重新发布该请求。此后,在块1886结束该处理。
现在转向块1861,如果处理该组合响应的处理单元100是节点主设备100并且配置寄存器123指示超级节点模式,则如块1874所示,第二多路复用器1720另外将该组合响应路由到第二层链接中的选定一个(例如,链接A)。此后,该处理通过页面连接符1860,并且组合响应的处理在远程中心100处继续。
现在参见图17C,其中说明了根据本发明、在远程叶子(或节点)叶子100处的组合响应阶段处理的示例性方法的高级逻辑流程图。如同所示,当在远程(或节点)叶子100处在其进入X、Y和Z链接之一上接收到组合响应时,该处理从页面连接符1888开始。如块1890所示,该组合响应被锁存到NL/RL保持缓冲器1714a-1714c之一中。接下来,如块1891所述,由第二多路复用器1720计算该组合响应以及在其输入端提供的其它组合响应。如上所述,第二多路复用器1720使本地中心组合响应优先于远程中心组合响应,远程中心组合响应又优先于在NL/RL保持缓冲器1714a-1714c中缓冲的组合响应。因此,如果提供了本地中心或远程中心组合响应以便选择,则如块1892所示,延迟在NL/RL保持缓冲器1714内缓冲的组合响应。然而,如果没有向第二多路复用器1720提供较高优先级的组合响应,则第二多路复用器920将组合响应从NL/RL保持缓冲器1714发布到第二总线1722上。
响应于在第二总线1722上检测到组合响应,如块1893所述,与操作的范围以及接收该组合响应的路由相关联的标记FIFO队列924c0-924c2、924d0-924d2、和924e0-924e2中的特定一个从其最旧条目的主设备标记字段1100中读出由相关联的请求指定的主设备标记。也就是说,利用配置寄存器123的设置或者组合响应字段710内的范围指示符730来确定是否在超级节点模式中进行请求,或者如果不是的话,该请求是仅仅节点范围还是全系统范围。对于仅仅节点范围和超级节点广播请求,与在其上接收了组合响应的进入第一层链接相关联的NL标记FIFO队列924c2、924d2和924e2中的特定一个缓冲主设备标记。对于全系统范围广播请求,从与在其上接收了组合响应的进入第一和第二层链接的组合相对应的、RL标记FIFO队列924c0-924c1、924d0-924d1和924e0-924e1中的特定一个中检索主设备标记。
一旦相关的标记FIFO队列924标识了用于该操作的适当条目,标记FIFO队列924就释放该条目(块1894)。如块1895所示,组合响应和主设备标记被进一步路由到远程(或节点)叶子100中的窥探器304。响应于组合响应的接收,窥探器304处理该组合响应(块1896)并且如上所述,执行任何所需操作。如果该操作不是仅仅节点范围的操作并且如果组合响应包括窥探器304要将存储块的一致性所有权转移到请求主设备300的指示,则如上所述并且如块1897所示,窥探器304向其保护窗口312a的末尾附加窗口扩展312b。此后,在块1898结束在远程叶子100处的组合响应阶段处理。
IX.数据阶段结构和操作数据逻辑121d以及其对数据递送的处理可以各种方式实现。在一个优选实施例中,数据逻辑121d及其操作如上面通过引用并入的、共同未决的美国专利申请中详细描述的那样实现。当然,另外的未被请求和响应流使用的第二层链接(一个或多个)(例如,B链接)可以用于数据递送以增强数据带宽。
X.结论如已经描述的那样,本发明提供了改进的处理单元、数据处理系统以及用于数据处理系统的互连构造。此处公开的创造性数据处理系统拓扑结构通过在处理节点的多个处理单元之间点对点节点间链接的实现,提供了在不同处理节点的处理单元之间的高带宽通信。此外,因为例如,如图2A-2B所示,相同的互连逻辑可能支持各种互连构造拓扑结构,所以此处公开的处理单元和处理节点显示出非常高的灵活性,并因此允许数据处理系统的处理节点以最适于预期工作负载的方式互连。
虽然如参考优选实施例所述的那样已经具体示出了本发明,但是本领域的技术人员应当理解,可以在其中进行形式和细节上的各种改变而不背离本发明的精神和范围。例如,虽然本发明公开了利用FIFO队列来对操作相关标记和部分响应进行排序的优选实施例,但是本领域技术人员将会理解,可以采用其它有序的数据结构来以所描述的方式维持在操作的各个标记和部分响应之间的次序。此外,虽然本发明的优选实施例采用单向通信链接,但是本领域的技术人员通过参考前文将会理解,可以可选地采用双向通信链接。此外,虽然已经参考特定的示例性互连构造拓扑结构描述了本发明,但是本发明不局限于此处具体描述的那些互连构造拓扑结构,而是可以广泛地应用于多种不同的互连构造拓扑结构。
权利要求
1.一种数据处理系统,包括第一处理节点和第二处理节点,其中所述第一处理节点包括彼此耦接以便通信的多个第一处理单元,并且所述第二处理节点包括彼此耦接以便通信的多个第二处理单元;所述多个第一处理单元至少包括第一、第二和第三处理单元,并且所述多个第二处理单元至少包括第四、第五和第六处理单元;所述第一和第四处理单元通过第一点对点链接而连接;所述第二和第五处理单元通过第二点对点链接而连接;以及所述第三和第六处理单元通过第三点对点链接而连接。
2.如权利要求1所述的数据处理系统,其中所述第一、第二和第三点对点链接包括多个点对点第二层链接;以及所述多个第一处理单元中的每一个通过多个点对点第一层链接中的相应一个耦接到所述多个第一处理单元中的每一个其它处理单元。
3.如权利要求2所述的数据处理系统,其中,所述多个第一处理单元中的每一个都包括互连逻辑,该互连逻辑经由所有所述多个第一层链接以及所述多个第二层链接之一,将操作广播到所有所述多个第一处理单元以及所有所述多个第二处理单元。
4.如权利要求1所述的数据处理系统,其中所述多个第一处理单元包括节点主设备处理单元和至少一个节点叶子处理单元;所述多个第二处理单元包括远程中心处理单元和至少一个远程叶子处理单元;所述节点主设备处理单元将请求广播到每个节点叶子处理单元和所述远程中心处理单元;所述远程中心处理单元将所述请求广播到每个远程叶子处理单元;以及所述节点主设备处理单元基于由所述节点主设备处理单元接收的对所述请求的部分响应,将对所述请求的组合响应广播到每个节点叶子处理单元、远程中心处理单元和远程叶子处理单元。
5.如权利要求1所述的数据处理系统,其中,所述多个第一处理单元中的至少一个包括配置寄存器,该配置寄存器包括一个或多个位,用于以第一模式配置第一处理单元以及以替换的第二模式配置第一处理单元,在第一模式中,所述多个第一处理单元中的每一个通过多个点对点链接中的相应一个耦接到所述第二处理节点中的所述多个第二处理单元中的相应一个,而在第二模式中,少于所有的所述多个第一处理单元通过所述多个点对点链接耦接到所述多个第二处理单元中的处理单元。
6.如权利要求1所述的数据处理系统,其中所述多个第一和第二处理单元的操作按次序至少包括请求阶段,其中广播请求;部分响应阶段,其中各个处理单元确定它们各自的对所述请求的响应;以及组合响应阶段,其中分发对所述请求的全系统范围的组合响应;以及所述多个第一和第二处理单元以与所述请求相同的方向、经由所述请求穿过的每个链接路由所述组合响应,并且以与所述请求相反的方向、经由所述请求穿过的每个链接路由至少一个部分响应。
7.一种用于数据处理系统的第一处理节点,该数据处理系统至少包括所述第一处理节点和第二处理节点,所述第一处理节点包括彼此耦接以便通信的多个第一处理单元,其中所述多个第一处理单元中的每一个都包括互连逻辑,通过该互连逻辑,每个所述第一处理单元可以通过多个点对点链接中的相应一个耦接到所述第二处理节点中的多个第二处理单元中的相应一个,使得所述第一处理节点中的第一处理单元通过第一点对点链接耦接到第二处理节点中的第四处理单元;所述第一处理节点中的第二处理单元通过第二点对点链接耦接到第二处理节点中的第五处理单元;以及所述第一处理节点中的第三处理单元通过第三点对点链接耦接到第二处理节点中的第六处理单元。
8.如权利要求7所述的第一处理节点,其中所述多个点对点链接包括多个点对点第二层链接;以及所述多个第一处理单元中的每一个通过多个点对点第一层链接中的相应一个耦接到所述多个第一处理处理单元中的每一个其它处理单元。
9.如权利要求8所述的第一处理节点,其中,所述多个第一处理单元中的每一个都包括互连逻辑,该互连逻辑经由所有所述多个第一层链接以及所述多个第二层链接之一、将操作广播到所有所述多个第一处理单元以及所有所述多个第二处理单元。
10.如权利要求7所述的第一处理节点,其中所述多个第一处理单元包括节点主设备处理单元和至少一个节点叶子处理单元;所述多个第二处理单元包括远程中心处理单元和至少一个远程叶子处理单元;所述节点主设备处理单元将请求广播到每个节点叶子处理单元和所述远程中心处理单元;所述节点主设备处理单元基于由所述节点主设备处理单元接收的对所述请求的部分响应、将对所述请求的组合响应广播到每个节点叶子处理单元、远程中心处理单元和远程叶子处理单元。
11.如权利要求7所述的第一处理节点,其中,所述多个第一处理单元中的至少一个包括配置寄存器,该配置寄存器包括一个或多个位,用于以第一模式配置第一处理单元以及以替换的第二模式配置第一处理单元,在第一模式中,所述多个第一处理单元中的每一个通过多个点对点链接中的相应一个耦接到所述第二处理节点中的所述多个第二处理单元中的相应一个,而在第二模式中,少于所有的所述多个第一处理单元通过所述多个点对点链接耦接到所述多个第二处理单元中的处理单元。
12.如权利要求7所述的第一处理节点,其中所述多个第一处理单元的操作按次序至少包括请求阶段,其中广播请求;部分响应阶段,其中各个处理单元确定它们各自的对所述请求的响应;以及组合响应阶段,其中分发对所述请求的全系统范围的组合响应;以及所述多个第一处理单元中的节点主设备处理单元以与所述请求相同的方向、经由所述请求穿过的每个链接路由所述组合响应,并且所述多个第一处理单元中的每个节点叶子处理单元以与所述请求相反的方向、经由所述请求穿过的链接路由至少一个部分响应。
13.一种数据处理系统中的数据处理方法,该数据处理系统包括第一处理节点和第二处理节点,其中所述第一处理节点包含多个第一处理单元,并且所述第二处理节点包含多个第二处理单元,所述方法包括彼此耦接所述多个第一处理单元;彼此耦接所述多个第二处理单元;以及耦接所述第一处理节点和所述第二处理节点,使得所述多个第一处理单元中的每一个通过多个点对点链接中的相应一个耦接到所述第二处理节点中的所述多个第二处理单元中的相应一个;其中所述耦接包括通过第一点对点链接将所述第一处理节点中的第一处理单元耦接到所述第二处理节点中的第四处理单元;通过第二点对点链接将所述第一处理节点中的第二处理单元耦接到所述第二处理节点中的第五处理单元;以及通过第三点对点链接将所述第一处理节点中的第三处理单元耦接到所述第二处理节点中的第六处理单元。
14.如权利要求13所述的方法,其中,所述多个点对点链接包括多个点对点第二层链接;以及耦接所述多个第一处理单元包括,通过多个点对点第一层链接中的相应一个,将所述多个第一处理单元中的每一个耦接到所述多个第一处理单元中的每个其它处理单元。
15.如权利要求14所述的方法,还包括所述多个第一处理单元之一内的互连逻辑,其经由所有所述多个第一层链接以及所述多个第二层链接之一将操作广播到所有所述多个第一处理单元以及所有所述多个第二处理单元。
16.如权利要求13所述的方法,其中所述多个第一处理单元包括节点主设备处理单元和至少一个节点叶子处理单元;所述多个第二处理单元包括远程中心处理单元和至少一个远程叶子处理单元;所述方法还包括所述节点主设备处理单元将请求广播到每个节点叶子处理单元和所述远程中心处理单元;所述远程中心处理单元将所述请求广播到每个远程叶子处理单元;以及所述节点主设备处理单元基于由所述节点主设备处理单元接收的对所述请求的部分响应,将对所述请求的组合响应广播到每个节点叶子处理单元、远程中心处理单元和远程叶子处理单元。
17.如权利要求13所述的方法,还包括响应于配置寄存器的第一设置,以第一模式传递操作,在第一模式中,所述多个第一处理单元中的每一个通过多个点对点链接中的相应一个与所述第二处理节点中的所述多个第二处理单元中的相应一个进行通信;以及响应于配置寄存器的第二设置,以替换的第二模式传递操作,在第二模式中,少于所有的所述多个第一处理单元通过所述多个点对点链接与所述多个第二处理单元中的处理单元进行通信。
18.如权利要求13所述的方法,其中所述多个第一和第二处理单元的操作按次序至少包括请求阶段,其中广播请求;部分响应阶段,其中各个处理单元确定它们各自的对所述请求的响应;以及组合响应阶段,其中分布对所述请求的全系统范围的组合响应;以及所述方法还包括,所述多个第一和第二处理单元以与所述请求相同的方向、经由所述请求穿过的每个链接路由所述组合响应,并且以与所述请求相反的方向、经由所述请求穿过的每个链接路由至少一个部分响应。
全文摘要
一种数据处理系统包括第一处理节点和第二处理节点。第一处理节点包括彼此耦接以便通信的多个第一处理单元,并且第二处理节点包括彼此耦接以便通信的多个第二处理单元。该多个第一处理单元中的每一个通过多个点到点链路中的相应一个耦接到第二处理节点中的该多个第二处理单元中的相应一个。
文档编号G06F15/163GK1940904SQ20061010641
公开日2007年4月4日 申请日期2006年7月14日 优先权日2005年9月27日
发明者威廉·J·斯塔克, 本杰明·L·古德曼, 普拉文·S·雷迪, 维森特·E·丘恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1