Pentium FDIV bag

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
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 требало да буде испуњено једном од пет вредности: -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 може да провери постојање овог бага.

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

Процесор Пентиум Р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 грешци.

Методе детекције[уреди]

Универзални[уреди]

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

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

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


Види још[уреди]

Референце[уреди]

  1. 1,0 1,1 1,2 1,3 1,4 1,5 Professor Thomas Nicely. „Pentium FDIV flaw FAQ”. 
  2. ^ „Statistical Analysis of Floating Point Flaw: Intel White Paper” (PDF). Intel. 09. 07. 2004. стр. 9. Solution ID CS-013007. Архивирано из оригинала (PDF) на датум 06. 04. 2016. Приступљено 05. 04. 2016. 
  3. 3,0 3,1 Tom R. Halfhill (март 1995). „An error in a lookup table created the infamous bug in Intel's latest processor”. BYTE (March 1995). Архивирано из оригинала (– Scholar search) на датум 09. 02. 2006. Приступљено 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. Архивирано из оригинала на датум 10. 07. 2012. Приступљено 24. 12. 2006. 
  6. ^ „How many engineers does it take to change a lightbulb?”. Boiledbeans. 20. 04. 2009. Архивирано из оригинала на датум 03. 02. 2010. Приступљено 10. 11. 2009. 
  7. ^ Cipra, Barry A. (13. 01. 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. 8,0 8,1 „FDIV Replacement Program: Frequently asked questions”. Intel. 20. 03. 2009. Solution ID CS-012748. Архивирано из оригинала на датум 11. 05. 2009. Приступљено 10. 11. 2009. 
  9. ^ „Pentium FDIV bug - a Picture”. Kansas University Institute for Policy and Social Research. 30. 11. 1994. Приступљено 03. 11. 2010. 
  10. ^ „Ivars Peterson's MathTrek: Pentium Bug Revisited”. Mathematical Association of America. Архивирано из оригинала на датум 10. 12. 2008.