发明内容
有鉴于上述情况,本公开提供了一种环形互联总线的避免死锁的方法、系统和跨环装置。
一方面,根据本公开的实施例,提供了一种环形互联总线的避免死锁的方法,包括:响应于接收到要从第一环形总线的至少一个源节点到第二环形总线的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,跨环模块获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,其中所述跨环专用令牌由所述跨环模块管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输,其中所述跨环模块位于所述第一环形总线与所述第二环形总线之间;根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件;以及如果满足跨环传输的条件,使得所述第一跨环数据包进行跨环传输,如果不满足跨环传输的条件,使得所述第一跨环数据包进行环内传输。
此外,根据本公开的实施例的方法,其中,所述跨环传输的条件包括跨环专用令牌的数量大于或等于1个,或者所述跨环传输的条件包括通用令牌的数量大于或等于2个,其中,当所述通用令牌大于或等于2个时,优先使用通用令牌进行所述多个跨环数据包的跨环传输。
此外,根据本公开的实施例的方法,其中,所述多个跨环数据包来自同一个源节点,其中,所述如果不满足所述跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
此外,根据本公开的实施例的方法,还包括:响应于所述跨环模块再次接收到被标记的第一跨环数据包的跨环传输请求,由所述跨环模块获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
此外,根据本公开的实施例的方法,其中,所述方法还包括:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在所述跨环模块中为所述至少一个源节点中的每一个源节点设置一个重放标志位;以及其中,标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点包括:将所述第一跨环数据包的首位标志位置位并将所述第一跨环数据包所来自的源节点的重放标志位置位。
此外,根据本公开的实施例的方法,其中消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记包括:将置位的首位标志位清零并将置位的重放标志位清零。
此外,根据本公开的实施例的方法,其中,所述多个跨环数据包来自多个源节点,其中,所述如果不满足所述跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述多个源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
此外,根据本公开的实施例的方法,还包括:响应于所述跨环模块再次接收到被标记的第一跨环数据包的跨环传输请求,由所述跨环模块获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
此外,根据本公开的实施例的方法,其中所述方法还包括:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在所述跨环模块中为所述多个源节点设置一个共有的重放标志位;以及其中,标记所述第一跨环数据包和所述多个源节点包括:将所述第一跨环数据包的首位标志位置位并将所述多个源节点的共有的重放标志位置位。
此外,根据本公开的实施例的方法,其中消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记包括:将置位的首位标志位清零并将置位的共有的重放标志位清零。
此外,根据本公开的实施例的方法,其中,如果使用跨环专用令牌进行所述第一跨环数据包的跨环传输,则在所述第一跨环数据包到达目的节点后,继续发送一个跨环专用令牌包把所述跨环专用令牌归还所述跨环模块。
此外,根据本公开的实施例的方法,其中,新数据包进入第一环形总线或第二环形总线的条件包括通用令牌的总数大于或等于2。
另一方面,根据本公开的实施例,提供了一种环形互联总线的避免死锁的系统,包括:多个环形总线,包括第一环形总线和第二环形总线;以及跨环模块,位于所述第一环形总线与所述第二环形总线之间,被配置为:响应于接收到要从第一环形总线的至少一个源节点到第二环形总线的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,所述跨环模块获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,其中所述跨环专用令牌由所述跨环模块管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输;根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件;以及如果满足跨环传输的条件,使得所述第一跨环数据包进行跨环传输,如果不满足跨环传输的条件,使得所述第一跨环数据包进行环内传输。
又一方面,根据本公开的实施例,提供了一种跨环装置,包括:处理器;以及存储器,存储了计算机程序指令,其由所述处理器执行时进行如下步骤:响应于接收到要从第一环形总线的至少一个源节点到第二环形总线的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,所述跨环装置获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,其中所述跨环专用令牌由所述跨环装置管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输,其中所述跨环装置位于所述第一环形总线与所述第二环形总线之间;根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件;如果满足跨环传输的条件,使得所述第一跨环数据包进行跨环传输,如果不满足跨环传输的条件,使得所述第一跨环数据包进行环内传输。
根据本公开的实施例的方法、系统和跨环装置,提出了一种避免死锁的机制,而非死锁发生后的处理机制。该机制代价小,容易实现,并且解决了单环形总线的传输效率低和扩展性差的问题。
要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。
具体实施方式
下面将结合本公开的实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本公开的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在某些协议的总线系统中,多个数据包的传输会有顺序的要求,比如同一个源节点且同一个目的节点的数据包之间,需要保证先从源节点发出的,先被目的节点接收。
总线系统在多个节点间进行数据包的传输时,有可能发生死锁。例如,节点N1内部只能处理有限的数据包,当接收了足够多请求后,需要释放资源才能再接收新数据包,而想要释放资源又依赖发出新数据包给节点N2,如果此时节点N2也像节点N1一样,等待节点N1处理节点N2的数据包,节点N1与节点N2由于长时间不能接收新数据包会导致总线上保留很多两点之间的数据包,造成无法进行数据包的传输的情况,最终总线和各个节点死锁。关于进行数据包的传输所用的资源,一般可以用令牌(token)表示。源节点想要发起数据包的传输时,需要查看是否有发请求到总线的令牌,有令牌才可以发起请求到总线上。
缓存(cache)一致性互联总线对数据包的传输顺序和接收条件的要求,使得死锁的处理复杂度较高。
对于单独的环形结构,如果采用如下机制可以避免死锁发生:1)目的节点是无条件接收数据包的或者如果数据包不能被接收的时候可以返回到源节点。2)源节点发起请求需要满足有令牌的数量>=2。如果此条件是令牌的数量>=1,那么会有可能死锁,因为环形总线上进行数据包的传输也需要令牌。设想如下的情况:环形总线上存在节点A、B、C,节点A要发送数据包给节点B,节点B要发送数据包给节点C,节点C要发送数据包给节点A,此时如果环形总线上只有1个令牌了,那么数据包的传输还是可以进行的,但是如果此时节点A要新增一个数据包给节点B,占用了最后一个令牌,那么总线就无法再进行数据包的传输了。只要满足上述条件的环形总线,是可以保证没有死锁发生的。
图1A和图1B是示出了具有两个总线的环形总线的框图。
当为了连接更多资源,基于环形总线设置更多通道,以图1A或图1B中的总线0(如图中粗线所示)和总线1(如图中细线所示)为例,方框代表节点。当总线0的请求都以总线1的节点为目的节点,且总线1的数据包也都以总线0的节点为目的节点,总线0和总线1又都只有1个令牌的时候,造成死锁。该死锁可以通过在总线上设置检测机制和缓冲器(Buffer)来解决。当检测到死锁发生,就把总线上的数据包都吸收到缓冲器中,以释放总线的令牌,来解决死锁。
对于上述无死锁的环形总线,虽然其结构简单,但是传输效率低,扩展性不好。并且要求目的节点可以无条件接收数据包,这个也是很多节点设计无法保证的;如果不能保证这一点,又需要设置不被接受后返回源节点的处理,设置设计复杂度。而通过在总线上设置检测机制和缓冲器的方法只能检测并处理死锁,并不能避免死锁的发生,并且硬件消耗大。
参考图2,图2是示出了根据本公开的实施例的环形互联总线结构的框图。
图2中的环形互联总线结构包括环形总线0和环形总线1、多个节点(例如,节点21a和节点21b)以及在环形总线0和环形总线1之间的跨环模块 (Cross Unit)20。其中以环形总线0(或环形总线1)中的节点为源节点并且以环形总线0(或环形总线1)中的节点为目的节点传输数据包可以被称为数据包的环内传输,如图2中的虚线箭头所示;以环形总线0(或环形总线1) 中的节点为源节点并且以环形总线1(或环形总线0)中的节点为目的节点传输数据包可以被称为数据包的跨环传输,如图2中的实线箭头所示。本文中要进行跨环传输的数据包称为跨环数据包。
参考图3A,图3A是示出了根据本公开的实施例的环形互联总线的避免死锁的方法的流程图。
在步骤S31处,响应于接收到要从第一环形总线的至少一个源节点到第二环形总线的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,跨环模块获得用于所述跨环方向的跨环专用令牌和通用令牌的信息。其中所述跨环专用令牌由所述跨环模块管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输,其中所述跨环模块位于所述第一环形总线与所述第二环形总线之间。
其中,跨环模块被配置为使用跨环专用令牌和通用令牌进行跨环数据包的跨环传输,所述通用令牌用于数据包在跨环方向上的跨环传输和环内传输。跨环模块的任意一个跨环传输方向都可以设置一个或多个跨环专用令牌,保证跨环数据包的跨环请求可以被成功处理。跨环模块可以记录跨环专用令牌的使用情况,而通过跨环模块的非跨环传输请求只要有通用令牌就可以传输。
在步骤S32处,根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件。
如果满足跨环传输的条件,则在步骤S33处,使得所述第一跨环数据包进行跨环传输;如果不满足跨环传输的条件,则在步骤S34处,使得所述第一跨环数据包进行环内传输。
该方法通过在跨环模块中设置跨环专用令牌机制,可以使得在没有可用于跨环传输的通用令牌的情况下,也可以通过跨环专用令牌进行跨环数据包的跨环传输,从而避免在没有可用于跨环传输的通用令牌进行跨环输出时,总线出现死锁的情况。同时通过设置轮转机制,使得当需要跨环传输的请求到达跨环模块,而发现无法进行跨环传输时,不必等待,按照环形总线的方向继续进行环内传输,保证环形总线的其他请求可以被处理,提高环形总线的处理效率和传输效率。根据图3A所示的方法,所述跨环传输的条件可以包括跨环专用令牌的数量大于或等于1个或者通用令牌的数量大于或等于2 个,其中,当所述通用令牌大于或等于2个时,优先使用通用令牌进行所述多个跨环数据包的跨环传输。
如此,可以尽可能保留跨环专用令牌的数量以用于跨环传输,从而进一步避免由于无跨环专用令牌进行跨环传输而带来的死锁现象。
根据图3A所示的方法,其中,如果使用跨环专用令牌进行所述第一跨环数据包的跨环传输,在所述第一跨环数据包到达目的节点后,继续发送一个跨环专用令牌包把所述跨环专用令牌归还所述跨环模块。
如此,可以将跨环专用令牌回收以用于接下来的跨环传输,以避免之后的跨环传输出现死锁现象。
根据图3A所示的方法,其中,新数据包进入第一环形总线或第二环形总线的条件可以包括通用令牌的总数大于或等于2。
如此,保证新数据包进入环形总线后至少有一个通用令牌可以用于环内传输,而进一步避免发生死锁。
根据图3A所示的方法,具体地,在非跨环传输时,除跨环模块外的其他节点,只要有通用令牌即可进行数据包的环内传输。
如上所述,在跨环传输时,跨环数据包从第一环形总线(或第二环形总线)进入第二环形总线(或第一环形总线)的条件可以包括跨环方向对应的通用令牌的数量>=2。
当跨环模块的通用令牌的数量>2时,可以进行数据包的环内传输,也可以进行数据包的跨环传输。此时可以设置标志(Flag),当Flag=1时,表示至少有一个从第二环形总线/第一环形总线到第一环形总线/第二环形总线的请求,通用令牌的数量=1时可以进行环内传输;当Flag=0时,表示可能没有从第二环形总线/第一环形总线到第一环形总线/第二环形总线的请求,通用令牌的数量=1时不可以进行环内传输。Flag的初始值为0。
在跨环模块的通用令牌的数量=2时,可以进行第一环形总线/第二环形总线的环内传输,也可以进行跨环传输。此时如果进行了跨环请求的传输,则: Flag=1,可以进行第一环形总线/第二环形总线的环内传输,保证第一环形总线/第二环形总线的流转;标记该请求,如果使用了跨环专用令牌进行跨环传输,则完成该请求下的传输后需要生成空数据包回传到跨环模块释放对应的跨环专用令牌;跨环模块获得空包的跨环专用令牌后,删除该数据包,Flag=0。
如此,可以保证环内传输和跨环传输的正常进行,而不发生死锁。
参考图3B,图3B是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
在多个跨环数据包来自同一个源节点的情况下,步骤S34还可以包括步骤S341和步骤S342。其中,在步骤S341处,响应于不满足所述条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下,标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点。在步骤S342处,按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。还可以在跨环模块中标记是否发生了轮转情况,保证跨环数据包的顺序。
该实施例可以通过标记第一跨环数据包而在跨环模块20中设置保序机制,可以使得在之后的跨环传输请求中,跨环模块20能够区分该第一跨环数据包和来自同一源节点的其他跨环数据包并区分该第一跨环数据包所来自的源节点和其他源节点,从而保证后续可以按照预定顺序进行该第一跨环数据包和来自同一个源节点的其他跨环数据包的跨环传输,从而保证来自同一源节点的跨环数据包之间的顺序。当然,在此情况下,可以不一定保证来自不同源节点的跨环数据包相互之间的顺序,即,来自第一源节点的跨环数据包内部的顺序被保持,来自第二源节点的跨环数据包内部的顺序被保持,而第一源节点和第二源节点之间的顺序可以不一定被保持。
参考图3C,图3C是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
具体地,参考图3B所描述的方法还包括,在步骤S35a处,响应于跨环模块再次接收到被标记的第一跨环数据包的跨环传输请求,由跨环模块获得跨环专用令牌和通用令牌的信息。在步骤S36a处,判断当前是否满足跨环传输的条件。如果满足跨环传输的条件,则在步骤S37a处,进行所述被标记的第一跨环数据包的跨环传输,并在步骤S38a处,消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记。如果不满足跨环传输的条件,则返回步骤S342。
如此,在如图3B所示地由于不满足所述条件而进行所述第一跨环数据包的环内传输之后,在继续环内传输直到再次到达跨环模块时,跨环模块可以再次判断是否满足进行跨环传输的条件以试图完成跨环传输。如此,在保证来自同一个源节点的多个跨环数据包内的跨环数据包之间的顺序的同时能够不断尝试完成跨环传输,而不会一直进行环内传输。
因此,图3B-图3C描述了更具体的保序机制,跨环模块20通过该保序机制使得进行轮转时,跨环模块20仍然可以在之后按照预定顺序跨环传输来自同一个源节点的多个跨环数据包中的每一个,从而不打乱来自同一个源节点的多个跨环数据包中的每一个的顺序,保证跨环传输的准确性。
参考图3D,图3D是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
具体地,步骤S341中标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点还包括,在步骤S3411处,在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环模块20为所述至少一个源节点中的每一个源节点设置一个重放标志位,以及在步骤S3412处,响应于标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点,将所述第一跨环数据包的首位标志位置位并将所述第一跨环数据包所来自的源节点的重放标志位置位。步骤 S38a中消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记包括,在步骤S381a处,将置位的首位标志位清零并将置位的重放标志位清零。
如此,可以通过设置首位标志位和重放标志位更清楚地标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点,在第一跨环数据包继续环内传输直到再次到达跨环模块时,跨环模块可以更准确判断所述第一跨环数据包和所述第一跨环数据包所来自的源节点是否被标记。如此,再根据是否满足跨环传输的条件继续进行跨环传输或环内传输,以保证轮转机制和保序机制的实施。
根据本公开的实施例,具体地,目的节点在第二环形总线的数据包不会轮转超过一圈;目的节点在第一环形总线的数据包,设置一个首位标志位,表示该数据包是否为该数据包的源节点的第一个数据包,初始值为无(false),由跨环模块进行置位和消除;在跨环模块中,为第二环形总线上的所有源节点设置一个重放标志位,表示该源节点是否有请求被重放了;当跨环模块接收到要进入第一环形总线的请求,查看对应源节点的重放标志位;如果重放标志位=0,那么根据令牌的机制,跨环专用令牌的数量大于或等于1,或者通用令牌的数量大于或等于2则进入第一环形总线,否则,无法进行跨环传输,需要将对应源节点的重放标志位=1,将该数据包的首位标志位置位;如果重放标志位=1,那么只接受该源节点的标记了首位标志位的数据包进入第一环形总线,其他数据包继续在第二环形总线上轮转;标记了首位标志位的数据包跨环传输后,将重放标志位和首位标志位清零。
参考图3E,图3E是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
在多个跨环数据包来自多个源节点的情况下,步骤S34还可以包括步骤 S343和步骤S344。其中,在步骤S343处,响应于不满足所述条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下,标记所述第一跨环数据包和所述多个源节点。在步骤S344处,按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
该实施例可以通过标记第一跨环数据包而在跨环模块20中设置保序机制,可以使得在之后的跨环传输请求中,跨环模块20能够区分该第一跨环数据包和来自多个源节点的其他跨环数据包,从而保证后续仍然可以按照预定顺序进行该第一跨环数据包和来自多个源节点的其他跨环数据包的跨环传输,避免破坏跨环数据包的顺序,从而保证来自多个源节点的跨环数据包之间的顺序,即,来自第一源节点的跨环数据包内部的顺序被保持,来自第二源节点的跨环数据包内部的顺序被保持,而第一源节点和第二源节点之间的顺序也可被保持。
参考图3F,图3F是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
具体地,参考图3D所描述的方法还包括,在步骤S35b处,响应于所述跨环模块再次接收到被标记的第一跨环数据包的跨环传输请求,由所述跨环模块获得跨环专用令牌和通用令牌的信息。在步骤S36b处,判断当前是否满足跨环传输的条件。如果满足跨环传输的条件,则在步骤S37b处,进行所述被标记的第一跨环数据包的跨环传输,并在步骤S38b处,消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记。如果不满足跨环传输的条件,则返回步骤S344。
如此,在如图3E所示地由于不满足所述条件而进行所述第一跨环数据包的环内传输之后,在继续环内传输直到再次到达跨环模块时,跨环模块可以再次判断是否满足进行跨环传输的条件以试图完成跨环传输。如此,在保证来自多个源节点的多个跨环数据包内的跨环数据包之间的顺序地同时能够不断尝试完成跨环传输,而不会一直进行环内传输。
因此,图3E-图3F描述了更具体的保序机制,跨环模块20通过该保序机制使得进行轮转时,跨环模块20仍然可以在之后按照预定顺序跨环传输来自多个源节点的多个跨环数据包中的每一个,从而不打乱来自多个源节点的多个跨环数据包中的每一个的顺序,保证跨环传输的准确性。
参考图3G,图3G是示出了根据本公开的另一实施例的环形互联总线的避免死锁的方法的流程图。
具体地,步骤S343中标记所述第一跨环数据包和所述多个源节点还包括,在步骤S3431处,在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环模块20中为所述多个源节点设置一个共有的重放标志位,以及在步骤 S3432处,响应于标记所述第一跨环数据包和所述多个源节点,将所述第一跨环数据包的首位标志位置位并将所述多个源节点的共有的重放标志位置位。步骤S38b中消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记包括,在步骤S381b处,将置位的首位标志位清零并将置位的共有的重放标志位清零。
如此,可以通过设置首位标志位更清楚地标记所述第一跨环数据包并通过重放标志位确定是否发生了重放,在第一跨环数据包继续环内传输直到再次到达跨环模块时,跨环模块可以更准确判断所述第一跨环数据包是否被标记以及是否发生了重放。如此,再根据是否满足跨环传输的条件继续进行跨环传输或环内传输,以保证轮转机制和保序机制的实施。
如参考图3A-图3G所述的,通过在跨环模块20中设置跨环专用令牌、轮转机制和保序机制,可以使得在没有通用令牌的情况下,也可以通过跨环专用令牌进行跨环数据包的跨环传输,从而避免在没有可用的通用令牌进行跨环输出时,总线出现死锁的情况;可以使得当需要跨环传输的请求到达跨环模块,而发现无法进行跨环传输时,不必等待,按照环形总线的方向继续进行环内传输,保证环形总线的其他请求可以被处理,提高环形总线的处理效率和传输效率;并且可以使得进行轮转时,仍然可以在之后按照预定顺序跨环传输多个跨环数据包中的每一个,从而不打乱多个跨环数据包中的每一个的顺序,保证跨环传输的准确性。
在一个实施例中,再次参考图2,图2示出了根据本公开的实施例的一种环形互联总线系统,包括:环形总线0和环形总线1;跨环模块20,位于环形总线0与环形总线1之间,跨环模块20被配置为:响应于接收到要从环形总线0的至少一个源节点到环形总线1的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,跨环模块20获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,其中所述跨环专用令牌由跨环模块20管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输;根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件;以及如果满足跨环传输的条件,使得所述第一跨环数据包进行跨环传输,如果不满足跨环传输的条件,使得所述第一跨环数据包进行环内传输。
在一个实施例中,其中,所述跨环传输的条件包括跨环专用令牌的数量大于或等于1个,或者所述跨环传输的条件包括通用令牌的数量大于或等于 2个,其中,当所述通用令牌大于或等于2个时,优先使用通用令牌进行所述多个跨环数据包的跨环传输。
在一个实施例中,其中,所述多个跨环数据包来自同一个源节点,其中,所述如果不满足所述跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环模块20还被配置为:响应于再次接收到被标记的第一跨环数据包的跨环传输请求,获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,其中,跨环模块20还被配置为:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环模块20中为所述至少一个源节点中的每一个源节点设置一个重放标志位;以及其中,标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点包括:将所述第一跨环数据包的首位标志位置位并将所述第一跨环数据包所来自的源节点的重放标志位置位。
在一个实施例中,其中消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记包括:将置位的首位标志位清零并将置位的重放标志位清零。
在一个实施例中,其中,所述多个跨环数据包来自多个源节点,其中,所述如果不满足跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述多个源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环模块20还被配置为:响应于再次接收到被标记的第一跨环数据包的跨环传输请求,获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环模块20还被配置为:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环模块20中为所述多个源节点设置一个共有的重放标志位;以及其中,标记所述第一跨环数据包和所述多个源节点包括:将所述第一跨环数据包的首位标志位置位并将所述多个源节点的共有的重放标志位置位。
在一个实施例中,其中消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记包括:将置位的首位标志位清零并将置位的共有的重放标志位清零。
在一个实施例中,其中,如果使用跨环专用令牌进行所述第一跨环数据包的跨环传输,则在所述第一跨环数据包到达目的节点后,继续发送一个跨环专用令牌包把所述跨环专用令牌归还所述跨环模块20。
在一个实施例中,其中,新数据包进入第一环形总线或第二环形总线的条件包括通用令牌的总数大于或等于2。
如参考上述实施例所述的,通过在环形互联总线系统中设置跨环专用令牌、轮转机制和保序机制,可以使得在没有通用令牌的情况下,也可以通过跨环专用令牌进行跨环数据包的跨环传输,从而避免在没有可用的通用令牌进行跨环输出时,总线出现死锁的情况;可以使得当需要跨环传输的请求到达跨环模块,而发现无法进行跨环传输时当临时无法进行跨环传输时,不必等待,按照环形总线的方向继续进行环内传输,保证环形总线的其他请求可以被处理,提高环形总线的处理效率和传输效率;并且可以使得进行轮转时,仍然可以在之后按照预定顺序跨环传输多个跨环数据包中的每一个,从而不打乱多个跨环数据包中的每一个的顺序,保证跨环传输的准确性。
本公开的环形互联总线系统不限于图2所示的环形互联总线系统,还可以包括如图4A所示的由多个环形总线和多个跨环模块(例如,40a、41a、42a 和43a)组成的多环形总线结构,以及如图4B所示的由多个环形总线和多个跨环模块(例如,40b、41b、42b和43b)组成的多层结构的环形总线结构。
参考图5,图5示出了根据本公开的实施例的跨环装置50的框图。
跨环装置50包括:处理器51;以及存储器52,存储了计算机程序指令,其由处理器51执行时进行如下步骤:响应于接收到要从第一环形总线的至少一个源节点到第二环形总线的至少一个目的节点的跨环方向上进行跨环传输的多个跨环数据包中的第一跨环数据包的请求,跨环装置50获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,其中所述跨环专用令牌由跨环装置50管理用于跨环数据包在所述跨环方向上的跨环传输,所述通用令牌用于数据包在所述跨环方向上的跨环传输和环内传输,其中跨环装置位于所述第一环形总线与所述第二环形总线之间;根据跨环专用令牌和通用令牌的信息,判断当前是否满足跨环传输的条件;如果满足跨环传输的条件,使得所述第一跨环数据包进行跨环传输,如果不满足跨环传输的条件,使得所述第一跨环数据包进行环内传输。
在一个实施例中,其中,所述跨环传输的条件包括跨环专用令牌的数量大于或等于1个,或者所述跨环传输的条件包括通用令牌的数量大于或等于 2个,其中,当所述通用令牌大于或等于2个时,优先使用通用令牌进行所述多个跨环数据包的跨环传输。
在一个实施例中,其中,所述多个跨环数据包来自同一个源节点,其中,所述如果不满足所述跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环装置50还被配置为:响应于再次接收到被标记的第一跨环数据包的跨环传输请求,获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,其中,跨环装置50还被配置为:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环装置50中为所述至少一个源节点中的每一个源节点设置一个重放标志位;以及其中,标记所述第一跨环数据包和所述第一跨环数据包所来自的源节点包括:将所述第一跨环数据包的首位标志位置位并将所述第一跨环数据包所来自的源节点的重放标志位置位。
在一个实施例中,其中消除所述被标记的第一跨环数据包的标记和所述第一跨环数据包所来自的源节点的标记包括:将置位的首位标志位清零并将置位的重放标志位清零。
在一个实施例中,其中,所述多个跨环数据包来自多个源节点,其中,所述如果不满足跨环传输的条件、使得所述第一跨环数据包进行环内传输还包括:响应于不满足所述跨环传输的条件而进行所述第一跨环数据包的环内传输,在所述多个跨环数据包均未被标记的情况下:标记所述第一跨环数据包和所述多个源节点,并按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环装置50还被配置为:响应于再次接收到被标记的第一跨环数据包的跨环传输请求,获得用于所述跨环方向的跨环专用令牌和通用令牌的信息,并判断当前是否满足跨环传输的条件,如果满足跨环传输的条件,则:进行所述被标记的第一跨环数据包的跨环传输,并消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记,如果不满足跨环传输的条件,则:按顺序进行被标记的第一跨环数据包和所述多个跨环数据包中的其他跨环数据包的环内传输。
在一个实施例中,跨环装置50还被配置为:在接收到要进行跨环传输的第一跨环数据包的请求之前,在所述多个跨环数据包中的每一个跨环数据包中设置一个首位标志位并在跨环模块20 中为所述多个源节点设置一个共有的重放标志位;以及其中,标记所述第一跨环数据包和所述多个源节点包括:将所述第一跨环数据包的首位标志位置位并将所述多个源节点的共有的重放标志位置位。
在一个实施例中,其中消除所述被标记的第一跨环数据包的标记和所述多个源节点的标记包括:将置位的首位标志位清零并将置位的共有的重放标志位清零。
在一个实施例中,其中,如果使用跨环专用令牌进行所述第一跨环数据包的跨环传输,则在所述第一跨环数据包到达目的节点后,继续发送一个跨环专用令牌包把所述跨环专用令牌归还所述跨环装置50。
在一个实施例中,其中,新数据包进入第一环形总线或第二环形总线的条件包括通用令牌的总数大于或等于2。
如参考上述实施例所述的,通过在跨环装置50中设置跨环专用令牌、轮转机制和保序机制,可以使得在没有通用令牌的情况下,也可以通过跨环专用令牌进行跨环数据包的跨环传输,从而避免在没有可用的通用令牌进行跨环输出时,总线出现死锁的情况;可以使得当需要跨环传输的请求到达跨环模块,而发现无法进行跨环传输时当临时无法进行跨环传输时,不必等待,按照环形总线的方向继续进行环内传输,保证环形总线的其他请求可以被处理,提高环形总线的处理效率和传输效率;并且可以使得进行轮转时,仍然可以在之后按照预定顺序跨环传输多个跨环数据包中的每一个,从而不打乱多个跨环数据包中的每一个的顺序,保证跨环传输的准确性。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第三等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所附权利要求及其等同物的保护范围为准。