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

计算机是如何保证计算结果的正确性

  •  
  •   tt83 · 3 天前 · 2927 次点击

    一直挺好奇 cpu 里那么多晶体管,内存数据存在高低电压中。每天在千亿万亿次计算中有没有可能出错,例如某一个 0 被当成 1 ,只要某一个位出错可能出现连锁反应导致整个计算结果的出错,计算机有没有机制保证或者察觉到这种出错。如果存在这种可能是不是你银行的钱就可能多一个 0 或少一 0 ,这种出错概率是多少。

    这里大多数人应该都是做软件的,可能平常也不会去想这些底层硬件是如何去保证计算的正确性。

    35 条回复    2025-01-26 10:32:36 +08:00
    GiggleSmile
        1
    GiggleSmile  
       3 天前
    xibeifeng
        2
    xibeifeng  
       3 天前
    计算机组成原理?好像记得硬件是进行补码加法运算,然后会有各种校验码方法,什么 crc 、海明码保证运算结果正确,好像是这么回事
    liprais
        3
    liprais  
       3 天前   ❤️ 4
    "这里大多数人应该都是做软件的,可能平常也不会去想这些底层硬件是如何去保证计算的正确性。"
    问问题还不忘扣帽子,真是 xx 的好学生
    tt83
        4
    tt83  
    OP
       3 天前
    @xibeifeng 当年就没学懂😓
    TrackBack
        5
    TrackBack  
       3 天前
    你要是我 10 岁的侄子问出来我会夸你有探索精神
    你在这里问我只能说本科没好好上课就回去翻书
    tt83
        6
    tt83  
    OP
       3 天前
    @GiggleSmile 看回答就是会出错,只是概率低极低
    tt83
        7
    tt83  
    OP
       3 天前
    @liprais 你想表达什么,一个纯技术问题的背景假设你也能往政治上面扯?
    tt83
        8
    tt83  
    OP
       3 天前
    @TrackBack 本科确实没上过
    deepblue1
        9
    deepblue1  
       3 天前
    学计算机(软硬件)的不学计算机组成原理吗 这不是软件必修课
    psyche
        10
    psyche  
       3 天前
    op 不是科班的,还是上课摸鱼了?
    a949690645
        11
    a949690645  
       3 天前   ❤️ 16
    不想回答就不要回,为什么总是高高在上的感觉呢,难道因为这是一个很简单的问题大家就不去提问了吗?
    mobpsycho100
        12
    mobpsycho100  
       3 天前
    关键词: CPU post-validation
    me1onsoda
        13
    me1onsoda  
       3 天前
    事实上计算机计算并不保证正确,精度缺失溢出等等,或者干脆说它压根就没有在计算,纯粹的在进行异或进位等操作。再追根究底下去就需要电路相关的知识了,这种人才应该在做半导体芯片的工作
    ryd994
        14
    ryd994  
       3 天前 via Android   ❤️ 1
    “例如某一个 0 被当成 1 ”
    所以需要 ecc 内存

    “计算机有没有机制保证或者察觉到这种出错” 有,而且有很多。ECC 内存、CPU cache 也是 ECC 的。CPU 本身在发售前就要大量的验证,但仍然可能有 bug 。一些 bug 可以通过微码更新修复,一些 bug 无法修复就只能屏蔽功能或召回。Intel 的处理器白皮书你可以去看看,有很多勘误才是正常的。

    对于要求极高可靠性的情况(比如火箭控制)可以使用多机同步计算投票的办法做最终的纠错。

    “你银行的钱就可能多一个 0 或少一 0 ,这种出错概率是多少”
    可能性很大但也很小。很大是说这种错误在底层很常见。很小是说这种信号错误经过层层纠错,影响结果的概率几乎没有。而且银行内部的流程设计就包括了各种容错机制。毕竟别说计算机可能出错,人更可能出错。人出错的概率比电脑大多了。
    icyalala
        15
    icyalala  
       3 天前
    SpaceX 的猎鹰 9 火箭,内置了 3 个 x86 处理器来作为辐射容错( radiation fault )
    错误由软件层面解决,一台出错了也没问题,自动重启就行
    这是 SpaceX 官方工程师的说法
    besto
        16
    besto  
       3 天前   ❤️ 3
    多个方面:
    1. 所谓 0 1 是数字电路,简化后的结果,底层还是要有波动的,比如电源 5V ,并不是 0V 才是 0 ,5V 才是 1 ,这中间就有了很大容错空间,如果你做 FPGA 就能接触到 setup hold removal 时序,如果不满足,就可能出错,而这个时序和频率有关系,这也就是为啥超频可能跑飞的原因,因为确实很多地方算错了;
    2. 有各种容错算法,比如上面提到 ECC / CRC 校验等,当然这里大多数是对内存或是传输过程中错误;
    3.也就是 15L 说的,这里有个专业名词叫 lockstep ,简单点就是 2CPU 一起算,结果一样才能出来,不行重算,有安全要求的芯片中很常见,比如 720AE 的,就是锁步 CPU ,甚至还有类似的 GPU (我知道的,IMG 公司的 BXS 这种);


    最后一条:
    算错是非常常见的事情,芯片出来有良品率一说,也就是出场芯片有很多都是坏的,它就会算错,这时候有 ATE 验证,甚至还有 SLT 验证,就是要工厂通过特定 0/1 特征流输入给芯片,看芯片能否返回正确值,这也就是 12L 说的验证;

    @icyalala
    @mobpsycho100
    julyclyde
        17
    julyclyde  
       3 天前
    其实保证不了
    “想当年”Pentium 刚出的时候就有浮点运算错误的 bug

    更不要说浮点数本身就不准
    xz410236056
        18
    xz410236056  
       3 天前
    校验和冗余
    paopjian
        19
    paopjian  
       3 天前
    CPU 没法保证计算结果正确, 只能多重验证+算法验证+人工发现
    duanxianze
        20
    duanxianze  
       3 天前   ❤️ 2
    其实关键的问题就是出错的概率没你想的那么高,可以说非常非常低,比如说一个发光二极管,通电它就一定亮,断电它就一定灭,现实世界还是很稳定的,芯片的物理和化学物质也都非常稳定,就像沙子放一万年还是砂子一样,所以只要设计不出错,再加一定的冗余措施,出错的概率极低
    paradoxs
        21
    paradoxs  
       3 天前
    没有保证啊。

    你现在用豆包,做数学题,很容易出错的。
    passive
        22
    passive  
       3 天前 via Android
    这问题涉及太广了。每个人都会往自己的方向说。并不是楼上说的科班不科班的区别。

    问编码的会说因为考虑了校验,问高速电路的会说电路设计牛逼眼图干净,问材料科学的会说他发明的基底材料 dispersion 小,问工艺的也会从工艺上给你解释,问质量管理的又会是另一套说辞
    lxh1983
        23
    lxh1983  
       3 天前 via iPhone
    现在的计算机专业都不学微机原理了吗?
    cpstar
        24
    cpstar  
       3 天前
    不是单纯一个层面在纠错,若干个层面都有,从底层高低电位到最上层软件编写
    moudy
        25
    moudy  
       3 天前
    出厂前的验证,日常运行时各种 ECC 纠错机制,关键任务,比如航天航空,还会上 n 选 1 异构软硬件。
    Lightbright
        26
    Lightbright  
       3 天前 via Android
    你这个问题问 gpt 岂不是更快
    twig
        27
    twig  
       2 天前 via iPhone
    @tt83 他就想表达你不会聊天呗。我也觉得你不会聊天。

    问完问题,直接怼一句「我觉得你们也不懂」,这不是缺心眼吗,没法往下聊啊。

    正确的问法不应该是姿态放低点吗。
    lekai63
        28
    lekai63  
       2 天前 via iPhone
    op 在学习研究计算机底层原理的同时,也要多看看社科人文作个补充啊。
    mhycy
        29
    mhycy  
       2 天前
    地表上晶体管的电压能保证其自身在物理学定律约束下不出错
    非晶体管器件以及长引线需要引入 ECC 纠错,片上 ECC 在 FPGA 很常见
    逻辑上抵御串扰的方法不是加电压就是加距离,这是为了在物理学约束下能不出错
    可以参考眼图这一东西,在外部需要用眼图测试来保证链路没问题

    至于高空……
    上冗余!加铅封!降频率!降工艺!加电压!
    好了,物理学能大概率保证你不出错了
    cnrting
        30
    cnrting  
       2 天前 via iPhone
    2025 年了,这种问题丢给 AI 就行了
    willatman
        31
    willatman  
       2 天前 via iPhone
    @tt83 人家根本没往政治上扯,就是说你问问题就问问题,还埋汰一下论坛里的人干啥? 你问的问题听上去就是在说,看我想的问题,比你们不知道高到哪里去了,问你们也不懂。
    tt83
        32
    tt83  
    OP
       2 天前
    @willatman 原来你们读出了埋汰的意思,那我确实没看懂他的话。虽然我没有任何埋汰和优越感,让你们有这种感觉抱歉
    yov123456
        33
    yov123456  
       1 天前 via iPhone
    intel 14 代缩肛导致 ue5 游戏高负载下报错不就是 cpu 算错了嘛🤔 还挺常见的
    GeekGao
        34
    GeekGao  
       1 天前
    发帖的礼仪、情商,都很重要。

    就好像如果你把 CPU 、RAM 这类核心芯片 给干红温了,降频、高温导致信号干扰那自然就会出错。如果长时间没触发断电机制的话,电子迁移会导致硬件完全损毁。

    所以自保手段之一就是当机。然后你还要埋冤 “你们做软件的不靠谱,可能平常也不会去关注底层硬件。。。你看,硬件主动断电了吧”
    tt83
        35
    tt83  
    OP
       1 天前
    @twig @willatman 恰恰相反我把自己放在小白的位置,你们觉得冒犯是因为你们潜意识站在一个居高临下的位置觉得这个问题太 naive ,事实是这个帖子下面也没几个人能完整讲清楚。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:56 · PVG 00:56 · LAX 08:56 · JFK 11:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.