CPU 的 Bug 真能用软件修补?盘点 CPU 爆过的那些大 Bug

转载 2018年01月08日 00:00:00

(点击上方公众号,可快速关注)


转自:PConline - Aimo

pcedu.pconline.com.cn/1064/10641944_all.html


一、奔腾/酷睿的著名Bug


最近,CPU大规模爆出安全漏洞的消息闹得人心惶惶。消息显示,英特尔等CPU中存在严重的安全漏洞,这些漏洞会导致内核内存数据泄漏,身份验证、密码之类的数据都有通过漏洞泄漏的可能。其中,英特尔受影响最大,Meltdown这个最严重的漏洞只在英特尔CPU上攻击成功;而ARM和AMD虽然也受Spectre漏洞影响,但程度较轻,AMD几乎免疫。


640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


CPU 出 Bug 该怎么修?


这次CPU爆出的大Bug影响深远,各大OS都已经行动起来,推出相应的补丁填补安全漏洞。但是,CPU的Bug真的可以通过软件修补吗?修补后会不会有什么代价?现在有消息显示,英特尔CPU打补丁后性能甚至会下降5%~30%。这性能损失是必须的吗?其实,这并不是CPU第一次爆出Bug,业界也并不是第一次处理CPU出现Bug这种问题。那么之前CPU爆出Bug后是如何处理的呢?我们这就来回顾一下吧。


奔腾FDIV Bug


这次的CPU的大Bug主要影响英特尔CPU,所以就先来说说英特尔CPU爆出过的Bug吧。奔腾FDIV Bug是在1994年发现的,它存在于早期的奔腾处理器当中。这个Bug影响的是CPU的浮点单元(FPU),它会导致一些运算出现错误,例如计算除法的时候得到一个错误的结果。根据英特尔的说法,这是一个普通用户极少会遇见的Bug,普通用户甚至每27000年才会遇到一次。


0?wx_fmt=png

尽管如此,奔腾FDIV Bug仍是一个不折不扣的缺陷,而且英特尔对该Bug最初并不重视,只决定为部分已经证明受影响的用户更换CPU。但是,这引起了用户的不满,毕竟相关产品都卖了一年了,影响的范围可不小。在用户以及竞争对手的压力下(IBM等公司也参与了推波助澜),英特尔在1994年的12月宣布召回了受影响的CPU,一些存在缺陷的CPU还被官方做成了钥匙扣。


显然,奔腾FDIV Bug并不能通过软件的方法修补,为了解决问题,英特尔召回的成本甚至高达4.75亿美元,结合通货膨胀率,这大致相当于现在的7.88亿美元。


奔腾F00F bug


这是一个在1997年发现的CPU Bug,影响了奔腾MMX和奔腾OverDrive处理器等基于P5微架构的CPU。这个Bug会导致电脑出现死机之类的情况,需要重启才能继续使用电脑。这也是一个影响深远的Bug,以至于现在很多硬件设计的缺陷都用F00F来命名。


0?wx_fmt=png
奔腾OverDrive等处理器会遇到这个Bug


英特尔通过更新处理器的步进修复了奔腾F00F bug,B2步进已经解决了相关的问题。不过对于之前出现错误的CPU,也可以通过操作系统的更新来修复,因此这是一个可以通过软件修复的CPU Bug。


Broadwell MCE Bug


这是一个出现在英特尔Broadwell也就是第五代酷睿I系列CPU上的问题。不少用户发现,Broadwell处理器时不时会出现蓝屏死机,系统报错是MCE( Machine Check Exception,机器异常检查)。这个问题是有SpeedStep节能技术导致的,关闭了SpeedStep后,问题就不会出现。


0?wx_fmt=jpeg
MCE Bug会导致蓝屏报错


当然,就算可以关闭SpeedStep来避免Bug,用户也不会当是没事发生过,而且某些设备例如笔记本、平板电脑关闭了节能技术的话,会发热、能耗大增,甚至已经影响正常使用了。英特尔通过微码更新来修复了这一问题,只要更新BIOS,Broadwell MCE Bug就能够得到修复,因此这也是一个可以通过软件更新来解决的CPU Bug。


二、这次的CPU大Bug是怎么回事?


英特尔 ME 漏洞


这是一个前不久被广泛报道的CPU Bug。在2008年后,英特尔在CPU中内置了一个低功耗子系统 Management Engine也就是ME。ME可以协助专业人员远程管理计算机,深受企业用户欢迎。不过,这个ME系统却爆出了问题,它原本设计用于远程维护,但由于存在漏洞反倒让黑客有可能通过ME后门进而控制计算机。


0?wx_fmt=jpeg
英特尔2008年后的CPU带有一个“微系统”ME,ME爆出漏洞可致使黑客入侵


英特尔ME漏洞引起来广泛关注,毕竟ME的权限之高令人侧目,而且该漏洞存在了近十年,影响之深、涉及之广自然不言而喻。英特尔很快就公布了相应的修复方法,释放了相应的代码,用户可以通过更新主板BIOS、操作系统和相应的软件、驱动来修复ME相关的漏洞。通过软件就能修复这个CPU漏洞,也算是不幸中的大幸吧。


Meltdown 和 Spectre 漏洞


这就是这几天闹得人心惶惶的CPU大Bug。消息显示,以英特尔处理器为代表的现代CPU中,存在可以导致数据泄漏的大漏洞。这两类主要的漏洞被命名为Meltdown(熔断)和Spectre(幽灵),其中Meltdown漏洞会导致某些代码越过权限访问任意内存地址,直击敏感数据,这主要影响英特尔CPU;而Spectre漏洞机理不同,但作用类似,同时几乎影响所有的处理器,英特尔、ARM和AMD均不能幸免。不过和Meltdown漏洞相比,利用Spectre漏洞进行攻击的难度更高,漏洞带来的风险要更低。


0?wx_fmt=jpeg
最近爆出的Meltdown(熔断)和Spectre(幽灵)CPU漏洞,非常严重


该如何修复这次爆出的漏洞,其实业界也有了对策。这次的漏洞无法通过微码修复,需要OS层面的更新,但如果修复Meltdown漏洞的话,则会造成性能损失,英特尔处理器打了PTI补丁后,性能会有5%~30%的降幅,某些特定的应用甚至会下降50%的性能。而AMD则不受Meltdown漏洞影响,如果是修复Spectre漏洞的话,并不会造成性能损失。ARM主要也是受Spectre漏洞影响,少部分受Meltdown漏洞影响,目前Android已经发布了修复补丁,但性能影响还不得而知。


0?wx_fmt=jpeg

AMD受影响较轻,表中一、二是利用Spectre的方法,三是利用Meltdown的方法

毫无疑问,英特尔是这次漏洞的最大受害者,同时受到了Meltdown和Spectre漏洞影响,就算用软件修补了漏洞,性能也会打折。要完美修复这些CPU Bug,还是得靠后续产品来解决问题了。


三、AMD 出过的 CPU Bug


Phenom TLC Bug


说了这么多和英特尔相关的CPU Bug,再来说说AMD的吧。AMD的第一代Phenom(羿龙)处理器被赋予了迎击Intel酷睿处理器的重任,首次使用了三级缓存的设计,一度让A饭们寄予厚望。然而不幸的是,率先登场的B2步进的Phenom竟然存在TLB的Bug。TLB是用来连接内存和CPU缓存的桥梁,在有Bug的Phenom处理器中,TLB会导致CPU读取页表出现错误,出现死机等情况。出了Bug后,AMD就提供了软件方案来解决问题。


0?wx_fmt=jpeg
AMD通过系统补丁及BIOS的方法避开了这个硬件Bug,但会造成性能下降


AMD发布了一个新BIOS,也为Win系统提供了一个补丁,无论是那种方法,其作用都是屏蔽某段页表乃至CPU缓存。这当然可以避免Bug的出现,不过也会造成性能降低。可以说,这个软件修复的方案只是权宜之计,其实并不完美。此后AMD推出了B3步进的Phenom处理器,从硬件上修改,才彻底解决了问题,步进改动后的CPU还从9X00改名为9X50,可见此次修补之重要。


Ryzen segfault Bug


这是一个存在于AMD锐龙Ryzen处理器当中的Bug。AMD在去年凭借Ryzen处理器一鸣惊人,终于得以重返高性能处理器市场。不过,在B1步进的Ryzen处理器当中,却存在一个Bug,具体情况是在Linux系统下并行编译时会出现segfault错误。Ryzen CPU的一大卖点就是以超高性价比提供强大的多线程能力,但并行编译时却会出错,还是令很多用户感觉掉进坑里的。


0?wx_fmt=png
如果遇到了segfault问题,可以走售后换CPU


AMD解决这个问题的方法是走售后,你可以走RMA售后流程,申请更换全新的已经修复了问题的Ryzen处理器,软件更新并不能彻底解决问题。


总结


上文提到的是一些影响比较大的CPU出Bug事件,别看CPU正常使用基本不会坏,实际上CPU出Bug是很正常的事情,厂商们之所以为CPU更新步进,很大程度上也是为了修复Bug。只不过大部分的CPU Bug对日常使用影响都比较轻微,大家未曾察觉罢了。


CPU出Bug是很常见的,遇到严重的Bug,关键还是看厂商如何解决。如果能用软件把坑填上,那自然最好不过;而遇到一些软件也难以修复的坑,最后还是需要走售后退换。作为普通消费者,要时刻保持软件更新,并留意厂商的公告,这样才能把CPU Bug的负面影响降到最低。





java nio的一个严重BUG

这个BUG会在linux上导致cpu 100%,使得nio server/client不可用,具体的详情可以看这里http://bugs.sun.com/bugdatabase/view_bug.do...
  • huoyunshen88
  • huoyunshen88
  • 2015年05月12日 17:22
  • 2601

【Netty基础】Netty的高性能及NIO的epoll空轮询bug

Selector BUG出现的原因若Selector的轮询结果为空,也没有wakeup或新消息处理,则发生空轮询,CPU使用率100%,Netty的解决办法 对Selector的select操作周期进...
  • baiye_xing
  • baiye_xing
  • 2017年06月17日 10:08
  • 3662

常用的五大bug管理工具的优缺点和下载地址

1、 QC(Quality Center) 是原Mercury Interactive公司(现已被HP收购)生产的企业级基于WEB测试管理工具,需要安装配置IIS和数据库,系统资源消耗比较大;功能很强...
  • qq_33336155
  • qq_33336155
  • 2016年11月24日 16:29
  • 7755

CPU 的 Bug 真能用软件修补?盘点 CPU 爆过的那些大 Bug

转自:PConline - Aimopcedu.pconline.com.cn/1064/10641944_all.html一、奔腾/酷睿的著名Bug最近,CPU大规模爆出安全漏洞的消息闹得人心惶惶。...
  • tTU1EvLDeLFq5btqiK
  • tTU1EvLDeLFq5btqiK
  • 2018年01月09日 00:00
  • 26

CPU Bug与Linux Kernel

  • 2008年01月02日 08:01
  • 184KB
  • 下载

记一次调bug的过程:windows下查找java应用程序CPU与内存过高

最近写了一个多线程程序,并发量峰值有五六千,甚至八九千个线程。经过几番调试,程序终于能够正常运行起来了,而实际上“正常运行”的背后却是“暗藏玄机”。在程序运行4、5个小时之后,会发现电脑机箱非常热,风...
  • p312011150
  • p312011150
  • 2018年01月10日 17:41
  • 11

记一次调bug的过程:windows下查找java应用程序CPU与内存过高

windows下查找java应用程序CPU与内存过高
  • ggGavin
  • ggGavin
  • 2016年09月07日 12:57
  • 1551

Java nio的一个严重BUG,导致cpu 100%

这个BUG会在Linux上导致cpu 100%,使得nio server/client不可用,具体的详情可以看这里http://bugs.sun.com/bugdatabase/view_bug.do...
  • zhouhao88410234
  • zhouhao88410234
  • 2017年07月25日 09:17
  • 616

解决类似 BUG: soft lockup - CPU#2 stuck for 67s! 问题的思路

编写内核程序,出现soft lockup错误是再常见不过了,类似BUG: soft lockup - CPU#2 stuck for 67s!。 刚开始调试内核时,出现这样的错误,往往两眼一抹黑,不...
  • wujiangguizhen
  • wujiangguizhen
  • 2014年07月03日 00:54
  • 15019

Linux Kernel BUG:soft lockup CPU

Linux Kernel BUG:soft lockup CPU 1.线上内核bug日志 kernel: Deltaway too big! 18428729675200069867 ts=184...
  • u010732250
  • u010732250
  • 2015年01月31日 14:54
  • 8542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CPU 的 Bug 真能用软件修补?盘点 CPU 爆过的那些大 Bug
举报原因:
原因补充:

(最多只允许输入30个字)