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

2020-12-23 15:24:48 +08:00
 liudaqi
看了下 CPU 的制造原理,硅晶元本质上还是数以亿计的半导体,如果遇到宇宙射线、晶元单位坏损(比如半导体性质改变,成了短路导体、或电阻不导体)这些情况,这样 CPU 计算不会出错吗?

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

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

然而恰巧逃过 CPU 纠错机制,最终通过指令集、汇编、驱动、运行环境,呈现到 ui 上的错误,那是少之又少。
xishijt
2020-12-23 17:49:15 +08:00
当年 AMD 开核,好像就是把计算错误率过高的核心放出来用,
Cooky
2020-12-23 18:02:45 +08:00
内部有纠错设计,错误越多纠错越多性能越低到最后没法用
raaaaaar
2020-12-23 18:26:14 +08:00
我来总结下:
会的,但是这个概率本身很小,再加上出厂时会进行测试,所以概率更小了,同时晶元受损的条件比较严格,如果是在太空中,概率就很高,所以太空中的硬件和操作系统都是特别设计的,最后,即使出了错,还有自动容错和纠错的设计。
所以在我们日常中使用的 CPU 才那么少听说出问题。
2kCS5c0b0ITXE5k2
2020-12-23 18:28:11 +08:00
AMD 当年不就把坏的核给屏蔽 当下一级产品卖吗 (又不是不能用
Yantc
2020-12-23 20:43:46 +08:00
@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
2020-12-23 20:54:27 +08:00
@Yantc 旁边过火车 全场 MVP 。这种在我以前的认知里,属于玄学的范畴。我只玩过单片机,自己玩的时候,遇到过类似的迷之 bug 。一个外部晶振用作时钟发生器,可是每天都会快一点,一开始我以为是物理误差,后来跑一段时间,每天的误差还不一样。最后发现是只要我家微波炉用的时间越多,误差越大。可微波炉和单片机中间隔了两个承重墙啊....
Xusually
2020-12-23 21:08:28 +08:00
@gam2046 说到这个,https://www.solidot.org/story?sid=58418
之前一家医院的氦气泄漏,导致医生护士的 iPhone 不能使用了,就是因为 iPhone 使用的 MEMS 时钟直接挂了,没有时钟,什么都没了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738264

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX