英特尔Skylake/Kaby Lake处理器发现超线程Bug,可能导致数据丢失

上周末(6月25日),Debian 开发者在邮件列表上向用户发出警告,英特尔第六代和第七代 Core 处理器(桌面、移动和服务器版的 Skylake/Kaby Lake 和部分奔腾处理器)在启用超线程时发现存在一个处理器/微码缺陷。该缺陷会导致无法预料的操作系统行为,如应用程序崩溃或数据丢失。应对的权宜之计是关闭超线程,或更新处理器微码。该缺陷不只是影响 Debian 操作系统,可能会影响所有使用上述处理器的操作系统。

HT超线程是 Intel 推出的一种解决物理多核与多线程的技术,可以让一个物理核心模拟出两个线程,它也是 Intel 区分高端、低端处理器的指标,在 Core i7 及 Core i9 处理器上是必备技术。不过Linux Debian 团队日前发出警告,指出 Intel Skylake、Kaby Lake 处理器的 HT 超线程有Bug,建议大家立即禁用HT超线程,等待 Intel 升级 BIOS、微代码等。

他们从去年就开始调查这个问题,一旦触发了错误,它可能会导致系统被锁定、数据错误或者丢失。

具体来说,就是当循环体少于64条指令的段循环中,若同时使用了处理器的AH、BH、CH、DH四个寄存器和他们对应的扩展寄存器(如AH对应的RAX、EAX、AX),会导致系统出现不可预料的行为。以上BUG只会在同一个核心的两个虚拟核心同时工作时被触发。

受影响的产品主要是 6、7 代酷睿处理器,也就是 Skylake、Kaby Lake 这两代的,包括桌面版、移动版、嵌入式版以及 Xeon v5、v6 系列,还有部分奔腾处理器,只要支持 HT 超线程的处理器都会受影响。虽然是 Linux 社区发现的问题,但它影响的不只是 Linux 系统,Windows 系统也会中招。

修复方式:

Kaby Lake—向主板或OEM厂商索要最新的BIOS/UEFI更新;同时关闭同步多线程。

Skylake——shell命令“grep -E 'model|stepping' /proc/cpuinfo | sort -u”,如果输出结果有78/94,且步进为3,请更新7月17日的新系统,该内核(20170511)打包了最新microcode;如果输出结果非上述所显,请关闭同步多线程,知道BIOS/UEFI更新。

我是不必惊慌的分隔线

这事听上去虽然很严重,但个人用户也别着急——处理器芯片十分复杂,有各种各样的 bug 很正常,有兴趣的搜索下 Intel 的处理器勘误表,列出的 bug 能吓死人,但是绝大部分都不常见。现在这个 HT 超线程的问题听着很严重,但这么久了也没爆出大新闻,说明这个 Bug 并不容易重现,因此立即关掉 HT 超线程的建议有点夸张。

不过检查主板的 BIOS、微代码升级还是值得推荐的,这两个处理器都比较新,100、200 系主板是主板厂商的主力,更新、支持还不到停止的时候,升级最新 BIOS、微代码有可能解决部分问题。

参考来源:Solidot, 超能网,cnBeta等

近期文章

返回搜狐,查看更多