CN102868604B - 一种应用于片上网络的二维Mesh双缓冲容错路由单元 - Google Patents

一种应用于片上网络的二维Mesh双缓冲容错路由单元 Download PDF

Info

Publication number
CN102868604B
CN102868604B CN201210389152.6A CN201210389152A CN102868604B CN 102868604 B CN102868604 B CN 102868604B CN 201210389152 A CN201210389152 A CN 201210389152A CN 102868604 B CN102868604 B CN 102868604B
Authority
CN
China
Prior art keywords
data
signal
local
controller
reception
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
Application number
CN201210389152.6A
Other languages
English (en)
Other versions
CN102868604A (zh
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.)
Nanjing University of Aeronautics and Astronautics
China Aeronautical Radio Electronics Research Institute
Original Assignee
Nanjing University of Aeronautics and Astronautics
China Aeronautical Radio Electronics Research Institute
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 Nanjing University of Aeronautics and Astronautics, China Aeronautical Radio Electronics Research Institute filed Critical Nanjing University of Aeronautics and Astronautics
Priority to CN201210389152.6A priority Critical patent/CN102868604B/zh
Publication of CN102868604A publication Critical patent/CN102868604A/zh
Application granted granted Critical
Publication of CN102868604B publication Critical patent/CN102868604B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种应用于片上网络的二维Mesh双缓冲容错路由单元,该方法采用双缓冲机制轮流发送冗余数据,并采用XYX路由机制动态选择数据路由路径。本发明能在面积开销有限提升的前提下,保证片上网络容错性能,完成数据的高可靠性传输;同时减少数据包发送等待时间,并能够均衡网络负载,有助于解决网络拥塞问题。

Description

一种应用于片上网络的二维Mesh双缓冲容错路由单元
技术领域
本发明涉及集成电路领域,尤其设计片上互连网络设计领域。
背景技术
随着深亚微米超大规模集成电路工艺技术的成熟及进一步发展,片上***(System on Chip,SoC)的设计面临着严峻的问题,主要表现在三个方面:连线延迟与全局时钟的同步问题,有限地址空间和无法支持多组设备并行通信等结构性问题,以及***扩展问题。为了解决SoC设计中遇到的问题,欧洲一些研究机构于2000年提出了片上网络(Network on Chip,NoC)的概念,其核心思想就是将计算机网络技术移植到芯片设计中来,将片上***分割为执行通信的多个子***,子***之间通过网络互连,从体系结构上彻底解决总线架构带来的缺陷。
片上网络故障按照故障的持续时间长短,可以分为永久故障和瞬时故障。片目前上网络中80%的故障都由瞬时故障引起。瞬时故障,又称软故障,它通常由干扰引起,如串扰、耦合噪声、电源噪声,甚至是宇宙射线、地球磁场产生的干扰等,从而导致位出错、位丢失等。瞬时故障的产生带有随机性和偶然性,无干扰时故障不会发生,干扰消失时故障也随之消失。目前,瞬时故障已被认为是当前片上网络结构中的主要故障,再加上它的不可预测性和不可重复性的特点,使得瞬时故障在片上网络可靠性研究领域上得到了极大的关注。为保证NoC中数据传输的可靠性,针对片上网络的瞬时故障,必须采用相应的容错机制。目前,容错机制一般分为基于检错纠错编码的重传机制和随机通信机制。在随机通信机制中,源节点以一定的概率向它的相邻节点以广播的形式发送数据包,所有收到这个数据包的节点以相同的概率再向其相邻的节点发送数据包,直到目的节点收到数据包为止。然而,随机通信会使网络中存在大量的冗余包,可能会造成网络的拥塞,且带来较大的传输开销。在基于检错纠错编码的重传机制中,目的节点根据数据包校验结果判定接收的数据是否正确,并发送反馈包通知源节点;而源节点则根据接收到的反馈包决定是否重传该数据包,直到数据包被正确接收。端到端请求重传机制的面积功耗开销相对较小,但由于只有数据包到达目的节点后才能确定数据包的正确性,因此增加了传输延时。
因此,从优化***延时和功耗性能的角度,结合基于检错纠错编码的重传机制和随机通信机制的优点,采用双缓冲和XYX路由技术,在保证路由单元容错性能的基础上降低***延时和功耗,是优化和改善片上网络通信性能的一种重要手段。
发明内容
本发明公开了一种应用于片上网络的的二维Mesh双缓冲容错路由单元,该方法采用双缓冲机制轮流发送冗余数据,并采用XYX路由机制动态选择数据路由路径。本发明能在面积开销有限提升的前提下,保证片上网络容错性能,完成数据的高可靠性传输;同时减少数据包发送等待时间,并能够均衡网络负载,有助于解决网络拥塞问题。
实现本发明的技术方案如下:
一种用于片上网络的二维Mesh双缓冲容错路由单元,该路由单元包括:四个接收控制器、四个发送控制器、一个本地接收控制器、一个本地发送控制器、一个仲裁与交换控制器;
路由单元还包括五个端口:本地端口、东端口、西端口、北端口、南端口,东端口、西端口、北端口、南端口包含“应答发送”、“应答接收”、“数据接收”和“数据发送”四个信号,本地端口包含“本地数据接收”和“本地数据发送”两个信号;
本地端口用于连接本地资源节点;
东端口、西端口、北端口、南端口用于连接其他路由单元;
“应答发送”信号和“数据接收”信号与接收控制器相接,“应答接收”信号和“数据发送”信号与发送控制器相接;
接收控制器通过“应答发送”信号对接收数据的请求进行应答,通过“数据接收”信号接收前一级路由单元发送的数据,通过“待收数据”和“路由控制”信号将接收到的数据发送给仲裁与交换控制器;
发送控制器通过“应答接收”信号接收后一级路由单元对发送数据的许可,通过“数据发送”信号向后一级路由单元发送数据,通过“待发数据”信号接收仲裁与交换控制器发送来的数据。
本地发送控制器通过“本地数据接收”信号接收本地资源节点发送的数据,通过“数据校验”信号接收本地接收控制器发送的校验结果信号,通过“待收数据”和“路由控制”信号将接收到的数据发送给仲裁与交换控制器;
本地接收控制器通过“本地数据接收”信号向本地资源节点发送数据,通过“待发数据”信号接收仲裁与交换控制器发送来的数据,通过“数据校验”信号发送接收数据包中的校验结果信号。
仲裁与交换控制器通过“待收数据”和“路由控制”信号接收网络接收控制器和本地接收控制器发送来的数据,通过“待发数据”信号向网络发送控制器和本地发送控制器发送数据。
接收控制器进一步包括:端口控制器、数据缓冲区、路由计算和状态控制器;
端口控制器通过“应答发送”信号对接收数据的请求进行应答,通过“接收数据”信号接收前一级路由单元发送的数据;端口控制器将接收的数据送入数据缓冲区;端口控制器输入状态控制器送来的控制信号;
数据缓冲区输入从端口控制器送来的数据,输出数据分为两路,一路通过“待收数据”直接送给仲裁与交换控制器,一路送入路由计算;数据缓冲区输入状态控制器送来的控制信号;
路由计算输入从数据缓冲区送来的数据,通过“路由控制”将路由选择信号送给仲裁与交换控制器;路由计算输入状态控制器送来的控制信号;
状态控制器将控制信号分别送给端口控制器、数据缓冲区和路由计算器。
本地发送控制器进一步包括:端口控制器、编码组包模块、数据双缓冲区、路由计算、数据选择和状态控制器。
端口控制器通过“本地数据接收”信号接收本地资源节点发送的数据;输入控制器将接收的数据送入编码组包模块;端口控制器输入状态控制器送来的控制信号;
编码组包模块输入从端口控制器送来的数据,输出数据送入数据双缓冲区;编码组包模块输入状态控制器送来的控制信号;
数据双缓冲区输入从编码组包模块送来的数据,输出数据分为两路,一路送给数据选择,一路送入路由计算;数据双缓冲区输入状态控制器送来的控制信号;
数据选择输入从数据双缓冲区送来的数据,通过“待发数据”将数据送给仲裁与交换控制器;
路由计算输入从数据双缓冲区送来的数据,通过“路由控制”将路由选择信号送给仲裁与交换控制器;路由计算输入状态控制器送来的控制信号;
状态控制器通过“数据校验”信号输入发送数据包的数据传输结果,通过控制信号分别控制端口控制器、数据双缓冲区、编码组包模块和路由计算。
为了正确发送数据并协调与后一级路由单元的收发关系,路由单元发送控制器发送数据的方法为:
1)发送控制器等待仲裁与交换控制器的发送数据请求;
2)如果出现发送数据请求,发送控制器通过“数据发送”信号线向后一级路由单元发送数据传输请求;
3)通过“应答接收”信号线接收后一级路由单元发送的应答信号,如果发送控制器没有接收到应答信号,则继续等待直至后以及路由单元响应;
4)如果发送控制器在“应答接收”端接收到应答信号,则通过总裁与交换控制器将本地接收控制器中数据缓冲区的数据发送给后一级路由单元;
如果在数据发送过程中接收到后一级路由单元通过“应答接收”发送的非应答信号,则重新发送当前数据,直到整个数据包发送完毕。
5)返回到等待状态。
为了实现数据的随机冗余发送功能并通过校验增强数据的容错性能,路由单元本地发送控制器发送本地数据的方法为:
1)本地发送控制器等待发送数据;
2)本地在以下情况下发送数据:
2.1)当端口控制器通过“本地数据接收”信号线接收到本地待发送数据时,则控制方法进一步为:
2.1.1)端口控制器将数据送入编码组包模块进行编码和组包,然后由编码组包模块同时存入缓冲区A和缓冲区B,
2.1.2)数据选择模块首先选择缓冲区A的数据并通过“待发数据”发送给仲裁与交换控制器,同时路由计算置数据微片的路由选择信号为0,并通过“路由控制”信号通知仲裁与交换控制器要使用的发送控制器,开始数据微片传输直到整个数据包发送完毕;
2.1.3)继续选择缓冲区B的数据发送,同时路由计算置数据微片的路由选择信号为1,然后发送给仲裁与交换控制器,直到整个数据包发送完毕;
2.1.4)通过“数据校验”信号线接收本地接收控制器发送的发送数据校验结果,如果结果正确则将数据包从缓冲区中移除,否则忽略该信号;
2.2)当状态控制器通过“数据校验”信号线接收到本地接收控制器发送的接收数据校验信号,并且端口控制器的“本地数据接收”信号线没有本地待发送数据时,则控制方法进一步为:
2.2.1)状态控制器根据信号在双缓冲区内生成校验应答数据包发送给数据选择;
2.2.2)由数据选择通过“待发数据”信号发送给仲裁与交换控制器请求发送;
3)返回到等待状态。
为了正确接收数据并协调与前一级路由单元的收发关系,路由单元接收控制器接收数据的方法为:
1)接收控制器等待前一级路由单元的数据发送请求;
2)端口控制器接收到数据发送请求后,检查当前数据缓冲区的状态,如果当前缓冲区还存在上一数据包的数据,则接收控制器通过“应答发送”信号线发送等待信号,要求前一级路由单元暂缓发送,否则接收控制器通过“应答发送”信号线发送应答信号接收请求并开始接收数据;
3)接收控制器中的状态控制器对接收到的微片顺序进行检查,如果收到的微片和当前缓冲区中已经暂存的微片不构成顺序关系,则丢弃当前微片,同时通过“应答发送”信号线向前一级路由单元发送本微片的非应答信号,直至整个数据包接收完毕;
4)根据数据包的路由选择信息计算路由路径,通过“待收数据”发送接收到的数据包,并通过“路由控制”信号通知仲裁与交换控制器请求相应的发送控制器或本地接收控制器转发或接收数据。
5)返回到等待状态。
为了正确检测接收数据的正确性并能够给数据源正确的校验应答,路由单元本地接收控制器接收本地数据的方法为:
1)等待仲裁与交换控制器的数据接收请求;
2)如果仲裁与交换控制器的数据接收到数据接收请求,则通过“数据接收”信号读入接收的数据包;
3)如果收到的是普通数据包,则将接收到的数据进行数据校验,如果数据校验正确,则通过“本地数据接收”信号传输给本地端口,并通过“数据校验”信号通知本地发送控制器发送校验正确应答数据包,否则通过“数据校验”信号通知本地发送控制器发送校验错误应答数据包,同时丢弃该微片。
4)如果收到的是发送数据校验结果应答数据包,则将校验结果通过“数据校验”信号发送给本地发送控制器通知发送结果。
5)返回到等待状态。
为了实现随机路由功能,均衡网络负载并降低阻塞概率,路由计算所使用的路由计算方法为:
路由计算根据数据包头微片的路由选择信号选择路由算法:
如果路由选择信号为0,则选择XY路由算法,使数据包先按照X方向路由,直至当前节点和目的节点在X方向上距离为零;再按照Y方向路由,直至数据包到达目的节点;
如果路由选择信号为1,则选择YX路由算法,使数据包先按照Y方向路由,直至当前节点和目的节点在Y方向上距离为零;再按照X方向路由,直至数据包到达目的节点。
为了实现各控制器公平征用交换开关的功能,仲裁与交换控制器所使用的控制方法为:
1)仲裁与交换控制器等待接收控制器或本地发送控制器对发送控制器的使用请求;
2)如果接收到请求,并且当前只有一个请求,则响应该请求,即根据“路由控制”信号生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输;
如果接收到请求,并且当前存在多个请求,则控制方法进一步为:
2.1)按照东、南、西、北、本地端口的顺序将接收控制器或本地发送控制器申请请求进行排队,并按照队列进行响应,即根据“路由控制”信号生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输,响应后的端口记录到响应端口队列;
2.2)如果当前请求队列尚未处理完毕,而又有新的端口申请请求,则在响应端口队列中查询该申请端口有无响应记录,如果没有则优先响应该申请请求,即生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输,否则将申请请求排入响应队列的末尾;
2.3)如果当前请求队列处理完毕,清空响应端口队列;
3)返回等待状态。
综上所述,本发明的应用于片上网络的的二维Mesh双缓冲容错路由单元,采用双缓冲机制轮流发送冗余数据,并采用XYX路由机制动态选择数据路由路径,可以在面积开销有限提升的前提下,保证片上网络容错性能,完成数据的高可靠性传输;同时减少数据包发送等待时间,并能够均衡网络负载,有助于解决网络拥塞问题。应用所述的路由单元设计的片上网络可以实现上述的功能。
以下结合附图,通过具体实施方式对本发明进行详细描述。
图1是双缓冲容错路由单元结构图;
图2是基于双缓冲和XYX路由的检错重传示意图;
图3是发送接口模块的数据处理流程图;
图4是接收接口模块的数据处理流程图;
图5是本地输入端口存储数据的状态转换图;
图6是XYX路由模块算法的实现流程图;
图7是仲裁模块算法流程图;
图8是包头微片、数据微片以及反馈包的具体结构图。
具体实施方式
应用于片上网络的二维Mesh双缓冲容错路由单元是在端到端的重传机制基础上结合随机路由思想实现的。该路由器具有5组输入输出端口,其中东、西、南、北四组输入输出端口同其他的路由器相连,本地输入输出端口与资源节点相连。路由器结构如图1所示。
基于双缓冲和XYX路由的检错重传机制和端到端随机路由算法一样,将数据包拆分成与缓冲区大小相等的微片集,每个发送端有两个数据缓冲区,分别设为缓冲区A和缓冲区B,将两个微片集分别存储在两个缓冲区中。发送端首先发送缓冲区A中的数据,当缓冲区A中的数据发送完毕之后,继续发送缓冲区B中的数据,当缓冲区B中的数据发送完后,又发送缓冲区A中的数据,依此循环。当发送端收到一个缓冲区的ACK反馈包时,清空该缓冲区并存入新的微片集。接收端不断接收微片,当收到完整正确的微片集后,立即发送ACK反馈包,如果收到错误的微片,则丢弃该微片以及随后收到的其他微片。具体接收和发送示意图如图2所示。
下面分别从发送端接口与接收端接口对算法进行详细描述。
在发送接口模块,两个微片集分别存储在两个数据缓冲区中。首先,发送接口发送缓冲区A中的数据,当缓冲区A中的数据发送完毕后,接着发送缓冲区B中的数据,由于此后随时有可能收到来自接收端的对应缓冲区A中的ACK反馈包,所以发送接口在发送缓冲区B中的每一个微片时,需要判断是否有对应缓冲区A的ACK反馈包到达。如果发送接口接收到对应缓冲区A的ACK反馈包,则立即清空缓冲区A,并将下一个新的微片集放入缓冲区A中,当缓冲区B中的数据发送完毕后,又开始发送缓冲区A中的数据,同时也需要判断缓冲区B中的ACK反馈包是否到达。
如果缓冲区B中的数据发送完毕之后,仍然没有收到来自接收端的对应缓冲区A的ACK反馈包,则重新开始发送缓冲区A中的数据,同时判断是否有ACK反馈包到达。如果此时发送端接收到对应缓冲区A的ACK反馈包,则发送端停止发送缓冲区A中的数据,转而发送缓冲区B中的数据,并立即清空缓冲区A,将下一个新的微片集放入缓冲区A中;如果此时接收到对应缓冲区B的ACK反馈包,则立即清空缓冲区B,并将下一个新的微片集放入缓冲区B中。发送接口模块的处理流程图如图3所示。
在接收接口模块,微片到达接收端之后,首先判断是否是顺序到达的微片,如果为错误的或者乱序的微片,则直接丢弃该微片,并丢弃随后接收到的属于同一微片集中的所有微片,直到正确接收到新的微片集。
当接收接口模块收到一个完整正确的微片集后,接收端将立即发送对应微片集的ACK反馈包。接口中采用三模冗余模型发送ACK反馈包,从而提高网络通信的可靠性。接收端的处理流程图如图4所示。
在本地输入端口有两个数据缓冲区A和B,它们都用来缓存数据包,其中缓冲区A的优先级较高。本地输入端口存储数据的状态转换图如图5所示。
当本地有数据需要传送时,首先判断缓冲区A是否为空,如果缓冲区A为空,则将数据存入缓冲区A,如果缓冲区A不空,则继续判断缓冲区B是否为空,如果缓冲区B为空,则将数据存入缓冲区B,如果缓冲区B也不为空,则等待,直至有缓冲区为空为止。当本地接收到ACK确认反馈包,首先判断ACK确认反馈包对应哪一个缓冲区,如果为缓冲区A,则清空缓冲区A中的数据,如果为缓冲区B,则清空缓冲区B中的数据。
数据缓冲区模块主要用于根据当前数据缓冲区的状态,对发送到当前路由器的数据进行缓存。因此,可以通过建立一个ram_hl类来实现数据缓冲区模块的功能。ram_hl定义为:
template<class T>
class ram_hl:public sc_module,public ram_if<T>
{
unsigned m_size;
unsigned m_read_pointer;
unsigned m_write_pointer;
T*mem;
}
其中ram_if<T>为ram_hl的接口函数,m_size用来表示数据缓冲区的深度,m_read_pointer用来表示数据缓冲区的读地址,m_write_pointer用来表示数据缓冲区的写地址,mem为指向存放数据的数组的指针。
ram_hl通过调用函数read、write、reset、sub_readpointer、reset_readpointer、isempty、isfull来实现数据缓冲区的数据读写以及重置。
路由计算模块是路由器的核心模块之一。路由计算模块根据不同的路由算法,对目的节点地址进行计算,确定数据的转发方向。发送端在路由缓冲区中的微片时,采用的是XYX路由算法,发送端通过循环采用XY路由策略和YX路由策略,实现数据的传输。因此需要对发送端中XYX路由算法的实现进行说明。XYX路由算法是指发送端首先采用XY路由策略发送缓冲区中的数据,当一定时间之后,如果没有收到对应的ACK反馈包,则采用YX路由策略重新发送缓冲区中的微片。一定时间后,如果还是没有收到ACK反馈包,则再采用XY路由策略重新发送缓冲区中的微片,直到收到来自接收端的对应缓冲区的ACK反馈包为止。发送端接收到ACK反馈包后,立即清空缓冲区并存入新的数据微片。XYX路由模块算法的实现流程图如图6所示。
XY路由策略是指源节点在向目的节点发送数据包时,首先比较目的节点与当前路由节点的地址,计算它们的X维与Y维地址偏移量,然后优先根据X维的地址偏移量选择路由方向,直到X维地址偏移量为0后,再根据Y维的地址偏移量选择路由方向,当且仅当X维与Y维的地址偏移量均为0时,表明数据传输到达目的节点。XY路由策略的伪代码如下:
输入:localx为本地X维偏移量,localy为本地Y维偏移量,
tempx为目标节点X维偏移量,tempy为目标节点Y维偏移量
输出:output_dir为输出方向
过程:
if(tempx>localx)       output_dir=east;
else if(tempx<localx)  output_dir=west;
else if((tempx==localx)&(tempy>localy))output_dir=south;
else if((tempx==localx)&(tempy<localy))output_dir=north;
else if((tempx==localx)&(tempy==localy))output_dir=local;
else             output_dir=none;
YX路由策略是指源节点在向目的节点发送数据包时,优先根据Y维的地址偏移量选择路由方向,直到Y维地址偏移量为0后,再根据X维的地址偏移量选择路由方向,当且仅当Y维与X维的地址偏移量均为0时,表明数据传输到达目的节点。YX路由策略的伪代码如下:
输入:localx为本地X维偏移量,localy为本地Y维偏移量,
tempx为目标节点X维偏移量,tempy为目标节点Y维偏移量
输出:output_dir为输出方向
过程:
if(tempy>localy)         output_dir=south;
else if(tempy<localy)    output_dir=north;
else if((tempy==localy)&(tempx>localx))   output_dir=east;
else if((tempy==locay)&(tempx<localx))  output_dir=west;
else if((tempy==localy)&(tempx==localx))  output_dir=local;
else             output_dir=none;
发送端首先检测数据缓冲区中是否有数据等待发送,如果有数据,则读取包头微片中的XYX标识符,判断是按照XY路由策略还是YX路由策略发送微片。选定路由策略后,发送端开始发送数据,在发送数据的同时不断检测是否有ACK反馈包到达,如果有ACK反馈包到达,则立即清空数据缓冲区,如果没有ACK反馈包到达,则继续按当前路由策略发送微片,直到微片集发送完毕。当微片集发送完毕之后,将包头微片中的XYX标志位置反,以另一种路由策略重新发送微片集。
仲裁模块也是路由器模块的核心模块之一。仲裁模块根据来自各个端口的数据传输请求,仲裁确定响应的输入端口,赋予该输入端口数据输出的权限。基于片上网络简单高效的需求,仲裁模块采用轮询仲裁机制进行仲裁。路由器共有东、西、南、北以及本地5个输入端口,路由器记录每次仲裁得到输出端口使用权的输入端口,在下一次仲裁时,根据记录的结果从当前的请求中选择还未曾得到输出权限的输入端口,使其获得输出端口使用权。若某一仲裁中,仅有唯一的请求,即不存在竞争情况,则清除历史记录,将输出权限赋予此输入端口,并记录该输入端口。若仲裁中发现当前的多个请求在之前都已经响应过,那么清空记录,并从请求中选择优先级较高的输入端口进行响应。仲裁算法流程图如图7所示。
交换阵列模块根据仲裁模块的输出结果为路由器的各个输入输出端口建立连接,将数据包转发给下一级路由器。在交换阵列控制矩阵中,行表示输入端口,列表示输出端口,矩阵中的“0”表示其所在行与所在列没有连接,“1”则表示其所在行与所在列建立了连接,数据包将从其所在行的输入端口传送到所在列的输出端口。
组解包模块和编解码控制器负责将数据包进行编解码。发送端中将发送的数据包拆分为两种微片,分别是包头微片和数据微片。包头微片、数据微片以及反馈包的具体结构如图8所示。
在包头微片中,31至28位为目的地址,用于存储数据发送的目的节点地址;27至24位为源地址,用于存储发送数据的源节点地址;第11位为XYX标识符,用于确定数据微片是按照XY路由策略还是YX路由策略来进行路由,如果XYX为0,则按照XY路由策略路由,如果XYX为1,则按照YX路由策略路由;10至8位为数据包编号,用于记录数据包的编号代码,帮助接收端区分数据包;第7位为缓冲区编号,用于记录微片存储在哪个缓冲区,以便接收端识别ACK反馈包对应哪一个缓冲区;6至3位为数据包包长,用于记录数据包被拆分成微片的数目,由于数据包包长只用4个bit进行记录,所以数据包被拆分成微片的数据不得大于16;2至1位为标识符,用来标识微片是包头微片,还是包负载微片或者尾片。包头微片的最后一位为奇偶校验码。
在数据微片中,31至3位为有效数据信息,2至1位为标识符,最后一位为奇偶校验码。
在反馈包中,31至28位为目的地址,用于存储接收端收到的数据的源节点地址;27至24位为源地址,用于存储当前节点地址;23至3位为有效数据,发送的反馈包只有ACK,所以用全1表示ACK反馈包;最后三位同包头微片中的最后三位。
应用上述路由单元可以构成二维容错片上网络,实现片上网络对数据传输过程中产生的瞬时错误的纠正,并有效均衡网络中数据的传输负载。

Claims (5)

1.一种用于片上网络的二维Mesh双缓冲容错路由单元,包括四个接收控制器、四个发送控制器、一个本地接收控制器、一个本地发送控制器、一个仲裁与交换控制器,以及五个端口;
所述的五个端口包含东端口、西端口、北端口、南端口、本地端口;其中东端口、西端口、北端口、南端口用于连接其他路由单元,包含“应答发送”、“应答接收”、“数据接收”和“数据发送”四个信号;所述的“应答发送”信号和“数据接收”信号与接收控制器相接,“应答接收”信号和“数据发送”信号与发送控制器相接;本地端口用于连接本地资源节点,包含“本地数据接收”和“本地数据发送”两个信号;
所述的接收控制器包括端口控制器、数据缓冲区、路由计算和状态控制器;其中端口控制器通过“应答发送”信号对接收数据的请求进行应答,通过“数据接收”信号接收前一级路由单元发送的数据;数据缓冲区输入从端口控制器送来的数据,输出数据分为两路,一路通过“待收数据”直接送给仲裁与交换控制器,一路送入路由计算;路由计算输入从数据缓冲区送来的数据,通过“路由控制”将路由选择信号送给仲裁与交换控制器;状态控制器将控制信号分别送给端口控制器、数据缓冲区和路由计算;
所述的发送控制器通过“应答接收”信号接收后一级路由单元对发送数据的许可,通过“数据发送”信号向后一级路由单元发送数据,通过“待发数据”信号接收仲裁与交换控制器发送来的数据;
所述的本地发送控制器通过“本地数据接收”信号接收本地资源节点发送的数据,通过“数据校验”信号接收本地接收控制器发送的校验结果信号,通过“待收数据”和“路由控制”信号将接收到的数据发送给仲裁与交换控制器;
所述的本地接收控制器通过“本地数据接收”信号向本地资源节点发送数据,通过“待发数据”信号接收仲裁与交换控制器发送来的数据,通过“数据校验”信号向本地发送控制器发送数据包中的校验结果信号;
所述的仲裁与交换控制器通过“待收数据”和“路由控制”信号接收网络接收控制器和本地接收控制器发送来的数据,通过“待发数据”信号向网络发送控制器和本地发送控制器发送数据;
其特征在于路由单元本地发送控制器进一步包括端口控制器、编码组包模块、数据双缓冲区、路由计算、数据选择和状态控制器:
端口控制器通过“本地数据接收”信号接收本地资源节点发送的数据,并将数据送入编码组包模块进行编码和组包;
编码组包模块将编码后的数据输出送入数据双缓冲区,即缓冲区A和缓冲区B;
数据选择模块首先选择缓冲区A的数据并通过“待发数据”发送给仲裁与交换控制器,同时路由计算置数据微片的路由选择信号为0,并通过“路由控制”信号通知仲裁与交换控制器要使用的发送控制器,开始数据微片传输直到整个数据包发送完毕;
数据选择模块继续选择缓冲区B的数据发送,同时路由计算置数据微片的路由选择信号为1,然后发送给仲裁与交换控制器,直到整个数据包发送完毕;
状态控制器通过“数据校验”信号线接收本地接收控制器发送的发送数据校验结果,如果结果正确则将数据包从缓冲区中移除,否则忽略该信号;
状态控制器通过“数据校验”信号线接收到本地接收控制器发送的接收数据校验信号,且端口控制器的“本地数据接收”信号线没有本地待发送数据,则根据信号在双缓冲区内生成校验应答数据包发送给数据选择模块,由数据选择模块通过“待发数据”信号发送给仲裁与交换控制器请求发送;
仲裁与交换控制器接收到数据接收请求,则通过“数据接收”信号读入接收的数据包;
本地接收控制器对接收到的普通数据包进行数据校验,如果数据校验正确,则通过“本地数据接收”信号传输给本地端口,并通过“数据校验”信号通知本地发送控制器发送校验正确应答数据包,否则通过“数据校验”信号通知本地发送控制器发送校验错误应答数据包,同时丢弃该微片;
本地接收控制器对接收到的发送数据校验结果的应答数据包,将包含的校验结果通过“数据校验”信号发送给本地发送控制器通知发送结果。
2.根据权利要求1所述的路由单元,其特征在于:
所述的路由单元发送控制器发送数据的方法为:
1)发送控制器等待仲裁与交换控制器的发送数据请求;
2)当出现发送数据请求时,发送控制器通过“数据发送”信号线向后一级路由单元发送数据传输请求;
3)通过“应答接收”信号线接收后一级路由单元发送的应答信号,如果发 送控制器没有接收到应答信号,则继续等待直至后一级路由单元响应;
4)如果发送控制器在“应答接收”端接收到应答信号,则通过总裁与交换控制器将本地接收控制器中数据缓冲区的数据发送给后一级路由单元;
如果在数据发送过程中接收到后一级路由单元通过“应答接收”发送的非应答信号,则重新发送当前数据,直到整个数据包发送完毕;
5)返回到等待状态。
3.根据权利要求1所述的路由单元,其特征在于:
所述的路由单元接收控制器接收数据的方法为:
1)接收控制器等待前一级路由单元的数据发送请求;
2)端口控制器接收到数据发送请求后,检查当前数据缓冲区的状态,如果当前缓冲区还存在上一数据包的数据,则接收控制器通过“应答发送”信号线发送等待信号,要求前一级路由单元暂缓发送,否则接收控制器通过“应答发送”信号线发送应答信号接收请求并开始接收数据;
3)接收控制器中的状态控制器对接收到的微片顺序进行检查,如果收到的微片和当前缓冲区申已经暂存的微片不构成顺序关系,则丢弃当前微片,同时通过“应答发送”信号线向前一级路由单元发送本微片的非应答信号,直至整个数据包接收完毕;
4)根据数据包的路由选择信息计算路由路径,通过“待收数据”发送接收到的数据包,并通过“路由控制”信号通知仲裁与交换控制器请求相应的发送控制器或本地接收控制器转发或接收数据;
5)返回到等待状态。
4.根据权利要求1所述的路由单元,其特征在于:
所述的路由计算所使用的路由计算方法为:
路由计算根据数据包头微片的路由选择信号选择路由算法:
如果路由选择信号为0,则选择XY路由算法,使数据包先按照X方向路由,直至当前节点和目的节点在X方向上距离为零;再按照Y方向路由,直至数据包到达目的节点;
如果路由选择信号为1,则选择YX路由算法,使数据包先按照Y方向路由,直至当前节点和目的节点在Y方向上距离为零;再按照X方向路由,直至数据包到达目的节点。
5.根据权利要求1所述的路由单元,其特征在于:
所述的仲裁与交换控制器所使用的控制方法为:
1)仲裁与交换控制器等待接收控制器或本地发送控制器对发送控制器的使用请求;
2)如果接收到请求,并且当前只有一个请求,则响应该请求,即根据“路由控制”信号生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输;
如果接收到请求,并且当前存在多个请求,则控制方法进一步为:
2.1)按照东、南、西、北、本地端口的顺序将接收控制器或本地发送控制器申请请求进行排队,并按照队列进行响应,即根据“路由控制”信号生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输,响应后的端口记录到响应端口队列;
2.2)如果当前请求队列尚未处理完毕,而又有新的端口申请请求,则在响应端口队列中查询该申请端口有无响应记录,如果没有则优先响应该申请请求,即生成相应的接收控制器或本地发送控制器与发送控制器之间的交换路径,并进行数据传输,否则将申请请求排入响应队列的末尾;
2.3)如果当前请求队列处理完毕,清空响应端口队列;
3)返回到等待状态。
CN201210389152.6A 2012-09-28 2012-09-28 一种应用于片上网络的二维Mesh双缓冲容错路由单元 Active CN102868604B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210389152.6A CN102868604B (zh) 2012-09-28 2012-09-28 一种应用于片上网络的二维Mesh双缓冲容错路由单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210389152.6A CN102868604B (zh) 2012-09-28 2012-09-28 一种应用于片上网络的二维Mesh双缓冲容错路由单元

Publications (2)

Publication Number Publication Date
CN102868604A CN102868604A (zh) 2013-01-09
CN102868604B true CN102868604B (zh) 2015-05-06

Family

ID=47447207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210389152.6A Active CN102868604B (zh) 2012-09-28 2012-09-28 一种应用于片上网络的二维Mesh双缓冲容错路由单元

Country Status (1)

Country Link
CN (1) CN102868604B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103618673A (zh) * 2013-11-15 2014-03-05 中国航空无线电电子研究所 一种保障服务质量的片上网络路由方法
CN103973482A (zh) * 2014-04-22 2014-08-06 南京航空航天大学 具有全局通信事务管理能力的容错片上网络***及方法
CN104065577B (zh) * 2014-06-30 2017-05-17 中国航空无线电电子研究所 一种适用于航空电子的片上网络***
CN104202241A (zh) * 2014-08-06 2014-12-10 长春理工大学 2D-Mesh拓补结构下的片上网络偏转容错路由算法
CN104158738B (zh) * 2014-08-29 2017-04-19 中国航空无线电电子研究所 一种低缓冲区片上网络路由器及路由方法
CN106487673B (zh) * 2016-12-08 2019-06-04 北京时代民芯科技有限公司 一种基于三模冗余的检错重传容错路由单元
CN107682118A (zh) * 2017-09-22 2018-02-09 北京时代民芯科技有限公司 一种基于双模冗余的NoC纠检错重传容错方法
CN110659144B (zh) * 2019-09-12 2022-01-07 无锡江南计算技术研究所 支持请求响应多端口异步多播的高吞吐混合仲裁路由方法
CN112269686B (zh) * 2020-10-29 2024-04-26 南京航空航天大学 一种基于冷备份双模检错码的lutram自修复结构及自修复方法
CN112506850B (zh) * 2020-11-27 2024-05-14 北京大学 一种片上及片间互连网络
CN115190069B (zh) * 2022-04-26 2023-12-05 中国人民解放军国防科技大学 一种高性能片上网络容错路由器装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102013984A (zh) * 2010-10-14 2011-04-13 西安电子科技大学 二维网状片上网络***
CN102035723A (zh) * 2009-09-28 2011-04-27 清华大学 一种片上网络路由及实现方法
CN102685017A (zh) * 2012-06-07 2012-09-19 桂林电子科技大学 一种基于fpga的片上网络路由器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5543894B2 (ja) * 2010-10-21 2014-07-09 ルネサスエレクトロニクス株式会社 NoCシステム及び入力切替装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102035723A (zh) * 2009-09-28 2011-04-27 清华大学 一种片上网络路由及实现方法
CN102013984A (zh) * 2010-10-14 2011-04-13 西安电子科技大学 二维网状片上网络***
CN102685017A (zh) * 2012-06-07 2012-09-19 桂林电子科技大学 一种基于fpga的片上网络路由器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《A Reconfigurable Routing Algorithm for a Fault-Tolerant 2D-Mesh Network-on-Chip》;Zhen Zhang et al;《IEEE》;20081231;全文 *

Also Published As

Publication number Publication date
CN102868604A (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
CN102868604B (zh) 一种应用于片上网络的二维Mesh双缓冲容错路由单元
US8576843B2 (en) Packet format for a distributed system
CN103973482A (zh) 具有全局通信事务管理能力的容错片上网络***及方法
CN103248467B (zh) 基于片内连接管理的rdma通信方法
JP5376371B2 (ja) 並列コンピューティング・システムに使用されるネットワーク・インターフェース・カード
CN101420380B (zh) 一种双层双环型片上***
CN111030747B (zh) 一种基于FPGA的SpaceFibre节点IP核
CN103141050B (zh) 快速通道互联***中数据包重传方法、节点
US6615221B2 (en) Scalable transport layer protocol for multiprocessor interconnection networks that tolerates interconnection component failure
CN103618673A (zh) 一种保障服务质量的片上网络路由方法
CN102394732B (zh) 一种多微包并行处理结构
CN106487673B (zh) 一种基于三模冗余的检错重传容错路由单元
CN104484295A (zh) 并行计算机***中基于接收方滑动窗口的数据传输方法
CN106603420B (zh) 一种具有实时和容错特性的片上网络路由器
CN103188059A (zh) 快速通道互联***中数据包重传方法、装置和***
CN104598430B (zh) 一种cpu互联扩展***的网络接口互联设计与控制***
CN113285935A (zh) 一种通信***和一种片上网络路由器
CN1917519B (zh) 高级数据链路控制协议串行数据的并行传输方法及其***
CN103346862B (zh) 一种分级保护的片上网络数据传输装置及方法
RU175049U1 (ru) УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire
CN101127677A (zh) 一种基于胖树拓扑的屏障操作网络***、装置及方法
CN102394922A (zh) 分布式集群文件***及文件访问方法
CN114095580A (zh) 一种RapidIO低延时、高传输效率架构实现方法及电子设备
CN114157401A (zh) 一种支持长短两种报文格式的重传缓冲装置
Shin Harts: A distributed real-time architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant