一种用于三维集成电路片上网络的路由器及路由方法_3

文档序号:8225976阅读:来源:国知局
端均采用7位并口的输出方 式。相应地,水平交叉开关子模块和垂直交叉开关子模块的输入端也分别采用7位的并口。 这样,水平交叉开关子模块和垂直交叉开关子模块都能够接收来自于路由器任何一个输入 端口的数据包。
[0060] 需要注意的是,在一个实施例中,路由分流模块本身是一个设置在控制通路中的 自定义的独立逻辑模块。该模块是在图3(a)的7X7交叉开关与路由器输入端口之间的所 有部件基础之上添加了用于分流(确定数据包的目的端口后向相应内部端口分流)的逻辑 判断功能。在一个实施例中,路由分流模块还可以具有RC、VA、SA等操作功能。并且,容易 理解,路由分流模块既可以是实体模块,也可以是虚拟模块。
[0061] 仍然参考图3(b)的实施例,该实施中,数据包经由路由分流模块时,选择适当的 水平或者垂直交叉开关子模块路由,这样做一方面分离了原交叉开关的功能,同时保证了 单一的交叉开关子模块可以独立工作,并且不受数据包来自哪个输入端口的影响。例如,在 这种微体系结构下,如果仅垂直交叉开关子模块故障,并不影响水平交叉开关子模块的使 用,即当前路由器向水平方向(东、南、西或北)转发数据的功能不受影响。如果仅水平交 叉开关子模块故障,并不影响垂直交叉开关子模块的使用,即当前路由器向垂直方向(上 或下)转发数据的功能不受影响。而路由分流模块的故障虽然仍然会导致整个路由器无法 实现路由转发数据的功能,但由于路由分流模块的控制逻辑大大简化,并且所占面积较小, 因此发生故障的几率很小。路由器整体功能瘫痪的概率比原先的7X7交叉开关大幅降低, 因此,综合来说,相对于图3(a)的结构,图3(b)的交叉开关具有更好的可靠性和容错能力。
[0062] 进一步地,根据本发明的一个实施例,还提供了一种针对输入端口缓存(Buffer) 故障和/或交叉开关(Crossbar)故障情形的路由方法。该实施例中,针对上述两种故障建 立了故障模型,并利用故障矩阵来表示一个路由器的故障情况(面向常见的无输出端口缓 存路由器)。
[0063] 本实施例的具有容错功能的路由方法具体包括下列步骤:
[0064] 步骤1 :各个路由器获取自身的故障矩阵,并将自身的故障矩阵信息发送给两跳 以内的其它路由器。故障矩阵信息通过端口信号线直接传送至路由器内部的对应处理单 元,并不使用路由器的输入端口缓存和交叉开关传输,因此不会因输入端口缓存和交叉开 关故障而中断。对于每个路由器,基于测试数据包对其各个输入和输出端口进行测试,即可 得出该路由器的故障矩阵。在一个实施例中,上电后,三维片上网络中每个路由器节点进行 设备故障检测。为了简化路由器架构,检查装置可以放置于PE端,通过网络接口(Network Interface,NI)对节点进行检测,并建立对应路由器的故障矩阵。同时路由器将其故障矩 阵发送至所有两跳距离以内的邻接节点,如果到达某些距离为两跳的路径不唯一,随机选 择一条路径发送一次即可。
[0065] 步骤2 :各个路由器根据已知的自身的故障矩阵和两跳范围内其它路由器的故障 矩阵进行路由。本步骤中,首先基于两跳范围内的故障矩阵识别故障类型和故障位置,然后 再采用一定的路由算法进行路由,以避开故障位置。由于在三维场景下,每个路由器都需 要维护全局路由表会带来时延和面积的较大开销,因此本步骤中采用了基于逻辑的路由算 法。
[0066] 图4(a)和图4(b)示出了路由器的两个故障矩阵的示例。其中,"1"表示矩阵中 相应行列对应的输入和输出端口间无故障,"〇"表示有故障。另外,数据包的180°转向是 禁止的,因为这样会形成抽象依赖环,可能会导致死锁。在图4(a)中,E、S、W和N四个输出 端口皆无法正常输出,可以看出水平交叉开关子模块存在故障。同时,N,E,S和W端口的输 入Buffer也存在故障;在图4(b)中,U和D两个方向的均无法正常输出,可推断这是因为 垂直交叉开关子模块的故障所致,另外,E,U和D输入端口的Buffer也是存在故障的。
[0067] 参考图4(a)和图4(b)的示例进行归纳,可以看出,故障类型包括:输入缓存端口 故障,垂直交叉开关子模块故障和水平交叉开关子模块故障,故障位置则是指具体哪个输 入缓存端口故障。
[0068] 进一步地,在一个实施例中,路由算法采用了一种基于二维LDBR(logic_based distributedrouting)算法的拓展算法,本文中称为LDBRem算法。作为基础的LDBR算法 可参考FlichJ,RodrigoS,DuatoJ. ,"AnEfficientImplementationofDistributed RoutingAlgorithmsforNoCs,''inproceedingsofACM/IEEEInternationalSymposium onNetworks-on-Chip(NOCS),NewcastleuponTyne, 2008:87-96.。在本发明所涉及的三 维场景中,由于加入了Up和Down两个端口,因此本发明一个实施例的LBDRem算法中,与 当前节点距离一跳的邻居节点的路由位为30个,依次是:Ren,Res,Reu,Red,Ree,Rse,Rsw,Rsu, Rsd,Rss,Rwn?Rws?Rwu?Rwd?Rww?Rne?Rnw?Rnu?Rnd?Rnn?Run?Rue?Rus?Ruw?Ruu?Rdn,Rde,Rds,Rdw和Rdd,连 接位为6个,依次是:Te,Tn,Ts,Tw,Tu,Td。路由位是表示邻居节点是否接受某个方向的数据 包,例如R6n= 1表示当前节点东边的邻居可以接受东北路由方向的数据包,即可以进行EN 转向。而连接位表示当前节点和相应的邻居节点是否连通,如T6= 1表示当前节点和东边 邻居节点是连通的。上述路由位的取值可以根据通过故障矩阵识别出的故障类型和故障位 置设置,在一个例子中,可先根据邻居节点的故障类型和故障位置设置相应的路由位是否 有效,然后对于当前有效的路由位,再判断该邻居节点沿着该路由位所表示路由方向上的 下一跳节点(即当前节点的第二跳节点)的相应输入端口缓存是否故障,如故障,则将该路 由位置为失效状态。这样可以有效避免在第二跳节点处出现死胡同现象。
[0069] 基于上述叙述,在一个优选实施例中,步骤2包括下列子步骤:
[0070] 步骤21 :对于每个路由器,根据自身的故障矩阵和两跳范围内其它路由器的故障 矩阵得出该路由器的各个路由位和连接位的值。
[0071] LBDRem算法本质是转向优先的最短路径算法,在执行时需要收集相关邻居节点的 连接位与路由位信息。而每个路由器自身发送至邻接节点的连接位和路由位信息是根据自 己的故障矩阵得来的。如果相应位置出现故障,则对应的连接位或路由位值则赋为"0",否 则为" 1"。LBDRem算法为三维片上网络提供了足够的路由灵活性。
[0072] 步骤22 :对于路由过程中的任一当前节点,比较当前节点和目标节点的节点坐 标,判断数据包的前进方向。
[0073] 步骤23 :检查数据包的前进方向上的路由位和连接位,判断当前节点的相应的输 出端口是否可用。在存在故障的场景下(即相应的输出端口不可用时),基于路由位和连接 位的值来控制允许的转向,从而使数据包仍能继续路由至目的节点。
[0074] 下面以LBDRem中的一跳距离为例,说明如何在存在故障的场景下,基于路 由位和连接位的值来控制允许的转向。定义源节点为S(S〇urce)节点,目的节点为 D(Destination)节点,当前节点为C(Current)节点,当前节点的下一跳节点为中间节点, 记为M(Middle)节点。另外,为便于说明,以图5所示的坐标系来表示NoC的各个平面。
[0075] 在存在故障的场景下,节点C的东(E)输出端口能够被使用的条件是:满足Te = 1,以及下面五个条件中的至少一条成立:
[0076] 目标节点D在当前节点C的正东方,数据包不再发生转向;
[0077] 目标节点D(或目标节点D在XY平面的映射点,XY平面指当前节点C所在平面, 即所在层)在当前节点C的东北方,并且东边的节点允许EN转向,即Rm= 1 ;
[0078] 目标节点D(或目标节点D在XY平面的映射点)在当前节点C的东南方,并且东 边的节点允许ES转向,即Res= 1 ;
[0079] 目标节点D(或目标节点D在XZ平面的映射点)在当前节点C的东上方,并且东 边的节点允许EU转向,即Reu= 1 ;
[0080] 目标节点D(或目标节点D在XZ平面的映射点)在当前节点C的东下方,并且东 边的节点允许ED转向,即Red= 1。
[0081] 节点c的南、西、北、上和下输出端口能够被
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1