Pentium FDIV hatası - Pentium FDIV bug

FDIV hatasıyla 66 MHz Intel Pentium (sSpec=SX837)

Pentium FDIV hata bir olan donanım hata etkileyen kayan nokta birimi arasında (FPU) erken Intel Pentium işlemciler . Hata nedeniyle, işlemci, belirli yüksek hassasiyetli sayı çiftlerini bölerken yanlış ikili kayan nokta sonuçları döndürür . Böcek 1994 yılında Lynchburg Koleji'nde matematik profesörü olan Thomas R. Nicely tarafından keşfedildi . FPU'nun kayan noktalı bölme algoritması tarafından kullanılan bir arama tablosundaki eksik değerler, küçük hatalar elde eden hesaplamalara yol açtı. Bu hatalar çoğu kullanım durumunda nadiren meydana gelir ve doğru çıktı değerlerinden küçük sapmalarla sonuçlanırken, bazı durumlarda hatalar sıklıkla meydana gelebilir ve daha önemli sapmalara yol açabilir.

FDIV hatasının ciddiyeti tartışmalıdır. Çoğu kullanıcı tarafından nadiren karşılaşılsa da ( Byte dergisi, rastgele parametrelerle 9 milyar kayan nokta bölünmesinin 1'inin hatalı sonuçlar üreteceğini tahmin ediyordu), hem kusur hem de Intel'in konuyu ilk ele alışı, teknoloji topluluğu tarafından ağır bir şekilde eleştirildi.

Aralık 1994'te Intel , bir bilgisayar çipinin ilk tam olarak geri çağrılmasında kusurlu işlemcileri geri çağırdı . Ocak 1995'te Intel, "kazançlara karşı 475 milyon dolarlık bir vergi öncesi ücret, görünüşte kusurlu işlemcilerin değiştirilmesiyle ilişkili toplam maliyet" ilan etti.

Açıklama

FDIV hatasının bir tezahürünü gösteren grafik. Her veri noktası , y ekseninde soldaki öncekinden ~3.1789 x 10 −8 daha yüksek olmalıdır , ancak 4195834.4 < x < 4195835.9 bölgesinde sonuç, beklenen değerden ~ 8.14 x 10 −5 kadar farklıdır .

486DX üzerinden Pentium çipindeki kayan noktalı bölme hesaplamalarının hızını artırmak için Intel, kaydırma ve çıkarma bölme algoritmasını Sweeney, Robertson ve Tocher (SRT) algoritmasıyla değiştirmeyi seçti . SRT algoritması, saat döngüsü başına bölme sonucunun iki bitini üretebilirken , 486'nın algoritması yalnızca bir tane üretebilir. 2.048 hücreli programlanabilir bir mantık dizisi kullanılarak uygulanır ; bunlardan 1.066 hücrenin beş değerden biriyle doldurulması gerekir: -2, -1, 0, +1, +2 . Pentium için orijinal dizi derlendiğinde, dizileri çiplere kazıyan ekipmana beş değer doğru şekilde indirilmedi - bu nedenle, +2 içermeleri gerekirken dizi hücrelerinin beşi sıfır içeriyordu.

Sonuç olarak, bu beş hücreye dayanan hesaplamalar hata alır; bu hatalar , SRT algoritmasının özyinelemeli doğası nedeniyle tekrar tekrar birikebilir . Patolojik vakalarda hata, nadiren de olsa sonucun dördüncü önemli basamağına ulaşabilir. Hata genellikle dokuzuncu veya onuncu önemli basamakla sınırlıdır.

Yalnızca belirli pay ve payda kombinasyonları hatayı tetikler. Yaygın olarak bildirilen bir örnek, 4.195.835'in 3.145.727'ye bölünmesidir. Windows Calculator gibi kayan nokta yardımcı işlemcisini kullanan herhangi bir yazılımda bu hesaplamayı yapmak , kullanıcıların Pentium çiplerinin etkilenip etkilenmediğini keşfetmelerine olanak tanır.

Hesaplamanın doğru değeri:

İşlemci tarafından kullanılan onaltılık değere dönüştürüldüğünde, 4.195.835 = 0x4005FB ve 3.145.727 = 0x2FFFFF. 0x4005FB'deki '5', 'boş' dizi hücrelerine erişimi tetikler. Sonuç olarak, hatalı bir Pentium işlemci tarafından döndürülen değer, dört basamaklı veya ötesinde hatalıdır:

Keşif ve yanıt

Lynchburg Koleji'nde matematik profesörü olan Thomas Nicely, asal sayıları , ikiz asal sayıları , asal üçlüleri ve asal dördüzleri numaralandırmak için kod yazmıştı . Bilgisayar grubuna bir Pentium sistemi ekledikten kısa bir süre sonra, 13 Haziran 1994'teki hesaplamalarda bazı tutarsızlıkları hoş bir şekilde fark etti, ancak 19 Ekim 1994'e kadar diğer faktörleri (programlama hataları, anakart yonga setleri vb.) ortadan kaldıramadı . 24 Ekim 1994'te sorunu Intel'e bildirdi. Intel'in Haziran 1994'e kadar bağımsız olarak sorunun farkına vardığı ve bu noktada sorunu çözmeye başladığı, ancak herhangi bir ayrıntıyı kamuya açıklamamayı veya etkilenen CPU'ları geri çağırmamayı tercih ettiği bildirildi.

30 Ekim 1994'te Nicely, çeşitli akademik bağlantılara hatayı açıklayan bir e-posta göndererek, 486-DX4'ler , Pentium'lar ve Pentium klonları üzerindeki kusur için test raporları talep etti . Hata, başkaları tarafından hızla doğrulandı ve bununla ilgili haberler internette hızla yayıldı . Böcek gelen ismi "Pentium FDIV hata" kazanılmış anımsatıcı x86 makine dilinde için f loating noktalı div ision, etkilenen en sık kullanılan öğretim.

Haber ilk olarak 7 Kasım 1994'te Electronic Engineering Times'da Alexander Wolfe tarafından yazılan "Intel bir Pentium FPU arızasını düzeltir" başlıklı bir makalede basında yer aldı ve ardından 22 Kasım'da yayınlanan bir bölümde CNN tarafından alındı. ayrıca New York Times ve Boston Globe tarafından da bildirildi ve ikincisinde ön sayfada yer aldı.

Bu noktada Intel, kayan nokta kusurunu kabul etti ancak bunun ciddi olmadığını ve çoğu kullanıcıyı etkilemeyeceğini iddia etti. Intel, etkilendiğini kanıtlayabilecek kullanıcılara işlemcileri değiştirmeyi teklif etti. Bununla birlikte, çoğu bağımsız tahmin, hatanın çoğu kullanıcı üzerinde çok sınırlı bir etkisi olacağını bulsa da, şirket için önemli ölçüde olumsuz bir baskıya neden oldu. IBM , Intel CPU içeren bilgisayarların satışını durdurdu ve Intel'in hisse senedi fiyatı önemli ölçüde düştü. IBM'in kararının arkasındaki neden, sektördeki bazı kişiler tarafından sorgulandı; IBM, o sırada PowerPC CPU'larını üretti ve bir şirket olarak Pentium veya Intel'e yönelik herhangi bir itibar zararından potansiyel olarak yararlanmaya başladı. Ancak karar, kurumsal bilgisayar ekipmanı alıcılarının mevcut Pentium CPU'ların değiştirilmesini talep etmesine yol açtı ve kısa bir süre sonra diğer bilgisayar üreticileri, hatalı Pentium yongalarının "soru sorulmadan" değiştirilmesini teklif etmeye başladı.

Intel'in yanıtına ilişkin artan memnuniyetsizlik, şirketin talep üzerine tüm hatalı Pentium işlemcilerini 20 Aralık'ta değiştirmeyi teklif etmesine yol açtı. 17 Ocak 1995'te Intel, "kazançlara karşı 475 milyon dolarlık bir vergi öncesi ücret, görünüşte değişimle ilişkili toplam maliyet" açıkladı. kusurlu işlemciler." Bu, 2019'da 743 milyon dolara eşdeğerdir. Intel, bayilerin ve OEM'lerin geri çağırma programına katılmasını engellediği ve son kullanıcıların çipleri kendilerinin değiştirmesini gerektirdiği için eleştirildi. Intel'in destek web sayfasında yayınlanan bunun gerekçesi, "kusurun uygulama doğruluğunu etkileyip etkilemediğini belirlemek son kullanıcının bireysel kararıdır" idi.

Science dergisindeki 1995 tarihli bir makale, bilgisayar hatalarını keşfetmede sayı teorisi problemlerinin değerini açıklar ve Brun'ın sabitinin matematiksel arka planını ve geçmişini verir, bu hatayı keşfettiğinde Nicely'nin üzerinde çalıştığı problem.

Intel'in FDIV hatasına verdiği yanıt , bir sorunun halkla ilişkiler etkisinin, söz konusu sorunun müşteriler üzerindeki pratik etkisini gölgede bırakan bir örnek olarak gösterildi . Çoğu kullanıcının günlük bilgisayarlarında kusurla karşılaşması pek olası olmasa da, şirketin müşteriler etkilendiklerini garanti edemedikçe çipleri değiştirmemeye yönelik ilk tepkisi, endüstri uzmanlarından oluşan sesli bir azınlığın tepkisine neden oldu. Ardından ortaya çıkan tanıtım, tüketicinin CPU'lara olan güvenini sarstı ve sorundan etkilenmesi muhtemel olmayan kişilerden bile harekete geçme talebine yol açtı. O sırada Intel'in CEO'su Andrew Grove, Wall Street Journal'da şunları söyledi: "Sanırım gözden kaçırdığımız konunun özü [...] yapmalı veya yapmamalı".

Hatanın ve ardından geri çağırmanın ardından , yarı iletken endüstrisinde donanım kayan nokta işlemlerinin resmi doğrulamasının kullanımında belirgin bir artış oldu . Hatanın keşfedilmesiyle, 1996'da "kelime düzeyinde model denetimi" adı verilen SRT algoritmasına uygulanabilen bir teknik geliştirildi. Intel, daha sonraki CPU mimarilerinin geliştirilmesinde resmi doğrulamayı kapsamlı bir şekilde kullanmaya devam etti. Pentium 4'ün geliştirilmesinde , sembolik yörünge değerlendirmesi ve teorem ispatı, tespit edilmemeleri durumunda benzer bir geri çağırma olayına yol açabilecek bir dizi hatayı bulmak için kullanıldı. Resmi doğrulamayı birincil doğrulama yöntemi olarak kullanan ilk Intel mikro mimarisi , 2008'de geliştirilen Nehalem'di .

Etkilenen modeller

FDIV hatası 60 ve 66 MHz Pentium P5 800'ü D1'den önceki adım seviyelerinde ve 75, 90 ve 100 MHz Pentium P54C 600'ü B5'ten önceki adımlarda etkiler. 120 MHz P54C ve P54CQS CPU'lar etkilenmez.

Yazılım yamaları

Hatayı gidermek için üreticiler tarafından çeşitli yazılım yamaları üretildi. IEEE Computational Science & Engineering'deki bir makalede özetlenen belirli bir algoritma, hatalı olarak sıfır içeren programlanabilir mantık dizisi hücrelerine erişimi tetikleyecek pay ve paydaları kontrol etmek ve bulunursa, her iki sayıyı da 15/16 ile çarpmaktır. Bu onları 'buggy' aralığından çıkarır. Ancak, bunu yapmanın önemli bir hız cezası vardır - bazı durumlarda hesaplamayı gerçekleştirmek için geçen süreyi ikiye katlar.

Yazılım şirketlerinin karşılaştığı ana zorluk, düzeltmeyi, çoğu kendi kontrolleri dışındaki kitaplıklara dayanan önceden var olan yazılımlarda uygulamaktı . Wolfram Research gibi bazı şirketler, FDIV işlem kodunu yasa dışı bir talimatla değiştirmek için mevcut yürütülebilir dosyaların makine kodunu doğrudan düzeltmeyi seçti . Bu daha sonra bir istisna işleyicisinin (ayrıca yama uygulanmış) yakalayacağı bir istisnayı tetikler. Buradan, hatayı gidermek için rasgele kod yürütülebilir.

Microsoft, sürümlerinde sistem düzeyinde geçici çözümleri işletim sundu Windows'un Windows XP kadar. Hatanın varlığını kontrol etmek ve bulunursa FPU'yu devre dışı bırakmak için işletim sistemine yardımcı programlar dahil edildi.

Ayrıca bakınız

Referanslar

Dış bağlantılar