C’è un po’di codice del kernel Linux per i processori AMD Zen 2 chiamato”pollo spettrale”e una richiesta di ripulire quel codice, originariamente scritta da un ingegnere Intel Linux, è stata respinta.
All’interno del file di intestazione Linux x86 per MSR c’è”ZEN2_SPECTRAL_CHICKEN”e all’interno del percorso del codice della CPU AMD c’è un po’di codice per gestire questo pezzo di pollo, e un commento in codice:”Su Zen2 offriamo questo pollo (po’) sull’altare della speculazione. Questo sopprime la speculazione dal centro di un blocco di base, cioè sopprime le previsioni non ramificate. Usiamo STIBP come euristica per filtrare Zen2 dal resto di F17H.”
Borislav Petkov, un ingegnere Linux di lunga data che originariamente ha lavorato per AMD più di un decennio fa presso il Centro di ricerca sui sistemi operativi AMD da allora chiuso e da anni è stato assunto da SUSE mentre pochi mesi fa è rientrato in AMD , ha cercato di ripulire questo codice AMD Spectral Chicken.
Ha inviato una patch con il messaggio:
“Ci siamo divertiti abbastanza con il pezzo di pollo spettrale: chiamalo per quello che fa veramente: sopprime le previsioni non ramificate.
Rinomina definisce per chiarire che è solo Zen2.
Nessuna modifica funzionale.”
Il bit MSR del pollo spettrale di AMD Zen 2 è stato rinominato in”ZEN2_DE_CFG2″e”ZEN2_DE_CFG2_SUPPRESS_NOBR_PRED”, oltre a ripulire il commento del codice per fare riferimento ad esso come soppressione della speculazione per le previsioni non di ramo. Sebbene nulla di eccessivamente drammatico in questo cambiamento non funzionale, l’autore originale di quel codice era un ingegnere Intel.
Peter Zijlstra ha risposto:
“NAK [Non riconoscere], ho dovuto scrivere tutto questo senza *alcuna* comunicazione ufficiale da parte di AMD, principalmente per sentito dire.
Questo diventerà per sempre il pollo spettrale come punizione. La prossima volta AMD possono riprovare, e se riescono a organizzarsi e a pubblicare qualcosa prima che io riesca a scrivere il codice e a inventare un nome per un bit magico, possono dargli il nome che preferiscono.”
A cui Petkov ha sollevato che è improbabile che Peter abbia mai bisogno di scrivere di nuovo un codice del genere, a cui Thomas Gleixner ha definito questo un presupposto puramente speculativo.
Per chi non lo sapesse, un bit di pollo si riferisce in genere a un bit che può essere utilizzato per disabilitare alcune funzionalità del chip nel caso in cui si riveli difettoso o problematico.
Quindi sembra il pollo spettrale di AMD il codice si attaccherà al kernel di Linux per un divertimento un po’più spensierato.
Questo codice è stato originariamente creato da un ingegnere Linux di Intel come parte degli sforzi di esecuzione speculativi e all’epoca AMD aveva meno ingegneri Linux di quanti ne abbia adesso. Negli ultimi anni AMD ha aumentato il proprio staff di ingegneri Linux per gestire meglio i contributi del kernel Linux e l’abilitazione tempestiva di nuove funzionalità sia per Ryzen che per EPYC. I contributi del kernel Linux di AMD sono aumentati in modo significativo negli ultimi tempi e per migliorare le loro ultime generazioni di prodotti. Quindi la prossima volta che si presenterà un problema del genere, se affrontato direttamente dagli ingegneri AMD, saranno in grado di nominare i bit che desiderano mentre lo Zen 2 Spectral Chicken sembra che rimarrà invariato.