文献标识码: A
文章编号: 0258-7998(2010)10-0040-04
高集成度、高质量、高可靠性在数字电路设计中十分重要,数字电路出现故障的几率随着其规模和复杂度的增加而增大,对数字电路的容错研究有着重要意义[1-2]。自诊断和自修复对数字电路容错技术发展有着深远影响[3]。自诊断使电路能自动探测到故障,而自修复使电路用较少的硬件资源将故障修复。
由于多细胞器官具有高可靠性和高容错能力,这为数字电路的容错研究提供了重要的思想,许多研究者一直致力于在数字电路设计中找到一种新的自修复机理和有效的容错方法[4-5]。目前,在数字电路设计中存在两种自修复机制:基于进化思想和基于重构思想。胚胎细胞就是基于重构思想的自修复机制。
为了提高数字电路的容错能力,本文提出一种自修复机制,并对基本结构单元进行设计研究,通过实例说明在基本结构单元故障时自修复机制如何实现。
1 具有自修复功能的数字电路结构
基于胚胎细胞的重构思想,针对数字电路提出了一种自修复机制,对应具有自修复功能的数字电路结构如图1所示。
自修复机制的主要思想:每个细胞对各自的功能模块进行检测,当出现功能故障时,故障细胞被屏蔽,然后分两种情况进行处理:(1)故障细胞所在行的右侧没有休眠细胞:采取整列休眠屏蔽的方法,整列细胞的功能由其右边列细胞取代实现,故障细胞输出err_out信号有效。由图1可知,这列所有细胞的休眠信号err_in被置位,这将使得这列的其他功能细胞转变为休眠细胞;(2)故障细胞所在行的右侧有休眠细胞:通过传递休眠细胞地址的方法将休眠细胞激活为功能细胞,它将间接取代故障细胞的功能。通过这两种情况的处理实现故障细胞的自修复功能。
为了实现这种自修复机制,本文对细胞的结构进行设计,每个细胞具有相同的硬件结构,其结构如图2所示。每个细胞包括地址产生模块(AG)、Memory模块、细胞功能模块(FUN)、屏蔽信号产生模块(SSG)、激发休眠细胞模块(ARC)、休眠地址传递模块(RAT)和I/O block。
整个细胞除了能实现特定细胞功能,还能实现自修复机制。实现的特定功能主要包括AG模块、Memory模块、FUN模块和I/O block模块。Memory模块根据AG模块产生的地址读取相应的配置信息对FUN模块进行配置,实现细胞功能。实现自修复机制主要包括SSG模块、RAT模块和ARC模块,SSG模块产生屏蔽信号,对细胞实现的特定功能进行屏蔽,RAT模块传递正在休眠细胞的地址,ARC模块主要用于激活休眠细胞。
1.1 AG模块
系统功能由多个细胞共同实现,对同一行细胞来说,每个细胞需要实现的功能由它的地址决定,AG(Address Generator)模块主要用来确定功能细胞的地址,使细胞实现相应的功能。同一行每个细胞的地址addr由左边细胞的输出地址addr_in加“1”得到,AG模块结构如图3所示。
其中N为细胞所在行必需的功能细胞数,addr_out为此细胞的输出地址,其输出值与细胞类型有关。
(1)功能细胞:addr_out=addr,输出本细胞地址。
(2)备用细胞:addr_out=addr_in,通过比较器Cmp1输出的备用信号spare来判断此细胞是否为备用细胞。当addr_in与N相等时,表示左边细胞是本行必需的最后一个功能细胞,则此细胞就为备用细胞,输出spare有效。
(3)故障细胞或休眠细胞:addr_out=addr_in,当功能细胞变为故障细胞或休眠细胞时,其输出地址等于左边细胞的输出地址,此细胞需实现的功能由右边功能细胞完成,从而实现自修复功能。
1.2 FUN模块
FUN(Function unit)模块主要实现细胞的逻辑和时序功能,是完成细胞特定功能的主要模块,FUN模块结构如图4所示。其中exist信号反映细胞右侧是否存在休眠细胞,其值由休眠细胞地址restaddr(RAT模块产生)各位相或所得,exist为“0”表示右侧没有休眠细胞,exist为“1”表示右侧有休眠细胞。RAM1由Memory模块进行配置,储存细胞要实现的功能信息,通过查找表方式将功能结果输出,R0用于控制输出结果是否被寄存。RAM2是RAM1的冗余存储单元,RAM2与RAM1相同地址的比特信息刚好相反,它们的输出值经过同或门后可以判断细胞是否出现功能故障。当RAM1或RAM2出错时,故障信号err变为有效,FUN模块的输出信号fun_out为高阻态,若此细胞右侧没有休眠细胞,输出err_out信号有效,本列的其他功能细胞转变为休眠细胞。
1.3 SSG模块
SSG(Shield Signal Generator)模块主要是在满足条件时产生屏蔽信号shield。故障细胞或休眠细胞需要被屏蔽,当休眠细胞需要被激活时,屏蔽信号shield应该无效,使休眠细胞转变为功能细胞。
SSG模块的真值表如表1所示。其中active为激活休眠细胞信号,由激发休眠细胞模块ARC(Activate Resting Cell)产生。
由表1可知,故障细胞和休眠细胞的屏蔽信号shield有效,当休眠细胞的激活信号active有效时,屏蔽信号shield无效。
1.4 RAT模块
RAT(Resting Address Transfer)模块主要是向左传递休眠细胞的地址,同时如果细胞被转变为休眠细胞,则将此细胞的地址向左侧传递。细胞输出的休眠细胞地址restaddr_out与细胞类型有关。
(1)休眠细胞:restaddr_out=addr,休眠细胞将自己的地址addr作为休眠细胞地址输出。
(2)其他类型细胞:restaddr_out= restaddr_in,其他类型细胞对于输入的休眠细胞地址restaddr_in起传递作用。
1.5 ARC模块
当细胞发生故障且右侧有休眠细胞时,不需要将整列功能细胞屏蔽,只需将故障细胞屏蔽,同时ARC模块向右传递需要激活的休眠细胞的地址,让休眠细胞变为功能细胞,实现自修复功能。ARC模块在不同情况下的作用不同。
(1)故障细胞且右侧有休眠细胞:ARC模块将暂存的休眠细胞的地址restaddr作为激活地址activaddr_out输出,即activaddr_out=restaddr。
(2)休眠细胞:在休眠期间,激活信号active为比较器Cmp2的输出,当输入的激活地址activaddr_in为本细胞地址时,激活信号active有效。由表1可知,屏蔽信号shield变为无效,休眠细胞被激活为功能细胞。
(3)其他情况:activaddr_out=activaddr_in,ARC模块起传递激活地址作用。
1.6 I/O Block
I/O Block主要实现与其他细胞通信以及是否选择细胞功能模块FUN的结果作为输出,是实现细胞功能屏蔽的控制模块。细胞的输入输出数据流程如图5所示。
2 实例分析
设系统由4×6细胞阵列构成,包括功能细胞和备用细胞s,如图6所示。功能细胞所标识的具体数字表示其AG模块产生的地址,这个地址决定了细胞要具体实现的功能。此系统需要的功能细胞数每一行为4,所以各个细胞的N均为4。下面分析系统从正常工作到单个细胞故障,再到多个细胞故障时各阶段如何实现故障自修复功能。
2.1 细胞无故障阶段
每个功能细胞的地址由AG模块产生,其地址从左向右从1开始依次递增,如图6所示。细胞根据其地址从Memory模块中读取相应的功能配置信息到FUN模块的RAM1和RAM2中实现相应的功能。第五列和第六列的细胞根据其AG模块输出备用信号spare有效,判定为备用细胞s,I/O Block将备用细胞屏蔽。在这个阶段,所有细胞的RAT模块和ARC模块只起着传递作用。
2.2 单个细胞故障
假设第二行第三列的细胞发生故障,此细胞的故障信号err被置为“1”。由表1可知,此故障细胞被屏蔽。由于此细胞右侧没有休眠细胞,所以故障细胞的err_out信号有效,从而第三列所有细胞的 err_in信号有效,由表1可知,第三列其他功能细胞变为休眠细胞。休眠细胞的RAT模块将自己的地址输出向左传递,使休眠细胞左侧的功能细胞暂存这个休眠细胞地址。由于第三列整列细胞被屏蔽,第三列细胞AG模块的输出地址addr_out=addr_in=2,第四列功能细胞的地址addr变为3,第四列的功能细胞实现了原来第三列功能细胞的功能;第五列备用细胞的spare信号变为无效,备用细胞变为功能细胞,其地址为4,实现原来第四列功能细胞的功能,从而整个系统实现了电路功能的自修复。自修复后的电路结构如图7所示。X表示故障细胞,D表示休眠细胞。
2.3 多个细胞故障
多个细胞故障(这里以两个细胞故障为例,其他类似)分为两种情况,一种是故障细胞右侧没有休眠细胞,这时会继续采用整列休眠的方法;另一种是故障细胞右侧有休眠细胞,下面对这种情况分析说明。
设在上节的故障发生后,第三行第一列的细胞又发生故障,此故障细胞被屏蔽且根据exist为“1”判断出其右侧有休眠细胞,此故障细胞的ARC模块将暂存的休眠细胞地址restaddr=3作为激活地址输出向右传递,功能细胞对激活地址只起传递作用,其功能不受影响。当第三行第三列的休眠细胞输入的激活地址为3时,其ARC模块的比较器输出为“1”, active信号变为有效,由表1可知,此休眠细胞的屏蔽信号shield无效,休眠细胞被激活为功能细胞,实现了故障自修复功能。经自修复后的电路结构如图8所示。
由图8可见,经过自修复后的电路结构在第4~6列没有变动,对系统性能的影响也相应减小。
3 容错性能分析
3.1 容错细胞数
(1)故障细胞数不多于空闲细胞列数。在这种情况下,故障覆盖率可以达到100%,每个故障细胞至少均可由一列空闲细胞实现容错。系统能容错的细胞数为故障细胞数。
(2)故障细胞数大于空闲细胞列数且不多于空闲细胞数。考虑最坏的情况,所有故障细胞都在同一行,这时系统能容忍的故障细胞数为空闲细胞列数。考虑另一种可能性更大的情况:故障细胞等概率的出现在每一行,此时故障覆盖率可以达到最大,系统能容忍的故障细胞数为空闲细胞数,其电路结构示意图如图9所示。
(3)当故障细胞数大于空闲细胞数。此时,系统能容忍的最大故障细胞数为空闲细胞数。
3.2 与其他方法比较
TMR用三个相同功能模块的输出经过多数表决器选择输出最后的结果,需要用2倍的冗余资源且只能容忍一个模块出错,当有两个模块出现故障时,最后表决器的输出会出现误判。文献[6]采用的整列排除方法对每个故障细胞均采用排除所在列来实现容错,每当出现一个故障细胞时,就将整列屏蔽,消耗过多的硬件资源且能容忍的故障细胞数较少。假设系统资源为24个单元,文献[6]和本文均采用如图5所示的结构。表2是在以上假设下本文提出的方法与这两种方法容错性能的对比结果。由表2可以看出,在相同系统资源情况下,相比于TMR与整列排除方法,本文提出的方法可以容忍更多的故障单元,这是由于本文的方法更充分利用了备用细胞,提高了系统的容错能力。
本文对数字电路容错提出了一种自修复的容错机制,并设计了基本结构单元来实现这种自修复机制。通过数字系统实例分析了基本单元在不同故障情况下如何实现系统功能的自修复来达到容错目的,分析了在不同情况下系统的容错细胞数,通过与TMR和整列排除方法的容错性能对比,说明了本文提出的方法可提高系统的容错能力。
参考文献
[1] ZHU M,WWN Y.Fault tolerance system of digital circuit in dynamically reconfigurable FPGA[J].Southeast Univ(natural science edition),2000,30(4):138-142.
[2] 朱明程,温粤.FPGA动态可重构数字电路容错系统的研究[J].东南大学学报(自然科学版),2000,30(4):138-142.
[3] AKOGLU A,SREERAMAREDDY A,JOSIAH J G.FPGA based distributed self healing architecture for reusable systems[J].Cluster Comput,2009(12):269-284.
[4] 龚健,杨孟飞,文亮.面向进化容错的FPGA故障模型研究[J].中国空间科学技术,2009,6(3):57-62.
[5] SAHNI V,PREM P V.An embryonic approach to reliable digital instrumentation based on evolvable hardware[J].IEEE Trans Instrum Meas,2003,52(6):1696-1702.
[6] ZHANG Zhai,WANG You Ren,YANG Shan shan.The research of self-repairing digital circuit based on embryonic cellular array.Neural Comput & Applic,2008(17):145-151.