CN112468392B - 一种处理多播流量死锁问题的片上网络及方法 - Google Patents
一种处理多播流量死锁问题的片上网络及方法 Download PDFInfo
- Publication number
- CN112468392B CN112468392B CN202011133833.7A CN202011133833A CN112468392B CN 112468392 B CN112468392 B CN 112468392B CN 202011133833 A CN202011133833 A CN 202011133833A CN 112468392 B CN112468392 B CN 112468392B
- Authority
- CN
- China
- Prior art keywords
- module
- deadlock
- input
- output
- network
- 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
Images
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/16—Multipoint routing
-
- 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/28—Routing or path finding of packets in data switching networks using route fault recovery
-
- 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/40—Wormhole routing
-
- 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/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种处理多播流量死锁问题的片上网络及方法,其中片上网络包括路由器、资源节点、网络接口以及链路;路由器包括输入模块、虚通道仲裁模块、死锁检测模块、路由计算模块、输入输出接口模块、轮询仲裁器模块和交叉开关模块;死锁检测模块用于对输入模块内的数据包进行死锁检测和死锁恢复;死锁恢复机制为检测到死锁发生时,将发生死锁的多播流量先往路由器部分空闲的输出端口输出,以及释放对这些输出端口的占用权,以打破死锁的状态。本发明基于虫孔流控的多播流量传输机制配置时产生的死锁问题,通过改变发生死锁的多播流量的传输路径来恢复,提高多播流量跑通概率,可广泛应用于片上网络通信技术领域。
Description
技术领域
本发明涉及片上网络通信技术领域,尤其涉及一种处理多播流量死锁问题的片上网络及方法。
背景技术
随着微电子技术的发展以及摩尔定律的延伸,晶体管的尺寸越来越小、芯片制程越来越短、芯片集成度越来越高,随之而来的是芯片上功能单元性能的大幅提升以及对数据交互系统的性能的更高要求。具有低功耗、面积小、高集成度等优点的片上系统(Systemon Chip,SoC)已经成为超大规模集成电路设计的主流方向,然而传统的基于总线的互连技术已经难以满足其性能要求,在这样的背景下,片上网络(Network on Chip,NoC)应运而生。
相比于性能、可扩展性、并行性相对较差的总线互连技术,片上网络互连技术具有更好的性能、可扩展性和并行性。随着多核处理器中集成的处理器核的数目越来越多,片上网络已经逐渐成为片上多核处理器通讯的首选架构。
片上网络的基本结构单元包含路由器、资源节点、网络接口以及链路,根据需求的规模可调整其规模的大小。路由器是片上网络的核心结构单元,具有接收、存储和转发数据包的功能。资源节点是片上网络中能进行数据处理、产生数据包、接收数据包的结构单元,其与网络接口直接相连。网络接口是片上网络中协调资源节点与路由器互连网络进行传输的结构单元,具有编码数据包、解析数据包和协议转换的功能。链路是片上网络中各结构单元间进行通讯的物理通道,将各个路由器进行互连从而形成片上通讯网络。
片上网络信息的传输是以数据包为基本单元进行传输的,支持以“包”为单位进行传输的片上网络称为“包交换”网络。每个数据包包含若干个微片,微片一般有3种类型,即头微片、体微片和尾微片。其中,头微片一般包含数据包路由的相关信息,如:源地址、目的地址、优先级、传输类型(单播或多播)等,体微片和尾微片一般包含具体的数据内容。
片上网络的性能还受其流控机制的影响,所谓的流控机制,即数据包在路由器与路由器间转发的方式。常见的流控机制有虚直通流控机制、虫孔流控机制等。虚直通流控机制是指当下一级路由的缓存中含有足够的缓存空间接收上一级路由整个数据包时,上一级路由才一次性将整个数据包转发给下一级路由。虫孔流控机制是指当下一级路由的缓存中能存储上一级路由的一个微片时,上一级路由就将该微片转发给下一级路由。相比于虚直通流控机制,虫孔流控机制下的虚通道利用率更高,但该流控机制下的多播传输也容易发生死锁问题,即使按XY维序算法的方式配置多播流量,也有可能发生死锁问题。
根据系统任务的不同需求,片上网络的通信方式包含单播通信和多播通信两种。多播通信通过减少数据包传输的总跳数来提高数据传输的效率,但片上网络的多播通信同样面临着一些问题:当网络中的多播流量较为复杂时,多播包间的竞争容易产生死锁问题,从而导致数据包的丢失以及整个片上网络的运转异常。因而有必要设计一种既能支持多播又可处理多播死锁问题的片上网络。
术语解释:
FWFT:First Word Fall Through。
发明内容
为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种处理多播流量死锁问题的片上网络及方法。
本发明所采用的技术方案是:
一种处理多播流量死锁问题的片上网络,包括路由器、资源节点、网络接口以及链路;
所述路由器包括输入模块、虚通道仲裁模块、死锁检测模块、路由计算模块、输入输出接口模块、轮询仲裁器模块和交叉开关模块;
所述死锁检测模块用于对输入模块内的数据包进行死锁检测和死锁恢复;
其中,死锁恢复机制为检测到死锁发生时,将发生死锁的多播流量先往路由器部分空闲的输出端口输出,以及释放对这些输出端口的占用权,以打破死锁的状态。
进一步,死锁情况至少包括以下之一:
同一所述路由器内不同输入端口的多播包,在所有多播输出端口都能输出才输出的多播机制下,分别仲裁占据了两个输出端口的一条支路而导致的死锁情况;或
多播流量部分同时输出到多个输出端口时,部分空闲的输出端口受其余堵塞的输出端口影响无法接收数据包从而导致的死锁情况。
进一步,所述输入模块包括输入接口模块、缓存模块和输出接口模块;
所述输入接口模块用于实现状态机,包含Idle和Tran两个状态;
所述缓存模块由四个FWFT模块组成,且四个FWFT对应四个优先级,所述FWFT模块增加了只读不取和根据输入信号读指针变化若干值但数据不取出的功能;
所述输出接口模块用于根据虚通道仲裁信息、死锁检测模块和输入输出接口模块输入的读信号读取缓存模块中对应优先级的FWFT模块并输出到下级模块。
进一步,所述虚通道仲裁模块用于根据固定优先级仲裁的方法仲裁某一个输入端口对应虚通道的数据输出,每次从最高优先级的虚通道开始仲裁一个虚通道进行输出。
进一步,所述路由计算模块用于计算每个输入端口的输入模块内的数据所要输出的方向,单播流量采用XY维序算法,多播流量采用查找表方法。
进一步,所述输入输出接口模块用于协调控制读取输入模块的数据转发到输出端口,接收来自死锁检测模块、路由计算模块、输入模块和交叉开关模块的信号。
进一步,所述轮询仲裁器模块用于基于轮询仲裁的原则对五个输入端口的请求仲裁信号进行处理并将输出端口占用权授予给某个输入端口。
进一步,所述交叉开关模块用于根据每个输出端口的轮询仲裁器模块的仲裁结果搭建从某个输入端口到某个输出端口的数据通路,将输入端口的数据转发到对应的输出端口,并将输出端口的仲裁信息及空闲、拥堵信息反馈给输入输出接口模块。
进一步,所述片上网络以通信网络左上角路由节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向;
所述路由器含有东、西、南、北和本地五个端口,每个路由器和网络接口通过本地端口相连,每个网络接口和一个资源节点相连,每个路由器通过东、西、南、北端口分别和四个方向相邻的路由器通过链路相连,形成二维网络。
本发明所采用的另一技术方案是:
一种处理多播流量死锁问题的方法,包括以下步骤:
每个时钟周期检测输入模块输出的数据,若同样的数据持续超过时间阈值,且该数据的部分输出端口空闲,则输出死锁恢复信号给输入模块;
当检测到死锁恢复信号时,输入输出接口模块启动死锁恢复机制,控制输入模块将缓存中的多播数据包输出到空闲输出端口并释放对这些端口的占用权。
本发明的有益效果是:本发明基于虫孔流控的多播流量传输机制配置时产生的死锁问题,通过改变发生死锁的多播流量的传输路径来恢复,提高多播流量跑通概率,为配置多播流量提供更高的灵活性。
附图说明
为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是本发明实施例中典型的片上网络拓扑结构图;
图2是本发明实施例中虫孔流控机制多播流量死锁问题第一种实例图;
图3是本发明实施例中虫孔流控机制多播流量死锁问题第二种实例图;
图4是本发明实施例中可处理多播流量死锁问题的路由器结构图;
图5是本发明实施例中FWFT的模块接口图;
图6是本发明实施例中输入输出接口模块工作流程图;
图7是本发明实施例中片上网络在Resnet 18流量模型下的平均延迟曲线示意图;
图8是本发明实施例中片上网络在Resnet 18流量模型下的吞吐率曲线示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
如图1所述,本实施例提供一种可处理多播流量死锁问题的片上网络,包括有路由器、资源节点、网络接口和链路的通信系统,以通信网络左上角路由节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向,其中x轴正方向为东方向,x轴负方向为西方向,y轴正方向为南方向,y轴负方向为北方向。每个路由器含有东、西、南、北和本地五个端口,每个路由器和网络接口通过本地端口相连,每个网络接口和一个资源节点相连,每个路由器通过东、西、南、北端口分别和四个方向相邻的路由器通过链路相连,形成二维网络。
其中,资源节点具有发送数据和接收数据的功能,其产生的数据包包含三种微片:头微片、体微片和尾微片,各个微片包含区别微片类型的标志位,头微片包含整个数据包在网络中路由所应包含的信息:包的优先级别、源地址、目的地址及传输类型(单播还是多播),体微片和尾微片包含具体的数据。每个资源节点通过链路和网络中特定的一个路由器进行相连。本实施例的路由器支持的单个数据包最长长度(所含微片数)为等于输入模块的单个FWFT的容量。
网络接口协调资源节点与路由器互连网络进行传输,具有编码数据包、解析数据包和协议转换的功能。
路由器具有数据的接收和转发功能,其包含:输入模块、虚通道仲裁模块、死锁检测模块、路由计算模块、输入输出接口模块、轮询仲裁器模块和交叉开关模块。每个路由器含有唯一的标号作为其标识,在拓扑结构为M*M的二维片上网络中,路由器的标号为自然数,随着x轴正方向其标号以1为梯度增加,随着y轴正方向其标号以M为梯度增加。与路由器通过网络接口进行相连的资源节点与对应的路由器具有相同的标号。
输入模块包含输入接口模块、缓存和输出接口模块。输入模块的作用为控制数据进入路由器、存储数据以及控制数据输出到下级模块进行处理。
虚通道仲裁模块采用固定优先级仲裁的方法仲裁某一个输入端口对应虚通道的数据输出,每次从最高优先级的虚通道开始仲裁一个虚通道进行输出。
死锁检测模块对输入模块内的数据包进行死锁检测和死锁恢复。
路由计算模块用于计算每个输入端口的输入模块内的数据所要输出的方向,单播流量采用XY维序算法,多播流量采用查找表方法。
输入输出接口模块协调控制读取输入模块的数据转发到输出模块。
轮询仲裁器模块采用轮询仲裁的方式给某个输入端口分配输出端口。
交叉开关模块将输入端口的数据传输给输出端口。
基于虫孔流控的多播流量传输机制是指当下一级部分路由器的输入缓存都能接收上一级路由器发送过来的一个微片时上一级路由器就发送对应的微片。
基于虫孔流控的多播流量死锁问题是指片上网络的路由器在处理复杂虫孔流控的多播事务时所出现的进程停止,多播数据包无法再继续转发的问题。本实施例解决的片上网络中的虫孔流控多播死锁情况有如下常见的两种:
(1)同一路由不同输入端口的多播包,在所有多播输出端口都能输出才输出的多播机制下,分别仲裁占据了两个输出端口的一条支路而导致的死锁情况,如图2所示。
(2)多播流量部分同时输出到多个输出端口时,部分空闲的输出端口受其余堵塞的输出端口影响无法接收数据包从而导致的死锁情况,如图3所示。
其中,可处理多播流量死锁问题的路由器,是指支持多播流量向一条或部分所需输出的输出端口输出数据并能在发生死锁时进行死锁检测和死锁恢复的路由器。图2和图3中实线表示已经获得占有权,虚线表示未获得占有权。
上述的输入模块工作原理如下:
(1)输入接口模块的功能为控制数据包有序进入对应的优先级的缓存,其实现方式为包含两个状态的状态机,输入接口模块根据头微片的优先级信息选择对应优先级的缓存存储,同时记录对应的优先级信息,后续的体微片和尾微片根据该优先级信息同时进入对应优先级的缓存。
(2)缓存由四条经过增加功能的FWFT(First Word Fall Through)组成,为了支持多播传输以及死锁恢复,增加的功能为只读不取(读指针变化一)和根据输入信号读指针变化若干值但数据不取出(读指针变化若干值),四条FWFT具有不同的优先级。
(3)输出接口模块根据虚通道仲裁信息、死锁检测模块和输入输出接口模块输入的读信号读取缓存中对应优先级的虚通道(FWFT)输出到下级模块。
上述的路由计算模块工作原理如下:
(1)单播流量按照xy维序算法计算输出端口,计算原则为:先将数据包沿x方向转发到目的节点所在的x坐标,再将数据包沿y方向转发到目的节点所在的y目标。
(2)多播流量按照查找表方法计算输出端口,原则为:路由计算模块根据数据包头微片中的多播标签查找初始化配置好的寄存器得到对应的输出端口。
上述的死锁检测模块的工作原理如下:
死锁检测的原理为:每个时钟周期检测输入模块输出的数据,若同样的数据持续超过一定的时间阈值,且该数据的部分输出端口空闲,则输出死锁恢复信号给输入模块,当死锁恢复完成时,撤销死锁恢复信号。
上述的输入输出接口模块的工作原理如下:
(1)正常工作状态下:根据交叉开关模块、路由计算模块输入的信号,根据输出端口的空闲或堵塞状态控制读取输入模块的数据。对于多播,当其需多播输出的端口中部分空闲时,该模块就控制输入模块的数据输出一个完整的数据包到空闲输出端口,待剩余的堵塞的输出端口空闲时,再将数据包输出给剩下的端口。
(2)死锁恢复状态下:当检测到死锁恢复信号时,输入输出接口模块启动死锁恢复机制:控制输入模块将缓存中的多播数据包输出到空闲输出端口并释放对这些端口的占用权。
上述的多播机制(也称为多播传输机制)如下:支持多播流量向一条或部分所需输出的输出端口输出数据,每一次多播输出端口的数目与组合取决于头微片在输入输出接口模块的仲裁结果。
在片上网络中用多播标签(自然数)来标识不同的多播目标节点群,不同的多播节点群在整个系统中有唯一的多播标签。在每个路由器中的查找表配置多播标签及该标签对应的输出端口组合。当多播数据包在路由器中传输时,路由器根据多播数据包的多播标签在查找表中找到对应的输出端口组合并进行输出。本实施例的多播路由方案为:当部分多播输出端口空闲时,路由器就将一个微片发给空闲的多播输出端口,本实施例中单路由器的多播包最多同时向五个输出方向多播输出。
本实施例的死锁检测机制为:每个时钟周期检测输入模块输出的数据,若同样的数据持续超过一定的时间阈值,且该数据的部分输出端口空闲,则输出死锁恢复信号给输入输出接口模块,当死锁恢复完成时,撤销死锁状态信号。
本实施例的死锁恢复机制为:当输入输出接口模块检测到死锁恢复信号时,则启动死锁恢复机制:控制输入模块先读取缓存的多播数据输出到空闲的输出端口并释放对这些端口的占用权。图6为本实施例的输入输出接口模块进行死锁检测与恢复机制的工作流程图。
以下结合具体实施例对上述片上网络进行详细解释说明。
一种可处理多播流量死锁问题的片上网络,旨在解决基于虫孔流控的多播流量传输机制配置时产生的死锁问题,是包含若干个路由器、若干个资源节点、若干个网络接口和若干条链路的通信互连网络。每个资源节点通过网络接口与路由器相连;任意两个相邻的路由器通过链路相连接;通过链路连接的路由器形成二维网络;以二维网络左上方顶点的路由器为起始坐标(0,0),水平方向为X轴,竖直方向为Y轴,以X轴的正方向为东方向,X轴的负方向为西方向,Y轴的正方向为南方向,Y轴的负方向为北方向。在本实施例实例中采用8*8片上网络进行功能验证和性能验证。图1为现有技术中典型的片上网络拓扑结构图(4*4)。
在本实施实例中,当数据在片上网络中以“包”的形式进行传输。数据包包含三种微片:头微片、体微片和尾微片,每个微片包含130位的数据,本实施例支持的数据包的最长长度位9个微片(FWFT的容量位9)。各个微片的最高两位包含区别微片类型的标志位,2’b00表示头微片,2’b01表示体微片,2’10表示尾微片。头微片包含整个数据包在网络中路由所应包含的信息:包的优先级别、源地址、目的地址及传输类型(单播还是多播),头微片的第0位表示传输类型,1’b0为单播,1’b1为多播;头微片的第1位和第2位表示包的优先级别,本实施例总共设置四种优先级别的包;头微片的第3位至第26位表示包的目的地址,对于多播包,其表示多播标签;头微片的第27位至第50位表示包的源地址;头微片第51位至55位表示多播包的长度,其余位为头微片的负载内容。体微片和尾微片的最高两位表示微片的类型,其余位表示具体的数据。本实施例支持的数据包最长长度为9个微片。表1为本实施例通信数据包格式的头微片数据格式,表2为本实施例通信数据包格式的体微片、尾微片数据格式。
表1
[129:128] | [127:56] | [55:51] | [50:27] | [26:3] | [2:1] | [0] |
微片类型 | 数据内容 | 包长 | 源地址 | 目的地址 | 优先级 | 传输类型 |
表2
[129:128] | [127:0] |
微片类型 | 数据内容 |
在本实施实例中,数据在资源节点和网络接口、网络接口和路由器、路由器和路由器间的传输遵循ABP通信协议。所述的ABP通信协议是指:发送方控制Req信号,接收方控制Ack信号;对于发送方,当发送方检测到Req信号与Ack信号相同时,将有效数据放在两者间的数据线上,并反拉Req信号;对于接收方,当接收方检测到Req信号与Ack信号不同时,将有效数据取入输入模块的缓存中。
路由器包括输入模块、虚通道仲裁模块、死锁检测模块、路由计算模块、输入输出接口模块、轮询仲裁器模块和交叉开关模块等。而处理死锁问题的核心结构为死锁检测模块、输入模块中的增加了功能的缓存模块以及输入输出接口模块。各个模块的连接关系如图4所示。
路由器的输入模块包含输入接口模块、缓存模块和输出接口模块。
其中输入接口模块用状态机实现,包含Idle和Tran两个状态。当输入接口模块检测到有效的头微片时,根据头微片中包的优先级将头微片输入到缓存中对应优先级的FWFT内,状态机由Idle转变为Tran状态,同时记录对应的优先级信息,后续的体微片和尾微片根据该优先级信息同时进入对应优先级的FWFT内,当接收完尾微片到缓存后,状态机由Tran状态变为Idle状态。
缓存模块由四个增加了功能的FWFT组成,四个FWFT对应四个优先级。为了支持多播功能以及死锁恢复,对FWFT增加了只读不取(读指针变化一)和根据输入信号读指针变化若干值但数据不取出(读指针变化若干值)的功能。其读使能信号read含有2bit,其中2’b00表示无效,FWFT内的读指针不变化且不读取数据;2’b01表示读取功能,FWFT内的读指针加一且数据不再存在于FWFT内;2’10表示只读不取功能,FWFT内的读指针加一但是数据仍旧在Fifo中没有出来;2’b11表示初始化功能,FWFT内的读指针根据输出接口模块输入的count减少count。图5为本实施例的FWFT的模块接口图。
输出接口模块根据虚通道仲裁信息、死锁检测模块和输入输出接口模块输入的读信号读取缓存中对应优先级的虚通道(FWFT)输出到下级模块。内部包含两个寄存器length_total和length_part,length_total用于记录整个数据包的长度,length_part用于记录进行死锁恢复的数据包后半部分的长度。length_total在正常状态下输出给FWFT的count值,当FWFT内只读不取数据包时,读指针由数据包的尾微片初始化到头微片,从而再次将数据发送给剩余的多播输出端口;length_part在死锁恢复状态下输出给FWFT的count值,当FWFT内只读不取数据包时,读指针由数据包的尾微片初始化到死锁恢复开始时的值,即后半部分的数据包需要再次发送给剩余的多播输出端口。
路由器的虚通道仲裁模块用固定优先级仲裁的方法仲裁某一个输入端口对应虚通道的数据输出,每次从最高优先级的虚通道开始仲裁一个虚通道进行输出。在本实施例实施实例中采用状态机实现,包含Idle和Tran两个状态。在Idle状态,虚通道仲裁模块检测到四个FWFT的empty信号不全为空时选择优先级最高的非空FWFT进行输出,并跳转到Tran状态;在Tran状态,当虚通道仲裁模块检测到数据包的尾微片从FWFT中取出时,状态机跳回Idle状态。
路由器的死锁检测模块对输入模块内的数据包进行死锁检测和死锁恢复。在本实施例的实施实例中通过状态机实现,包含Normal、Add和Deadlock三个状态。初始时该模块处于Normal状态,当检测到输入模块的输出端数据未变化时进入Add状态;在Add状态,若检测到输入端口对应的部分多播输出端口一直空闲,部分多播输出端口一直堵塞,则死锁检测计数器加一,停留在Add状态,否则跳回Normal状态;当死锁检测计数器计数值超过阈值时,跳转到Deadlock状态,死锁检测模块发出死锁恢复信号;在Deadlock状态,当死锁检测模块检测到尾微片从输入模块输出时,跳转回Normal状态。
路由器的路由计算模块用于计算每个输入端口的输入模块内的数据所要输出的方向,单播流量采用XY维序算法,多播流量采用查找表方法。多播方案,硬件上需要在路由每个路由的每个路由计算模块内部例化多播表,多播表长度为128,宽度为5bit,例如:multi_table[0]=5’b10001,代表的意思是向东和本地资源节点输出数据。单播方案的XY维序算法是指:在前面所述的坐标轴体系下,源节点的数据包需要先沿着X轴方向路由到与目的节点X坐标相同的路由器上,在沿着Y轴方向路由到与目的节点Y坐标相同的路由器上,最后传输到目的节点。
路由计算模块检测到头微片输入时,开始根据头微片的包传输类型以及目的地址进行计算所需输出的方向,并将输出结果输出、有效标志位置高(高为有效),当检测到尾微片从输入模块取出并输出时,将有效标志位置低(低为无效)。
路由器的输入输出接口模块协调控制读取输入模块的数据转发到输出模块,接收来自死锁检测模块、路由计算模块、输入模块和交叉开关模块的信号,也是本实施例实施实例中的核心模块,本实施例实例通过状态机实现,多播的输出以及死锁恢复的过程都依赖于输出输出接口协调输入模块与其他模块工作,其工作流程如图6所示。其中ready_dir为交叉开关模块五个输出端口输入到dir方向的空闲与堵塞信号,高电平表示空闲,低电平表示堵塞。des指路由计算模块输入到该模块的路由计算结果。
输入输出接口模块模块包含三个关键寄存器:deadlock_branch、req_branch和tran_finish,每个寄存器含有5个bit,分别代表5个输出端口,作用分别为记录正在进行死锁恢复的输出端口、正在同时输出的输出端口已经已经传输完成的输出端口。正常工作状态下,该模块检测tran_finish的值与des相时,状态机回到初始状态;若tran_finish的值与des不同,则向未传输的输出支路发出仲裁请求。req_branch则记录正在输出的支路,当输出完时,更新tran_finish的值;死锁恢复状态下,deadlock_branch记录正在死锁恢复的输出支路。
某个输入端口的输入输出接口模块与轮询仲裁器模块通过req[4:0]、data[129:0]和valid[4:0]连接,5个bit的req信号分别代表向五个输出方向的仲裁信号,5个bit的valid信号分别代表向五个输出方向的数据有效标志位,硬件上5个bit的req信号和5个bit的valid信号分别与五个五输入一输出轮询仲裁器相连,当该输入端口需要向某些输出端口请求仲裁输出时,将对应位的req信号置高,当部分请求仲裁成功时,req_branch记录仲裁成功的输出端口,输入输出接口模块撤销所有的req信号。
某个输入端口的输入输出接口模块与交叉开关模块通过valid[4:0]、data[129:0]和ready[4:0]连接,5个bit的valid分别代表向五个输出方向的输出的数据有效标志位,5个bit的ready分别代表五个输出端口反馈给该输入端口的信号。某位的valid信号为高,代表输入的数据需要输出到对应的输出端口,交叉开关根据这些有效标志位将一个输入端口的有效数据输出到一个或多个输出段偶。某位的ready信号为高,代表对应的输出端口可接收该输入端口的一个微片。
某个输入端口的输入输出接口模块反馈给该输入端口对应的输入模块read[1:0]信号,用以控制读取输入模块的FWFT。
轮询仲裁器模块基于轮询仲裁的原则对五个输入端口的请求仲裁信号进行处理并将输出端口占用权授予给某个输入端口。在本实施例实施实例中,硬件上共实例化五个五输入一输出轮询仲裁器,来将五个输出端口仲裁给五个输入端口。
所述的轮询仲裁原则是指:对于某一输出端口的轮询仲裁器,假设轮询仲裁方向为北->东->南->西->本地,若上一次仲裁输出为东输入端口,则下一次仲裁输出起始的输入端口是南输入端口,若南输入端口有请求,则将占有权授予南输入端口,否则检测西输入端口是否有请求。轮询仲裁以“包”为单位进行,即当轮询仲裁器从数据包的头微片输出到输出端口开始授予某一输入端口占有权,直到传输完该输入端口对应的尾微片才释放该输入端口对输出端口的占有权。
五输入一输出轮询仲裁器采用状态机实现,包含Idle和Tran两个状态。初始化时为Idle状态,当检测到来自五个输入端口的仲裁请求信号req[4:0]!=5’b00000,根据上述的轮询仲裁原则将输出端口的占有权授予某一个输入端口,并进入Tran状态。在Tran状态,当检测到传输完尾微片时,释放该输入端口的占有权,并更新轮询仲裁方向。
交叉开关模块根据每个输出端口的轮询仲裁器模块的仲裁结果搭建从某个输入端口到某个输出端口的数据通路,将输入端口的数据转发到对应的输出端口,并将输出端口的仲裁信息及空闲、拥堵信息反馈给输入输出接口模块。
对于某个输出端口,当仲裁结果更新时,交叉开关模块搭建仲裁的输入端口与该输出端口的数据通路,并反馈5bit的ready[4:0]信号给五个输入端口的输入输出接口模块。
参见图7和图8,图7为本实施例的片上网络在Resnet 18流量模型下的注入率-平均延迟曲线,图8为为本实施例的片上网络在Resnet 18流量模型下的注入率-吞吐率曲线,有图7和图8可明显看出本实施例的片上网络具有良好的性能。
综上所述,本实施例的片上网络与现有的技术相对比,具有如下有益效果:
(1)、现有技术的死锁恢复机制本质上是通过检测到死锁发生时改变发生死锁的多播流量的传输路径来进行恢复的:多播树建立过程中形成死锁时,缓存发生死锁的多播分组,同时改变其他多播分组传输路径为水平方向,促使网络从死锁中恢复过来。
而本实施例的死锁恢复机制则是检测到死锁发生时,将发生死锁的多播流量先往路由器部分空闲的输出端口输出并释放对这些输出端口的占用权了,从而打破死锁的状态。
相比之下,本实施例的死锁恢复机制不像对比文件是通过改变发生死锁的多播流量的传输路径来恢复的。
(2)、现有技术中,减少死锁发生概率的方式:通过网络分层的方法来减少网络中多个多播分组发生多播死锁的概率,在单个通信子网内,多播分组最多发往2个输出端口,多播分组间产生多播死锁概率大大降低。
而本实施例减少死锁发生概率的方式:通过配置路由器内部的硬件(查找表)灵活规划多播流量路径的方式,使复杂多播流量之间尽量绕开,减少复杂多播流量之间的竞争关系,从而减少网络中多个发生多播死锁的概率。同时本实施例的多播分组最多能发往5个输出端口。
相比之下,本实施例是通过硬件方式提供开发者更大灵活性来规划配置多播流量的传输路径,使复杂多播流量之间尽量绕开,减少复杂多播流量之间竞争关系,从而减少网络中发生多播死锁的概率。而对比文件则是某种程度上限制了配置多播流量的传输路径及多播流量路径规划的灵活性。
(3)、现有技术支持死锁恢复机制的硬件结构中,其每个输入端口的缓存中包含有额外的缓存用来存储死锁时的数据,通过额外的缓存来支持死锁恢复机制。
而本实施例支持死锁恢复机制的硬件结构中,是通过修改了每个输入端口内部的缓存(FWFT先入先出队列),增加“只读不取”功能来进行对死锁恢复机制的支持,相比之下,存储资源消耗更少,面积更占优势。
相比之下,本实施例是通过增加硬件存储资源的功能来支持死锁恢复机制,而对比文件则是通过增加硬件存储资源的开销来支持死锁恢复机制的。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (10)
1.一种处理多播流量死锁问题的片上网络,其特征在于,包括路由器、资源节点、网络接口以及链路;
所述路由器包括输入模块、虚通道仲裁模块、死锁检测模块、路由计算模块、输入输出接口模块、轮询仲裁器模块和交叉开关模块;
所述死锁检测模块用于对输入模块内的数据包进行死锁检测和死锁恢复;
其中,死锁恢复机制为检测到死锁发生时,将发生死锁的多播流量先往路由器部分空闲的输出端口输出,以及释放对这些输出端口的占用权,以打破死锁的状态;
所述输入模块的工作原理如下:
(1)输入接口的功能为控制数据包有序进入对应的优先级的缓存,输入接口根据头微片的优先级信息选择对应优先级的缓存存储,记录对应的优先级信息,后续的体微片和尾微片根据该优先级信息同时进入对应优先级的缓存;
(2)缓存由四条经过增加功能的FWFT组成,增加的功能为只读不取和根据输入信号读指针变化若干值但数据不取出,四条FWFT具有不同的优先级;
(3)输出接口根据FWFT的仲裁信息、死锁检测模块和输入输出接口模块输入的读信号读取缓存中对应优先级的FWFT输出到下级模块;
所述死锁检测的原理为:每个时钟周期检测输入模块输出的数据,若同样的数据持续超过一定的时间阈值,且该数据的部分输出端口空闲,则输出死锁恢复信号给输入模块,当死锁恢复完成时,撤销死锁恢复信号。
2.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,死锁情况至少包括以下之一:
同一所述路由器内不同输入端口的多播包,在所有多播输出端口都能输出才输出的多播机制下,分别仲裁占据了两个输出端口的一条支路而导致的死锁情况;或
多播流量部分同时输出到多个输出端口时,部分空闲的输出端口受其余堵塞的输出端口影响无法接收数据包从而导致的死锁情况。
3.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述输入模块包括输入接口模块、缓存模块和输出接口模块;
所述输入接口模块用于实现状态机,包含Idle和Tran两个状态;
所述缓存模块由四个FWFT模块组成,且四个FWFT对应四个优先级,所述FWFT模块增加了只读不取和根据输入信号读指针变化若干值但数据不取出的功能;
所述输出接口模块用于根据虚通道仲裁信息、死锁检测模块和输入输出接口模块输入的读信号读取缓存模块中对应优先级的FWFT模块并输出到下级模块。
4.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述虚通道仲裁模块用于根据固定优先级仲裁的方法仲裁输入端口对应虚通道的数据输出,每次从最高优先级的虚通道开始仲裁一个虚通道进行输出。
5.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述路由计算模块用于计算每个输入端口的输入模块内的数据所要输出的方向,单播流量采用XY维序算法,多播流量采用查找表方法。
6.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述输入输出接口模块用于协调控制读取输入模块的数据转发到输出端口,接收来自死锁检测模块、路由计算模块、输入模块和交叉开关模块的信号。
7.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述轮询仲裁器模块用于基于轮询仲裁的原则对五个输入端口的请求仲裁信号进行处理并将输出端口占用权授予给某个输入端口。
8.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述交叉开关模块用于根据每个输出端口的轮询仲裁器模块的仲裁结果搭建从某个输入端口到某个输出端口的数据通路,将输入端口的数据转发到对应的输出端口,并将输出端口的仲裁信息及空闲、拥堵信息反馈给输入输出接口模块。
9.根据权利要求1所述的一种处理多播流量死锁问题的片上网络,其特征在于,所述片上网络以通信网络左上角路由节点为原点,水平向右为x轴正方向,竖直向下为y轴正方向;
所述路由器含有东、西、南、北和本地五个端口,每个路由器和网络接口通过本地端口相连,每个网络接口和一个资源节点相连,每个路由器通过东、西、南、北端口分别和四个方向相邻的路由器通过链路相连,形成二维网络。
10.一种处理多播流量死锁问题的方法,应用于如权利要求1-9任一项所述的一种处理多播流量死锁问题的片上网络,包括以下步骤:
每个时钟周期检测输入模块输出的数据,若同样的数据持续超过时间阈值,且该数据的部分输出端口空闲,则输出死锁恢复信号给输入模块;
当检测到死锁恢复信号时,输入输出接口模块启动死锁恢复机制,控制输入模块将缓存中的多播数据包输出到空闲输出端口并释放对这些端口的占用权。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011133833.7A CN112468392B (zh) | 2020-10-21 | 2020-10-21 | 一种处理多播流量死锁问题的片上网络及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011133833.7A CN112468392B (zh) | 2020-10-21 | 2020-10-21 | 一种处理多播流量死锁问题的片上网络及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112468392A CN112468392A (zh) | 2021-03-09 |
CN112468392B true CN112468392B (zh) | 2022-03-25 |
Family
ID=74833227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011133833.7A Active CN112468392B (zh) | 2020-10-21 | 2020-10-21 | 一种处理多播流量死锁问题的片上网络及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112468392B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584507B (zh) * | 2022-02-23 | 2023-07-04 | 中山大学 | 基于类脑处理器的数据处理方法、路由器及网络系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577379A (zh) * | 2013-10-17 | 2014-02-12 | 中国人民解放军国防科学技术大学 | 一种检测片上网络中死锁的方法 |
CN104539547A (zh) * | 2014-11-14 | 2015-04-22 | 中国科学院计算技术研究所 | 一种用于三维集成电路片上网络的路由器及路由方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9036482B2 (en) * | 2011-12-08 | 2015-05-19 | The Hong Kong University Of Science And Technology | Bufferless nonblocking networks on chip |
CN103729331B (zh) * | 2013-11-26 | 2019-04-12 | 西安电子科技大学 | 片上网络通信死锁避免方法、路由器及通信网络 |
CN104579951B (zh) * | 2014-12-29 | 2018-03-23 | 合肥工业大学 | 片上网络中新颖的故障与拥塞模型下的容错方法 |
-
2020
- 2020-10-21 CN CN202011133833.7A patent/CN112468392B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577379A (zh) * | 2013-10-17 | 2014-02-12 | 中国人民解放军国防科学技术大学 | 一种检测片上网络中死锁的方法 |
CN104539547A (zh) * | 2014-11-14 | 2015-04-22 | 中国科学院计算技术研究所 | 一种用于三维集成电路片上网络的路由器及路由方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112468392A (zh) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8458267B2 (en) | Distributed parallel messaging for multiprocessor systems | |
CN107454003B (zh) | 一种可动态切换工作模式的片上网络路由器及方法 | |
US6751684B2 (en) | System and method of allocating bandwidth to a plurality of devices interconnected by a plurality of point-to-point communication links | |
US8041774B2 (en) | Early issue of transaction ID | |
US6950438B1 (en) | System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system | |
US6606326B1 (en) | Packet switch employing dynamic transfer of data packet from central shared queue path to cross-point switching matrix path | |
CN102035723A (zh) | 一种片上网络路由及实现方法 | |
CN112152932A (zh) | 片上网络路由控制方法、片上网络路由器及可读存储介质 | |
JP4833518B2 (ja) | 高速交換環境でマルチキャストするシステム、方法及び論理 | |
JP4255833B2 (ja) | コンピュータ・システムの入出力ノードにおけるタグ付けおよび調停メカニズム | |
US6721816B1 (en) | Selecting independently of tag values a given command belonging to a second virtual channel and having a flag set among commands belonging to a posted virtual and the second virtual channels | |
CN112468392B (zh) | 一种处理多播流量死锁问题的片上网络及方法 | |
US6681274B2 (en) | Virtual channel buffer bypass for an I/O node of a computer system | |
US8885673B2 (en) | Interleaving data packets in a packet-based communication system | |
US8040907B2 (en) | Switching method | |
US11113223B1 (en) | Dual mode interconnect | |
JP4391819B2 (ja) | コンピュータ・システムの入出力ノード | |
US6915371B1 (en) | Tunnel device for an input/output node of a computer system | |
US6839784B1 (en) | Control unit of an I/O node for a computer system including a plurality of scheduler units each including a plurality of buffers each corresponding to a respective virtual channel | |
US6820151B2 (en) | Starvation avoidance mechanism for an I/O node of a computer system | |
JP2023531137A (ja) | オン・チップ・ルーター | |
US7047284B1 (en) | Transfer request bus node for transfer controller with hub and ports | |
KR102014118B1 (ko) | Axi 기반 네트워크 백본 시스템의 서브채널방식의 채널 관리 방법 및 장치 | |
CN117156006A (zh) | 一种片上网络的数据路由控制架构 | |
Meka et al. | Demand based routing in Network-on-Chip (NoC) |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |