最近, 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的負面影響降到最低.