背景技术
对硅上系统来说,由于不断需要实现新的功能和改进现有功能,因此,系统复杂性也在不断提高。这种提高可以通过增大集成电路上集成的组件的密度来实现。与此同时,电路工作的时钟速度也在趋于增大。与增大的组件密度相结合的较高时钟速度将会减小可在同一时钟域内部同时工作的区域。由此产生了对于模块化方法的需要。根据该方法,处理系统包含了多个相对独立的复杂组件。在常规处理系统中,系统模块相互之间通常是经由总线来进行通信的。然而,随着模块数量的增多,这种通信方法会因为下列问题而变得不切合实际。一方面,大量的模块将会形成过高总线负载,总线则只允许一个设备向总线发送数据,由此总线将会构成通信瓶颈。
一种用于克服这些缺陷的有效方法是由通信网络构成的。最近,作为一种用于解决高复杂性芯片中的互连问题的解决方案,芯片上网络(NoC)得到了相当多的关注。这其中有两方面的原因。首先,由于NoC构造和管理了全局线路,因此,NoC有助于解决全新的深亚微米技术中的电学问题。与此同时,NoC还通过共享线路而减少了线路数量并提升了其使用率。另外,与总线相比,NoC不但能量效率较高,可靠性较高,而且是可以扩缩的。其次,NoC将计算过程从通信过程中分离了出来,这在管理具有数亿晶体管的芯片设计过程中是非常重要的。NoC可以实现这种分离的原因在于,所述NoC通常是使用协议栈设计的,并且这些协议栈提供了用于分离通信服务应用和服务实施方式的恰当定义的接口。
对作为芯片上互连的网络来说,与总线或开关之类的直接互连方式相比,这种网络的引入从根本上改变了通信过程。这其中的原因在于网络具有多跳跃特性,其中通信模块并非直接连接,而是由一个或多个网络节点远端分隔的。这与目前普遍采用的直接连接模块所具有的现有互连方式(也就是总线)形成了对比。这种变化隐含在必须由知识产权部件(IP)或网络来处理的仲裁(该处理必须从集中式变成分布式)和通信属性(例如排序或流控制)中。
目前,这其中的大多数论题已经成为局域网和广域网(计算机网络)领域中的研究主题,并且已被用作了并行设备互连网络的互连方式。这两种网络都与芯片上网络非常相关,并且这些领域中的很多成果在芯片上都是适用的。然而,NoC的前提与芯片外(off-chip)系统存在差别,因此必须重新评估大多数的网络设计选择。由于片上网络具有不同的属性(例如较为紧密的链路同步)和约束条件(例如较高的存储器成本),因此将会产生不同的设计选择,而这最终将会影响网络服务。
NoC与芯片外网络的主要区别在于其约束条件以及同步处理。通常,与芯片外网络相比,芯片上网络的资源约束条件相对严格。与芯片外网络相比,芯片上网络的存储(也就是存储器)和计算资源相对昂贵,而其点到点链路的数量则相对较多。存储成本较高是因为诸如RAM之类的通用芯片上存储器将会占用很大的面积。由于存储器中的开销区域相当大,因此,如果将存储器分布在尺寸较小的网络组件中,那么情况甚至会更糟。
芯片外系统通常使用的是分组交换技术,并且提供的是尽力而为的服务。在每一个网络节点上有可能会出现争用,由此很难提供等待时间保证。此外,吞吐量保证可以使用基于速率的切换技术或是基于最终期限的分组交换技术来提供,但这需要很高的缓存成本。目前,一种用于提供这种时间相关保证的替换方法是使用时分多路(TDMA)电路,其中每一个电路都被专门用于一个网络连接。这些电路是以相对较低的存储器和计算成本来提供保证的。当网络架构留出了可供尽力而为的通信所使用的剩余保证带宽时,网络资源的使用率将会提升。
芯片上网络通常包括多个路由器以及网络接口。路由器是作为网络节点来服务的,并且该路由器可以用于在以静态(也就是说,路由是预先确定并且不会改变的)或动态方式(也就是说,路由有可能会因为NoC负载之类的因素而发生变化,从而避免热点)连至目的地的正确路径上传递数据,由此将数据从源网络接口传送到目的地网络接口。此外,路由器还可以实现时间保证(例如基于速率、基于最后期限或是使用TDMA方式的流水线电路)。关于路由器架构的更多细节可以在Edwin Rijpkema、Kees Goossens以及Paul Wielage于2001年10月发表于IN PROGRESS的“A router architecture for network onsilicon”一文中找到。
网络接口与IP部件(知识产权)相连,该部件可以代表任何类型的数据处理单元或存储器、桥接器等等。特别地,网络接口在IP部件与网络之间构成一个通信接口。该接口通常与现有总线接口是兼容的。相应的,网络接口被设计成处理数据序列化处理(将所提供的命令、标记、地址和数据装配到固定宽度(例如32比特)的信号群组中)以和分组化处理。此外,该网络接口还可以执行分组调度,这其中包括定时保证以及许可控制。
芯片上系统通常需要用于其互连通信的定时保证。而通信分类则正是为此提出的,在这种通信分类中,吞吐量、等待时间以及抖动都是基于全局时间概念来保证的(也就是路由器和网络接口这类网络组件之间的同步概念),其中基本时间单元被称为时间槽或时隙。所有的网络组件通常都包含了用于网络组件中的每一个输出端口的同等大小的时隙表,在该时隙表中为不同连接预备了时隙,并且该时隙表将会预先同步(也就是说,所有网络部件在同一时间都处于相同时隙中)。而连接则被用于识别不同的业务量类别并为其分配属性。
一种用于提供时间相关保证(也就是吞吐量、等待时间以及抖动)的效能成本合算的方法是使用采用了TDMA(时分多路)方式的流水线电路,与芯片上系统(SoC)中基于速率和基于最后期限并具有严格同步的方案相比,这种方法的优势是只需要较少的缓存空间。
在每一个时隙,数据项会从一个网络组件移动到下一个网络组件,也就是说,数据项会在路由器之间或是路由器与网络接口之间移动。因此,当在输出端口保留了某个时隙时,在在沿着主模块与从模块之间路径的后续输出端口上必须保留下一个时隙,依此类推。
当建立了具有定时保证的多个连接时,这时必须通过执行时隙分配来避免出现冲突(也就是不将一个时隙分配给一个以上的连接)。对指定的网络拓扑、也就是指定数量的路由器和网络接口以及介于IP部件之间的连接集合来说,为这个指定网络拓扑寻找最佳时隙分配的任务是一个计算强度很大的问题(NP完全(NP complete)),因为该任务包括寻找最优的解决方案,而这需要耗费大量的计算时间。
发明内容
因此,本发明的一个目的是在芯片上网络环境中提供改进的时隙分配。
由此,在这里提供了一种集成电路,其包括多个处理模块以及设置成耦合所述处理模块的网络。所述集成电路还包括多个网络接口,每一个网络接口都耦合在所述处理模块之一与所述网络之间。所述网络包括多个路由器,这些路由器经由网络链路耦合到相邻路由器。所述处理模块经由使用了穿过该网络的连接路径的连接进行相互通信,其中对于所需数量的时隙,每一个所述连接路径使用至少一个网络链路。此外,提供至少一个时隙分配单元,用于:为所述连接路径中的至少一个网络链路计算链路权重因数,该链路权重因数是作为所述至少一个网络链路的至少一个连接要求的函数来计算的;为至少一个连接路径计算连接路径权重因数,该连接路径权重因数是作为所述连接路径中的至少一个网络链路的计算所得链路权重因数的函数来计算的;以及根据计算所得连接路径权重因数将时隙分配给所述网络链路。
相应的,可以执行基于实际连接要求的时隙分配。
根据本发明的一个方面,所述连接要求包括带宽、等待时间、抖动、优先级和/或连接路径的时隙分配要求。时隙分配则可以根据具体连接要求之一被实施和优化。
根据本发明的一个方面,所述至少一个时隙分配单元适于按照连接路径权重因数的降序将时隙分配给所述网络链路。因此,在时隙分配过程中,首先考虑的是那些需要更多时隙的网络链路,这是因为这些连接具有更多的约束条件,如果将其留到最后,那么为其找到空闲时隙的机会将会减小。与之相反,对那些经过较少使用的链路的较短信道而言,这些信道在寻找时隙时具有更多自由度,由此可以将其留到时隙分配末尾。
根据本发明的一个方面,所述至少一个时隙分配单元适于基于所述计算所得链路权重因数、所述链路路径长度以及带宽、等待时间、抖动和/或所述连接路径所需要的时隙数量来计算所述连接路径权重因数。因此,在计算连接路径权重因数的时候也可以考虑连接路径长度以及所需要的时隙量。
根据本发明的另一个方面,所述至少一个时隙分配单元适于基于所述计算得到的链路权重因数、所述连接链路长度以及带宽、等待时间、抖动和/或分别由第一、第二和第三权重因数加权的所述连接路径所需要的时隙数量,来计算连接路径权重因数。通过调整相应的权重因数,可以改变连接路径的长度以及所需要的带宽、等待时间、抖动和/或时隙以及链路权重因数的贡献。
根据本发明的一个方面,至少一个时隙分配单元设置在所述多个网络接口中的至少一个中,并且包括第一时隙表,其中该时隙表的条目规定分配了时隙的连接。此外,所述路由器还可以包括第二时隙表,该时隙表的条目表示时隙保留而不指定连接。由于与时隙相关联的信息不必保存在这些时隙表中,因此,路由器中的时隙表可以相对较小。虽然每一个时隙的信息有可能较小,但是时隙表很可能是在较大的情况下结束的,这是因为一个路由器存在多个端口,(时隙表的大小可以是#端口*#时隙*信息/时隙)。
根据本发明的一个方面,至少一个时隙分配单元设置在所述多个网络接口中的至少一个中,并包括第一时隙表,该时隙表的条目规定分配了时隙的连接,所述路由器则包括第二时隙表,该时隙表的条目包含用于在所述网络中路由数据的信息。相应的,由于路由信息是保存在路由器中的,因此,可以省略分组报头,由此可以得到更高的吞吐量。
按照本发明的又一方面,所述时隙分配单元适于根据所述连接所需要的时隙,沿所述连接路径在所述第一和第二时隙表中寻找第一空闲时隙。
按照本发明的再一方面,所述时隙分配单元适于通过如下操作为所述连接在所述第一和第二时隙表中寻找所需要的空闲时隙:在所述第一和第二时隙表之一中寻找至少第一空闲时隙;计算在时隙表中距离相等的位置;以及在所计算的位置周围局部搜索,以找到最近的空闲时隙。
按照本发明的又一方面,所述时隙分配单元适于通过如下操作为所述连接在所述第一和第二时隙表中寻找所需要的空闲时隙:遍历所述第一和第二时隙表;过滤被保留的时隙;为所述连接路径中的每一个网络链路将搜索过的时隙移动一个位置。
本发明还涉及一种在集成电路中分配时隙的方法,其中该电路具有多个处理模块,设置成耦合所述处理模块的网络,以及,每一个耦合在所述处理模块之一之间的多个网络接口。所述网络包括多个路由器,这些路由器经由网络链路耦合到相邻的路由器。处理模块之间的通信经由使用穿过该网络的连接路径的连接执行,其中对于所需数量的时隙,每一个所述连接都使用至少一个网络链路。所述连接路径中至少一个网络链路的链路权重因数是作为所述网络链路的连接要求的函数计算的。至少一个连接路径的连接路径权重因数则是作为连接路径中至少一个网络链路的计算所得链路权重因数的函数计算的。根据计算得到的连接路径权重因数将时隙分配给所述链路。优选地,该至少一个连接路径的连接路径权重因数是作为连接路径中至少一个网络链路的计算所得链路权重因数以及所述连接路径的连接要求的函数计算的。
本发明还涉及一种数据处理系统,该系统包括多个处理模块和设置成耦合所述处理模块的网络。所述集成电路还包括多个网络接口,其中每一个网络接口都耦合在所述处理模块之一与所述网络之间。所述网络包括多个路由器,这些路由器经由网络链路耦合到相邻的路由器。所述处理模块经由使用穿过该网络的连接路径的连接进行相互通信,其中对于所需数量的时隙,每一个所述连接路径都使用至少一个网络链路。提供至少一个时隙分配单元,用于:为所述连接路径中的至少一个网络链路计算链路权重因数,该链路权重因数是作为所述至少一个网络链路的连接要求的函数来计算的;为至少一个连接路径计算连接路径权重因数,该连接路径权重因数是作为所述连接路径中的至少一个网络链路的计算所得链路权重因数的函数来计算的;以及根据计算所得连接路径权重因数将时隙分配给所述网络链路。优选地,该连接路径权重因数是作为所述连接路径中的至少一个网络链路的计算所得链路权重因数以及所述连接路径的连接要求的函数来计算的。
相应的,时隙分配也可以在多芯片网络或是具有若干个独立集成电路的系统或网络上执行。
本发明基于这样一种思想,那就是通过将链路权重作为带宽、等待时间、抖动和/或使用该链路的每一个信道(也就是每一个连接路径)所请求的时隙数量的函数来计算,以及通过将信道权重计算为由该信道使用的链路权重之和,来执行时隙分配。
具体实施方式
下列实施例涉及的是芯片上系统,也就是处于同一芯片之上的多个模块通过某种互连相互通信。这种互连方式是作为芯片上网络NOC来实现的。该芯片上网络可以包括网络内部的线路、总线、时分复用、开关和/或路由器。在所述网络的传输层,模块之间的通信是在连接上执行的。连接则被视为是第一模块与至少一个第二模块之间的信道集合,并且其中每一个信道都具有一组连接属性。对第一模块与单个第二模块之间的连接来说,该连接可以包括两个信道,即,从第一模块到第二模块的一条信道,即请求信道,以及从第二模块到第一模块的第二信道,即响应信道。请求信道是为从第一到第二模块的数据和消息保留的,响应信道则是为从第二到第一模块的数据和消息保留的。如果不需要响应,那么该连接可以只包括一条信道。然而,如果连接包括一个第一模块以及N个第二模块,那么可以提供2*N条信道。因此,穿过网络的连接或是连接的路径,也就是连接路径,包含至少一个信道。换句话说,如果只使用一条信道,那么该信道对应于该连接的连接路径。如果像上文所描述的那样使用了两条信道,那么举例来说,其中一条信道将会提供主设备到从设备的连接路径,而第二信道则会提供从设备到主设备的连接路径。相应的,对一个典型连接而言,连接路径通常包含了两条信道。连接属性可以包括排序(按照顺序进行数据传送)、流控制(为连接保留远端缓存器,只有在确保具有可用于所产生的数据的空间的时候才允许数据产生器发送数据)、吞吐量(保证吞吐量的下限)、等待时间(保证等待时间的上限)、损失度(数据丢弃)、传输终止、事务完成、数据正确性、优先级或数据传送。
图1显示的是根据本发明的芯片上网络。该系统包括若干个所谓的知识产权块IP(计算元件、存储器或是可以在内部包含互连模块的子系统),这些IP每一个都经由网络接口NI连接到网络N。网络N包括多个路由器R,这些路由器经由相应链路连接到相邻路由器R。
网络接口NI用作IP块与网络N之间的接口。通过提供网络接口NI,可以对相应IP块与网络N之间的通信进行管理,以使IP块能执行其专门操作,而不必处理其与网络N或其他IP块的通信。这些IP块既可以充当发起请求的主设备,也可以充当接收来自主设备的请求并对该请求进行相应处理的从设备。
图2显示的是根据图1的芯片上网络中的连接以及基本时隙分配的框图。特别地,在这里显示的是主设备M与从设备S之间的连接。这个连接是由关联于主设备M的网络接口NI、两个路由器以及关联于从设备S的网络接口NI实现的。与主设备M相关联的网络接口NI包括时隙分配单元SA。或者,与从设备S相关联的网络接口NI也可以包括时隙分配单元SA。第一链路L1存在于与主设备M相关联的网络接口NI以及第一路由器R之间,第二链路L2存在于两个路由器R之间,而第三链路L3则存在路由器以及与从设备S相关联的网络接口NI之间。此外,在这里还显示了用于相应网络组件的输出端口的三个时隙表ST1~ST3。优选的,这些时隙表在网络接口和路由器之类的网络部件的输出端,即数据生成端实施。对于每一个被请求的时隙,在沿连接路径的链路的每个时隙表中保留一个时隙。所有这些时隙都必须是空闲的,也就是说,这些时隙并未被其他信道所预定。由于数据在从时隙s=1开始的每一个时隙从一个网络组件前进到另一个网络组件,因此,必须在时隙s=2保留沿着该连接的下一个时隙,随后在时隙s=3保留接下来的时隙。
时隙分配单元SA所执行的时隙分配确定的输入,是网络拓扑,类似网络组件及其互连、以及时隙表大小和连接集合。对每一个连接,它的路径以及它的带宽、等待时间、抖动和/或时隙要求都是给定的。一个连接包括至少两条信道或连接路径(主设备到从设备的请求信道以及从设备到主设备的响应信道)。这些信道中的每一条都是在单个路径上设置的,并且可以包括具有不同带宽、等待时间、抖动和/或时隙要求的不同链路。为了提供与时间相关的保证,有必要为这些链路保留时隙。可以借助TDMA来为不同的连接保留不同的时隙。然后,在连续时隙中经由沿着一连接的连续链路传送用于该连接的数据。
图3更详细地显示了图2中表格的实施。在这里显示了两个网络接口NI1、NI2,两个路由器R1、R2,以及分别介于网络接口NI1与路由器R1之间、路由器R1与路由器R2之间及路由器R1与网络接口NI2之间的三条链路L1~L3。IP块则未被显示。在这里显示了用于所标记的每一条链路L1~L3的时隙表ST1~ST3。这些链路都是双向的,因此,对每一个链路来说,两个方向中的每一个方向都具有一个时隙表;但是在这里只显示了用于一个方向的时隙表ST1~ST3。此外,在这里还描述了三个连接c1~c3。除了上述三个时隙表ST1~ST3之外,在这里还显示了其他时隙表ST4~ST6。现在,在这里显示了与三个连接c1~c3相关联的所有时隙表ST1~ST6。第一连接c1从网络接口NI1经由路由器R1和R2延伸到网络接口NI2。第二连接c2从网络接口NI1延伸到路由器R1,然后则通过使用时隙表ST4延伸到另一个网络组件(未显示)。第三连接c3可以起源于一个未显示的网络组件,并且经过路由器R1到达路由器R2,并且通过使用时隙表ST6进一步到达另一个未显示的网络组件。连接c1在其使用的三个链路L1~L3(NI1到R1,R1到R2以及R2到NI2)之中的每一个链路中都保留了一个时隙。这些链路中的时隙必须是连续的(分别是时隙2、时隙3和时隙4)。从路由器的角度来看,在一个时隙中,路由器会在为其保留链路L1~L3的连接c1~c3上接收来自输入链路的数据。数据存储在路由器中。与此同时,路由器将其在先前时隙接收的数据发送到输出链路。根据该模型,由于数据在路由器中至多存储一个时隙,因此,一个连接的时隙必须是被连续保留的。
时隙分配问题的一种可能概括原则或备选,是允许数据在路由器中缓存一个以上时隙的持续时间。这样一来,时隙分配将会更为灵活,而这将会产生更好的链路使用,其代价则是缓存更多,有可能等待时间更长。
时隙必须保留成在链路上不存在冲突。也就是说,不会出现保留相同链路的相同时隙的两个连接。这样一来,C1为NI1与R1之间的链路保留了时隙2。由此,C2无法将时隙2用于相同链路。
寻找最优(也就是使用最少数量的时隙)的有效时隙分配(也就是具有连续时隙且没有冲突)问题是NP完全。
图4显示的是根据第一实施例的简单时隙表实施,为第一、第二、第三链路L1~L3中的每一个链路实施一个规定了为哪个连接保留哪个时隙的表格。特别地,在这里只显示了时隙表ST1~ST3,对于三条链路L1~L3,这些时隙表是三个连接c1~c3所需的。由于路由器/网络接口必须了解何时保留或者不保留链路,以便产生用于该链路的数据,因此,用于存储该表格的优选位置是为该链路产生数据的路由器/网络接口,即输出端口。该表格也可以是时隙分配单元SA的一部分。图5显示了根据第二实施例的更有效的时隙分配编码。该图中同样仅显示三个连接c1~c3所需要的、用于三条链路L1~L3的时隙表ST1~ST3。时隙属于哪一个连接的信息保存在网络接口NI中,尤其保存在时隙分配单元SA中,而路由器中的时隙表ST1~ST3则仅仅标记是否为这些链路保留了时隙。路由器无需了解与时隙相关联的连接,这是因为它们仅仅是基于分组报头(包含目的地地址或是通往目的地的路径)将数据从一个网络元件移动到另一个网络元件,并且最终将数据移动到正确的输出。
在图6中显示的是根据第三实施例的图4和图5中的编码的一种可能变化。在这里,路由信息存储于路由器自身(而不是分组报头中)。在输出端口时隙表ST1~ST3中,时隙指示从哪个输入消耗了数据。这样一来,分组报头是可以省略的,由此将会带来更高的吞吐量,其代价则是路由器中的时隙表更大。
现在对可以在时隙分配单元SA中实施的实际时隙分配功能进行描述。其结果是产生了一种与时隙要求相对应的时隙分配。对于连接路径中的每一个链路,权重是作为带宽、等待时间、抖动优先级和/或使用该链路的连接路径中的每个信道chi所请求的时隙数量的函数计算的:
作为选择,对连接路径的所述至少一个信道中的每一个链路而言,权重是作为每一个连接路径、也就是使用该链路的每一个信道所请求或需要的时隙数量总和来计算的:
然后,对于连接路径中的每个信道,权重是作为信道路径(作为连接路径的一部分)中的链路的权重以及可能信道其他属性(例如带宽、等待时间、优先级)的函数(例如总和)来计算的:
或者,作为选择,对每一个信道(也就是每一个连接路径)来说,权重是作为信道路径中的链路的权重总和来计算的:
对于上述简单函数替代形式,
该算法可以借助以下伪码来实施:
-计算链路权重
FOR all channels C DO
FOR all link L∈path(C)DO
weight[L]+=slots[C]
END FOR
END FOR
-计算信道权重
FOR all channels C DO
FOR all link L∈path(C)DO
weight[C]+=weight[L]
END FOR
END FOR
-执行时隙分配
BEGIN
FOR all channels C sorted decreasingly by weight(C)DO
Find slots[C]free slots and allocated them to C
END FOR
时隙按照信道的计算所得权重的递减顺序分配给信道。对于被请求的每个时隙,在沿着该信道路径的链路的每一个时隙表中都保留了一个时隙。所有这些时隙必须是空闲的,也就是说,这些时隙先前并未被其他信道保留。这些时隙可以用一种反复试验的方式分配:从某一个时隙开始,检查多个时隙,直至在沿着该路径的所有链路中找到空闲时隙。
时隙也可以尝试使用不同的策略来分配。例子有连续时隙或是均匀分布的时隙。需要多种策略的原因在于可以借助不同的策略来优化不同的属性。例如,连续的时隙可以减小报头开销,而均匀分布的时隙则可以减小等待时间。
所提出技术具有很低的复杂性O(CxLxS),其中C是信道数量,L是链路数量,S是时隙表大小。借助这种算法所获取的时隙分配可以与最优时隙分配(以高出很多的复杂性O(Sc))获得)相媲美,并且比贪婪算法好一倍(用于信道分配的顺序是随机的)。
现在将对一种备选示例算法进行描述。同样,对每一个链路来说,权重是作为为使用该链路的每个信道所请求的时隙数量总和计算的:
然后,对每一个信道来说,权重是作为信道路径链路权重的总和计算的:
其中a1、a2、a3是常数(这只是权重公式的一个实例,其他公式也是可行的)。
这个例示算法可以借助下列伪码来实施:
-计算链路权重
FOR all channels C DO
FOR all link L∈path(C)DO
weight[L]+=slots[C]
END FOR
END FOR
-计算信道权重
FOR all channels C DO
FOR all link L∈path(C)DO
weight[C]+=weight[L]
END FOR
weight[C]=a1xweight[C]+a2xlength[C]+a3xslots[C]
END FOR
-执行时隙分配
BEGIN
FOR all channels C sorted decreasingly by weight(C)DO
Find slots[C]free slots and allocate them to C
END FOR
根据第二实施例的链路权重计算与第一代码中的描述是相同的,但是信道权重则是以不同方式计算的。这种信道权重公式所基于的思想是:从需要更多时隙的信道(因为经过频繁使用的链路、也就是经过热点(具有高负载并且由此要保留大量时隙的链路))以及具有长路径的信道开始执行调度,通过赋予更高的权重,使得它们首先被调度。原因在于这些连接具有更多的约束条件,因此,如果将其留到最后,那么发现空闲时隙的机会将会减小。与之相反,经过较少使用的链路的较短信道在寻找时隙时有更多自由度,由此可以将其留到时隙分配末尾。
时隙可以按照计算所得信道权重的递减顺序分配给信道(也就是每一个连接路径)。如图2所示,对于被请求的每个时隙,在沿着信道路径的链路的每一个时隙表中都保留了一个时隙。所有这些时隙都必须是空闲的,也就是说,这些时隙先前未被其他信道(也就是每一个连接路径)所保留。这些时隙是以一种反复试验的方式分配的:从一特定时隙开始对时隙进行检查,直至在沿着该路径的所有链路中找到所需数量的时隙。在以下部分给出了一个示例的算法线索(trace)。
图7显示的是一种用于寻找空闲时隙的方法。在这里举例描述了一个大小为16的时隙表。时隙寻找处理可以采用不同方式执行。其中一个实例是以贪婪(greedy)方式来寻找时隙,也就是前N个空闲时隙。另一个实例是寻找距离相等的时隙,以便将缓存空间减至最小。该处理可以采用如下方式执行:寻找第一空闲时隙ffs,然后计算时隙表中距离相等的位置,之后则在计算得到的位置周围执行局部搜索,以便找到最近的空闲位置。在图7中,已被保留的时隙是用十字交叉标记的。第一个空闲时隙ffs是时隙2。由于存在16个时隙,因此对其他两个时隙来说,理想位置分别是时隙7和13(以便在其间得到相等距离)。由于已经保留了时隙7,因此在时隙7的相邻位置中搜索空闲时隙。在这里发现的最近空闲时隙是时隙5。由于时隙13是空闲的,该时隙也可以保留。因此,在这里保留的三个时隙是2、5和13,并且这些时隙是用黑球标记的。
应该指出的是,用于一连接的空闲时隙是那些沿完整路径空闲的时隙,也就是说,连续的时隙在沿着该路径的连续链路中应当是空闲的。因此,必须检查沿一连接路径的所有时隙表,以便找出用于一特定连接的空闲时隙。一种用于为连接搜索空闲时隙的简单方法是从该连接的第一条链路开始的,并且尝试沿着该路径的所有后续时隙表,跳过那些被保留的时隙。为了将搜索时间减至最小,搜索也可以从负荷最重的链路开始。
图8显示的是在图5所显示的仅仅存储时隙保留(使用1比特)的情况下,另一种加速空闲时隙搜索的技术。该技术是以并行检查多个时隙为基础的。这种技术既可以在硬件(用于检查任何固定数量比特的单元,也就是时隙分配单元SA)中执行,也可以在软件(CPU数据字可以同时存储例如16或32个时隙保留)中实施。在图8的左侧举例显示了用于链路L1~L4的时隙表1st。其右侧显示的是用于确定沿路径的空闲时隙的空闲时隙字fsw。空闲时隙是通过遍历时隙表、过滤保留时隙以及在每一个链路上(与所需要的时隙对准相对应)将已搜索时隙移动(>>(1))一个位置而被发现的。首先,路径中的第一链路L1被选择,该链路包括保留的时隙0、1、6、9、11、12和14。在空闲时隙字中使用例如“X”来将这些时隙标记成保留。此后,空闲时隙字fsw向右移动一个位置,以便反映时隙对准,此外通过对其执行OR操作,即执行OR运算来添加第二链路的保留时隙(时隙3、6、10和12)。为第三和第四链路L3、L4重复这些步骤,由此将在沿该路径的所有链路中产生空闲时隙的矢量。为了将其与第一链路L1对准,将其向左移动三个位置。其结果则是第一链路L1的时隙4、8、10和13在沿着给定路径的所有链路L1~L4中都是空闲的。特别地,对链路L1来说,时隙4是空闲的,而对链路L2、L3和L4来说,时隙5、6和7分别是空闲的。时隙8在链路L1中是空闲的,而对链路L2、L3和L4来说,时隙9、10和11分别是空闲的。此外,时隙10在链路L1中是空闲的,而对链路L2、L3和L4来说,时隙11、12和13分别是空闲的。时隙13在链路L1中是空闲的,而对链路L2、L3和L4来说,时隙14、15和1分别是空闲的。
图9显示的是包含4个路由器R1~R4以及7个网络接口NI(NI1~NI7)的芯片上网络实例。在这里并未显示与网络接口相连的IP块。作为实例,选择了12个连接C1~C12。这些连接用于在与网络接口NI相连的IP模块(未显示)之间传输数据,由此,这些连接始终设置在两个网络接口NI之间。为了简单起见,我们假设所有连接都是单向的(包括一个信道),但在实践中同样可以存在双向连接(两个信道)。例如,连接C1始于NI1,并且经过R1和R4到达NI6。类似,连接C2经过NI1、R1、R2、R3和NI4。连接C3经过NI1、R1、R2和NI2。连接C4经过NI2、R2、R3和NI7。连接C5经过NI2、R2以及NI3。连接C6经过NI3、R2、R1以及NI1。连接C7经过NI3、R2、R3以及NI5、连接C8经过NI4、R3以及NI5。连接C9经过NI5、R3、R4、R1以及NI1。连接C10经过NI6、R4、R3、R2以及NI2。连接C11经过NI7、R4、R3、R2以及NI3。连接C12经过NI7、R4、R1以及NI1。必须为每一个连接保留多个时隙。在图9的右侧列出了这些数量,也就是说,连接C1~C12分别需要1、1、5、2、4、3、2、6、1、2、1和2个时隙。
图10显示的是根据图9的芯片上网络。该算法以计算链路权重开始。这通过为每一条链路计算使用该链路的所有连接所请求的时隙数量之和来进行。此外,单独为每一个方向执行该操作。这些链路由圆圈所环绕,其链路权重结果则是紧临该圆圈显示的。例如,对从R2到R3的链路来说,将连接C2、C4和C7请求的时隙相加。由此得到的结果是链路权重1(C2)+2(C4)+2(C7)=5。NI1与R1之间的链路需要7个时隙,R1与NI1之间的链路则需要6个时隙,依此类推。
图11显示的是根据图10的芯片上网络。该算法计算的是连接权重。在连接权重公式中,a1=1、a2=0并且a3=0(也就是对链路权重求和)。作为选择,可以选择不同的值。在图11的右侧显示了连接权重的结果。例如,连接C1的权重是链路NI1到R1、R1到R4以及R4到NI10的权重总和,其结果是7+1+1=9。然后,关于计算得到的权重因数,以降序对这些连接进行分类,并且将会根据该顺序来进行调度。
在图12~23中,显示了所有连接C1~C12的时隙分配。假设首先分配的是所需的空闲时隙。时隙表的大小可以是例如9个时隙。时隙表中描述的数量与分配了这些时隙的相应连接C1~C12是对应的。
图12、13、14、15、16、17、18、19、20、21、22、23分别显示的是连接C3、C2、C7、C4、C11、C10、C6、C8、C9、C12、C5和C1的分配。
根据图12,对需要5个时隙的连接C3来说,所有时隙都是空闲的,因此,为其分配的是链路NI1到R1的时隙1~5,链路R1到R2的时隙2~6以及链路R2到NI2的时隙3~8。根据图13,对需要一个时隙的连接C2来说,在第一链路中已经保留了前5个时隙,因此,在沿着该路径的相应时隙表中其保留时隙6、7、8和9。根据图14,需要2个时隙的连接C7在前两个时隙中并未出现冲突,由此分配这些时隙。根据图15,由于在第二链路(R2到R3)中为C7保留了前两个时隙,因此,需要2个时隙的连接C4只能保留时隙3和4。根据图16,C11同样也是没有冲突,并且在网络接口NI7和路由器R4的链路的时隙表中保留第一个时隙,以及在其他的链路的时隙表中保留连续的时隙。
然而,对根据图17需要2个时隙的连接C10来说,前4个时隙与链路R2到NI2中为C3保留的时隙相冲突,因此,最先的空闲时隙是5和6。如图18所示,连接C6在网络接口NI3以及路由器R2的链路中分配了三个时隙,即时隙3~5;在路由器R2和路由器R1的链路的时隙表中分配了时隙4~6;此外还在路由器R1和网络接口NI1的链路的时隙表中分配了时隙5~7。根据图19,因此,连接C8在网络接口NI4和路由器R3的链路中分配了6个时隙,即时隙1、4~8;而在路由器R3和网络接口NI5的链路的时隙表中则分配了时隙2、5~9,因为在路由器R3和网络接口NI5的链路的时隙表中,时隙3~4已被分配或是预留给连接7。
如图20所示,连接C9在网络接口NI5和路由器R3的链路中分配了一个时隙,即时隙1;在路由器R3和路由器R4的链路的时隙表中分配了时隙2;在路由器R4和路由器R5的链路的时隙表中分配了时隙3;并且在路由器R1和网络接口NI1的链路的时隙表中分配了时隙4。根据图21,连接C12在网络接口NI7和路由器R4的链路中分配了两个时隙,即时隙6~7;在路由器R4和路由器R1的链路中分配了时隙7~8;而在路由器R1和网络接口NI1的链路的时隙表中则分配了时隙8~9,因为在路由器R1和网络接口NI1的链路的时隙表中,时隙4以及时隙5~7已经分别被分配给了连接C9和C6。
如图22所示,连接C5在网络接口NI2和路由器R2的链路的时隙表中分配了4个时隙,即时隙1~2和5~6;并且在路由器R2和网络接口NI3的链路的时隙表中分配了时隙2~3和6~7,因为在网络接口NI2和路由器R2的链路的时隙表中,时隙3-4已被分配给连接C4。
最后,在图23中,连接C1在网络接口NI1和路由器R1的链路的时隙表中分配了一个时隙,即时隙7;在路由器R1和路由器R4的链路的时隙表中分配了时隙8;在路由器R4和网络接口NI6的链路的时隙表中分配了时隙9。相应的,在图23中显示的是时隙分配的最终结果。
虽然在上文中将时隙分配单元描述成是安装在网络接口中的,但是所述时隙分配单元也可以安装在网络内部的路由器中。
上述时隙分配单元不但适用于单个芯片上的网络,而且还适用于包含了若干个单独的集成电路的任何数据处理设备或多芯片网络。
应该指出的是,上述实施例是说明性而不是限制性的,并且本领域技术人员能够在不脱离附加权利要求范围的情况下设计出很多替换实施例。在权利要求中,放置在圆括号之间的任何参考符号不应解释成是对权利要求进行限制。单词“包括”并不排除存在权利要求所列举的部件或步骤之外的其他部件或步骤。部件之前的单词“一”或“一个”并不排除存在多个此类部件。在列举了若干个装置的设备权利要求中,其中若干个装置可以借助同一个硬件项来实现。虽然某些措施是在互不相同的从属权利要求中叙述的,但这并不代表不能有效使用这些措施的组合。