Intel 出產 Hyper-threading CPU 十多年,由最早期在 Xeon CPU 開始發行,到現在的 i3/5/7 等型號,一直都相當穩定。不過日前 Intel 的文件指出 Skylake 及 Kaby Lake CPU 有嚴重的 Hyper-Threading 缺陷,可導致系統不穩定。Hyper-Therading 技術可讓 CPU 由原本只能處理單一執行緒,變成可同時執行兩個執行緒,就像把一顆實體 CPU 模擬成兩顆 CPU,令電腦同時間可進行更多工作。Intel 以往都花了不少心機宣傳 Hyper-Threading,令它較為人所知,如今卻出現如此嚴重漏洞,令人大跌眼鏡。
此 Hyper-Threading 缺陷從 Linux 組織 Debian 的電郵洩露出來,受影響的 Skylake 及 Kaby Lake CPU 型號眾多,包括桌上電腦系列、高階超頻系列、嵌入式及流動裝置系列、伺服器級 Xeon v5 及 v6、和一些 Pentium 型號等。這個問題可引致應用程式及系統的不尋常行為、資料出錯、資料遺失甚至是突然死機等。不單只 Linux,只要是使用 Skylake 或 Kaby Lake 的 CPU,任何一個 OS 都有機會中招。Skylake 及 Kaby Lake 是 Intel 最新第六和第七代 CPU,在這兩年內買的裝置通常都是用這兩個系列,可見波及範圍不小。
以下為 Intel 在文件中對 Hyper-Threading 缺陷的描述:
Errata: SKZ7/SKW144/SKL150/SKX150/SKZ7/KBL095/KBW095 Short Loops Which Use AH/BH/CH/DH Registers May Cause Unpredictable System Behavior.
Problem: Under complex micro-architectural conditions, short loops of less than 64 instructions that use AH, BH, CH or DH registers as well as their corresponding wider register (e.g. RAX, EAX or AX for AH) may cause unpredictable system behavior. This can only happen when both logical processors on the same physical processor are active.
Implication: Due to this erratum, the system may experience unpredictable system behavior.
報告建議用戶先分辨自己的 CPU 是否 Skylake 或 Kaby Lake 系列( Intel 官網 Skylake 及 Kaby Lake 型號表),看看是否有 Hyper-Threading 功能。解決方法有兩個:最直接了當就是在 BIOS 關掉 Hyper-Threading,其次就是檢查主機板廠商有沒有 UEFI 更新。Intel 已就此問題發表更正碼,但要廠商把更正碼嵌入主機版 UEFI BIOS 才可用到。不過相比等待廠商更新,或轉用 AMD 電腦,似乎在 BIOS 手動關掉 Hyper-Threading 最為簡單快捷。