CN116057907A - 片上路由器 - Google Patents

片上路由器 Download PDF

Info

Publication number
CN116057907A
CN116057907A CN202180046198.5A CN202180046198A CN116057907A CN 116057907 A CN116057907 A CN 116057907A CN 202180046198 A CN202180046198 A CN 202180046198A CN 116057907 A CN116057907 A CN 116057907A
Authority
CN
China
Prior art keywords
packet
data
discarded
buffer
router
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
Application number
CN202180046198.5A
Other languages
English (en)
Inventor
史蒂文·弗伯
刘耿廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cogniscience Ltd
Original Assignee
Cogniscience Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cogniscience Ltd filed Critical Cogniscience Ltd
Publication of CN116057907A publication Critical patent/CN116057907A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/129Avoiding congestion; Recovering from congestion at the destination endpoint, e.g. reservation of terminal resources or buffer space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/32Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3063Pipelined operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

公开了用于在包括多个处理元件的计算芯片上路由数据的路由器,路由器包括:分组处理流水线;丢弃的分组缓冲器;以及一个或多个电路,被配置为:确定分组处理流水线中的数据分组要被丢弃;将要被丢弃的数据分组从分组处理流水线移动到丢弃的分组缓冲器;并且将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。

Description

片上路由器
技术领域
本申请涉及用于在包括多个处理元件的计算芯片上路由数据的路由器以及用于由路由器处理数据分组的对应的方法。
背景技术
当今许多更有力的包括用于诸如天气预报、药物发现、神经模拟和自动驾驶车辆等要求高的科学应用的高性能计算机的计算机,都使用大量通过某种处理器间网络连接在一起的处理器。对这些机器至关重要的是它们的通信网络不会由于通过网络传输的信息分组之间的循环依赖而死锁。死锁是指分组A因为其路径被分组B阻塞而不能继续,并且分组B因为其路径被分组A阻塞而不能继续的情况。两个以上的分组可能参与这种循环依赖,但是原理保持相同。
为了避免循环依赖导致死锁的任何风险,通常的做法是设计这样的网络,使得循环依赖永远不会出现。这可以通过多个网络层的使用或虚拟通道的使用或其他已知技术来实现。这样的技术有效地消除循环依赖的任何可能性,但是它们在支持另外的通信功能所需的硬件方面产生显著的另外的成本。正因如此,期望提供防止处理器间网络中死锁的改进的方法。
发明内容
根据第一方面,提供了用于在包括多个处理元件的计算芯片上路由数据的路由器,路由器包括:分组处理流水线;丢弃的分组缓冲器;和一个或多个电路,一个或多个电路被配置为:确定分组处理流水线中的数据分组要被丢弃;将要被丢弃的数据分组从分组处理流水线移动到丢弃的分组缓冲器;以及将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。
如上所述,现有方法试图设计处理器间网络使得可以导致死锁的循环依赖永远不会出现。然而,这样的技术在支持所需的另外的通信特征所需的硬件方面产生显著的另外的成本。本发明通过允许将可能被阻塞的分组从网络结构中临时移除(“丢弃”)并保存在缓冲器中,从而移除任何循环依赖,来允许更简单的无死锁网络。分组随后可以被重新插入网络中并被正常传送。使用用于分组丢弃和重新插入的硬件机制允许网络即使在拥塞时也保持良好的吞吐量,从而确保从低成本网络结构快速且可靠地传送分组。
在一些其他现有技术方法中,用于丢弃数据分组的过程在软件中执行。例如,在一种现有技术方法中,芯片上的处理元件被指定为监控处理器。当确定分组要被丢弃时,中断信号被发送到监控处理器。然后监控处理器可以复制丢弃的分组并重新传输复制的分组。然而,鉴于监控处理器服务于中断所需的时间,这个过程很慢。通过网络复制和重新传输分组所带来的延迟进一步增加了处理丢弃的分组所需的时间。本发明提供了基于硬件的分组丢弃和重新插入机制作为路由器的一部分。因此,处理丢弃的分组所需的时间被显著地减少,并且路由器在拥塞下的吞吐量可以被增加。由于分组丢弃和重新插入完全发生在路由器内,而不需要将丢弃的分组传输到监控处理器并重新传输到路由器,因此过程也更加节能。另外,由于不需要监控处理器,因此芯片的处理元件可以完全专注于执行它们各自的任务。
将理解,路由器可以在同一芯片的处理元件之间路由数据分组,并且芯片可以被连接使得数据分组可以在不同芯片的处理元件之间路由。也将理解,路由器包括基于硬件的分组丢弃和重新插入机制,该机制包括丢弃的分组缓冲器和一个或多个电路。
一个或多个电路可以包括分组重新插入模块,该分组重新插入模块包括丢弃的分组缓冲器,并且被配置为将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。
一个或多个电路可以被配置为基于指示数据分组的目的地不能接收数据分组的信号来确定分组处理流水线中的数据分组要被丢弃。将理解,目的地可能不一定是数据分组的最终目的地,而是目的地可以包括片上数据网络的中间节点或者可以是路由器的输出端口。为了避免阻塞分组处理流水线,数据分组可能会被丢弃。
分组处理流水线可以进一步包括无序分组缓冲器,并且一个或多个电路可以被配置为将要被丢弃的数据分组从无序分组缓冲器移动到丢弃的分组缓冲器。一个或多个电路可以进一步被配置为选择由分组处理流水线处理的数据分组;确定数据分组的一个或多个目的地;确定数据分组的一个或多个目的地中的目的地不能接收数据分组;以及将数据分组移动到无序分组缓冲器。
无序分组缓冲器可以使停滞的数据分组(即,还不能传输的数据分组)排队,使得分组处理流水线可以继续处理进一步的分组,而无需在继续之前等待停滞的数据分组被丢弃。在数据分组不能被传输的情况下,数据分组可以被存储在无序分组缓冲器中,直到数据分组可以被传输到它的目的地或应该从无序缓冲器中移除以被丢弃。
无序分组缓冲器可以是流水线队列。当新的数据分组变得停滞时,无序分组缓冲器中现有的停滞的数据分组可以在队列中进一步移动以容纳新的停滞的分组。要被丢弃的数据分组可以是无序分组缓冲器中最老的数据分组。
一个或多个电路可以被配置为基于定时器的期满来确定分组处理流水线中的数据分组要被丢弃。例如,在使用无序分组缓冲器的情况下,当数据分组到达缓冲器的末端槽时可以启动定时器。这可能表明缓冲器已满,并且数据分组将要被丢弃以确保分组处理流水线不会过度延迟。在不使用无序分组缓存器的情况下,可以在确定数据分组不能被传输时启动定时器。定时器提供最小等待时间使得分组不会被不必要地丢弃。
一个或多个电路可以被配置为基于定时器将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。例如,定时器可以在分组被移入丢弃的分组缓冲器中并且丢弃的分组缓冲器不再为空时启动。当丢弃的分组从丢弃的分组缓冲器移除并重新插入到分组处理流水线中时,定时器可以被重置。如果丢弃的分组缓冲器不为空,则定时器可以被重新启动。定时器因此在丢弃的分组重新插入之间强制执行最小时间间隔。最小时间间隔可以基于丢弃的分组缓冲器的当前负载和/或路由器的当前状态和/或片上网络的当前状态被动态地配置。
一个或多个电路可以被配置为基于分组处理流水线的负载将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。例如,重新插入请求可以被发送到分组处理流水线,并且当请求被准予时执行重新插入。请求的准予可以基于分组处理流水线的负载和/或当在流水线的开始处有空闲槽时和/或当没有用于处理的新数据分组到达时和/或在与新到达的数据分组周期性或交织的基础上和/或本领域技术人员认为适当的其他条件。一个或多个电路可以包括作为用于处理重新插入请求的分组重新插入模块的一部分的重新插入请求器,并且该重新插入请求器可以连接到重新插入定时器,该重新插入定时器用信号通知何时生成重新插入请求。
路由器可以被配置为提供基于软件的分组卸载操作以移除存储在丢弃的分组缓冲器中的数据分组,以用于在路由器的外部重新处理数据分组。例如,如果丢弃的分组缓冲器已满或接近已满,则可以使用基于软件的机制从丢弃的分组缓冲器移除分组以存储在芯片上的诸如与处理元件相关联的本地存储器的其他地方。然后移除的分组可以在片上网络上被重新传输。路由器可以包括通用寄存器文件中的寄存器,当从寄存器中读取时,该寄存器启动基于软件的分组卸载操作。通用寄存器文件可以被配置为中间存储位置,用于在将分组从路由器复制到芯片上的其他地方之前存储丢弃的分组。
分组处理流水线可以被配置为处理多播数据分组。路由器可以包括多个分组处理流水线。每个分组处理流水线可以被配置为处理特定类型的数据分组,例如多播分组或系统类型分组。丢弃的分组缓冲器可以被配置为服务于所有的分组处理流水线。一个或多个电路可以包括仲裁器以在不同的分组处理流水线的丢弃的分组请求之间进行选择。可替代地,可以有多个丢弃的分组缓冲器,每个丢弃的分组缓冲器服务于多个分组处理流水线中的一个或多个。
丢弃的分组缓冲器可以被配置为存储多个丢弃的数据分组。丢弃的分组缓冲器可以包括一个或多个静态RAM(SRAM)模块。丢弃的分组缓冲器可以进一步包括用于将丢弃的分组复制到丢弃的分组缓冲器中的分组分解缓冲器和用于从丢弃的分组缓冲器移除丢弃的分组的分组重组缓冲器。
计算芯片可以是神经形态芯片。神经形态芯片是用于执行生物神经模拟的专用芯片。在生物神经网络中,处理经由在生物神经网络的神经元之间的电化学脉冲的放电来实现。信息包含在这些脉冲的放电率和定时中。这可以使用一个或多个神经形态芯片来模拟,由此神经形态芯片的处理元件被配置为模拟单个神经元的活动。代表脉冲的数据分组以适当的时间和速率在神经元(处理元件)之间发送。因此,鉴于模拟的潜在大规模性质以及模拟以生物实时方式发生的期望,芯片上和芯片间的数据流量的有效管理至关重要。
另外,鉴于神经连接的一对多性质,代表神经通信的数据分组可以作为多播分组被发送。为了简化多播分组的传送,可以使用全有或全无策略,使得分组必须可传送到所有目的地,或者根本不被传输。这样的策略可能导致在数据分组可以被传输之前的另外的等待时间。另外,多播分组可能需要创建同一分组的多个副本,这也可能在路由器内造成延迟,并且还可能影响路由器吞吐量。
此外,神经形态芯片上的组件可能以不同的速度运行,并且可能需要对从路由器到各种组件的传输速率进行限制,以避免这些组件不堪重负。例如,处理元件可能不能像路由器能够传输分组那样快速地处理分组。正因如此,对于数据分组可以多快地从路由器传输到同一处理元件可能有限制。在另一示例中,神经形态芯片可以被连接在一起以增加可用的处理能力。分组可以通过芯片间链路被传输到不同芯片的处理元件。芯片间链路可能比路由器运行得慢,并且正因如此,可能存在对经由芯片间链路将分组传输出路由器的限制,进一步影响路由器吞吐量。
网络拥塞和不能维持足够的路由器吞吐量也会导致片上网络的性能显著下降。例如,特定节点的拥塞可能会阻止分组从路由器传输出去,并且可能导致分组处理流水线停止。鉴于被阻塞的节点可能依赖于其他被阻塞的节点进行路由,并且死锁情况可能出现,这可能反过来导致进一步的拥塞,因为分组在网络中的节点处排队到没有进一步的分组可以被传输的点。如果节点不能像接收分组那样快速地处理分组,或者如果节点已经崩溃,则在节点处可能会出现拥塞。在另一示例中,网络拥塞可能会延迟系统/配置类型分组的及时传输,并且可能导致系统变慢或者甚至崩溃。
如上所述,鉴于提供用于分组丢弃和重新插入的硬件机制,即使在存在网络拥塞的情况下也能够保持良好的吞吐量,本发明特别适合与神经形态芯片一起使用。将理解,上述讨论也可以更普遍地适用于诸如那些用于高性能计算应用(HPC)的计算芯片。
根据另一方面,提供了在包括多个处理元件的计算芯片上路由数据的方法,路由器包括分组处理流水线、丢弃的分组缓冲器和一个或多个电路,方法包括:由一个或多个电路确定分组处理流水线中的数据分组要被丢弃;由一个或多个电路将要被丢弃的数据分组从分组处理流水线移动到丢弃的分组缓冲器;以及由一个或多个电路将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。
方法可以对应于第一方面的一个或多个电路的操作。例如,可以基于指示数据分组的目的地不能接收数据分组的信号来确定分组处理流水线中的数据分组要被丢弃。
方法可以进一步包括将要被丢弃的数据分组从无序分组缓冲器移动到丢弃的分组缓冲器。
方法可以进一步包括:选择由分组处理流水线处理的数据分组;确定数据分组的一个或多个目的地;确定数据分组的一个或多个目的地中的目的地不能接收数据分组;以及将数据分组移动到无序分组缓冲器。
要被丢弃的数据分组可以是无序分组缓冲器中最老的数据分组。
确定分组处理流水线中的数据分组要被丢弃可以基于定时器的期满。
将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理可以基于分组处理流水线的负载。
方法可以进一步包括:响应于基于软件的分组卸载操作移除存储在丢弃的分组缓冲器中的数据分组。
分组处理流水线可以被配置为处理多播数据分组。
丢弃的分组缓冲器可以被配置为存储多个丢弃的数据分组。
丢弃的分组缓冲器可以包括一个或多个SRAM模块。
计算芯片可以是神经形态芯片。
将理解,各个方面可以被组合,并且将容易理解,在一个方面的上下文中描述的特征可以与其他方面组合。
附图说明
现在将参考所附附图通过示例的方式描述实施例,其中:
图1是神经形态芯片的示意图。
图2是神经形态芯片上的网络拓扑的示意图。
图3是神经形态芯片上路由器的分组处理流水线的示意图。
图3A是分组重新插入模块的示意图。
图3B是丢弃的分组缓冲器的示意图。
图4是示出由路由器进行的处理的流程图。
图5是更详细地示出由路由器进行的处理的流程图。
图6是示出用于确定是否丢弃数据分组的示例性处理的流程图。
图7是示出用于确定是否丢弃数据分组的可替代的示例性处理的流程图。
图8是示出用于处理丢弃的数据分组的处理的流程图。
具体实施方式
现在参考图1,图1示出神经形态芯片100的示意图。神经形态芯片100包括多个处理元件101。虽然图1示出了具有八个处理元件的芯片,但是将理解,芯片100上可以有更多(或更少)数量的处理元件。例如,一个示例性神经形态芯片具有152个处理元件。
每个处理元件可以包括处理器核、本地存储器和用于传输和接收数据的模块。数据可以在芯片100的处理元件101之间和/或不同芯片的处理元件之间传送。在这方面,芯片100可以包括多个芯片间链路102。外部设备也可以经由外部I/O接口103连接到芯片100。
芯片100另外包括主路由器105。主路由器105被配置为指引诸如多播数据分组的指定类型的片上数据流量,以及所有的芯片间数据流量。数据经由芯片100上的通信链路传送,通信链路连接芯片100的不同组件并形成片上网络(NoC)。在数据要被传送到另一芯片上的组件的情况下,主路由器105可以经由芯片间链路102与其他芯片的主路由器通信。
主路由器105包括分组处理流水线。分组处理流水线被配置为接收传输给主路由器105用于处理的数据分组,确定数据分组的目的地,为数据分组确定适当的路由路径,并经由确定的路由路径将数据分组传输到确定的目的地。
当数据分组准备好从流水线传输到它的目的地时,有可能由于诸如网络拥塞的因素导致数据分组在那个时间不能传输。例如,神经形态芯片100可以用于运行神经模拟。芯片100的每个处理元件可用于模拟大量的神经元,例如,一个处理元件可以模拟1000个神经元。因此,如果通信指向同一处理元件上的大量神经元,或者如果大量通信的目的地是处理元件上的少量神经元,则在路由器105处可能存在拥塞。另外,一个神经元通常与许多其他神经元相连。这反映在对神经元之间的通信使用多播,即从处理元件传输到路由器105的一个数据分组可能会导致产生许多数据分组从路由器105传输出去,从而放大网络交通。此外,为了简化多播分组的传送机制,路由器可以运行全有或全无策略,由此多播分组仅在所有目的地都可用于接收多播分组时才从路由器105传输出去。该策略避免了对记录多播分组传送和制定潜在复杂的重传策略的机制的需要,从而降低了芯片的存储和功率需求。然而,全有或全无策略增加了分组不能被传输且因此在分组处理流水线末端停滞的可能性。这可能造成分组处理流水线变得阻塞,直到停滞的分组可以被传输。
路由器105提供了基于硬件的机制以用于处理停滞的分组并维持路由器105的吞吐量。就此而言,路由器105进一步包括丢弃的分组缓冲器和路由器105内的一个或多个电路,该一个或多个电路被配置为确定分组处理流水线中的数据分组要被丢弃。一个或多个电路进一步被配置为将要被丢弃的数据分组从分组处理流水线移动到丢弃的分组缓冲器。一个或多个电路另外被配置为将丢弃的数据分组从丢弃的分组缓冲器重新插入到分组处理流水线中用于重新处理。下面参考图3更详细地描述这些操作中的每一个,图3示出了包括丢弃的分组缓冲器306的示例性分组处理流水线。
在一些现有技术方法中,处理停滞的分组的过程在软件中执行。例如,在一种现有技术方法中,芯片100上的处理元件被指定为监控处理器。当分组要被丢弃时,中断信号被发送到监控处理器。然后监控处理器可以复制丢弃的分组并重新传输复制的分组。然而,鉴于监控处理器服务于中断所需的时间,这个过程很慢。通过网络复制和重新传输分组所带来的延迟进一步增加了处理丢弃的分组所需的时间。通过提供基于硬件的分组丢弃和重新插入机制作为路由器105的一部分,处理丢弃的分组所需的时间被显著地减少,并且路由器105在拥塞下的吞吐量可以被增加。由于分组丢弃和重新插入完全发生在路由器105内,而不需要将丢弃的分组传输到监控处理器并重新传输到路由器,因此过程也更加节能。另外,由于不需要监控处理器,因此芯片的处理元件可以完全专注于执行它们各自的任务。下面更详细地提供对路由器105的吞吐量的分析。
现在参考图2,图2示出了NoC的示例性网络拓扑的示意图。在图2中,NoC被布置为2D网状网络。随着芯片上处理元件数量的增加,这种类型的拓扑与诸如星形拓扑的其他网络拓扑相比提供了更具可扩展性的解决方案。
芯片上的处理元件被布置为四个一组的四处理元件(QPE)201。每个QPE与片上网络(NoC)路由器202相关联,NoC路由器202被配置为为QPE 201的相应的处理元件101指引流量,并且将数据分组转发到网状网络中适当的相邻NoC路由器202上。然而,数据分组的路由由主路由器105控制。因此,从处理元件传输的所有数据分组可能经由若干NoC路由器202都被传输到主路由器105,并且然后主路由器105确定数据分组的一个或多个目的地和到达一个或多个目的地的最适当的路径。
将理解,可以使用本领域技术人员认为适当的处理元件和网络拓扑的其他布置。还将理解,为了清楚起见,图2示出了NoC的局部视图而省略了组件。
现在将更详细地描述路由器105的操作。图3是通过路由器105的数据分组流的示意图。虽然图3示出了一个分组处理流水线,但是将理解,路由器105可以包括多个分组处理流水线。尤其,每个分组处理流水线可以负责处理特定类型的数据分组,例如,多播分组或系统类型分组。
返回参考图3,由路由器105处理的数据分组可以通过并行数据流301接收。由于路由器105被配置为处理所有处理元件101的数据分组,所以路由器105可以包括多个输入端口,每个输入端口被配置为服务于芯片100的特定区域或一个或多个芯片间链路102。每个输入端口因此可以被配置为向路由器105提供输入数据分组流。
仲裁器302被配置为从输入数据流301选择数据分组进行处理。例如,仲裁器302可以被配置为基于轮询执行选择,依次从每个输入数据流301选择数据分组。然而,将理解,可以使用本领域技术人员认为适当的可替代的选择。
路由引擎303被配置为处理选择的数据分组以确定数据分组的一个或多个目的地以及通过NoC到一个或多个目的地的适当的路由路径。一个或多个目的地可以基于包含在数据分组中的信息来确定。例如,多播数据分组可以是源路由的。即,数据分组可以包括数据分组的发送者的诸如神经元标识符的标识符。路由器105可以进一步包括关联存储器308,关联存储器308被配置为根据正在运行的神经模拟中的神经元的连通性来映射神经元标识符。路由引擎303可以基于神经元标识符访问关联存储器308以确定相应神经元的传出连接以及数据分组旨在用于哪些处理元件101和哪些神经元。可替代地,数据分组可以包括指示数据分组的目的地的信息。例如,系统/配置类型的数据分组可以使用目的地路由,而应用(神经模拟)类型的数据分组可以使用源路由。将理解,虽然图3将关联存储器308示出为与路由引擎303分离,但是关联存储器308可以是路由引擎303的一部分。
在路由引擎303完成对数据分组的处理时,数据分组可以被传输到确定的一个或多个目的地。路由器105可以进一步包括用于传输数据分组的多个输出端口304。类似于多个输入端口,每个输出端口可以被配置为服务于芯片100的特定区域或一个或多个芯片间链路102。然而,如上所述,有可能数据分组在当前时间不能被传输。例如,如果数据分组的目的地当前不能接收数据分组。将理解,目的地可能不一定是数据分组的最终目的地,而是目的地可以包括从分组处理流水线的末端开始的沿着数据分组的传输路径的任何点。例如,可以经由特定的输出端口304将数据分组从路由器105传输出去。有可能特定的输出端口304不可用,并且因此数据分组在当前时间不能被传输。在另一示例中,诸如NoC路由器202的网络的中间节点可能不可用,并且从而阻止数据分组被传输。为了避免阻塞分组处理流水线,不能被传输的数据分组可以被丢弃。
可以基于指示数据分组的目的地不能接收数据分组的信号来丢弃数据分组。例如,路由器105的输出端口304可以提供指示它当前不可用于处理数据分组的信号。同样,NoC上的其他节点可以提供指示它们的可用性的信号。
作为立即丢弃数据分组的替换,路由器105的诸如路由引擎303的一个或多个电路可以被配置为在确定数据分组要被丢弃之前等待指定的时间段。如果在此等待时段期间,被阻塞的目的地变得可用,则数据分组可以被正常传输而不会被丢弃。否则,如果等待时段期满而阻塞的目的地不可用,则数据分组可能会被丢弃。
等待时段可以使用定时器309来实现。等待时段可以基于数据分组的类型来设置,不同类型的数据分组具有不同的等待时间。等待时段也可以是基于路由器105和NoC的当前状态动态地可配置。
路由器105也可以包括无序分组缓冲器305以使停滞的数据分组能够被排队,使得分组处理流水线可以继续处理进一步的分组,而无需在继续之前等待停滞的数据分组被丢弃。在这种情况下,在数据分组不能被传输的情况下,数据分组可以被移动到无序分组缓冲器305,直到数据分组可以被传输到它的目的地或者应该从无序分组缓冲器305移除以被丢弃。
例如,无序分组缓冲器305可以实现为流水线队列。即,可以在队列的开始处插入新的停滞的数据分组,将无序分组缓冲器305中现有的停滞的数据分组沿着队列中的下一个槽推向队列的末端。如果在任何点阻止特定数据分组被传输的目的地变得可用,则数据分组可以从无序分组缓冲器305移除并经由相关的输出端口304被传输到它的目的地。因此,在这个方面,与分组处理流水线的处理顺序相比,数据分组可能会被无序传输。如果多个分组的目的地同时变得可用于传输,则可以选择最老的数据分组,即最靠近队列末端的数据分组,用于传输并从无序分组缓冲器305移除。
当停滞的数据分组到达无序分组缓冲器305的末端槽时,定时器310可以被触发。如果在定时器310期满时停滞的数据分组仍然在无序分组缓冲器305的末端槽中,即如果停滞的数据分组仍然不能被传输出去,则可以确定在末端槽中停滞的数据分组要被丢弃。
无序分组缓冲器305可以被配置为使得只有当进入无序分组缓冲器305的入口槽可用时,新的停滞的数据分组才可以被插入到无序分组缓冲器305中。新的停滞的数据分组可引起信号,该信号被配置为将无序分组缓冲器305中的现有的分组向前推以为新的停滞的数据分组创造空间。如果无序分组缓冲器305已满,则这可能是不可能的,并且新的停滞的数据分组必须在路由引擎303的输出处等待,这可能导致分组处理流水线暂时停止。
在可替代的示例中,无序分组缓冲器305可以包括多个无序的槽。新的停滞的分组可以存储在可用槽中,这会触发与该特定槽相关联的定时器。如果当定时器期满时不能传输停滞的分组,则可以确定停滞的分组要被丢弃。因此,在这个示例中,无序分组缓冲器305中的槽没有被链接。然而,在前面的示例中,停滞的分组可能会被提供更长的时间段,在这个时间段里,它们在变成被丢弃的之前可能仍然会被传输,因为停滞的分组只有在停滞的分组被推到无序分组缓冲器305的启动期满的末端槽时才会被丢弃。停滞的分组多快变成被丢弃的可能取决于处理后的数据分组变成停滞的速率。
当确定数据分组要被丢弃时,路由器105的一个或多个电路被配置为将数据分组从分组处理流水线(例如,从路由引擎303的输出或者无序分组缓冲器305(如果在使用))移动到丢弃的分组缓冲器306。丢弃的分组缓冲器306可以是路由器105的分组重新插入模块307的一部分。丢弃的分组然后可以从丢弃的分组缓冲器306被重新插入到分组处理流水线中。
将理解,在存在多个分组处理流水线的情况下,丢弃的分组缓冲器306可以服务于所有的分组处理流水线。例如,仲裁器可以被配置为如果多于一个丢弃的分组请求未决,则从多个分组处理流水线中选择一个丢弃的分组请求以用于由分组重新插入模块307处理。要处理的丢弃的分组请求的选择可以遵循本领域技术人员认为适当的任何仲裁方案。例如,可以使用轮询方案,或者丢弃的分组请求可以按到达顺序排列优先级或依靠各个分组处理流水线的状态排列优先级。作为单个丢弃的分组缓冲器306的替换,可以有多个丢弃的分组缓冲器306,每个丢弃的分组缓冲器306服务于多个分组处理流水线中的一个或多个。
如上面简要提到的,每个分组处理流水线可以被配置为处理不同类型的数据分组,并且每个分组处理流水线可以具有它自己的被配置为以特定方式处理特定分组类型的路由引擎。例如,如上所述,代表神经模拟中的神经通信的分组可以被多播和源路由。分组处理流水线和路由引擎可以专用于处理多播分组。
另一分组处理流水线和路由引擎可以被配置为处理“核心到核心”类型的分组。这种类型的分组提供处理元件之间的通信,主要用于系统管理和控制目的,并且可以是目的地路由。进一步的分组处理流水线和路由引擎可以被配置为处理“最近邻”类型的分组。这种类型的分组旨在用于系统初始化和调试目的,并且提供相邻芯片的监控处理器之间的通信。
现在参考图3A,图3A更详细地示出了示例性分组重新插入模块307。分组重新插入模块307可以被配置为处理来自路由引擎303或无序分组缓冲器305(如果在使用)的丢弃的分组存储请求、丢弃的分组重新插入请求或基于软件的分组卸载请求。路由器105可以被配置为提供基于软件的分组卸载操作以移除存储在丢弃的分组缓冲器中的数据分组以用于在路由器的外部重新处理数据分组。例如,如果丢弃的分组缓冲器已满或接近已满,则可以使用基于软件的机制从丢弃的分组缓冲器移除分组以存储在芯片上的其他地方。这在下面更详细地描述。返回参考图3A,将理解,分组重新插入模块307也可以处理上面未列出的其他类型的请求。
仲裁器311可以被配置为如果有多个未决请求则选择请求中的一个来处理。在一个示例中,选择按照丢弃的分组存储请求、基于软件的卸载请求和最后丢弃的分组重新插入请求的顺序排列优先级。可替代地,可以使用本领域技术人员认为适当的不同的仲裁方案。
如上所述,当丢弃的分组存储请求被选择用于处理时,要被丢弃的分组可以被复制到丢弃的分组缓冲器306。另外,分组重新插入模块307可以包括备用寄存器缓冲器312。分组重新插入模块307可以被配置为如果在丢弃的分组缓冲器306内出现故障,则将丢弃的分组存储在备用寄存器缓冲器312中。备用寄存器缓冲器312可以被配置为存储单个丢弃的分组。分组重新插入模块307可以被配置为在丢弃的分组被处理之前防止覆盖存储在备用寄存器缓冲器312中的丢弃的分组。备用寄存器缓冲器312中丢弃的分组可以使用基于软件的机制来处理。例如,中断可以被发送到监控处理器,该监控处理器然后可以将丢弃的分组从备用寄存器缓冲器312传送到另一存储位置用于重新传输。这个过程类似于下面更详细描述的基于软件的分组卸载。
可以基于定时器将存储在丢弃的分组缓冲器306中的丢弃的分组重新插入到分组处理流水线中。例如,当分组被存储在丢弃的分组缓冲器306中造成丢弃的分组缓冲器306变为非空时,重新插入定时器313可以被启动。在重新插入定时器313期满时,可以将请求信号从重新插入请求器314发送到分组处理流水线以请求允许分组重新插入。当流水线能够处理分组重新插入时,请求可能会被准予。例如,当在流水线的开始处有空闲槽时和/或当没有来自输入数据流301的新数据分组到达时和/或在与新到达的数据分组周期性或交错的基础上和/或本领域技术人员认为适当的其他条件时,可以准予重新插入请求。
当重新插入请求被准予时,丢弃的分组缓冲器306中的丢弃的分组可以被重新插入到分组处理流水线中并且从丢弃的分组缓冲器306移除。在一个示例中,重新插入请求器314可以被配置为接收指示允许重新插入请求的信号,并且反过来向仲裁器311传输请求,以使分组重新插入模块307执行分组重新插入。当请求被仲裁器311选择用于处理时,丢弃的分组可以从丢弃的分组缓冲器移除并且被重新插入到分组处理流水线中。重新插入的分组然后可以像以前一样由分组处理流水线重新处理。可以为重新插入的分组提供原始目的地信息,以便在重新处理时不需要重新确定。然而,这样做可能会带来不合需要的大开销,这可能不像简单地重新确定分组的目的地那样优选。
当从丢弃的分组缓冲器306移除丢弃的分组时,可以重置重新插入定时器313。如果丢弃的分组缓冲器306包含进一步丢弃的分组,则可以重新启动重新插入定时器并且重复重新插入过程直到丢弃的分组缓冲器306被清除。重新插入定时器313从而在丢弃的分组重新插入之间实施最小时间间隔。重新插入之间的实际时间段可能是可变的,因为在相应的重新插入请求被准予之前,可能不会重新插入分组。最小时间间隔可以基于丢弃的分组缓冲器306的当前负载被动态地配置。
现在参考图3B,现在将描述丢弃的分组缓冲器306的示例性实施方式。丢弃的分组缓冲器306可以包括一个或多个SRAM模块并且可以被配置为存储多个丢弃的数据分组。更具体地,丢弃的分组可以存储在SRAM缓冲器318中。例如,SRAM缓冲器318可以使用具有从64位到192位的大小范围的数据分组的单端口SRAM宏来实现。
要被存储在SRAM缓冲器318中的分组317可以首先被写入分组分解缓冲器319。分组分解缓冲器319可以例如实现为六个并行的32位寄存器,以便实现最大可能的分组尺寸以在一个周期内写入分组分解缓冲器319中。然后可以将分组传输到SRAM缓冲器318中。这可能需要几个周期,取决于输入到SRAM缓冲器318的宽度。用于控制何时从分组处理流水线丢弃分组的定时器309、310可以在分组被复制到分组分解缓冲器319时被重置。因此,分组到SRAM缓冲器318的传输可能发生在分组丢弃超时时段期间。如果超时时段在分组到SRAM缓冲器318的传输完成之前期满,则在当前分组到SRAM缓冲器318的传输完成之前不能丢弃另一数据分组。如果其他分组的目的地在这个另外的等待时段期间变得可用,则分组可以从路由器105被传输出去到它的目的地而不是变成被丢弃的分组。
为了利于分组从SRAM缓冲器318的移除,丢弃的分组缓冲器306可以进一步包括类似于分组分解缓冲器319的分组重组缓冲器320。然而,分组重组缓冲器320可以包括少一个寄存器,因为分组的最后部分可以与已经传送到分组重组缓冲器320的分组数据的其余部分并行地直接传送出SRAM缓冲器318以重组移除的分组321。可以根据有限状态机(FSM)322控制向/从分组分解缓冲器319、分组重组缓冲器320和SRAM缓冲器318的写入。
如果丢弃的分组缓冲器306有可能溢出,则可以使用备份软件机制将丢弃的分组缓冲器306中的分组传输到芯片上其他地方的存储器用于重传。这可能涉及当丢弃的分组缓冲器306接近满和/或溢出时向监控处理器发送中断信号。例如,返回参考图3A,分组重新插入模块307可以进一步包括一组状态寄存器315,状态寄存器315提供与分组重新插入模块307相关的监控数据或诊断数据。这可以包括指示存储在SRAM缓冲器318中的当前字数的SRAM字计数器。“满点”值可以存储在路由器105的通用寄存器文件316中。通用寄存器文件316包括存储在通用寄存器文件316的寄存器中的用于路由器105的各种控制和配置设置。
芯片上的处理元件可以被指定为监控处理器。监控处理器可以周期性地轮询状态寄存器315或者可以生成“接近满”中断以在SRAM字计数器超过“满点”值时警告监控处理器。然后监控处理器可以采取适当的诸如调整定时器设置的行动,这可以使用通用寄存器文件316进行配置,或者将分组传输出丢弃的分组缓冲器306。如果在丢弃的分组缓冲器306中没有足够的可用存储空间用于存储新的丢弃的分组,溢出中断可以被传送到监控处理器并且监控处理器可以通过基于软件的指令启动分组从丢弃的分组缓冲器306的移除。
在一个示例中,为了将分组从丢弃的分组缓冲器306传输出去,监控处理器可以启动从通用寄存器文件316中的“卸载报头”寄存器的读取。“卸载报头”寄存器的读取可以触发软件分组卸载请求生成并发送到分组重新插入模块307。响应于请求,分组重新插入模块307可以被配置为将分组从丢弃的分组缓冲器306传输到通用寄存器文件316中的寄存器,其中分组的报头信息作为对“卸载报头”寄存器读取操作的响应被返回到监控处理器。然后,监控处理器可以解释报头信息,并发起保留在通用寄存器文件316中的剩余分组数据的读取和传输到路由器105外部的另一存储器位置用于分组的重传。例如,可以将分组传输到监控处理器的本地存储器。
除了用于记录SRAM缓冲器318当前容量使用的SRAM字计数器之外,状态寄存器315也可以包括用于记录重新插入的分组的总数的计数的寄存器(经由基于正常硬件的机制)、记录在指定时间段内观测到的已存储在SRAM缓冲器318中的最大字数的字水位计数器、用于最大分组数量而不是字的数量的等效分组水位计数器和记录已多于一次被丢弃的分组的数量的复发性丢弃的分组计数。可以通过在分组的报头中设置指示分组已被丢弃的位来监控复发性丢弃的分组计数。这样的监控数据可能对诊断和配置目的有用。
现在参考图4,图4示出用于在神经形态芯片上路由数据的处理,尤其是用于处理不能被传输的数据分组的过程。将理解,处理可以由图1、图2和图3的路由器105实现。图4描述了高级处理,而图5至图8提供了更详细的示例。
在图4的步骤S401,路由器105的一个或多个电路确定分组处理流水线中的数据分组要被丢弃。在步骤S402,使用一个或多个电路将要被丢弃的数据分组从分组处理流水线移动到丢弃的分组缓冲器306。在步骤S403,丢弃的数据分组被一个或多个电路从丢弃的分组缓冲器306重新插入到分组处理流水线中用于重新处理。
现在参考图5,现在将更详细地描述分组处理流水线中的数据分组的示例性处理。在步骤S501,选择数据分组用于处理。数据分组可以从如上所述的多个输入数据流301选择。在只有单个数据流的情况下,数据分组可以是输入队列中的下一个数据分组。
在步骤S502,数据分组的一个或多个目的地被确定。这可以由路由引擎303执行并且如上所述,一个或多个目的地可以基于数据分组中包含的诸如源标识符或目的地标识符的信息来确定。标识符可以被用于搜索关联存储器308以确定一个或多个目的地并确定适当的路由路径。
在步骤S503,确定数据分组是否可以被传输到一个或多个目的地。如上所述,确定可以基于指示数据分组的目的地不能接收数据分组的信号。
如果数据分组可以被传输,则处理在步骤S504继续,在步骤S504数据分组被传输到一个或多个目的地。如上所述,数据分组可以经由一个或多个输出端口304被传输。如果数据分组不能被传输,则处理在步骤S505继续,在步骤S505确定数据分组是否要被丢弃。
确定是否丢弃数据分组的两个示例性方法分别在图6和图7中示出。首先参考图6,在步骤S601,定时器309从零启动。这可以响应于在图5的步骤S505中数据分组不能被传输的确定而发生。步骤S602和步骤S603形成循环,在循环中处理等待直到数据分组可以被传输或者定时器309期满。如果数据分组可以被传输,则处理返回到数据分组被传输的步骤S504。如果定时器309期满,则处理在步骤S604继续,在步骤S604首先确定丢弃的分组缓冲器306是否可用,并且如果可用,则在步骤S605将数据分组移动到丢弃的分组缓冲器306。否则,如果丢弃的分组缓冲器306不可用,则处理返回到确定数据分组是否可以被传输的步骤S602。下面参考图8更详细地描述丢弃的分组的示例性处理。
现在参考图7,现在将描述确定是否丢弃数据分组的第二示例性方法。在步骤S701,数据分组被移动到无序分组缓冲器305。这可以响应于在步骤S505中确定数据分组不能被传输。如上所述,无序分组缓冲器305中的现有数据分组可以被推向无序分组缓冲器305的末端以容纳新的数据分组。
在步骤S702,确定无序分组缓冲器305的末端槽是否被占用。如果末端槽未被占用,则无序分组缓冲器305中的数据分组保持在等待状态中,直到数据分组可以被传输(步骤S703和步骤S704)或者直到数据分组到达无序分组缓冲器305的末端槽。
当无序分组缓冲器305的末端槽被占用时,在步骤S705,定时器310从零启动,定时器310提供在确定数据分组应该被丢弃之前分组可以被传输的最后时间间隔,如在步骤S706和步骤S707的循环所示。如果数据分组在该时间段期间变得可传输,则处理在步骤S704继续,在步骤S704数据分组被传输。相反,如果定时器310期满,则首先在步骤S708确定丢弃的分组缓冲器306是否可用。如果丢弃的分组缓冲器306可用,则在步骤S709确定无序分组缓冲器305的末端槽中的数据分组应该被丢弃并且数据分组被移动到丢弃的分组缓冲器306。下面参考图8更详细地描述丢弃的分组的示例性处理。如果丢弃的分组缓冲器306不可用,则处理返回到步骤S706,在步骤S706,确定在无序分组缓冲器305的末端槽处的数据分组是否可以被传输。将理解,如果在图7的处理期间无序分组缓冲器305中的任何分组变得可传输,则数据分组可以在任何时间被传输。无序分组缓冲器305中的现有分组可以被向前移动以填充被传输的分组留下的槽。然而,为了降低功耗,当有新的分组要插入无序分组缓冲器305时,可以只移动分组以填充空槽。
现在参考图8,现在将描述用于处理丢弃的分组的示例性处理。将理解,处理可以由路由器105的分组重新插入模块307来实现。当丢弃的分组缓冲器306变成非空时,处理在步骤S801开始。作为响应,在步骤S802,启动重新插入定时器313并且处理在步骤S803继续之前等待指定的时间间隔。在步骤S803,例如从重新插入请求器314传输分组重新插入请求。在步骤S804,指示分组重新插入请求已被准予的信号被接收。如上所述,分组重新插入请求可以被传输到分组处理流水线并且当分组处理流水线能够处理重新插入的数据分组时被准予。
处理然后在步骤S805继续,其中将数据分组从丢弃的分组缓冲器306重新插入到分组处理流水线。如上所述,重新插入的数据分组可能是丢弃的分组缓冲器306中最老的数据分组。在步骤S806,重新插入定时器313被重置。如果丢弃的分组缓冲器继续为非空,则处理可以在步骤S801重新开始。
现在将讨论路由器的示例性实施例的吞吐量的比较分析。为清楚起见,在括号中提供了按照图1至图3B的附图标记。示例性路由器(105)具有400MHz的时钟速度,并且包括被实现为2Kx32位SRAM宏(SRAM缓冲器318)的丢弃的分组缓冲器(306)。这具有存储1K数据分组而没有有效载荷的能力以及带有最大128位有效载荷的最大333个分组。示例性路由器(105)进一步包括服务于152个处理元件(101)和7个芯片间链路(102)的六个输出端口(304)。152个处理元件(101)使用被布置为38个四核处理元件(201)的ARM Cortex M4F处理器来实现。处理器具有300MHz的时钟速度。片上网络使用2D网状拓扑结构来实现。
已与SpiNNaker 1神经形态芯片(英国曼彻斯特大学)进行了比较。SpiNNaker1芯片的路由器具有133MHz的时钟速度,并且使用如上所述的基于软件的分组重新插入。SpiNNaker 1芯片有18个ARM968处理器内核。鉴于处理元件的数量较少,片上网络可以实现为星形拓扑。另外,有六个芯片间链路。
现在转向比较分析,SpiNNaker 1路由器和没有分组重新插入的示例路由器(105)的吞吐量被进行比较。假设处理元件(101)需要30个周期的数量级来处理来自网络的分组。然而,这可能取决于处理器负载而更糟。注意到示例性实施例的处理元件(101)实现分组DMA并且因此具有比SpiNNaker 1芯片的处理元件更高的接收速率。将理解,最坏情况的吞吐量是基于所有可能的通信路径中最慢的组件来确定的。
在所有分组都被丢弃的条件下,SpiNNaker-1路由器的吞吐量可能受到软件分组重新插入机制跟上分组在被丢弃的速率(即软件复制和处理每个丢弃的分组所需的时间)的能力的限制。这已被确定为在每240个路由器时钟周期1个分组的速率,这在133MHz的路由器时钟频率下导致0.56M分组/秒的吞吐量。
由于其硬件机制,示例路由器可以每4个时钟周期一个的速率丢弃分组,以它的400MHz时钟导致100M分组/秒的吞吐量,比SpiNNaker-1路由器快180倍。对于等效的时钟频率,将观测到60的改进因子。
当然,还有几个其他因素可能会限制路由器吞吐量,包括芯片间链路带宽和接收分组流的处理器跟上该分组流的能力,但是上述估计表明,在SpiNNaker-1上,在拥塞导致分组要被丢弃的情况下,软件分组重新插入机制通常是吞吐量限制因素,而在示例路由器中,硬件机制确保这种情况不太可能发生。
上述实施例在神经形态芯片的上下文中描述了本发明。将理解,本发明不限于神经形态芯片并且可以应用于任何类型的计算芯片,尤其是在高性能计算(HPC)中使用的类型的“众核”芯片。
尽管上面已经描述了本发明的具体实施例,但是将理解,在不脱离本发明的精神和范围的情况下,可以对所描述的实施例进行各种修改。即,所描述的实施例在所有方面都被认为是示例性的而非限制性的。尤其,在已经针对特定处理描述了特定形式的情况下,将理解,可以以被布置为提供合适的输出数据的任何合适的形式来执行这样的处理。

Claims (25)

1.一种用于在包括多个处理元件的计算芯片上路由数据的路由器,所述路由器包括:
分组处理流水线;和
基于硬件的分组丢弃和重新插入机制,包括:
丢弃的分组缓冲器;和
一个或多个电路,被配置为:
确定所述分组处理流水线中的数据分组要被丢弃;
将所述要被丢弃的数据分组从所述分组处理流水线移动到所述丢弃的分组缓冲器;以及
将丢弃的数据分组从所述丢弃的分组缓冲器重新插入到所述分组处理流水线中用于重新处理。
2.根据权利要求1所述的路由器,其中,所述一个或多个电路被配置为:基于指示所述数据分组的目的地不能接收所述数据分组的信号来确定所述分组处理流水线中的数据分组要被丢弃。
3.根据权利要求1或2所述的路由器,其中,所述分组处理流水线进一步包括无序分组缓冲器,并且其中,所述一个或多个电路被配置为将所述要被丢弃的数据分组从所述无序分组缓冲器移动到所述丢弃的分组缓冲器。
4.根据权利要求3所述的路由器,其中,所述一个或多个电路进一步被配置为:
选择由所述分组处理流水线处理的数据分组;
确定所述数据分组的一个或多个目的地;
确定所述数据分组的所述一个或多个目的地中的目的地不能接收所述数据分组;以及
将所述数据分组移动到所述无序分组缓冲器。
5.根据权利要求3或4所述的路由器,其中,所述要被丢弃的数据分组是所述无序分组缓冲器中最老的数据分组。
6.根据前述权利要求中任一项所述的路由器,其中,所述一个或多个电路被配置为:基于定时器的期满确定所述分组处理流水线中的数据分组要被丢弃。
7.根据前述权利要求中任一项所述的路由器,其中,所述一个或多个电路被配置为:基于定时器将所述丢弃的数据分组从所述丢弃的分组缓冲器重新插入到所述分组处理流水线中用于重新处理。
8.根据前述权利要求中任一项所述的路由器,其中,所述一个或多个电路被配置为:基于所述分组处理流水线的负载将所述丢弃的数据分组从所述丢弃的分组缓冲器重新插入到所述分组处理流水线中用于重新处理。
9.根据前述权利要求中任一项所述的路由器,其中,所述路由器被配置为:提供基于软件的分组卸载操作以移除存储在所述丢弃的分组缓冲器中的数据分组,以用于在所述路由器的外部重新处理所述数据分组。
10.根据前述权利要求中任一项所述的路由器,其中,所述分组处理流水线被配置为处理多播数据分组。
11.根据前述权利要求中任一项所述的路由器,其中,所述丢弃的分组缓冲器被配置为存储多个丢弃的数据分组。
12.根据前述权利要求中任一项所述的路由器,其中,所述丢弃的分组缓冲器包括一个或多个SRAM模块。
13.根据前述权利要求中任一项所述的路由器,其中,所述计算芯片是神经形态芯片。
14.一种在包括多个处理元件的计算芯片上路由数据的方法,所述路由器包括分组处理流水线、丢弃的分组缓冲器和一个或多个电路,所述方法包括:
由所述一个或多个电路确定所述分组处理流水线中的数据分组要被丢弃;
由所述一个或多个电路将所述要被丢弃的数据分组从所述分组处理流水线移动到所述丢弃的分组缓冲器;以及
由所述一个或多个电路将丢弃的数据分组从所述丢弃的分组缓冲器重新插入到所述分组处理流水线中用于重新处理。
15.根据权利要求14所述的方法,其中,确定所述分组处理流水线中的数据分组要被丢弃是基于指示所述数据分组的目的地不能接收所述数据分组的信号。
16.根据权利要求14或15所述的方法,进一步包括将所述要被丢弃的数据分组从无序分组缓冲器移动到所述丢弃的分组缓冲器。
17.根据权利要求16所述的方法,进一步包括:
选择由所述分组处理流水线处理的数据分组;
确定所述数据分组的一个或多个目的地;
确定所述数据分组的所述一个或多个目的地中的目的地不能接收所述数据分组;以及
将所述数据分组移动到所述无序分组缓冲器。
18.根据权利要求16或17所述的方法,其中,所述要被丢弃的数据分组是所述无序分组缓冲器中最老的数据分组。
19.根据权利要求14至18中任一项所述的方法,其中,确定所述分组处理流水线中的数据分组要被丢弃是基于定时器的期满。
20.根据权利要求14至19中任一项所述的方法,其中,将丢弃的数据分组从所述丢弃的分组缓冲器重新插入到所述分组处理流水线中用于重新处理是基于所述分组处理流水线的负载。
21.根据权利要求14至20中任一项所述的方法,进一步包括:响应于基于软件的分组卸载操作移除存储在所述丢弃的分组缓冲器中的数据分组。
22.根据权利要求14至21中任一项所述的方法,其中,所述分组处理流水线被配置为处理多播数据分组。
23.根据权利要求14至22中任一项所述的方法,其中,所述丢弃的分组缓冲器被配置为存储多个丢弃的数据分组。
24.根据权利要求14至23中任一项所述的方法,其中,所述丢弃的分组缓冲器包括一个或多个SRAM模块。
25.根据权利要求14至24中任一项所述的方法,其中,所述计算芯片是神经形态芯片。
CN202180046198.5A 2020-04-28 2021-04-26 片上路由器 Pending CN116057907A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2006229.5A GB2594478A (en) 2020-04-28 2020-04-28 On chip router
GB2006229.5 2020-04-28
PCT/GB2021/051009 WO2021219985A1 (en) 2020-04-28 2021-04-26 On chip router

Publications (1)

Publication Number Publication Date
CN116057907A true CN116057907A (zh) 2023-05-02

Family

ID=71080110

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180046198.5A Pending CN116057907A (zh) 2020-04-28 2021-04-26 片上路由器

Country Status (7)

Country Link
US (1) US12010033B2 (zh)
EP (1) EP4144049A1 (zh)
JP (1) JP2023531137A (zh)
KR (1) KR20230002947A (zh)
CN (1) CN116057907A (zh)
GB (1) GB2594478A (zh)
WO (1) WO2021219985A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117156006A (zh) * 2023-11-01 2023-12-01 中电科申泰信息科技有限公司 一种片上网络的数据路由控制架构

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5224100A (en) * 1991-05-09 1993-06-29 David Sarnoff Research Center, Inc. Routing technique for a hierarchical interprocessor-communication network between massively-parallel processors
CA2233555A1 (en) * 1995-10-02 1997-04-10 Advanced Telecommunications Modules Ltd. Asynchronous transfer mode switch
US7058065B2 (en) * 2000-02-08 2006-06-06 Mips Tech Inc Method and apparatus for preventing undesirable packet download with pending read/write operations in data packet processing
US6915480B2 (en) * 2001-12-21 2005-07-05 Agere Systems Inc. Processor with packet data flushing feature
US6938091B2 (en) * 2002-03-08 2005-08-30 Hewlett-Packard Development Company, L.P. Static end to end retransmit apparatus and method
WO2007034407A1 (en) * 2005-09-26 2007-03-29 Koninklijke Philips Electronics N.V. Packet dropping at the input queues of a switch-on-chip
JP5836733B2 (ja) * 2011-09-27 2015-12-24 沖電気工業株式会社 バッファ制御装置、バッファ制御プログラム及び通信装置
US20150089382A1 (en) * 2013-09-26 2015-03-26 Wu-chi Feng Application context migration framework and protocol
US9374303B1 (en) * 2013-10-15 2016-06-21 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for processing multicast packets
EP2884707B1 (en) * 2013-12-16 2016-04-27 Alcatel Lucent Method for controlling buffering of packets in a communication network
JP6540296B2 (ja) * 2015-07-09 2019-07-10 富士通株式会社 ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム
US10587534B2 (en) * 2017-04-04 2020-03-10 Gray Research LLC Composing cores and FPGAS at massive scale with directional, two dimensional routers and interconnection networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117156006A (zh) * 2023-11-01 2023-12-01 中电科申泰信息科技有限公司 一种片上网络的数据路由控制架构
CN117156006B (zh) * 2023-11-01 2024-02-13 中电科申泰信息科技有限公司 一种片上网络的数据路由控制架构

Also Published As

Publication number Publication date
US20230208776A1 (en) 2023-06-29
JP2023531137A (ja) 2023-07-21
GB202006229D0 (en) 2020-06-10
GB2594478A (en) 2021-11-03
EP4144049A1 (en) 2023-03-08
WO2021219985A1 (en) 2021-11-04
US12010033B2 (en) 2024-06-11
KR20230002947A (ko) 2023-01-05

Similar Documents

Publication Publication Date Title
US9917787B2 (en) Method and system for flexible credit exchange within high performance fabrics
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
US9648148B2 (en) Method, apparatus, and system for QoS within high performance fabrics
US6674720B1 (en) Age-based network arbitration system and method
US8417778B2 (en) Collective acceleration unit tree flow control and retransmit
US7706275B2 (en) Method and apparatus for routing data in an inter-nodal communications lattice of a massively parallel computer system by employing bandwidth shells at areas of overutilization
US7899927B1 (en) Multiple concurrent arbiters
US20070053350A1 (en) Buffering data packets according to multiple flow control schemes
US6490630B1 (en) System and method for avoiding deadlock in multi-node network
JP2011517903A (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
US8843651B2 (en) Software aware throttle based flow control
US7564860B2 (en) Apparatus and method for workflow-based routing in a distributed architecture router
Gaughan et al. Distributed, deadlock-free routing in faulty, pipelined, direct interconnection networks
Wang et al. Efficient data-plane memory scheduling for in-network aggregation
CN116057907A (zh) 片上路由器
CN110601996B (zh) 一种采用令牌保底分布式贪心算法的环网防饥饿流控方法
US20240070039A1 (en) Method of debugging network-on-chip
Theiss Modularity, routing and fault tolerance in interconnection networks
CN114760241B (zh) 一种用于数据流架构的计算设备中的路由方法
Suvorova An Approach to Designing Heterogeneous Networks for High Performance Computing Systems Based on a Unified Reconfigurable Router Core
Dai et al. Microarchitecture of a Configurable High-Radix Router for the Post-Moore Era
CN117880197A (zh) 汇聚以实现拥塞管理
Yan Performance analysis and improvement of InfiniBand networks. Modelling and effective Quality-of-Service mechanisms for interconnection networks in cluster computing systems.
Scott et al. The Cray T3E Network: Adaptive Routing in
Aci et al. A CONGESTION CONTROL ALGORITHM WITH INTERMEDIATE NODE SELECTION PROCEDURE FOR PERFORMANCE IMPROVEMENT OF A 2-DIMENSIONAL BROADCAST-BASED MULTIPROCESSOR ARCHITECTURE

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