胡 倩,王 超,王海霞,汪东升
(清华大学信息科学与技术国家实验室,北京100084)
基于Simics的系统级故障注入平台
胡 倩,王 超,王海霞,汪东升
(清华大学信息科学与技术国家实验室,北京100084)
故障注入技术是评价系统可靠性的有效方法。现有基于仿真的故障注入平台大多基于现场可编程门阵列或超高速集成电路硬件描述语言实现,对故障模型的支持非常有限。为此,基于Simics结构级模拟器,设计并实现系统级硬件故障注入平台。该平台上层支持不同固件、操作系统以及应用程序,底层支持对处理器典型流水部件的故障注入,同时实现瞬时故障、永久故障和间歇故障模型以及其他较全面的故障类型,并将一组系统级故障检测机制集成入平台中。实验通过监测硬件故障在系统级的传播,对比分析了故障对不同部件造成的系统级影响,结果表明,瞬时故障对系统影响较小,永久故障容易引起系统失效,间歇故障对各部件有不同程度的干扰作用。
故障注入;系统可靠性;故障模型;故障检测;结构级模拟器
随着集成电路工艺的提高和处理器技术在多核领域的发展,处理器性能有了很大提高。与此同时,硬件故障不断增加,计算机系统的可靠性受到严峻挑战。特别是在航空、航天等领域,系统可靠性成为第一要素。系统可靠性的评价是一个非常关键的技术环节。常见方法如测量、解析模型,都不能很好地解决评估可靠性的问题。理想方法是将系统置于实际环境中进行测试,但通常会受到场景、可测性、可监视性等因素限制。而故障注入类方法灵活有效,具有高可控性和可测性,是非常有效的可靠性评估手段。
故障注入由IBM实验室于20世纪70年代提出[1],经过不断的研究和应用逐渐走向成熟。通过加速系统中故障的产生来观察和验证故障对系统的影响,进而指导容错系统的设计。目前已经有许多成熟的故障注入技术,已被广泛应用到工业领域。本文基于Simics模拟器,设计并实现系统级故障注入平台。在大量实验的基础上,总结故障在系统中的行为表现,分析不同类型的故障对系统造成的影响。
为研究实际场景中的故障,首先必须建立理论模型。故障模型包括瞬时故障、永久故障和间歇故障。瞬时故障是由电磁干扰、粒子辐射等原因引起的短暂功能失效,并且是一次有效性[2]。永久故障通常是硬件的永久性损伤引起的,故障一直持续到部件被替换或者隔离。间歇故障是由硬件不稳定引起的多次重复爆发的瞬时故障,但爆发时间不具有周期性。由于间歇故障爆发的不确定性,其时间模型支持均匀分布、指数分布和Weibull分布。故障类型具体可以分为单比特翻转、多比特翻转、恒0或恒1、桥接以及延迟等。
目前,国内外有许多有关故障注入工具的研究。根据实现方法,故障注入可以分为3类[3]:基于硬件实现的故障注入,基于软件实现的故障注入和基于仿真的故障注入。
2.1 基于硬件实现的故障注入
基于硬件实现的故障注入是指直接将故障引入到硬件电路中,一般要修改硬件逻辑来实现。硬件故障注入技术可以将故障注入到系统任意位置,比较精确,但由于是硬件实现的原因,不容易控制,缺乏灵活性,而且容易因为额外硬件损坏系统。
代表性的系统包括AFIT[4],通过硬件实现的管脚级故障注入平台,支持多种故障模型,故障部件、时间均可控;MESSALINE[5],由法国图卢兹LAASCNRS大学开发的管脚级故障注入工具,支持stuckat、断路、桥接等复杂模型;RIFLE[6],故障从处理器管脚注入,支持不同特性故障,适用范围广,故障注入可重现,并且可以检测成功与否;FIST[7],实现接触式和非接触式故障注入,直接将故障注入到芯片中,主要支持瞬时故障模型;MARS[8],由奥地利维也纳大学开发,非接触式故障注入,分布式容错系统,采用多个fail-silent节点结成,具有硬件和软件冗余能力。
2.2 基于软件实现的故障注入
软件实现的故障注入是指在编译或者运行时修改程序或者现场某些值来引入故障。软件故障注入的方法比较灵活、易于控制、成本较低,也可以用于应用程序和操作系统,但不能将故障注入到软件访问不到的位置,同时软件故障注入的精度只能达到指令级。
比较有代表性的系统包括:Ftap[9],由美国UIUC开发的软件故障注入平台,支持故障注入部件包括寄存器、内存和磁盘,故障类型包括位翻转、置位或者复位,其中磁盘故障是由驱动程序实现的因此没有额外开销;FERRARI[10],由德克萨奥斯丁分校开发,通过计数器或计时器触发软件陷阱,由陷阱处理程序注入故障,支持部件包括CPU、内存和总线,故障类型有瞬时故障和永久故障;DOCTOR[11],由美国Michigan大学开发,相比于仅修改内存的故障注入办法,它使用复杂机制(内存重写、软件陷阱和编译时修改)模拟对CPU、内存和网络通信的故障注入;XCEPTION[12],利用处理器提供的调试功能进行故障注入,故障注入功能由中断处理程序完成,中断由访问特殊地址触发,系统不需要对应用程序作任何修改。
2.3 基于仿真实现的故障注入
基于仿真的故障注入主要是通过修改仿真器来达到故障注入的效果。由于仿真器的高度可控,仿真实现的故障注入更加灵活、易于控制、模拟精度较高。
比较有代表性的工作包括FuSE[13],基于FPGA的可靠性评估平台,仿真速度较快;VFIT[14],基于VHDL的故障注入平台,支持瞬时、间歇和永久故障,故障时间支持多种分布函数;INJECT[15],基于Verilog模型的故障注入平台,支持开关级、门级、RTL级和结构级故障模型;VERIFY[16],扩展了VHDL语言,允许最大化的利用硬件故障知识,使用了多线程故障注入来加速仿真过程;HEARTLESS[17], C++开发的针对瞬时故障和永久故障的模拟器,故障类型有stuck-at、翻转和延迟,支持以结构化VHDL和ISCAS作为输入。文献[18]提供了一种ISA级别的故障注入思路,使用Bus Resolution Function来破坏信号赋值,提升仿真性能,但仅限于处理器故障注入。
基于硬件或者软件实现的故障注入,或者在使用上容易干扰原系统,或者不能很好地从系统层模拟故障场景。基于仿真的故障注入平台多数由VHDL或FPGA实现。在多核场景下,由于内核增多以及片上网络的影响,故障发生场景更加复杂。本文基于体系结构研究中广泛使用的Simics模拟器,实现了一个结构级多核故障注入系统,支持瞬时故障、永久故障和间歇故障的模拟,并实现了单比特翻转、stuck-at-0/1、桥接及延迟等多种故障类型,为后续故障诊断、故障恢复研究建立基础。
3.1 Simics系统
Simics是一款高性能的系统级模拟器,支持模拟计算机系统各个部件。Simics模拟的最小粒度是指令,其高效性体现在模拟指令的同时,还具有较高的性能。Simics可以模拟整个目标机器,包括多核系统、存储系统、网络等。
在计算机体系结构研究中,可以很方便地模拟系统中的某个部件并观察和统计系统内部状态。此外,Simics可以跨平台运行,并且支持模拟多个平台。正因为这些特点,Simics广泛用于系统研究中。
Simics提供了一整套开放的API实现用户对系统状态的访问,同时,用户可以添加自己的功能模块,实现特定需求。通过这些API,用户不仅可以访问到系统运行时的各个内部状态,还可以对系统部件、结构和功能等进行修改。
3.2 平台设计
3.2.1 故障注入系统
图1是给出多核处理器中单个核的流水线结构。故障注入系统中支持的流水线部件有译码单元、地址生成单元、算术逻辑单元(Arithmetic Logical Unit,ALU)和寄存器堆。由于Simics对部件的模拟粒度的限制,系统采用功能上的近似来模拟4种部件。除了寄存器堆是直接注入到对应寄存器中外,其他均有不同程度的近似(见图1中灰色部件)。地址生成单元故障是通过注入到PC寄存器实现,而译码单元是通过指令寄存器实现,类似地,ALU故障注入也是通过其结果寄存器实现。
图1 故障注入系统
系统硬件平台是由Simics仿真出来的,在底层添加了故障注入单元和故障检测单元。故障注入单元定义了故障模型和故障参数,并注入到相应部件中。故障检测单元负责收集操作系统症状,并检测系统是否遇到异常。为控制系统运行,在Simics外还添加了控制单元和分析单元。仿真平台也可以支持不同的操作系统。最上层是应用程序层,用来测试不同应用场景,观察故障注入后效果。
3.2.2 控制单元
控制单元负责整个实验系统的执行,根据给定的故障模型、部件、类型,配置系统运行一定次数的实验。实验完成后,实验数据的分析也由控制单元完成。
3.2.3 分析单元
分析单元负责数据分析功能,即根据程序运行结果、监测单元收集到的症状信息来分析故障注入的影响。同时,给故障检测及故障诊断提供信息。
3.2.4 故障注入单元
故障注入单元负责在结构级完成对部件的故障注入。针对流水线中的4个重要部件,即译码单元、地址生成单元、ALU和寄存器堆,从功能上模拟了故障发生的情形。译码单元关系到指令解码的正常与否,地址生成单元决定了下一条指令位置,ALU和寄存器堆都是和运算结果相关的部件。
Simics是功能级的模拟器,最小粒度是指令。在执行每条指令前,可以触发一次自定义事件。在该事件中,可以根据Simics提供的API修改系统数据,进而实现故障注入的功能。
对译码单元的故障注入体现在指令寄存器中,每次取指完成后,给指令寄存器注入一个故障,从功能上模拟译码出现问题。
对ALU单元的故障体现在其结果寄存器上, ALU完成后,给结果寄存器注入一个故障,功能上模拟了运算过程出错。
类似地,对地址生成单元的故障则体现在PC寄存器上。寄存器堆的注入工作是通过直接在随机选择的通用寄存器中注入故障实现。
对瞬时故障,其持续时间仅为一个时钟;对永久故障,程序从开始运行到结束过程中一直保持;而对间歇故障,故障爆发次数服从一定的分布规律,且每次爆发持续时间、2次爆发之间相隔时间,支持不同的分布函数。
为模拟故障发生的随机性,故障注入的起始点是随机的。此外,无论是单比特还是多比特,故障位也是随机选择。故障位的翻转、stuck-at及桥接均通过位操作实现,延迟类型的实现略微复杂,需要在模拟过程中以历史变量值有规律地替换当前变量值。
3.2.5 监测单元
监测单元功能主要是收集系统症状。为观测故障注入后的系统状态,添加了该模块来实时监测系统各指标。目前,监测指标包括关键陷入、挂起和高发活动,这些症状信息是反映系统状态的关键指标。SWAT项目[19]利用这些高层级症状实现了永久故障的检测。
关键陷入一般是非功能性陷入,在系统遇到除零、非法指令等紧急情况时发生,可以用来作为判断系统异常的一个条件。在正常情况下,应用程序运行在用户态,只有在系统调用及中断处理等情况下才需要运行在特权模式。如果系统持续处于特权模式的指令数超过一定阈值,可以认为系统出现问题,该问题称为高发活动[20]。挂起[20]是指系统陷入死循环,程序不能结束而且又没有结果。
与故障注入单元类似,监测单元是通过自定义的时钟事件来完成系统状态收集的功能。
陷入信息和系统架构密切相关。例如在Sparc架构下,共有5个陷入寄存器。对于每个时钟,症状收集单元均访问一次寄存器,并保存陷入信息、地址及指令。Solaris下还有一个关键陷入列表,通过比对,可以找到所有的关键陷入,检测系统是否正常运行。
高发活动的检测是通过统计系统连续处于特权模式或超特权模式的时钟数来实现。类似地,挂起的检测需要统计系统在每次跳转指令处的地址并进行计数。
当系统遇到关键陷入、高发活动及挂起时,即认为系统出现异常。此时,系统应该启动故障诊断、故障恢复等过程。
此外,在系统执行过程中,监测单元还需要收集应用程序执行成功与否,系统是否异常退出等信息。这些数据除了反映故障注入的结果外,还可以用于后续的故障检测、故障诊断等。
4.1 实验环境
本文实验模拟了Sun Fire 6800机器,单核150 MHz,内存256 MB,Solaris10系统,测试程序是Splash2。由于Splash2是用于性能测试的程序集,在本文实验中,为了比较程序运行结果,只选择了其中一部分。针对多个流水部件、不同故障模型及不同故障类型下故障传播和影响进行实验研究。
4.2 实验过程
实验针对4种部件、3种故障模型及多种故障类型均进行了研究。每种配置进行1000次注入实验,收集症状和程序运行结果。
瞬时故障分别采用单比特翻转、stuck-at-0/1、桥接及延迟的故障类型,从故障注入点开始收集2×106个时钟信息,最后运行到程序结束,检测程序运行结果。
永久故障采用stuck-at-0/1、桥接及延迟的故障类型,从故障注入点开始持续注入2×106个时钟,最后运行至程序结束,判断执行结果。
间歇故障的故障类型包括stuck-at-0/1、桥接及延迟,每次注入实验的爆发次数分别服从均匀分布。每次爆发持续时间和2次爆发之间的时间间隔分别服从均匀分布、指数分布和Weibull分布。故障注入完成后,同样有一段时间的症状收集过程,最后检测运行结果。
3种故障模型的参数配置见表1,对于间歇故障3种分布函数的参数配置[21]见表2,Splash2测试程序的运行参数见表3。
表1 3种故障模型的参数配置
表2 间歇故障的3种分布函数参数配置
表3 Splash2测试程序及执行参数
4.3 实验结果
根据实验统计,故障注入的结果有以下6种: (1)程序执行正常,即故障注入后在执行过程中被系统屏蔽,没有对程序结果造成影响。(2)程序运行结束,但结果不对。(3)程序陷入死循环或者遇到高发活动。(4)程序因为非法指令、段错误等原因导致核丢弃(core dump)。(5)程序因为非法访问地址空间、地址不对齐、MMU缺失等原因进入调试模式(debugger)。(6)程序进入RED(Recover Error and Debug)STATE模式,导致Simics直接崩溃。
图2描述了不同部件在不同故障模型下的归一化实验结果,对不同故障类型(单比特翻转、stuck-at-0/1、桥接和延迟)下的结果取了平均值,对于间歇故障的3种分布(均匀分布、指数分布和Weibull分布)、Splash2的不同测试集也作了类似处理。其中, T表示瞬时故障;P表示永久故障;I表示间歇故障。
图2 故障注入实验结果
4.3.1 部件分析
译码单元对永久故障和间歇故障比较敏感,其中,Simics崩溃、程序进入调试状态占到80%以上;永久故障和间歇故障下实验结果正确的比例分别占到14%和9%,相对地,瞬时故障这一比例达到70%。
地址生成单元3种故障注入后的程序结果仍然正确的比例分别为63%,30%和19%。地址生成单元对瞬时故障屏蔽能力较强,永久故障次之,间歇故障最差。
译码单元和地址生成单元对瞬时故障都有很好的屏蔽能力,永久故障次之,间歇故障最差。从故障持续时间上看,瞬时故障最短,永久故障最长,间歇故障处于两者之间。但这2个部件对间歇故障是最敏感的,主要体现为间歇故障导致系统进入调试模式,最终程序均以失败结束。
ALU单元对瞬时故障有很好的屏蔽能力,屏蔽比例达到99%;对间歇故障的屏蔽能力稍差,比例降至53%。对永久故障最敏感,屏蔽比例仅为16%。在程序实际执行过程中,ALU指令只占所有指令的一部分。根据统计,测试程序在故障注入点碰到ALU指令的平均比例仅为53.8%,有大量的故障注入因为非ALU指令的原因没有产生效果,所以,ALU表现出了较好的容错能力。
寄存器对3种故障注入的屏蔽比例分别为93%,9%和33%。与ALU类似,寄存器对永久故障最敏感,对瞬时故障容忍能力最好,间歇故障则处于两者之间。这同3种故障持续时间相对应。
从上述部件分析可以发现,所有部件对瞬时故障均有最好的屏蔽能力,对永久故障和间歇故障容忍能力较差。瞬时故障只是暂时性的功能故障,影响局限在一定时间和空间范围内。永久故障是功能部件永久失效,对系统有致命影响。间歇故障持续时间处于两者之间,但由于多次重复爆发的特点,仍然对系统功能造成不同程度的损坏。
4.3.2 故障模型分析
从故障模型来看,瞬时故障对系统影响最小。译码器和地址生成单元的屏蔽比例不超过70%,而ALU和寄存器的屏蔽比例均超过90%。前者有很大一部分是核丢弃或者系统进入调试状态。这是因为译码器故障容易造成指令解码异常,地址生成单元容易破坏下一条指令地址,造成非法指令、非法地址访问、段错误、地址不对齐等异常,进而引起核丢弃或者系统进入调试状态。相对地,ALU和通用寄存器的数据是计算结果,一般不会引起系统资源类异常。此外,Sparc架构有32个通用寄存器,注入故障的寄存器结果容易被其他指令结果所覆盖,并不会将故障传播到程序中。
永久故障对系统影响比较严重,4种部件均出现了大量的Simics崩溃症状,也有部分系统进入调试模式出现。ALU和寄存器还出现了超时运行及程序陷入死循环的状态。
间歇故障对不同部件表现出不同的影响。与瞬时故障相比,4种部件的屏蔽比例均有较大幅度的下降。译码单元和地址生成单元屏蔽比例要低于永久故障,而ALU和寄存器堆屏蔽故障的比例则高于永久故障。从图2还可以看出,永久故障引起系统崩溃的比例要高于(或不低于)间歇故障,只是间歇故障引起了部分程序进入调试状态,提高了系统失效的比例。间歇故障的重复性对系统可靠性造成了一定影响,使得系统故障可能性明显高于瞬时故障。
4.3.3 程序行为分析
从症状上分析,程序结果是Error的实验占很少的比例,大多数结果是程序崩溃、系统进入调试状态、死循环或者Simics直接崩溃。其中,程序崩溃是由于段错误、非法指令等原因造成的,这一部分的比例较低;程序进入调试状态是由于非法地址访问、地址不对齐、MMU缺失等异常造成的,当上述故障更严重时,则直接演变为Simics崩溃或死循环。从4个部件的效果上可以看出,在瞬时故障时,有部分或较少的调试模式出现;在间歇故障时,译码器和地址生成单元出现较多的调试模式,并伴有大量的Simics崩溃症状出现;永久故障时,译码器和地址生成单元症状主要表现为Simics崩溃,ALU和寄存器也出现了较多的Simics崩溃症状,同时伴有较多的超时及死循环症状出现。
基于系统模拟器设计的故障注入平台,不仅可以模拟各部件的故障场景,同时也有利于进一步研究容错系统。本文从Simics模拟器出发,设计并开发一套支持流水线部件、多种故障模型、故障类型及参数的故障注入平台。从功能上模拟处理器流水线级别的故障情形,并提供故障检测工具收集系统信息,用于下一步的故障诊断和恢复工作。实验结果表明,瞬时故障对系统的影响较小,永久故障影响较大,而间歇故障在不同部件上表现出不同效果,对系统也有较严重影响。译码器、地址生成单元对故障更敏感,较容易造成程序或系统崩溃,ALU和寄存器对故障的屏蔽能力稍强。在发生永久故障时,4种部件均出现大量的失效情形。下一步研究内容包括将故障注入部件扩展到存储、总线及网络,搭建一个功能全面的故障注入平台,并且使故障注入平台为容错系统服务进行故障诊断及恢复。
[1] 李 娟.基于故障注入的软件安全测试技术研究[D].合肥:中国科学技术大学,2009.
[2] Gil D,Gracia J,Baraza J C,et al.A Study of the Effects of Transient Fault Injection into the VHDL Model of a Fault-tolerant Microcomputer System[C]//Proceedings of the 6th IEEE International On-line Testing Workshop. Palma de Mallorca,Spain:IEEE Press,2000:73-79.
[3] Amendola A M,Benso A,Corno F,et al.Fault Behavior Observation on a Microprocessor System Through a VHDLSimulation-basedFaultInjectionExperiment[C]//Proceedings of EuroDAC’96.[S.l.]: ACM Press,1996:536-539.
[4] Martínez J R,Gil P J,Martín G,et al.Experimental Validation of High-speed Fault-tolerant Systems Using PhysicalFaultInjection[C]//Proceedingsof InternationalWorkingConferenceonDependable Computing for Critical Applications.Washington D.C., USA:IEEE Computer Society,1999:233-249.
[5] Arlat J,Crouzet Y,Laprie J C.Fault Injection for Dependability ValidationofFault-tolerantComputer Systems[C]//Proceedingsofthe19thAnnual International Symposium.Los Alamitos,USA:IEEE Press,1989:348-355.
[6] Madeira H,Rela M,Moreira F,et al.RIFLE:A General Purpose Pin-level Fault Injector[C]//Proceedings of the 1stEuropeanDependableComputingConference. Berlin,Germany:Springer-Verlag,1994:199-216.
[7] Gunnetlo O,Karlsson J,Tonn J.Evaluation of Error Detection Schemes Using Fault Injection by Heavy-ion Radiation[C]//Proceedings of the19th International SymposiumonFault-tolerantComputing.Chicago, USA:IEEE Press,1989:340-347.
[8] Karlsson J,Arlat J,Leber G.Application of Three Physical Fault Injection Techniques to the Experimental AssessmentoftheMARSArchitecture[C]// Proceedings of DCCA’95.Los Alamitos,USA:IEEE Press,1995:150-161.
[9] Tsai T K,Iyer R K.An Approach to Benchmarking of Fault-tolerant Commercial Systems[C]//Proceedings of International Symposium on Fault-tolerant Computing. Sendai,Japan:IEEE Press,1996:314-323.
[10] Kanawati G A,KanawatiNA,AbrahamJA. FERRARI:AToolfortheValidationofSystem Dependability Properties[C]//Proceedings of the 22nd AnnualInternationalSymposiumFault-tolerant Computing.Los Alamitos,USA:IEEE Press,1992: 336-344.
[11] Han S,Rosenberg H,Shin K.DOCTOR:An Integrated Software Fault Injection Environment[R].University of Michigan,Technical Report:CSE-TR-192-93,1993.
[12] Carreira J,Madeira H,Silva J.Xception:A Technique for the Experimental Evaluation of Dependability in Modern Computers[J].IEEE Transactions on Software Engineering,1998,24(2):125-136.
[13] Jeitler M,Delvai M,Reich S.FuSE——A Hardware Accelerated HDL Fault Injection Tool[C]//Proceedings ofSouthernConferenceonProgrammableLogic. Sao Carlos,Brazil:IEEE Press,2009:89-94.
[14] Baraza J C,Gracia J,Gil D,et al.A Prototype of a VHDL-basedFaultInjectionTool:Descriptionand Application[J].Journal of Systems Architecture,2002, 47(10):847-867.
[15] Zarandi H R,Miremadi G,Ejlali A R.Fault Injection into Verilog Models for Dependability Evaluation of Digital Systems[C]//Proceedings of the International Symposium on Parallel and Distributed Computing. [S.l.]:IEEE Press,2003:281-287.
[16] Sieh V,Tschche O,Balbach F.VERIFY:Evaluation of Reliability Using VHDL——Models with Embedded FaultDescriptions[C]//Proceedingsofthe27th International Symposium on Fault-tolerant Computing. Seattle,USA:IEEE Press,1997:32-36.
[17] Rousselle C,Pflanz M,Behling A,et al.A Registertransfer-levelFaultSimulatorforPermanentand TransientFaultsinEmbeddedProcessors[C]// Proceedings of DATE’01.Munich,Germany:IEEE Press,2001:1530-1591.
[18] Delong T A,Johnson B W,Profetan J A.A Fault InjectionTechniqueforVHDLBehavioral-level Models[J].IEEE Design&Test of Computers,1996, 5(3):24-33.
[19] Li M L.SWAT:DesigningResilientHardwareby Treating Software Anomalies[M].Chicago,USA:UMI Dissertation Publishing,2009.
[20] Li M L.Understanding the Propagation of Hard Errors to SoftwareandImplicationsforResilientSystems Design[C]//Proceedingsofthe13thInternational Conference on Architectural Support for Programming Languages and Operating Systems.New York,USA: ACM Press,2008.
[21] Siewiorek D P,Swarz R S.Reliable Computer Systems: Design and Evaluation[M].New York,USA:Digital Press,1992.
编辑 陆燕菲
Simics-based System Level Fault Injection Platform
HU Qian,WANG Chao,WANG Haixia,WANG Dongsheng
(National Laboratory for Information Science and Technology,Tsinghua University,Beijing100084,China)
Fault injection provides an effective method to evaluate the reliability of system,which is a complex topic in multicore situation.There are many simulation-based fault injection tools now,most of which are implemented by Field Programmable Gate Array(FPGA)and Very High Speed Integrated Circuits Hardware Description Language(VHDL), with limited fault models.Based on the widely used system simulator Simics in computer architecture,this paper designs and implements a system level fault injection platform,supporting different firmware,OS and applications.It can inject faults into several components,with different fault models(including transient faults,permanent and intermittent faults) and most fault types.Further more,it integrates fault detection module into the system.After observing of the propagation of hardware faults in system,it analyzes the effect of different components,fault models on system level,inspiring fault detection,and finds that transient faults have a little impact on system,while permanent faults seriously interrupt the running and intermittent faults performs differently on different components.
fault injection;system reliability;fault model;fault detection;structure level simulator
胡 倩,王 超,王海霞,等.基于Simics的系统级故障注入平台[J].计算机工程,2015,41(2):57-62,75.
英文引用格式:Hu Qian,Wang Chao,Wang Haixia,et al.Simics-based System Level Fault Injection Platform[J]. Computer Engineering,2015,41(2):57-62,75.
1000-3428(2015)02-0057-06
:A
:TP302.8
10.3969/j.issn.1000-3428.2015.02.012
国家自然科学基金资助项目(61373025,61303002);国家“863”计划基金资助项目(2012AA0100905);高等学校博士学科点专项科研基金资助项目(20120002110032)。
胡 倩(1988-),男,硕士研究生,主研方向:多核体系结构,系统容错技术;王 超,助理研究员、博士后;王海霞,副教授;汪东升,教授、博士生导师。
2014-03-28
:2014-05-04E-mail:qianhu2011@gmail.com