一、奔腾/酷睿的著名Bug
最近,CPU大规模爆出安全漏洞的消息闹得人心惶惶。消息显示,英特尔等CPU中存在严重的安全漏洞,这些漏洞会导致内核内存数据泄漏,身份验证、密码之类的数据都有通过漏洞泄漏的可能。其中,英特尔受影响最大,Meltdown这个最严重的漏洞只在英特尔CPU上攻击成功;而ARM和AMD虽然也受Spectre漏洞影响,但程度较轻,AMD几乎免疫。
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年才会遇到一次。
尽管如此,奔腾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来命名。
奔腾OverDrive等处理器会遇到这个Bug
英特尔通过更新处理器的步进修复了奔腾F00F bug,B2步进已经解决了相关的问题。不过对于之前出现错误的CPU,也可以通过操作系统的更新来修复,因此这是一个可以通过软件修复的CPU Bug。
Broadwell MCE Bug
这是一个出现在英特尔Broadwell也就是第五代酷睿I系列CPU上的问题。不少用户发现,Broadwell处理器时不时会出现蓝屏死机,系统报错是MCE( Machine Check Exception,机器异常检查)。这个问题是有SpeedStep节能技术导致的,关闭了SpeedStep后,问题就不会出现。
MCE Bug会导致蓝屏报错
当然,就算可以关闭SpeedStep来避免Bug,用户也不会当是没事发生过,而且某些设备例如笔记本、平板电脑关闭了节能技术的话,会发热、能耗大增,甚至已经影响正常使用了。英特尔通过微码更新来修复了这一问题,只要更新BIOS,Broadwell MCE Bug就能够得到修复,因此这也是一个可以通过软件更新来解决的CPU Bug。
二、这次的CPU大Bug是怎么回事?
英特尔 ME 漏洞
这是一个前不久被广泛报道的CPU Bug。在2008年后,英特尔在CPU中内置了一个低功耗子系统 Management Engine也就是ME。ME可以协助专业人员远程管理计算机,深受企业用户欢迎。不过,这个ME系统却爆出了问题,它原本设计用于远程维护,但由于存在漏洞反倒让黑客有可能通过ME后门进而控制计算机。
英特尔2008年后的CPU带有一个“微系统”ME,ME爆出漏洞可致使黑客入侵
英特尔ME漏洞引起来广泛关注,毕竟ME的权限之高令人侧目,而且该漏洞存在了近十年,影响之深、涉及之广自然不言而喻。英特尔很快就公布了相应的修复方法,释放了相应的代码,用户可以通过更新主板BIOS、操作系统和相应的软件、驱动来修复ME相关的漏洞。通过软件就能修复这个CPU漏洞,也算是不幸中的大幸吧。
Meltdown 和 Spectre 漏洞
这就是这几天闹得人心惶惶的CPU大Bug。消息显示,以英特尔处理器为代表的现代CPU中,存在可以导致数据泄漏的大漏洞。这两类主要的漏洞被命名为Meltdown(熔断)和Spectre(幽灵),其中Meltdown漏洞会导致某些代码越过权限访问任意内存地址,直击敏感数据,这主要影响英特尔CPU;而Spectre漏洞机理不同,但作用类似,同时几乎影响所有的处理器,英特尔、ARM和AMD均不能幸免。不过和Meltdown漏洞相比,利用Spectre漏洞进行攻击的难度更高,漏洞带来的风险要更低。
最近爆出的Meltdown(熔断)和Spectre(幽灵)CPU漏洞,非常严重
该如何修复这次爆出的漏洞,其实业界也有了对策。这次的漏洞无法通过微码修复,需要OS层面的更新,但如果修复Meltdown漏洞的话,则会造成性能损失,英特尔处理器打了PTI补丁后,性能会有5%~30%的降幅,某些特定的应用甚至会下降50%的性能。而AMD则不受Meltdown漏洞影响,如果是修复Spectre漏洞的话,并不会造成性能损失。ARM主要也是受Spectre漏洞影响,少部分受Meltdown漏洞影响,目前Android已经发布了修复补丁,但性能影响还不得而知。
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就提供了软件方案来解决问题。
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的一大卖点就是以超高性价比提供强大的多线程能力,但并行编译时却会出错,还是令很多用户感觉掉进坑里的。
如果遇到了segfault问题,可以走售后换CPU
AMD解决这个问题的方法是走售后,你可以走RMA售后流程,申请更换全新的已经修复了问题的Ryzen处理器,软件更新并不能彻底解决问题。
总结
上文提到的是一些影响比较大的CPU出Bug事件,别看CPU正常使用基本不会坏,实际上CPU出Bug是很正常的事情,厂商们之所以为CPU更新步进,很大程度上也是为了修复Bug。只不过大部分的CPU Bug对日常使用影响都比较轻微,大家未曾察觉罢了。
CPU出Bug是很常见的,遇到严重的Bug,关键还是看厂商如何解决。如果能用软件把坑填上,那自然最好不过;而遇到一些软件也难以修复的坑,最后还是需要走售后退换。作为普通消费者,要时刻保持软件更新,并留意厂商的公告,这样才能把CPU Bug的负面影响降到最低。