Pentium FDIV баг је компјутерски баг у јединици за рачунање са покретним зарезом (енг. floating point unit, FPU). Баг узрокује погрешнан резултат при дељењу реалних вредности. Открио га је 1994-е године професор Томас Р. Најсли са Линчберг колеџа.[1] Интел је приписао грешку недостајећим вредностима у лукап табели која је коришћена при дељењу.[2]
Озбиљност FDIV бага је упитна. Иако су се обични корисници ретко сусретали са овом грешком (Часопис Бајт процењује да се 1 у 9 милијарди дељења са случајним параметрима изврши нетачно),[3] и пропуст и Интелова иницијална реакција на ситуацију су оштро критиковани од стране заједнице.
У децембру 1994. године, Интел је повукао дефектне процесоре. У јануару 1995. године, Интел је најавио "накнаду од 475 милиона долара од зараде (пре пореза), што је наводно укупан износ трошкова у вези са заменом процесора са грешком."[1]
Опис
На погођеним чиповима се користио Свинијев, Робертсонов и Тошеров (СРТ) алгоритам за дељење. Он се реализује као програмибилно логичко поље са 2048 ћелија, од којих је 1066 требало да буде испуњено једном од пет вредности: -2, -1, 0, +1, +2. На чиповима са грешком, пет елемената који је требало да садрже вредност +2 су недостајали, и уместо тога је повратна вредност била 0.[3]
Хронологија
Томас Најсли, професор математике на Линчберг колеџу, је написао код за тражење простих бројева, близанаца простих бројева, тројки простих бројева, и четворки простих бројева. Најсли је приметио неке недоследности у израчунавањима 13. јуна 1994. године, непосредно након што је убацио Пентиум систем у његову групу рачунара, али није могао да елиминише друге факторе (као што су грешке у програму, матична плоча, чипсет и сл) до 19. октобра 1994. године. 24. октобра 1994. године је пријавио проблем Интелу. Према Најслију, његов контакт у Интелу је касније признао да је Интел био свестан проблема од маја 1994. године, када је Том Краљевиц, студент Пурдју Универзитета који је радио за Интел у Хилсбору, Орегону, открио пропуст током тестирања FPU јединице за ново Р6 језгро које је први пут употребљено у Пентиум про архитектури.
30. октоба 1994-е, Најсли је послао имејл описом грешке које открио у Пентиумовој јединици за рад са покретним зарезом његовим разним контактима, тражећи додатна тестирања грешке на 486-DX4s, Пентиуму и Пентиумовим клоновима.[1]
Недостатак у Пентиумовом FPU-у је брзо верификован од стране других људи широм интернета и постао познат, као и Пентиум FDIV буг (FDIV је инструкција за дељење у покретном зарезу у x86 асемблеру). Пронађен је пример када је резултат дељења био погрешан за око 61 делова на милион.[1]
Прича се први пут појавила у штампи 7. новембра 1994. године у чланку објављеном у Electronic Engineering Times, "Интел исправља Пентиум FPU квар" (енг. "Intel fixes a Pentium FPU glitch") Александра Вулфа.[4]
Причу је касније преузео ЦНН у сегменту емитованом 21. новембра 1994.[1] То је ову грешку довело међу ширу јавност.
Јавно, Интел је признао ману у њиховим јединицама за рад са бројевима у покретном зарезу, али је тврдио да није озбиљна и неће утицати на већину корисника. Интел је нудио да замени процесоре корисника који су могли да докажу да грешка постоји у њиховом процесору. Међутим, иако је већина независних процена тврдило да је грешка малог значаја и да ће имати занемарљив утицај на већину корисника, она је изазвала велико негодовање јавности. Компаније као што су ИБМ (чији се ИБМ 5x86Cмикропроцесор у то време такмичио са Интел Пентиум линијом) су се придружили осудама.
Дана 20. децембра 1994. године, Интел је понудио да замени све Пентиум процесоре с грешком свима који то затраже, као одговор на растући притисак јавности.[5] Иако се испоставило да је само мали део власника Пентиум процесора вратио своје чипове, финансијски утицај на компанију је био значајан. 17. јануара 1995. године, Интел је најавио "накнаду у износу од $475 милиона долара од зараде (пре пореза), што је наводно укупан износ трошкова у вези са заменом процесора са грешком"[1] Неки неисправни чипови су касније претворени у Интелове привеске за кључеве.[6]
Чланак из 1995. године у Сајенсу описује значај проблема из области теорије бројева у откривању грешака и даје математичко образложење и историју Бранове константе, проблема на коме је Најсли радило када је открио грешку.[7]
Погођени модели
Овај проблем се јавља само на неким моделима оригиналног Пентиум процесора.[8] Грешка је постојала само у неким процесорима Пентиум породице са фреквенцијом часовника мањом од 120 MHz.[8] На погођеним моделима, алат Processor Frequency ID Utility може да провери постојање овог бага.
Неки Интел 80486 OverDrive и Пентиум OverDrive процесори су такође подложни FDIV грешци, као и F00F грешци.
Методе детекције
Универзални
Присутност грешке се може проверити ручно, извршавањем следећег израчунавања у било којој апликацији која користи процесорску репрезентацију бројева са покретним зарезом, као што су калкулатор за Windows или Мајкрософт Ексел у Windows-у 95/98.
Тачна вредност је:
Када се претвара у хексадекадну вредност коју користи процесор, 4195835 = 0x4005FB и 3145727 = 0x2FFFFF. '5' у запису 0x4005 изазива грешку у логичком колу. Као резултат тога, вредност коју враћа Пентиум процесор у одређеним ситуацијама је погрешна на четири или више цифара:[9][10]