Bug CPU Intel di tahun 90-an
Guru saya yang mengajar "Logika" di universitas menceritakan sebuah kisah tentang prosesor Intel, yang berbunyi: Di tahun 90-an Intel memiliki bug dalam kalkulasi fungsi matematika seperti sin / cos yang dikodekan di prosesor. Bug ini menciptakan ketidakkonsistenan di beberapa rekening bank, membuat Intel menyewa ahli logika untuk menunjukkan kebenaran kode.
Saya mencoba mencari cerita ini di seluruh web tetapi saya tidak menemukan apa pun. Adakah yang tahu tentang itu atau adakah yang bisa memberi saya beberapa sumber?
Jawaban
Saya menduga guru Anda mengacu pada FDIVbug Pentium , yang menyebabkan protes besar di media pada saat itu dan Intel mengeluarkan penarikan kembali.
Bug ini menyebabkan pembagian floating-point memberikan hasil yang salah dalam beberapa kasus. Itu tidak hanya mempengaruhi FDIV, beberapa instruksi terkait terpengaruh: instruksi divisi dan sisa lainnya, FPTANdan FPATAN. Instruksi trigonometri lainnya diperlakukan dengan kecurigaan, tetapi akhirnya dihapus, termasuk FSINdan FCOS.
Namun tampaknya tidak mungkin hal ini akan menyebabkan masalah di bank: aplikasi keuangan biasanya menghindari representasi floating point, sehingga kesalahan dalam instruksi floating-point tidak akan mempengaruhi mereka.
Lihat juga entri Wikipedia tentang bug ini . Bug Pentium terkenal lainnya adalah bug F00F , yang tidak menyebabkan kesalahan kalkulasi; ini dapat menyebabkan penguncian, dan ditangani dengan penanganan khusus dalam sistem operasi.
Stephen Kitt telah memberikan jawaban yang bagus tentang bug FDIV. Saya akan mengisi beberapa detail tentang Intel yang mempekerjakan ahli logika:
Karena bug ini, Intel harus mengganti banyak prosesor, yang harganya sangat mahal. Tak ingin mengulanginya, mereka menyewa sejumlah ilmuwan komputer dengan latar belakang logika formal untuk membuktikan kebenaran algoritme yang akan diterapkan pada penerus pentium. Jika Anda ingin mengetahui lebih banyak tentang penelitian mereka, bacalah publikasi dari dua ilmuwan berikut:https://www.cl.cam.ac.uk/~jrh13/papers/index.html, https://scholar.google.com/citations?user=MACCA0cAAAAJ&hl=en
Intel memiliki sekumpulan perangkat keras yang agak rumit untuk menghitung hasil bagi titik-mengambang dengan cara yang menghasilkan dua bit per iterasi, yang memerlukan tabel yang agak besar yang mencantumkan semua kombinasi pola bit di mana bagian dari hasil bagi harus 11 [daripada mendaftar semua pola secara individual, tabel akan memiliki entri di mana setiap bit mungkin 0, 1, atau X, sehingga misalnya pola bit 100X01X akan cocok dengan 1000010, 1000011, 1001010, atau 1001011, jadi tabel tidak memerlukan jumlah entri yang sangat besar]. Sayangnya, bagian dari tabel rusak saat dipindahkan dari alat apa pun yang digunakan untuk membuatnya, ke dalam desain chip.
Saya menemukan pendekatan pembagian ini agak aneh, karena akan cepat memeriksa pembagi dan menghasilkan nilai yang, jika dikalikan dengan pembagi (pembulatan ke atas) dan pembilang (pembulatan ke bawah), akan memaksa pembagi baru untuk memiliki bit atas sama dengan 0.1111 atau 0.11111111, yang akan memudahkan untuk mengekstrak 4 atau 8 bit per iterasi. Hasil bagi akhir kemungkinan akan sedikit kurang dari nilai yang benar [tidak pernah lebih besar, mengingat petunjuk pembulatan sebelumnya], tetapi itu akan cukup dekat sehingga hanya dua atau tiga pasangan langkah-langkah perkiraan-berurutan yang diperlukan di bagian akhir untuk membersihkan barang-barang naik.
Bagaimanapun, ironi utama dengan bug Intel FDIV adalah bahwa, sebelumnya, selama era 386/387, ada produk pesaing dari Weitek yang dapat melakukan matematika floating-point presisi tunggal jauh lebih cepat daripada chip Intel, tetapi tidak berhasil. t melakukan matematika presisi ganda sama sekali. Beberapa program yang biasanya menggunakan matematika presisi ganda dikirim versi untuk Weitek yang menggunakan matematika presisi tunggal dan dengan demikian menghasilkan hasil yang kurang akurat. Tim pemasaran Intel memutuskan untuk mengeksploitasi kekurangan presisi ini (yang dirancang, dan dianggap dapat diterima) dengan membuat iklan yang menunjukkan motherboard dengan kalkulator toko uang receh yang dihiasi dengan grafis badut di mana CPU seharusnya berada, dan teks "Minta yang asli Intel Math CoProcessors, atau siapa yang tahu matematika apa yang harus Anda andalkan ".
Saya pikir ini mungkin mengacu pada bug Pentium FDIV ( bug pembagian floating-point).
Saya tidak ingat ada masalah khusus dengan instruksi trigonometri.