CN103577379A - 一种检测片上网络中死锁的方法 - Google Patents

一种检测片上网络中死锁的方法 Download PDF

Info

Publication number
CN103577379A
CN103577379A CN201310486505.9A CN201310486505A CN103577379A CN 103577379 A CN103577379 A CN 103577379A CN 201310486505 A CN201310486505 A CN 201310486505A CN 103577379 A CN103577379 A CN 103577379A
Authority
CN
China
Prior art keywords
cwl
signal
output
input
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.)
Granted
Application number
CN201310486505.9A
Other languages
English (en)
Other versions
CN103577379B (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201310486505.9A priority Critical patent/CN103577379B/zh
Publication of CN103577379A publication Critical patent/CN103577379A/zh
Application granted granted Critical
Publication of CN103577379B publication Critical patent/CN103577379B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种检测片上网络中死锁的方法,目的是提供一种既能在死锁一旦发生时可立刻检测出死锁,且发现的死锁准确无误的方法。技术方案是先根据路由网络的拓扑互连结构,构建具有同步功能的通道等待网络;在路由网络启动后,每间隔时间T基于通道等待网络对死锁进行检测:每个CWL模块获取对应的通道与相邻通道之间的初始等待关系,通过逻辑检测去除与相邻通道不存在等待关系的通道,即通道等待网络中输入或输出信号都为零的CWL模块,达到稳态网络后所有剩余CWL所对应的通道存在于一个死锁结中。本发明在最多等于通道数的时钟节拍时间内就可完成死锁检测,效率较高;且实现了精确检测,不会出现误检的情况。

Description

一种检测片上网络中死锁的方法
技术领域
本文涉及一种检测片上网络中死锁的方法。 
背景技术
超大规模集成电路(VLSI)技术继续遵循摩尔定律,单位面积可集成的晶体管数目以每18个月翻一番的速度迅速增长,可以说微处理器已经进入了超10亿支晶体管时代。但是由于近年来VLSI技术进入纳米级工艺时,继续缩小器件尺寸遇到了前所未有的阻力。为了高效利用片上各种资源,片上多处理器技术CMP(Chip Multi-Processor)逐渐流行起来。随着单片芯片内集成的核数的增加,芯片的可扩展性也受到了限制。传统处理器的片上互连机制多采用总线结构,系统硬件开销很低,但带宽较窄,在当前CMP中,随着处理器核心数目的增加,总线已经无法提供足够的带宽。总线的另一个问题是容易产生故障,一旦总线故障,整个CMP系统就会崩溃,容错性较差。当CMP技术广为应用后,传统的多处理器互连方式——计算机互连网络技术也相应的移植到了片上,成为片上网络(Network on Chip),简称NOC。片上网络相比总线提供了足够的带宽并比交叉开关拥有更好的扩展性与更少的硬件代价。但是设计片上网络需要考虑多个方面的问题,从网络模块设计实现角度来讲,由于信号在芯片内传输时,往往要经过数个功能部件,多个时钟周期,所以在CMP中片上互连已经同时主导了性能和功耗两个研究者最关心的方面,设计带宽充足,结构精巧的片上网络是提高处理器性能,减少处理器功耗,简化处理器设计复杂度不可忽视的重要研究点。此外随着片上集成的核数逐步增加,片上的结构更加复杂,组件数量的增加也造成了发生错误概率的增加,引起了片上平均失效时间MTFB(Mean Time Between Failures)的减少,尤其对于长时间进行密集型运算的系统来说,发生错误的概率会更高。所以CMP系统相对传统单核处理器更容易受到各种故障的威胁。片上网络的容错能力和处理器总体性能表现及正常工作能力密切相关。 
死锁问题同样出现在片上网络中,会导致网络性能的大幅下降,如果不对其进行专门的处理就会导致系统崩溃。当网络中的一组报文,由于申请其他报文占用而未释放的资源,就会进入等待状态而不能继续前进。如果由于这种等待占用的报文构成了一个循环,而造成所有的报文永远无法前进,就称这种情况为死锁。 
在网络中解决死锁问题对于维护网络的正常运行至关重要。目前解决死锁问题有三种策略,死锁预防,死锁避免和死锁恢复。在死锁预防策略中,网络资源以一种绝不会导致死锁的方式分配,多在数据传输之前,先保留所有传输所需的资源,然后再开始传输,当传输完全结束后,释放所有申请到的资源。死锁预防策略往往被认为太过保守,提前保留所有传输所需要的资源虽然解决了死锁问题,但是却会导致低下的网络资源利用率,事实证明,大多数被保留的网络资源在整个传输过程中都存在严重的闲置情况,无法被其他需要传输的数据所利用。死锁避免策略允许报文在网络中传输时动态的申请资源,当然这种申请只有在不会引起死锁的安全状态才会被应答。显然,在死锁避免策略中当报文通过后,会立即释放申请到的资源供其他报文使用而不必等到传输结束。相比死锁预防策略,死锁避免策略明显提高了网络资源的利用率。当然,如何保证网络始终运行在无死锁的安全状态并不是一个简单的问题,目前主流的做法是对网络的路由函数进行一些限制,删除那些可能导致不安全状态的路由选项,这样一来,如何尽量减少对路由的限制并避免死锁的发生就成了一个研究的方向。 
上述两种策略都会在死锁发生之前就将其产生的可能性消除,也就是说阻止死锁的出现。而死锁恢复策略则不同,不会对网络资源的申请进行任何限制,也不会在分配资源时进行额外的检查来防止死锁出现,而是放任死锁出现,然后对其进行恢复。所有死锁恢复策略均基于一个基本的假设,死锁发生的频率是很小的,两次死锁发生的间隔不能大于一次解锁过程所需要的时间,否则不停地死锁检测和解锁将会造成极大地性能下降。死锁恢复策略一般都会提供一种检测手段来检测死锁,一旦检测出死锁的存在,就会采取某种手段将其从网络中移除。死锁恢复策略需要搭配死锁检测机制来确定死锁的存在,由于硬件条件的限制,往往无法获得精确死锁检测所需要的全局信息,所以精确死锁检测往往被认为不可实现。传统的死锁检测方法一般都是基于启发式算法和本地信息的非精确算法,而这些非精确算法有着其局限性,限制了死锁恢复技术的应用。 
当网络平台转移到片上以后,由于片上具有通信资源较为丰富和信号传递延迟较小的特点,为精确死锁检测传递所需的全局信息提供了有利条件。在此基础上,存在一种利用专用线路传递全局信息基于传递闭包网络的实时精确死锁检测机制。实验表明,与传统的基于本地信息的启发式非精确方法相比,这种实时精确死锁检测机制在死锁检测精度上有了较大提升,同时在性能和功耗上也比传统方法有很大优势。但是这种方法需要消耗大量的通信资源,其中有很大一部分是片上也较为珍贵的全局通信资源,硬件开销较大。 
在某一个特定的时刻,网络中的资源申请与等待情况可以用通道等待图(Channel Wait-for Graph,CWG)来描述,CWG中的节点代表网络中的各条通道,如果通道1中的报文正在申请并等待通道2,那么在CWG中,代表通道1的节点就会发出一条有向边,指向代表通道2的节点。死锁检测的目标就是在CWG中找到环(cycle)或者结(knot)。由于检测往往需要全局信息以及大量的计算时间,所以精确的死锁检测算法实现起来非常困难。采用通道等待图CWG来描述某一个特定时刻网络中的资源申请与等待情况时,CWG中的节点代表网络中的各条通道。图G=(V,E),点集V={v0,v1,...,vn}代表网络中的通道,边集E是边序偶<i,j>的集合,i,j∈V。<i,j>∈E当且仅当在当前时刻,通道i正在等待通道j。一个通道等待图中的节点可以有多条出度边,这是因为自适应路由中,路由函数R所提供的选择往往有多个,如果可以选择的所有输出通道都被占用了,则报文进入阻塞状态,同时等待所有可以选择的输出通道,这时一个节点的多条出度边就形成了。当通道等待图中出现结死锁就出现了,结是这样一个节点的集合N,从N中的任何一个节点出发,所能到达的所有节点的集合依然是N。结是死锁出现的充分必要条件,直观上看来,由于结内的节点代表的通道都被占用了,正在被其他节点等待,而这些通道所申请的输出通道又都是结内的其他通道,这样所有的通道都不可能被释放,这种等待关系就会持续下去形成死锁。 
目前,广为应用的检测算法是只用本地信息的非精确的启发式算法。基于时间阈值的启发式算法是一种典型的非精确死锁检测算法。其思想是一个报文在某一个通道中被阻塞时,该通道为之提供一个计数器,用以计算该报文停留的时间,当这个时间大于一个时间阈值的时候,该报文就被认为处于死锁环中。 
这种算法并不能立刻检测出死锁的存在,而且会把某些仅仅因为等待过长时间的情况错判为死锁。这种错判会激活解锁机制,而这往往会带来额外的开销。事实上,一些解锁机制是独占的,如果两个死锁同时发生,不能同时进行解锁处理。所以当该解锁机制忙于为一个错判的死锁进行解锁时,真正的死锁也许已经发生并且无法马上进行解锁。另外还有一个主要的缺陷是,时间阈值的选取是非常困难的。报文长度、网络负载、通信模式等变化的网络状态将导致与阈值时间的不匹配,致使性能下降。正是这种检测方法的低效限制了当前死锁恢复机制的应用,找到更加高效的检测算法是十分有必要的。 
发明内容
本发明要解决的技术问题是提供一种精确检测片上网络中死锁的方法,使得既能在死锁一旦发生时即可立刻检测出死锁,并且发现的死锁准确无误。 
本发明的技术方案是: 
第一步,根据路由网络的拓扑互连结构,构建具有同步功能的通道等待网络。 
为网络路由节点间互连的N条通道建立N个与通道一一对应的通道等待标识模块CWL(Channel Wait Label),根据路由网络的拓扑结构,将N个CWL互连形成通道等待网络。将每个CWL模块与同步中心相连,且与n+m个路由节点相连(连接这些路由节点的通道与该CWL模块所对应的通道之间,存在着通道等待关系),实现通道等待网络的同步。N为片上网络中的通道个数,n为CWL的输出位数,m为CWL的输入位数,m和n均为正整数,由网络中节点间互连通道的设计决定。 
每个CWL代表网络节点间互连的一个通道,这一通道可以被m个相邻的通道申请使用,也能够申请使用n个相邻的通道,由路由网络原有的拓扑互连结构决定。每个CWL有n位输出、n位反馈输入、m位反馈输出、m位输入。m位输入连接m个相邻CWL,这m个相邻的CWL称为输入CWL,表示在网络中有m条相邻通道可以申请使用该通道;n位输出连接n个相邻CWL,这n个相邻CWL的称为输出CWL,表示在网络中有n条相邻通道可以被该通道申请使用。与输入反向的m位反馈输出用来向申请使用该通道的m条相邻通道反馈该通道的输出信息;与输出反向的n位反馈输入用来向该CWL反馈该CWL要申 请使用的n条相邻通道的信息。m位输入中,某一位为1表示两个CWL模块之间存在依赖边,即在某网络通道申请使用其相邻的某个通道时,这一通道被其它CWL模块占用,二者之间具有等待关系;某一位为0表示所属CWL模块未被其它CWL模块占用,两个CWL模块之间不存在依赖边,网络通道之间没有等待关系。每个CWL模块另通过START,IFSAME,END三个信号线与同步中心相连,实现网络的同步功能,并通过DEADLOCKPTR信号线与该CWL所代表的网络通道相连接。 
通道等待标识模块CWL由初始化单元、输入判定单元、输入反馈单元、选择器、输出寄存器、输出判定单元、结果输出单元、缓存栈和比较器构成。初始化单元由输入缓存和置寄存器信号部件组成,对外与路由网络中的n个路由节点相连(这n个路由节点的通道与该CWL模块所对应的通道相邻,并且可能被该CWL对应的通道申请使用),并通过START信号线与同步中心相连,对内与选择器相连;置寄存器信号部件从同步中心接收START信号,当START信号为1时,将置寄存器信号置为1,送往选择器;死锁检测开始时,输入缓存进行初始化,暂存该CWL模块所对应的通道与相邻的可被申请使用的通道之间的等待关系,当该CWL模块申请使用某一相邻通道时,二者之间存在等待关系,输入缓存对应位的值置为1,否则置为0。输入判定单元与为该CWL提供输入的m个CWL相连,对内与选择器相连;当从m个输入CWL接收的信号全部为0时,输入判定单元将n位全0信号送往选择器,当从m个输入CWL接收的信号非全0时输入判定单元无动作。选择器是一个2选1选择器,其数据输入端与初始化单元的输入缓存和输入判定单元相连,控制输入端与初始化单元的置寄存器信号部件相连,输出端与输出寄存器相连;当选择器接收到的置寄存器信号为1时,选择器从输入缓存获得n位结果,送往输出寄存器,否则从输入判定单元获得结果送往输出寄存器。输出寄存器共有n位,输出寄存器输入端与选择器相连,并通过反馈输入信号线和n位输出CWL相连;输出寄存器输出端与输出判定单元、缓存栈和比较器相连,并通过输出信号线和输出CWL相连;当从反馈输入接收的反馈信号中有1时,输出寄存器n位全部置0,没有1时则输出寄存器接收选择器的选择结果;输出寄存器将n位值送至输出判定单元、缓存栈和比较器,并向n个输出CWL模块传送输出信号,每个输出CWL模块接收一位对应的输出 信号。缓存栈为n位,与输出寄存器和比较器相连,并通过CLK信号线接收来自路由网络的时钟信号;缓存栈在时钟信号每拍的上升沿处,寄存上一拍输出寄存器值。比较器对内与输出寄存器和缓存栈相连,对外通过IFSAME信号线与同步中心相连,比较器将缓存栈的内容与输出寄存器的内容进行比较,当输出寄存器和缓存栈的值相同时,将IFSAME信号置1并送至同步中心。输出判定单元是一个n位或门,与输出寄存器、结果输出单元和输入反馈单元相连,接收来自输出寄存器的信号;若n位输出寄存器信号全为0,输出判定单元将0送至结果输出单元和输入反馈单元,否则将1送至结果输出单元和输入反馈单元。结果输出单元是一个三态门逻辑结构,对内与输出判定单元相连,对外通过DEADLOCKPTR和END信号线与同步中心相连;当结果输出单元接受到来自于同步中心的END信号时,根据从输出判定单元接收到的信号产生DEADLOCKPTR信号送至同步中心,DEADLOCKPTR为1标识该CWL所代表的通道为死锁通道;输入反馈单元对内与输出判定单元相连接,对外与m个相连的输入CWL相连;输入反馈单元从输出判定单元接收判定信号,当信号为0时,产生反馈输出信号将m个输入CWL模块的输出寄存器全部置为0,当信号为1时不进行操作。 
同步中心由计数器、同步状态机、全1判别部件、START扇出部件和END扇出部件组成。全1判别部件是或门逻辑结构,对外通过IFSAME信号与N个CWL模块相连,对内与同步状态机相连;全1判别部件接收N位IFSAME信号进行全1判别,若N位IFSAME信号全为1,判别信号为1,指示所有CWL模块当前状态不再变化,检测结束,否则判别信号为0继续检测。计数器与同步状态机相连;当每次死锁检测结束时,计数器清0,重新开始计时,到T拍时启动死锁检测;T由网络规模和死锁发生的频率设定,使得计数器每到T拍进行一次死锁检测,计数器的每拍与路由网络的时钟节拍同步。同步状态机与全1判别部件、计数器、START扇出部件和END扇出部件相连;同步状态机由空闲和检测两个状态组成:当计数器没有到T时,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,计数器增1;当计数器到T拍时,同步状态机由空闲状态进入检测状态,此时向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,检测开始; 当从全1判别部件接收的判别信号为0时,同步状态机处于检测状态,向END扇出部件发送值为0的END扇出信号;当同步状态机从全1判别部件的判别信号为1时,全1判别成立,由检测状态进入空闲状态,向END扇出部件发送值为1的END扇出信号,此时END扇出部件向所有CWL发送END信号,计数器清零。START扇出部件对内与同步状态机相连,对外通过START信号线与所有CWL模块相连;当同步状态机从空闲状态进入检测状态时,通过N位START信号线向N个CWL模块发送启动信号,通道等待网络开始进行死锁检测;END扇出部件对内与同步状态机相连,对外通过END信号线与所有CWL模块相连,当同步状态机从检测状态进入空闲状态时,通过N位END信号线将结束信号送至N个CWL模块。 
第二步,启动路由网络,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,通道等待网络的同步中心的计数器开始计数,节拍与路由网络的时钟节拍一致。 
第三步,基于通道等待网络对死锁进行检测。路由网络启动之后,每隔时间T拍进行一次死锁检测,检测流程如下: 
3.1在同步中心的计数器到达第T拍时,同步状态机由空闲状态转为检测状态,向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,N个CWL模块接收到START扇出部件发送的START信号,死锁检测开始; 
3.2对通道等待网络进行初始化。每个CWL的输入缓存从相连的n个路由节点获取该CWL模块所对应的通道与相邻通道之间的等待关系:当该CWL所对应的通道申请使用某一相邻通道时,二者间存在通道等待关系,输入缓存的对应位为1;当该CWL所对应的通道没有申请使用某一通道时,二者间不存在等待关系,输入缓存的对应位为0;输出寄存器在接收来自输入缓存的信号,相应位也为1或0; 
3.3每个CWL模块对自身的m位输入进行逻辑检测,方法是: 
3.3.1若m位输入全为0,输出寄存器的n位输出信号线也全部为0,转3.5; 
3.3.2若m位输入不全为0,则输出判定单元对从输出寄存器接收的n位输出信号进行判定,如果n位输出全为0,则由输入反馈单元通过反馈信号线对与 所属CWL相连的m个输入CWL发送反馈信号,m个输入CWL接收到反馈信号后,分别将各自对该CWL的输入也置为0,转3.4;如果n位输出不全为0,则直接转3.4; 
3.4每个CWL模块的比较器分别比较各自n位输出与缓存栈中上一拍的输出是否相同,如果相同,由CWL模块中的比较器置IFSAME信号为1,并由缓存栈暂存这一拍n位输出信号的值,转3.5;如果不同跳转到3.3; 
3.5同步中心的全1判别部件若发现所有CWL模块的IFSAME均为1,代表网络状态没有变化了,达到稳态网络,同步状态机由检测状态转为空闲状态,向END扇出部件发送值为1的END扇出信号,同步中心的END扇出部件向所有CWL模块发送END信号,计数器清零,同步中心的END扇出部件向所有CWL模块发送END信号,检测结束,将此时输入信号或输出信号不为0的CWL模块称为剩余CWL模块,所有剩余的CWL模块所对应的通道存在于一个死锁结中;剩余CWL模块的结果输出单元置DEADLOCKPTR信号为1,标识死锁通道并且通知路由节点启动死锁解锁,计数器清零重新开始计时,转3.1;若全1判别部件发现存在有某个CWL模块的IFSAME值不为1,则向同步状态机发送值为0的判别信号,同步状态机仍然处于检测状态并向END扇出部件发送值为0的END扇出信号,跳转到3.3步。 
由于路由网络启动后,网络持续运行的过程中死锁都有可能会发生,所以本发明的死锁检测是每间隔时间T拍进行一次死锁检测。在路由网络停止运行后,通道等待网络也停止运行,不再进行死锁的检测。 
采用本发明可以达到以下技术效果: 
在本发明第二步的3.3中,由于每时钟节拍将去除至少一条通道,所以,当存在死锁时,所用时钟节拍数目少于通道数目;当不存在死锁时,所用时钟节拍数等于通道数目。因此本发明在最多等于通道数的时钟节拍时间内就可完成死锁检测,效率较高。 
由于网络中总的发送报文的数量是一定的,所以可以用检测出的正确死锁数目来说明检测的精度。本发明第二步采用的死锁检测方法实现了精确检测,不会出现误检的情况。若检测结束时通道等待网络中不存在剩余的CWL,即所有的CWL模块的输入和输出均为0,则没有死锁存在;若通道等待网络中存在输入 或输出不为0的剩余CWL模块存在,则说明网络中有回路,死锁存在。通过检测出的死锁的正确数目与其他非精确检测方法对比,体现出了精确检测算法的优势。由于本发明的死锁检测机制效率较高且不会出现误检的情况,应用后最终会转化为片上路由网络性能上的优势。 
附图说明
图1是一种简单死锁示例图。 
图2是本发明第一步构建具有同步功能的通道等待网络整体互连示例图。 
图3是本发明第一步构建的通道等待网络局部连接图。 
图4是本发明第一步构建的通道等待标识模块逻辑结构图。 
图5是本发明第一步构建的同步中心模块逻辑结构图。 
图6是图5中同步状态机逻辑结构图。 
图7是本发明总体流程图。 
图8是本发明第三步CWL进行精确死锁检测的示例图。 
具体实施方式
图1为一种简单的死锁示例。其中:通道A中的报文目的地是节点5,它占有通道A并申请通道B;通道B中的报文目的地是节点4,它占有通道B并申请通道C;通道C中的报文目的地是节点3,它占有通道C并申请通道D;通道D中的报文目的地是节点2,它占有通道D并申请通道E;通道E中的报文目的地是节点1,它占有通道E并申请通道A。这种请求与占用的循环依赖关系造成了回路中的所有报文处于阻塞状态而永远无法前进。 
图2是本发明第一步构建的具有同步功能的通道等待网络整体互连示例图。在路由网络中,每个路由节点均对应通道等待网络中的一个CWL模块,路由网络中节点间拓扑互连结构决定了通道等待网络中CWL模块的互连,并且每个CWL模块均通过同步信号线与通道等待网络的同步中心相连。 
图3是本发明第一步构建的通道等待网络局部连接图。每个CWL代表网络节点间互连的一个通道,每个CWL代表网络节点间互连的一个通道,这一通道可以被m个相邻的通道所申请使用,也能够申请使用n个相邻的通道。因此, 每个CWL的n位输出,将分别送到这个CWL可能申请等待的对应通道的CWL模块的输入,而作为被申请通道对应的CWL模块的输入中的1位。与输入反向的m位反馈输出,向申请使用该通道的m条相邻通道反馈该通道的信息;与输出反向的n位反馈输入,向该CWL模块反馈它所要申请使用的n条相邻通道的反馈信息。这样就将N个CWL模块连接成为了通道等待网络。 
图4是本发明第一步构建的通道等待标识模块图。通道等待标识模块CWL由初始化单元、输入判定单元、输入反馈单元、选择器、输出寄存器、输出判定单元、结果输出单元、缓存栈和比较器构成。初始化单元由输入缓存和置寄存器信号部件组成,对外与路由网络中的n个路由节点相连(这n个路由节点的通道与该CWL模块所对应的通道相邻,并且可能被该CWL对应的通道申请使用),并通过START信号线与同步中心相连,对内与选择器相连;置寄存器信号部件从同步中心接收START信号,当START信号为1时,将置寄存器信号置为1,送往选择器;死锁检测开始时,输入缓存进行初始化,暂存该CWL模块所对应的通道与相邻的可被申请使用的通道之间的等待关系,当该CWL模块申请使用某一相邻通道时,二者之间存在等待关系,输入缓存对应位的值置为1,否则置为0。输入判定单元与为该CWL提供输入的m个CWL相连,对内与选择器相连;当从m个输入CWL接收的信号全部为0时,输入判定单元将n位全0信号送往选择器,当从m个输入CWL接收的信号非全0时输入判定单元无动作。选择器是一个2选1选择器,其数据输入端与初始化单元的输入缓存和输入判定单元相连,控制输入端与初始化单元的置寄存器信号部件相连,输出端与输出寄存器相连;当选择器接收到的置寄存器信号为1时,选择器从输入缓存获得n位结果,送往输出寄存器,否则从输入判定单元获得结果送往输出寄存器。输出寄存器共有n位,输出寄存器输入端与选择器相连,并通过反馈输入信号线和n位输出CWL相连;输出寄存器输出端与输出判定单元、缓存栈和比较器相连,并通过输出信号线和输出CWL相连;当从反馈输入接收的反馈信号中有1时,输出寄存器n位全部置0,没有1时则输出寄存器接收选择器的选择结果;输出寄存器将n位值送至输出判定单元、缓存栈和比较器,并向n个输出CWL模块传送输出信号,每个输出CWL模块接收一位对应的输出信号。缓存栈为n位,与输出寄存器和比较器相连,并通过CLK信号线接收来自路由网络的时钟信号;缓 存栈在时钟信号每拍的上升沿处,寄存上一拍输出寄存器值。比较器对内与输出寄存器和缓存栈相连,对外通过IFSAME信号线与同步中心相连,比较器将缓存栈的内容与输出寄存器的内容进行比较,当输出寄存器和缓存栈的值相同时,将IFSAME信号置1并送至同步中心。输出判定单元是一个n位或门,与输出寄存器、结果输出单元和输入反馈单元相连,接收来自输出寄存器的信号;若n位输出寄存器信号全为0,输出判定单元将0送至结果输出单元和输入反馈单元,否则将1送至结果输出单元和输入反馈单元。结果输出单元是一个三态门逻辑结构,对内与输出判定单元相连,对外通过DEADLOCKPTR和END信号线与同步中心相连;当结果输出单元接受到来自于同步中心的END信号时,根据从输出判定单元接收到的信号产生DEADLOCKPTR信号送至同步中心,DEADLOCKPTR为1标识该CWL所代表的通道为死锁通道;输入反馈单元对内与输出判定单元相连接,对外与m个相连的输入CWL相连;输入反馈单元从输出判定单元接收判定信号,当信号为0时,产生反馈输出信号将m个输入CWL模块的输出寄存器全部置为0,当信号为1时不进行操作。 
图5是本发明第一步构建的同步中心模块逻辑结构图。同步中心由计数器、同步状态机、全1判别部件、START扇出部件和END扇出部件组成。全1判别部件是或门逻辑结构,对外通过IFSAME信号与N个CWL模块相连,对内与同步状态机相连;全1判别部件接收N位IFSAME信号进行全1判别,若N位IFSAME信号全为1,判别信号为1,指示所有CWL模块当前状态不再变化,检测结束,否则判别信号为0继续检测。计数器与同步状态机相连;当每次死锁检测结束时,计数器清0,重新开始计时,到T拍时启动死锁检测;T由网络规模和死锁发生的频率设定,使得计数器每到T拍进行一次死锁检测,计数器的每拍与路由网络的时钟节拍同步。同步状态机与全1判别部件、计数器、START扇出部件和END扇出部件相连;同步状态机由空闲和检测两个状态组成:当计数器没有到T时,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,计数器增1;当计数器到T拍时,同步状态机由空闲状态进入检测状态,此时向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,检测开始;当从全1判别部件接收的判别信号为0时,同步状态机处于检测状态,向END扇出部件发送值为 0的END扇出信号;当同步状态机从全1判别部件的判别信号为1时,全1判别成立,由检测状态进入空闲状态,向END扇出部件发送值为1的END扇出信号,此时END扇出部件向所有CWL发送END信号,计数器清零。START扇出部件对内与同步状态机相连,对外通过START信号线与所有CWL模块相连;当同步状态机从空闲状态进入检测状态时,通过N位START信号线向N个CWL模块发送启动信号,通道等待网络开始进行死锁检测;END扇出部件对内与同步状态机相连,对外通过END信号线与所有CWL模块相连,当同步状态机从检测状态进入空闲状态时,通过N位END信号线将结束信号送至N个CWL模块。 
图6是本发明第一步同步中心状态转换图。同步状态机与全1判别部件、计数器、START扇出部件和END扇出部件相连;同步状态机由空闲和检测两个状态组成:当计数器没有到T时,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,计数器增1;当计数器到T拍时,同步状态机由空闲状态进入检测状态,此时向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,检测开始;当从全1判别部件接收的判别信号为0时,同步状态机处于检测状态,向END扇出部件发送值为0的END扇出信号;当同步状态机从全1判别部件的判别信号为1时,全1判别成立,由检测状态进入空闲状态,向END扇出部件发送值为1的END扇出信号,此时END扇出部件向所有CWL发送END信号,计数器清零。 
图7是本发明总体流程图。 
第一步构建具有同步功能的通道等待网络; 
第二步启动路由网络,同步中心计数器开始计数; 
第三步基于第一步构建的通道等待网络,每隔时间T拍进行一次死锁检测,检测流程如下: 
第3.1步,T拍时CWL从同步中心接收START信号检测开始; 
第3.2步,对通道等待网络进行初始化; 
第3.3步,每个CWL对输入进行逻辑检测,产生相应动作; 
第3.4步,判断本次输出结果与上次输出结果是否相同,若相同置IFSAME 
信号为1,暂存输出信号值,转3.5,否则转3.3; 
第3.5步,若所有CWL模块IFSAME信号为1,将剩余CWL模块的DEADLOCKPTR信号置为1,标识死锁通道并启动死锁解锁,计数器清零重新开始计时,转3.1;否则,则跳转到3.3步。 
图8是本发明第二步CWL进行精确死锁检测的示例图。(a)为有向图G最初的状态。依次检测节点A至G。第1步检测出节点A的出度为0,将其及其所有的边删除,从图中去掉该节点,如图8(b)所示;第2步检测出节点E的入度为0,将其及其所有的边删除,如图8(c)所示;第3步检测出节点G的入度为0,将其及其所有的边删除,如图8(d)所示;得到图8(d)后发现没有入度为0的节点也没有出度为0的节点,算法停止,但是依然有节点没有输出,说明节点A、B、C、D、E、F这五个节点之间存在回路。其实,(d)表示了一个结,从B、C、D、F任意一个节点出发,最后均只能到达其中的某个节点。 

Claims (2)

1.一种检测片上网络中死锁的方法,其特征在于包括以下步骤:
第一步,根据路由网络的拓扑互连结构,构建具有同步功能的通道等待网络:
为网络路由节点间互连的N条通道建立N个与通道一一对应的通道等待标识模块CWL,根据路由网络的拓扑结构,将N个CWL互连形成通道等待网络;将每个CWL模块与同步中心相连,且与n+m个路由节点相连,实现通道等待网络的同步,N为片上网络中的通道个数,n为CWL的输出位数,m为CWL的输入位数,m和n均为正整数;
每个CWL代表网络节点间互连的一个通道,这一通道可以被m个相邻的通道申请使用,也能够申请使用n个相邻的通道,由路由网络原有的拓扑互连结构决定;每个CWL有n位输出、n位反馈输入、m位反馈输出、m位输入;m位输入连接m个相邻CWL,这m个相邻的CWL称为输入CWL,表示在网络中有m条相邻通道可以申请使用该通道;n位输出连接n个相邻CWL,这n个相邻CWL的称为输出CWL,表示在网络中有n条相邻通道可以被该通道申请使用;与输入反向的m位反馈输出用来向申请使用该通道的m条相邻通道反馈该通道的输出信息;与输出反向的n位反馈输入用来向该CWL反馈该CWL要申请使用的n条相邻通道的信息;m位输入中,某一位为1表示两个CWL模块之间存在依赖边,即在某网络通道申请使用其相邻的某个通道时,这一通道被其它CWL模块占用,二者之间具有等待关系;某一位为0表示所属CWL模块未被其它CWL模块占用,两个CWL模块之间不存在依赖边,网络通道之间没有等待关系;
每个CWL模块另通过START,IFSAME,END三个信号线与同步中心相连,实现网络的同步功能,并通过DEADLOCKPTR信号线与该CWL所代表的网络通道相连接;
通道等待标识模块CWL由初始化单元、输入判定单元、输入反馈单元、选择器、输出寄存器、输出判定单元、结果输出单元、缓存栈和比较器构成;初始化单元由输入缓存和置寄存器信号部件组成,对外与路由网络中的n个路由节点相连,并通过START信号线与同步中心相连,对内与选择器相连;置寄存器信号部件从同步中心接收START信号,当START信号为1时,将置寄存器信号置为1,送往选择器;在死锁检测开始时,输入缓存进行初始化,暂存该CWL模块所对应的通道与相邻的可被申请使用的通道之间的等待关系,当该CWL模块申请使用某一相邻通道时,二者之间存在等待关系,输入缓存对应位的值置为1,否则置为0;输入判定单元与为该CWL提供输入的m个CWL相连,对内与选择器相连;当从m个输入CWL接收的信号全部为0时,输入判定单元将n位全0信号送往选择器,当从m个输入CWL接收的信号非全0时输入判定单元无动作;选择器是一个2选1选择器,其数据输入端与初始化单元的输入缓存和输入判定单元相连,控制输入端与初始化单元的置寄存器信号部件相连,输出端与输出寄存器相连;当选择器接收到的置寄存器信号为1时,选择器从输入缓存获得n位结果,送往输出寄存器,否则从输入判定单元获得结果送往输出寄存器;输出寄存器共有n位,输出寄存器输入端与选择器相连,并通过反馈输入信号线和n位输出CWL相连,输出寄存器输出端与输出判定单元、缓存栈和比较器相连,并通过输出信号线和输出CWL相连;当从反馈输入接收的反馈信号中有1时,输出寄存器n位全部置0,没有1时则输出寄存器接收选择器的选择结果;输出寄存器将n位值送至输出判定单元、缓存栈和比较器,并向n个输出CWL模块传送输出信号,每个输出CWL模块接收一位对应的输出信号;缓存栈为n位,与输出寄存器和比较器相连,并通过CLK信号线接收来自路由网络的时钟信号,缓存栈在时钟信号每拍的上升沿处,寄存上一拍输出寄存器值;比较器对内与输出寄存器和缓存栈相连,对外通过IFSAME信号线与同步中心相连,比较器将缓存栈的内容与输出寄存器的内容进行比较,当输出寄存器和缓存栈的值相同时,将IFSAME信号置1并送至同步中心;输出判定单元是一个n位或门,与输出寄存器、结果输出单元和输入反馈单元相连,接收来自输出寄存器的信号;若n位输出寄存器信号全为0,输出判定单元将0送至结果输出单元和输入反馈单元,否则将1送至结果输出单元和输入反馈单元;结果输出单元是一个三态门逻辑结构,对内与输出判定单元相连,对外通过DEADLOCKPTR和END信号线与同步中心相连;当结果输出单元接受到来自于同步中心的END信号时,根据从输出判定单元接收到的信号产生DEADLOCKPTR信号送至同步中心,DEADLOCKPTR为1标识死锁通道;输入反馈单元对内与输出判定单元相连接,对外与m个相连的输入CWL相连,输入反馈单元从输出判定单元接收判定信号,当信号为0时,产生反馈输出信号将m个输入CWL模块的输出寄存器全部置为0,当信号为1时不进行操作;
同步中心由计数器、同步状态机、全1判别部件、START扇出部件和END扇出部件组成;全1判别部件是或门逻辑结构,对外通过IFSAME信号与N个CWL模块相连,对内与同步状态机相连;全1判别部件接收N位IFSAME信号进行全1判别,若N位IFSAME信号全为1,判别信号为1,指示所有CWL模块当前状态不再变化,检测结束,否则判别信号为0继续检测;计数器与同步状态机相连;当每次死锁检测结束时,计数器清0,重新开始计时,到T拍时启动死锁检测;T由网络规模和死锁发生的频率设定,使得计数器每到T拍进行一次死锁检测,计数器的每拍与路由网络的时钟节拍同步;同步状态机与全1判别部件、计数器、START扇出部件和END扇出部件相连;同步状态机由空闲和检测两个状态组成;START扇出部件对内与同步状态机相连,对外通过START信号线与所有CWL模块相连;当同步状态机从空闲状态进入检测状态时,通过N位START信号线向N个CWL模块发送启动信号,通道等待网络开始进行死锁检测;END扇出部件对内与同步状态机相连,对外通过END信号线与所有CWL模块相连,当同步状态机从检测状态进入空闲状态时,通过N位END信号线将结束信号送至N个CWL模块;
第二步,启动路由网络,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,通道等待网络的同步中心的计数器开始计数,节拍与路由网络的时钟节拍一致;
第三步,基于通道等待网络每隔时间T拍进行一次死锁检测,流程如下:
3.1在同步中心的计数器到达第T拍时,同步状态机由空闲状态转为检测状态,向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,N个CWL模块接收到START扇出部件发送的START信号,死锁检测开始;
3.2对通道等待网络进行初始化:每个CWL的输入缓存从相连的n个路由节点获取该CWL模块所对应的通道与相邻通道之间的等待关系:当该CWL所对应的通道申请使用某一相邻通道时,二者间存在通道等待关系,输入缓存的对应位为1;当该CWL所对应的通道没有申请使用某一通道时,二者间不存在等待关系,输入缓存的对应位为0;输出寄存器在接收来自输入缓存的信号,相应位也为1或0;
3.3每个CWL模块对自身的m位输入进行逻辑检测,方法是:
3.3.1若m位输入全为0,输出寄存器的n位输出信号线也全部为0,转3.5;
3.3.2若m位输入不全为0,则输出判定单元对从输出寄存器接收的n位输出信号进行判定,如果n位输出全为0,则由输入反馈单元通过反馈信号线对与所属CWL相连的m个输入CWL发送反馈信号,m个输入CWL接收到反馈信号后,分别将各自对该CWL的输入也置为0,转3.4;如果n位输出不全为0,则直接转3.4;
3.4每个CWL模块的比较器分别比较各自n位输出与缓存栈中上一拍的输出是否相同,如果相同,由CWL模块中的比较器置IFSAME信号为1,并由缓存栈暂存这一拍n位输出信号的值,转3.5;如果不同跳转到3.3;
3.5同步中心的全1判别部件若发现所有CWL模块的IFSAME均为1,代表网络状态没有变化了,达到稳态网络,同步状态机由检测状态转为空闲状态,向END扇出部件发送值为1的END扇出信号,同步中心的END扇出部件向所有CWL模块发送END信号,计数器清零,检测结束,将此时输入信号或输出信号不为0的CWL模块称为剩余CWL模块,所有剩余的CWL模块所对应的通道存在于一个死锁结中;剩余CWL模块的结果输出单元置DEADLOCKPTR信号为1,标识死锁通道并且通知路由节点启动死锁解锁,计数器清零重新开始计时,转3.1;若全1判别部件发现存在有某个CWL模块的IFSAME值不为1,则向同步状态机发送值为0的判别信号,同步状态机仍然处于检测状态并向END扇出部件发送值为0的END扇出信号,跳转到3.3步。
2.如权利要求1所述的一种检测片上网络中死锁的方法,其特征在于当计数器没有到T时,同步状态机处于空闲状态,向START扇出部件发送值为0的START扇出信号,计数器增1;当计数器到T拍时,同步状态机由空闲状态进入检测状态,此时向START扇出部件发送值为1的START扇出信号,START扇出部件向所有的CWL模块发送START信号,检测开始;当从全1判别部件接收的判别信号为0时,同步状态机处于检测状态,向END扇出部件发送值为0的END扇出信号;当同步状态机从全1判别部件的判别信号为1时,全1判别成立,由检测状态进入空闲状态,向END扇出部件发送值为1的END扇出信号,此时END扇出部件向所有CWL发送END信号,计数器清零。
CN201310486505.9A 2013-10-17 2013-10-17 一种检测片上网络中死锁的方法 Expired - Fee Related CN103577379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310486505.9A CN103577379B (zh) 2013-10-17 2013-10-17 一种检测片上网络中死锁的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310486505.9A CN103577379B (zh) 2013-10-17 2013-10-17 一种检测片上网络中死锁的方法

Publications (2)

Publication Number Publication Date
CN103577379A true CN103577379A (zh) 2014-02-12
CN103577379B CN103577379B (zh) 2016-04-13

Family

ID=50049190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310486505.9A Expired - Fee Related CN103577379B (zh) 2013-10-17 2013-10-17 一种检测片上网络中死锁的方法

Country Status (1)

Country Link
CN (1) CN103577379B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109039846A (zh) * 2018-09-27 2018-12-18 贵州华芯通半导体技术有限公司 环形互联总线的避免死锁的方法、系统和跨环装置
CN111600759A (zh) * 2020-05-22 2020-08-28 中国工商银行股份有限公司 拓扑结构中死锁故障的定位方法和装置
CN112468392A (zh) * 2020-10-21 2021-03-09 中山大学 一种处理多播流量死锁问题的片上网络及方法
TWI739556B (zh) * 2020-08-19 2021-09-11 瑞昱半導體股份有限公司 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體
CN115683120A (zh) * 2022-12-30 2023-02-03 湖北凯乐仕通达科技有限公司 机器人多车互锁检测、解锁方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676703A2 (en) * 1994-04-04 1995-10-11 International Business Machines Corporation A technique for accomplishing deadlock free routing through a multi-stage cross-point packet switch
US7809006B2 (en) * 2007-08-16 2010-10-05 D. E. Shaw Research, Llc Routing with virtual channels
CN102333038A (zh) * 2011-10-21 2012-01-25 上海交通大学 一种基于片上网络的无死锁路由方法
CN103729331A (zh) * 2013-11-26 2014-04-16 西安电子科技大学 片上网络通信死锁避免方法、路由器及通信网络

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676703A2 (en) * 1994-04-04 1995-10-11 International Business Machines Corporation A technique for accomplishing deadlock free routing through a multi-stage cross-point packet switch
US7809006B2 (en) * 2007-08-16 2010-10-05 D. E. Shaw Research, Llc Routing with virtual channels
CN102333038A (zh) * 2011-10-21 2012-01-25 上海交通大学 一种基于片上网络的无死锁路由方法
CN103729331A (zh) * 2013-11-26 2014-04-16 西安电子科技大学 片上网络通信死锁避免方法、路由器及通信网络

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
乔寓然,伍楠,杨乾明,文梅,张春元: "片上网络中基于拓扑排序的死锁检测与恢复方法", 《上海交通大学学报》 *
宋朝晖,马光胜,宋大雷: "一种新的基于NoC的死锁检测算法", 《微电子学与计算机》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109039846A (zh) * 2018-09-27 2018-12-18 贵州华芯通半导体技术有限公司 环形互联总线的避免死锁的方法、系统和跨环装置
CN109039846B (zh) * 2018-09-27 2021-05-04 贵州华芯通半导体技术有限公司 环形互联总线的避免死锁的方法、系统和跨环装置
CN111600759A (zh) * 2020-05-22 2020-08-28 中国工商银行股份有限公司 拓扑结构中死锁故障的定位方法和装置
CN111600759B (zh) * 2020-05-22 2023-01-06 中国工商银行股份有限公司 拓扑结构中死锁故障的定位方法和装置
TWI739556B (zh) * 2020-08-19 2021-09-11 瑞昱半導體股份有限公司 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體
CN112468392A (zh) * 2020-10-21 2021-03-09 中山大学 一种处理多播流量死锁问题的片上网络及方法
CN112468392B (zh) * 2020-10-21 2022-03-25 中山大学 一种处理多播流量死锁问题的片上网络及方法
CN115683120A (zh) * 2022-12-30 2023-02-03 湖北凯乐仕通达科技有限公司 机器人多车互锁检测、解锁方法和装置

Also Published As

Publication number Publication date
CN103577379B (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
CN103577379B (zh) 一种检测片上网络中死锁的方法
JP4114480B2 (ja) グローバル割込みおよびバリア・ネットワーク
CN100476785C (zh) 用于计算结构的装置和方法
CN103618618B (zh) 基于分布式pcie系统的线卡故障恢复方法及相关设备
US9571341B1 (en) Clock gating for system-on-chip elements
US9639409B2 (en) Device and method for communicating between cores
JP2022023108A (ja) 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
US20120179896A1 (en) Method and apparatus for a hierarchical synchronization barrier in a multi-node system
US9122815B2 (en) Common idle state, active state and credit management for an interface
EP2159694A1 (en) Method and device for barrier synchronization, and multicore processor
US20100325388A1 (en) Multi-Core Parallel Processing System
JP2016504668A (ja) 分散型プロセッサを有する処理システム
SE439701B (sv) Multikonfigurativ moduler behandlingsenhet
US20090046585A1 (en) Determining Communications Latency for Transmissions Between Nodes in a Data Communications Network
Wang et al. Efficient design-for-test approach for networks-on-chip
CN106796541A (zh) 数据处理装置
CN110505168B (zh) 一种ni接口控制器及数据传输方法
US5790524A (en) Detection of lost packets in switching networks used with scalable coherent interfaces
JP2007534052A (ja) 集積回路及びトランザクション撤回方法
CN114679423A (zh) 一种面向流控机制的无死锁可扩展互连裸芯架构
US7206889B2 (en) Systems and methods for enabling communications among devices in a multi-cache line size environment and disabling communications among devices of incompatible cache line sizes
US8385740B2 (en) Arbitration scheme for an optical bus
CN114730283A (zh) 以锁步方式操作的监测处理器
Felicijan et al. An asynchronous low latency arbiter for quality of service (QoS) applications
Zhang et al. Handling physical-layer deadlock caused by permanent faults in quasi-delay-insensitive networks-on-chip

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160413