互连多个处理引擎的芯片上路由器的矩阵及使用其进行路由的方法

文档序号:9238044阅读:503来源:国知局
互连多个处理引擎的芯片上路由器的矩阵及使用其进行路由的方法
【技术领域】
[0001]本发明涉及在单个芯片上的多个处理引擎之间的数据包的转移。更具体地,本发明涉及互连多个处理引擎的芯片上路由器(on-chip router)的矩阵以及使用其进行路由(routing)的方法。
【背景技术】
[0002]随着晶体管尺寸变小,更多的计算部件、内存和处理引擎能够被集成在单个芯片之上。此高度集成允许并行地处理更多系统任务的能力,以达到更高的系统性能。
[0003]该技术部件、内存和处理引擎要求用于在它们之间转移数据包的通信结构。随着处理引擎数量的增加,互连技术(比如,总线架构和环状架构)不再可扩展来为这些引擎提供足够的通信带宽。
[0004]芯片上网络(on-chip network)是用于单个芯片上的大量处理引擎的互连技术。该网络包括多个芯片上路由器,在其中每个芯片上路由器连接至该网络中的最邻近的芯片上路由器。每个处理引擎均被连接至该芯片上路由器中的一个;并且,芯片上路由器能够与多个处理引擎连接。在处理引擎之间通信的数据通过该芯片上路由器的网络进行传输。
[0005]然而,现有技术的芯片上路由器存在问题。例如,现有技术的芯片上路由器具有固定的路由算法。照此,如果处理引擎的地址变化,或者如果更多的处理引擎被加入网络或从网络中移除,现有技术的芯片上路由器会停止运行。此外,现有技术的芯片上路由器仅支持处理引擎之间的单播数据包和固定的仲裁方案(arbitrat1n scheme) ο

【发明内容】

[0006]用于单个芯片上的多个处理引擎的互连方案是可扩展的,并且包括用于连接该多个处理引擎的可配置路由器的芯片上网络。根据在利用该网络的芯片上运行的应用的要求,该网络灵活且可扩展地用于连接更多或更少的处理引擎。该芯片上路由器是可重新配置的,以适应网络拓扑上和处理引擎的地址上的变化。在该处理引擎之间通信的数据包被定义为能够支持单播路由机制和多播路由机制两者的格式。每个芯片上路由器均支持使用公平且无死锁的仲裁方案的基于表格的单播数据包和多播数据包。该公平且无死锁的仲裁方案允许芯片上路由器保证以公平且无死锁的方式向其输出端口正确传递输入数据包。对于多播数据包,每个芯片上路由器提供两种重新配置模式,用于将该数据包转发至正确的期望输出端口。一种模式是在接收到授权时就发送副本,即便输入端口并未收到所有期望输出端口的信息,而另一种模式是在同时向所有的期望输出端口发送副本之前,等待从所有期望输出端口接收所有授权。在每个芯片上路由器中,路由表是通过软件可编程的。
[0007]在一方面,提供了一种芯片。该芯片包括网络。该网络通常包括多个处理引擎以及芯片上路由器的矩阵。该芯片上路由器中的每个与不同组的处理引擎可通信地耦接,并且与该芯片上路由器矩阵中的最接近于该芯片路由器的芯片上路由器可通信地耦接。该多个处理引擎一起通过该芯片上路由器的矩阵进行通信。在一些实施例中,该芯片上路由器是通过软件可编程的。
[0008]芯片上路由器中的每个均包括输入端口、输出端口和位于输出端口中的每个输出端口的输出端口仲裁器。该输出端口仲裁器使用全局授权矢量和局部授权矢量,该全局授权矢量是由该芯片上路由器的全部输出端口仲裁器共用的,该局部授权矢量该输出端口仲裁器独有的,用于授权来自输入端口中的一个的查询请求。
[0009]在一些实施例中,该网络是可扩展的,以支持附加的处理引擎。例如,该附加的处理引擎能够与多个芯片上路由器耦接。对于另一个示例,附加的芯片上路由器能够被加入至该矩阵,并且该附加的处理引擎与该附加的芯片上路由器耦接。
[0010]在一些实施例中,连接两个芯片上路由器的链接比连接芯片上路由器和处理引擎的链接宽数倍,使得路由器对路由器链接能够并行地传输多个数据包,用于减少网络拥塞。
[0011]在一些实施例中,位于网络的边沿的芯片上路由器能够连接至该网络之外的部件,用于简化该网络的线路物理布局。
[0012]在另一方面,提供了一种芯片上路由器。该芯片上路由器包括M个输入端口、N个输出端口和交叉开关,该交叉开关用于连接该M个输入端口和该N个输出端口。
[0013]该M个输入端口中的每个通常均包括:输入队列,用于储存从上游芯片上路由器或从与该输入端口连接的处理引擎所接收的输入数据包;路由块,用于标识位于该输入队列的头部的数据包的至少一个期望输出端口 ;以及转发控制块,用于将查询请求发送至该至少一个期望输出端口中的每个,并从该至少一个期望输出端口中的每个接收授权,并且将该数据包转发至该至少一个期望输出端口中的每个。
[0014]该N个输出端口中的每个均包括输出端口仲裁器,用于收集从至少一个输入端口到该输出端口的查询请求,并且用于授权该查询请求中的一个。
[0015]该交叉开关由该输出端口仲裁器的输出进行控制。在一些实施例中,该交叉开关包括N个M输入多路器的组,其中M和N分别是芯片上路由器的输入端口和输出端口的数量。每个M输入多路器是M-1个常用的2输入多路器的二进制树(binary tree),并且具有2输入多路器的延迟的1g2(M)倍的延迟。
[0016]在一些实施例中,该数据包包括控制比特,该控制比特表示该数据包是否是单播数据包和多播数据包中的一个。
[0017]在一些实施例中,该芯片上路由器进一步包括可重新配置的单播路由表和多播路由表,用于标识数据包的一个或多个期望输出端口。该M个输入端口中的每个被配置为具有其自身的单播路由表和多播路由表。备选地,该M个输入端口被配置为共用路由表。
[0018]在一些实施例中,该芯片上路由器执行两种可配置模式中的一种,用于从输入端口向输出端口转发多播数据包。
[0019]该输出端口仲裁器被配置为,为来自该M个输入端口中的一个或多个的多播数据包和单播数据包,对向该输出端口发送的多个查询请求的授权进行仲裁。在一些实施例中,该输出端口仲裁器使用全局优先级矢量(global_pr1rity_vector)变量、局部优先级矢量(local_pr1rity_vector)变量和优先级矢量(pr1rity_vector)变量,该全局优先级矢量变量由所有的输出端口仲裁器共用,该局部优先级矢量变量由每个输出端口仲裁器维护,该优先级矢量变量也由每个输出端口仲裁器维护。该全局优先级矢量变量用于分配多播数据包之间的授权。该局部优先级矢量变量用于分配单播数据包之间的授权。该优先级矢量变量被动态地分配以全局优先级矢量和局部优先级矢量中的一个的值。
[0020]在一些实施例中,为每个输出端口仲裁器的优先级矢量值分配的值取决于转发模式和该输出端口仲裁器是否已从任何多播数据包接收到查询请求。每个输出端口仲裁器基于对应的优先级矢量值,仅对一个查询请求进行授权。
[0021]在一些实施例中,基于授权输出,该共用的全局优先级矢量变量和所有的局部优先级矢量变量在每个循环之后被更新,从而所有的数据包总是有机会获得授权,并且保证无死锁。
[0022]在另一个方面,提供了一种在芯片上路由器上执行的方法。初始化全局优先级矢量变量,以将优先级给予多个输入端口中的一个,该全局优先级矢量变量由芯片上路由器的所有N个输出端口仲裁器所共用。该全局优先级矢量变量通常用于在多播数据包之间分配授权。初始化N个局部优先级矢量变量中的每个到多个输入端口中的一个,该局部优先级矢量变量由N个输出端口仲裁器所维护。该N个局部优先级矢量变量中的每个通常用于在单播数据包之间分配授权。然后决定转发模式。在一些实施例中,该转发模式是通过软件可重新配置的。
[0023]在该N个输出端口仲裁器的每个处,决定查询请求是否来自多播数据包。基于转发模式是第一模式的决定,或者基于查询请求并不来自多播数据包的决定,设置优先级矢量的值为局部优先级矢量的值。基于转发模式是第二模式的决定,或者基于查询请求是来自多播数据包的决定,设置优先级矢量的值为全局优先级矢量的值。根据对应的输出端口的可用性,基于该优先级矢量将授权发送至输入端口。
[0024]然后更新该全局优先级矢量变量和该N个局部优先级矢量变量。
[0025]在一些实施例中,当转发模式是第一模式或者没有输入端口得到授权时,不更新该全局优先级矢量变量。相反,当转发模式是第二模式并且至少一个输入端口得到授权时,该全局优先级矢量变量被更新为具有次高优先级的输入端口。
[0026]在一些实施例中,当对应的输出端口仲裁器从多播数据包接收至少一个查询请求或者没有授权被发送时,不更新局部优先级矢量变量。相反,当对应的输出端口仲裁器没有从任何多播数据包接收查询请求并且授权
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1