CN107005488A - 通用队列 - Google Patents
通用队列 Download PDFInfo
- Publication number
- CN107005488A CN107005488A CN201480083565.9A CN201480083565A CN107005488A CN 107005488 A CN107005488 A CN 107005488A CN 201480083565 A CN201480083565 A CN 201480083565A CN 107005488 A CN107005488 A CN 107005488A
- Authority
- CN
- China
- Prior art keywords
- packet
- vlq
- output port
- management device
- queue management
- 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.)
- Pending
Links
Classifications
-
- 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/6205—Arrangements for avoiding head of line blocking
-
- 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/621—Individual queue per connection or flow, e.g. per VC
-
- 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/622—Queue service order
- H04L47/6235—Variable service order
-
- 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/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9036—Common buffer combined with individual queues
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文描述了与将数据分组放置于交换机的一个或多个队列相关联的装置、方法和存储介质。在实施例中,交换机可以包括多个虚拟通道(VL)队列(VLQ)以及多个通用队列(GQ)。队列管理器可以被配置为选择性地将特定VL的分组放置于对应的VLQ或GQ中。可描述和/或请求保护其他实施例。
Description
技术领域
本公开涉及网络的领域。更具体地,本公开涉及用于交换机中分组的数据队列组织和分配。
背景技术
本文提供的背景描述是为了大体呈现本公开的上下文的目的。除非本文另有说明,否则本节中描述的材料不是本申请中权利要求书的现有技术,并且不是通过包含在本节中而被认为现有技术。
传统的输入入队交换机可由于队头(HOL)阻塞经历性能问题。HOL阻塞可以指的一种情况,其中是由于与交换机的一个或多个资源相关的冲突而使数据队列的头部处的数据分组不能被服务。因为分组不能被服务,所以分组可能不会被传送出队列。结果,被阻塞的分组可能阻止队列中其后面的任何分组的服务,即使这些分组不具有相同的资源冲突。
附图说明
通过结合附图的以下详细描述将容易理解实施例。为了有助于说明,相同的标号表示相同的结构元件。实施例在附图的诸图中以示例而非限制的方式示出。
图1示出了根据各种实施例的包括虚拟通道队列(VLQ)及通用队列(GQ)的交换机的框图。
图2示出了根据各种实施例的用于将分组放置于VLQ或GQ中的过程。
图3示出了根据各种实施例的用于将分组放置于VLQ或GQ中的替代过程。
图4示出了根据各种实施例的用于将分组放置于VLQ或GQ中的替代过程。
图5示出了根据各种实施例的用于将分组放置于VLQ或GQ中的替代过程。
图6示出了根据各种实施例的适用于实现本公开的各个方面的示例性计算机系统。
图7示出了根据各种实施例的具有用于实现参考图2-5描述的过程的指令的存储介质。
具体实施方式
本文描述了与交换机的一个或多个队列中的分组放置相关联的装置、方法和存储介质。在实施例中,交换机可以包括多个虚拟通道(VL)队列(VLQ)和多个通用队列(GQ)。队列管理器可被配置为选择性地将特定VL中的分组放置于相应的VLQ或GQ中。正如本文所使用的,术语“在VL”或“在VL内”可以指代一种配置,其中分组正在使用一个或多个可用VL中的一个VL的资源以行进通过交换机。在这种情况下,VL可以被称为“分组中的VL”或“分组的VL”。上述短语的其他变体可以被使用并被理解为一般地对应于所描述的语法概念。
在一些实施例中,如下所述,分组可以是自适应或确定性分组。在一些实施例中,交换机可以包括10个VLQ和7个GQ。在一些实施例中,分组可以基于分组去往的输出端口被放置于VLQ或GQ中。在一些实施例中,如果分组被放置于GQ中,则可以针对分组所在的VL和分组去往的输出端口分配GQ。
在下面的详细描述中,参考形成本说明书一部分的附图,其中相同的附图标记始终表示相同的部分,并且通过说明的方式示出可以实践的实施例。应当理解,在不脱离本公开的范围的情况下,可以使用其他实施例并且可以进行结构或逻辑改变。因此,以下详细描述不应被认为是限制性的,并且实施例的范围由所附权利要求及其等同物限定。
在所附的说明书中公开了本公开的各方面。可以在不脱离本公开的精神或范围内,设计本公开及其等同物的替代实施例。应当注意的是,下面公开的相似的元件在附图中由相似的附图标记表示。
可以以对于理解所要求保护的主题最有帮助的方式将各种操作依次描述为多个离散动作或操作。然而,描述的顺序不应被解释为暗指这些操作必然是依赖于顺序的。特别地,这些操作可不按照呈现的顺序执行。所描述的操作可以以与所描述的实施例不相同的顺序执行。在另外的实施例中,各种另外的操作可以被执行和/或所描述的操作可以被忽略。
为了本公开的目的,短语“A和/或B”意味着(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”意味着(A)、(B)、(C)、(A和B)、(A和C)、(B和C)、或(A、B和C)。
该描述可以使用短语“在实施例中”或“在多个实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。进一步,关于本公开的实施例中使用的术语“包括”、“包含”、“具有”等是同义的。
正如本文所使用的,术语“模块”或“电路”可以指以下项的部分或包括以下项:执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享、专用或组)和/或存储器(共享、专用或组)、组合逻辑电路和/或提供所述功能的其它适合的硬件组件。在一些实施例中,可以在一个或多个软件或固件模块中实现电子设备电路,或者由一个或多个软件或固件模块实现与电路相关联的功能。
在瓦片矩阵交换机(tile-matrix switch)中,端口可以以行和列布置。具体地,在输入端口处,位于队列前方的去往拥挤的列的数据分组可阻塞队列后方的分组,即使被阻塞的分组去往为非拥挤的列。在下面描述的实施例中,术语“输出端口”可以一般地用于指代列、列队列、虚拟列队列(VCQ)、交换机的输出端口、交换机的输出队列或交换机内的任何中间入队点。去往具体的输出端口的队列中的数据分组可能正在阻塞队列中的其他数据分组的情况可以称为队头(HOL)阻塞。
交换机的VL可需要单独的队列。通常,VL可以指定通过具有独立或专用资源的交换机具体的路由。换言之,VL可以在同一物理链路上支持多个逻辑信道。VL可以提供避免HOL阻塞并支持服务质量(QoS)的机制。在多个实施例中,VL可以具有独立或专用资源,以便如果与具体的VL相关联的一个虚拟通道队列(VLQ)被堵塞或阻塞,则另一个VL中的数据分组不受影响。一般地,VL中的数据分组可以被存储或被缓冲到VLQ中。
为了防止HOL阻塞,可以使用VCQ。具体地,去往不同列或输出端口的分组可被存储在单独的VCQ中。VCQ可能类似于更常见的虚拟输出队列(VOQ)。通常,每个输入端口或输入队列可具有用于每个VL的子队列,以允许每个VL中的分组进行,而不管其他VL中的分组遇到的拥塞。具体地,VOQ可以描述配置,其中每个输入端口或输入队列具有在每个VL子队列内的用于每个输出端口的子队列。对于去往每个输出端口的数据分组可能需要这些子队列,以避免HOL阻塞。
大型基数交换机,例如具有大量输入/输出端口的交换机,可以包括相对大量的VL。在这些大型基数交换机中,实现支持如上所述的VCQ或VOQ所需的队列和/或子队列的数目可能是不切实际的。具体地,如果存在大量的输入/输出端口以及大量的VL,则交换机可以包括大量用于每个VL的VCQ或VOQ。在物理空间和管理资源要求方面,相对较大数量的队列和/或子队列可能变得过大。
本公开的实施例可以涉及一种或多种动态分配的GQ的使用,其可以提供传统上与VCQ相关联的优点,同时减少交换机中的队列数量。如上所述,图1可以描述具有一个或多个VLQ以及一个或多个GQ的交换机100。具体地,如图1所示,交换机100可以具有范围从VLQ 0到VLQ 9(在此统称为“VLQ”)的总共10个VLQ。此外,交换机100可以具有范围从GQ 0到GQ 6(在此统称为“GQ”)的总共7个GQ。
交换机100还可以包括多个输入端口,尽管在图1中仅示出了单个输入端口140作为示例。队列管理器105可以位于输入端口140和多个VLQ或多个GQ之间。在多个实施例中,队列管理器105可以包括标识电路110、管理电路115和/或放置电路120。队列管理器105可以被配置为作为多路复用器并将在输入端口140上已接收的数据分组放置于多个VLQ或多个GQ中的一个或多个更多中。在其他实施例中,队列管理器可以与多路复用器分离,但通信地耦合到该多路复用器,该多路复用器被配置为将从输入端口140接收的数据分组放置到多个VLQ或多个GQ中的一个或多个。正如本文所使用的,“通信地耦合”可以指示两个元件可以直接地或通过中间的逻辑块或电路彼此通信。在多个实施例中,识别电路110、管理电路115和/或放置电路120中的一个或多个可以是多路复用器的元件和/或单独队列管理器的元件。在实施例中,识别电路110可以被配置为识别在多个VL中的VL中并且去往输出端口的第一分组。管理电路115可以被配置为识别与VL相关联的VL队列是否为空。放置电路120可以进一步被配置为如果VLQ为空,则将第一数据分组放置于该VLQ中。放置电路120还可以被配置为如果VLQ不为空,则将第一数据分组放置于多个GQ的通用队列(GQ)中。在一些实施例中,识别电路110、管理电路115和/或放置电路120中的一个或多个可以组合成单个电路,而在一些实施例中,识别电路110、管理电路115和/或放置电路120中的一个或多个可以进一步细分为交换机100和/或管理队列105中单独的电路单元或与交换机100和/或管理队列105耦合的单独的电路单元。
在实施例中,队列管理器105、VLQ和GQ可以是输入块145。具体地,如图1所示,输入块145可以与输入端口140相关联。在实施例中,交换机100可以包括多个输入端口,交换机100还可以包括诸如输入块145的多个输入块,其中多个输入块中的相应输入块与交换机100的多个输入端口中的相应的输入端口相关联。
交换机100可以进一步包括一个或多个输出端口。如图1所示,交换机100可以包括从输出端口0到输出端口m-1(在此统称为“m个输出端口”)的m个输出端口。如上所述,输出端口可以指列、列队列、VCQ、交换机100的输出端口,交换机100的输出队列或交换机100内的任何中间队列点。为了完整性,并且在不失一般性的情况下,在图1中描绘了与输出端口1相关的不同的输出端口队列155。在多个实施例中,如上所述,其他的输出端口可以包括或可以是诸如输出端口队列155的输出端口队列。交叉式开关125可以将输入块145耦合到m个输出端口,以便一个或多个数据分组可以从输入块145传送到m个输出端口之一。在实施例中,多路复用器(“MUX”)150可以位于输入块145和交叉式开关125之间。在实施例中,MUX150可被配置为从输入块145的VLQ或GQ接收一个或多个分组,并且将分组传送到交叉式开关125的输入端。
应当理解的是,n个输出端口、m个输出端口、多个VLQ或多个GQ(例如,输入端口0、输出端口1、VLQ 0、VLQ 9等)的具体的标记是任意的,并且在实施例中可以根据诸如“1-10”、“A-J”等不同的语法来标记多个输入端口、多个输出端口、多个GQ或多个VLQ。另外,尽管示出了10个VLQ和7个GQ,但是在其他实施例中,交换机100可以包括或多或少VLQ或GQ。例如,在一些实施例中,交换机100可以包括16个VLQ和8个GQ。在其他实施例中,如下所述,交换机可以不包括VLQ。
在多个实施例中,每个VLQ和GQ可以被配置为保持一个或多个数据分组。具体参考图1的VLQ 0,VLQ 0可以被配置为保持具有分组的报头135的数据分组130。数据分组130可以包括数据有效载荷,而分组的报头135可以包括与数据分组130的VL、数据分组130的去往的输出端口相关的信息或其他信息。在一些实施例中,VLQ和GQ可以被分解成微片,其可以是队列的固定大小的单元。诸如数据分组130的数据分组和/或分组的报头135可以作为一个或多个微片存储在VLQ或GQ中。
如上所述,VLQ可以与交换机100的具体的VL相关联。GQ可以不与交换机100的特定VL或输出端口相关联。因此,多个VLQ可以用于保证交换机100的每个VL具有其自己的队列,该队列可用于维持无死锁路由。另外的GQ可以用于以与上述VCQ过程类似的方式将业务分离到不同的输出端口。在多个实施例中,GQ中的每个可以被动态地分配,并且可以用于使特定VL的去往特定输出端口的数据分组入队。
将如下面进一步详细描述的那样,GQ的各种分配/解除分配策略可以用于进一步优化交换机100的性能。此外,通用性的水平还可以通过GQ进行调整以进一步在性能与复杂性之间权衡。例如,在上述相对受限的实施例中,GQ可以仅支持或被分配用于单个输出端口及单个VL。在更通用的实施例中,GQ能够支持或被分配用于多个输出端口和单个VL。在极度不受限的实施例中,交换机100可以不包括VLQ,并且交换机100的所有队列都可以是GQ。
在一些实施例中,用于将数据分组放置于VLQ或GQ的队列策略对于确定性分组不同于对于自适应分组。正如本文所使用的,确定性分组可以是根据确定性路由协议路由的数据分组。具体地,对于确定性业务,可以通过交换机100的中间节点路由数据分组,所述中间节点可以由分组的报头135中的熵字段有效地选择。自适应分组可以是根据自适应路由协议路由的数据分组。具体地,数据分组可以逐渐最低程度地路由到目的地和/或输出端口,或者非最低程度地路由到交换机的随机选择的中间节点,然后从那里最低程度地到目的地节点或输出端口。可以由队列管理器105基于交换机100的拥塞的本地视图或交换机100可耦合到的网络进行自适应选择。通常,对于确定性和自适应分组的队列策略可能不同。具体地,将确定性分组按顺序传送到具体的目的地可能是有益的,本文中过程称为“排序”。因此,确保相同VL的并且去往相同输出端口的分组都使用相同的队列可能是有益的。相比之下,自适应分组可能不受排序要求的限制,因此它们可以被放置于可用于自适应分组的VL的任何队列中,而不考虑自适应分组的所去往的输出端口。
对于特定VL的确定性数据分组,单播路由表(URT)查找可能已经由队列管理器105执行,并且分组的所去往的输出端口可能已被识别。基于输出端口,队列管理器105可以识别是否将分组放置于VLQ或GQ中。
多个GQ中的每个GQ可以与特定VL和/或特定输出端口相关联或被分配用于特定VL和/或特定输出端口。一旦GQ被分配用于VL和输出端口,特定VL的并且去往该输出端口的输入数据分组可以被放入已分配的GQ中以维持正确的排序。例如,经由交叉式开关125将在已分配的GQ中的数据分组中的一个或多个数据分组发送到数据分组的去往的输出端口时,GQ可以被解除分配并可用于对不同VL/输出端口对的分配。在一些实施例中,直至来自GQ的所有分组被传送后,GQ才可能被解除分配。如上所述,在一些较少限制的实施例中,GQ能够被分配用于VL和多个输出端口。
在一些实施例中,VLQ能够服务于以针对该VL的所有输出端口为目标的分组。在一些实施例中,每个VLQ可以包括或包含输出端口计数器,该输出端口计数器可用于跟踪当前在VLQ内的确定性分组的数量。在一些实施例中,输出端口计数器可以用于识别VLQ是否保持去往具体输出端口的一个或多个数据分组。具体地,输出端口计数器中的每个输出端口计数器可以与交换机100的m个输出端口中的相应输出端口相关联,并且输出端口计数器中的每个输出端口计数器可以表明VLQ中的去往的输出端口中的相应输出端口的分组的数量。输出端口计数器可以是可用的,因为如果GQ被分配用于特定输出端口和特定VL,则为了正确排序,VLQ不期望还针对该输出端口保持确定性分组。
在高水平上,针对VLx的去往的输出端口m(在本文中称为m或Colm)的输入确定性分组的队列策略可以如下:
1)如果VLQx(例如,与VLx相关联的VLQ)当前保持去往列m的其他确定性分组,则输入分组可以被放置到VLQx中。例如,可用“1”的值,递增Colm计数器,Colm计数器是跟踪VLQx中的去往Colm的分组的数量的VLQx的输出端口计数器。
2)如果当前存在分配用于VLx/colm对的GQ,则可以将确定性分组放置到当前已分配的GQ中。
3)如果(1)和(2)不为真并且GQ可用,则GQ被分配用于VLx/colm对。
对于自适应分组,可能不需要排序,并且分组可以进入任何VLQ或分配用于VL的GQ。在一些实施例中,是否将自适应分组放置于VLQ或GQ中可以基于哪个队列中具有最少数量的微片来确定。在一些实施例中,放置到VLQ中的自适应分组可能不会使得VLQ的输出端口计数器递增。然而,在一些实施例中,可以使用与GQ中的自适应分组相关的计数器。具体地说,与自适应分组相关的计数器可用于识别何时GQ仅包含自适应分组,在哪种情况下,可以将去往任何输出端口的VL的输入确定性分组放置于GQ中。
图2示出了根据各种实施例的示例过程200,该示例过程200可由诸如队列管理器105的队列管理器用于将诸如确定性数据分组的数据分组放置于VLQ或GQ中。具体地,过程200可以与VLx的去往的输出端口m的输入确定性分组相关。如上所述,在任何给定的时间,如上所述被分配的GQ可以服务于特定的VL和特定的输出端口。一旦GQ被分配用于VL/输出端口对,则该VL的并且去往该输出端口的输入分组可以全部被放置到该GQ中以维持确定性分组的适当排序。当GQ中的所有分组被发送时,GQ可以被解除分配并可用于被分配用于不同的VL/输出端口对。
最初,队列管理器105,并且具体是队列管理器105的管理电路115可以在205处识别VLQx,与VLx相关联的VLQ是否保持去往colm的其他确定性VLx分组。如果VLQx确实保持去往colm的其他VLx分组,则在235处,队列管理器105,特别是队列管理器105的放置电路120可以将数据分组放置于VLQx。在240处,队列管理器105,特别是队列管理器105的放置电路120然后可以将与colm相关联的VLQx计数器递增1。
在205处,如果队列管理器105识别出VLQx不保持去往colm的其他VLx分组,则在210处队列管理器105,特别是管理电路115然后可以识别当前GQ是否被分配用于VLx/colm对。如果GQ被分配用于VLx/colm对,则在215处队列管理器105,特别是放置电路120可以将分组放置于已识别的GQ。在实施例中,队列管理器105然后可以在245处从GQ传送分组,并且在250处对GQ解除分配,如上所述。如上所述,在实施例中,直至在GQ中的所有分组已经被传送后,才可能在250处对GQ解除分配。
在210处,如果队列管理器105识别出不存在当前分配用于VLx/colm对的另一个GQ,则队列管理器105,特别是管理电路115可以在220处识别VLQx是否为空。如果VLQx为空,则队列管理器105,特别是放置电路120可以在235处将分组放置于VLQx中,并且在240处如上所述递增VLQx计数器。
在220处,如果队列管理器105识别出VLQx不为空,则队列管理器105,特别是管理电路115可以在225处识别GQ是否可用。如果GQ不可用,则队列管理器105,特别是队列管理器105的放置电路120可以在235处将分组放置于VLQx中,并在240处如上所述递增VLQx计数器。如果GQ可用,则队列管理器105,特别是队列管理器105的放置电路120可以在230处将该分组放置于GQ,并将GQ分配用于VLx/colm对。队列管理器然后可以在245处传送来自GQ的分组并且如上所述在250处将GQ解除分配。
在一些实施例中,多个输出端口可以以与多个输出端口可以共享VLQ的方式相似的方式共享GQ。也就是说,GQ可以被分配用于VLx和多个输出端口。在该实施例中,GQ可以包括用于每个输出端口的一个或多个计数器,其可以类似于上面针对VLQ描述的输出端口计数器。GQ的输出端口计数器可用于跟踪给定输出端口的GQ中的分组的数量。在一些实施例中,也许不可能在VLQ和GQ两者中表示输出端口,因此可能不需要如上所述使得正好由VLQ使用的输出端口计数器的数量加倍或甚至增加。相反,只需简单地跟踪给定的输出端口计数器是否用于VLQ或GQ就足够了。图3示出了根据上述实施例的过程300,该过程300可以由诸如队列管理器105的队列管理器使用以将数据分组放置于VLQ或GQ中,其中多个输出端口可以共享GQ。具体地,过程300可以与VLx的去往的输出端口m的输入确定性分组(在本文中称为列m或Colm)相关。过程300的元素可以类似于过程200的类似编号的元素,因此为了清楚和简明起见,诸如队列管理器105的具体的行为者的某些细节或其他细节可以被省略。
最初,队列管理器105可以在305处识别VLQx是否保持去往colm的其他确定性VLx分组。如果VLQx确实保持去往colm的其他VLx分组,则队列管理器105可以在335处将分组放置于VLQx。队列管理器105然后可以在355处将与colm相关联的计数器递增1。在实施例中,计数器可以是VLQx的计数器,而在其他实施例中,计数器可以是可以与VLQx或GQ中的之一或两者相关联的输出端口计数器,如上所述。
如果队列管理器105在305处识别出VLQx不保持去往colm的其他VLx分组,则队列管理器105然后可以在310处识别GQ当前是否被分配用于VLx/colm对。如果GQ被分配用于VLx/colm对,则队列管理器105可以在315处将分组放置于已识别的GQ。队列管理器105,特别是队列管理器的放置电路120然后可以在365处如上所述递增计数器colm。在一些实施例中,计数器可以是GQ的计数器,而在其他实施例中,计数器可以是可以与VLQx或GQ中的一个或两者相关联的输出端口计数器,如上所述。在多个实施例中,队列管理器105然后可以在345处从GQ发送分组,并且在350处平对GQ解除分配。在实施例中,如上所述,直至GQ中的所有分组已经被发送之后,才可能在350处对GQ解除分配。
如果队列管理器105在310处识别出不存在当前分配用于VLx/colm对的另一个GQ时,则队列管理器105可以在320处识别VLQx是否为空。如果VLQx为空,则队列管理器105可以在335处可选地将分组放置于VLQx中,并在355处递增计数器,如上所述。
如果队列管理器105在320处识别出VLQx不为空,则队列管理器105可以在325处识别GQ是否可用。如果GQ可用,则队列管理器105可以在330处将该分组放置于GQ,并将GQ分配用于VLx/colm对。然后,队列管理器105可以在365处递增计数器,在345处传送来自GQ的分组并在350处对GQ解除分配,如上所述。
如果队列管理器105,特别是管理电路115在325处识别出GQ不可用,则队列管理器105,特别是放置电路120可以在360处将分组放置于与VLx相关联的VLQ或GQ中。在实施例中,在360处,分组是否被放置于VLQx中或者与VLx相关联的GQ可以基于在VLQx或GQ中的微片数量。具体地,分组可以被放置于VLQx或GQ中具有最少的微片的任何一个中。然后,队列管理器105可以在355或365处根据分组是否对应地放置到VLQx或GQ中,递增colm的计数器。如果分组被放置到GQ中,则队列管理器然后可以在345处传送来自GQ的分组,并且在350处对GQ解除分配,如上所述。
如上面关于图3的元素360描述的,过程300可以基于队列占有(即,队列中的微片的数量)在可用队列(VLQx或GQ)之间选择。在其他实施例中,可以基于队列拥塞选择VLQx或GQ。在一些实施例中,队列占用可以是队列拥塞的间接测量,而在其他实施例中,可以直接测量队列拥塞。另外,当队列中存在多于一个输出端口的分组时,可能希望识别出哪个输出端口是拥塞的源,并且在该队列中隔离该输出端口的分组。换句话说,可能希望将其他未拥塞的输出端口的未来分组移动到不同的队列中,以便已拥塞的输出端口不影响对非拥塞输出端口的分组的流。
当确定性分组到达队列的头部时,队列管理器可以执行信用检查以确定在适当的输出端口队列中是否存在可用的队列空间以开始移动分组。如果信用不可用,则路径可能被认为是拥塞的。队列管理器可以使用定时器来测量在信用可用于移动分组之前,分组在队列的头部等待的时间量。一旦信用可用,则队列管理器可以将测量的等待时间与该输出端口的先前分组的等待时间平均,以维持对输出端口的尾随平均队列的头部的等待时间。
已经在拥塞队列中的输出端口的数据分组可能会继续被放置于拥塞的队列中,即使它们不是拥塞的来源。如果输出端口计数器达到0,则与该输出端口相关联的分组的下一个到达可以被放置于比较不拥塞的队列中。对于长期拥塞而言,随着时间的推移,算法可能倾向于将与其他输出端口相关联的其他分组移出拥塞队列,并在队列中隔离该拥塞的输出端口。
图4示出了根据各种实施例的替代过程400,该替代过程400可由诸如队列管理器105的队列管理器用于将数据分组放置于VLQ或GQ中。过程400的元素可以类似于过程200或300的类似编号的元素,因此为了清楚和简明起见,诸如队列管理器105的具体的行为者或其他细节的某些细节可以被省略。
最初,队列管理器105可以在405处识别VLQx是否保持去往colm的其他确定性VLx分组。如果VLQx确实保持去往colm的其他VLx分组,则队列管理器105可以在435处将分组放置于VLQx。队列管理器105然后可以以类似于如上所述在240处递增与colm相关联的计数器的方式,在440处将与colm相关联的计数器递增1。
如果队列管理器105在405处识别出在405处VLQx不保持去往colm的其他VLx分组,则队列管理器105然后可以在410处识别GQ当前是否被分配用于VLx/colm对。如果GQ被分配用于VLx/colm对,则队列管理器105可以在415处将分组放置于已识别的GQ中。在实施例中,队列管理器105然后可以在445处传送来自GQ的分组,并且在450处对GQ解除分配,如上所述。如上所述,在一些实施例中,直到GQ中的所有分组已被发送后,GQ可能才会在450处被解除分配。
如果队列管理器105在410处识别出不存在当前被分配用于VLx/colm对的另一GQ时,则队列管理器105可以在420处识别VLQx是否为空。如果VLQx为空,则队列管理器105可以在435处将分组放置于VLQx中,并在455处递增计数器,如上所述。
如果队列管理器105在420处识别出VLQx不为空,则队列管理器105可以在425处识别GQ是否可用。如果GQ可用,则队列管理器105可以在430处将该分组放置于GQ,并将GQ分配用于VLx/colm对。然后,队列管理器105可以在445处传送来自GQ的分组,并在450处将GQ解除分配,如上所述。
如果队列管理器105在425识别出GQ不可用,则队列管理器105,特别是放置电路420可以在470处将分组放置于VLQx或与VLx相关联的GQ中。在实施例中,在470处,分组是否放置被在VLQx中或与VLx相关联的GQ可以基于VLQx或GQ是否具有最短的等待时间,如上所述。
虽然上面描述了针对确定性分组的放置的某些过程200、300和400,但是在某些实施例中,针对自适应分组,可以执行类似的过程或过程200、300和400中的元素。在一些实施例中,可以组合某些过程,例如可以在过程400中使用关于过程300描述的GQ计数器。在一些实施例中,过程的某些元素可以按照不同于图2、3或4所描述的顺序被切换或被执行。例如,在一些实施例中,元素210可以在元素205之前执行。在一些实施例中,可以对各种图2、3或4所示的内容执行某些附加步骤。例如,在一些实施例中,如果分组在470处被放置于VLQx中,则计数器可以在440处递增。所描述的过程的其它变化或修改也许是可能的,尽管这里没有具体列举或描述。在一些实施例中,可以在确定例如在220、320或420处VLQx是否为空之前,确定在例如225、325或425(以及由225、325或425的决定产生的相关步骤)中确定GQ是否可用。
在交换机100的一些实施例中,可能不存在VLQ和GQ的任何分离。相反,所有队列可以被视为单一类型,例如GQ。为了确保业务分离,队列管理器105可以确保总是存在可用于每个VL的至少一个队列,但是可以不存在专用于每个VL的任何具体队列。该实施例可以与过程200、300或400中的任何一个的变型共存。改变可以包括改变过程200、300或400,使得如果VLQx变为空,如果存在与VLx相关联的一个或多个GQ或被分配用于VLx的一个或多个GQ时,该GQ可以被命名为VLQx,并且先前的VLQx可以变为GQ。如果不存在与VLx相关联的GQ或被分配用于VLx的时,VLQx可仍然是VLQ。
如上所述,在实施例中,过程200、300或400可以更适合于确定性分组。具体地,当数据分组是自适应分组时,排序可能不是必要的,并且与VLx相关联的自适应分组可以被放置于VLQx或GQ中的一个,其中GQ被或可以被分配用于VLx,无论哪个被识别作为“最佳”。如何测量“最佳”可取决于使用哪种确定性算法,以及存在什么样的硬件来测量队列质量。例如,“最佳”的确定可以基于识别出在队列中哪个VLQ或GQ具有最少的微片,或者“最佳”的确定可以基于队列的等待时间的方面,诸如尾随平均等待时间。
在一些实施例中,跟踪每个GQ中的自适应分组的数量可能是有用的,以便当GQ中仅仅具有自适应分组时,相同VL的新的确定性业务可以将队列视为可能的分配选择。在一些实施例中,可能希望将自适应分组放置到被识别为正在最不可能阻塞的队列中。
图5示出了根据各种实施例的替代过程500,该替代过程500可由诸如队列管理器105的队列管理器使用以将诸如自适应数据分组的数据分组放置于VLQ或GQ中。在实施例中,队列管理器105,具体是队列管理器105的识别电路110可以识别VLx,例如,分组与哪个VL相关联或者去往哪个VL。队列管理器105,具体是管理电路115可以在510处识别VLQx是否“最佳”。例如,管理电路115可以基于上述因素中的一个或多个来识别VLQx是否最佳。如果在510处VLQx被识别为最佳,则队列管理器105,具体是放置电路120在515处可以将该分组放置于VLQx中。在一些实施例中,队列管理器105可以在530处可选地递增与自适应分组的目的地输出端口相关联的VLQx的一个或多个计数器,例如如上所述的colm。
如果队列管理器105在510处识别出VLQx不是“最佳”,则队列管理器105,具体是放置电路120可以在520处将该分组放置于GQ中。在实施例中,队列管理器105,具体是放置电路120进一步可以在525处如上所述递增与GQ中的自适应分组的数量相关的计数器。
图6示出了结合诸如交换机100的交换机的示例性计算机系统655。在实施例中,计算机系统655可以是适合于实施本公开的所选择的方面。如图所示,计算机系统655可以包括与类似于图1的交换机100的交换机630耦合的多个计算机600。虽然图6描绘了两个计算机600,但是为了简明起见,仅描述了计算机600中的一个的组件。在实施例中,计算机系统655的计算机600可包括相同数量或类型的组件,而在其它实施例中,计算机600可以包括彼此不同的组件。另外,尽管仅描述了两个计算机600,但是在其它实施例中,计算机系统655可以包括多个计算机600。
计算机600可以包括一个或多个处理器或处理器核602以及系统存储器604。为了本申请的目的,包括权利要求书,术语“处理器”和“处理器核”可以被认为是同义的,除非上下文清楚地要求。另外,计算机600可以包括大容量存储设备606(诸如软盘、硬盘驱动器、光盘只读存储器(CD-ROM)等)、输入/输出设备608(诸如显示器、键盘、光标控制等等)以及通信接口610(诸如网络接口卡、调制解调器等等)。这些元件可以通过系统总线612彼此耦合,系统总线612表示一个或多个总线。在多个总线的情况下,它们可通过一个或多个总线桥桥接(未示出)。
这些元件中的每个元件可以执行其在本领域中公知的传统功能。特别地,系统存储器604和大容量存储设备606可以被用来存储工作拷贝和编程指令的永久拷贝,该编程指令用于实现与一个或多个过程相关联的操作。各种元件可以通过由处理器(一个或多个)602支持的汇编指令或可被编译为这样的指令的诸如C的高级语言实现。
这些元件610-612的数量、能力和/或容量可以根据计算机600是否被用作移动设备、固定设备或服务器而变化。当用作移动设备时,这些元件610-612的容量和/或能力可以根据移动设备是否是智能电话、计算平板、超级本或膝上计算机而变化。否则,元件610-612的构成是已知的,因此将不再进一步描述。
在一些实施例中,计算机600,特别是计算机的通信接口610,可以经由外部总线650与交换机630耦合。在实施例中,外部总线可以是外围组件互连快速(PCIe)总线、系统管理总线(SMBus)或一些其它类型的总线。
交换机630可以包括队列管理器640,其可类似于图1的队列管理器105。在一些实施例中,队列管理器640可以包括队列管理器逻辑622。队列管理器逻辑622可以是配置成实行或执行一个或多个过程诸如过程200、300、400或500的硬件、固件或软件。在一些实施例中,交换机630,以及特别是队列管理器,可包括一个或多个处理器、存储器和/或大容量存储,如上关于计算机600所描述的,但是为了清楚起见,在图6中未明确示出。在一些实施例中,一个或多个处理器、存储器和/或大容量存储可以包含计算机可执行指令,该计算机可执行指令被配置为使交换机630,以及特别是队列管理器640和/或队列管理器逻辑622实行或执行过程200、300、400或500中的一个或多个元素。
具体地,如被本领域的技术人员可以理解的,本公开可以实现为方法或计算机程序产品。因此,在本公开中,除了被实现在如前面描述的硬件,可以采用完全软件实施例(包括固件、驻留软件、微代码等)或结合一般地被称为“电路”、“模块”或“系统”的软件和硬件方面的实施例的形式。进一步,本公开可以采用实现在任意有形或非暂时介质的计算机程序产品的形式,其中任意有形或非暂时介质是介质中具有计算机可用程序代码的表达。图7示出了示例性计算机可读非暂时性存储介质,该示例性计算机可读非暂时性存储介质可以适用于存储指令,该指令使装置响应于由装置执行的指令以实现本公开的选择的方面。如图所示,非暂时性计算机可读存储介质702可包括多个编程指令704。编程指令704可被配置为使能装置,例如,交换机100/630,响应于由交换机100/630的处理器执行的编程指令,以执行诸如200、300、400或500的过程。在替代实施例中,编程指令704可替代地被放置于多个计算机可读的非暂时性存储介质702。在替代实施例中,编程指令704可以被放置于计算机可读暂时性存储介质702,诸如,信号。
一个或多个计算机可用或计算机可读介质(一个或多个)的任何组合可以被使用。计算机可用或计算机可读介质可以是,例如但不限于,电子、磁、光、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更具体的示例(非穷举列表)将包括以下:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式可压缩光盘只读存储器(CD-ROM)、光学存储设备、诸如支持互联网或内联网的传输介质或磁存储设备。应注意的是,计算机可用或计算机可读介质甚至可以是纸或在其上打印程序的另一合适的介质,因为程序可以被电子地捕获,经由例如对纸张或其他介质的光学扫描,然后被编译、被解释或以合适的方式被处理,如果必要的话,然后存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是能够包含、存储、通信、传播或通过指令执行系统、装置或设备或结合指令执行系统、装置或设备使用的程序的任何介质。计算机可用介质可以包括具有计算机可用程序代码体现在其上的传播数据信号,或者在基带中或作为载波的一部分。计算机可用程序代码可以使用任何适当的介质传输,包括但不限于,无线、有线、光纤电缆、RF等。
用于实施本公开的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,一种或多种编程语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++等以及常规过程编程语言,例如“C”编程语言或类似的编程语言。该程序代码可以全部运行在用户的计算机、部分在用户的计算机上、作为独立的软件包、部分在用户的计算机上以及部分在远程计算机上或全部在远程计算机或服务器上。在后一种情形中,远程计算机可以通过任何类型的网络连接到用户的计算机,所述网络包括局域网(LAN)或广域网(WAN)或者可以进行到外部计算机的连接(例如,通过使用因特网服务提供商的因特网)。
根据本公开的实施例,参照方法、装置(系统)和计算机程序产品的流程图示例和/或框图来描述本公开。应当理解的是,流程图示例和/或框图中的每个方框以及流程图和/或框图中方框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,使得经由计算机或其它可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的方框或多个方框中指定的功能/动作的单元。
这些计算机程序指令还可以被存储在计算机可读介质中,进而这些计算机程序指令可以指导计算机或其它可编程数据处理装置以特定方式工作,以使得存储在计算机可读介质中的指令产生包括指令单元的制品,该指令单元实现流程图和/或框图的一个或多个方框中指定的功能/动作。
该计算机程序指令还可以被加载到计算机或其它可编程数据处理装置上以使得在计算机或其他可编程装置上执行一系列操作步骤,进而产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图的块或多个块中指定的功能/动作的过程。
根据本公开的各种实施例,在附图中的流程图和框图示出了系统、方法和计算机程序产品的可能实现的架构、功能、以及操作。在这方面,流程图或框图中的每个方框可以代表模块、程序段、或代码的部分,其包括用于实现指定的逻辑功能(一个或多个)的一个或多个可执行指令。还应当注意的是,在一些替代实现方式中,方框中标出的功能可能会以附图中标注的顺序不同地发生。例如,示出的连续两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图示例中的每个方框以及框图和/或流程图示例中方框的组合可以由执行具体功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。
本文使用的术语仅是为了描述特定实施例的目的,而不是意在限制本公开。正如本文所用,单数形式“一个”、“一种”和“所述”也旨在包括复数形式,除非上下文另有明确指示。还应理解的是,术语“包括”和/或包含(comprises/comprising)当用在本说明书中时,是指存在多个列出的特征、整数、步骤、操作、元件和/或组件,但不排除存在一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组。
实施例可以被实现为计算机过程,计算系统或作为诸如计算机可读介质中的计算机程序产品的制造品。该计算机程序产品可以是由计算机系统可读的计算机存储介质以及编码用于执行计算机过程的计算机程序指令。
对应的结构、材料、动作以及所有单元或步骤加上在下面的权利要求的功能元件的等同物旨在包括用于执行与其它要求保护的元件组合的功能的任何结构、材料或行为。本公开的描述是为了说明和描述的目的,而并非意在穷举或限制所公开的形式公开。许多修改和变形在不脱离本公开的范围和精神的情况下,对普通技术人员而言是显而易见的。所选择及所描述的实施例为了最好地解释本公开和实际应用的原理,并且使本领域的其他技术人员能够理解具有适用于所预期的特定使用的各种修改的实施例的本公开。
返回参见图6,对于一个实施例,处理器602中的至少一个处理器可以连同存储器(代替存储在存储器604和存储606)一起被封装。对于一个实施例,处理器602中的至少一个处理器可以连同存储器封装以形成系统级封装(SiP)。对于一个实施例,处理器602中的至少一个处理器可以与存储器一起集成在相同的管芯上。对于一个实施例,处理器602中的至少一个处理器可以与存储器一起封装以形成片上系统(SoC)。对于至少一个实施例,SoC可以使用在例如但不限于智能电话或计算平板中。
在一些实施例中,交换机630可以是独立的组件,而在其它实施例中,交换机630可以是SoC或SIP中的元件,其包括与交换机耦合的一个或多个处理器。
因而,已经描述了本公开的各种示例实施例,包括但不局限于:
示例1可以包括交换机,包括:多个输出端口;通信地与输出端口耦合的多个虚拟通道队列(VLQs),并且分别与多个虚拟通道(VL)相关联;多个通用队列(GQS),其通信地与输出端口耦合,并且与任何VL不相关联;以及通信地与多个VLQ和多个GQ耦合的队列管理器,队列管理器用于选择性地将VL的并且去往所述多个输出端口中的输出端口的分组放置于多个VLQ中的相对应的VLQ或多个GQ中的GQ中。
示例2可以包括示例1的交换机,其中,队列管理器用于基于相对应的VLQ的条件选择性地将分组放置于GQ中。
示例3可以包括示例2的交换机,其中,队列管理器进一步用于与将分组选择性地放置于GQ中相关地分配GQ作为与多个VL的中VL以及输出端口相关联。
示例4可以包括示例3的交换机,其中,队列管理器进一步用于与将分组选择性地放置于GQ中相关地分配GQ作为与多个VL中的VL以及包括输出端口的多个输出端口的子集相关联。
示例5可以包括示例1-4中任何一个交换机,包括7个GQ。
示例6可以包括任何的示例1-4中任何一个交换机,包括10个VLQ。
示例7可以包括任何的示例1-4中任何一个交换机,进一步包括与多个GQ、多个VLQ以及多个输出端口耦合的交叉式开关。
示例8可以包括示例1-4中任何一个交换机,其中,交换机是片上系统(SoC)的元件,该片上系统包含交换机以及一个或多个处理器。
示例9可以包括示例1-4中任何一个交换机,其中,分组是确定性分组。
示例10可以包括示例9的交换机,其中,确定性分组的报头包括在该报头的熵字段中交换机的中间节点的指示。
示例11可以包括示例9的交换机,其中,队列管理器用于基于将分组选择性地放置于VLQ中,而递增与VLQ相关联的计数器。
示例12可以包括示例11的交换机,其中,VLQ与8个计数器相关联,其中8个计数器中的相应的计数器与多个输出端口中的相应的输出端口相关联。
示例13可以包括示例12的交换机,其中,多个输出端口中的输出端口是交换机的列。
示例14可以包括示例1-4中任何一个交换机,其中,分组是自适应分组。
示例15可以包括示例14的交换机,其中,自适应分组用于被逐渐最低程度地路由到输出端口,或者非最低程度地路由到随机选择的交换机的中间节点,然后最低程度地路由到输出端口。
示例16可以包括示例14的交换机,其中,队列管理器进一步用于基于将分组选择性地放置于GQ中,递增与GQ相关的计数器。
示例17可以包括示例14的交换机,其中,队列管理器用于基于GQ的等待时间以及对应的VLQ的等待时间,选择性地将分组放置于GQ或对应的VLQ中。
示例18可以包括示例14的交换机,其中,队列管理器用于基于GQ中微片的数量以及对应的VLQ中微片的数量,选择性地将分组放置于GQ或对应的VLQ中。
示例19可以包括在交换机中的队列管理器,队列管理器包括:识别电路,用于将第一数据分组识别为多个虚拟通道(VL)中的VL和输出端口的数据分组;管理电路,用于识别与VL相关联的VL队列(VLQ)是否为空;以及放置电路,用于:如果该VLQ为空时,则将第一数据分组放置于VLQ中;并且如果VLQ不为空时,则将第一数据分组放置于多个通用队列(GQ)中的GQ中。
示例20可以包括示例19的队列管理,其中,放置电路进一步用于如果VLQ包含去往与第一数据分组相同的输出端口的第二数据分组时,则将第一数据分组放置于VLQ中。
示例21可以包括示例19的队列管理器,其中,多个VLQ包括10个VLQ。
示例22可以包括示例19的队列管理器,其中,多个GQ包括7个GQ。
示例23可以包括示例19的队列管理器,其中,放置电路进一步用于与将第一数据分组放置于GQ中相关地将GQ分配用于多个VL中的VL以及第一数据分组的去往的输出端口。
示例24可以包括示例23的队列管理器,其中,放置电路进一步用于与将第一数据分组放置于GQ中相关地将GQ分配用于多个VL中的VL以及包括第一数据分组的去往的输出端口的多个输出端口。
示例25可以包括示例23的队列管理器,其中,放置电路进一步用于基于第一数据分组从GQ到第一数据分组的去往的输出端口的传送的指示,针对多个VL中的VL以及第一数据分组的去往的输出端口对GQ解除分配。
示例26可以包括例如25的队列管理器,其中,放置电路进一步用于基于所有数据分组从GQ到第一数据分组的去往的输出端口的传送的指示,针对多个VL中的VL以及第一数据分组的去往的输出端口对GQ解除分配。
示例27可以包括示例25的队列管理器,其中,放置电路进一步用于基于第一数据分组以及GQ中所有其他数据分组的传送的指示,针对多个VL中的VL以及第一数据分组的去往的输出端口对GQ解除分配。
示例28可以包括示例19-27中任何一个队列管理器,其中,放置电路进一步用于基于将第一数据分组放置于VLQ中,递增与VLQ以及第一数据分组的去往的输出端口相关联的计数器。
示例29可以包括示例19-27中任何一个队列管理器,其中,识别电路进一步用于基于交换机的列的指示,识别第一数据分组的去往的输出端口。
示例30可以包括示例19-27中任何一个队列管理器,其中,第一数据分组是确定性分组。
示例31可以包括示例30的队列管理器,其中,报头包括在该报头的熵字段中交换机的中间节点的指示。
示例32可以包括示例19-27任何一个的队列管理器,其中,第一数据分组是自适应数据分组。
示例33可以包括示例32的队列管理器,其中,自适应分组用于被逐渐最低程度地路由到输出端口,或者非最低程度地路由到随机选择的交换机的中间节点,然后最低程度地路由到输出端口。
示例34可以包括示例33的队列管理器,其中,放置电路进一步用于基于将第一数据分组选择性地放置于GQ中,递增与GQ相关的计数器。
示例35可包括一种或多种非暂时性计算机可读介质,包括指令,在由交换机的一个或多个处理器执行指令时,所述指令使得交换机的队列管理器:基于第一分组的报头,识别第一分组的虚拟通道(VL)以及输出端口,该输出端口是第一分组的去往的输出端口;识别与第一分组的VL相关联的VL队列(VLQ)是否为空;如果VLQ为空时,将第一分组放置于VLQ中;以及如果VLQ不为空时,将第一分组放置于交换机的通用队列(GQ)中。
示例36可以包括示例35的一种或多种非暂时性计算机可读介质,其中,指令进一步用于如果VLQ包含去往与第一数据分组相同输出端口的第二数据分组时,将第一数据分组放置于VLQ中。
示例37可以包括示例35的一种或多种非暂时性计算机可读介质,其中,指令进一步用于与将第一分组放置于GQ中相关地将GQ分配用于第一分组的VL的并且去往的输出端口。
示例38可以包括示例37的一种或多种非暂时性计算机可读介质,其中,指令进一步用于将GQ分配用于第一分组的VL以及包括去往的输出端口的多个输出端口。
示例39可以包括示例37的一种或多种非暂时性计算机可读介质,其中,指令进一步用于基于第一分组从GQ到第一数据分组的去往的输出端口的传送的指示,针对第一分组的VL以及第一分组的去往的输出端口对GQ解除分配。
示例40可以包括示例39的一种或多种非暂时性计算机可读介质,其中,指令进一步用于在所有分组从GQ的传送之后对GQ解除分配。
示例41可以包括示例35-40中的任何一种或多种非暂时性计算机可读介质,其中,指令进一步用于基于将第一分组放置于VLQ中,递增与VLQ以及第一分组的去往的输出端口相关联的计数器。
示例42可以包括示例35-40中任何的一种或多种非暂时性计算机可读介质,其中,指令进一步用于基于交换机的列的指示,识别第一分组的去往的输出端口。
示例43可以包括示例35-40中任何的一种或多种非暂时性计算机可读介质,其中,第一分组是确定性分组。
示例44可以包括示例43的一种或多种非暂时性计算机可读介质,其中,报头包括在该报头的熵字段中交换机的中间节点的指示。
示例45可以包括示例35-40中任何的一种或多种非暂时性计算机可读介质,其中,第一分组是自适应分组。
示例46可以包括示例45的一种或多种非暂时性计算机可读介质,其中,自适应分组用于被逐渐最低程度地路由到输出端口,或者非最低程度地路由到随机选择的交换机的中间节点,然后最低程度地路由到第一分组的去往的输出端口。
示例47可以包括示例46的一种或多种非暂时性计算机可读介质,进一步包括用于在将第一分组选择性地放置于GQ时,递增与GQ相关的计数器的指令。
示例48可以包括一种方法,包括:基于第一分组的报头,通过交换机的队列管理器识别交换机的虚拟通道(VL)的指示以及交换机的输出端口的指示;通过队列管理器识别与VL相关联的VL队列(VLQ)是否包含第二分组;如果VLQ包含去往已识别的输出端口的第二分组,则通过队列管理器将第一分组放置于VLQ中;并且如果VLQ包含去往与已识别的输出端口不同的输出端口的第二分组,则通过队列管理器将第一分组放置于交换机的通用队列(GQ)中。
示例49可以包括示例48的方法,进一步包括与将第一分组放置于GQ中相关地通过队列管理器将GQ分配用于已识别的VL以及已识别的输出端口。
示例50可以包括示例48的方法,进一步包括与将第一分组放置于GQ中相关地通过队列管理器将GQ分配用于已识别的VL和交换机的多个输出端口,多个输出端口包括已识别的输出端口。
示例51可以包括示例49的方法,进一步包括基于第一分组从GQ到识别的输出端口的传送的指示,通过队列管理器针对已识别的VL和已识别的输出端口对GQ解除分配。
示例52可以包括示例51的方法,进一步包括通过队列管理器促进当前GQ中所有分组从GQ的传送;以及基于所有分组从GQ的传送,通过队列管理器针对已识别的VL和已识别的输出端口对GQ解除分配。
示例53可以包括示例48-52中任何一种方法,进一步包括基于将第一分组放置于VLQ中,通过队列管理器递增与VLQ及已识别的输出端口相关联的计数器。
示例54可以包括示例48-52中任何一种方法,进一步包括基于分组的报头中交换机的列的指示,通过队列管理器识别分组的已识别输出端口。
示例55可以包括示例48-52中任何一种方法,其中,第一分组是确定性分组。
示例56可以包括示例55的方法,其中,报头包括在该报头的熵字段中交换机的中间节点的指示。
示例57可以包括示例48-52中任何一种方法,其中,第一分组是自适应分组。
示例58可以包括示例57的方法,其中,自适应分组用于被逐渐最低程度地路由到识别的输出端口,或者非最低程度地路由到随机选择的交换机的中间节点,然后最低程度地路由到识别的输出端口。
示例59可以包括示例58的方法,进一步包括当将第一分组选择性地放置于GQ中时,通过队列管理器递增与GQ相关的计数器。
示例60可以包括交换机,包括:多个输出端口;通信地与多个输出端口耦合的10个虚拟通道队列(VLQs),相应的VLQ与交换机的相应虚拟通道(VL)相关联;7个通用队列(GQS),其通信地与多个输出端口耦合,并且与任何VL不相关联;与7个GQ以及10个VLQ以及多个输出端口耦合的交叉式开关;以及队列管理器,其通信地与多个VLQ、以及多个GQS耦合,队列管理器用于:基于分组的VL的指示以及分组的报头中多个输出端口中的输出端口的指示来识别分组的VL和该分组的去往的输出端口;选择性地将分组放置于10个VLQ中的与分组的VL相关联的VLQ中,或基于VLQ条件将分组放置于7个GQ中的GQ中;与将分组放置于GQ中相关地将GQ分配为与VLQ的并且去往的输出端口相关联;以及基于将分组放置于VLQ中,递增与VLQ以及多个输出端口的去往的输出端口相关联的计数器。
示例61可以包括一种方法,包括:基于第一分组的报头,通过交换机的队列管理器识别第一分组的虚拟通道(VL)以及第一分组的去往的输出端口;通过队列管理器,识别10个VL队列(VLQ)中的与第一分组的VL相关联的VLQ是否包含第二分组;如果VLQ不包含第二分组,则通过队列管理器选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器;如果VLQ包含去往第一分组的去往的输出端口的第二分组,则通过队列管理器选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器;以及如果VLQ包含去往与第一分组的去往的输出端口不同的输出端口的第二分组,则通过队列管理器选择性地将第一分组放置于7个可能的通用队列(GQ)中的GQ中,将GQ分配用于去往的VL以及第一分组的去往的输出端口,并基于所有分组从GQ的传送的指示,针对去往的VL以及第一分组的去往的输出端口对GQ解除分配。
示例62可以包含交换机的队列管理器,包括:用于基于第一分组的报头,识别第一分组的虚拟通道(VL)以及第一分组的去往的输出端口的单元,用于识别10个VL队列(VLQ)中的与第一分组的VL相关联的VLQ是否包含第二分组的单元;用于如果VLQ不包含第二分组,则选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器的单元;用于如果VLQ包含去往第一分组的去往的输出端口的第二分组,则选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器的单元;以及用于如果VLQ包含去往与第一分组的去往的输出端口不同的输出端口的第二分组,则选择性地将第一分组放置于7个可能的通用队列(GQ)中的GQ中,将该GQ分配用于去往的VL以及第一分组的去往的输出端口,并基于所有分组从GQ的传送的指示,针对去往的VL以及第一分组的去往的输出端口对GQ解除分配的单元。
示例63可以包含一个或多个非暂时性计算机可读介质,包括指令,在由与交换机的队列管理器耦合的一个或多个处理器执行指令时,所述指令使得交换机的队列管理器:基于第一分组的报头,识别第一分组的虚拟通道(VL)以及第一分组的去往的输出端口;识别10个VL队列(VLQ)中的与第一分组的VL相关联的VLQ是否包含第二分组;如果VLQ不包含第二分组,则选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器;如果VLQ包含去往第一分组的去往的输出端口的第二分组,则选择性地将第一分组放置于VLQ中并递增与VLQ以及第一分组的去往的输出端口相关联的计数器;以及如果VLQ包含去往与第一分组的去往的输出端口不同的输出端口的第二分组,则选择性地将第一分组放置于7个可能的通用队列(GQ)中的GQ中,将该GQ分配用于去往的VL以及第一分组的去往的输出端口,并基于所有分组从GQ的传送的指示,针对去往的VL以及第一分组的去往的输出端口对GQ解除分配。
本领域的普通技术人员将明白,可以在不偏离本公开的精神和范围的情况下对本公开的设备和相关联的方法的公开实施例做出各种修改和变化。因而,本公开旨在覆盖上面公开的实施例的修改和变化,只要这些修改和变化落在所附权利要求及其等同物的范围内。
Claims (25)
1.一种交换机,包括:
多个输出端口;
多个虚拟通道队列(VLQ),其通信地与所述输出端口耦合,并且分别与多个虚拟通道(VL)相关联;
多个通用队列(GQ),其通信地与所述输出端口耦合,并且与任何VL不相关联;以及
队列管理器,其通信地与所述多个VLQ和所述多个GQ耦合,所述队列管理器用于选择性地将VL的并且去往所述多个输出端口中的输出端口的分组放置于所述多个VLQ中的相对应的VLQ或所述多个GQ中的GQ中。
2.根据权利要求1所述的交换机,其中,所述队列管理器用于基于所述相对应的VLQ的条件来选择性地将所述分组放置于所述GQ中。
3.根据权利要求2所述的交换机,其中,所述队列管理器进一步用于与将所述分组选择性地放置于所述GQ中相关地将所述GQ分配为与所述多个VL中的VL以及所述输出端口相关联。
4.根据权利要求1-3中任一项所述的交换机,包括7个GQ或10个VLQ。
5.根据权利要求1-3中任一项所述的交换机,进一步包括与所述多个GQ、所述多个VLQ以及所述多个输出端口耦合的交叉式开关。
6.根据权利要求1-3中任一项所述的交换机,其中,所述交换机是片上系统(SoC)的元件,所述片上系统包括所述交换机以及一个或多个处理器。
7.一种交换机中的队列管理器,所述队列管理器包括:
识别电路,其用于将第一数据分组识别为多个虚拟通道(VL)中的VL的并且去往输出端口的数据分组;
管理电路,其用于识别与所述VL相关联的VL队列(VLQ)是否为空;以及
放置电路,其用于:
如果所述VLQ为空,则将所述第一数据分组放置于所述VLQ中;并且
如果所述VLQ不为空,则将所述第一数据分组放置于多个通用队列(GQ)中的GQ中。
8.根据权利要求7所述的队列管理器,其中,所述放置电路进一步用于:如果所述VLQ包含去往与所述第一数据分组相同的输出端口的第二数据分组,则将所述第一数据分组放置于所述VLQ中。
9.根据权利要求7所述的队列管理器,其中,所述多个VLQ包括10个VLQ,或其中,所述多个GQ包括7个GQ。
10.根据权利要求7所述的队列管理器,其中,所述放置电路进一步用于:与将所述第一数据分组放置于所述GQ中相关地将所述GQ分配用于所述多个VL中的所述VL以及所述第一数据分组的去往的输出端口。
11.根据权利要求10所述的队列管理器,其中,所述放置电路进一步用于:基于所述第一数据分组从所述GQ到所述第一数据分组的去往的输出端口的传送的指示,针对所述多个VL中的所述VL以及所述第一数据分组的去往的输出端口对所述GQ解除分配。
12.根据权利要求11所述的队列管理器,其中,所述放置电路进一步用于:基于所有数据分组从所述GQ到所述第一数据分组的去往的输出端口的传送的指示,针对所述多个VL中的所述VL以及所述第一数据分组的去往的输出端口对所述GQ解除分配。
13.根据权利要求7-12中任一项所述的队列管理器,所述放置电路进一步用于:基于将所述第一数据分组放置于所述VLQ中,递增与所述VLQ以及所述第一数据分组的去往的输出端口相关联的计数器。
14.根据权利要求7-12中任一项所述的队列管理器,其中,所述识别电路进一步用于基于所述交换机的列的指示,识别所述第一数据分组的去往的输出端口。
15.一种或多种非暂时性计算机可读介质,包括指令,在由与交换机耦合的一个或多个处理器执行时,所述指令使得所述交换机的队列管理器用于:
基于第一分组的报头,识别所述第一分组的虚拟通道(VL)以及输出端口,所述输出端口是所述第一分组的去往的输出端口;
识别与所述第一分组的VL相关联的VL队列(VLQ)是否为空;
如果所述VLQ为空,则将所述第一分组放置于所述VLQ中;以及
如果所述VLQ不为空,则将所述第一分组放置于所述交换机的通用队列(GQ)中。
16.根据权利要求15所述的一种或多种非暂时性计算机可读介质,其中,所述指令进一步用于:如果所述VLQ包含去往与所述第一数据分组相同的输出端口的第二数据分组,则将所述第一数据分组放置于所述VLQ中。
17.根据权利要求15所述的一种或多种非暂时性计算机可读介质,其中,所述指令进一步用于:与将所述第一分组放置于所述GQ中相关地将所述GQ分配用于所述第一分组的所述VL以及所述去往的输出端口。
18.根据权利要求17所述的一种或多种非暂时性计算机可读介质,其中,所述指令进一步用于将所述GQ分配用于所述第一分组的所述VL以及包括所述去往的输出端口的多个输出端口。
19.根据权利要求17所述的一种或多种非暂时性计算机可读介质,其中,所述指令进一步用于:基于所述第一分组从所述GQ到所述第一分组的去往的输出端口的传送的指示,针对所述第一分组的所述VL以及所述第一分组的去往的输出端口对所述GQ解除分配。
20.根据权利要求15-18中任一项所述的一种或多种非暂时性计算机可读介质,其中,所述指令进一步用于基于将所述第一分组放置于所述VLQ中,递增与所述VLQ以及所述第一分组的去往的输出端口相关联的计数器。
21.一种方法,包括:
基于第一分组的报头通过交换机的队列管理器识别所述交换机的虚拟通道(VL)的指示以及所述交换机的输出端口的指示;
通过所述队列管理器识别与所述VL相关联的VL队列(VLQ)是否包含第二分组;
如果所述VLQ包含去往已识别的输出端口的所述第二分组,则通过所述队列管理器将所述第一分组放置于所述VLQ中;并且
如果所述VLQ包含去往与所述已识别的输出端口不同的输出端口的所述第二分组,则通过所述队列管理器将所述第一分组放置于所述交换机的通用队列(GQ)中。
22.根据权利要求21所述的方法,进一步包括通过所述队列管理器基于将所述第一分组放置于所述GQ中,将所述GQ分配用于已识别的VL以及所述已识别的输出端口。
23.根据权利要求22所述的方法,进一步包括通过所述队列管理器基于所述第一分组从所述GQ到所述已识别的输出端口的传送的指示,针对所述已识别的VL和所述已识别的输出端口对所述GQ解除分配。
24.根据权利要求21-23中任一项所述的方法,进一步包括通过所述队列管理器基于将所述第一分组放置于所述VLQ中,递增与所述VLQ以及所述已识别的输出端口相关联的计数器。
25.根据权利要求21-23中任一项所述的方法,进一步包括通过所述队列管理器基于所述分组的报头中所述交换机的列的指示,识别所述分组的所述已识别的输出端口。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2014/072203 WO2016105393A1 (en) | 2014-12-23 | 2014-12-23 | Generic queue |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107005488A true CN107005488A (zh) | 2017-08-01 |
Family
ID=56151192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480083565.9A Pending CN107005488A (zh) | 2014-12-23 | 2014-12-23 | 通用队列 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180287953A1 (zh) |
EP (1) | EP3238394A4 (zh) |
CN (1) | CN107005488A (zh) |
WO (1) | WO2016105393A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10951546B2 (en) | 2019-07-05 | 2021-03-16 | Cisco Technology, Inc. | Managing virtual output queues |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001210A (zh) * | 2006-12-21 | 2007-07-18 | 华为技术有限公司 | 输出队列的实现装置、方法以及网络设备和芯片 |
US20080192765A1 (en) * | 2007-02-12 | 2008-08-14 | Jong-Sang Oh | Apparatus and method for packet buffer management in IP network system |
CN103222242A (zh) * | 2010-11-18 | 2013-07-24 | 思科技术公司 | 用于避免线端阻塞的动态流重新分布 |
CN103516622A (zh) * | 2012-05-24 | 2014-01-15 | 马维尔国际贸易有限公司 | 网络交换机中的灵活队列 |
CN103780507A (zh) * | 2014-02-17 | 2014-05-07 | 杭州华三通信技术有限公司 | 缓存资源的管理方法及装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6977930B1 (en) * | 2000-02-14 | 2005-12-20 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
EP1168725B1 (en) * | 2000-06-19 | 2005-06-15 | Broadcom Corporation | Switch fabric with path redundancy |
US7035255B2 (en) * | 2000-11-14 | 2006-04-25 | Broadcom Corporation | Linked network switch configuration |
JP4489308B2 (ja) * | 2001-01-05 | 2010-06-23 | 富士通株式会社 | パケットスイッチ |
US7023840B2 (en) * | 2001-02-17 | 2006-04-04 | Alcatel | Multiserver scheduling system and method for a fast switching element |
US20020124104A1 (en) * | 2001-03-01 | 2002-09-05 | Yigal Rappaport | Network element and a method for preventing a disorder of a sequence of data packets traversing the network |
US20030026267A1 (en) * | 2001-07-31 | 2003-02-06 | Oberman Stuart F. | Virtual channels in a network switch |
US7191259B2 (en) * | 2002-04-10 | 2007-03-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and apparatus for fast integer within-range compare |
GB0208797D0 (en) * | 2002-04-17 | 2002-05-29 | Univ Cambridge Tech | IP-Capable switch |
US7209478B2 (en) * | 2002-05-31 | 2007-04-24 | Palau Acquisition Corporation (Delaware) | Apparatus and methods for dynamic reallocation of virtual lane buffer space in an infiniband switch |
US7894343B2 (en) * | 2003-06-19 | 2011-02-22 | Polytechnic University | Packet sequence maintenance with load balancing, and head-of-line blocking avoidance in a switch |
US7486683B2 (en) * | 2003-07-23 | 2009-02-03 | International Business Machines Corporation | Algorithm and system for selecting acknowledgments from an array of collapsed VOQ's |
US7349334B2 (en) * | 2004-04-09 | 2008-03-25 | International Business Machines Corporation | Method, system and program product for actively managing central queue buffer allocation using a backpressure mechanism |
KR20060032103A (ko) * | 2004-10-11 | 2006-04-14 | 한국전자통신연구원 | 크로스포인트 버퍼 스위치의 출력 스케줄링 방법 |
US9325619B2 (en) * | 2011-11-15 | 2016-04-26 | Oracle International Corporation | System and method for using virtual lanes to alleviate congestion in a fat-tree topology |
US8930595B2 (en) * | 2012-06-21 | 2015-01-06 | Advanced Micro Devices, Inc. | Memory switch for interconnecting server nodes |
US10003544B2 (en) * | 2014-12-11 | 2018-06-19 | Futurewei Technologies, Inc. | Method and apparatus for priority flow and congestion control in ethernet network |
-
2014
- 2014-12-23 US US15/531,692 patent/US20180287953A1/en not_active Abandoned
- 2014-12-23 CN CN201480083565.9A patent/CN107005488A/zh active Pending
- 2014-12-23 WO PCT/US2014/072203 patent/WO2016105393A1/en active Application Filing
- 2014-12-23 EP EP14909236.3A patent/EP3238394A4/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101001210A (zh) * | 2006-12-21 | 2007-07-18 | 华为技术有限公司 | 输出队列的实现装置、方法以及网络设备和芯片 |
US20080192765A1 (en) * | 2007-02-12 | 2008-08-14 | Jong-Sang Oh | Apparatus and method for packet buffer management in IP network system |
CN103222242A (zh) * | 2010-11-18 | 2013-07-24 | 思科技术公司 | 用于避免线端阻塞的动态流重新分布 |
CN103516622A (zh) * | 2012-05-24 | 2014-01-15 | 马维尔国际贸易有限公司 | 网络交换机中的灵活队列 |
CN103780507A (zh) * | 2014-02-17 | 2014-05-07 | 杭州华三通信技术有限公司 | 缓存资源的管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3238394A4 (en) | 2018-08-15 |
WO2016105393A1 (en) | 2016-06-30 |
US20180287953A1 (en) | 2018-10-04 |
EP3238394A1 (en) | 2017-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105900386B (zh) | 一种用于传送以太网分组的方法及装置 | |
CN105745885B (zh) | 用于高性能结构内的灵活信用交换的方法和系统 | |
CN105850086B (zh) | 用于高性能结构内的QoS的方法、装置和系统 | |
CN104954247B (zh) | 用于数据中心覆盖网络的主机网络加速器 | |
CN104954253B (zh) | 用于数据中心覆盖网络的基于PCIe的主机网络加速器(HNA) | |
US9698791B2 (en) | Programmable forwarding plane | |
CN109698788A (zh) | 流量转发方法和流量转发装置 | |
US20140211622A1 (en) | Creating multiple noc layers for isolation or avoiding noc traffic congestion | |
US10749811B2 (en) | Interface virtualization and fast path for Network on Chip | |
US20170063609A1 (en) | Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip | |
US10387355B2 (en) | NoC interconnect with linearly-tunable QoS guarantees for real-time isolation | |
US10298485B2 (en) | Systems and methods for NoC construction | |
US9185026B2 (en) | Tagging and synchronization for fairness in NOC interconnects | |
JP5624579B2 (ja) | オンチップルータ | |
CN103873367B (zh) | 路由数据分组以及确定路由的方法和装置、胖树网络 | |
US10289598B2 (en) | Non-blocking network | |
CN109995667A (zh) | 传输报文的方法和发送设备 | |
CN107005488A (zh) | 通用队列 | |
JP5847887B2 (ja) | オンチップルータ及びそれを用いたマルチコアシステム | |
US10185606B2 (en) | Scalable autonomic message-transport with synchronization | |
US10084725B2 (en) | Extracting features from a NoC for machine learning construction | |
JP2016149617A (ja) | ポリシ制御システムおよびポリシ制御方法 | |
WO2017177928A1 (en) | Scalable autonomic message-transport with synchronization | |
Sahu | Bidirectional Network-on-Chip Router Implementation Using VHDL | |
US20170060805A1 (en) | Transaction expansion for noc simulation and noc design |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170801 |