环形互连上的分组的同步无缓冲流控制的方法和装置转让专利

申请号 : CN200580016968.2

文献号 : CN1957564B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·玛蒂纳G·克里索斯S·费利克斯

申请人 : 英特尔公司

摘要 :

本发明的实施例一般涉及网络中的数据流控制,尤其涉及在环形互连(120)中的同步分组流控制。方法的实施例可包括,如果例如无缓冲、同步环形互连(120)的半导体芯片的环形互连上的目的地节点(110(1-n))的所有缓冲区均不可用,则在该目的地节点处拒绝到达的分组,将该被拒绝的分组留在环形互连(120)上以继续遍历该环,并且如果有缓冲区可用,则当被拒绝的分组到达目的地节点(110(1-n))之后接受该分组。在替换实施例中,方法可包括当被拒绝的分组遍历环形互连(120)时跟踪被拒绝的分组。装置的实施例可包括含有双向环形互连和耦合至该双向环形互连的多个节点的半导体芯片。每一节点可拥有缓冲区,如果缓冲区可用,则存储到达环形互连上的分组,如果缓冲区不可用,则拒绝到达的分组。这些实施例提供对无缓冲、同步环形互连上的分组的有效的流控制。示例性应用包括芯片多重处理。

权利要求 :

1.一种用于半导体芯片上的环形结构上的分组的同步无缓冲流控制的方法,包括:如果所述环形结构上的目的地节点处的所有多个缓冲区均不可用,则在分组到达所述目的地节点之后拒绝所述分组;

将所述被拒绝的分组留在所述环形结构上以继续遍历所述环形结构,以随后传递所述被拒绝的分组;

当所述被拒绝的分组遍历所述环形结构时跟踪所述被拒绝的分组;以及如果所述多个缓冲区之一可用,则在所述被拒绝的分组到达所述目的地节点之后接受所述被拒绝的分组。

2.如权利要求1所述的方法,其特征在于,所述跟踪包括:计算所述被拒绝的分组返回至所述目的地节点的周期计数,其中所述周期计数等于当前时钟周期加上所述被拒绝的分组遍历所述环形结构并返回至所述目的地节点的时钟周期的数目。

3.如权利要求2所述的方法,其特征在于,所述接受包括:如果所述周期计数等于所述被拒绝的分组到达所述目的地节点之后的实际时钟周期则接受所述被拒绝的分组。

4.如权利要求1所述的方法,其特征在于,所述跟踪包括:在所述被拒绝的分组中设置一数据字节,以表示所述目的地节点的标识号。

5.如权利要求4所述的方法,其特征在于,所述跟踪还包括,每次所述目的地节点拒绝所述被拒绝分组时,对所述数据字节进行递增。

6.如权利要求5所述的方法,其特征在于,所述接受包括:如果所述数据字节对应于所述目的地节点的标识号则接受所述被拒绝的分组。

7.如权利要求1所述的方法,其特征在于,还包括:当所述被拒绝的分组被接受进入所述多个缓冲区中可用的一个中之后跟踪下一被拒绝的分组。

8.如权利要求1所述的方法,其特征在于,还包括:如果所述多个缓冲区中的至少两个可用,则

在接受所述被拒绝的分组之前接受未被拒绝的分组或之后被拒绝的分组,以及保留所述至少两个缓冲区之一以接受所述被拒绝的分组。

9.如权利要求1所述的方法,其特征在于,还包括:如果所述多个缓冲区中仅有一个可用,则在接受所述被拒绝的分组之前拒绝并不跟踪之前未被拒绝的分组或另一之前被拒绝的分组。

10.如权利要求1所述的方法,其特征在于,所述将所述被拒绝的分组留在所述环形结构上包括:将所述被拒绝的分组留在所述环形结构上以在接受所述被拒绝的分组之前至少遍历所述环形结构一次。

11.如权利要求1所述的方法,其特征在于,所述将所述被拒绝的分组留在所述环形结构上包括:将所述被拒绝的分组留在所述环形结构上以每个时钟周期遍历所述环形结构的至少一个节点。

12.如权利要求1所述的方法,其特征在于,所述将所述被拒绝的分组留在所述环形结构上包括:将所述被拒绝的分组留在所述环形结构上以在多个时钟周期期间遍历所述环形结构的一个节点。

13.一种用于半导体芯片上的环形结构上的分组的同步无缓冲流控制的方法,包括:如果第一条件存在,则在所述环形结构上的目的地节点处拒绝到达的分组;

将所述被拒绝的分组留在所述环形结构上以遍历所述环形结构,以随后传递所述被拒绝的分组;

当所述被拒绝的分组遍历所述环形结构时跟踪所述被拒绝的分组;以及如果第二条件存在,则在所述被拒绝的分组返回至所述目的地节点处之后在所述目的地节点处接受所述被拒绝的分组。

14.如权利要求13所述的方法,其特征在于,所述第一条件是所述到达分组的编号等于一随机数,所述第二条件是所述到达分组的编号不等于所述随机数。

15.如权利要求13所述的方法,其特征在于,所述跟踪包括:将一标识号与所述被拒绝的分组关联;

对所述标识号进行递增;以及

将所述递增后的标识号与下一被拒绝的分组关联。

16.如权利要求15所述的方法,其特征在于,所述接受包括:接受所有被拒绝的分组之中具有最小标识号的被拒绝的分组;以及在接受所述被拒绝的分组之后,将所述最小标识号重设为下一最小标识号。

17.一种半导体芯片,包括:

双向环形结构,所述双向环形结构包括多个与系统时间信号线耦合的环槽,所述系统时钟信号线将时钟信号提供到所述双向环形结构;以及耦合至所述双向环形结构的多个节点,每一节点具有缓冲区,如果所述缓冲区可用则存储到达所述双向环形结构上的节点处的分组,如果所述缓冲区不可用,则拒绝所述分组、将所述被拒绝的分组留在所述双向环形结构上以随后传递所述被拒绝的分组并且当所述被拒绝的分组遍历所述双向环形结构时跟踪所述被拒绝的分组。

18.如权利要求17所述的半导体芯片,其特征在于,每一节点还将所述被拒绝的分组留在所述双向环形结构上直到所述缓冲区可用。

19.如权利要求17所述的半导体芯片,其特征在于,所述每一节点包括:计算所述被拒绝的分组返回至所述节点的周期计数的加法器,其中所述节点将根据所述周期计数跟踪所述被拒绝的分组。

20.如权利要求17所述的半导体芯片,其特征在于,所述每一节点包括:计算所述被拒绝的分组返回至所述节点的周期计数的可编程有限状态机,其中所述节点将根据所述周期计数跟踪所述被拒绝的分组。

21.如权利要求17所述的半导体芯片,其特征在于,所述每一节点包括:计算所述被拒绝的分组返回至所述节点的周期计数的处理器,其中所述节点将根据所述周期计数跟踪所述被拒绝的分组。

22.一种用于环形互连上的分组的同步无缓冲流控制的系统,包括:多处理器芯片,包括

多个节点,每一节点包括处理器并具有存储分组的缓冲区,和耦合至所述节点的至少一个双向环形结构,所述至少一个双向环形结构包括多个与系统时钟信号线耦合的环槽,所述系统时钟信号线将时钟信号提供到所述双向环形结构,其中所述处理器:确定所述节点的缓冲区是否可用于从所述至少一个双向环形结构接收分组,如果所述缓冲区不可用,则拒绝所述分组并使所拒绝的分组遍历所述至少一个双向环形结构以随后传递所拒绝的分组,以及当所述被拒绝的分组遍历所述至少一个双向环形结构时跟踪所拒绝的分组;以及耦合至所述多处理器芯片的总线。

23.如权利要求22所述的系统,其特征在于,所述处理器还将:为所述被拒绝的分组计算跟踪标签,以及

如果所述缓冲区可用,则在所述被拒绝的分组返回至所述节点之后接受具有所述跟踪标签的被拒绝的分组。

24.如权利要求23所述的系统,其特征在于,所述跟踪标签包括等于当前时钟周期加上所述被拒绝的分组遍历所述至少一个双向环形结构并返回至所述节点的时钟周期的数目的周期计数。

25.如权利要求23所述的系统,其特征在于,所述跟踪标签包括对应于所述节点的标识号。

26.如权利要求22所述的系统,其特征在于,所述每一节点还包括高速缓存库、存储器接口以及输入/输出端口。

27.如权利要求22所述的系统,其特征在于,所述缓冲区当其满时不可用。

28.如权利要求22所述的系统,其特征在于,当缓冲区不可用一段时间之后,所述总线从所述多处理器芯片运输前往所述缓冲区的任何分组。

29.如权利要求28所述的系统,其特征在于,所述一段时间是2n个时钟周期,其中n是所述节点的数目。

30.一种用于半导体芯片上的环形结构上的分组的同步无缓冲流控制的系统,包括:用于如果所述环形结构上的目的地节点处的所有多个缓冲区均不可用,则当分组到达所述目的地节点之后,拒绝所述分组的装置;

用于将所述被拒绝的分组留在所述环形结构上以继续遍历所述环形结构的装置,以随后传递所述被拒绝的分组;

用于当所述被拒绝的分组遍历所述环形结构时跟踪所述被拒绝的分组的装置;以及用于如果所述多个缓冲区之一可用,则在所述被拒绝的分组到达所述目的地节点之后接受所述被拒绝的分组的装置。

31.如权利要求30所述的系统,其特征在于,还包括:用于当所述被拒绝的分组被接受进入所述多个缓冲区中可用的一个中之后跟踪下一被拒绝的分组的装置。

32.如权利要求30所述的系统,其特征在于,还包括:如果所述多个缓冲区中的至少两个可用,

用于在接受所述被拒绝的分组之前接受未被拒绝的分组或之后被拒绝的分组的装置,以及用于保留所述至少两个缓冲区之一以接受所述被拒绝的分组的装置。

33.如权利要求30所述的系统,其特征在于,还包括:用于如果所述多个缓冲区中仅有一个可用,则在接受所述被拒绝的分组之前拒绝并不跟踪之前未被拒绝的分组或另一之前被拒绝的分组的装置。

34.一种用于半导体芯片上的环形结构上的分组的同步无缓冲流控制的系统,包括:用于如果第一条件存在,则在所述环形结构上的目的地节点处拒绝到达的分组的装置;

用于将所述被拒绝的分组留在所述环形结构上以遍历所述环形结构的装置,以随后传递所述被拒绝的分组;

用于当所述被拒绝的分组遍历所述环形结构时跟踪所述被拒绝的分组的装置;以及用于如果第二条件存在,则在所述被拒绝的分组返回至所述目的地节点处之后在所述目的地节点处接受所述被拒绝的分组的装置。

35.如权利要求34所述的系统,其特征在于,所述第一条件是所述到达分组的编号等于一随机数,所述第二条件是所述到达分组的编号不等于所述随机数。

说明书 :

环形互连上的分组的同步无缓冲流控制的方法和装置

发明领域

[0001] 本发明的实施例一般涉及网络中的数据流控制,尤其涉及在环形互连中的同步分组流控制。
[0002] 背景
[0003] 计算机网络中的流控制机制管理从源节点到目的地节点的分组的传输。典型的流控制机制包括否定确认(NACK)/重试、丢弃/源超时/重试、贷/借(credit/debit)和网络缓冲。一般,源节点向目的地节点发送分组,其中目的地节点具有用于保存它在处理之前从源节点接收到的分组的有限数量的“进入缓冲”。
[0004] 在NACK/重试流控制机制中,如果分组到达目的地节点,而目的地节点没有可用于传入的分组的缓冲,则分组被丢弃并从目的地节点向源节点发送回NACK消息。源节点然后将在稍后重试发送该分组。
[0005] 然而,NACK/重试的缺点在于源节点必须为已发送的分组提供缓冲,因为直到源节点接收ACK(确认)或NACK消息之前,源节点不了解目的地节点是否有可用于保存该分组的缓冲区。否则,如果目的地节点丢弃了分组且源节点没有在其自己的缓冲区中保存该分组,则该分组丢失。
[0006] 更大的缺点在于当源节点重新发送被NACK过的分组时的“重试”流引入的复杂性。
[0007] 另一缺点在于,使用NACK/重试的任何设计必须确保即使当网络由所发送的分组阻塞时NACK消息也能够经由网络返回源节点。此外,NACK消息本身消耗可另外用于分组的有价值的带宽。
[0008] 丢弃/源超时/重试流机制类似于NACK/重试。当目的地节点没有缓冲时,所发送的分组可被丢弃且可将响应发送回源节点。此外,在丢弃/源超时/重试中,无论何时存在过多的网络阻塞时均可丢弃所发送的分组。如果源节点在某个固定时间间隔或超时之后没有从目的地节点接收到响应,则它将自动重试发送一分组。
[0009] 除NACK/重试的缺点以外,丢弃/源超时/重试具有关于其超时的缺点。超时可能过长或过短。如果超时过长,则当目的地节点丢弃分组时,该目的地节点必须等待太长时间来接收重新发送的分组,从而增加了系统延迟。另一方面,如果超时过短,则源节点不必要地发送分组两次的可能性增加。这样,系统必须能够处理同一分组的两个(或更多)实例,导致复杂性和硬件成本的上升以及阻塞的增加。
[0010] 在贷/借流机制中,源节点通过使用“贷”和“借”来跟踪目的地节点处可用的缓冲区的数量。源节点仅当它知道在目的地节点处存在接受分组的可用的自由缓冲区时才将分组发送给目的地节点。当源节点向目的地节点发送一分组时,源节点“借”(递减)目的地节点拥有的可用的自由缓冲区的数量的本地计数。当目的地节点从其传入缓冲区中移除一分组时,目的地节点将“贷”消息发送回源节点,源节点“贷”(递增)目的地节点拥有的可用的自由缓冲区的数量的本地计数。
[0011] 贷/借机制要求目的地节点的传入缓冲区在n个源节点之间的固定划分。如果目的地节点拥有总数为B的传入缓冲区,则它可对每一源节点分配B/n个缓冲区条目。如果从所有源节点到目的地节点的通信量恰是均匀时,这将顺利执行。但对均匀通信量的任何偏离将导致对B个缓冲区的利用率的低效。这种设计的退化形式是为所有可能的分组在每个目的地节点提供足够的缓冲。换言之,如果n个源节点中的每一个可具有传输中(in-fight)的P个分组,则每一目的地节点必须具有P*n个缓冲区条目。这种机制的缺点在于它导致低效、区域不满足(area hungry)的设计,因为缓冲区利用率通常非常低。
[0012] 在网络缓冲流机制中,网络自己为不能在目的地节点处接受的分组提供缓冲。网络允许分组“停止”在网络中,使在停止的分组后行进在网络上的分组被该停止的分组阻滞。或者,可使用特殊的路由环绕(route-around)逻辑和缓冲来允许停止的分组之后的分组路由越过该停止的分组。
[0013] 尽管这种类型的设计可能对某些拓扑有效,但它阻止分组在例如环形的其它拓扑中传递。在环形拓扑中,由于分组行进循环的路线,除非采用复杂和硬件密集的路由环绕方案,否则停止可能完全阻滞对停止的分组之后的分组的传递。
[0014] 从而,在本领域中存在对克服分组传输尤其是环形拓扑中的典型流控制机制的缺点的需求。
[0015] 附图简述
[0016] 图1是根据本发明的实施例包含耦合至单个环形互连的多个节点的半导体芯片。
[0017] 图2是根据本发明的实施例包含耦合至多个单向和/或双向环形互连的多个节点的半导体芯片。
[0018] 图3是根据本发明的实施例的流控制方法的流程图。
[0019] 图4-7示出了图3的流控制方法在根据本发明的实施例的环形互连中的操作。
[0020] 图8是根据本发明的另一实施例的流控制方法的流程图。
[0021] 图9-16示出了图8的流控制方法在根据本发明的替换实施例的环形互连中的操作。
[0022] 图17是用于实现本发明的实施例的计算机系统的框图。
[0023] 详细描述
[0024] 本发明的实施例可提供用于在无缓冲、同步的环形互连中控制分组流的方法。在一个实施例中,该方法可包括:如果半导体芯片的环形互连上的目的地节点的缓冲区不可用,则在该目的地节点处拒绝到达的分组,将被拒绝的分组留在该环形互连上来继续遍历环形互连,并且如果目的地节点的缓冲区之一可用,则在目的地节点处当被拒绝的分组到达之后接受它。在替换实施例中,该方法也可包括当被拒绝的分组遍历环形互连时跟踪该被拒绝的分组,并且如果所跟踪的分组在预期的时间期间到达目的地节点且目的地节点缓冲区可用于接受所跟踪的分组,则接受所跟踪的分组。
[0025] 本发明的实施例也可提供包含环形互连和耦合至该环形互连的节点的半导体芯片,其中每一节点可包括当其可用时则可存储到达的分组并当其不可用时则可拒绝到达的分组的缓冲区。
[0026] 本发明的实施例可有利地提供环形互连中对分组的有效流控制。具体地,这些实施例可避免NACK/重试和丢弃/源超时/重试流机制的复杂性,例如不需要源节点处对已发送分组的重试流或缓冲。这些实施例也可避免对贷/借流机制所需的额外的缓冲区的需求和网络缓冲流机制中的路由环绕的硬连线的复杂性。这些实施例尤其有助于用于芯片多重处理的芯片上的环形互连。
[0027] 图1是根据本发明的实施例包括耦合至双向环形互连的多个节点的半导体芯片。节点110(1)到110(n)可在各个接入点或站处被连接至双向环形互连120。分组可按照顺时针或逆时针的任一方向在互连120上节点110(1)到110(n)之间行进。
[0028] 节点110(1)到110(n)可包括处理器、高速缓存库、存储器接口、全局相干引擎接口、输入/输出接口以及半导体芯片上找到的任何其它这样的处理分组的组件。
[0029] 图1中,在本发明的实施例中,可通过将单个较大的共享的高速缓存逻辑分割成诸子集而将节点110(1)到110(n)实现为高速缓存库。每一高速缓存库节点可包括该单个高速缓存中的地址空间的一部分,且可独立地为该单个高速缓存的这部分地址空间的块请求(读、写、使无效等)提供服务。在互连120上,每一高速缓存库节点可拥有其自己的接入点或站。
[0030] 图1中,互连120可包括多个单向的连线(未示出),其中第一组单向连线可按照顺时针方向运输分组,而第二组可按照逆时针方向运输分组。每一组单向连线可以是专用(例如,发送地址命令)或通用(例如,支持多种分组类型(地址请求、数据、高速缓存相干协议消息等))中的任一种。或者,每一组单向连线可被指定为运输单个分组类型。
[0031] 图1中,或者,互连120可包括能够在两个方向上运输分组的多个双向连线。在该替换实施例中,半导体芯片可包括在特定事务期间将每一连线切换到期望的方向以运输分组的切换逻辑。
[0032] 互连120可以各种速率运输分组。例如,互连120可按照每一时钟周期一个或多个节点或者每两个或多个时钟周期一个节点的速率运输分组。众多因素可确定运输速率,包括通信量、时钟速率、节点间的距离等。一般,节点等待将分组注入到互连120上,直到已经位于互连120上和位于该节点处的任何分组都通过了该节点。
[0033] 图2是根据本发明的实施例包含耦合至多个环形互连的多个节点的半导体芯片。节点210(1)到210(n)可在各个接入点或站处被连接至环形互连220(1)到220(m)。每一节点可选择环形互连220(1)到220(m)中的任何一个来将分组运输给另一节点。
[0034] 在一个实施例中,图2中的所有互连可以是单向的,其中某些互连仅以顺时针方向运输分组,而其它互连仅以逆时针方向运输分组。
[0035] 在替换实施例中,图2中的某些互连可以是单向的而其它可以是双向的。在该替换实施例中,单向互连中的某些可仅以顺时针方向运输分组,而其它可仅以逆时针方向运输分组。双向互连可按照两个方向运输分组,与图1的双向互连的操作一致。
[0036] 图3是根据本发明的实施例的流控制方法的流程图。图3中,例如无缓冲、同步环形互连的环形互连上的分组可每一周期在该环形互连上前进,使得一旦分组位于环形互连上,即不存在缓冲或停止。环形互连可被认为是一连串环槽,其中分组绕着环形互连前进。
[0037] 根据一个实施例,当分组到达环形互连上的环槽中的目的地节点时,该目的地节点可确定(310)在该目的地节点是否存在接收该分组的可用缓冲区。如果存在可用缓冲区,则目的地节点可接受(320)该分组进入该可用缓冲区,这将从环槽中移除该分组。如果没有缓冲区可用,则目的地节点可拒绝(330)该分组,并将被拒绝的分组留在环形互连上的环槽中以继续遍历环形互连直到被拒绝的分组返回至目的地节点,使得目的地节点可再次确定(310)在目的地节点处是否存在可用缓冲区,该方法可如上般继续。
[0038] 在被拒绝的分组遍历环形互连的时间期间,目的地节点处的缓冲区可能变为可用。在这种情况下,当被拒绝的分组再次到达该目的地节点时,目的地节点可接受(320)该分组。另一方面,如果被拒绝的分组到达目的地节点,且缓冲区仍不可用,则目的地节点可再次拒绝(330)该分组,并将该被拒绝两次的分组留在环形互连上以再次继续遍历该环形互连直到在目的地节点有缓冲区可用。
[0039] 图4-7示出了图3的流控制方法在根据本发明的实施例的环形互连中的操作。在此示例中,环形互连430可包括环槽420(1)到420(8)以绕环形互连430运输分组。每一环槽可被耦合至系统时钟信号线440以同步时钟周期期间内的环槽的运输。环形互连430可被耦合至节点410(1)到410(8)。每一节点可拥有环形互连430上的接入点或站,通过该接入点或站该节点可将分组注入到环槽420(1)到420(8)中或接受来自它们的分组。每一节点可在相邻环槽处注入或接受分组。在此示例中,环形互连430可以是以顺时针方向运输分组的单个单向环形互连。然而,本发明的实施例不限于特定类型的环形互连或分组运输方向。
[0040] 图4中,在时钟周期C处三个分组可以位于环形互连430上。从左开始,分组1可以位于环槽420(1)中,其目的地被指定为节点410(3)。分组2可位于环槽420(2)中,其目的地被指定为节点410(8)。分组3可位于环槽420(4)中,其目的地被指定为节点410(5)。环形互连430中其余的环槽可以是被占用或未被占用中的任一种。然而,为说明方便起见,仅有上述环槽被占用。
[0041] 图5示出了环形互连430在下一时钟周期——周期C+1处的状态。每一分组在时钟周期C期间以顺时针方向前进至其环槽。分组3到达其目的节点——节点410(5)。从而,根据本发明的实施例,如果节点410(5)确定(310)它有可用缓冲区,则节点410(5)可在下一时钟周期接受(320)分组3进入其缓冲区。否则,如果节点410(5)确定(310)它没有可用缓冲区,则分组3可被拒绝(330),分组3在环形互连430上前进。
[0042] 图6示出了环形互连430在第三时钟周期——周期C+2处的状态。由于节点410(5)有可用缓冲区,因此分组3在节点410(5)处被接受(320)。其余分组以顺时针方向前进至其环槽。分组1到达了其目的地节点——节点410(3)。从而,如果节点410(3)确定(310)它有可用缓冲区,则节点410(3)可在该时钟周期C+2期间接受(320)分组1进入其缓冲区。否则,如果节点410(3)确定(310)它没有可用缓冲区,则分组1可被拒绝(330)以在环形互连430上前进。
[0043] 图7示出了环形互连430在第四时钟周期——周期C+3处的状态。在这种情况中,节点410(3)确定(310)它没有任何可用缓冲区。结果,分组1被拒绝(330),并被留在环形互连430上。分组1已前进至其越过节点410(3)的环槽中,且可继续遍历环形互连430直到当分组1返回至节点410(3)时在节点430(3)有接受(320)分组1的可用缓冲区。
[0044] 可以理解,该示例仅是用于说明的目的,而不旨在将配置限于所示。环形互连可包括能够以单向或双向运输分组的一个或多个环形结构。此外,环槽的数目不必等于节点的数目。任何时候在两个节点之间可安置多于一个的环槽。相反,可在任何时候在两个环槽之间安置多于一个的节点。分组运输速率不必限于每个时钟周期一个节点,而可取决于应用包括每个时钟周期多个节点或多个时钟周期一个节点。
[0045] 还可理解,接受或拒绝分组的条件不必限于缓冲区的可用性,而可包括拒绝分组的任何条件。例如在替换实施例中,目的地节点可拒绝所有到达的第n个分组,其中n可以是随机生成数。
[0046] 图3中,为避免被拒绝的分组无限地遍历环形互连,而当缓冲区变为可用时较接近目的地节点的其它分组被接受(即,饿死),可提供附加的控制。例如,跟踪被拒绝的分组的方法可确保为该被拒绝的分组保留目的地节点处的可用缓冲区。
[0047] 图8是本发明的替换实施例的流控制方法的流程图。图8中,该方法可包括跟踪例如无缓冲、同步环形互连等环形互连上的被拒绝的分组以确保所有被拒绝的分组以及时的方式被接受。当分组到达环形互连上的目的地节点时,该目的地节点可确定(810)它是否有接收该分组的可用缓冲区。
[0048] 图8中,如果目的地节点确定(810)它没有用于到达的分组的可用缓冲区,则目的地节点可拒绝(830)该分组,并将该被拒绝的分组留在环形互连上以遍历该互连。目的地节点可确定(845)当前是否正在跟踪一分组。如果目的地节点被确定(845)当前没有跟踪分组,则目的地节点可跟踪(850)刚被拒绝的分组。否则,如果目的地节点被确定(845)为当前正跟踪一分组,则目的地节点可将被拒绝的分组留在环形互连上而不对其进行跟踪。以下将描述可由目的地节点使用的跟踪机制。
[0049] 目的地节点可等待(855)另一分组的到达。如果目的地节点确定(855)另一分组已到达该目的地节点,则目的地节点可确定(810)它是否有用于到达的分组的可用缓冲区。
[0050] 图8中,如果目的地节点确定(810)它有可用缓冲区,则目的地节点可确定(815)到达的分组当前是否正被跟踪。如果目的地节点确定(815)到达的分组正被跟踪,则目的地节点可接受(820)被跟踪的分组进入该可用缓冲区,并使用下述跟踪机制的任一种跟踪(825)该目的地节点的下一被拒绝的分组。目的地节点可等待(855)新跟踪的分组或另一分组的到达。
[0051] 图8中,如果到达的分组被确定(815)为不是正被跟踪的分组,则目的地节点可确定(835)是否有多于一个的目的地节点缓冲区可用。如果确定(835)有多于一个缓冲区可用,则未被跟踪的分组可被接受(840)进入可用缓冲区之一中,并为被跟踪的分组保留另一可用缓冲区。目的地节点可等待(855)被跟踪的分组或另一分组的到达。否则,如果确定(835)仅有一个缓冲区可用,则未被跟踪的分组可被拒绝(830),并被留在环形互连上,而为被跟踪的分组保留一个可用缓冲区。
[0052] 该方法确保为被跟踪的分组保留至少一个可用缓冲区,但如果有额外的缓冲区可用则允许未被跟踪的分组被接受。这样,当缓冲区空间有限时,被拒绝的分组可确信目的地节点处的接受。此外,当缓冲区空间不受限时可接受其它分组以保持环形互连对随后注入的分组的空闲。
[0053] 跟踪可包括计算被拒绝的分组当遍历了环形互连之后返回至目的地节点预期的周期计数。该周期计数可等于当目的地节点拒绝该分组时的实际时钟周期加上分组遍历环形互连的时钟周期的个数。例如,如果目的地节点在时钟周期C拒绝了分组,而分组遍历环形互连需要D个时钟周期,则周期计数可以等于C+D。从而,如果有缓冲区可用,则目的地节点可接受在时钟周期C+D到达的分组,作为被跟踪的拒绝的分组。如果有多于一个的缓冲区可用,则目的地节点可接受在其它时钟周期处到达的分组,但会确保为在时钟周期C+D处到达的分组保留可用缓冲区之
[0054] 或者,跟踪可包括在分组中设置一数据字节以表示该目的地节点的标识号。例如,如果标识号为N的目的地节点拒绝了分组,则该被拒绝的分组中的数据字节可被置为N。去往该节点的所有其它数据分组可使该数据字节置为0。从而,如果有缓冲区可用,则目的地节点可接受数据字节被置为N的分组。如果有多于一个缓冲区可用,则目的地节点可接受数据字节未置的到达的分组,但会确保为数据字节置为N的分组保留可用缓冲区之一。
[0055] 或者,目的地节点可跟踪所有被其拒绝的分组,并以它们被拒绝的顺序接受被拒绝的分组。例如,如果标识号为N的目的地节点拒绝了分组,则该被拒绝的分组中的数据字节可被置为N1以指示它是由该目的地节点拒绝的第一个分组。该目的地节点可将第二个被拒绝的节点中的数据字节置为N2以此类推。目的地节点可将一变量设成当前拒绝的最小标识号,在该情况中为N1。当有缓冲区可用时,当N1分组到达时目的地节点可接受它,并将该变量置为N2-下一最小标识号。如果有多于一个缓冲区可用,则目的地节点可接受所到达的分组,即使它们具有较大的标识号,但会确保为具有最小标识号的分组保留可用缓冲区之一。
[0056] 可以理解,跟踪不限于此处所述的机制,而可包括用于在网络中跟踪分组的任何合适机制。例如,可使用跟踪标签或跟踪标志来标识和跟踪被拒绝的分组。
[0057] 图9-16示出了图8的流控制方法在根据本发明的实施例的环形互连中的操作。该配置与关于图4-7所述的相同。
[0058] 图9中,在时钟周期C处三个分组可以位于环形互连430上。从左开始,分组1可以位于环槽420(8)中,分组2位于环槽420(2)中,分组3位于环槽420(4)中。所有的分组具有指定为节点410(4)的目的地。其余的环槽可以是被占用或未被占用中的任一种。然而,为说明方便起见,仅有上述环槽被占用。图9中,分组3到达其目的地节点——节点
410(4)。从而,根据本发明的实施例,如果节点410(4)确定(810)它有可用缓冲区,则节点
410(4)在该时钟周期C可接受分组3。否则,如果节点410(4)确定(810)它没有可用缓冲区,则分组3可被拒绝(830),并在环形互连430上前进。如果节点410(4)确定(845)它当前没有跟踪分组,则节点410(4)可跟踪(850)分组3。如果节点410(4)确定(845)它当前正跟踪一分组,则分组3可不留在环形互连430上而没有被跟踪。
[0059] 图10示出了环形互连430在下一时钟周期——周期C+1处的状态。在这种情况中,节点410(4)确定(810)它没有可用缓冲区并拒绝(830)分组3。由于节点410(4)确定(845)分组3是由节点410(4)拒绝的第一个分组,因此根据本发明的跟踪机制,节点410(4)可当分组3继续遍历环形互连430时跟踪(850)分组3。分组1和2以顺时针方向前进至其环槽。
[0060] 图11示出了环形互连430在下一时钟周期——周期C+2处的状态。分组2到达了其目的地节点——节点410(4)。假定在前一时钟周期C+1期间,节点410(4)确定(810)它有一个可用的缓冲区。但是根据本发明的实施例,节点410(4)可确定(815)分组2是否是被跟踪的分组。在该情况下,节点410(4)可确定(815)分组2不是被跟踪的分组,还可确定(835)仅有一个缓冲区可用。节点410(4)可拒绝(830)分组2,并将分组2留在环形互连430上。节点410(4)可确定(845)它当前正跟踪分组3。结果,节点410(4)可将被拒绝的分组2留在环形互连430上而未被跟踪。
[0061] 图12示出了环形互连430在下一时钟周期——周期C+3处的状态。如上所述,分组2被拒绝(830),但未被跟踪(845),因为分组3已经被跟踪。节点410(4)可等待(855)分组1、2或3的到达。由于节点410(4)拒绝了分组2,因此它仍有一个可用缓冲区。
[0062] 图13示出了环形互连430在下一时钟周期——周期C+4处的状态。分组1到达了其目的地节点——节点410(4)。假定在前一时钟周期C+3期间,节点410(4)确定(810)它有第二可用缓冲区。节点410(4)现在可有两个可用缓冲区。从而根据本发明的实施例,节点410(4)可确定(815)到达的分组1是否正被跟踪。由于分组1未正被跟踪(分组3正被跟踪),因此节点410(4)可确定(835)它是否有多于一个的缓冲区可用。由于节点410(4)确定了(835)它有两个缓冲区可用,因此节点410(4)可接受(840)分组1,并当所跟踪的分组3到达时为其保留可用的缓冲区。
[0063] 图14示出了环形互连430在下一时钟周期C+5处的状态。分组1在节点410(4)处被接受(840),且节点410(4)现在有一个缓冲区可用。被跟踪的分组3和未被跟踪的分组2可继续沿顺时针方向遍历环形互连430。
[0064] 如图15中所示,分组2和3可继续遍历环形互连430,直到在时钟周期C+8处,分组3会再次到达(855)其目的地节点——节点410(4)。在此情况中,节点410(4)有一个缓冲区可用。因此,根据本发明的实施例,节点410(4)可确定(810)它有一个可用的缓冲区,并确定(815)到达的分组3正被跟踪。节点410(4)可接受(820)被跟踪的分组3进入该可用缓冲区。
[0065] 图16示出了环形互连430在下一时钟周期C+9处的状态。分组3被接受(820)进入节点410(4)处的最后一个可用的缓冲区中。分组2可被跟踪(825)直到它被节点410(4)接受。如果节点410(4)确定(810)当分组2到达时它没有可用的缓冲区,则节点410(4)可再次拒绝(830)分组2并继续跟踪分组2。
[0066] 如图1中的半导体芯片的实施例可实现根据本发明的实施例的方法。在一个实施例中,半导体芯片110可包括环形互连120和耦合至环形互连120的节点110(1)到110(n)。每一节点可拥有至少一个缓冲区,如果当分组到达环形互连120时该缓冲区可用,则存储分组,如果该缓冲区不可用,则拒绝分组。每一节点还可包括计算用于跟踪被拒绝的分组的周期计数的加法器(未示出)。
[0067] 或者,每一节点可包括被编程来计算用于跟踪被拒绝的分组的周期计数的可编程有限状态机(未示出)。每一节点或者可包括计算周期计数的处理器(未示出)。
[0068] 类似地,如图2中的半导体芯片的实施例可实现根据本发明的实施例的方法。
[0069] 本发明的实施例可被耦合至经由通信总线包含其它半导体芯片的系统。根据本发明的实施例,总线可当分组到达或离开芯片时运输分组。在一个实施例中,如果被拒绝的分组在某一时间段之后还未被接受,例如当多次遍历芯片的环形互连上的节点之后或经过多个时钟周期之后,总线可运输来自芯片的被拒绝的分组。
[0070] 图17是计算机系统的框图,它可包含体系结构状态,包括供根据本发明的实施例使用的一个或多个多处理器和存储器。图17中,计算机系统1700可包括耦合至处理器总线1720的一个或多个多处理器1710(1)-1710(n),总线1720可被耦合至系统逻辑1730。这一个或多个多处理器1710(1)-1710(n)中的每一个可以是N位处理器,且可包括解码器(未示出)和一个或多个N位寄存器(未示出)。根据本发明的实施例,一个或多个多处理器1710(1)-1710(n)中的每一个可包括耦合至N位处理器、解码器和一个或多个N位寄存器的双向和/或单向环形互连(未示出)。
[0071] 系统逻辑1730可经由总线1750耦合至系统存储器1740,并经由外围总线1760被耦合至非易失性存储器1770和一个或多个外围设备1780(1)-1780(m)。外围总线1760可表示例如一个或多个外围部件互连(PCI)总线,1998年12月18日发布的PCI专业组(SIG)PCI局部总线规范修订版2.2;工业标准体系结构(ISA)总线;扩展的ISA(EISA)总线,1992年发布的BCPR Service Inc.EISA规范1992年第3.12版;通用串行总线(USB),1998年9月23日发布的USB规范第1.1版;以及同等的外围总线。非易失性存储器1770可以是诸如只读存储器(ROM)或闪存的静态存储器设备。外围设备1780(1)-1780(m)可包括例如键盘;鼠标或其它定点设备;诸如硬盘驱动器、光盘(CD)驱动器、光盘和数字视频盘(DVD)驱动器的大容量存储设备;显示器等。
[0072] 本发明的实施例可使用诸如通用微处理器的任何类型的计算机实现,它根据本实施例的教导编程。本发明的实施例因此也包括机器可读介质,它可包括用于对处理器编程以执行根据本发明的实施例的方法的指令。该介质可包括但不限于,任何类型的盘,包括软盘、光盘和CD-ROM。
[0073] 可以理解,用于实现本发明的实施例的软件的结构可采用任何期望的形式,诸如单个或多个程序。还可理解,本发明的实施例的方法可由软件、硬件或其组合实现。
[0074] 以上是本发明的较佳实施例的详细讨论。本申请人享有权利的本发明的全部范围由之后的权利要求书定义。权利要求书的范围旨在覆盖上述实施例以外的实施例及其等效实现方式。