有一些用於 AMD Zen 2 處理器的 Linux 內核代碼稱為“光譜雞”,清理該代碼的呼籲已被拒絕,該代碼最初由英特爾 Linux 工程師編寫。
在 MSR 的 Linux x86 頭文件中有“ZEN2_SPECTRAL_CHICKEN”,在 AMD CPU 代碼路徑中有一些代碼用於處理這個雞塊,代碼註釋:“在 Zen2 上我們提供這個雞塊(位)在推測的祭壇上。這抑制了基本塊中間的推測,即它抑制了非分支預測。我們使用 STIBP 作為啟發式方法,從 F17H 的其餘部分中過濾掉 Zen2。”
鮑里斯拉夫·佩特科夫 (Borislav Petkov) 是一名長期的 Linux 工程師,十多年前他最初在 AMD 的 AMD 操作系統研究中心工作,多年後被 SUSE 聘用,幾個月前重新加入 AMD ,試圖清理此 AMD Spectral Chicken 代碼。
他發送了一個補丁,其中包含以下消息:
“我們已經玩夠了使用 spectral chicken bit-將其命名為它的實際作用:它抑制非分支預測。
重命名定義以明確它僅是 Zen2。
無功能變化。”
AMD Zen 2 spectral chicken MSR 位重命名為“ZEN2_DE_CFG2”和“ZEN2_DE_CFG2_SUPPRESS_NOBR_PRED”,並清理代碼註釋以將其稱為抑制非分支預測的推測。雖然這種非功能性變化並沒有太大的戲劇性,但該代碼的原作者恰好是一名英特爾工程師。
Peter Zijlstra 回复:
“NAK [Not Acknowledge],我不得不在沒有來自 AMD *任何* 官方溝通的情況下寫下所有這些,主要是聽說。
作為懲罰,這將永遠成為幽靈雞。下次 AMD可以再試一次,如果他們設法齊心協力並在我開始編寫代碼並為神奇的位發明一個名稱之前發布一些東西,他們就可以按照自己喜歡的方式命名。”
Petkov 提出,Peter 不太可能需要再次編寫這樣的代碼,Thomas Gleixner 稱這純粹是推測性的假設。
對於那些不知道的人,chicken bit 通常是指可用於禁用某些芯片功能的位,如果它被證明有故障或有問題。
所以它看起來像 AMD spectral chicken代碼將保留在 Linux 內核周圍以獲得更輕鬆的樂趣。
此代碼最初由英特爾 Linux 工程師編寫,作為推測執行工作的一部分,當時 AMD 的 Linux 工程師比現在少。近年來,AMD 一直在增加他們的 Linux 工程人員,以更好地處理他們的 Linux 內核貢獻,並及時為 Ryzen 和 EPYC 啟用新功能。 AMD 的 Linux 內核貢獻最近顯著增加,並用於增強其最近幾代產品。因此,下次出現此類問題時,如果 AMD 工程師直接解決了這個問題,他們將能夠隨意命名這些位,而 Zen 2 Spectral Chicken 看起來將保持不變。