Es gibt ein bisschen Linux-Kernel-Code für AMD Zen 2-Prozessoren namens „Spectral Chicken“, und ein Aufruf zur Bereinigung dieses Codes, der ursprünglich von einem Intel-Linux-Ingenieur geschrieben wurde, wurde abgelehnt.
In der Linux x86-Header-Datei für MSRs gibt es”ZEN2_SPECTRAL_CHICKEN”und im Codepfad der AMD-CPU gibt es ein bisschen Code für den Umgang mit diesem Chicken-Bit und einen Code-Kommentar:”On Zen2 we offer this chicken (bit ) auf dem Altar der Spekulation. Dies unterdrückt Spekulationen aus der Mitte eines Basisblocks, d. h. es unterdrückt Nicht-Zweig-Vorhersagen. Wir verwenden STIBP als Heuristik, um Zen2 aus dem Rest von F17H herauszufiltern.”
Borislav Petkov, ein langjähriger Linux-Ingenieur, der ursprünglich vor mehr als einem Jahrzehnt für AMD im inzwischen geschlossenen AMD Operating System Research Center arbeitete und seit Jahren bei SUSE angestellt war, während er vor einigen Monaten wieder zu AMD kam , versuchte, diesen AMD Spectral Chicken-Code zu bereinigen.
Er verschickte einen Patch mit der Nachricht:
“Wir hatten genug Spaß mit dem spektralen Hühnchen-Bit-nennen Sie es, was es wirklich tut: es unterdrückt Nicht-Zweig-Vorhersagen.
Umbenennen definiert, um klarzustellen, dass es nur Zen2 ist.
Keine funktionalen Änderungen.”
Das AMD Zen 2 Spectral Chicken MSR-Bit wurde in „ZEN2_DE_CFG2“ und „ZEN2_DE_CFG2_SUPPRESS_NOBR_PRED“ umbenannt und der Code-Kommentar bereinigt, um darauf hinzuweisen, dass Spekulationen für Nicht-Zweig-Vorhersagen unterdrückt werden. Obwohl diese nicht funktionale Änderung nichts allzu Dramatisches ist, war der ursprüngliche Autor dieses Codes zufällig ein Intel-Ingenieur.
Peter Zijlstra antwortet:
“NAK [Not Acknowledge], ich musste das alles ohne *jede* offizielle Mitteilung von AMD schreiben, hauptsächlich auf Hören-Sagen.
Das wird zur Strafe für immer das spektrale Huhn sein. Das nächste Mal AMD können es noch einmal versuchen, und wenn sie es schaffen, sich zusammenzureißen und etwas zu veröffentlichen, bevor ich den Code schreibe und einen Namen für ein magisches Bit erfinde, können sie es benennen, wie sie wollen.”
Worauf Petkov ansprach, dass es unwahrscheinlich ist, dass Peter jemals wieder einen solchen Code schreiben muss, worauf Thomas Gleixner dies als rein spekulative Annahme bezeichnete.
Für diejenigen, die es nicht wissen, ein Chicken Bit bezieht sich normalerweise auf ein Bit, das zum Deaktivieren einiger Chipfunktionen verwendet werden kann, falls es sich als fehlerhaft oder problematisch herausstellen sollte.
Es sieht also aus wie das AMD Spectral Chicken Der Code wird für etwas unbeschwerteren Spaß im Linux-Kernel verbleiben.
Dieser Code wurde ursprünglich von einem Intel Linux-Ingenieur als Teil der spekulativen Ausführungsbemühungen verfasst, und zu der Zeit hatte AMD weniger Linux-Ingenieure als heute. In den letzten Jahren hat AMD sein Linux-Engineering-Personal aufgestockt, um ihre Linux-Kernel-Beiträge und die rechtzeitige Aktivierung neuer Funktionen sowohl für Ryzen als auch für EPYC besser handhaben zu können. Die Linux-Kernel-Beiträge von AMD sind in letzter Zeit und zur Verbesserung ihrer jüngsten Produktgenerationen erheblich gestiegen. Wenn also das nächste Mal ein solches Problem auftritt, wenn es direkt von AMD-Ingenieuren angegangen wird, können sie solche Teile nach Belieben benennen, während das Zen 2 Spectral Chicken so aussieht, als würde es unverändert bleiben.