90'larda Intel CPU hatası

Oct 12 2020

Üniversitede "Mantık" dersi veren öğretmenim bize Intel işlemcilerle ilgili bir hikaye anlattı: 90'larda Intel, işlemcide kodlanmış sin / cos gibi matematiksel işlevlerin hesaplanmasında bir hata yaptı. Bu hata, bazı banka hesaplarında tutarsızlıklara yol açarak Intel'i kodun doğruluğunu göstermek için mantıkçıları işe almaya yöneltti.

Bu hikayeyi internette araştırmaya çalıştım ama hiçbir şey bulamadım. Bunun hakkında bir şey bilen var mı veya bana bazı kaynaklar verebilir mi?

Yanıtlar

74 StephenKitt Oct 12 2020 at 21:35

Ben Öğretmeniniz atıfta bulundu şüpheli Pentium hata anda medyada büyük haykırış ve Intel geri çağırmıştır kendisi için açtı.FDIV

Bu hata, kayan nokta bölmesinin bazı durumlarda yanlış sonuçlar vermesine neden oldu. Sadece etkilemedi FDIV, bazı ilgili talimatlar etkilendi: diğer bölüm ve kalan talimatlar ve FPTANve FPATAN. Diğer trigonometrik talimatlar şüpheyle tedavi edildi, ancak sonuçta FSINve dahil olmak üzere temizlendi FCOS.

Bununla birlikte, bunun bankalarda sorunlara yol açması pek olası görünmemektedir: finansal uygulamalar tipik olarak kayan nokta temsillerinden kaçınır, bu nedenle bir kayan nokta talimatındaki hataların onları etkilemesi olası değildir.

Bu hatayla ilgili Wikipedia girişine de bakın . Bir başka ünlü Pentium hatası, hesaplama hatalarına neden olmayan F00F hatasıydı ; kilitlenmelere yol açabilir ve işletim sistemlerinde özel işlemlerle çözüldü.

28 Bagnus Oct 13 2020 at 17:56

Stephen Kitt, FDIV hatasıyla ilgili olarak zaten iyi bir cevap verdi. Intel'in mantıkçı çalıştırmasıyla ilgili bazı ayrıntıları dolduracağım:

Bu hata nedeniyle Intel, çok pahalı olan birçok işlemciyi değiştirmek zorunda kaldı. Bunu tekrarlamak istemeyerek, pentiumun ardıllarında uygulanacak algoritmaların doğruluğunu kanıtlamak için biçimsel mantık konusunda geçmişi olan bir dizi bilgisayar bilimcisini işe aldılar. Araştırmaları hakkında daha fazla bilgi edinmek istiyorsanız, bu bilim adamlarından ikisinin yayınlarına bakın:https://www.cl.cam.ac.uk/~jrh13/papers/index.html, https://scholar.google.com/citations?user=MACCA0cAAAAJ&hl=en

20 supercat Oct 13 2020 at 23:19

Intel, bir kayan nokta bölümünü yineleme başına iki bit verecek şekilde hesaplamak için oldukça karmaşık bir donanıma sahipti; bu, bölümün bir kısmının 11 [yerine 11 [yerine 11) olması gereken tüm bit desenlerinin kombinasyonlarını listeleyen oldukça büyük bir tabloya sahip olmayı gerektiriyordu. tüm kalıpları ayrı ayrı listeleyen tablo, her bitin 0, 1 veya X olabileceği girişlere sahip olacaktır, örneğin 100X01X bit kalıbı 1000010, 1000011, 1001010 veya 1001011 ile eşleşecektir, bu nedenle tablonun bir inanılmaz derecede çok sayıda giriş]. Ne yazık ki, tablonun bir kısmı onu üretmek için kullanılan araçtan çip tasarımına aktarılırken bozuldu.

Bölmeye yönelik bu yaklaşımı biraz tuhaf buluyorum, çünkü bölen maddeyi incelemek ve hem bölen (yukarı yuvarlayarak) hem de bölünen (aşağı yuvarlamak) ile çarpıldığında yeni böleni kendi 0.1111 veya 0.11111111'e eşit olan üst bitler, yineleme başına 4 veya 8 bitin çıkarılmasını kolaylaştırır. Son bölüm büyük olasılıkla doğru değerden biraz daha az olacaktır [daha önceki yuvarlama yönleri göz önüne alındığında asla büyük değildir], ancak işleri temizlemek için sonunda yalnızca iki veya üç ardışık yaklaştırma adımına ihtiyaç duyulacak kadar yakın olacaktır. yukarı.

Her durumda, Intel FDIV hatasıyla ilgili en büyük ironi, daha önce, 386/387 döneminde, Weitek tarafından Intel'in yongalarından çok daha hızlı tek duyarlıklı kayan nokta matematiği gerçekleştirebilen rakip bir ürün olmasıydı. t Çift duyarlıklı matematik yapmayın. Normalde çift duyarlıklı matematik kullanan bazı programlar, tek duyarlıklı matematik kullanan ve bu nedenle daha az doğru sonuçlar üreten Weitek için sürümler gönderdi. Intel'in pazarlama ekibi, CPU'nun olması gereken yerde palyaço grafikleriyle süslenmiş ucuz bir hesap makinesine sahip bir anakartı gösteren bir reklam ve "Orijinali isteyin Intel Matematik Eş İşlemcileri veya hangi matematiğe güvenmeniz gerektiğini kim bilebilir? "

2 another-dave Oct 12 2020 at 21:34

Bunun muhtemelen Pentium FDIV hatasına (kayan nokta bölme hatası) atıfta bulunduğunu düşünüyorum .

Trigonometri talimatlarıyla ilgili herhangi bir özel problemi hatırlamıyorum.