CPU基準測試變慢了?那可能是英特爾微碼更新禁用了零存儲優化
Travis Downs在一篇新文章中指出,某件原以為可以給CPU提速的事情,最終被證實反而拖了處理器的後腿。在基於英特爾Skylake和Ice Lake芯片的基準測試平台上,他嘗試了用0來填充給定大小(於x軸上變化)區域的吞吐量。可即便是相同的二進製文件,其在不同日期的基準測試成績卻顯現了較大的差異。
據悉,兩次測試分別發生於6 月7 / 8 號(週二/ 週三),但前一次用零填充的表現、較後一次跑同樣的基準測試要快得多,讓人不得不懷疑是L2 緩存策略要背鍋。
Travis Downs指出,兩套主機運行的是Ubuntu 20.24 Linux發行版,而6月8號(週三)那天恰好迎來了英特爾微碼的操作系統更新。CPU會在系統重啟後加載新版微碼,結果就出現了這種詭異的現象。
Skylake 平台- 跑分對比
仔細查看後可知,該微碼禁用了Travis Downs在上一篇文章中討論過的“硬件零存儲優化”功能,以緩解CVE-2020-24512安全漏洞(英特爾在INTEL-SA-00464安全公告中有詳細解釋)。
雖然英特爾明面上沒有提及,但微碼禁用了零存儲優化這件事的證據還是鋪天蓋地。更新後,填充零數據時的性能,已經變得和其它值相同了。
Ice Lake 平台- 跑分對比
追踪CPU L2 緩存的性能計數器表明,零存儲優化有重要作用的Silent Evictions 操作,現幾乎都是non-silent 了。
考慮到大多數Linux發行版和Windows操作系統都會默認啟用相關更新,Travis Downs建議有疑惑的朋友也嘗試重現一下對比跑分。