V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liudaqi
V2EX  ›  硬件

CPU 会因为内部某个半导体晶元坏损,计算出错吗?

  •  
  •   liudaqi · 2020-12-23 15:24:48 +08:00 · 4119 次点击
    这是一个创建于 1213 天前的主题,其中的信息可能已经有所发展或是发生改变。
    看了下 CPU 的制造原理,硅晶元本质上还是数以亿计的半导体,如果遇到宇宙射线、晶元单位坏损(比如半导体性质改变,成了短路导体、或电阻不导体)这些情况,这样 CPU 计算不会出错吗?

    似乎人们在日常工作中,从来没有担心这样的错误出现,是这种错误不会出现?还是有什么机制可以让 CPU 自检吗?
    27 条回复    2023-05-24 10:23:51 +08:00
    Yantc
        1
    Yantc  
       2020-12-23 15:30:23 +08:00
    1 、会的。
    2 、Jtag 。
    LZSZ
        2
    LZSZ  
       2020-12-23 15:30:56 +08:00
    我猜所谓的 cpu“体质差”就是你说的这个情况 需要加压或者降频 但还是可以用
    hearlessnor
        3
    hearlessnor  
       2020-12-23 16:01:29 +08:00 via iPhone
    一般你从公司回家的路应该不止一条。
    murmur
        4
    murmur  
       2020-12-23 16:05:35 +08:00
    计算出错没听说过,维修厮倒是修过一堆因为 cpu 损坏导致各种外设奇葩故障的电脑
    yanjieee
        5
    yanjieee  
       2020-12-23 16:18:44 +08:00
    我见过一个很奇葩的故障,内存有错,然后烤大文件的时候(直接本地 cp 这样),md5 会变。
    across
        6
    across  
       2020-12-23 16:23:20 +08:00
    会出错,不可预料。 所以航天 CPU 这种易受外太空射线影响的会有措施。
    很早知乎就有人提过了
    https://www.zhihu.com/question/20347600
    搜了下还有类似的回答: 用多个 CPU 重复计算,降低出错概率。
    northisland
        7
    northisland  
       2020-12-23 16:25:10 +08:00
    有生之年,没遇到过
    systemcall
        8
    systemcall  
       2020-12-23 16:34:05 +08:00
    会,内存坏了也会
    CPU 出毛病不太容易感知,显卡出计算错误相对而言比较明显,特别是矿卡和寨卡,容易花屏
    sujin190
        9
    sujin190  
       2020-12-23 16:43:42 +08:00
    会啊,所以现在消费级芯片并不能直接用于太空,在消费场景中,一般来说吧估计都是坏一片,然后你立马就会发现黑屏了,也很明显啊,坏一两个不影响主要流程又偶尔错这个那么多晶体管这概率太低太低了
    jworg
        10
    jworg  
       2020-12-23 16:55:24 +08:00 via iPhone
    可以搜下 bist 相关技术,如果能看懂就是你要的最后一句话答案
    drrrtt
        11
    drrrtt  
       2020-12-23 17:09:28 +08:00
    @sujin190 #8 他马一龙好像就是直接用了消费级芯片,只不过用了好多片投票结果。
    CrazyBoyFeng
        12
    CrazyBoyFeng  
       2020-12-23 17:31:13 +08:00   ❤️ 3
    给一楼的 jtag 补充一下:jtag 是事先定义好的测试接口,测试时需要把待测 cpu 接入外部测试工具。它并不不是自测机制。
    包括 cpu 在内的半导体芯片大都有一个比较基础的奇偶校验机制,用于寄存器检查。原来说起来很简单,统计一串数据的 1 的个数是奇数还是偶数。还有 ECC 寄存器,把数据备 5 份,有 3-5 个一致就是有效数据。还有多个寄存器的设计,如三模冗余 TMR 。某些厂商还会设计专门的校验机制,例如 intel 的 mce/cmci 。较少的错误会被自动纠正,较多较频繁的错误则会输出错误。除此以外,为了防范高温、电磁脉冲(包括 EMP 、核爆)、宇宙射线(包括太阳风暴和地磁较弱臭氧空洞的南北极),还会设计物理屏蔽结构,如金属封装。我们甚少见到输出错误的 cpu,是因为现代 cpu 一般设计时都考虑了一定程度的极端环境,并有一定的容错纠错机制。
    kop1989
        13
    kop1989  
       2020-12-23 17:46:16 +08:00
    非硬件专业过来班门弄斧😂:

    会。但因为有纠错机制,所以绝大多数的错误都是“自修复无感知”或直接 Fatal (这个词再 2077 常见。致命错误,比如蓝屏)

    然而恰巧逃过 CPU 纠错机制,最终通过指令集、汇编、驱动、运行环境,呈现到 ui 上的错误,那是少之又少。
    xishijt
        14
    xishijt  
       2020-12-23 17:49:15 +08:00
    当年 AMD 开核,好像就是把计算错误率过高的核心放出来用,
    Cooky
        15
    Cooky  
       2020-12-23 18:02:45 +08:00 via Android
    内部有纠错设计,错误越多纠错越多性能越低到最后没法用
    raaaaaar
        16
    raaaaaar  
       2020-12-23 18:26:14 +08:00 via Android
    我来总结下:
    会的,但是这个概率本身很小,再加上出厂时会进行测试,所以概率更小了,同时晶元受损的条件比较严格,如果是在太空中,概率就很高,所以太空中的硬件和操作系统都是特别设计的,最后,即使出了错,还有自动容错和纠错的设计。
    所以在我们日常中使用的 CPU 才那么少听说出问题。
    emeab
        17
    emeab  
       2020-12-23 18:28:11 +08:00
    AMD 当年不就把坏的核给屏蔽 当下一级产品卖吗 (又不是不能用
    Yantc
        18
    Yantc  
       2020-12-23 20:43:46 +08:00   ❤️ 2
    @CrazyBoyFeng #12 原文:“给一楼的 jtag 补充一下:jtag 是事先定义好的测试接口,测试时需要把待测 cpu 接入外部测试工具。它并不不是自测机制。包括 cpu 在内的半导体芯片大都有一个比较基础的奇偶校验机制,用于寄存器检查。原来说起来很简单,统计一串数据的 1 的个数是奇数还是偶数。还有 ECC 寄存器,把数据备 5 份,有 3-5 个一致就是有效数据。还有多个寄存器的设计,如三模冗余 TMR 。某些厂商还会设计专门的校验机制,例如 intel 的 mce/cmci 。较少的错误会被自动纠正,较多较频繁的错误则会输出错误。除此以外,为了防范高温、电磁脉冲(包括 EMP 、核爆)、宇宙射线(包括太阳风暴和地磁较弱臭氧空洞的南北极),还会设计物理屏蔽结构,如金属封装。我们甚少见到输出错误的 cpu,是因为现代 cpu 一般设计时都考虑了一定程度的极端环境,并有一定的容错纠错机制。”
    ======
    回复:

    看到 12L 这么热情我也补充点。
    对于自测试常用的 bist 即内建自测试,常见的奇偶校验说白了仅仅起到告警作用,而更多的是 ECC 等校验。但是 ECC 这些的校验的多数都是有校验门限的不是你想校验就能校验的。且这这些都是多用于存储校验而不在计算路径。

    其次,对于计算单元的校验,更多的是根本就是不会管。即使在抗浮躁情况下工作,即使是多次计算取最大概率也是有概率错误的。所以更多的是使用抗浮躁库和加罩子屏蔽干扰来从根本解决问题而不是内外部修正。

    至于我为什么在一楼来说 Jtag,就是因为你的消费电子芯片在生产前就会做信号完整性分析和电源完整性分析( SIPI 分析)。在可能存在问题的地方是要提前规避的,比如加 power 。而在生产之后,要 DFT 筛片,而 DFT 是在设计时就加好的测试电路,通过 Jtag 的接口送激励测试筛片,且要做老化压力试验后再测试的。所以你能拿到的都是筛过的。有个词叫做“盆浴曲线”你可以了解下。所以更多的是出现老化问题的片子已经过了生命周期了。

    我再给你们说个我这辈子目前为止见过的一个最牛逼的 BUG:
    我们之前做某功能的片子测试后已经商用了两三年了,但是某个新客户再使用后总是周期性出现数据误码且不可纠。AE 跑去定位找不到问题但就是有误码,我们再把之前的的代码拿出来仿真也找不到错误。最后拿出问题的数据回来灌进系统发现是没问题的。那就是怀疑是不是芯片老化了,换了新的片子还是有同样问题。最后发现周期性出问题的时候旁边过火车,后来把机柜拖远了,解决了。
    gam2046
        19
    gam2046  
       2020-12-23 20:54:27 +08:00
    @Yantc 旁边过火车 全场 MVP 。这种在我以前的认知里,属于玄学的范畴。我只玩过单片机,自己玩的时候,遇到过类似的迷之 bug 。一个外部晶振用作时钟发生器,可是每天都会快一点,一开始我以为是物理误差,后来跑一段时间,每天的误差还不一样。最后发现是只要我家微波炉用的时间越多,误差越大。可微波炉和单片机中间隔了两个承重墙啊....
    Xusually
        20
    Xusually  
       2020-12-23 21:08:28 +08:00
    @gam2046 说到这个,https://www.solidot.org/story?sid=58418
    之前一家医院的氦气泄漏,导致医生护士的 iPhone 不能使用了,就是因为 iPhone 使用的 MEMS 时钟直接挂了,没有时钟,什么都没了。
    Yantc
        21
    Yantc  
       2020-12-23 21:09:05 +08:00
    @gam2046 #19 原文:“@Yantc 旁边过火车 全场 MVP 。这种在我以前的认知里,属于玄学的范畴。我只玩过单片机,自己玩的时候,遇到过类似的迷之 bug 。一个外部晶振用作时钟发生器,可是每天都会快一点,一开始我以为是物理误差,后来跑一段时间,每天的误差还不一样。最后发现是只要我家微波炉用的时间越多,误差越大。可微波炉和单片机中间隔了两个承重墙啊....”
    ======
    回复:哈哈哈哈哈哈 那看来这种问题还是比较常见的,生活中都能遇到,而不是极端环境。

    不过可见那两承重墙里钢筋太少了。。。
    IgniteWhite
        22
    IgniteWhite  
       2020-12-23 21:24:47 +08:00   ❤️ 2
    @Yantc 同补充。我本科上过一门课叫可靠性物理,集中讲了集成电路的可靠性。业界的标准叫 JEDEC,在这个网站里: https://www.jedec.org/

    集成电路的可靠性的关键问题有:
    器件:栅介质损耗。会导致晶体管漏电
    互连:电迁移。在铝互连的年代很严重,现在用铜互连加大马士革工艺有了很大改善
    封装:应力,腐蚀。一般看到电脑进水搞坏 CPU,会有这个情况
    电路:静电放电
    器件和电路:辐射效应。专业名词叫 SEE,单电子效应。我大四时候做过一个短项目,用 TCAD 模拟 alpha 粒子射入 SRAM 单元后,引发的载流子雪崩式影响。主要是考虑卫星上的芯片,地面上的芯片的辐射量达不到这个阈值。

    我最近了解过 SpaceX 的飞控芯片,他们尤其要考虑辐射和可靠性。飞控芯片一般由 Intel 大约每十年设计一代,技术节点大概在 130nm 以上,来保证可靠性,封装方面也是耐辐射,耐腐蚀。代码上一般都是 C 。

    SpaceX 的猎鹰九号一级火箭因为不用离开大气层太远,用的不是这种昂贵的芯片,而是相对普通的地面上用的芯片,他们用三个完全相同的芯片,同时运行相同的指令,每次出来结果就进行比较,如果有一个不同,就重新计算。如果计算若干次,有一个始终与其他的不同,就使用另两个的计算结果。
    IgniteWhite
        23
    IgniteWhite  
       2020-12-23 21:39:09 +08:00   ❤️ 1
    @gam2046 应该是微波会让极性分子周期性改变指向。对于含水的食物,水分子旋转摩擦生热。晶振里的 SiOx 共价晶体整体上是有取向的,在微波通过时会有周期性的应力变化,改变了压电效应的震荡频率
    D0n9
        24
    D0n9  
       2020-12-23 21:46:39 +08:00
    宇宙射线对计算机讯号传递的错误率有多大影响? https://www.zhihu.com/question/30743975
    ThirdFlame
        25
    ThirdFlame  
       2020-12-23 21:53:36 +08:00   ❤️ 1
    @IgniteWhite 邬江兴院士的拟态 是 异构三个不同的环境,进行相同运算,如果结果相同,则通过。有一个不同,就忽略这个不同的,并且重置这个不同的。 同时想到了 EVA 的 MAGI,但是它是有一个反对,就反对
    yolee599
        26
    yolee599  
       2020-12-24 08:38:33 +08:00 via Android
    有纠错算法。建议了解一下二维码的原理,也有纠错算法
    kangyue9999
        27
    kangyue9999  
       331 天前 via Android
    第一,你指的损坏是说的是制造的时候吗,因为从晶圆制造之后就会测试,然后切割以后也会测试,封装之后依然会测试,所以你拿到有问题或者体质差的 CPU 核心的概率很小。
    第二,不同于存储器的 bist 可以实现重新映射,如果关键的寄存器出现绝对的损坏的话,那么肯定是会导致异常啊(包括死机之类的),但是这种故障导致的原因往往是供电网络短路之类的,所以不会出现只一个寄存器出现故障,而是一定是大面的故障
    第三,另外一种是由于 em 导致器件老化,现象是 setup hold time 可能变长,那这种情况电路会适当降频来保证电路功能正常。所以可能会出现电脑变卡,但是往往不至于直接导致异常
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   861 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:37 · PVG 05:37 · LAX 14:37 · JFK 17:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.