Intel'in Pentium FDIV Hatası
-
Arka plan: 1993'te Intel, yüksek performanslı Pentium işlemcisini piyasaya sürdü. Pentium, önceki Intel 486 işlemcisine göre daha hızlı kayan noktalı bölme algoritması dahil birçok iyileştirme içeriyordu. Ancak bir yıl sonra matematik profesörü Nicely, ikiz asalların terslerini araştırırken Pentium'un kayan noktalı bölme yaparken yanlış sonuçlar ürettiğini fark etti.
-
Hatanın keşfi ve etkisi: Intel bu sorunu "çok önemsiz bir teknik mesele" olarak değerlendirdi, ancak hata medyada büyük bir olaya dönüştü. Intel sonunda tüm kusurlu Pentium çiplerini değiştirmeye karar verdi ve bu karar şirkete 475 milyon dolara mal oldu.
-
Hatanın nedeni: Pentium'un bölme algoritması bir arama tablosu kullanır. Intel 1994'te, bu hatanın nedeninin bir betik hatası yüzünden tablodan beş girdinin eksik kalması olduğunu açıkladı; ancak gerçekte matematiksel bir hata nedeniyle 16 girdi eksikti. Bu eksik girdilerden beşi FDIV hatasına yol açtı.
-
Kayan noktalı sayıların genel görünümü: Kayan noktalı sayılar hem çok büyük hem de çok küçük sayıları temsil edebilir. Intel'in 8087 kayan noktalı yardımcı işlemci çipi, IEEE 754 standardının geliştirilmesine katkıda bulundu ve Pentium dahil çoğu bilgisayar bu standardı uyguladı.
-
SRT bölme: Pentium, bölme işlemi için SRT algoritmasını kullanır ve bu, standart ikili bölmeye göre iki kat daha hızlıdır. SRT algoritması, bölüm basamaklarını seçmeyi kolaylaştırmak için alışılmadık bir yaklaşım kullanır.
-
Arama tablosunun yapısı: Pentium'un arama tablosu 2048 girdi içerir ve eksik olan beş girdi FDIV hatasına neden olur. Bu tablo programlanabilir mantık dizisi (PLA) ile gerçekleştirilmiştir.
-
Hatanın matematiksel sınırları: Bölme algoritmasının kilit adımı, bölüm basamağını elde etmek için kısmi kalanı bölenle bölmektir. Bu süreçte yanlış
qdeğeri seçilirse algoritma bunu telafi edemez. -
Carry-save ve carry-lookahead toplayıcılar: Pentium'un bölme devresi, toplama ve çıkarmayı verimli biçimde yapmak için carry-save toplayıcı kullanır. Bu toplayıcı, FDIV hatasının ortaya çıkmasında önemli bir rol oynar.
-
Hatanın düzeltilmesi: Intel, tablodaki kullanılmayan tüm girdileri 2 ile doldurarak hatayı düzeltti. Bu, yanlış girdilere erişim olasılığını ortadan kaldırdı ve PLA denklemlerini sadeleştirerek PLA'yı daha küçük hale getirdi.
1 yorum
Hacker News görüşleri
Yazar, Pentium hatası hakkında sorular varsa yanıtlamaya hazır olduğunu belirtiyor
Intel'in teknik notunda, sıradan bir kullanıcının bu sorunla 27.000 yılda bir karşılaşacağı iddia edilmişti; ancak IBM, müşterilerin birkaç günde bir bu sorunla karşılaşabileceğini analiz etti
Gerçek kullanım sırasında hatayı fark eden yalnızca bir kişi olmuştu
Müşterilerin CPU'larını kontrol etme imkânı olmadığı için, sorunu çözmek amacıyla kütüphanelere özel kod eklemek zorunda kaldıkları bir deneyim paylaşılıyor
Intel'in tablo oluşturma algoritmasındaki soruna dikkat çekilerek, bunun PR tarafında küçük bir mesele gibi anlatıldığı ancak gerçekte daha büyük bir sorun olduğu vurgulanıyor
Intel'in tablodaki kullanılmayan girdilerin tamamını neden 2 ile doldurduğu merak ediliyor