迅维网

查看: 3075|回复: 22
打印 上一主题 下一主题

为什么拥有巨大规模集成电路的cpu不会出错?

[复制链接]
跳转到指定楼层
1#
发表于 2017-11-18 13:15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: LAN 来自 LAN

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
cpu拥有大规模集成电路,数以亿计的电路晶体管,由于量大,电路损坏或者失效的概率来说应该不小,可是就日常使用的系统Windows或Macos或者Linux很少出现明显的错误。感觉这个不符合常理?谁能详细解释一下 1、cpu为什么能保证巨大规模集成电路的情况下是如何保证不出错的? 2、比如一个晶体管或者电路损坏会发生什么情况?

2#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
谢邀。CPU会出错,而且一旦出错以后,会越来越频繁出错。出错还不是最可怕的,怕的是出错了你都不知道出错了,因为CPU里面有自动校正错误的机制。我们先脑洞一个场景:
某天,你坐在电脑前,与游戏中的怪物奋战时,一个神秘的宇宙射线到达地球。它逃过臭氧层的阻隔,穿过你的身体,击中电脑的内存条。你因为吸收了宇宙射线的能量变成了奥特曼,你的游戏人物属性也因为内存某个bit的翻转实力爆表,一刀把大Boss斩于马下。怎么样,就问你刺激不刺激?
也许变身只存在于好梦中,但硬件错误却时时刻刻在发生:一个电源的浪涌,电磁干扰和辐射等等都可能让电脑中的某些部分发生错误,而我们却很少看到这个错误:

这是为什么呢?
其实硬件出错可以分为已被纠正的(Corrected)和不能纠正的(Uncorrected):
1. Corrected:硬件发生错误,但已经被硬件或者固件纠正,不需要操作系统做出动作。
2.Uncorrected: 硬件发生错误,不能被纠正。它又分为两种:Recoverable, 错误被限制在一定范围内,可以进行隔离恢复;Fatal,致命错误,除了重启别无他法。
硬件可以有很多种方法来纠正错误,本质上都是提供冗余。以ECC内存来举例,相对于奇偶校验位(Parity)技術,ECC通过附加额外的5个比特可以发现2个bit错误或者纠正1个bit错误。内存的Mirror技术,利用双备份内存,发现并纠正出错的内容。如此种种,电脑硬件/固件利用各种冗余来发现和纠正错误。
那是不是纠正了就完了呢?实际上除非偶然的浪涌产生的错误,因为制造工艺、老化等产生的错误有愈演愈烈的趋势。这次的一位错误被纠正了,不加处理和重视,下次可能产生两位错误,那时就有可能从Corrected变成Uncorrected!
Intel的CPU利用MCE和CMCI来向操作系统报告错误;PCIe子系统有标准的AER来报告错误;其他的硬件部分由BIOS通过WHEA/APEI来通知操作系统。下面我们重点来介绍MCE/CMCI。
MCE/CMCI

Intel从奔腾4开始的CPU中增加了一种机制,称为MCA——Machine Check Architecture,它用来检测硬件(这里的Machine表示的就是硬件)错误,比如系统总线错误、ECC错误等等。这套系统通过一定数量的MSR(Model Specific Register)来实现,这些MSR分为两个部分,一部分用来进行设置,另一部分用来描述发生的硬件错误。
当CPU检测到不可纠正的MCE(Machine Check Error)时,就会触发#MC(Machine Check Exception),通常操作系统会来处理#MC,它通过读取MSR来收集MCE的错误信息,并产生上面第一个蓝屏。当然由于发生的MCE可能是非常致命的,CPU直接重启了,没有办法完成MCE处理函数;甚至有可能在MCE处理函数中又触发了不可纠正的MCE,也会导致系统直接重启。
当然CPU还会检测到可纠正的MCE,当可纠正的MCE数量超过一定的阈值时,会触发CMCI(Corrected Machine Check Error Interrupt),此时软件可以捕捉到该中断并进行相应的处理。CMCI是在MCA之后才加入的,算是对MCA的一个增强,在此之前软件只能通过轮询可纠正MCE相关的MSR才能实现相关的操作。
MC BANK
每个逻辑CPU实现了一整套错误属性、状态和控制寄存器。
它分为左右两个部分,左边的是全局的寄存器,右边表示的是多组寄存器(Banks)。全局相关的寄存器组定义了如何开启 MCA 的能力。Bank的数目由IA32_MCG_CAP MSR里面的Count来决定
每一个BANK则具体对应一类错误源,如 CPU,MEMORY,CACHE,CHIPSET 等等。每一个BANK都可以进行单独的控制,这样软件就能够针对每一个BANK使用特定的方式进行处理。
随着越来越多的器件被整合进入CPU,Bank的数目也有越来越多的趋势,详细可以参阅芯片的Spec。
CMCI
Corrected machine-check error interrupt (CMCI) 是在酷睿CPU时引入的新特性,叫做eMCA。不同于原先需要操作系统来轮询(Polling)MC Bank的方式,CMCI 提供了一种机制,当corrected error发生侧次数到达阀值的时候,就会发送一个信号给本地的CPU来通知系统软件。当然,系统软件可以通过IA32_MCi_CTL2 MSRs来控制该特性的开关。


操作系统可以选择合适的Error count从而在问题严重了才让硬件报告,并在CMCI的local APIC的LVT Entry中填入合适的中断向量号码和模式等(计算机中断体系一:历史和原理 - 知乎专栏)
WHEA和APEI

看过了可纠正的错误,那么其他错误的处理呢?其实,更重要的问题是,可纠正和不可纠正错误发生了,不能简单的重启了事,错误的原因应该被记录和报告出来,便于管理员找出问题点。可纠正的错误我们可以记录在系统日志中,因为系统还可以使用。但是发生不可纠正的致命错误后,系统处于不稳定状态,谁来记录呢?这是个大问题。
因为服务器系统对可靠性的要求,微软很早就提出Windows Hardware Error Architecture(WHEA),主要用于服务器操作系统Windows Server系列。它一改以往由BIOS和BMC对错误进行单独处理,OS不知情的状态:
WHEA通过扩展ACPI(ACPI与UEFI - 知乎专栏),加入了四个table,用于固件向OS报告错误源,记录错误和注入错误,改进后的系统框图如下:
注意PCI和CPU都有自己的LLHEH来处理MCE和AER。
由于WHEA的成功,ACPI 4.0引入了它的几乎全部,只是给了个新的身份证(GUID)并起了个新的名字:APEI(ACPI Platform Error Interface)。毕竟WHEA里面的Windows并不合适作为工业标准的名字。
WHEA/APEI十分复杂,我们单独撰文进行了介绍(WHEA原理和架构)。
结论

硬件的纠错机制会让细微的偶然错误化于无形,看来依靠宇宙射线属性+100000的美梦并不现实。但同时也避免了数据的错误,帮助计算机系统健康稳定运行。也许我们可以打开Windows的系统日志看一下,你可能会发现计算机真是雷锋,做好事不留名!
该文被整理发布在专栏:UEFI和BIOS探秘。那里还有别的文章。欢迎大家关注本专栏。

回复 支持 反对

使用道具 举报

3#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
芯片也会出错啊,芯片除了datasheet还有erratasheet,就是记录已知芯片bug的手册,里面有针对bug的workaround.  系统驱动里会根据这些来避免特殊时序下的bug.
当然芯片流片前的详细的仿真测试是避免重大bug的必要手段,否则冒冒失失流片出来没法用就亏大了。实体芯片也会有封测步骤确保剔除生产时的不良品,所以也就有所谓的KGD(know good die).

回复 支持 反对

使用道具 举报

4#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
首先明确我们说的错误,主要指程序崩溃,或者是程序的运算结果出错。后者SDC(silent data corruption)通常更严重,比如说计算机结果不对但程序没有崩溃,错误结果最终也许会导致更严重后果。
电路晶体管出现错误并不少见,不过从整个计算机系统来看,统计讲到某个特定的使用者,出现错误,并且能被体验到并不会很频繁。即使硬件出现错误,并不会都传递到最上层的软件,比方说,只有5%的错误会影响到处理器的状态,最终用户观察到的比如程序崩溃,计算结果出错实际上会很少。
通常我们说的硬件错误有两种,一种是soft error;另一种是hard error。soft error,不是软件错误,是指因为背景辐射(alpha射线、高能辐射)造成的随机翻转,0变成1或者1变成0。这种错误是瞬时发生的,很难复现。hard error或者permanent faults就是题主说的电路损坏或者失效。
先讲soft error,大部分soft error并不会影响结果,比如说某个晶体管临时的位翻转,但是逻辑门的输出不依赖这个晶体管的状态;或者出错的时候时钟正好不在那个状态去用那个值;或者说出现在一个位置,很快被新的值覆盖;或者说那个错误的值不影响软件执行结果。因为种种原因,只有很少的错误会传到到最终用户可见的程度。在处理器架构设计中,还会针对关键电路采用容错机制,检测或者纠正错误,常见的,比如奇偶校验、ECC等。
hard error,是永久性的电路失效,表现形式就是部分电路的输出不变,永远是1或者0。有的器件,会有备份电路,有检测手段可以测试并用备份电路替代坏掉的。另外在实际情况中,损坏的电路并不会每次都被用到,比方说,芯片上有个buffer,其中坏了一个bit,但因为我的实际应用不会把这个buffer用完,也不会用到坏掉的那个bit,于是不会受那个坏掉的bit影响。
硬件也会提供机制向软件报告错误。软件(操作系统)也会有容错机制去处理硬件报告的异常。比如说重试,很可能就不会再出错。出现无法恢复的错误就是变成我们常见的程序崩溃了、kernel panic、死机之类的。
实际上,很多错误并不会影响用户体验,比如某个后台程序报一个错,或者崩溃了;再比如屏幕上某个像素值有一瞬间不对;玩游戏的时候某个NPC走位不对;或者点了下按钮第一下没动... 这些我们都不会直接想到是某个晶体管工作不正常。
有意思的是,统计结果表明,大部分的系统错误或者崩溃是软件bug造成的(数据以后再加上)。

回复 支持 反对

使用道具 举报

5#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
说实话软件的同学们就不要过来强答了好吗? 题主问的是高集成度的芯片会否因为电路问题/物理损害等造成失效,为什么在使用的时候很少见到坏片.



一, 百万门级/千万门级甚至以上的芯片会不会出问题. 答案是肯定会而且所有芯片在刚回片的时候百分之百有问题,区别只在于是否致命以及问题数量多少.

二,为什么我们用的芯片很少看到有问题. 答:因为你用的芯片在正式量产前已经经过数月的debug甚至修改电路重新投片. 而且,你在市场上买到的芯片都是经过ATE筛片确认工作正常的好片. 由于生产或者bug有问题芯片在foundry 生产完就会被筛选出来扔掉. 所以你买到的芯片都是工作正常的芯片.

如果在市场上买到一个不工作的芯片,这属于芯片设计商量产筛片的重大事故. 证明ATE向量失误一般会造成停止生产-》debug问题-〉找到root cause-》验证解决方案-〉重新修改ATE向量-》确认新向量能够正确筛掉坏片并不会对好片造成over kill -〉恢复生产. 其造成的损失可想而知. 所以一般在量产时筛片的向量准确性一般接近百分比(为了不漏筛坏片一般宁杀错不放过,当然有误杀也算是缺陷毕竟增加公司成本.




另外系统跟芯片是两个东西.

功能电路坏了根本系统就起不来更不要说进系统了

保护性电路坏了比如ESD 相关不会影响使用但是影响安全性,也就是说你现在开机可能没问题,然后晚上也许在USB口上不小心碰了一下结果芯片接口被打坏了.

可靠性设计同样不影响功能但是影响寿命, 别人芯片操3年,你的搞不好2个月玩完.

用车举个例子,功能电路是发动机变速箱这些. 有问题你根本跑不起来. 保护性电路是车门防撞杆这类,你没有照样开. 可靠性设计属于做工,是不是用两天天窗就漏雨了刹车就失灵了.至于windows啊这些就是车子的各种辅助娱乐功能. 然而如果发动机都起不来电都没有系统能起的来吗

回复 支持 反对

使用道具 举报

6#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
芯片是有容错的,不是说不出错。intel当年有个著名的bug就是CPU算除法算错的,这不是什么不可能的事。


芯片有错误,或者说bug不是什么大不了的问题,对于复杂的CPU来说有纠错机制,所以你感觉不到他出错了。对于设计出错,比如上面说的除法算错的,可以通过其他逻辑路径来替代当前的逻辑实现同样的功能,只要在编译时做出相应的参数改动就行了。

回复 支持 反对

使用道具 举报

7#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
回答这个问题,还有个目的,看看传言是否真的。
先答,会出问题。
然后说说传闻,年初遇到思科的人说,2017年初华为在北欧遭到巨额索赔,该国的通信网络大量采用华为设备,但在16年底17年初,北欧某国重要场合,出现涉及骨干网络,热点地区等大规模的网络故障,当时并未进行相关设备升级维护。根据事后排查,涉及设备都是华为的。(这部分内容是做实验时听说)
然后华为大规模寻求相关失效分析,询问了多家仪器仪表,测试方案供应商。(这部分是听做方案和设备供应商)
最后,是思科的人说法,说华为的设备没做过24小时全天候实验,在高纬度地区由于大气在极光区域,遇到磁暴等事件导致高能粒子穿透,进入地球表面,影响通信设备。(这部分我去检索了下,的确思科有关于高能粒子实验的论文,华为没有)

回复 支持 反对

使用道具 举报

8#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
少而已……类比编程,就像你写个程序也不仅能编译(仿真),还有一大帮子人做设计规则检查DRC、电路和版图一致性检查LVS、寄生参数提取PEX,可制造性测试DFM还是啥的茫茫多一大票东西,可靠性也会上升很多。另外集成电路也有版本,新版本会把之前发现的BUG Fix掉。

回复 支持 反对

使用道具 举报

9#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
冯·诺伊曼双手过顶,庄严地喊道:“奉圣上御旨,计算机启动!系统自检!”

在金字塔的中部,一排旗手用旗语发出指令,一时间,下面大地上三千万人构成的巨型主板仿佛液化了,充满了细密的粼粼波光,那是几千万面小旗在挥动。在靠近金字塔底部的显示阵列中,一条由无数面绿色大旗构成的进度条在延伸着,标示着自检的进度。十分钟后,进度条走到了头。

“自检完成!引导程序运行!操作系统加载!!”

下面,贯穿人列计算机的系统总线上的轻转兵快速运动起来,总线立刻变成了一条湍急的河流。这河流沿途又分成无数条细小的支流,渗入到各个模块阵列之中。很快,黑白旗的涟漪演化成汹涌的浪潮,激荡在整块主板上。中央的CPU区激荡最为剧烈,像一片燃烧的火药。突然,仿佛火药燃尽,CPU区的扰动渐渐平静下来,最后竟完全静止了,以它为圆心,这静止向各个方向飞快扩散开来,像快速封冻的海面,最后整块主板大部分静止了,其间只有一些零星的死循环在以不变的节奏没有生气地闪动着,显示阵列中出现了闪动的红色。

“系统锁死!”一名信号官高喊。故障原因很快查清,是CPU状态寄存器中的一个门电路运行出错。

“系统重新热启动!”冯·诺伊曼胸有成竹地命令道。

“慢!”牛顿挥手制止了信号官,转身一脸阴毒地对秦始皇说,“陛下,为了系统的稳定运行,对故障率较高的部件应该采取一些维修措施。”

秦始皇拄着长剑说:“更换出错部件,组成那个部件的所有兵卒,斩!以后故障照此办理。”

冯·诺伊曼厌恶地看了牛顿一眼,看着一组利剑出鞘的骑兵冲进主板,“维修”了故障部件后,重新发布了热启动命令。这次启动十分顺利,二十分钟后,三体世界的冯·诺伊曼结构人列计算机在“秦1.0”操作系统下进入运行状态。

——节选自《三体》,内容来自网络。

回复 支持 反对

使用道具 举报

10#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
首先所有芯片都是可能出错的,对于可靠度,iso有专门的标准来衡量.
ASIL-D级别的可靠度是现在大规模量产所达到的最高水平.
这种级别的芯片是用在汽车上.
而这个级别单点故障率要求不超过1%,潜在故障率不超过10%

一号问题答案:

答案是通过系统的冗余及纠错设计,在设计工况下,故障率已经趋近于零了.

而比亚迪的电动公交 ....  嘿嘿嘿嘿嘿  
另外必须注意设计工况,一般芯片直接放卫星上用,肯定要扑街的.
二号问题:

就是问坏了会怎样呗
民用芯片,坏了靠设计预留的纠错能力(通常较小),损坏超过设计预留,电脑就坏了呗.

高安全级别的芯片,则会检测到失效,屏蔽掉坏了的电路,尽量维持正常运转,并报告失效.

显然安全性高了要牺牲性能啊,家用电脑崩了就崩了呗,反正也是小概率了.

回复 支持 反对

使用道具 举报

11#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
隨手回不是很精準不要怪我。
在IC設計裡你可以想像Analog的人在磁磚上雕花,數字的人拿這些磁磚拼成一幅巨大的美術品。在每一個階段其實都需要去做風險掌控。
在類比工程師雕磁磚最重要是燒磁磚的窯工廠(Foundry)的製造力。不要燒破燒壞。因為有許多像溫度 土的黏稠度 雕花的間隙(SPICE Model  / RC extraction / LVS / DRC). 等確保每一塊磁磚都沒問題。
再磁磚還沒燒好前,數字前面就有很多對於我整張圖的構圖合不合理,畫完的成品能不能賣出高價符合市場預期 (Design verification/ Functional check) 等磁磚燒好,就是拼拼樂時間。你就想成構圖佈局放磁磚拉線,這些都還要去用很多極端的條件去確認這畫會不會賣掉非洲或北歐買家裂開來。最後燒窯的也有很多道流程驗證你的作品。
做這麼多就一定不會有事嗎?當然不一定,所以每個芯片收回來還要測試。所以拿到的時候多數都已經千錘百煉。

如果你覺某芯片很爛,多半是它本來就這麼爛。

回复 支持 反对

使用道具 举报

12#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
问题前提不对,这类芯片肯定会出错,从设计到生产都肯定会引入错误,而且数量不会少。如果你知道很多日常使用的芯片里面bug的数量,估计会吓你一跳。这其中很多是厂商知道但没改过来的,一般是权衡了改正的代价和bug的影响后决定的。


对这些问题最常见的就是通过底层软件后期fix。譬如某个加速器有bug,而刚好有个处理器有剩余处理能力,就通过软件/固件实现相同功能。我还遇到过少数情况下编译器也得针对bug进行修改。当然这样一般会导致产品的spec下降,但一般最终用户不会有直接的感觉。


另外现在复杂SoC的顶层设计都会确保单个IP出问题不会影响整个系统,所以对于没法fix的严重bug,可以把对应的模块禁用掉,说不定还能继续卖(类似于Intel的i7->i3)。

回复 支持 反对

使用道具 举报

13#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
不是没有错,是出了错你也几乎感觉不到。。

一方面设计开始就会考虑到良率,做冗余设计,还有通过软件屏蔽的方式禁用一部分异常电路。绝大部分逻辑和时序错误在最初通过仿真,还有流片回来之后的debug都会被消灭。一些不可避免的情况,比如跨时钟域访问(FIFO)就一定会有空翻,程序分支预测也有失败的情况,这种时候就一方面靠工程手段压缩问题发生的概率,另一方面就是将错就错,一次结果不对就多来几次,直到正确为止。。所以对于更高层次的抽象(软件开发),经过这样层层把关,你就几乎感觉不到错误的存在了。

回复 支持 反对

使用道具 举报

14#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
芯片当然也会出错,但是题主的问题不是特别明确,不知道指的是哪种错误,虽然这些错误最后表现可能都是一致的,不通的错误还是有不同的手段来应对的。
具体来说,集成电路从设计到制造到最后的应用大致分成这么三类错误:

  • 逻辑、物理设计错误
  • 制造(工艺环节引起的)错误
  • 由于复杂的应用场合引起的电路误动作(比如高辐射或者电磁干扰等)
对于第一类错误,目前芯片设计环节中最为耗时的步骤应该就算是逻辑验证了。因为硬件不像软件一样可以通过发布新的版本来纠正bug(准确的说是硬件修复成本高,难度大),而且目前最先进的工艺节点流片成本极为高昂,所以硬件设计对逻辑正确的要求可谓严苛,一家设计公司的水平也很大程度上可以从一次性流片成功率上来反应(当然除了逻辑验证之外,芯片设计其他方面方面也有极高的要求,比如物理设计,甚至散热,封装等等都是很大的学问)。在设计环节大量时间(可能高达70%)花在设计各种测试向量,直接的随机的等等,并且利用各种辅助设计工具,比如最基本仿真器对设计的电路进行测试(行话叫bake,可以体会一下);还有使用其他的高速验证平台,比如将电路映射到FPGA上来跑实际的应用,或者使用硬件加速器来跑尽可能多的向量。总之无所不用其极,这也是芯片设计高门槛的原因,越是规模大的电路越不是一般公司可以搞定的。在比较新的工艺节点上,一个逻辑bug的价值可能超过100万美金,在流片前尽可能多的发现问题是至关重要的。通常芯片是否可以流片也是通过衡量bug rate来决定的,比如连续两周发现的bug数量小于某个指标就可以安全流片。设计中通常也会留一些『后门』,一般是一些秘密的寄存器,不会出现在用户手册里面,就是为了万一有问题可以把一些高风险的feature给关掉。
对于第二类错误,芯片出厂前都需要经过严格的测试来筛除那些由于制造过程中引入错误的坏片,这也有好几道关来筛选,一般覆盖率很高,基本上不会有漏网之鱼。芯片在设计过程中一般会加入DFT(Design For Test)电路,这就是专门用来测试芯片生产过程中引入的错误的电路。这种电路可以把芯片置于『测设』状态,跟普通工作模式是不一样的,通常这会带来更高的测试覆盖率和更短的测试时间(测试台的收费是按照秒来计算的),从而降低芯片成本。越早排除坏的芯片付出的代价越低,越到后面越贵,想象一下一台笔记本组装好了结果发现cpu或者gpu有问题,那该是多么尴尬的一件事情。
对于第三类错误,前面Drazi答得很全面了。需要指出的是使用冗余手段和各种安全措施给芯片的成本带来的压力是巨大的,在一般应用场景下的消费类电子产品,基本上其电磁环境是在一个可控的状态的,即使出错大不了就重启一下,所以一般不会如此大动干戈。只有对安全性要求极高的场合,比如汽车上用的芯片,一旦出错就是人命关天的事情,才会不计成本的进行高安全性设计,当然羊毛出在羊身上,最后还是消费者买单。这种安全性要求高的场合通常有自己的认证要求,也有ISO或者行业的标准来指导设计规范;有专门的公司来进行audit,所以安全性是有保障的。
啰哩啰嗦一大堆,题主凑合看一下,知乎首答,如有不合适多多包涵。

回复 支持 反对

使用道具 举报

15#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
跑步前答一下

首先,芯片制造(特别是大规模的芯片比如cpu)一定会出错,概率问题,晶圆厂(制造芯片的工厂)一般把这个称为良率

那么为什么一般消费者不会碰到?原因很简单,一般出问题的芯片都被检测出来丢掉。数字芯片检测一般用到一个叫做DFT(Design for test)的技术,简单来说,就是会插入检测的电路(scan chan),测试的时候输入相应数据(patten),根据输出就能够判断芯片是否有问题。
如果芯片坏了,可能会1 直接丢弃 2屏蔽错误的模块,作为低端产品(cpu很多时候用的就是这种方法)

至于有些回答说的ECC,一般用于存储器(sram/dram等)的校验or纠错,消费品用的比较少,工业级用的稍微多点

当然还有其他方法,比如直接跑程序之类,我就不多说了(其实因为我也不懂,哇哈哈)

回复 支持 反对

使用道具 举报

16#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
1994年6月,英特尔公司刚刚推出其划时代产品一一奔腾处理器。在芯片推出的前几天,英特尔公司的技术人员在做测试的时候发现,奔腾芯片的除法运算会发生某种偏差,这个问题是在90亿次除法运算中才可能出现1次错误。

回复 支持 反对

使用道具 举报

17#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
我感觉好多回答都没有答到点子上。楼主问的是cpu硬件吧,为什么很多人答软件问题呢?

首先芯片投片前会有大量仿真验证工作,相信我,一款芯片专门从事仿真工作的人会有4-10个左右,大型处理器芯片可能更多,他们会随着芯片设计进展用半年时间仿真芯片的绝大多数功能用例,尽最大可能避免设计错误。

之后芯片制造出来,还在晶圆上没被切割,就会进行一轮测试,称为cp测试,这轮测试会覆盖99%以上的数字逻辑和一定比例的模拟器件,大概有十分之一左右的芯片在此阶段被淘汰。还没出晶圆厂就被抛弃了。

合格的芯片会被送去封装场封装成我们常见的cpu的样子。然后送去测试场,进行ate机台测试,处理器芯片大概每块芯片要经历一到三分钟测试,包括数字逻辑,memory,各种模拟ip,io等等,整体覆盖99%以上。一般测试频率最低在40m左右,也就是25ns周期的时钟,你可以想象一下一分钟测试时间能跑多少东西。另外还会跑shmoo,就是吧频率,电压拉偏,要求芯片有一个较大的工作区间,不符合的芯片全扔了。这部分工作根据不同工艺,干掉的比例不同,比较先进的16nm大概会干掉30%左右。

你以为这就完了?早着呢,每一个批次的芯片,都会进行char测试,就是看一下正常工作边界,还有老化测试,就是连续运行几百小时再测,一旦这两个测试出现异常,那么对不起这个批次的芯片全等着不能出厂,等定位出异常原因再说。

然后芯片会到达设计方和产品方,设计方会在单板上运行功能用例,覆盖重点逻辑。产品方会进行装备测试,覆盖重点功能。所有一切都合格了,这颗芯片才会装到产品上面,产品组装完成出厂前还会进行一系列测试才能发货到达你的手上!

这么一系列工作下来,一颗芯片过五关斩六将才能上市,怎么可能随随便便坏了呢?

回复 支持 反对

使用道具 举报

18#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
@Drazi 以及 @王玮琦 的答案非常详细啊。


想补充的一点是针对容错的策略方面的。事实上,并不是电路中的所有部分,都需要进行容错设计和保护,因为针对超大规模集成电路中发生的大部分错误,系统和软件的态度基本上都是:“主不在乎”


关于哪些部分的错误可以被忽略,而哪些部分特别重要,一定要设置容错机制,上个世纪就提了一个指标叫做体系结构脆弱因子(AVF)的指标:


引用来源:中科院博士学位论文:基于脆弱因子的微处理器体系结构级可靠性分析与优化


事实上,对于那些并不重要的部分,我们甚至还是很鼓励随便算一算甚至是爱算不算的,这就涉及到用精度来换性能的近似计算问题了。

回复 支持 反对

使用道具 举报

19#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
同一个晶圆上由于ocv和其他原因肯定会出现良率问题,为了尽可能减少这种情况就有drc和lvs检查以及其他的,严格按照design rule设计会保证一定的良率。还有就是不合格的芯片出厂就废弃了,合格但是性能不合适的,通过锁频之类的措施,就是i7 i5  i3啦

回复 支持 反对

使用道具 举报

20#
发表于 2017-11-18 13:15:51 | 只看该作者 来自: LAN 来自 LAN
我来跑个题
3DS的ARM11 CPU在启动bootloader时的校验有一个bug,而这个bug促成了A9和B9自制固件的诞生
由于可能牵扯到D版方面的讨论,我还是匿了比较好……

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长提醒 上一条 /1 下一条

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图


芯片搜索

快速回复