Euro.cz Finance.cz Cnews.cz Edna.cz VideaČesky.cz Více
Flek.cz Profit.cz CoChceš.cz WoT.cz Raketka.cz Hryprodivky.cz Zdn.cz Nasvah.cz LetenkyLevne.cz Stahnu.cz Mujsoubor.cz Kniha.cz Více
Reklama

Intel má bug v procesorech Skylake. Při použití AVX může počítač zamrznout

Zdá se, že v reji okolo veletrhu CES 2016 poněkud zapadla s ním nesouvisející, ale významná hardwarová událost. Stejně jako u softwaru mívá i hardware své chyby a zejména u CPU je při jejich dnešní komplexitě nemožné se jim vyhnout. Jen málokdy se ovšem taková chyba projeví až u uživatelů. Zdá se, že jeden takový problém byl v koncem loňského roku odhalen v procesorech Skylake. Jedná se podle všeho o hardwarový nedostatek, který se může projevit při běhu programů používajících instrukce AVX.

Chyba se v praxi ukázala u programu Prime95, který asi znáte jako prostředek pro ověřování stability PC, ovšem jeho původním účelem je distribuované hledání tzv. Mersennových prvočísel (projekt GIMPS). Problém byl objeven v testu FFT o velikosti 768K. Postiženy by měly být všechny verze Prime95 používající AVX, s možnou výjimkou poslední verze (28.7), která u Skylake běží na instrukcích FMA3, čímž se chybě (minimálně někdy) vyhne. Chyba se neobjeví automaticky, výskyt může nastat až za několik hodin, takže se zdá, že v ní hraje jistou roli náhoda a spustí ji souběh složitých faktorů v procesoru – což je nejspíš důvod, proč tato nestabilita prošla interním testováním.

BGA verze procesorů Skylake: Core M, řada U a řada H s externím čipsetem

Chybu se údajně podařilo zopakovat řadě uživatelů a nyní ji již potvrdil i Intel. Nastává nejen po přetaktování, ale i při výchozích taktech. Problém podle hlášení chyby minimálně v některých případech vede nejen k chybě ve výpočtu, ale také zamrznutí systému. To potvrzuje i Intel a uvádí, že se jedná o problém potenciálně se týkající všech Skylaků, při němž se za určitých složitých okolností procesor zasekne nebo se dostane do nepředvídatelného (nestabilního/nekoherentního) stavu.

 

Aktualizace mikrokódu je na cestě

Naštěstí byly podle Intelu již příčiny identifikovány a firma má k dispozici opravu (pravděpodobně formou aktualizace mikrokódu pro CPU). Ta bude distribuována skrze BIOSy základních desek. Intel s jejich výrobci údajně spolupracuje na tom, aby potřebnou aktualizaci zabalili do BIOSů pro jednotlivé desky a zpřístupnili uživatelům, tento proces nicméně může nějakou dobu trvat. Doufejme, že se dostane na všechny modely včetně těch levných, které nemají tolik péče jako „vlajkové lodě“, a také na všechny notebooky či mini PC. Pokud máte počítač stouto generací CPU Intel, každopádně dostupnost nových BIOSů (respektive UEFI) sledujte.


Core i7-6700K, jedno z CPU zasekávajících se v Prime95

Bohužel zatím nevíme, zdali oprava bude mít nějaké dopady na výkon procesoru. Jak ukázal například bug v TLB u úvodní revize 65nm Phenomů (Agena/Barcelona), opravy i velmi vzácně se vyskytujících problémů mohou vést k reálné degradaci výkonu. Nicméně zde nemusí jít o problém v tak kritické části a je možné i to, že se Intelu podaří rizikovým situacím zabránit jen s malým či nepatrným postihem. Na druhou stranu, některé chyby se nedají obejít snadno, viz například nefunkční instrukce TSX u Haswellu, které musely být aktualizací zcela vyřazeny z provozu.

 

 

Pokud se chcete v Prime95 pokusit o zreprodukování této chyby, přímá cesta vede přes položku „test“ v podmenu „advanced“. Do kolonky „Exponent to test“ vyplňte číslo 14942209 a úlohu spusťte. Počítač by měl po nějaké době, která může zabrat minuty, ale i hodiny, zamrznout. Tento pokus tudíž provádějte jen pokud současně nepracujete a nemáte nějaká důležitá neuložená data, která by kolaps a nestandardní vypnutí systému mohl ohrozit.

Zdroje: GIMPS, Intel

Oblíbené Tisk E-mail
Další články na téma: 
Reklama

Komentáře

Týká se to i Xeonů na bázi skylake???

Prakticky určitě ano, používají stejný křemík jako desktop. čtyřjádra.

Situace tedy není zdaleka tak horká, jako to bylo s Haswelly. Instrukční sada AVX je poměrně specifická záležitost a kompilátory je sice mají implementované, ale většinou se použijí jen s při překladu s konkrétním přepínačem. Obyčejný uživatel nemá důvod se obávat nějakých problémů. Asi bych to nepovažoval za významnou událost v porovnání s novinkami na CESu. :) Na tyto komplikace tu jsou právě aktualizace mikrokódu/firmware obecně.

Je to 5 let dostupná instrukční sada, já bych nesouhlasil s tím, že se používá málo. Jiná věc je, že to zatím nebylo potvrzeno (ale možná si jen lidi nevšimli, nebo záseky nepřipsali chybě v CPU) mimo Prime95. ALe Prime95 je vcelku normální matematický kód, i když optimalizovaný, takže jde o reálný problém, a erraty s touhle mírou závažnosti se většinou neobjevují (jinak jsou jich ale desítky).

BTW, podle tohohle prý budou hned dva updaty mikrokódu, ten první asi nebude úplně kompletní oprava.

Instr. sada AVX možná existuje dlouho (a stále se vyvíjí viz AVX-512 atd.), ale nasazení těchto instrukcí je velmi vzácné, protože ty instrukce jsou poměrně specifické v tom, co dělají a kompilátory při optimalizaci kódu většinou sáhnou po jiných možnostech. Já se zaměřením nepohybuju na úrovni instrukcí a nemám nastudované jednotlivé sady, ale co vím, tak z principu slouží AVX k urychlení základních matematických operací na větším množství paměti - např. mějme 2 registry A a B (každý třeba 8 x 32 bitů), potom pomocí jedné instrukce můžeme udělat operaci A = A + B (tj. přičtení reg. B do A). Problém je v tom, že program obecně nemusí zrovna počítat s osmicemi proměnných a při nesprávném použítí instrukcí AVX může dojít i ke značnému zpomalení celého programu (AVX instrukce jsou obecně velmi "drahé" oproti porovnatelné základní instrukcí x86). Někteří vývojáři také dosud používají staré verze překladačů (např. kvůli stabilitě). Mimo výpočetních programů (typu Prime95) to tedy není příliš relevantní.

Nesnažím se bagatelizovat celý problém, jen se snažím obhájit názor, že běžný uživatel (např. v kanceláři) prakticky nemůže narazit na problém s instrukcemi AVX v procesorech Skylake. Pokud někdo dobrovolně drtí procesor 10 hodin v Prime95, tak se může stát ledacos. Problém by to byl určitě u serverových variant, kde je z principu zpracovávané množství dat neporovnatelně vyšší.

Tak, jsou to SIMD instrukce, takže je třeba, aby úloha dokázala saturovat 256bitový vektor (což ale u floatů není moc - je to jenom 8 hodnot v FP32). Nemyslím, že by bylo o moc náročnější, tedy až na spotřebu. Intely s nimi mají o dost větší příkon, takže na serverových modelech může dojít k poklesu frekvence, což může znamenat zpomalení, pokud zisk z přechodu z kódu v SSE byl už tak malý. A potom je ještě problém, že když se v nějakém kódu neopatrně promíchá SSE a AVX, tak CPU Intelu (ne AMD) tam můžou mít velké postihy výkonu (inicializace na přechodu mezi SSE a AVX, která vezme snad 100 cykly).

Ale obecně nemyslím, že by ty instrukce byly vyloženě problematické. A nemusí je nutně použít přímo programátor konkrétního softwaru, protože mohou být v knihovně, kterou použije - třeba ffmpeg, FFTW, počítám že pro numerické výpočty taky budou nějaké knihovny, které ho využijí. Zejména v open source softwaru mi přijde že se nové instrukční sady využívají dost.

Pravděpodobnost na chybu narazit, to je samozřejmě jiná, ta nepochybuju že bude nízká. Ale to byl třeba i případ toho hodně známého TLB bugu v Phenomu (ten na rozdíl od tohohle ani nebyl odhalen "in the wild" IIRC, což o něčem asi svědčí).

Takže kdybych Skylake měl, asi bych akceptoval i nějaký poes výkonu a opatchoval si ho. Ale není třeba předbíhat, třeba to půjde opravit bez nějakých závažných dopadů.

Tak v kancelárii to je asi vážne nanič. Tam by si to za celý životný cyklus procesora asi nik nevšimol a ak aj áno, tak by sa to pripisovalo niečomu inému. Ide skôr o aplikácie, kde ten výkon naozaj treba ;).

Napríklad drvivá väčšina aplikácií, ktoré dokážu využiť IPC>1 beží s nejakým druhom SIMD pretože inak sa prakticky nedá využiť celá šírka FPU.

A nepoužíva sa to len na FFT (ktorá sa mimochodom používa pomerne často). Takmer každý numerický algoritmus dokáže nejakým spôsobom využiť vektorizáciu. Ďalej všeobecne multimédiá a prakticky všetko, čo sa akceleruje DSP procesormi pracuje na princípe SIMD (x265, šifrovanie...).

A čo servery a HPC siete. Tam by pravdepodobnosť chyby dosť stúpala. Myslím že by to bola 1-doplnková pravdepodobnosť na n, kde n je počet jadier.

Inak sám Intel tvrdí, že ich procesory môžu vďaka AVX2 dosiahnuť až dvojnásobný výkon v porovnaní so SSE (porovnanie so skalárom si nepamätám).

A ešte dodám, nové inštrukcie sú vždy čoraz viac špecifické, ale nepridávajú sa tam len tak. Vždy sa najprv analyzuje štruktúra existujúcich programov a pridajú sa napríklad len inštrukcie, ktoré by nahradili často sa vyskytujúce rutiny, ktoré sa predtým vykonávali viacerými inštrukciami a trvali dlhšie. Rozhodne by nepridali inštrukčnú sadu, ktorá by mala len minimálne využitie. To by bolo plytvanie silikónom.

Reklama
Reklama