CPU基準測試變慢了?那可能是英特爾微碼更新禁用了零存儲優化

Travis Downs 在一篇新文章中指出,某件原以為可以給 CPU 提速的事情,最終被證實反而拖了處理器的後腿。在基於英特爾 Skylake 和 Ice Lake 芯片的基準測試平台上,他嘗試了用 0 來填充給定大小(於 x 軸上變化)區域的吞吐量。可即便是相同的二進制文件,其在不同日期的基準測試成績卻顯現了較大的差異。

0.png

據悉,兩次測試分別發生於 6 月 7 / 8 號(周二 / 周三),但前一次用零填充的表現、較后一次跑同樣的基準測試要快得多,讓人不得不懷疑是 L2 緩存策略要背鍋。

Travis Downs 指出,兩套主機運行的是 Ubuntu 20.24 Linux 發行版,而 6 月 8 號(周三)那天恰好迎來了英特爾微碼的操作系統更新。CPU 會在系統重啟后加載新版微碼,結果就出現了這種詭異的現象。

1 Skylake.png

Skylake 平台 – 跑分對比

仔細查看后可知,該微碼禁用了 Travis Downs 在上一篇文章中討論過的“硬件零存儲優化”功能,以緩解 CVE-2020-24512 安全漏洞(英特爾在 INTEL-SA-00464 安全公告中有詳細解釋)。

雖然英特爾明面上沒有提及,但微碼禁用了零存儲優化這件事的證據還是鋪天蓋地。更新后,填充零數據時的性能,已經變得和其它值相同了。

2 Ice Lake.png

Ice Lake 平台 – 跑分對比

追蹤 CPU L2 緩存的性能計數器表明,零存儲優化有重要作用的 Silent Evictions 操作,現幾乎都是 non-silent 了。

考慮到大多數 Linux 發行版和 Windows 操作系統都會默認啟用相關更新,Travis Downs 建議有疑惑的朋友也嘗試重現一下對比跑分。

(0)
上一篇 2021-06-23 10:26
下一篇 2021-06-23 10:26

相关推荐