Skrivet av Yoshman:
Fast AMD tror uppenbarligen inte det, var man säker på att det inte gick att utnyttja skulle man knappast lägga resurser på att ta fram en mikrokoduppdatering. Framförallt inte då skyddet mot Spectre Variant 2 har visat sig ha rätt rejäl prestandapåverkan, i vissa fall i nivå med Meltdown-fixen utan PCID/INVPCID optimeringar.
Skyddet mot Spectre version 2 är tvådelat. Man måste göra en uppdatering av microcode först, och sedan måste programmet uppdateras för att skicka kommandot att ställa om hur branch predictorn fungerar. Vad AMD gör nu, är att göra uppdateringen av microcode för att göra dessa nya lägen för branch predictorn tillgängliga. Så länge man tror att deras processorer inte påverkas, behöver det speciella kommandot för att ställa om predictorn inte skickas, men om det en dag visar sig att det finns ett hål så går det lätt att täppa till det genom en programvaruuppdatering. Speciellt för Amazon, Google, MS osv som har stora moln att underhålla, är detta att föredra - de kan göra vad de kan nu, och sedan låta kunderna bestämma hur de vill konfigurera de program de kör.
Citat:
Finns ingen anledning att AMD skulle ge ut designhemligheter, varken Intel eller ARM har gjort det. Vad som förväntas är att varje kretstillverkare, som har alla erfoderliga detaljer, gör hemläxan kring detta på sin kammare om man inte vill ge forskarna de tekniska detaljerna.
Under det halvår som gått kan man börja ställa sig frågan: vad har AMD gjort?
Det har gått ett halvår sedan Intel, ARM och AMD (ingen annan - inte Apple, inte MS, inte ens Android-divisionen av Google) informerades om Spectre 1. Hur länge någon har känt till Spectre 2 är oklart. Det kan mycket väl vara så att den informationen enbart gick till Intel, om den nu sågs som en Intel-specifik bugg. Om du inte läst uppsatsen om Spectre, så kan jag rekommendera det.
https://spectreattack.com/spectre.pdf
Det mest intressanta börjar under 1.2. Texten om Spectre 1, rubrik "Exploiting conditional branches", är lättfattlig och innehåller pseudokod för att förklara hur det går till. Spectre 2 beskrivs betydligt mer luddigt under "Exploiting indirect branches". Det talas om att angriparen kan träna BTBn att gissa fel, utan att överhuvudtaget nämna hur denna träning går till. Diskussionen fortsätter under 5, "Poisoning Indirect Branches", och exemplen är under 5.1. De talar bara om Haswell och Skylake, och de säger t.o.m att "Testing on non-Intel CPUs has not been performed". Om exemplen i artikeln nu inte går att använda på AMD, är inte AMD immuna mot Spectre 2? Formulerat på ett annat sätt - om någon lyckas komma på ett sätt att manipulera BTBn på Zen, är inte det då ett nytt angrepp som borde få ett nytt flashigt namn?
Citat:
Nyheten om detta fick släppas ungefär en vecka för tidigt. Ändå kunde ARM (och även Intel) redan dag ett skicka ut teknisk dokumentation som
beskrev exakt vilka kretsar som är påverkade av vad
ARM har tre separata serier av Cortex A (de enkla A7, A53, A55 som inte påverkas. De perf/W optimerade A9, A12, A17, A73 som påverkas av Spectre. High-end som även påverkas av en variant av Meltdown A15, A57, A72, A75), första dagen listade man precis vilka Linux-patcher som bör installeras för varje krets samt man hade mikrokoduppdateringar klara (Intel hade också mikrokoden klar + Linux patcharna var färdiga)
Tekniskt sett har både ARM och Intel skött detta lysande (att man har buggar är naturligtvis dåligt, pratar om hur man hanterat "after-the-fact").
Intel har haft en del bull-PR. Grejen är att AMD endast haft bull-PR så här långt, de har inte gjort något tekniskt relevant (artikeln vi kommenterar indikerar i.o.f.s. att man nu jobbar på det tekniska, väldigt positivt!).
Varför har inte ens AMD lurat exakt vad man är mottaglig för? Är ju lite märkligt att vara den som rent tekniskt klarar sig klart bäst (man är helt opåverkad av Meltdown) men ändå har man inte ens lurat ut om man är mottaglig för Variant 2 (om man vet att man är mottaglig, varför hade man inte mikrokoden klar redan?).
Som jag läser texten har ingen hittills lyckats manipulera BTBn på Zen. AMD tror sig därför vara immuna. Så varför säger man då inte det? Sannolikt för att det skulle kunna finnas ett sätt att manipulera BTBn. Man uttrycker sig försiktigt. Samma sak gjorde ARM - idag säger de att det bara är A75 som påverkas av Meltdown, medan det tidigare var en längre lista som du skriver ovan.
Intel's agerande har varit långt från felfritt. De har konsekvent försökt få detta att framstå som ett fel för att hela branchen, när det värsta felet (Meltdown) var i princip enbart Intel - A75 finns inte i någon produkt på marknaden än, och ingen har lyckats angripa Apples kärnor om de nu eventuellt har en svaghet (något man bara kan gissa sig till från formuleringen av patch notes till iOS).
Att sen deras VD säljer aktier mitt under hela soppan hjälper ju inte direkt att få dem att framstå i god dager.
Citat:
Om AMD väntar till att det finns dokumenterad attacker mot Epyc innan man rullar ut patchar är man en död leverantör till enterprisemarknaden. Som aktieägare i AMD hoppas jag innerligt att man inte är så korkad.
Då är det väl tur att man rullar ut ny microcode nu? Att ändra på programnivå så att man använder Intel-koden också på AMD-processorer är ju trivialt om man en dag måste göra det.
(Om vi nu meddelar världen om vilka aktie-innehav vi har, så kan jag säga att jag inte äger några aktier i vare sig Intel, AMD, Apple, MS, ARM eller någon annan som är inblandad i den här soppan)