Podezření při obyčejném výpočtu
Americký matematik Thomas Nicely z Lynchburg College se v roce 1994 zabýval výpočty souvisejícími s prvočísly. Jeho programy prováděly obrovské množství matematických operací a výsledky průběžně porovnával na různých počítačích. Právě při této rutinní práci si všiml něčeho znepokojivého. Novější počítač vybavený procesorem Intel Pentium poskytoval v některých případech jiné výsledky než starší stroje.
Zpočátku předpokládal, že chyba musí být v programu. Kontroloval výpočty, upravoval software a opakoval testy. Jenže nesrovnalosti přetrvávaly a postupně se ukázalo, že problém vzniká přímo při dělení určitých čísel. Dne 30. října 1994 rozeslal odborným kolegům zprávu upozorňující na chybu v matematické jednotce procesoru Pentium.
Zpráva se rychle rozšířila prostřednictvím tehdejších počítačových diskusních sítí. Další odborníci začali Nicelyho výsledky ověřovat a zjistili, že stejnou chybu lze zopakovat i na jiných počítačích s Pentiem. Zvlášť nepříjemné bylo, že problém nebyl omezen na jediný specializovaný vědecký program. Za určitých podmínek se mohl projevit i při výpočtech v běžném tabulkovém procesoru.
Jak může procesor dělit chybně
Příčina se ukrývala hluboko v konstrukci čipu. Pentium používalo pro rychlé dělení matematický algoritmus, který při výpočtu využíval tabulku předem připravených hodnot. Pět jejích položek však kvůli chybě při návrhu chybělo. Procesor proto při určitých kombinacích čísel pracoval s nesprávnou hodnotou a výsledné dělení nebylo dostatečně přesné.
Slavná ukázka chyby používá dvě zdánlivě obyčejná čísla. Pokud vydělíme 4 195 835 číslem 3 145 727, správný výsledek začíná hodnotou 1,333820. Vadné procesory Pentium však mohly vrátit přibližně 1,333739. Rozdíl nevypadá dramaticky, ale pro přesné vědecké výpočty už může být významný.
Ještě názornější byl jednoduchý test: když se výsledek dělení znovu vynásobil dělitelem, měl počítač získat původních 4 195 835. Vadné Pentium však v tomto příkladu vracelo 4 195 579. Chybělo tedy přesně 256.
V běžných kancelářských úlohách byla pravděpodobnost takové chyby velmi nízká. Intel později uváděl, že při náhodných dvojicích čísel by k nepřesnosti docházelo přibližně jednou za devět miliard dělení. Taková statistika ale nevystihovala všechna možná použití. Specializovaný matematický program mohl opakovaně pracovat právě s hodnotami, které závadu vyvolávaly.
Pro vědce byl problém zásadní. Pokud počítač vrátí špatný výsledek bez jakéhokoliv varování, může chyba nenápadně ovlivnit celý navazující výpočet.
Krize nevznikla jen v křemíku
Intel o technické závadě věděl ještě před jejím širokým zveřejněním. Zpočátku však považoval problém za natolik vzácný, že nevyžadoval plošnou výměnu procesorů. Firma zdůrazňovala, že běžný uživatel na podobnou chybu pravděpodobně nikdy nenarazí, a nabízela řešení především zákazníkům, kteří mohli prokázat, že závada ovlivňuje jejich práci.
Jenže právě tento přístup vyvolal obrovskou kritiku. Zákazníci si nekupovali procesor s očekáváním, že bude správně počítat pouze ve většině případů. Chtěli mít jistotu, že počítači mohou důvěřovat, aniž musejí zkoumat, zda jejich konkrétní výpočty patří mezi rizikové.
Aféra získala další rozměr, když společnost IBM v prosinci 1994 dočasně zastavila prodej některých počítačů s Pentiem. Intel se ocitl pod tlakem médií, zákazníků i výrobců počítačů. Nakonec 20. prosince oznámil, že vadné procesory bezplatně vymění všem zákazníkům, kteří o to požádají, bez nutnosti dokazovat konkrétní potíže.
Finanční důsledky byly mimořádné. Intel ve své výroční zprávě za rok 1994 uvedl jednorázový náklad 475 milionů dolarů, související především s výměnami procesorů, náhradními součástkami a odpisy zásob. Závada, která se při běžném používání projevovala jen zřídka, se tak proměnila v jednu z nejznámějších reputačních krizí počítačového průmyslu.
Poučení, které nezestárlo
Aféra Pentium FDIV, jak se chybě začalo říkat podle instrukce pro dělení desetinných čísel, měla důsledky i pro samotný vývoj procesorů. Ukázala, že ani rozsáhlé testování nemusí zachytit všechny problematické kombinace vstupních hodnot. Výrobci proto začali věnovat ještě větší pozornost formálnímu ověřování matematických operací a kontrole návrhu čipů.
Nejdůležitější poučení však bylo obchodní. Intel původně hodnotil závadu především podle pravděpodobnosti, s jakou se projeví. Zákazníci ji posuzovali jinak: jako porušení základního očekávání, že počítač dokáže správně počítat.
Tento rozdíl zůstává aktuální i v době umělé inteligence a stále složitějších digitálních systémů. Technická spolehlivost není jen otázkou toho, jak často zařízení funguje správně. Záleží také na tom, zda uživatel dokáže rozpoznat okamžik, kdy správně nefunguje, a jak výrobce na podobné selhání reaguje.
Thomas Nicely odhalil chybu v několika matematických operacích. Jeho objev však nakonec ukázal něco mnohem širšího: vzácná závada může způsobit obrovskou škodu, pokud zákazník získá pocit, že výrobce rozhoduje za něj, jak velkou nepřesnost má tolerovat.
MOHLO BY SE TI TAKÉ LÍBIT
Zdroje: Kód Enigma [1], MathWorks – A Tale of Two Numbers [2], Intel archived FDIV replacement information [3], Rhode Island Computer Museum – FDIV bug [4]








