如果CPU出现硬件错误,会发生什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jimaobian
V2EX    问与答

如果CPU出现硬件错误,会发生什么?

  •  
  •   jimaobian 2012-10-03 21:31:47 +08:00 4704 次点击
    这是一个创建于 4806 天前的主题,其中的信息可能已经有所发展或是发生改变。
    CPU既然是集成电路,由于外部干扰、内部热量等等,肯定会在某种情况下产生逻辑错误。虽说出错的概率及其微小,但是CPU的运算速度摆在那里,这么大的样本也难免会出错。

    于是,我想知道,CPU本身有没有冗余结构确保运算的正确性,操作系统有没有方法对这些逻辑错误进行规避,或是直接导致机器死机。还有,如果一个读取的指令由于错误变成了写入外部设备的指令,会不会影响到硬盘中数据的安全性?

    这个问题纠结了很久了,也有可能是想得太多了,望专业人士能给一个解释,谢谢~~
    3 条回复    1970-01-01 08:00:00 +08:00
    ShadowStar
        1
    ShadowStar  
       2012-10-03 23:18:41 +08:00   1
    我还真遇到过,做嵌入式的开发,判断一个地址的值是否等于特定的值失败,但是打印处理确实是那个值。
    想你说的读取、写入的错误没那么容易发生,对于外部设备的读写不是简单的几个指令就完成的。
    一般出错就是跑飞了,有kernel的话就panic,没有kernel的话就core trap。
    HowardMei
        2
    HowardMei  
       2012-10-04 12:14:46 +08:00   2
    绝大多数嵌入式系统出现‘跑飞’,都不是芯片内部问题,而是电路板设计问题,晶振、电源、接地、接触、寄生、走线串扰之类,也有的是软件问题,时序没考虑清楚。

    CPU内部关键模块当然有冗余设计,各子模块内部校验、纠错、测试接口也一样都不会少,更不用说极其昂贵的QA流程了,什么DC/AC探针测试,什么零下40度到零上120度让芯片跑各种Corner Condition Cases,还有专门的封装测试厂,哪环节不是一分钟多少美金地烧钱,不可能像软件那样放着Bug以打补丁为生。服务器CPU冗余模块很多,低端MCU较少见模块级冗余,但是门级电路冗余还是会做的。

    指令很上层,读在CPU内部变成写不可能,在最简单的MCU里所涉及的寻址、时序、运算电路单元也会有一大片,00010与00001在多级流水中涉及的门电路南辕北辙,内部出错不可能。对外输出时,接口/总线可能会出错,比如Output Buffer电平被钳制,这时芯片整个异常是应该的,不然你怎么发现某个蠢家伙焊错?

    另外,存储芯片控制逻辑也都是时钟边缘触发,并带校验,不会胡乱执行指令。
    jimaobian
        3
    jimaobian  
    OP
       2012-10-06 12:30:18 +08:00
    原来如此,自己对CPU的了解还真得非常有限,感谢两位的回复~~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5123 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:24 PVG 09:24 LAX 17:24 JFK 20:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86