CN105247821B - 用于利用自适应路由来控制资源利用的机制 - Google Patents
用于利用自适应路由来控制资源利用的机制 Download PDFInfo
- Publication number
- CN105247821B CN105247821B CN201380077013.2A CN201380077013A CN105247821B CN 105247821 B CN105247821 B CN 105247821B CN 201380077013 A CN201380077013 A CN 201380077013A CN 105247821 B CN105247821 B CN 105247821B
- Authority
- CN
- China
- Prior art keywords
- routing
- output port
- logic
- incoming message
- equipment
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/18—Loop-free operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/22—Alternate routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/11—Identifying congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- 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
-
- 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/3018—Input queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/10—Routing in connection-oriented networks, e.g. X.25 or ATM
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/125—Shortest path evaluation based on throughput or bandwidth
-
- 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
- H04L49/251—Cut-through or wormhole routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述了涉及用于利用自适应路由来控制资源利用的技术的方法和设备。在一个实施例中,在路由逻辑中,确定用于传输将在输入端口处被接收的传入消息的输出端口。所述路由逻辑将基于在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑中检测到的拥塞信息,从第一输出端口和第二输出端口中选择所述输出端口。所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。还公开了其他实施例。
Description
领域
本发明一般涉及电子器件领域。更具体而言,本发明的实施例涉及用于利用自适应路由来控制资源利用的技术。
附图简述
参考附图提供了下列详细描述在附图中,附图标记中最左边的数字标识该附图标记首次出现的附图。在不同附图中使用相同的附图标记指示相似或相同的项。
图1示出了可以用来实现此处所讨论的各实施例的计算系统的实施例的框图。
图2示出了可以用来实现此处所讨论的一个或多个实施例的计算系统的实施例的框图。
图3示出了可以用于此处所讨论的一个或多个实施例中的路由逻辑的框图。
图4示出了根据一实施例的路由功能的框图。
图5示出了根据一实施例的路由逻辑的输入端口的虚拟信道中的逻辑划分。
图6示出了根据一实施例的对头部flits执行的方法的流程图。
图7示出了根据一实施例的用于检查拥塞的方法的流程图。
图8示出了根据一实施例的用于选择输出端口的方法的流程图。
图9示出了可以用来实现此处所讨论的一个或多个实施例的计算系统的实施例的框图。
图10示出了可以用来实现此处所讨论的一个或多个实施例的计算系统的实施例的框图。
详细描述
在下面的描述中,阐述了很多具体细节,以便全面地理解各实施例。然而,在没有这些具体细节的情况下,也可实践一些实施例。在其他情况下,没有详细描述已知的方法、过程、组件、和电路以便不至于不必要地使特定实施例变得模糊。本发明的各实施例的各方面可以使用各种装置,诸如半导体集成电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”),硬件和软件的某种组合,来执行。为本发明,对“逻辑”的引用应该是指硬件、软件,或者其某种组合。
当设计网络系统时,一些主要考虑是最小化面积和功率耗散。这样的局限性强制了对拓扑、切换策略、路由功能和架构实现的某些选择。平衡这些选择进而对网络系统在速度、功率消耗,等等方面有多好地操作具有直接影响。
一些实施例涉及用于利用自适应路由来控制资源利用的技术(也可以被称为拥塞知晓的适应性阈值或CAAT)。在一个实施例中,在路由逻辑(例如,参考图1-10所讨论的逻辑150)处确定用于传输传入消息(其将在输入端口处被接收)的输出端口。所述路由逻辑将基于在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处检测到的拥塞信息,来从第一输出端口和第二输出端口中选择输出端口。所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。
各种计算系统可以被用来实现此处所讨论的各实施例,诸如参考图1-2和9-10所讨论的系统。更具体而言,图1示出了根据本发明的一个实施例的计算系统100的框图。系统100可包括一个或多个代理102-1到102-M(此处统称为“代理102”或更一般的“代理102”)。在一个实施例中,代理102中的一个或多个可以是诸如参考图9-10所讨论的计算系统之类的计算系统的组件中的任何一个。
如图1所示,代理102可以通过网络结构(network fabric)104进行通信。在一个实施例中,网络结构104可包括允许各种代理(诸如计算设备)传递数据的计算机网络。在一个实施例中,网络结构104可包括通过串行(例如,点对点)链路和/或共享通信网络(在一个实施例中,可被配置成环形)进行通信的一个或多个互连(或互连网络)。例如,一些实施例可以助益允许与完全缓冲双列直插式存储器模块(FBD)进行通信的链路上的组件调试或验证,例如,在FBD链路是用于将存储器模块耦合到主机控制器设备(诸如处理器或存储器中枢)的串行链路的情况下。调试信息可以从FBD通道主机传输,以便可以通过通道流量跟踪捕捉工具(诸如一个或多个逻辑分析仪)沿着通道观察到调试信息。
在一个实施例中,系统100可以支持分层协议方案,该方案可包括物理层、链路层、路由层、传输层,和/或协议层。结构104还可以进一步促进从一个协议(例如,缓存处理器或缓存知晓存储器控制器)到用于点对点或共享网络的另一个协议的数据传输(例如,以分组的形式)。在某些实施例中,网络结构104还可以提供遵循一个或多个缓存一致性协议的通信。
进一步地,如图1中的箭头方向所示,代理102可以通过网络结构104传输和/或接收数据。因此,某些代理可以使用单向链路,而其他代理可以使用双向链路来进行通信。例如,一个或多个代理(诸如代理102-M)可以传输数据(例如,通过单向链路106),其他代理(诸如代理102-2)可以接收数据(例如,通过单向链路108),而某些代理(诸如代理102-1)可以传输与接收数据(例如,通过双向链路110)。
另外,代理102中的至少一个可以是归属代理,并且代理102中的一个或多个可以是请求或缓存代理。一般而言,请求/缓存代理向归属节点/代理发送对对应的“归属代理”与其相关联的存储器地址的访问的请求。进一步,在一个实施例中,代理102中的一个或多个(只示出了一个,代理102-1)可以访问诸如存储器120之类的存储器(该存储器可以专用于代理或与其他代理共享)。在某些实施例中,代理102中的每一个(或者至少一个)可以耦合到存储器120,该存储器120要么与代理在同一个管芯上,要么以别的方式可被代理访问。如图1所示,网络结构104可包括一个或多个路由逻辑150,以耦合两个代理,以允许代理间的通信。此外,在一个实施例中,非常薄的硬件网络接口将每个代理102耦合到一个或多个路由逻辑150。薄的硬件网络接口可以类似于但是互补于下面所描述的Y单元(Yunit)和垫片(Shim)硬件块。
图2是根据一实施例的计算系统200的框图。系统200包括多个插槽202-208(示出了四个,但是一些实施例可以具有更多或更少插槽)。每一个插槽都包括处理器。而且,系统200中的各个代理还可以通过路由逻辑150进行通信。尽管路由逻辑150只被示为耦合202-208,但是,路由逻辑150可以耦合系统200中的其他代理。此外,取决于实现,在系统中可以存在更多或更少的路由逻辑块。另外,每一个插槽都通过点对点(PtP)链路,或差分互连,诸如快速路径互连(QPI),MIPI(移动行业处理器接口),等等,耦合到其他插槽。如参考图1的网络结构104所讨论的,每一个插槽都耦合到系统存储器的本地部分,例如,通过包括动态随机存取存储器(DRAM)的多个双列直插存储器模块(DIMM)形成的。
在另一个实施例中,网络结构可以用于任何片上系统(SoC或SOC)应用,使用自定义或标准接口,诸如,用于AMBA(高级微控制器总线体系结构)、OCP(开放内核协议)、MIPI(移动行业处理器接口)、PCI(外围组件互连)或PCIe(外围组件互连快速)的ARM兼容的接口。
一些实施例使用允许在基于PC(个人计算机)的系统(诸如基于PCI的系统)使用异构资源而无需对IP资源本身作出任何更改的技术,诸如AXI/OCP技术。一些实施例提供两个非常薄的硬件块(此处称为Y单元和垫片),它们可以被用来将AXI/OCP IP插入到自动生成的互连结构中,以创建PCI兼容系统。在一个实施例中,Y单元的第一(例如,北)接口连接到适配器块,该适配器块接口至PCI兼容总线,诸如直接媒体接口(DMI)总线,PCI总线,或外围组件互连快速(PCIe)总线。第二(例如,南)接口直接连接到非PC互连,诸如AXI/OCP互连。在各实现中,此总线可以是OCP总线。
在某些实施例中,Y单元通过将PCI配置周期转换为目标IP能够理解的事务,来实现PCI枚举。此单元还执行从可重新定位的PCI地址到固定的AXI/OCP地址以及相反的地址转换。Y单元还可以进一步实现一种排序机制,用以满足生产者-消费者模型(例如,PCI生产者-消费者模型)。单个IP又通过专用PCI垫片,连接到互连。每一垫片都可以为对应的IP实现整个PCI头部。Y单元将对PCI头部和设备存储器空间的所有访问路由到垫片。垫片消耗所有头部读/写事务,并将其他事务传递到IP。在某些实施例中,垫片还为IP实现所有功率管理相关特征。
如此,并非是单块兼容性块,实现Y单元的一些实施例采取分布式方法。在Y单元中实现了跨所有IP共同的功能,例如,地址转换和排序,而在垫片中实现针对IP定制的诸如功率管理、错误处理等等之类的IP专用功能。
如此,可以利用对Y单元的最小的更改,添加新IP。例如,在一种实现中,可以通过在地址重定向表中添加新条目,来进行更改。尽管垫片是IP专用的,但是,在某些实现中,大量的功能(例如,多于90%)是跨所有IP共同的。这允许新IP的现有垫片的快速重新配置。如此,一些实施例还允许在没有修改的情况下使用自动生成的互连结构。在点对点总线体系结构中,设计互连结构是一项具有挑战性的任务。上文所描述的Y单元方法利用最小的努力将行业生态系统贯彻到PCI系统中,而不要求对行业标准工具的任何修改。
如图2所示,每一个插槽都耦合到存储器控制器(MC/归属代理(HA)(诸如MC0/HA0到MC3/HA3)。存储器控制器耦合到对应的本地存储器(被标记为MEM0到MEM3),本地存储器可以是系统存储器(诸如图9的存储器912)的一部分。在某些实施例中,存储器控制器(MC)/归属代理(HA)(诸如MC0/HA0到MC3/HA3)可以与图1的代理102-1相同或类似,被标记为MEM0到MEM3的存储器可以与参考此处的图形中的任何一个所讨论的存储器设备相同或类似。在一个实施例中,MEM0到MEM3也可以被配置成镜像数据,例如,作为主和从。在某些实施例中,系统200中的一个或多个组件也可以被包括在同一个集成电路管芯中。
进一步地,一种实现(诸如在图2中所示出的)用于带有镜像的插槽无粘接(socketglueless)配置。例如,分配给存储器控制器(诸如MC0/HA0)的数据通过PtP链路被镜像到另一个存储器控制器(诸如MC3/HA3)。
一般而言,当设计网络系统时,一些主要考虑是最小化面积和功率耗散。这样的局限性强制了对拓扑、交换策略、路由功能和架构实现的某些选择。此外,网络设计可以使用互连在一起的多个路由器(诸如路由逻辑150),以满足特定系统的带宽要求。
图3示出了可以用于一些实施例中的路由逻辑的架构。一个或多个链路控制器(“LC”,未示出)用于协调(此处也可互换地称为分组)跨两个相邻交换机的物理链路的消息流。缓冲区(诸如输入缓冲区302和输出缓冲区304)存储跨路由逻辑150传输的消息。路由单元逻辑306通过为输入端口310中的传入分组选择输出端口308,来实现路由功能。交叉开关单元逻辑312将交换机输入缓冲区302连接到交换机输出缓冲区304。调度器单元逻辑314(例如,同步地)通过将输出端口可用性与来源于位于输入端口中的消息的请求进行匹配,来在每个周期配置交叉开关单元逻辑312。路由单元逻辑306是驱动网络的最终性能的最重要的参数之一。设计路由单元对于带有多个虚拟信道的无损网络而言是具有挑战性的,因为它需要争取获得网络的最大潜力(即,在实现高带宽和低延迟的同时,消耗低功率),同时使网络保持完全连接,并免受死锁、活锁等等的危险。消息一般在头部flit中携带目的地地址。对于通过特定输入端口(例如,S)到达路由逻辑150的每个头部flit,检测目的地地址(例如,D),并选择所有可能的输出端口(例如,P)。在某些实施例中,使用基于表的方法,该方法存储可以用于每一个目的地节点的输出端口。在其他实施例中,使用基于最小路径分布式路由方案,该方案存储可以用于每一个目的地节点的输出端口。后一种方法可以使用最小的逻辑并允许使用不同的路由算法,并将交换机中的昂贵的路由表(就能量消耗和面积而言)替换为快速并高效的逻辑块组。
图4示出了根据一实施例的路由功能的主要组件的框图。在一个实施例中,路由功能通过图3的路由单元逻辑306来实现。如图4所示,当设计路由功能时,有两个主要组件要考虑,高效并且有效的路由框架的设计以及对路由算法的选择以及与它相关联的选择功能。
一般而言,路由算法规定网络上的分组所使用的路径。设计人员面临着设计提供尽可能最低的通信延迟、尽可能高效地使用内部带宽,以及甚至,当发生拥塞或检测到瓶颈时修改流量的路由算法的问题。路由算法可以被分为三个不同的类别:确定性的,自适应的,以及不在意的(oblivious)。
确定性路由算法始终为源-目的地节点对选择相同路径。确定性的方法的主要优点之一是其简单性,延迟可预测性以及分组的有序到达的维持。然而,确定性路由可能会导致网络资源的低效使用,因为它始终为每个源以及目的地对提供相同路径。如此,使用确定性路由算法的网络不能动态地对由于吞吐量退化导致的网络拥塞或瓶颈作出响应。
另一方面,不在意的路由考虑与相同源-目的地节点对不同的路径,但是,在源节点中,在对当前网络负载没有任何了解的情况下选择路径。
其他备选方案是使用其中分组采取不同的路径的自适应路由。然而,取决于当前流量条件,在网络内决定轮次;如此,通过使用替代的路由路径,避免网络中的竞争。这在低和中等流量状况下导致更高的吞吐量以及资源利用。令人遗憾的是,当存在高负载或瓶颈时,自适应路由具有跨网络轻松地分散拥塞的倾向,当存在这样的状况时导致吞吐量的显著的丧失。
此外,自适应路由机制还带有两个不同的功能:路由和选择。如图4所示,根据一实施例,路由功能提供一组输出通道,这些输出通道在节点之间提供死锁自由度和完全连通性。选择功能负责基于从其他节点收集到的关于流量状况的信息,只选择所有可能的选项之中的一个选项。
设计人员通常使用用于支持确定性路由算法(诸如维序路由(DOR),其中,分组首先在水平维度被路由,然后在垂直维度被路由)的有限态机器,来实现简单路由框架。用于实现分布式路由的另一方法使用存储应该用于每一目的地节点的输出端口的表。此方法的主要优点是,相同的通用设计可以反复用于实现任何网络拓扑和路由算法。主要挑战是设计高效(就面积和能量而言)路由框架,该路由框架组合两种路由算法的优点,即,在高负载状况下的确定性路由的延迟可预测性和由自适应路由方案所提供的中等和低负载状况下的高资源利用。
一般而言,互连上的流量是指消息正在两个代理(诸如参考图1所讨论的代理102)之间传输。这些消息可以作为多个flits来传输。“flit”(流控制位(flow control digit)的缩写)是流控制的最小的单位。消息一般由多个flits构成。另外,在一个实施例中,“flit”还可包括80比特,例如,8比特用于错误检测,8比特用于链路层头部,64比特用于数据,但是也可以使用其他配置。路由器(例如,逻辑150)可以被设计为能支持多个虚拟信道,以允许所有消息类型被映射到相同物理网络;如此,在任何时间和在网络中的任何一点为给定流量混合提供可用带宽的最佳使用。
一个网络体系结构实施例使用虚拟信道流控制来实现对各种类型的确定性的,容错的,以及自适应路由中的无死锁路由的支持。而且,尽管缓冲区是每个微片地分配的,但是虚拟信道(VC)是在分组级别分配的。在一个实施例中(诸如图5所示出的),虚拟信道(VC)的组被灵活地分为两个逻辑组:路由VC(例如,VC0-VC3)以及性能VC(例如,VC4-VC9)。
路由VC可以用于满足所使用的特定完全路由算法的死锁-自由度要求。在此情况下,路由VC提供支持无死锁路由算法所需的逃逸(escape)资源。它们还用于在各消息类别之间提供将确保带有死锁自由度的协议的流量分隔。为此,实施例实现至少与存在于协议中的消息类别一样多的路由VC,只让属于正确的消息类别的分组使用分配给该消息类别的路由VC。此外,图5还示出了根据实施例的路由器的输入端口的十个虚拟信道中的逻辑划分。VC中的四个(例如,VC0-VC3)是路由VC,其余六个(例如,VC4-VC9)属于性能VC类别。
在某些实施例中,支持无死锁的路由算法和协议流量分隔是指,为使路由VC向另一个路由VC发送分组,它遵循下列规则:(a)目的地路由VC位于“逃逸”端口中(如果要求死锁-自由度,对于相同消息类别,网络中的路由VC之间依赖关系图不能呈现周期);和/或(b)目的地路由VC消息类别匹配(协议流量分隔)。
每一路由VC都可以具有其自己的预留的用于接收flit的信用(确保如果路由VC不在使用中,那么,它至少为一个flit提供空间)。性能VC可以属于用于性能改善的VC的公用的共享的池(例如,对于自适应或确定性路由方案两者)。性能VC由于它们的消息类别亲缘关系,可以形成可被任何分组使用而不会有任何限制的虚拟信道的池。与路由VC相反,性能VC可能没有任何预留的信用,如此,任何潜在的传入分组都必须借助于共享信用池来检查是否有空间。
一旦带有所需路由信息的头部flit到达输入端口,它就试图访问耦合到后面的下游路由逻辑的对应的输出端口。如果不是这样,它需要检查那里的资源((包括缓冲区空间和空闲VC可用性)。
在某些实施例中,当请求下一路由器的输入端口处的空闲VC时,使用优先级排序,通过如下:
(a)首先,检查空闲性能VC和信用可用性(后者不由前者确保)。如果两个条件都被满足,那么,准备这样的对交换机分配流水线的请求。
(b)否则,检查是否有属于分组的消息类别的空闲路由VC。如果发现,那么,准备这样的对交换机分配流水线的请求。
在一个实施例中,每个分组地分配虚拟信道。因此,只有当先前分组的所有flits都已被逻辑150转发时,VC才可被重复使用。因此,一旦分组的尾flit离开输入端口,那么,使VC可用于下一传入的分组。
图6示出了根据一实施例的在在输入端口处接收时对头部flits(消息的第一flit)执行的方法的流程图。每当新消息头部到达交换机(例如,路由逻辑150)时,都可以重复此方法。
参考图6,在操作602,一旦头部消息(例如,消息的第一flit)到达输入端口,路由功能(例如,通过逻辑150)在操作604,基于底层路由算法,收集关于所有可能的输出端口的信息。对于完全自适应路由和部分自适应路由,寄存器输出_部分_0(output_port_0)存储逃逸路由的输出端口,而寄存器输出_部分_1(output_port_1)存储提供自适应性的输出端口。同时(或在操作604之后),路由逻辑150可在操作606处(例如,持续地)更新关于在近邻路由器(例如,接近另一逻辑150的逻辑150,其中接近指示经由一个或多个其他逻辑150的通信能力)中检测到的任何拥塞的信息。基于此信息,路由逻辑150在操作608选择关于两个可能的输出端口的适当的信息并对照可配置参数(例如,UPPER_PERFVC(较高性能VC)、UPPER_CREDIT(较高信用值)、LOWER_PERFVC(较低性能VC)、以及LOWER_CREDIT(较低信用值))比较它们。可通过(例如,同时地)更新用于潜在输出端口的每一个的拥塞标志寄存器来概括此例程。此外,选择功能负责基于在先前步骤期间更新的拥塞标志寄存器以及输出端口处可用的VC的类型来选择最方便的输出端口。一旦路由功能完成,可在交换机处更新分组上下文,并且分组继续进行竞争跟随交换机流水线的适当的输出端口。
进一步地,路由算法负责提供一组输出端口(基于路由算法),该一组输出端口在节点之间提供死锁自由度和完全连通性。例如,在由路由算法所提供的两个可能的输出端口之间,output_port_0被指定为向路由功能提供确定性的端口。当处理完全自适应路由时,此端口是提供逃逸路由的端口。另一方面,output_port_1被视为自适应选项,且此端口提供带有变得自适应的能力的路由功能。在某些情况下,output_port_0可以是存在的唯一选项(即,当只向一个维度路由时),而在某些其他情况下,output_port_0和output_port_1两者都可以存在。在后一种情况下,选择功能负责基于从其他节点收集到的关于流量状况的信息,只选择所有可能的选项之中的一个选项。
一个路由器实施例依赖于实现内容感知的自适应节制(CAAT)机制以执行选择功能的路由框架。具体而言,在一个实施例中,一个完全自适应路由算法将自适应输出端口的使用约束到已经使用了逃逸VC的那些消息。另外,当拥塞出现在当前节点上时,CAAT机制约束自适应性的使用。如此,在拥塞过程中,大多数流量遵循逃逸路径(确定性路线),从而避免拥塞跨整个网络的快速分散,以及当网络稳定时性能的不愉快的减弱。
图7示出了根据一实施例的用于检查拥塞的方法的流程图。更具体而言,图7所示出的方法可以被用来执行图6的操作606。对于路由逻辑150中的每一个输出端口,一个周期接一个周期地,重复此方法。例如,同时,每个周期都更新有关在近邻路由器中可用的性能VC的数量(#perfVCs)和共享信用的数量(#ShCred)的新信息。进一步,为了检测拥塞,CAAT依赖于下列可配置参数UPPER_PERFVC、UPPER_CREDIT、LOWER_PERFVC,以及LOWER_CREDIT。
在操作702中,拥塞标志(“congestion_flag”)被复位(例如,到0,或另一个值,这取决于实现)。一些实施例使用两组可配置阈值。每一组都包括若干个空闲性能VC(UPPER_PERFVC和LOWER_PERFVC)和空闲共享信用(UPPER_CREDIT和LOWER_CREDIT)。例如,下阈值可以被设置为2个性能VC和2个空闲共享信用,而上阈值可以被设置为5个性能VC和5个空闲共享信用。利用此方法,显然,较低的参数(LOWER_PERFVC,LOWER_CREDIT)的值越大,路由算法的行为变得越确定。
对于路由逻辑150上的每一个输出端口,如果在操作704中端口上的资源大于上阈值(例如,在性能VC的数量(#perfYCs)大于高性能VC(UPPER_PERFVC)并且共享信用的数量(#ShCred)大于高信用值(UPPER_CREDIT)的情况下),则在操作706中清除状态比特(例如,congestion_flag(拥塞_标志))。如果在操作708中,端口上的资源等于或小于下阈值(例如,在性能VC的数量(#perfVCs)小于或等于低性能VC(LOWER_PERFVC)或共享信用的数量(#ShCred)小于或等于下信用值(LOWER_CREDIT)的情况下),则在操作710中,状态比特(例如,congestion_flag)被设置为指示输出端口处于拥塞中。在操作712中,返回状态比特(例如,congestion_flag)。完全自适应路由算法通过确保参数LOWER_PERFVC比0大,来确保死锁自由度。这又确保输出端口1决不会阻止逃逸路由(路由VC)。
在图8的下一流程图中示出了路由逻辑150中的选择功能(例如,图6的操作608)。图8的方法检查在输出端口1(例如,其是指提供自适应性的输出端口)中是否有拥塞存在,如果检测到,返回确定性的端口作为获胜者,废弃路线上的任何可能的自适应性。因此,基于拥塞标志的值、路由算法,以及在输出端口中可用的VC的类型(例如,优先权被给予性能VC)。
更具体而言,在操作802中,输出端口1被设置为有效(valid),其拥塞标志被清除。操作804检测输出端口1处的拥塞标志的值。如果在操作806存在拥塞,则在操作808,清除输出端口1有效性比特/标志;否则,如果在操作810中输出端口1有效,在操作812中,返回输出端口1。如果输出端口1在操作810中被判断为无效,则在操作812中返回输出端口0而不是输出端口1。
相应地,此处所描述的CAAT机制在利用完全自适应路由来缩短分组等待时间变化方面非常有效。具体而言,当使用带维度次序路由的完全自适应路由算法作为逃逸路由时,CAAT机制可以有效地降低平均分组等待时间的标准偏差的变化,而同时在网络处于拥塞中时将吞吐量维持在可接受的水平。因此,CAAT允许基于网络的拥塞状况来审慎地在确定性和自适应路由之间切换。
图9示出了计算系统900的实施例的框图。图1的代理102中的一个或多个可以包括计算系统900的一个或多个组件。系统900的各种组件也可包括如图9所示的路由逻辑150。然而,可以在系统900中的多个位置,包括或排除所示出的那些,提供逻辑150。计算系统900可包括耦合到互连网络(或总线)904的一个或多个中央处理单元(CPU)902(可以统称为“处理器902”)。处理器902可以是任何类型的处理器,诸如通用处理器、网络处理器(可以处理通过计算机网络905传递的数据),等等(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。此外,处理器902还可以具有单核或多核设计。带有多核设计的处理器902可以将不同类型的处理器核集成在同一个集成电路(IC)管芯上。带有多核设计的处理器902还可以实现为对称的或不对称的多处理器。
处理器902可包括一个或多个高速缓存,在各实施例中,这些高速缓存可以是专用的和/或被共享。一般而言,高速缓存存储对应于存储在别处或较早的计算出的原始数据的数据。为降低存储器访问延迟,一旦数据被存储在高速缓存中,可以通过访问缓存的副本而并非预取或重新计算原始数据,来进行未来的使用。高速缓存可以是任何类型的高速缓存,诸如1级(L1)高速缓存、2级(L2)高速缓存、3级(L3)、中级高速缓存、末级高速缓存(LLC),等等,用于存储被系统900的一个或多个组件使用的电子数据(例如,包括指令)。另外,这样的高速缓存可以位于各种位置(例如,在此处所讨论的计算系统的其他组件内,包括图1,2,9或10的系统)。
芯片组906可以另外耦合到互连网络904。进一步,芯片组906可包括图形存储器控制中枢(GMCH)908。GMCH 908可包括耦合到存储器912的存储器控制器910。存储器912可以存储数据,例如,包括由处理器902,或与计算系统900的组件进行通信的任何其他设备执行的指令序列。在本发明的一个实施例中,存储器912还可包括一个或多个易失性存储器设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(同步RAM),等等。还可以使用非易失性存储器,诸如硬盘。额外的设备可以耦合到互连网络904,诸如多个处理器和/或多个系统存储器。
GMCH 908还可以包括耦合到显示设备916的图形接口914(例如,在一个实施例中,通过图形加速器)。在一个实施例中,图形接口914可以通过加速图形端口(AGP)耦合到显示设备916。在本发明的一个实施例中,显示设备916(诸如平板显示器)可以耦合到图形接口914,通过,例如,将存储在存储设备(诸如视频存储器或系统存储器(例如,存储器912))中的图像的数字表示转换为被显示器916解释和显示的显示信号的信号转换器。
如图9所示,中枢接口918可以将GMCH 908耦合到输入/输出控制中枢(ICH)920。ICH 920可以提供到耦合到计算系统900的输入/输出(I/O)设备的接口。ICH 920可以通过外围桥接器(或控制器)924,诸如可以与PCIe规范兼容的外围组件互连(PCI)桥接器,通用串行总线(USB)控制器,等等,耦合到总线922。桥接器924可以在处理器902和外围设备之间提供数据路径。可以使用其他类型的拓扑。此外,多个总线还可以耦合到ICH 920,例如,通过多个桥接器或控制器。进一步,总线922可以包括其他类型的总线系统和配置。此外,耦合到ICH 920的其他外围设备可包括,在本发明的各实施例中,集成驱动器电子电路(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI)),等等。
总线922可以耦合到音频设备926、一个或多个磁盘驱动器928,以及网络适配器/接口930(在一个实施例中,可以是NIC)。在一个实施例中,网络适配器930或耦合到总线922的其他设备可以与芯片组906进行通信。此外,在本发明的某些实施例中,各种组件(诸如网络适配器930)也可以耦合到GMCH 908。另外,处理器902和GMCH 908还可以被组合成单个芯片。在一个实施例中,可以在CPU 902中的一个或多个中提供存储器控制器410。进一步,在一个实施例中,GMCH 908和ICH 920可以合并成外围控制中枢(PCH)。
另外,计算系统900可包括易失性和/或非易失性存储器。例如,非易失性存储器可包括下列各项中的一项或多项:只读存储器(ROM)、可编程ROM(PROM)、可擦PROM(EPROM)、电EPROM(EEPROM)、磁盘驱动器(例如,928)、软盘、光盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘,或能够存储电子数据(例如,包括指令)的其他类型的非易失性机器可读取的介质。
在一个实施例中,存储器912可包括下列各项中的一项或多项:操作系统(O/S)932、应用程序434,目录901,和/或设备驱动程序936。存储器912也可以包括专用于存储器映射的I/O(MMIO)操作的区域。存储在存储器412中的程序和/或数据可以作为存储器管理操作的一部分被交换到磁盘驱动器928中。应用程序934可以执行(例如,在处理器902上),以与耦合到网络905的一个或多个计算设备交换一个或多个分组。在一个实施例中,分组可以是一个或多个符号和/或值的序列,它们可以通过从至少一个发送方向至少一个接收方(例如,通过诸如网络905之类的网络)传输的一个或多个电信号来编码。例如,每一个分组都可以具有头部,该头部包括在路由和/或处理分组时可以使用的各种信息,诸如源地址、目的地地址、分组类型,等等。每一个分组都也可以具有有效负载,该有效负载包括分组通过计算机网络(诸如网络905)在各种计算设备之间传输的原始数据(或内容)。
在一个实施例中,应用程序934可以使用O/S 932来与系统900的各种组件进行通信,例如,通过设备驱动程序936。因此,设备驱动程序936可包括网络适配器930特定的命令,以在O/S 932和网络适配器930,或,例如,通过芯片组906,耦合到系统900的其他I/O设备之间提供通信接口。
在一个实施例中,O/S 932可包括网络协议堆栈。协议堆栈一般是指一组过程或程序,它们可以被执行以处理通过网络905发送的分组,其中,分组可以符合指定的协议。例如,可以使用TCP/IP堆栈来处理TCP/IP(传输控制协议/因特网协议)分组。设备驱动程序936可以可以指出存储器912中要被处理(例如,通过协议堆栈)的缓冲区。
网络905可包括任何类型的计算机网络。网络适配器930还可以包括直接存储器访问(DMA)引擎,该引擎将分组写入到分配给可用的描述符(例如,存储在存储器912中的)缓冲区(例如,存储在存储器912中),以通过网络905传输和/或接收数据。另外,网络适配器930还可包括网络适配器控制器,该网络适配器控制器可包括执行适配器相关的操作的逻辑(诸如一个或多个可编程处理器)。在一个实施例中,适配器控制器可以是MAC(媒体访问控制)组件。网络适配器930还可以包括存储器,诸如任何类型的易失性/非易失性存储器(例如,包括一个或多个高速缓存和/或参考存储器912所讨论的另一存储器类型)。
图10示出了根据本发明的一个实施例的按点对点(PtP)配置排列的计算系统1000。具体而言,图10示出了其中处理器、存储器,以及输入/输出设备通过若干个点对点接口来互连的系统。参考图1-9所讨论的操作可以由系统1000的一个或多个组件来执行。
如图10所示,系统1000可包括多个处理器,为清楚起见,只示出了其中两个,处理器1002和1004。处理器1002和1004可以各自都包括本地存储器控制器中枢(GMCH)1006和1008,以实现与存储器1010和1012的通信。存储器1010和/或1012可以存储各种数据,诸如参考图10的存储器1012所讨论的那些。如图10所示,处理器1002和1004(或系统1000的其他组件,诸如芯片组1020,I/O设备1043,等等)也可以包括一个或多个高速缓存,诸如参考图1-10所讨论的那些。
在一个实施例中,处理器1002和1004可以是参考图10所讨论的处理器1002中的一个。处理器1002和1004可以分别使用PtP接口电路1016和1018,通过点对点(PtP)接口1014,交换数据。处理器1002和1004还可以各自使用点对点接口电路1026,1028,1030,以及1032,通过单个PtP接口1022和1024,与芯片组1020交换数据。芯片组1020还可以进一步通过高性能的图形接口1036,例如,使用PtP接口电路1037,与高性能的图形电路1034交换数据。
在至少一个实施例中,可以在处理器1002,1004和/或芯片组1020中的一个或多个中提供目录高速缓存和/或逻辑。然而,本发明的其他实施例,可以存在于图10的系统1000内的其他电路、逻辑单元,或设备中。进一步地,本发明的其他实施例可以分布在图10中所示出的多个电路、逻辑单元,或设备中。例如,系统1000的各种组件可包括图1的逻辑150。然而,可以在系统1000中的多个位置,包括或排除所示出的那些,提供逻辑150。
芯片组1020可以使用PtP接口电路1041,与总线1040进行通信。总线1040可以具有与它进行通信的一个或多个设备,诸如总线桥接器1042和I/O设备1043。通过总线1044,总线桥接器1042可以与其他设备,诸如键盘/鼠标1045,通信设备1046(诸如调制解调器、网络接口设备,或可以与计算机网络1005进行通信的其他通信设备),音频I/O设备,和/或数据存储设备1048,进行通信。数据存储设备1048可以存储可以由处理器1002和/或1004执行的代码1049。
以下示例关于进一步的实施例。示例1包括一种设备,包括:路由逻辑,用于确定用于传输将在输入端口处被接收的传入消息的输出端口,其中所述路由逻辑将基于将在可通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,其中所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。示例2包括示例1的设备,其中所述确定性路由能够为源和目的地节点对选择相同路径。示例3包括示例1的设备,其中所述自适应路由能够基于流量信息,为源和目的地节点对选择不同的路径。示例4包括示例1的设备,其中所述拥塞信息将基于能够传递所述传入消息的数个性能虚拟信道与较低性能虚拟信道阈值的比较来确定。示例5包括示例1的设备,其中所述拥塞信息将基于对应于能够传递所述传入消息的一个或多个虚拟信道的数个共享信用与较低信用阈值的比较来确定。示例6包括示例1的设备,其中所述路由逻辑将响应于检测到所述传入消息的第一flit,确定所述输出端口。示例7包括示例1所述的设备,包括用于将所述输出端口的可用性与所述传入消息匹配的调度器逻辑。示例8包括示例1所述的设备,包括用于通信地耦合所述输入端口和所述输出端口的交叉开关逻辑。示例9包括示例1所述的设备,包括用于通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁路由的逻辑。示例10包括示例1所述的设备,包括用于通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据来支持无死锁路由的逻辑。示例11包括示例10所述的设备,其中所述分组将包括多个flit。示例12包括示例1所述的设备,其中所述路由逻辑将基于多个路由虚拟信道,提供无死锁路由。示例13包括示例1所述的设备,其中所述路由逻辑将通过链路,将第一代理耦合到第二代理,其中所述链路将包括点对点互连。示例14包括示例13所述的设备,其中所述第一代理和所述第二代理中的一个或多个将包括多个处理器核。示例15包括示例13所述的设备,其中所述第一代理和所述第二代理中的一个或多个将包括多个插槽。示例16包括示例13所述的设备,其中所述第一代理、所述第二代理、所述路由逻辑,以及存储器中的一个或多个位于同一集成电路管芯上。
示例17包括一种方法,包括:在路由逻辑中,确定用于传输将在输入端口处被接收的传入消息的输出端口,其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,从第一输出端口和第二输出端口中选择所述输出端口,其特征在于,所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。示例18包括示例17所述的方法,进一步包括将所述输出端口的可用性与所述传入消息匹配。示例19包括示例17所述的方法,进一步包括通信地耦合所述输入端口以及所述输出端口。示例20包括示例17所述的方法,进一步包括通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁的路由。示例21包括示例17所述的方法,进一步包括通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据来支持无死锁的路由。
示例22包括一种系统,包括:存储拥塞信息的存储器;以及,耦合到所述存储器的路由逻辑,用于确定用于传输将在输入端口处被接收的传入消息的输出端口,其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,其中所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。示例23包括示例22的系统,其特征在于,所述确定性路由能够为源和目的地节点对选择相同路径。示例24包括示例22的系统,其中所述自适应路由能够基于流量信息,为源和目的地节点对选择不同的路径。
示例25包括一种设备,包括:用于在路由逻辑处确定用于传输将在输入端口处被接收的传入消息的输出端口的装置,其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,其中所述第一输出端口将为所述传入消息提供确定性路由,所述第二输出端口将为所述传入消息提供自适应路由。示例26包括示例25所述的设备,进一步包括用于将所述输出端口的可用性与所述传入消息匹配的装置。示例27包括示例25的设备,进一步包括用于通信地耦合所述输入端口以及所述输出端口的装置。示例28包括示例25的设备,进一步包括用于通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁路由的装置。示例29包括示例25的设备,进一步包括用于通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据来支持无死锁路由的装置。
示例30包括其中包括一个或多个指令的计算机可读介质,所述指令在处理器上执行时,导致处理器执行如示例17到21中任一示例所述的一个或多个操作。示例31包括示例17和18中的任一项所述的方法,进一步包括通信地耦合所述输入端口以及所述输出端口。示例32包括示例17到19中的任一项所述的方法,进一步包括通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁路由。示例33包括示例17到20中的任一项所述的方法,进一步包括通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据来支持无死锁路由。
在本发明的各实施例中,例如,此处参考图1-10所讨论的操作,可被实现为硬件(例如,电路)、软件、固件、微代码,或其组合,它们可以作为计算机程序产品提供,例如,包括有形的(例如,非瞬时的)机器可读的或(例如,非瞬时的)在其上存储了用于编程计算机以执行此处所讨论的过程的指令(或软件过程)的计算机可读介质。术语“逻辑”作为示例可包括软件、硬件,或软件和硬件的组合。机器可读取的介质可包括存储设备,诸如参考图1-10所讨论的那些。另外,这样的计算机可读介质还可以被作为计算机程序产品下载,其中,经由通信链路(例如,总线、调制解调器和/或网络连接),通过在载波或其他传播介质中提供的数据信号,可将程序从远程计算机(例如,服务器)传输到请求计算机(例如,客户机)。
说明书中对“一个实施例”、“实施例”的引用意味着结合该实施例所描述的特定特征、结构或特性可以被包括在至少一个实现中。在本说明书中的不同位置出现短语“在一个实施例中”可以或可以不都是指同一个实施例。
此外,在说明书和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。在本发明的某些实施例中,可以使用“连接”来表示两个或更多元件彼此处于直接的物理和/或电接触的状态。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件可以不彼此直接接触,但是仍然彼此协作、彼此相互作用。
如此,尽管已经用对结构特征和/或方法动作专用的语言描述了本发明的各实施例,但可以理解,所要求保护的主题可以不必受所描述的这些具体特征或动作的限制。相反,具体特征和动作是作为实现所要求保护的主题的示例形式来公开的。
Claims (25)
1.一种用于利用自适应路由来控制资源利用的设备,所述设备包括:
路由逻辑,用于确定用于传输将在输入端口处被接收的传入消息的输出端口,
其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,
其中所述第一输出端口将为所述传入消息提供确定性路由,而所述第二输出端口将为所述传入消息提供自适应路由,
其中所述拥塞信息将基于以下之一来确定:性能虚拟信道的数量与较低性能虚拟信道阈值的比较;或共享信用的数量与较低信用阈值的比较。
2.如权利要求1所述的设备,其特征在于,所述确定性路由能够为源和目的地节点对选择相同路径。
3.如权利要求1所述的设备,其特征在于,所述自适应路由能够基于流量信息,来为源和目的地节点对选择不同的路径。
4.如权利要求1所述的设备,其特征在于,所述性能虚拟信道能够传递所述传入消息。
5.如权利要求1所述的设备,其特征在于,所述共享信用对应于能够传递所述传入消息的一个或多个虚拟信道。
6.如权利要求1所述的设备,其特征在于,所述路由逻辑将响应于检测到所述传入消息的第一flit,来确定所述输出端口。
7.如权利要求1所述的设备,其特征在于,包括用于将所述输出端口的可用性与所述传入消息匹配的调度器逻辑。
8.如权利要求1所述的设备,其特征在于,包括通信地耦合所述输入端口和所述输出端口的交叉开关逻辑。
9.如权利要求1所述的设备,其特征在于,包括用于通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁路由的逻辑。
10.如权利要求1所述的设备,其特征在于,包括用于通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据来支持无死锁路由的逻辑。
11.如权利要求10所述的设备,其特征在于,所述分组将包括多个flit。
12.如权利要求1所述的设备,其特征在于,所述路由逻辑将基于多个路由虚拟信道来提供无死锁路由。
13.如权利要求1所述的设备,其特征在于,所述路由逻辑将通过链路将第一代理耦合到第二代理,其中所述链路将包括点对点互连。
14.如权利要求13所述的设备,其特征在于,所述第一代理和所述第二代理中的一个或多个将包括多个处理器核。
15.如权利要求13所述的设备,其特征在于,所述第一代理和所述第二代理中的一个或多个将包括多个插槽。
16.如权利要求13所述的设备,其特征在于,所述第一代理、所述第二代理、所述路由逻辑,以及存储器中的一个或多个位于同一集成电路管芯上。
17.一种用于利用自适应路由来控制资源利用的方法,所述方法包括:
在路由逻辑处确定用于传输将在输入端口处被接收的传入消息的输出端口,
其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,
其中所述第一输出端口将为所述传入消息提供确定性路由,而所述第二输出端口将为所述传入消息提供自适应路由,
其中所述拥塞信息将基于以下之一来确定:性能虚拟信道的数量与较低性能虚拟信道阈值的比较;或共享信用的数量与较低信用阈值的比较。
18.如权利要求17所述的方法,其特征在于,进一步包括将所述输出端口的可用性与所述传入消息匹配。
19.如权利要求17所述的方法,其特征在于,进一步包括通信地耦合所述输入端口以及所述输出端口。
20.如权利要求17所述的方法,其特征在于,进一步包括通过以每个flit为基础分配一个或多个缓冲区以存储对应于所述传入消息的数据来支持无死锁路由。
21.如权利要求17所述的方法,进一步包括通过以分组级别为基础分配一个或多个虚拟信道以传递对应于所述传入消息的数据,来支持无死锁路由。
22.一种用于利用自适应路由来控制资源利用的系统,所述系统包括:
用于存储拥塞信息的存储器;以及
耦合到所述存储器的路由逻辑,用于确定用于传输将在输入端口处被接收的传入消息的输出端口,
其中所述路由逻辑将基于将在通信地耦合到所述路由逻辑的一个或多个其他路由逻辑处被检测到的拥塞信息,来从第一输出端口和第二输出端口中选择所述输出端口,
其中所述第一输出端口将为所述传入消息提供确定性路由,而所述第二输出端口将为所述传入消息提供自适应路由,
其中所述拥塞信息将基于以下之一来确定:性能虚拟信道的数量与较低性能虚拟信道阈值的比较;或共享信用的数量与较低信用阈值的比较。
23.如权利要求22所述的系统,其特征在于,所述确定性路由能够为源和目的地节点对选择相同路径。
24.如权利要求22所述的系统,其特征在于,所述自适应路由能够基于流量信息,为源和目的地节点对选择不同的路径。
25.一种包括代码的机器可读介质,所述代码被执行时,导致机器执行如权利要求17到21中任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/048514 WO2014209347A1 (en) | 2013-06-28 | 2013-06-28 | Mechanism to control resource utilization with adaptive routing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105247821A CN105247821A (zh) | 2016-01-13 |
CN105247821B true CN105247821B (zh) | 2018-11-06 |
Family
ID=52115500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077013.2A Active CN105247821B (zh) | 2013-06-28 | 2013-06-28 | 用于利用自适应路由来控制资源利用的机制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9294403B2 (zh) |
EP (1) | EP3014821A4 (zh) |
KR (1) | KR101725755B1 (zh) |
CN (1) | CN105247821B (zh) |
WO (1) | WO2014209347A1 (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10740438B2 (en) | 2012-08-16 | 2020-08-11 | Ginger.io, Inc. | Method and system for characterizing and/or treating poor sleep behavior |
US10650920B2 (en) | 2012-08-16 | 2020-05-12 | Ginger.io, Inc. | Method and system for improving care determination |
US10265028B2 (en) | 2012-08-16 | 2019-04-23 | Ginger.io, Inc. | Method and system for modeling behavior and heart disease state |
US10068670B2 (en) | 2012-08-16 | 2018-09-04 | Ginger.io, Inc. | Method for modeling behavior and depression state |
US10741285B2 (en) | 2012-08-16 | 2020-08-11 | Ginger.io, Inc. | Method and system for providing automated conversations |
CN109785972B (zh) | 2012-08-16 | 2023-09-26 | 橙点公司 | 用于对行为和健康变化进行建模的方法 |
US10748645B2 (en) | 2012-08-16 | 2020-08-18 | Ginger.io, Inc. | Method for providing patient indications to an entity |
US10068060B2 (en) | 2012-08-16 | 2018-09-04 | Ginger.io, Inc. | Method for modeling behavior and psychotic disorders |
US10276260B2 (en) | 2012-08-16 | 2019-04-30 | Ginger.io, Inc. | Method for providing therapy to an individual |
US9507746B2 (en) * | 2012-10-22 | 2016-11-29 | Intel Corporation | Control messaging in multislot link layer flit |
US9755901B2 (en) * | 2014-01-21 | 2017-09-05 | Huawei Technologies Co., Ltd. | System and method for a software defined protocol network node |
WO2016039758A1 (en) * | 2014-09-11 | 2016-03-17 | Hewlett Packard Enterprise Development Lp | Non-minimum cost forwarding for packet-switched networks |
US9954792B2 (en) * | 2014-12-20 | 2018-04-24 | Intel Corporation | Shared flow control credits |
US10205660B2 (en) * | 2015-06-03 | 2019-02-12 | Avago Technologies International Sales Pte. Limited | Apparatus and method for packet header compression |
US10193826B2 (en) * | 2015-07-15 | 2019-01-29 | Intel Corporation | Shared mesh |
US10630590B2 (en) * | 2016-07-14 | 2020-04-21 | Mellanox Technologies Tlv Ltd. | Credit loop deadlock detection and recovery in arbitrary topology networks |
US12073308B2 (en) | 2017-01-04 | 2024-08-27 | Stmicroelectronics International N.V. | Hardware accelerator engine |
CN207517054U (zh) | 2017-01-04 | 2018-06-19 | 意法半导体股份有限公司 | 串流开关 |
US11113223B1 (en) * | 2018-04-03 | 2021-09-07 | Xilinx, Inc. | Dual mode interconnect |
CN109150717B (zh) * | 2018-07-04 | 2022-03-22 | 东南大学 | 一种优化片上网络功耗的组合路由方法 |
US11582118B2 (en) | 2018-11-15 | 2023-02-14 | Citrix Systems, Inc. | Real-time scalable virtual session and network analytics |
US11627091B2 (en) | 2019-05-20 | 2023-04-11 | Citrix Systems Inc. | Systems and methods for managing streams of packets via intermediary devices |
DE112020002528B4 (de) | 2019-05-23 | 2024-10-17 | Hewlett Packard Enterprise Development Lp | Algorithmen für die verwendung von lastinformationen von benachbarten knoten beim adaptiven routing |
US11593609B2 (en) | 2020-02-18 | 2023-02-28 | Stmicroelectronics S.R.L. | Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks |
US11283876B2 (en) * | 2020-03-20 | 2022-03-22 | Verizon Patent And Licensing Inc. | Systems and methods for end-to-end request-response flow routing for geographically distributed client devices |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
US11734105B2 (en) * | 2020-07-06 | 2023-08-22 | International Business Machines Corporation | Efficient error reporting in a link interface |
US11710576B2 (en) | 2021-05-24 | 2023-07-25 | OrangeDot, Inc. | Method and system for computer-aided escalation in a digital health platform |
US11625349B1 (en) * | 2021-11-18 | 2023-04-11 | Arm Limited | Apparatus and method for managing prefetch transactions |
US11868384B2 (en) | 2022-03-25 | 2024-01-09 | OrangeDot, Inc. | Method and system for automatically determining responses in a messaging platform |
EP4500362A1 (en) | 2022-05-11 | 2025-02-05 | Orangedot, Inc. | Method and system for automatically prioritizing content provided to a user |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996032681A1 (en) * | 1995-04-13 | 1996-10-17 | Cray Research, Inc. | Adaptive routing mechanism for torus interconnection network |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7221677B1 (en) * | 2000-10-19 | 2007-05-22 | Interactic Holdings, Llc | Scalable apparatus and method for increasing throughput in multiple level minimum logic networks using a plurality of control lines |
KR20050084395A (ko) * | 2002-12-20 | 2005-08-26 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 테스트 액세스 포트 제어기 커플링 방법 및 집적회로 |
US20080056230A1 (en) * | 2006-08-29 | 2008-03-06 | Santhanakrishnan Geeyarpuram N | Opportunistic channel unblocking mechanism for ordered channels in a point-to-point interconnect |
US20080240117A1 (en) * | 2007-03-30 | 2008-10-02 | Telefonaktiebolaget Lm Ericsson (Publ) | System, Method, and Interworking Function for Interfacing MMS and IMS Messaging Systems |
US8401012B2 (en) | 2010-09-15 | 2013-03-19 | Intel Corporation | Packet routing |
US8730965B2 (en) * | 2011-01-05 | 2014-05-20 | Google Inc. | Systems and methods for dynamic routing in a multiprocessor network using local congestion sensing |
US8601423B1 (en) * | 2012-10-23 | 2013-12-03 | Netspeed Systems | Asymmetric mesh NoC topologies |
-
2013
- 2013-06-28 KR KR1020157033700A patent/KR101725755B1/ko active Active
- 2013-06-28 EP EP13887973.9A patent/EP3014821A4/en not_active Withdrawn
- 2013-06-28 WO PCT/US2013/048514 patent/WO2014209347A1/en active Application Filing
- 2013-06-28 US US14/125,707 patent/US9294403B2/en not_active Expired - Fee Related
- 2013-06-28 CN CN201380077013.2A patent/CN105247821B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996032681A1 (en) * | 1995-04-13 | 1996-10-17 | Cray Research, Inc. | Adaptive routing mechanism for torus interconnection network |
Also Published As
Publication number | Publication date |
---|---|
CN105247821A (zh) | 2016-01-13 |
EP3014821A4 (en) | 2017-02-22 |
US9294403B2 (en) | 2016-03-22 |
US20150003247A1 (en) | 2015-01-01 |
KR101725755B1 (ko) | 2017-04-11 |
KR20160004348A (ko) | 2016-01-12 |
WO2014209347A1 (en) | 2014-12-31 |
EP3014821A1 (en) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105247821B (zh) | 用于利用自适应路由来控制资源利用的机制 | |
EP3931706B1 (en) | Adaptive address translation caches | |
US20140092740A1 (en) | Adaptive packet deflection to achieve fair, low-cost, and/or energy-efficient quality of service in network on chip devices | |
Derradji et al. | The BXI interconnect architecture | |
JP6231679B2 (ja) | 周辺コンポーネント相互接続エクスプレスドメインのためのリソース管理 | |
US11372787B2 (en) | Unified address space for multiple links | |
US10693781B2 (en) | In NIC flow switching | |
KR101861312B1 (ko) | 다중슬롯 링크 계층 플릿에서의 제어 메시징 | |
US20190042518A1 (en) | Platform interface layer and protocol for accelerators | |
US7240141B2 (en) | Programmable inter-virtual channel and intra-virtual channel instructions issuing rules for an I/O bus of a system-on-a-chip processor | |
Alian et al. | Netdimm: Low-latency near-memory network interface architecture | |
US10206175B2 (en) | Communications fabric with split paths for control and data packets | |
CN108702339B (zh) | 用于在结构架构中基于服务质量进行节流的装置和方法 | |
US20150188797A1 (en) | Adaptive admission control for on die interconnect | |
US11880327B1 (en) | Non-coherent and coherent connections in a multi-chip system | |
US12143298B2 (en) | Peer-to-peer communication between reconfigurable dataflow units | |
US12206579B2 (en) | Reconfigurable dataflow unit with remote read/write functionality | |
US20240070111A1 (en) | Reconfigurable dataflow unit with streaming write functionality | |
US20240070106A1 (en) | Reconfigurable dataflow unit having remote fifo management functionality | |
Chen | PCI Express-based Ethernet Switch | |
Hanawa et al. | Power-aware, dependable, and high-performance communication link using PCI Express: PEARL |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |