2018年初曝光的Meltdown與Spectre漏洞已經發展出6個變種,幾乎所有的CPU爲了修補這些漏洞,不得不承受性能降低的影響。除了等待未來從硬件基礎上完全免疫的新CPU之外,微軟還給大家帶來一個免費福利,大家的電腦性能有望回血。

  上圖中右側的小幽靈就是Spectre漏洞的標誌,它手中的小樹枝代表着該漏洞攻擊的目標——CPU的分支預測機制。

  現代CPU爲了提升性能,會使用分支預測來提高程序執行效率,但分支預測也帶來了側信道攻擊的可能。包括英特爾、AMD和很多ARM架構的處理器都面臨同樣的Spectre漏洞。爲了防禦針對漏洞的攻擊,補丁程序不得不讓CPU每次進入內核模式時清空部分CPU緩存區域,從而導致性能下滑。

  涉及大量用戶態與內核態切換的程序受到的性能影響最大。作爲漏洞的發現者,谷歌提出了名爲RETPOLINE的編程技巧,可將Spectre漏洞補丁帶來的性能影響降至最低。下圖中瞎眼的幽靈,即代表可阻止惡意程序利用漏洞偷窺數據的補丁機制。

  這一方法早已被谷歌應用在自家數據中心當中,微軟跟進之後的成果就是在最新Windows10 19H1預覽版中開啓了RETPOLINE,號稱可以將漏洞補丁帶來的性能影響降低到“背景噪聲”級別的可忽略水平。新系統的效果真的有那麼好嗎?存儲極客還是利用固態硬盤性能測試來驗證這一點。下圖是存儲極客用來測試的固態硬盤——東芝TR200。

  固態硬盤隨機讀寫指令的每一步都涉及到CPU在用戶態和內核態的切換,因而是最能體現漏洞補丁對CPU性能影響的方式。存儲極客選擇東芝TR200作爲測試對象,一方面是因爲它作爲原廠固態硬盤的性能表現穩定,另一方面它的東芝TC58NC1010GSB主控還具備獨特的數據壓縮特性,在日常使用中能夠提升實用性能,在這裏則能夠最大化體現CPU性能變化。

  我們日常的固態硬盤測試,其實不僅僅是對硬盤性能的檢驗,軟件發出的隨機讀寫指令同時也是對CPU效能的認證。如果CPU發出指令的效率不夠高,體現在SSD測試分數中就是較低的隨機讀寫帶寬或IOPS數值。

  使用All 0 Fill數據模型進行測試,通過CrystalDiskMark成績可以非常清楚的看到RETPOLINE對性能的提升和改善效果,4K隨機讀寫帶寬提升意味着CPU進出內核態發送IO指令的效率提升了,Spectre漏洞補丁對性能的損害幅度縮小。

  不過如果跟完全關閉Spectre漏洞補丁的性能相比,RETPOLINE算法也並沒有將影響降低至可忽略“背景噪聲“的水平。下圖是禁用全部CPU漏洞補丁後的東芝TR200 240G固態硬盤測速:單線程4K隨機讀取性能比打補丁後高18.3%。

  不過不管怎麼說,這已經是一個不錯的進步,重要的是微軟免費送出的CPU提速福利,在極端條件下這個最新的測試版系統相比現在大家正在使用的正式版1809系統快出20%以上。不出意外的話大家在明年4月份發佈的下一個春季正式版更新當中就能體會到。

  要徹底消除CPU漏洞補丁帶來的不利性能影響,還需要寄望於英特爾和AMD能修改硬件底層涉及,從根本上消除這些漏洞。目前剛剛上市的第九代酷睿僅僅能免疫2個Meltdown變種,其他4個變種依然需要靠影響性能的固件或軟件方式加固防禦。

查看原文 >>
相關文章