CN117118934B - 三级clos互联网络、传输方法、系统、设备和介质 - Google Patents
三级clos互联网络、传输方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN117118934B CN117118934B CN202311387554.7A CN202311387554A CN117118934B CN 117118934 B CN117118934 B CN 117118934B CN 202311387554 A CN202311387554 A CN 202311387554A CN 117118934 B CN117118934 B CN 117118934B
- Authority
- CN
- China
- Prior art keywords
- node
- routing
- port
- sequence number
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000005540 biological transmission Effects 0.000 title claims abstract description 61
- 238000004364 calculation method Methods 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 32
- 230000002457 bidirectional effect Effects 0.000 claims description 24
- 238000012544 monitoring process Methods 0.000 claims description 19
- 238000012163 sequencing technique Methods 0.000 claims description 12
- 238000012546 transfer Methods 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 abstract description 44
- 230000003993 interaction Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 18
- 238000013475 authorization Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种三级CLOS互联网络、传输方法、系统、设备和介质。本发明对CRRD类算法进行改进,提出一种适用于硬件实现且时间复杂度比较低的路由算法,本发明提出的路由算法各级路由节点内部、各级路由节点之间不存在RGA交互,路由端口的选择完全由路由节点本身决定,使得各级路由节点的硬件实现逻辑都比CRRD简单,所占面积小,且降低了数据传输的延时。同时,本发明提出的算法可以避免死锁的产生。且本发明的方法适用于所有三级及以上的双向CLOS网络。
Description
技术领域
本申请涉及片上网络技术领域,特别是涉及一种三级CLOS互联网络、三级CLOS互联网络路由请求传输方法、系统、计算机设备和存储介质。
背景技术
对于各式各样的单级交换网络结构,都有其固有的缺陷,而且随着目前对交换网络大容量和高可扩展性的追求,已经很难单纯的通过增加端口数量或者提升线路速率来满足大规模交换系统的要求,因此多级交换结构应运而生。
多级交换网络结构是由多个单级结构交换单元级联形成的,在多级交换网络结构中,只有第一级交换单元的输入端口与最后一级交换单元的输出端口是交换结构的直接输入输出端口;而级与级之间交换单元输入输出端口是间接的输入输出端口,显而易见在多级交换结构中,级数越少,交换延迟也就越小,但交换通路也相应减少,这导致内部碰撞阻塞更容易产生,因此多级交换结构的确定有一个各项性能之间的折中,其中最有代表性的是多级 CLOS网络,特别是二级和三级CLOS结构。
三级CLOS交换网络的单播调度算法按连接请求的处理方式分为集中式和分布式两类调度算法。集中式调度算法是以全局信息计算链路分配的方式来避免链路浪费的,因此需增设集中处理器获取所有输入模块请求信息并返回计算后的链路信息。集中式算法相比分布式算法来说,时间复杂度较高且增加了额外的集中处理器结构。分布式调度算不需要获取所有输入模块的链路请求信息,避免了类似中央调度器集中仲裁的方式,从而减少了交换网络的设计复杂度。对于片上网络来说,首选分布式调度算法。在分布式调度算法中输入级的一级路由节点模块和中间级的二级路由节点模块可以独立的决定自己内部的链路分配,各模块之间互不影响。这类算法目前主要有CRRD类算法。但在CRRD类算法中,由于一级路由节点模块内部、一级路由节点模块和二级路由节点模块之间都存在RGA交互,导致一级路由节点模块和二级路由节点模块的硬件实现逻辑复杂,且时间复杂度较高。
发明内容
基于此,提供一种三级CLOS互联网络、三级CLOS互联网络路由请求传输方法、系统、计算机设备和存储介质,能够对CRRD类算法进行改进,解决目前在CRRD类算法中,由于一级路由节点模块内部、一级路由节点模块和二级路由节点模块之间都存在RGA交互,导致一级路由节点模块和二级路由节点模块的硬件实现逻辑复杂,且时间复杂度较高的技术问题。
一方面,提供一种三级CLOS互联网络路由请求传输方法,所述方法包括:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
在其中一个实施例中,所述根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等,则通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号M1,并将路由请求由对应的输出端口传输至所述目标端口节点;
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输。
在其中一个实施例中,所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
在其中一个实施例中,所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
在其中一个实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
在其中一个实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点的步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;
接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;
接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
在其中一个实施例中,所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口N1的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
在其中一个实施例中,所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
在其中一个实施例中,在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
在其中一个实施例中,在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
在其中一个实施例中,在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
另一方面,提供了一种三级CLOS互联网络,用于实现前文所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
在其中一个实施例中,所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
另一方面,提供了一种三级CLOS互联网络路由请求传输系统,所述系统包括:
CLOS互联网络管理模块,用于识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
路由请求传输节点管理模块,用于响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
路由请求路径控制模块,用于根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
上述三级CLOS互联网络路由请求传输方法、系统、计算机设备和存储介质,本发明对CRRD类算法进行改进,提出一种适用于硬件实现且时间复杂度比较低的路由算法,本发明提出的路由算法各级路由节点内部、各级路由节点之间不存在RGA交互,路由端口的选择完全由路由节点本身决定,使得各级路由节点的硬件实现逻辑都比CRRD简单,所占面积小,且降低了数据传输的延时。同时,本发明提出的算法可以避免死锁的产生。且本发明的方法适用于所有三级及以上的双向CLOS网络。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的一种双向两级CLOS交换网络的结构框图;
图2为图1中的一级路由节点1的端口连接结构示意图;
图3为图2所示一级路由节点1中向4/5/6/7的四个端口中的空闲端口发送请求的状态示意图;
图4为图2所示一级路由节点1中4/5/6/7的四个端口中的空闲端口收到发送请求之后以轮询的方式选择一个请求进行授权的状态示意图;
图5为本申请一个实施例中三级CLOS互联网络的结构框图;
图6为本申请一个实施例中三级CLOS互联网络路由请求传输步骤的流程示意图;
图7为本申请一个实施例中一级路由节点FM内部仲裁器的结构框图;
图8为本申请一个实施例中一级路由节点FM内部仲裁器有请求的输入端口按照优先级依次匹配空闲的输出端口时的结构框图;
图9为本申请一个实施例中一级路由节点FM内部仲裁器更新仲裁器指针的位置时的结构框图;
图10为本申请一个实施例中二级路由节点1的端口连接结构示意图;
图11为本申请一个实施例中二级路由节点SM内部仲裁器的结构示意图;
图12为本申请一个实施例中三级路由节点1的端口连接结构示意图;
图13为本申请一个实施例中三级路由节点TM内部仲裁器的结构示意图;
图14为本申请一个实施例中三级路由节点TM内部仲裁器有请求的输入端口按照优先级依次匹配空闲的输出端口时的结构框图;
图15为本申请一个实施例中三级路由节点TM内部仲裁器更新仲裁器指针的位置时的结构框图;
图16为本申请一个实施例中三级CLOS互联网络路由请求传输系统的结构框图;
图17为本申请一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如背景技术所述,最有代表性的是多级 CLOS网络,特别是二级和三级CLOS结构。如图1所示即为典型的双向两级CLOS交换网络,它们都是由节点交换网络组成。
结合图1,以目前的CRRD类算法举例,当从源节点4向目标节点30发送路由请求时,CRRD 类算法步骤如下:
首先,源节点0所在的一级路由节点的顺序编号IM0内部仲裁:
第一步:源节点4向IM0内所有的空闲的输出端口发送路由请求;
第二步:输出端口收到路由请求之后,以轮询的方式进行仲裁,并选择一个请求进行授权;
第三步:收到授权的输入端口,以轮询的方式,选择一个输出端口,向二级路由节点继续发出路由请求;没被授权的路由请求,在下个时隙继续向所有空闲的输出端口发出路由请求;
其次,一级路由节点的顺序编号IM与二级路由节点CM之间的RGA:
第四步:IM的输出端口向CM发出路由请求;
第五步:CM收到路由请求之后,会查看路由请求对应的输出端口,如果空闲,则发出授权,如果被占用则不会授权;
第六步:收到授权的IM准备发送数据。
如图2所示,对于一级路由节点的顺序编号IM,路由请求来自0/1/2/3号端口,向上面的4/5/6/7号端口发送数据时,存在RGA过程如下。
第一步,如图3所示,向4/5/6/7的四个端口中的空闲端口发送请求:0/2接收到的路由请求S//4≠D//4,于是向4/5/6/7的四个端口中的空闲端口5/6发送请求。
第二步:如图4所示,4/5/6/7的四个端口中的空闲端口收到发送请求之后以轮询的方式选择一个请求进行授权。
第三步:0/1/2/3收到授权信息之后,以轮询的方式从授权端口中选择一个,并在下个时隙发出路由请求,将路由请求传给二级路由节点;未得到授权的请求将在下个时隙继续发送请求。上述例子,有两个输入请求和两个输出端口时,但是在RGA过程中存在碰撞、导致只有一个请求申请到输出端口,另外一个请求只能在下个时隙再发起请求,时间复杂度和逻辑复杂度都很高。
从上述例子可以看出一级路由节点模块内部存在RGA交互,不仅时间复杂度高且逻辑复杂度都很高,在CRRD类算法中,由于一级路由节点模块内部、一级路由节点模块和二级路由节点模块之间都存在RGA交互,导致一级路由节点模块和二级路由节点模块的硬件实现逻辑复杂,且时间复杂度较高。
如图5所示,为本申请的三级CLOS互联网络结构示意图。图中每条链路都可以双向传输数据,即是全双工的;图中的方框是端口节点(soure/sink节点),共32个,负责路由请求的发送和收集,相互之间可以互发路由请求;当发送数据时作为source节点,当接受数据时可作为sink节点;图中的圆圈是路由节点,其中一级路由节点有8个,二级路由节点有4个,三级路由节点有2个;一级路由节点连接4个source/sink节点和四个二级路由节点;二级路由节点连接8个一级路由节点和2个三级路由节点;三级路由节点链接4个二级路由节点。
如图6所示,本发明实施例中创造性的提出了一种三级CLOS互联网络路由请求传输方法,包括以下步骤:
步骤S1,识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值,设置二级路由节点在其回转标志位为第二数值时只能将路由请求传输至一级路由节点;
步骤S2,响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
步骤S3,根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
本发明对CRRD类算法进行改进,提出一种适用于双向两级CLOS互联网络硬件实现的路由算法及一级路由节点内部的调度算法,时间复杂度较低且硬件实现逻辑简单。
其中,本申请为了避免死锁的产生,设置了回转标志位,根据回转标志位的数值能在每一级路由节点中独自判断路由请求传输方向,便于后续控制发送路由请求的路径。
在本实施例中,所述根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等,则通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号M1,并将路由请求由对应的输出端口传输至所述目标端口节点;
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输。
在本实施例中,所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
在本实施例中,所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
在本实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
可理解的是,当S//4=D//4时,S和D在同一个一级路由节点上,即与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等。当S//4≠D//4时,S和D不在同一个一级路由节点上。
举例:当source节点4向sink节点7发送路由请求时,S=4,D=7,S//4=4//4=1,D//4=7//4=1,因此S和D在同一一级路由节点上。从上图可以看出,他们都在一级路由节点1上,该路由请求直接由该一级路由节点从D=7对应的顺序编号为M1的输出端口=7%4=3,将路由请求传输到D=7即可,即一级路由节点1,直接将路由请求从它的输出端口3发送给sink7。如果此时它的输出端口3被占用,则在此等待。
在本实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点的步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;
接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;
接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
在本实施例中,所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口N1的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
在本实施例中,所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
举例:响应于在源端口节点(source节点)向目标端口节点(source节点)发送路由请求时,即当source节点4向sink节点30发送路由请求时,S=4,D=30,S//4=4//4=1,D//4=30//4=7,因此S和D不在同一一级路由节点上。从图上可以看出,S在一级路由节点1上,D在一级路由节点7上。该路由请求直接由该一级路由节点1的输出端口将路由请求传输二级路由节点(假设是二级路由节点2),二级路由节点2计算,如果二级路由节点2的输出端口7空闲,将路由请求从其7号输出端口路由到一级路由节点7,一级路由节点7计算所述目标端口节点对应的输出端口,从输出端口2将数据传输到sink30。如果二级路由节点2的输出端口7被占用,则判断该路由请求的回转标志位为第一数值,则判断该二级路由节点2到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点(假设传输到三级路由节点0)。三级路由节点0收到路由请求之后,从除输入端口之外的端口将路由请求传给二级路由节点(假设传输给二级路由节点3),并将回转标志位为第二数值,二级路由节点3计算所述二级路由节点的顺序编号为M2的输出端口:如果二级路由节点3的输出端口M2=7D//4=7空闲,则将路由请求从该输出端口7路由到所述目标端口节点对应的一级路由节点7,一级路由节点7计算顺序编号为M1的输出端口M1=30%4=2,如果输出端口2空闲,则从输出端口将数据传输到D,如果输出端口2不空闲,则在此端口等待。如果二级路由节点3的输出端口7不空闲,因为回转标志位是“1”,那么继续在输出端口7等待。
在本实施例中,在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
可理解的是,一级路由节点FM,分为如下三种情况:
如图2所示,一级路由节点向下连接端口节点(source/sink节点),向上连接四个二级路由节点,各个端口(连接线)如下标号。
情况1:路由请求来自0/1/2/3号端口当S//4=D//4时:
FM计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,从输出端口将数据传输到D,如果此时它的输出端口被占用,则在此等待。
情况2:路由请求来自0/1/2/3号端口当S//4≠D//4时,即当0/1/2/3号输入端口向4/5/6/7输出端口发送请求时:
假设请求来自输入端口0/2/3,空闲的输出端口为5/6。
第一步:仲裁器轮询仲裁有输入请求的输入端口的优先级。
IM内部0/1/2/3号端口有一个链路仲裁器,以轮询的方式选出优先级最高的一个输入端口,如图7所示,仲裁结果是1,但是1没有请求,那么2、3和0依次为第一、第二和第三优先级。
第二步:有请求的输入端口按照优先级依次匹配空闲的输出端口。
如图8所示,输入端口2与第一个空闲的输出端口5匹配,输入端口3和第二个空闲的输出端口6匹配。
第三步:更新仲裁器指针的位置。
如图9所示,输入端口2、3的请求都被处理,那么仲裁器的指针更新到输入端口0;下个时隙输入端口0具有最高的优先级。
情况3:路由请求来自于上面四个二级路由节点:
sink节点记为D,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口。从所述目标端口节点对应的输出端口将路由请求传输到D。当输出端口被D%4占用时,路由请求需在此端口等待。
在本实施例中,在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值“1”,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值“0”,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值“0”的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
二级路由节点SM的情况如下:
如图10所示,二级路由节点向下连接8个一级路由节点、向上连接2个三级路由节点,标号如下。因为每条连接线都是全双工的,因此相当于10个输入端口10输出端口。
第一步:二级路由节点SM从所有十个输入端口收到路由请求之后,二级路由节点CM根据D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点。当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位是“1”,如果是“1”,则路由请求需在所述二级路由节点的顺序编号为M2的输出端口等待。如果回转标志位为第一数值“0”,则进入第二步。
第二步:SM内部调度。
如图11所示,SM内部调度包含一个输出链路状态监测模块,监测输出端口8/9是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动SM内部输入端口侧的轮询仲裁器。
第三步:输入侧轮询仲裁器开始工作。
轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值“0”的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;具体过程和图7、图8、图9一致,在此不再赘述。
在本实施例中,在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
三级路由节点TM的情况如下:
如图12所示,三级路由节点向下连接4个二级路由节点,标号如下。因为每条连接线都是全双工的,因此相当于4个输入端口及4个输出端口。为了便于区分三级路由节点向下连接4个二级路由节点的4个输入端口及4个输出端口,采用标号0/1/2/3号端口表示4个输入端口,对应的采用标号4/5/6/7号端口表示4个输出端口。
第一步:仲裁器轮询仲裁有输入请求的输入端口的优先级。
假设请求来自输入端口0/2/3,空闲的输出端口为5/6。
TM内部0/1/2/3号端口有一个链路仲裁器,以轮询的方式选出优先级最高的一个输入端口,如图13所示,仲裁结果是1,但是1没有请求,那么2、3和0依次为第一、第二和第三优先级。
第二步:有请求的输入端口按照优先级依次匹配空闲的输出端口。
如图14所示,输入端口2与第一个空闲的输出端口5匹配,输入端口3和第二个空闲的输出端口6匹配;并将数据的回转标志位设为第二数值“1”。
第三步,更新仲裁器指针的位置。
如图15所示,输入端口2、3的请求都被处理,那么仲裁器的指针更新到输入端口0;下个时隙输入端口0具有最高的优先级;未得到授权的请求将在下个时隙继续参与仲裁。
一级路由节点和二级路由节点的硬件实现,基于标准单元和逻辑实现该运算即可,逻辑顺序与算法相同,优势与算法所证优势相同。
对于片上网络来说,分布式调度算法是首选。对于CLOS网络,目前常用的分布式算法是CRRD类算法。但是在CRRD类算法中,由于各级路由节点之间存在RGA交互,导致各级路由节点的硬件实现逻辑非常复杂,且因为存在三级路由节点导致数据传输延时更大。因此,本发明对CRRD类算法进行改进,提出一种适用于硬件实现且时间复杂度比较低的路由算法,本发明提出的路由算法各级路由节点内部、各级路由节点之间不存在RGA交互,路由端口的选择完全由路由节点本身决定,使得各级路由节点的硬件实现逻辑都比CRRD简单,所占面积小,且降低了数据传输的延时。同时,本发明提出的算法可以避免死锁的产生。且本发明的方法适用于所有三级及以上的双向CLOS网络。
在本实施例中,如图5所示,提供了一种三级CLOS互联网络,用于实现前文所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
在本实施例中,所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
上述三级CLOS互联网络路由请求传输方法中,本发明对CRRD类算法进行改进,提出一种适用于硬件实现且时间复杂度比较低的路由算法,本发明提出的路由算法各级路由节点内部、各级路由节点之间不存在RGA交互,路由端口的选择完全由路由节点本身决定,使得各级路由节点的硬件实现逻辑都比CRRD简单,所占面积小,且降低了数据传输的延时。同时,本发明提出的算法可以避免死锁的产生。且本发明的方法适用于所有三级及以上的双向CLOS网络。
在一个实施例中,如图16所示,提供了一种三级CLOS互联网络路由请求传输系统10,包括:CLOS互联网络管理模块1、路由请求传输节点管理模块2、路由请求路径控制模块3。
所述CLOS互联网络管理模块1用于识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值,设置二级路由节点在其回转标志位为第二数值时只能将路由请求传输至一级路由节点。
所述路由请求传输节点管理模块2用于响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点。
所述路由请求路径控制模块3用于根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
在本实施例中,所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
在本实施例中,所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
在本实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
在本实施例中,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点的步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;
接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;
接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
在本实施例中,所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口N1的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
在本实施例中,所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
在本实施例中,在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
在本实施例中,在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
在本实施例中,在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
在本实施例中,另一方面,提供了一种三级CLOS互联网络,用于实现前文所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
在本实施例中,所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
上述三级CLOS互联网络路由请求传输系统中,本发明对CRRD类算法进行改进,提出一种适用于硬件实现且时间复杂度比较低的路由算法,本发明提出的路由算法各级路由节点内部、各级路由节点之间不存在RGA交互,路由端口的选择完全由路由节点本身决定,使得各级路由节点的硬件实现逻辑都比CRRD简单,所占面积小,且降低了数据传输的延时。同时,本发明提出的算法可以避免死锁的产生。且本发明的方法适用于所有三级及以上的双向CLOS网络。
关于三级CLOS互联网络路由请求传输系统的具体限定可以参见上文中对于三级CLOS互联网络路由请求传输方法的限定,在此不再赘述。上述三级CLOS互联网络路由请求传输系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图17所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储三级CLOS互联网络路由请求传输数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种三级CLOS互联网络路由请求传输方法。
本领域技术人员可以理解,图17中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值,设置二级路由节点在其回转标志位为第二数值时只能将路由请求传输至一级路由节点;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点的步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;
接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;
接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口N1的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
另一方面,提供了一种三级CLOS互联网络,用于实现前文所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
关于处理器执行计算机程序时实现步骤的具体限定可以参见上文中对于三级CLOS互联网络路由请求传输的方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值,设置二级路由节点在其回转标志位为第二数值时只能将路由请求传输至一级路由节点;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点的步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;
接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;
接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口N1的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
另一方面,提供了一种三级CLOS互联网络,用于实现前文所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
关于计算机程序被处理器执行时实现步骤的具体限定可以参见上文中对于三级CLOS互联网络路由请求传输的方法的限定,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种三级CLOS互联网络路由请求传输方法,其特征在于,包括:
识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
响应于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中,源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点;其包括:若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
2.根据权利要求1所述的三级CLOS互联网络路由请求传输方法,其特征在于,所述根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径步骤包括:
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等,则通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号M1,并将路由请求由对应的输出端口传输至所述目标端口节点;
若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输。
3.根据权利要求2所述的三级CLOS互联网络路由请求传输方法,其特征在于,
所述识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点步骤中,包括:识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点的十进制编号;获取与每一一级路由节点连接的四个端口节点的排序编号;
所述获取与每一一级路由节点连接的四个端口节点的排序编号步骤中,包括:获得的所有端口节点按照所述一级路由节点的十进制编号顺序依次递增设置,且每四个端口节点的排序编号通过与4整除计算的结果为对应的一级路由节点的十进制编号,每一端口节点的排序编号通过与4取余计算的结果为该端口节点对应连接一级路由节点的端口顺序号。
4.根据权利要求3所述的三级CLOS互联网络路由请求传输方法,其特征在于,
所述根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs的方式为:IMs=S//4,其中//为除整计算;
所述根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd的方式为:IMd=D//4,其中//为除整计算。
5.根据权利要求3所述的三级CLOS互联网络路由请求传输方法,其特征在于,若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd相等时,则所述通过目标端口节点的排序编号D确定所述目标端口节点对应的输出端口的顺序编号M1的方式为:M1=D%4,其中%为取余计算;
在将路由请求由对应的输出端口传输至所述目标端口节点时,还包括:判断顺序编号为M1的输出端口是否空闲,若顺序编号为M1的输出端口被占用则控制路由请求在此端口等待。
6.根据权利要求3所述的三级CLOS互联网络路由请求传输方法,其特征在于,所述接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口步骤包括:
接收所述路由请求的二级路由节点计算所述目标端口节点对应的输出端口的顺序编号N1的方式为:N1=D//4,其中//为除整计算。
7.根据权利要求6所述的三级CLOS互联网络路由请求传输方法,其特征在于,所述判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点包括:
如果二级路由节点的所述二级路由节点的顺序编号为M2的输出端口空闲,则将路由请求从该所述二级路由节点的顺序编号为M2的输出端口路由到所述目标端口节点对应的一级路由节点,并根据一级路由节点的顺序编号IMd确定一级路由节点的顺序编号为M1的输出端口,其中,M1=D%4,%为取余计算;
如果一级路由节点的顺序编号为M1的输出端口空闲,则从输出端口将数据传输到所述目标端口节点,如果一级路由节点的顺序编号为M1的输出端口不空闲,则继续在此等待。
8.根据权利要求1所述的三级CLOS互联网络路由请求传输方法,其特征在于,在识别三级CLOS互联网络中所有的一级路由节点时还包括:获取每一一级路由节点连接至四个端口节点的下端端口,获取每一一级路由节点连接至四个二级路由节点的上端端口;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4=D//4时,确定一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待;其中,M1=D%4,%为取余计算;
响应于在一级路由节点接收到来自下端端口的路由请求,且当S//4≠D//4时,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置;
响应于在一级路由节点接收到来自上端端口的路由请求,计算一级路由节点与所述目标端口节点对应的顺序编号为M1的输出端口,并从顺序编号为M1的输出端口将数据传输到所述目标端口节点,当顺序编号为M1的输出端口被占用,则在此等待。
9.根据权利要求1所述的三级CLOS互联网络路由请求传输方法,其特征在于,在识别三级CLOS互联网络中所有的二级路由节点时还包括:获取每一二级路由节点连接至一级路由节点的一级连接端口,获取每一二级路由节点连接至三级路由节点的三级连接端口;
响应于所述二级路由节点从一级连接端口接收到路由请求后,所述二级路由节点根据所述目标端口节点的排序编号D确定其输出端口的顺序编号M2,M2=D//4;从所述二级路由节点的顺序编号为M2的输出端口将路由请求传输到所述目标端口节点对应的一级路由节点;当所述二级路由节点的顺序编号为M2的输出端口被占用时,判断其回转标志位的值,如果回转标志位为第二数值,则所述二级路由节点的顺序编号为M2的输出端口等待;如果回转标志位为第一数值,则进行二级路由节点内部调度,二级路由节点内部包含一个输出链路状态监测模块,用于监测输出端口是否空闲,如果都不空闲,则继续在所述二级路由节点的顺序编号为M2的输出端口等待,如果存在空闲则启动二级路由节点内部输入端口侧的轮询仲裁器;输入侧轮询仲裁器开始工作,轮询仲裁器对输入端口进行仲裁,并根据仲裁结果对所有回转标志位为第一数值的请求进行优先级排序,具有最高优先级的请求优先从第一个空闲的输出端口发出;更新输入端口仲裁器指针的同时,输出链路状态监测模块需要将当前链路状态反馈给输入端口侧的仲裁器;如果输出链路都不空闲,则输入端口仲裁器停止工作,所有请求从所述二级路由节点的顺序编号为M2的输出端口等待;如果存在空闲则启动二级路由节点SM内部输入端口侧的轮询仲裁器,重复更新输入端口仲裁器指针。
10.根据权利要求1所述的三级CLOS互联网络路由请求传输方法,其特征在于,在识别三级CLOS互联网络中所有的三级路由节点时还包括:获取每一三级路由节点连接至二级路由节点的二级连接端口,其中二级连接端口及其连接线为双向传输方式;
响应于所述三级路由节点从二级连接端口接收到路由请求后,仲裁器轮询仲裁有输入请求的输入端口的优先级;有请求的输入端口按照优先级依次匹配空闲的输出端口;更新仲裁器指针的位置。
11.一种三级CLOS互联网络,其特征在于,用于实现权利要求1至10任一项所述的三级CLOS互联网络路由请求传输方法,所述三级CLOS互联网络包括:多个一级路由节点、多个二级路由节点、多个三级路由节点,每一一级路由节点连接的四个端口节点;所述端口节点与所述一级路由节点之间双向连接,所述一级路由节点与所述二级路由节点之间双向连接,所述二级路由节点与所述三级路由节点之间双向连接。
12.根据权利要求11所述的三级CLOS互联网络,其特征在于,所述三级CLOS互联网络包括三十二个端口节点、八个一级路由节点、四个二级路由节点、二个三级路由节点。
13.一种三级CLOS互联网络路由请求传输系统,其特征在于,所述系统包括:
CLOS互联网络管理模块,用于识别三级CLOS互联网络中所有的一级路由节点、二级路由节点、三级路由节点及端口节点;其中,设置所述路由请求具有回转标志位,从一级路由节点发出路由请求时将回转标志位设置为第一数值,在三级路由节点向二级路由节点传输路由请求时将回转标志位设置为第二数值;
路由请求传输节点管理模块,用于在源端口节点向目标端口节点发送路由请求时,根据源端口节点的排序编号S确定与源端口节点连接的一级路由节点的顺序编号IMs,根据目标端口节点的排序编号D确定与目标端口节点连接的一级路由节点的顺序编号IMd;其中源端口节点为产生路由请求的端口节点,目标端口节点为接收路由请求的端口节点;
路由请求路径控制模块,用于根据与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd是否相等控制路由请求通过一级路由节点或二级路由节点传输至所述目标端口节点的传输路径,所述二级路由节点在接收路由请求后根据其端口是否空闲以及回转标志位的值控制路由请求的传输路径为向下传输至顺序编号为IMd的一级路由节点的或向上传输至三级路由节点并更换为其它二级路由节点向下传输至顺序编号为IMd的一级路由节点;其包括:若与源端口节点连接的一级路由节点的顺序编号IMs和与目标端口节点连接的一级路由节点的顺序编号IMd不相等,则将路由请求由所述源端口节点对应的一级路由节点向二级路由节点传输;接收所述路由请求的二级路由节点通过所述目标端口节点的排序编号D确定对应连接至一级路由节点的顺序编号IMd的二级路由节点输出端口,判断所述二级路由节点输出端口是否空闲,若是则将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点,若否则判断回转标志位是否为第二数值,若为第二数值,则继续在输出端口处等待;若为第一数值,则判断该二级路由节点到三级路由节点的端口是否空闲,如果不空闲,则继续在此端口等待,如果空闲则将路由请求传输到三级路由节点;接收所述路由请求的三级路由节点从除输入端口之外的端口将路由请求传输给其余二级路由节点,并将回转标志位为第二数值,接收所述路由请求的二级路由节点执行上一步直至将路由请求通过顺序编号为IMd的一级路由节点传输至所述目标端口节点。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311387554.7A CN117118934B (zh) | 2023-10-25 | 2023-10-25 | 三级clos互联网络、传输方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311387554.7A CN117118934B (zh) | 2023-10-25 | 2023-10-25 | 三级clos互联网络、传输方法、系统、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117118934A CN117118934A (zh) | 2023-11-24 |
CN117118934B true CN117118934B (zh) | 2024-02-23 |
Family
ID=88813263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311387554.7A Active CN117118934B (zh) | 2023-10-25 | 2023-10-25 | 三级clos互联网络、传输方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117118934B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118612137A (zh) * | 2024-08-09 | 2024-09-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种三级clos网络的数据传输方法、装置及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510786A (zh) * | 2019-01-22 | 2019-03-22 | 伍星霖 | 一种路由控制方法及交换设备 |
CN113568849A (zh) * | 2021-07-29 | 2021-10-29 | 海飞科(南京)信息技术有限公司 | 片上数据交换的滚轮仲裁方法及电路 |
CN113630347A (zh) * | 2021-08-13 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、系统、存储介质及设备 |
CN115580572A (zh) * | 2022-09-20 | 2023-01-06 | 海光信息技术股份有限公司 | 路由方法、路由节点、路由装置和计算机可读存储介质 |
WO2023071116A1 (zh) * | 2021-10-25 | 2023-05-04 | 苏州浪潮智能科技有限公司 | 一种节点匹配方法、装置、设备以及介质 |
CN116545960A (zh) * | 2023-04-17 | 2023-08-04 | 北京大学 | 二维片上网络结构及其路由方法、装置、设备和存储介质 |
-
2023
- 2023-10-25 CN CN202311387554.7A patent/CN117118934B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109510786A (zh) * | 2019-01-22 | 2019-03-22 | 伍星霖 | 一种路由控制方法及交换设备 |
CN113568849A (zh) * | 2021-07-29 | 2021-10-29 | 海飞科(南京)信息技术有限公司 | 片上数据交换的滚轮仲裁方法及电路 |
CN113630347A (zh) * | 2021-08-13 | 2021-11-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、系统、存储介质及设备 |
WO2023071116A1 (zh) * | 2021-10-25 | 2023-05-04 | 苏州浪潮智能科技有限公司 | 一种节点匹配方法、装置、设备以及介质 |
CN115580572A (zh) * | 2022-09-20 | 2023-01-06 | 海光信息技术股份有限公司 | 路由方法、路由节点、路由装置和计算机可读存储介质 |
CN116545960A (zh) * | 2023-04-17 | 2023-08-04 | 北京大学 | 二维片上网络结构及其路由方法、装置、设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
Clos交换结构的基于相异代表组的路由控制算法;刘晓锋;;西华师范大学学报(自然科学版)(第03期);全文 * |
刘晓锋 ; .Clos交换结构的基于相异代表组的路由控制算法.西华师范大学学报(自然科学版).2016,(第03期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN117118934A (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11003604B2 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
CN117118934B (zh) | 三级clos互联网络、传输方法、系统、设备和介质 | |
EP0380857B1 (en) | Arbitrating communication requests in a multi-processor computer system | |
US5500858A (en) | Method and apparatus for scheduling cells in an input-queued switch | |
CN102834816B (zh) | 用以减少存取等待时间的总线仲裁方法及处理系统 | |
EP2192496B1 (en) | Arbitration in multiprocessor device | |
US6647449B1 (en) | System, method and circuit for performing round robin arbitration | |
US5448701A (en) | Flow controller for shared bus used by plural resources | |
US7453898B1 (en) | Methods and apparatus for simultaneously scheduling multiple priorities of packets | |
US20080232387A1 (en) | Electronic Device and Method of Communication Resource Allocation | |
US20130028083A1 (en) | Router, method for controlling router, and program | |
US7773616B2 (en) | System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel | |
CN100547983C (zh) | 利用有序的加锁机制来维护诸如分组之类的项目的次序 | |
CN110058940B (zh) | 一种多线程环境下的数据处理方法及装置 | |
WO2017084331A1 (zh) | 互连电路的数据处理装置和方法 | |
CN111447143B (zh) | 业务服务数据传输方法、装置、计算机设备和存储介质 | |
US7760768B2 (en) | System and method for allocating a plurality of sources to a plurality of channels | |
US8892801B2 (en) | Arbitration circuity and method for arbitrating between a plurality of requests for access to a shared resource | |
US7099975B2 (en) | Method of resource arbitration | |
US7773617B2 (en) | System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system | |
CN117135116B (zh) | 一种分布式路由的实现方法、装置、设备及介质 | |
CN115307274A (zh) | 控制空调系统的主机的方法、设备和存储介质 | |
CN117768384A (zh) | 严格无阻塞的集中路由方法、系统、电子设备及存储介质 | |
CN117082014B (zh) | Clos网络、构建方法、传输方法、系统、设备和介质 | |
US10032119B1 (en) | Ordering system that employs chained ticket release bitmap block functions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |