第一章 绪论
数字集成电路的可靠性挑战:
- 生产缺陷
- 工艺偏差
- 软错误
- 老化
数字集成电路的3S和3T可靠性设计框架
- 3S:自测试(self-test,ST)、自诊断(self-diagnosis,SD)、自修复(sekf-repair,SR);
- 3T:缺陷容忍(defect tolerance,DT)、故障容忍(fault tolerance,FT)、差错容忍(error tolerance);
针对数字集成系统主要包含的存储、逻辑以及通信三个部分,通过3S和3T这套智能容错设计框架,提高数字集成系统的设计可靠性。
3S是三位一体的,测试电路检测部件的工作是否正常,否则将测试信息传递给诊断电路,并启动诊断过程,以定位失效的部件和单元;根据诊断的粒度不同,可以定位不同电路级别的失效,随后自修复结构将对该部件进行修复。修复结束后,开始新的循环。
3T中,缺陷容忍旨在应对各种制造缺陷,提高成品率;故障容忍指在系统运行时容忍系统内部的故障和外部引发的瞬时差错;差错容忍指电路内部可能存在差错时仍能输出集成该电路的系统所接受的输出结果。
数字集成系统容错设计的关键问题
-
缺陷容忍
1.存储器
由于存储阵列结构规则的特点,易于使用冗余资源进行缺陷修复,其缺陷容忍通常采用MBISR(memory built-in self-repair,存储器内建自修复)方法,通过内嵌微控制器,自动生成测试向量并进行故障诊断(fault tolerance),使用冗余的行或者列进行重构,实现对故障单元的替换。
2.处理器核
处理器核大部分是随机逻辑,缺陷容忍方法大多在微体系结构级,通过冗余的单元,如ALU(arithmetic logic unit,算术逻辑单元)、寄存器等,保证指令的正确执行。随着处理器从单核向多核发展,多核之间天然具有冗余和备份关系,在含有大量处理器核的芯片中,单核的面积开销和整个芯片相比相对较小,这种核间冗余(core-level redundancy)方法非常有效。更细粒度的方法可以使用自测试和自诊断定位到核内部的失效部件并替换,显著提升成品率。
3.片上网络
片上网络的缺陷容忍设计方法的主要研究问题是容错路由,即网络中若干路由器和通信链路故障时,如何绕过故障区域到达目的节点,需要考虑通信的性能、有无死锁/活锁等问题。片上网络与传统并行计算机网络不同的是,在进行容错性设计时,需考虑片上资源的有限性和功耗的约束,传统方法(如借助多条虚通道)不再可行,需考虑片上的容错路由方法。
偏差容忍
偏差主要包括工艺偏差(process variation)和PVT(process-voltage-temperature variation)偏差。前者是生产过程中导致的,是静态偏差;后者是芯片工作过程中的偏差,包括电压、温度等。偏差会导致事记得工作状态与预期的设计目标存在差异,解决方法涵盖从工艺级到电路级再到微体系结构级多个层次。
1.电路级偏差容忍
电路级偏差容忍主要采用自调节(self-tuning),如在时钟树中插入一些延迟单元控制时延,在流水线中进行时间补偿弥补流水线的不均等方法。
2.体系结构级偏差容忍
体系结构级偏差容忍通常需要考虑应用的特点和体系结构模块的功能,如结合应用的特点进行任务的调度和分配。
软错误容忍
1.存储器
使用奇偶校验(parity checking)码和纠错码(error correction code, ECC)等是常用的存储器可靠性设计方法,但校验电路开销大,纠错能力有限。随着存储器集成度提高,软错误率提高,这种方法也越来越受到限制。
2.处理器核
处理器核发生软错误时,需要各种级别的自检测和自修复方法,如电路级、微体系结构级、系统级和应用级。
- 电路级可以采用具有延迟功能的锁存器,通过两次有时间差的采样检测是否发生瞬态故障;
- 微体系结构级通常采用指令的冗余执行,例如同时发射两条关键指令,检测其执行结果;
- 系统级可以采用检查点(checkpoint)回退的方法,检测瞬时故障产生的异常、中断以及缓存不命中等症状是否再次出现,判断是否发生软错误;
- 应用级可以采用线程(thread)冗余执行的方法,这也是高可靠计算机(如No-stop机)常用的方法。
3.片上网络
- 协议层可以考虑在数据包内增加校验码,发生错误时申请重传;
- 路由层可以考虑数据包泛洪算法,接收端接收到多个数据包,通过多数表决得到正确的数据包。
4.故障的传播问题
研究者普遍认为,从芯片到系统对软错误有很好的屏蔽效果,软错误并不一定会被传播到下一级,或产生错误的影响。在评估容软错误设计的有效性时,必须兼顾覆盖率和故障的传播,过度保护是没有必要的。