Intel v úterý zveřejnil detaily chyby v procesorech Skylake a novějších JCC Erratum (Jump Conditional Code). Problém je v asemblerových instrukcích podmíněných skoků, které překročí 32bajtovou hranici a zároveň jsou v ICache. Pokud se tak stane, procesor se chová nepředvídatelně. Nejde tedy o bezpečnostní problém, ale bylo by možné takové instrukce zneužít k DoS.
Mezi postižené procesory patří Amber Lake, Cascade Lake, Coffee Lake, Comet Lake, Kaby Lake, Skylake a Whiskey Lake. Intel opravil chybu vydáním nového microcode (pro Skylake 0×02000064, pro Cascade Lake 0×0500002b). Nový microcode nedává skoky do cache, pokud překračují 32bajtovou hranici. To má negativní vliv na výkon, podle Intelu mezi 0 – 4 %. Podle měření Phoronixu je často dopad větší, třeba 9 % pro PHP (opravený as
4 – 5 %) v testu prohlížeče Firefox pak 6 – 7 %.
Výkonnostní propad lze do určité míry kompenzovat opravou assembleru, kdy podmíněné skoky budou zarovnány na 32 bajtů. Napřiklad GNU Assembler již patřičné opravy zařadil. Zapínají se v příkazové řádce parametrem -mbranches-within-32B-boundaries
. Vypadá to, že takové zarovnání nemá negativní vliv na procesory AMD.
(zdroj: phoronix)