最近, CPU大规模爆出安全漏洞的消息闹得人心惶惶. 消息显示, 英特尔等CPU中存在严重的安全漏洞, 这些漏洞会导致内核内存数据泄漏, 身份验证, 密码之类的数据都有通过漏洞泄漏的可能.
其中, 英特尔受影响最大, Meltdown这个最严重的漏洞只在英特尔CPU上攻击成功; 而ARM和AMD虽然也受Spectre漏洞影响, 但程度较轻, AMD几乎免疫.
这次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来命名.
英特尔通过更新处理器的步进修复了奔腾F00F bug, B2步进已经解决了相关的问题. 不过对于之前出现错误的CPU, 也可以通过操作系统的更新来修复, 因此这是一个可以通过软件修复的CPU Bug.
Broadwell MCE Bug
这是一个出现在英特尔Broadwell也就是第五代酷睿I系列CPU上的问题. 不少用户发现, Broadwell处理器时不时会出现蓝屏死机, 系统报错是MCE ( Machine Check Exception, 机器异常检查) . 这个问题是有SpeedStep节能技术导致的, 关闭了SpeedStep后, 问题就不会出现.
错
当然, 就算可以关闭SpeedStep来避免Bug, 用户也不会当是没事发生过, 而且某些设备例如笔记本, 平板电脑关闭了节能技术的话, 会发热, 能耗大增, 甚至已经影响正常使用了.
英特尔通过微码更新来修复了这一问题, 只要更新BIOS, Broadwell MCE 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, 还是得靠后续产品来解决问题了.
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的负面影响降到最低.