Pentium FDIV bag

Извор: testwiki
Пређи на навигацију Пређи на претрагу
66 MHz Интел Пентиум ( sSpec=SX837) са -{FDIV}- bagom

Pentium -{FDIV}- баг је компјутерски баг у јединици за рачунање са покретним зарезом (енг. -{floating point unit}-, -{FPU}-). Баг узрокује погрешнан резултат при дељењу реалних вредности. Открио га је 1994-е године професор Томас Р. Најсли са Линчберг колеџа.[1] Интел је приписао грешку недостајећим вредностима у лукап табели која је коришћена при дељењу.[2]

Озбиљност -{FDIV}- бага је упитна. Иако су се обични корисници ретко сусретали са овом грешком (Часопис Бајт процењује да се 1 у 9 милијарди дељења са случајним параметрима изврши нетачно),[3] и пропуст и Интелова иницијална реакција на ситуацију су оштро критиковани од стране заједнице.

У децембру 1994. године, Интел је повукао дефектне процесоре. У јануару 1995. године, Интел је најавио "накнаду од 475 милиона долара од зараде (пре пореза), што је наводно укупан износ трошкова у вези са заменом процесора са грешком."[1]

Опис

На погођеним чиповима се користио Свинијев, Робертсонов и Тошеров (СРТ) алгоритам за дељење. Он се реализује као програмибилно логичко поље са 2048 ћелија, од којих је 1066 требало да буде испуњено једном од пет вредности: Шаблон:Nowrap. На чиповима са грешком, пет елемената који је требало да садрже вредност +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 може да провери постојање овог бага.

Десет погођених процесора су наведени у наставку.

Процесор Пентиум Р5 800нм 5V
Породица Модел Ревизија Ревизија језгра Фреквенција часовника FSB брзина S-spec
5 1 3 Б1 60 МHz 60 MHz Q0352, Q0412, SX753
5 1 3 Б1 66 MHz 66 MHz Q0353, Q0413, SX754
5 1 5 С1 60 MHz 60 MHz Q0466, SX835, SZ949
5 1 5 С1 66 MHz 66 MHz Q0467, SX837, SZ950
Процесор Пентиум P54C 600нм 3.3V
Породица Модел Ревизија Ревизија језгра Фреквенција часовника FSB брзина S-spec
5 2 1 Б1 75 MHz 50 MHz Q0601
5 2 1 Б1 90 MHz 60 MHz Q0542, Q0613, Q0543, SX879, SX885, SX909, SX874
5 2 1 Б1 100 MHz 66 MHz Q0563, Q0587, Q0614, SX886, SX910
5 2 2 Б3 75 MHz 50 MHz Q0606, SX951
5 2 2 Б3 90 MHz 60 MHz Q0628, Q0611, Q0612, SX923, SX922, SX921, SX942, SX943, SX944, SZ951
5 2 2 Б3 100 MHz 66 MHz Q0677, SX960

Неки Интел 80486 OverDrive и Пентиум OverDrive процесори су такође подложни -{FDIV}- грешци, као и F00F грешци.

Методе детекције

Универзални

Присутност грешке се може проверити ручно, извршавањем следећег израчунавања у било којој апликацији која користи процесорску репрезентацију бројева са покретним зарезом, као што су калкулатор за Windows или Мајкрософт Ексел у Windows-у 95/98.

Тачна вредност је:

4,195,8353,145,727=1.333820449136241002

Када се претвара у хексадекадну вредност коју користи процесор, 4195835 = 0x4005FB и 3145727 = 0x2FFFFF. '5' у запису 0x4005 изазива грешку у логичком колу. Као резултат тога, вредност коју враћа Пентиум процесор у одређеним ситуацијама је погрешна на четири или више цифара:[9][10]

4,195,8353,145,727=1.333739068902037589


Види још

Референце

Шаблон:Reflist

Шаблон:Нормативна контрола