微軟近期推送了Windows 10的最新更新,包含一項重要更改。Windows 10KB4482887(Build 17763.348)在某些裝置上為Windows 10版本1809引入了“Retpoline”修復補丁方案,並計劃將該補丁方案推廣到更多裝置。
早在2018年,當發現Meltdown(熔燬)和Spectre(幽靈)漏洞時,微軟和其他科技巨頭推出了軟體更新來解決這些漏洞。雖然補丁解決了這些漏洞,但該報告顯示可能會降低效能,範圍在5%到30%之間。
為了解決效能問題,谷歌為Spectre Variant 2開發了名為“Retpoline”的修復方案。Retpoline方案的實現旨在提高各種平臺(包括Linux和Windows)中SpectreVariant 2的效能。
Retpoline
Retpoline修補方案的作者是 谷歌基礎設施技術部門的高階工程師Paul Turner,而在谷歌公司內部,他們已經將這種技巧應用於私有資料中心的Linux 伺服器,只造成微小的效能損耗。
Retpoline 是一個軟體結構,可以讓間接分支從推測執行中分離出來,應用在保護敏感二進位制檔案(作業系統和管理程式),避免分支目標註入對間接分支造成的影響。
Retpoline 的名字源自於“迴歸”(return)和“trampoline”(蹦床),這意味著這是一個使用返回操作進行來回反彈的結構,形象地表現出在需要保護的內容中,相關的推測執行是通過“無休止地”反彈而避免被窺探到。
Retpoline建立了類似於實際程式碼中永遠不會呼叫的無限迴圈之類的東西,這可以阻止 CPU 進入推測執行環節。開發人員可以在他們的應用程式二進位制程式碼中應用 Retpoline技巧,防止他們的應用程式講記憶體資訊暴露給Spectre攻擊。這也可以應用在作業系統核心中,系統程式、庫和其他軟體如有需要,也可以新增。
微軟工程師也發現這種方法很有效果,於是微軟去年開始將Retpoline整合到Windows系統中。
Retpoline實施是一件大事。對於大多數Windows 10裝置,Retpoline和微軟自己的核心修改都降低了效能。
微軟最初表示,Retpoline將與Windows 10 19H1版本一起整合到Windows中,該版本將於2019年4月推出。但似乎微軟還計劃將此更新推送給舊版本Windows 10上,從Windows 10更新十月版開始。
在Windows 10 KB4482887更新日誌中,微軟指出,“在某些裝置上”啟用Retpoline可以提高Spectrevariant 2降低的效能。
通過最新的更新,微軟已經向後移植了支援Retpoline所需的作業系統級修改。在接下來的幾個月中,微軟將開始通過更多裝置上的雲配置啟用該功能。
在另一篇部落格文章中,微軟指出Retpoline目前在Windows 10客戶端生產裝置上被禁用。但是,微軟表示它將在未來幾個月內推出該功能。
這種變化對效能的影響各不相同。例如,它可以將Broadwell CPU上的Office應用程式啟動時間加速多達25%。
事情並非如此簡單,微軟計劃在未來幾個月內在更多執行Windows 10更新十月版的裝置上啟用Retpoline。值得注意的是,Retopoline預設也將在Windows 10 19H1版本中啟用,並於2019年4月推出。
參考來源:
更多資訊: