Pentium FDIV bag

S Vikipedije, slobodne enciklopedije
66 MHz Intel Pentium ( sSpec=SX837) sa FDIV bagom

Pentium FDIV bag je kompjuterski bag u jedinici za računanje sa pokretnim zarezom (eng. floating point unit, FPU). Bag uzrokuje pogrešnan rezultat pri deljenju realnih vrednosti. Otkrio ga je 1994-e godine profesor Tomas R. Najsli sa Linčberg koledža.[1] Intel je pripisao grešku nedostajećim vrednostima u lukap tabeli koja je korišćena pri deljenju.[2]

Ozbiljnost FDIV baga je upitna. Iako su se obični korisnici retko susretali sa ovom greškom (Časopis Bajt procenjuje da se 1 u 9 milijardi deljenja sa slučajnim parametrima izvrši netačno),[3] i propust i Intelova inicijalna reakcija na situaciju su oštro kritikovani od strane zajednice.

U decembru 1994. godine, Intel je povukao defektne procesore. U januaru 1995. godine, Intel je najavio "naknadu od 475 miliona dolara od zarade (pre poreza), što je navodno ukupan iznos troškova u vezi sa zamenom procesora sa greškom."[1]

Opis[uredi | uredi izvor]

Na pogođenim čipovima se koristio Svinijev, Robertsonov i Tošerov (SRT) algoritam za deljenje. On se realizuje kao programibilno logičko polje sa 2048 ćelija, od kojih je 1066 trebalo da bude ispunjeno jednom od pet vrednosti: -2, -1, 0, +1, +2. Na čipovima sa greškom, pet elemenata koji je trebalo da sadrže vrednost +2 su nedostajali, i umesto toga je povratna vrednost bila 0.[3]

Hronologija[uredi | uredi izvor]

Tomas Najsli, profesor matematike na Linčberg koledžu, je napisao kod za traženje prostih brojeva, blizanaca prostih brojeva, trojki prostih brojeva, i četvorki prostih brojeva. Najsli je primetio neke nedoslednosti u izračunavanjima 13. juna 1994. godine, neposredno nakon što je ubacio Pentium sistem u njegovu grupu računara, ali nije mogao da eliminiše druge faktore (kao što su greške u programu, matična ploča, čipset i sl) do 19. oktobra 1994. godine. 24. oktobra 1994. godine je prijavio problem Intelu. Prema Najsliju, njegov kontakt u Intelu je kasnije priznao da je Intel bio svestan problema od maja 1994. godine, kada je Tom Kraljevic, student Purdju Univerziteta koji je radio za Intel u Hilsboru, Oregonu, otkrio propust tokom testiranja FPU jedinice za novo R6 jezgro koje je prvi put upotrebljeno u Pentium pro arhitekturi.

30. oktoba 1994-e, Najsli je poslao imejl opisom greške koje otkrio u Pentiumovoj jedinici za rad sa pokretnim zarezom njegovim raznim kontaktima, tražeći dodatna testiranja greške na 486-DX4s, Pentiumu i Pentiumovim klonovima.[1]

Nedostatak u Pentiumovom FPU-u je brzo verifikovan od strane drugih ljudi širom interneta i postao poznat, kao i Pentium FDIV bug (FDIV je instrukcija za deljenje u pokretnom zarezu u x86 asembleru). Pronađen je primer kada je rezultat deljenja bio pogrešan za oko 61 delova na milion.[1]

Priča se prvi put pojavila u štampi 7. novembra 1994. godine u članku objavljenom u Electronic Engineering Times, "Intel ispravlja Pentium FPU kvar" (eng. "Intel fixes a Pentium FPU glitch") Aleksandra Vulfa.[4]

Priču je kasnije preuzeo CNN u segmentu emitovanom 21. novembra 1994.[1] To je ovu grešku dovelo među širu javnost.

Javno, Intel je priznao manu u njihovim jedinicama za rad sa brojevima u pokretnom zarezu, ali je tvrdio da nije ozbiljna i neće uticati na većinu korisnika. Intel je nudio da zameni procesore korisnika koji su mogli da dokažu da greška postoji u njihovom procesoru. Međutim, iako je većina nezavisnih procena tvrdilo da je greška malog značaja i da će imati zanemarljiv uticaj na većinu korisnika, ona je izazvala veliko negodovanje javnosti. Kompanije kao što su IBM (čiji se IBM 5x86C mikroprocesor u to vreme takmičio sa Intel Pentium linijom) su se pridružili osudama.

Dana 20. decembra 1994. godine, Intel je ponudio da zameni sve Pentium procesore s greškom svima koji to zatraže, kao odgovor na rastući pritisak javnosti.[5] Iako se ispostavilo da je samo mali deo vlasnika Pentium procesora vratio svoje čipove, finansijski uticaj na kompaniju je bio značajan. 17. januara 1995. godine, Intel je najavio "naknadu u iznosu od $475 miliona dolara od zarade (pre poreza), što je navodno ukupan iznos troškova u vezi sa zamenom procesora sa greškom"[1] Neki neispravni čipovi su kasnije pretvoreni u Intelove priveske za ključeve.[6]

Članak iz 1995. godine u Sajensu opisuje značaj problema iz oblasti teorije brojeva u otkrivanju grešaka i daje matematičko obrazloženje i istoriju Branove konstante, problema na kome je Najsli radilo kada je otkrio grešku.[7]

Pogođeni modeli[uredi | uredi izvor]

Ovaj problem se javlja samo na nekim modelima originalnog Pentium procesora.[8] Greška je postojala samo u nekim procesorima Pentium porodice sa frekvencijom časovnika manjom od 120 MHz.[8] Na pogođenim modelima, alat Processor Frequency ID Utility može da proveri postojanje ovog baga.

Deset pogođenih procesora su navedeni u nastavku.

Procesor Pentium R5 800nm 5V
Porodica Model Revizija Revizija jezgra Frekvencija časovnika FSB brzina S-spec
5 1 3 B1 60 MHz 60 MHz Q0352, Q0412, SX753
5 1 3 B1 66 MHz 66 MHz Q0353, Q0413, SX754
5 1 5 S1 60 MHz 60 MHz Q0466, SX835, SZ949
5 1 5 S1 66 MHz 66 MHz Q0467, SX837, SZ950
Procesor Pentium P54C 600nm 3.3V
Porodica Model Revizija Revizija jezgra Frekvencija časovnika FSB brzina S-spec
5 2 1 B1 75 MHz 50 MHz Q0601
5 2 1 B1 90 MHz 60 MHz Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874
5 2 1 B1 100 MHz 66 MHz Q0563, Q0587, Q0614, SX886, SX910
5 2 2 B3 75 MHz 50 MHz Q0606, SX951
5 2 2 B3 90 MHz 60 MHz Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951
5 2 2 B3 100 MHz 66 MHz Q0677, SX960

Neki Intel 80486 OverDrive i Pentium OverDrive procesori su takođe podložni FDIV grešci, kao i F00F grešci.

Metode detekcije[uredi | uredi izvor]

Univerzalni[uredi | uredi izvor]

Prisutnost greške se može proveriti ručno, izvršavanjem sledećeg izračunavanja u bilo kojoj aplikaciji koja koristi procesorsku reprezentaciju brojeva sa pokretnim zarezom, kao što su kalkulator za Windows ili Majkrosoft Eksel u Windows-u 95/98.

Tačna vrednost je:

Kada se pretvara u heksadekadnu vrednost koju koristi procesor, 4195835 = 0x4005FB i 3145727 = 0x2FFFFF. '5' u zapisu 0x4005 izaziva grešku u logičkom kolu. Kao rezultat toga, vrednost koju vraća Pentium procesor u određenim situacijama je pogrešna na četiri ili više cifara:[9][10]


Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ a b v g d đ Professor Thomas Nicely. „Pentium FDIV flaw FAQ”. 
  2. ^ „Statistical Analysis of Floating Point Flaw: Intel White Paper” (PDF). Intel. 9. 7. 2004. str. 9. Solution ID CS-013007. Arhivirano iz originala (PDF) 6. 4. 2016. g. Pristupljeno 5. 4. 2016. 
  3. ^ a b Tom R. Halfhill (mart 1995). „An error in a lookup table created the infamous bug in Intel's latest processor”. BYTE (March 1995). Arhivirano iz originala (– Scholar search) 9. 2. 2006. g. Pristupljeno 19. 12. 2006. 
  4. ^ Alexander Wolfe. „Intel fixes a Pentium FPU glitch”. 
  5. ^ „Intel adopts upon-request replacement policy on Pentium processors with floating point flaw; Will take Q4 charge against earnings”. Business Wire. 20. 12. 1994. Arhivirano iz originala 10. 7. 2012. g. Pristupljeno 24. 12. 2006. 
  6. ^ „How many engineers does it take to change a lightbulb?”. Boiledbeans. 20. 4. 2009. Arhivirano iz originala 3. 2. 2010. g. Pristupljeno 10. 11. 2009. 
  7. ^ Cipra, Barry A. (13. 1. 1995). „How number theory got the best of the Pentium chip”. Science. 267 (5195): 175. PMID 17791336. doi:10.1126/science.267.5195.175. 
  8. ^ a b „FDIV Replacement Program: Frequently asked questions”. Intel. 20. 3. 2009. Solution ID CS-012748. Arhivirano iz originala 11. 5. 2009. g. Pristupljeno 10. 11. 2009. 
  9. ^ „Pentium FDIV bug - a Picture”. Kansas University Institute for Policy and Social Research. 30. 11. 1994. Pristupljeno 3. 11. 2010. 
  10. ^ „Ivars Peterson's MathTrek: Pentium Bug Revisited”. Mathematical Association of America. Arhivirano iz originala 10. 12. 2008. g.