CN107483405B - 一种支持变长信元的调度方法和调度系统 - Google Patents
一种支持变长信元的调度方法和调度系统 Download PDFInfo
- Publication number
- CN107483405B CN107483405B CN201710581324.2A CN201710581324A CN107483405B CN 107483405 B CN107483405 B CN 107483405B CN 201710581324 A CN201710581324 A CN 201710581324A CN 107483405 B CN107483405 B CN 107483405B
- Authority
- CN
- China
- Prior art keywords
- cell
- arbitration
- port
- cells
- input port
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3045—Virtual queuing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种支持变长信元的调度方法和调度系统,该方法包括以下步骤:获取待发送的多个信元;分别提取各信元的包头信息;将各信元的包头信息放入对应的虚拟输出队列中排队;当输入端口和输出端口均空闲时,生成仲裁请求;判断仲裁请求的数量,当仲裁请求的数量大于或等于两个时,对仲裁请求进行选择授权,再对被授权的仲裁请求对应的信元进行调度。本发明提供的一种支持变长信元的调度方法和调度系统,实现了支持变长多优先级信元的调度,不需要对信元进行分解和重组,提高了信元的转发速度,减少了资源的损耗,降低了信元转发过程的延时,避免了传统的调度策略中因分解信元造成的带宽损失。
Description
技术领域
本发明涉及信息处理领域,尤其涉及一种支持变长信元的调度方法和调度系统。
背景技术
随着现代网络的不断发展,网络中的数据流量正在迅速增长,传统的TCP/IP网络已经很难满足要求,而FC(Fiber Channel,光纤通道)协议标准具有多种优势,正被广泛应用。其中,FC交换机负责提供FC网络各节点之间的数据交换支持,目前单级大容量FC交换机大多采用crossbar(交叉开关)架构,根据信元缓存位置的不同又分为输入排队方式、输出排队方式两种,目前,输入排队crossbar架构为目前FC交换机设计的主流。
由于有些数据对时延要求高,因此需要通过多优先级的FC交换机对数据进行调度,例如,基于p-iSLIP算法(priority-iteration SLIP,多优先级-迭代滑动调度算法)、p-iDRR(priority-iteration Dual Round Robin,多优先级迭代双向轮询调度算法)算法的调度策略等。这些算法都是针对定长信元展开的,即信元进入crossbar前被分割成固定长度信元,然后进行调度,最后在输出端口进行重组。
这样做会有以下缺点:
1.带宽损失:例如,一个100Bytes的信元被分解成两个固定长度的64Bytes信元时,会造成(64*2-100)/64=43.75%的带宽损失;
2.延时增大:当一个长信元被分解成多个固定长度短信元时,对于输出端口来说,要等到多个短信元都接受成功之后,整个长信元才算真正的接受成功,若其中某个短信元迟迟没有发送过来,会造成整个长信元的阻塞;
3.逻辑复杂:需要在输入端口加入分解模块、在输出端口加入重组模块,这样不仅会带来额外的延时,而且会带来更多的资源消耗。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种支持变长信元的调度方法和调度系统。
本发明解决上述技术问题的技术方案如下:
一种支持变长信元的调度方法,包括以下步骤:
步骤1,获取待发送的多个信元;
步骤2,分别提取各所述信元的包头信息;
步骤3,将各所述信元的包头信息放入对应的虚拟输出队列中排队;
步骤4,判断各所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
步骤5,判断所述仲裁请求的数量,当所述仲裁请求的数量大于或等于两个时,对所述仲裁请求进行选择授权,再对被授权的所述仲裁请求对应的信元进行调度。
本发明的有益效果是:本发明提供的一种支持变长信元的调度方法,通过将待发送信元的包头信息放图虚拟输出队列中排队,并根据虚拟输出队列对应的输入输出端口是否空闲对发送请求进行仲裁,并根据仲裁请求对信元的发送进行调度,实现了支持变长多优先级信元的调度,不需要对信元进行分解和重组,提高了信元的转发速度,减少了资源的损耗,降低了信元转发过程的延时,避免了传统的调度策略中因分解信元造成的带宽损失。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步地,在步骤2之前,还包括:
将各所述信元依次存储在存储器中有空余空间的分区中,并分别提取各所述信元所在分区的首地址;
在步骤2之后,还包括:
从各所述信元的包头信息中提取得到各所述信元的优先级信息、目标端口信息和信元类型;
步骤3中,具体包括:
步骤3.1,判断各所述信元的信元类型,当所述信元为单播信元时,将所述优先级信息相同且所述输出端口信息相同的各所述单播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队;
步骤3.2,当所述信元为广播信元时,将所述优先级信息相同的各所述广播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队。
进一步地,步骤4中,具体包括:
步骤4.1,当在所述虚拟输出队列中排队的信元为单播信元时,判断所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
步骤4.2,当在所述虚拟输出队列中排队的信元为广播信元时,判断所述虚拟输出队列对应的输入端口和全部输出端口是否空闲,当所述输入端口和全部所述输出端口均空闲时,生成仲裁请求。
进一步地,所述仲裁请求包含有对应信元的优先级信息,步骤5中,具体包括:
步骤5.1,当所述仲裁请求的数量大于或等于两个时,比较各所述仲裁请求的优先级,得到优先级最高的仲裁请求;
步骤5.2,对所述优先级最高的仲裁请求的数量进行判断,当所述优先级最高的仲裁请求的数量为一个时,对所述优先级最高的仲裁请求进行授权;当所述优先级最高的仲裁请求的数量为多个时,按照轮询的规则对所述优先级最高的仲裁请求进行授权;
步骤5.3,判断是否有多个所述仲裁请求同时被授权,当有多个所述仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的所述被授权仲裁请求;
步骤5.4,对优先级最高的所述被授权仲裁请求的数量进行判断,当优先级最高的所述被授权仲裁请求的数量为一个时,接受对优先级最高的所述被授权仲裁请求的授权;当优先级最高的所述被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的所述被授权仲裁请求的授权;
步骤5.5,根据授权结果确定目标信元,并生成调度所述目标信元的使能信号;
步骤5.6,根据所述使能信号调出所述信元并发送到目标输出端口。
进一步地,步骤5.6中,具体包括:
步骤5.6.1,根据所述使能信号读取所述虚拟输出队列中所述目标信元的包头信息和首地址,并从所述包头信息得到所述目标信元的目标输出端口;
步骤5.6.2,根据所述首地址找到存储在存储器分区中的所述目标信元,发送到所述目标输出端口。
本发明解决上述技术问题的另一种技术方案如下:
一种支持变长信元的调度系统,包括:
输入端口,用于获取待发送的多个信元;
输入端口缓存模块,用于分别提取各所述信元的包头信息;
虚拟输出队列组织模块,用于将各所述信元的包头信息放入对应的虚拟输出队列中排队,并判断各所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
调度器,用于当所述仲裁请求的数量大于或等于两个时,对所述仲裁请求进行选择授权,再对被授权的所述仲裁请求对应的信元进行调度。
进一步地,所述输入端口缓存模块还用于将各所述信元依次存储在存储器中有空余空间的分区中,并分别提取各所述信元所在分区的首地址,并从各所述信元的包头信息中提取得到各所述信元的优先级信息、目标端口信息和信元类型;
所述虚拟输出队列组织模块还用于判断各所述信元的信元类型,当所述信元为单播信元时,将所述优先级信息相同且所述输出端口信息相同的各所述单播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队;
并当所述信元为广播信元时,将所述优先级信息相同的各所述广播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队。
进一步地,所述虚拟输出队列组织模块还用于当在所述虚拟输出队列中排队的信元为单播信元时,判断所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
并当在所述虚拟输出队列中排队的信元为广播信元时,判断所述虚拟输出队列对应的输入端口和全部输出端口是否空闲,当所述输入端口和全部所述输出端口均空闲时,生成仲裁请求。
进一步地,所述仲裁请求包含有对应信元的优先级信息,所述调度器具体包括:
输出端口调度器,用于当所述仲裁请求的数量大于或等于两个时,比较各所述仲裁请求的优先级,得到优先级最高的仲裁请求,并对所述优先级最高的仲裁请求的数量进行判断,当所述优先级最高的仲裁请求的数量为一个时,对所述优先级最高的仲裁请求进行授权;当所述优先级最高的仲裁请求的数量为多个时,按照轮询的规则对所述优先级最高的仲裁请求进行授权;
输入端口调度器,用于判断是否有多个所述仲裁请求同时被授权,当有多个所述仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的所述被授权仲裁请求,并对优先级最高的所述被授权仲裁请求的数量进行判断,当优先级最高的所述被授权仲裁请求的数量为一个时,接受对优先级最高的所述被授权仲裁请求的授权;当优先级最高的所述被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的所述被授权仲裁请求的授权;
使能信号生成单元,用于根据授权结果确定目标信元,并生成调度所述目标信元的使能信号;
信元调取单元,用于根据所述使能信号调出所述信元并发送到目标输出端口。
进一步地,所述信元调取单元具体用于根据所述使能信号读取所述虚拟输出队列中所述目标信元的包头信息和首地址,并从所述包头信息得到所述目标信元的目标输出端口,并根据所述首地址找到存储在存储器分区中的所述目标信元,发送到所述目标输出端口。
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
图1为本发明实施例提供的一种支持变长信元的调度方法的流程示意图;
图2为本发明另一实施例提供的一种支持变长信元的调度方法的流程图;
图3为本发明另一实施例提供的一种虚拟输出队列的实现示意图;
图4为本发明另一实施例提供的一种根据仲裁请求调度信元的方法流程图;
图5为本发明另一实施例提供的一种支持变长信元的调度系统的结构框架图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,为本发明实施例提供的一种支持变长信元的调度方法的流程示意图,该调度方法包括以下步骤:
S11,获取待发送的多个信元,多个信元的长度、优先级、发送来的输入端口和需要被发送到的输出端口可以相同,也可以不同,例如,按FC协议,信元的最长长度可以为2112Bytes,信元的优先级可以分为一级、二级和三级,共三个优先级,其紧急程度可以从一级到三级依次降低,即一级信元的优先级最高,发送来的输入端口和需要被发送到的输出端口分别为多个,例如,信元A是从第一输入端口发送来的,需要被发送到第二输出端口,信元B是从第二输入端口发送来的,需要被发送到第二输出端口,信元C是从第一输入端口发送来的,需要被发送到第三输出端口。
S12,分别提取各信元的包头信息,包头信息包含了信元的长度、优先级、发送来的输入端口和需要被发送到的输出端口、信元类型等信息,其中,信元的最大长度为2112Bytes,优先级可以为一级、二级或三级等,发送来的输入端口和需要被发送到的输出端口都可以为多个,具体数量可以由实际情况设定,输入端口的数量至少为1个,输出端口的数量至少为2个,信元的类型可以分为单播信元或广播信元(即多播信元)。
S13,将各信元的包头信息放入对应的虚拟输出队列中排队,虚拟输出队列采用FIFO(First Input First Output,先入先出队列)实现。
需要说明的是,这里的对应指的是将各信元的包头信息按照各虚拟输出队列的输出端口和优先级等信息进行对应放置,例如,第一个虚拟输出队列的输出端口为第二输出端口,存放优先级为一级的信元的包头信息,第二个虚拟输出队列的输出端口为第二输出端口,存放优先级为二级的信元的包头信息,第三个虚拟输出队列的输出端口为第三输出端口,存放优先级为一级的信元的包头信息,那么,就将需要被发送到第二输出端口且优先级为一级的信元的包头信息放入第一个虚拟输出队列中,将需要被发送到第二输出端口且优先级为二级的信元的包头信息放入第二个虚拟输出队列中,将需要被发送到第三输出端口且优先级为一级的信元的包头信息放入第三个虚拟输出队列中。
S14,判断各虚拟输出队列对应的输入端口和输出端口是否空闲,当输入端口和输出端口均空闲时,生成仲裁请求,需要说明的是,应当理解,只有在FIFO为非空时,才会执行本步骤,即当FIFO中存在某个信元的包头信息时,才会判断该FIFO对应的输入端口和输出端口是否都空闲,每当有某个FIFO非空,且其对应的输入端口和输出端口都空闲时,就会产生1bit的仲裁请求,例如,1可以代表有发送请求,0可以代表无发送请求。
S15,判断仲裁请求的数量,当仲裁请求的数量大于或等于两个时,对仲裁请求进行选择授权,再对被授权的仲裁请求对应的信元进行调度,例如,当只有1个仲裁请求时,无需调度,直接对该请求进行授权即可,因为当只有1个仲裁请求时,该请求的优先级必然最大,这里的调度方法可以被称为vp-RRM算法(variable priority-Round Robin Matching,变长多优先级轮询调度算法),对优先级高的仲裁请求进行授权,进而优先转发该请求对应的信元,即完成了多优先级变长信元的调度和转发。
需要说明的是,上述调度过程可以通过FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现,可以使用VHDL语言(Very-High-Speed Integrated CircuitHardware Description Language,超高速集成电路硬件描述语言)进行代码编写。
本实施例提供的一种支持变长信元的调度方法,通过将待发送信元的包头信息放图虚拟输出队列中排队,并根据虚拟输出队列对应的输入输出端口是否空闲对发送请求进行仲裁,并根据仲裁请求对信元的发送进行调度,实现了支持变长多优先级信元的调度,不需要对信元进行分解和重组,提高了信元的转发速度,减少了资源的损耗,降低了信元转发过程的延时,避免了传统的调度策略中因分解信元造成的带宽损失。
如图2所示,为本发明另一实施例提供的一种支持变长信元的调度方法的流程图,在上一实施例的基础上,对本发明进行详细的说明,本实施例提供的调度方法包括以下步骤:
S21,获取待发送的多个信元,多个信元的长度、优先级、发送来的输入端口和需要被发送到的输出端口可以相同,也可以不同,例如,按FC协议,信元的最长长度可以为2112Bytes,信元的优先级可以分为一级、二级和三级,共三个优先级,其紧急程度可以从一级到三级依次降低,即一级信元的优先级最高,发送来的输入端口和需要被发送到的输出端口分别为多个,例如,信元A是从第一输入端口发送来的,需要被发送到第二输出端口,信元B是从第二输入端口发送来的,需要被发送到第二输出端口,信元C是从第一输入端口发送来的,需要被发送到第三输出端口。
S22,将各信元依次存储在存储器中有空余空间的分区中,并分别提取各信元所在分区的首地址。
需要说明的是,每个输入端口对应一个存储器,即输入端口的数量和存储器的数量相同,每个存储器只负责存储与其对应的输入端口发送来的信元,其中,存储器采用双口RAM进行数据缓存,双口RAM的一个端口A负责数据的输入,另一个端口B负责数据的读取,RAM的大小按照最长信元(即2112Bytes)的N倍进行设置,其中,N可以根据资源的大小进行自由配置,即将RAM分为了N个区域,这样每个区域就会有一个首地址,当输入端口接收到信元后,将这些信元分别存入这些分区中,并提取信元存放分区的首地址。下面给出一种优选的存储方式:
假设该存储器共分为5个分区,输入端口传入了某个信元,该信元首先从第1个分区开始存,判断第1个分区是否有空余的存储空间,如果第1个分区未存满,则将该信元存入第1个分区中,如果第1个分区已存满,则继续依次判断第2个分区、第3个分区、第4个分区、第5个分区,直到将信元存入未存满的分区中,假设前3个分区均已存满,则该信元存入了第4个分区中,那么就提取第4个分区的首地址,所有的信元都遵循这个存储方式存放在分区中。
S23,分别提取各信元的包头信息,包头信息包含了信元的长度、优先级、发送来的输入端口和需要被发送到的输出端口、信元类型等信息,其中,信元的最大长度为2112Bytes,优先级可以为一级、二级或三级等,发送来的输入端口和需要被发送到的输出端口都可以为多个,具体数量可以由实际情况设定,输入端口的数量至少为1个,输出端口的数量至少为2个,信元的类型可以分为单播信元或广播信元。
S24,从各信元的包头信息中提取得到各信元的优先级信息、目标端口信息和信元类型,目标端口信息指的就是该信元需要被发送到的输出端口。
S25,将各信元的包头信息放入对应的虚拟输出队列中排队,虚拟输出队列采用FIFO(First Input First Output,先入先出队列)实现。
具体地,步骤S25可以细化为以下几个步骤:
S251,判断各信元的信元类型,当信元为单播信元时,将优先级信息相同且输出端口信息相同的各单播信元的包头信息和对应的首地址放入同一虚拟输出队列中排队;
S252,当信元为广播信元时,将优先级信息相同的各广播信元的包头信息和对应的首地址放入同一虚拟输出队列中排队。
其中,单播信元指的是只发往一个输出端口的信元,广播信元指的是发往多个输出端口的信元。
需要说明的是,对于单播信元,这里的对应指的是将各信元的包头信息按照各虚拟输出队列的输出端口和优先级等信息进行对应放置,例如,第一个虚拟输出队列的输出端口为第二输出端口,存放优先级为一级的信元的包头信息,第二个虚拟输出队列的输出端口为第二输出端口,存放优先级为二级的信元的包头信息,第三个虚拟输出队列的输出端口为第三输出端口,存放优先级为一级的信元的包头信息,那么,就将需要被发送到第二输出端口且优先级为一级的信元的包头信息放入第一个虚拟输出队列中,将需要被发送到第二输出端口且优先级为二级的信元的包头信息放入第二个虚拟输出队列中,将需要被发送到第三输出端口且优先级为一级的信元的包头信息放入第三个虚拟输出队列中。
对于广播信元,由于其要发往多个输出端口,则将各信元的包头信息按照各虚拟输出队列的优先级信息进行对应放置,不与单播信元放置在同一队列中。
图3是关于虚拟输出队列VOQ的实现示意图,图3是以某一个输入端口为例,对其维护的队列进行说明,结合图3,虚拟输出队列的详细描述为:
对于单播信元来说,任意一个输入端口为每个输出端口的每种优先级信元设置一个虚拟输出队列,即FIFO,故每个输入端口共维护N*P种单播信元FIFO,其中,N为输出端口的数量,P为单播信元的优先级种类数量,例如,对于需要转发的一些信元来说,需要被发送到4个不同的输出端口,那么输出端口的数量N就是4,这些信元共有2种优先级,那么单播信元的优先级种类数量P就是2。
对于广播信元来说,任意一个输入端口为每种优先级信元设置一个FIFO,故每个输入端口共维护M种单播信元FIFO,其中,M为广播信元的优先级种类数量,例如,对于需要转发的一些信元来说,其中包含的广播信元的优先级共有3种,那么广播信元的优先级种类数量M就是3。
因此,每个输入端口共维护N*P+M个虚拟输出队列,如果有W个输入端口,那么整个系统中共有W(N*P+M)个虚拟输出队列,每个FIFO的深度为双口RAM的深度N。
S26,判断各虚拟输出队列对应的输入端口和输出端口是否空闲,当输入端口和输出端口均空闲时,生成仲裁请求。
需要说明的是,在每个输出端口,都对应地设置了仲裁器,共维护P+M个指针,用于对多个仲裁请求进行授权,在每个输入端口,也都对应地设置了仲裁器,用于当同时有多个仲裁请求被授权时,进行调度,确保同时只有一个仲裁请求接收授权。
应当理解,只有在FIFO为非空时,才会执行本步骤,即当FIFO中存在某个信元的包头信息时,才会判断该FIFO对应的输入端口和输出端口是否都空闲,每当有某个FIFO非空,且其对应的输入端口和输出端口都空闲时,就会产生1bit的仲裁请求,例如,1可以代表有发送请求,0可以代表无发送请求。
具体地,步骤S26可以细化为以下几个步骤:
S261,当在虚拟输出队列中排队的信元为单播信元时,判断虚拟输出队列对应的输入端口和输出端口是否空闲,当输入端口和输出端口均空闲时,生成仲裁请求;
S262,当在虚拟输出队列中排队的信元为广播信元时,判断虚拟输出队列对应的输入端口和全部输出端口是否空闲,当输入端口和全部输出端口均空闲时,生成仲裁请求,仲裁请求包含有对应信元的优先级信息。
S27,判断仲裁请求的数量,当仲裁请求的数量大于或等于两个时,对仲裁请求进行选择授权,再对被授权的仲裁请求对应的信元进行调度,例如,当只有1个仲裁请求时,无需调度,直接对该请求进行授权即可,因为当只有1个仲裁请求时,该请求的优先级必然最大,这里的调度方法可以被称为vp-RRM算法(variable priority-Round Robin Matching,变长多优先级轮询调度算法),对优先级高的仲裁请求进行授权,进而优先转发该请求对应的信元,即完成了多优先级变长信元的调度和转发。
如图4所示,为本实施例提供的一种根据仲裁请求调度信元的方法,结合图4,步骤S27可以细化为以下几个步骤:
S271,当仲裁请求的数量大于或等于两个时,比较各仲裁请求的优先级,得到优先级最高的仲裁请求;
S272,对优先级最高的仲裁请求的数量进行判断,当优先级最高的仲裁请求的数量为一个时,对优先级最高的仲裁请求进行授权;当优先级最高的仲裁请求的数量为多个时,会根据本优先级的轮询指针,按照轮询的规则对优先级最高的仲裁请求进行授权,同时,轮询指针更新;
S273,判断是否有多个仲裁请求同时被授权,当有多个仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的被授权仲裁请求;
S274,对优先级最高的被授权仲裁请求的数量进行判断,当优先级最高的被授权仲裁请求的数量为一个时,接受对优先级最高的被授权仲裁请求的授权;当优先级最高的被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的被授权仲裁请求的授权;
S275,根据授权结果确定目标信元,并生成调度目标信元的使能信号;
S276,根据使能信号调出信元并发送到目标输出端口。
下面以一个实例对仲裁请求的授权过程进行说明。
首先考虑单播信元,假设1.在某时刻,输入端口1产生了一个去往输出端口3的优先级为1的仲裁请求,输入端口2产生了一个去往输出端口3的优先级为2的仲裁请求(假设优先级1>2),那么输出端口3的仲裁器此时就会接受输入端口1的那个优先级为1的发送请求,对其进行授权,而屏蔽掉输入端口2的优先级为2的发送请求。
2.在某时刻,输入端口1产生了一个去往输出端口3优先级为1的仲裁请求,输入端口2也产生了一个去往输出端口3的优先级为1的仲裁请求,输入端口4产生了一个去往输出端口3的优先级为2的仲裁请求,那么输出端口仲裁器就会从这两个优先级为1的仲裁请求中按照轮询的规则进行授权,而屏蔽掉输入端口4的优先级为2的发送请求。
3.在某时刻,在经过输出端口仲裁器的授权后,共有3个已授权的仲裁请求,分别是输入端口1产生的去往输出端口1优先级为1的请求,以及输入端口1产生的去往输出端口2优先级为1的请求,以及输入端口1产生的去往输出端口3优先级为2的请求,那么输入端口仲裁器就会从这两个优先级为1的已授权的仲裁请求中按照轮询的规则接受授权,而屏蔽掉输入端口1的优先级为2的请求。
再考虑广播信元,广播信元的发送可以做以下两种处理:当某个输入端口有广播信元发送时,只要某个输出端口为空闲,就会产生去往该输出端口的发送请求;或者,只有当所有的输出端口都空闲时,才会同时产生去往所有输出端口的发送请求,需要说明的是,广播信元的优先级都高于单播信元。
在经过了通过输出端口仲裁器对仲裁请求授权,以及通过输入端口仲裁器对已授权的仲裁请求接受授权的过程,就建立了一组输入端口与输出端口之间的连接,即信元转发的通道。
当连接建立后,就可以根据使能信号调出信元并发送到目标输出端口,具体地,步骤S276可以细化为以下几个步骤:
步骤S2761,根据使能信号读取虚拟输出队列中目标信元的包头信息和首地址,并从包头信息得到目标信元的目标输出端口;
步骤S2762,根据首地址找到存储在存储器分区中的目标信元,通过RAM的B端口进行输出,发送到目标输出端口。
需要说明的是,上述调度过程可以通过FPGA(Field-Programmable Gate Array,现场可编程门阵列)实现,可以使用VHDL语言(Very-High-Speed Integrated CircuitHardware Description Language,超高速集成电路硬件描述语言)进行代码编写。
如图5所示,为本发明另一实施例提供的一种支持变长信元的调度系统的结构框架图,整个调度系统的对外接口为axi4-stream接口,是一种轻量化的数据流接口,无地址线,只有数据线及必要的控制线。其master、slave端分别对应某个端口的输出和输入具体地,该调度系统包括以下几个部分:
多个输入端口10,用于获取待发送的多个信元。
输入端口缓存模块20,包括多个存储器201,存储器201的数量与输入端口10数量相同,每个存储器201对应一个输入端口10,用于分别提取各信元的包头信息,将各信元依次存储在存储器201中有空余空间的分区中,并分别提取各信元所在分区的首地址,并从各信元的包头信息中提取得到各信元的优先级信息、目标端口信息和信元类型。
虚拟输出队列组织模块30,用于将各信元的包头信息放入对应的虚拟输出队列中排队,并判断各虚拟输出队列对应的输入端口10和输出端口是否空闲,当输入端口10和输出端口均空闲时,生成仲裁请求。
优选地,当虚拟输出队列组织模块30将各信元的包头信息放入对应的虚拟输出队列中排队之前,还会判断各信元的信元类型,当信元为单播信元时,将优先级信息相同且输出端口信息相同的各单播信元的包头信息和对应的首地址放入同一虚拟输出队列中排队,并当信元为广播信元时,将优先级信息相同的各广播信元的包头信息和对应的首地址放入同一虚拟输出队列中排队。
当在虚拟输出队列中排队的信元为单播信元时,判断虚拟输出队列对应的输入端口10和输出端口是否空闲,当输入端口10和输出端口均空闲时,生成仲裁请求;
并当在虚拟输出队列中排队的信元为广播信元时,判断虚拟输出队列对应的输入端口10和全部输出端口是否空闲,当输入端口10和全部输出端口均空闲时,生成仲裁请求。
调度器40,用于当仲裁请求的数量大于或等于两个时,对仲裁请求进行选择授权,再对被授权的仲裁请求对应的信元进行调度。
优选地,调度器40具体包括:
设置在输出端口的输出端口调度器401,输出端口调度器401的数量与输出端口的数量相同,一个输出端口与一个输出端口调度器401对应,输出端口调度器401用于当仲裁请求的数量大于或等于两个时,比较各仲裁请求的优先级,得到优先级最高的仲裁请求,并对优先级最高的仲裁请求的数量进行判断,当优先级最高的仲裁请求的数量为一个时,对优先级最高的仲裁请求进行授权;当优先级最高的仲裁请求的数量为多个时,按照轮询的规则对优先级最高的仲裁请求进行授权。
设置在输入端口10的输入端口调度器402,输入端口调度器402的数量与输入端口10的数量相同,一个输入端口10与一个输入端口调度器402对应,输入端口调度器402用于判断是否有多个仲裁请求同时被授权,当有多个仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的被授权仲裁请求,并对优先级最高的被授权仲裁请求的数量进行判断,当优先级最高的被授权仲裁请求的数量为一个时,接受对优先级最高的被授权仲裁请求的授权;当优先级最高的被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的被授权仲裁请求的授权。
使能信号生成单元403,用于根据授权结果确定目标信元,并生成调度目标信元的使能信号。
信元调取单元404,用于根据使能信号调出信元并发送到目标输出端口。
优选地,信元调取单元404具体用于根据使能信号读取虚拟输出队列中目标信元的包头信息和首地址,并从包头信息得到目标信元的目标输出端口,并根据首地址找到存储在存储器201分区中的目标信元,发送到目标输出端口。
多个输出端口50,用于输出经过调度器40调度后的信元。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:RAM、ROM、FLASH、DDR、FIFO、SDRAM等电路存储系统。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种支持变长信元的调度方法,其特征在于,包括以下步骤:
步骤1,获取待发送的多个信元;
步骤2,分别提取各所述信元的包头信息;
步骤3,将各所述信元的包头信息放入对应的虚拟输出队列中排队,将各所述信元的包头信息按照各所述虚拟输出队列的输出端口和优先级信息进行对应放置;
步骤4,判断各所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
步骤5,判断所述仲裁请求的数量,当所述仲裁请求的数量大于或等于两个时,对所述仲裁请求进行选择授权,再对被授权的所述仲裁请求对应的信元进行调度。
2.根据权利要求1所述的调度方法,其特征在于,在步骤2之前,还包括:
将各所述信元依次存储在存储器中有空余空间的分区中,并分别提取各所述信元所在分区的首地址;
在步骤2之后,还包括:
从各所述信元的包头信息中提取得到各所述信元的优先级信息、目标端口信息和信元类型;
步骤3中,具体包括:
步骤3.1,判断各所述信元的信元类型,当所述信元为单播信元时,将所述优先级信息相同且所述输出端口信息相同的各所述单播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队;
步骤3.2,当所述信元为广播信元时,将所述优先级信息相同的各所述广播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队。
3.根据权利要求2所述的调度方法,其特征在于,步骤4中,具体包括:
步骤4.1,当在所述虚拟输出队列中排队的信元为单播信元时,判断所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
步骤4.2,当在所述虚拟输出队列中排队的信元为广播信元时,判断所述虚拟输出队列对应的输入端口和全部输出端口是否空闲,当所述输入端口和全部所述输出端口均空闲时,生成仲裁请求。
4.根据权利要求2或3所述的调度方法,其特征在于,所述仲裁请求包含有对应信元的优先级信息,步骤5中,具体包括:
步骤5.1,当所述仲裁请求的数量大于或等于两个时,比较各所述仲裁请求的优先级,得到优先级最高的仲裁请求;
步骤5.2,对所述优先级最高的仲裁请求的数量进行判断,当所述优先级最高的仲裁请求的数量为一个时,对所述优先级最高的仲裁请求进行授权;当所述优先级最高的仲裁请求的数量为多个时,按照轮询的规则对所述优先级最高的仲裁请求进行授权;
步骤5.3,判断是否有多个所述仲裁请求同时被授权,当有多个所述仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的所述被授权仲裁请求;
步骤5.4,对优先级最高的所述被授权仲裁请求的数量进行判断,当优先级最高的所述被授权仲裁请求的数量为一个时,接受对优先级最高的所述被授权仲裁请求的授权;当优先级最高的所述被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的所述被授权仲裁请求的授权;
步骤5.5,根据授权结果确定目标信元,并生成调度所述目标信元的使能信号;
步骤5.6,根据所述使能信号调出所述信元并发送到目标输出端口。
5.根据权利要求4所述的调度方法,其特征在于,步骤5.6中,具体包括:
步骤5.6.1,根据所述使能信号读取所述虚拟输出队列中所述目标信元的包头信息和首地址,并从所述包头信息得到所述目标信元的目标输出端口;
步骤5.6.2,根据所述首地址找到存储在存储器分区中的所述目标信元,发送到所述目标输出端口。
6.一种支持变长信元的调度系统,其特征在于,包括:
输入端口,用于获取待发送的多个信元;
输入端口缓存模块,用于分别提取各所述信元的包头信息;
虚拟输出队列组织模块,用于将各所述信元的包头信息放入对应的虚拟输出队列中排队,将各所述信元的包头信息按照各所述虚拟输出队列的输出端口和优先级信息进行对应放置,并判断各所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
调度器,用于当所述仲裁请求的数量大于或等于两个时,对所述仲裁请求进行选择授权,再对被授权的所述仲裁请求对应的信元进行调度。
7.根据权利要求6所述的调度系统,其特征在于,所述输入端口缓存模块还用于将各所述信元依次存储在存储器中有空余空间的分区中,并分别提取各所述信元所在分区的首地址,并从各所述信元的包头信息中提取得到各所述信元的优先级信息、目标端口信息和信元类型;
所述虚拟输出队列组织模块还用于判断各所述信元的信元类型,当所述信元为单播信元时,将所述优先级信息相同且所述输出端口信息相同的各所述单播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队;
并当所述信元为广播信元时,将所述优先级信息相同的各所述广播信元的包头信息和对应的首地址放入同一所述虚拟输出队列中排队。
8.根据权利要求7所述的调度系统,其特征在于,所述虚拟输出队列组织模块还用于当在所述虚拟输出队列中排队的信元为单播信元时,判断所述虚拟输出队列对应的输入端口和输出端口是否空闲,当所述输入端口和所述输出端口均空闲时,生成仲裁请求;
并当在所述虚拟输出队列中排队的信元为广播信元时,判断所述虚拟输出队列对应的输入端口和全部输出端口是否空闲,当所述输入端口和全部所述输出端口均空闲时,生成仲裁请求。
9.根据权利要求7或8所述的调度系统,其特征在于,所述仲裁请求包含有对应信元的优先级信息,所述调度器具体包括:
输出端口调度器,用于当所述仲裁请求的数量大于或等于两个时,比较各所述仲裁请求的优先级,得到优先级最高的仲裁请求,并对所述优先级最高的仲裁请求的数量进行判断,当所述优先级最高的仲裁请求的数量为一个时,对所述优先级最高的仲裁请求进行授权;当所述优先级最高的仲裁请求的数量为多个时,按照轮询的规则对所述优先级最高的仲裁请求进行授权;
输入端口调度器,用于判断是否有多个所述仲裁请求同时被授权,当有多个所述仲裁请求同时被授权时,比较各被授权仲裁请求的优先级,得到优先级最高的所述被授权仲裁请求,并对优先级最高的所述被授权仲裁请求的数量进行判断,当优先级最高的所述被授权仲裁请求的数量为一个时,接受对优先级最高的所述被授权仲裁请求的授权;当优先级最高的所述被授权仲裁请求的数量为多个时,按照轮询的规则接受对优先级最高的所述被授权仲裁请求的授权;
使能信号生成单元,用于根据授权结果确定目标信元,并生成调度所述目标信元的使能信号;
信元调取单元,用于根据所述使能信号调出所述信元并发送到目标输出端口。
10.根据权利要求9所述的调度系统,其特征在于,所述信元调取单元具体用于根据所述使能信号读取所述虚拟输出队列中所述目标信元的包头信息和首地址,并从所述包头信息得到所述目标信元的目标输出端口,并根据所述首地址找到存储在存储器分区中的所述目标信元,发送到所述目标输出端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581324.2A CN107483405B (zh) | 2017-07-17 | 2017-07-17 | 一种支持变长信元的调度方法和调度系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710581324.2A CN107483405B (zh) | 2017-07-17 | 2017-07-17 | 一种支持变长信元的调度方法和调度系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107483405A CN107483405A (zh) | 2017-12-15 |
CN107483405B true CN107483405B (zh) | 2020-01-31 |
Family
ID=60595115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710581324.2A Active CN107483405B (zh) | 2017-07-17 | 2017-07-17 | 一种支持变长信元的调度方法和调度系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107483405B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495400A (zh) * | 2018-10-18 | 2019-03-19 | 中国航空无线电电子研究所 | 光纤网络交换机 |
CN111464461B (zh) * | 2019-01-22 | 2022-05-03 | 清华大学 | 用于交换机的优先级调度方法和装置 |
CN112311702B (zh) * | 2020-12-30 | 2021-04-06 | 北京国科天迅科技有限公司 | Fc交换机调度方法、装置、电子设备及存储介质 |
CN117614905B (zh) * | 2023-11-29 | 2024-06-04 | 无锡众星微系统技术有限公司 | 一种交叉开关调度方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1819523A (zh) * | 2006-02-20 | 2006-08-16 | 中国人民解放军国防科学技术大学 | 并行交换开关设计方法 |
CN1972239A (zh) * | 2005-11-24 | 2007-05-30 | 武汉烽火网络有限责任公司 | 以太网交换缓存及调度的方法和装置 |
CN101026556A (zh) * | 2007-01-10 | 2007-08-29 | 华为技术有限公司 | 一种支持服务质量的仲裁方法及装置 |
CN104333516A (zh) * | 2014-10-20 | 2015-02-04 | 东南大学成贤学院 | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 |
CN104717160A (zh) * | 2013-12-17 | 2015-06-17 | 华为技术有限公司 | 交换机及调度算法 |
CN105897621A (zh) * | 2016-07-01 | 2016-08-24 | 中国航空无线电电子研究所 | 基于cioq结构的千兆afdx交换机及其交换方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7292580B2 (en) * | 2002-06-10 | 2007-11-06 | Lsi Corporation | Method and system for guaranteeing quality of service in a multi-plane cell switch |
US8130649B2 (en) * | 2007-10-18 | 2012-03-06 | Alcatel Lucent | Ingress traffic flow control in a data communications system |
-
2017
- 2017-07-17 CN CN201710581324.2A patent/CN107483405B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1972239A (zh) * | 2005-11-24 | 2007-05-30 | 武汉烽火网络有限责任公司 | 以太网交换缓存及调度的方法和装置 |
CN1819523A (zh) * | 2006-02-20 | 2006-08-16 | 中国人民解放军国防科学技术大学 | 并行交换开关设计方法 |
CN101026556A (zh) * | 2007-01-10 | 2007-08-29 | 华为技术有限公司 | 一种支持服务质量的仲裁方法及装置 |
CN104717160A (zh) * | 2013-12-17 | 2015-06-17 | 华为技术有限公司 | 交换机及调度算法 |
CN104333516A (zh) * | 2014-10-20 | 2015-02-04 | 东南大学成贤学院 | 用于组合输入交叉点缓存交换结构的旋转轮训调度方法 |
CN105897621A (zh) * | 2016-07-01 | 2016-08-24 | 中国航空无线电电子研究所 | 基于cioq结构的千兆afdx交换机及其交换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107483405A (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107483405B (zh) | 一种支持变长信元的调度方法和调度系统 | |
US8995456B2 (en) | Space-space-memory (SSM) Clos-network packet switch | |
US8135004B2 (en) | Multi-plane cell switch fabric system | |
EP2613479A1 (en) | Relay device | |
KR102082020B1 (ko) | 다수의 링크된 메모리 리스트들을 사용하기 위한 방법 및 장치 | |
US20140160935A1 (en) | Method, apparatus and system for packet reassembly and reordering | |
US8149708B2 (en) | Dynamically switching streams of packets among dedicated and shared queues | |
US20120155495A1 (en) | Packet assembly module for multi-core, multi-thread network processors | |
EP3367622B1 (en) | Data processing apparatus | |
US20100098104A1 (en) | Switching device | |
US20170046296A1 (en) | Data processing apparatus and terminal | |
US7142555B2 (en) | Method and apparatus for switching data using parallel switching elements | |
US11677676B1 (en) | Shared traffic manager | |
CN113110943B (zh) | 软件定义交换结构及基于该结构的数据交换方法 | |
US20230283578A1 (en) | Method for forwarding data packet, electronic device, and storage medium for the same | |
US9608918B2 (en) | Enabling concurrent operation of tail-drop and priority-based flow control in network devices | |
US8018958B1 (en) | System and method for fair shared de-queue and drop arbitration in a buffer | |
US8040907B2 (en) | Switching method | |
CN114257557B (zh) | 一种数据分组交换系统和方法 | |
US10846225B1 (en) | Buffer read optimizations in a network device | |
US20140269298A1 (en) | Network Processor and Method for Processing Packet Switching in Network Switching System | |
JP2022523195A (ja) | メモリ管理方法及び装置 | |
US8976802B2 (en) | Prediction-based switch allocator | |
CN113010464A (zh) | 数据处理装置及设备 | |
US10742558B1 (en) | Traffic manager resource sharing |
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 |