- Pentium yang dirilis pada 1993 mengadopsi metode SRT untuk pembagian floating-point yang lebih cepat daripada Intel 486, tetapi setelah kesalahan instruksi FDIV terungkap pada 1994, Intel setuju mengganti semua chip cacat dengan biaya $475 juta
- Cacatnya berada pada PLA yang mengimplementasikan lookup table untuk pembagian. Intel menyatakan 5 entri hilang akibat kesalahan skrip, tetapi analisis die menunjukkan 16 entri hilang, dengan 5 di antaranya benar-benar memicu kesalahan
- Pembagian SRT radix-4 menghasilkan 2 bit hasil bagi per tahap sehingga cepat, tetapi memiliki struktur kompleks: memetakan sisa parsial dan pembagi ke tabel P-D berisi 2048 entri, lalu memampatkannya menjadi PLA 112 baris
- Akar penyebabnya adalah indeks lookup bisa menjadi satu sel lebih rendah daripada sisa parsial sebenarnya karena carry-save adder, sementara Intel menerapkan koreksi matematis yang keliru pada batas atas area +2 sehingga sebagian sel dibiarkan bernilai 0
- Pentium yang diperbaiki tidak hanya mengisi 5 entri yang hilang, tetapi mengisi seluruh area tabel yang tidak digunakan dengan 2, menyederhanakan batas; baris PLA yang digunakan juga turun menjadi 74 dari 120, sehingga sekitar 1/3 lebih kecil daripada PLA yang cacat
Bagaimana bug FDIV terungkap dan biayanya
- Intel merilis prosesor Pentium berkinerja tinggi pada 1993, dengan algoritme pembagian floating-point yang lebih cepat daripada Intel 486 sebelumnya
- Pada Mei 1994, pengujian internal Intel menemukan bahwa pembagian floating-point Pentium sangat jarang menghasilkan nilai yang tidak akurat
- Intel menilai ini masalah kecil karena diperkirakan hanya sekitar 1 dari 9 miliar nilai yang memicunya
- Meski begitu, sirkuit Pentium diam-diam diperbaiki
- Pada Oktober 1994, Profesor Thomas Nicely menemukan hasil perhitungan yang salah saat meneliti resiprokal bilangan prima kembar
- Perhitungan
1/824633702441salah pada tiga komputer Pentium berbeda, sementara komputer-komputer lama memberikan jawaban yang benar - Karena tidak mendapat tanggapan memadai dari dukungan teknis Intel, Nicely mengirim email ke majalah komputer dan sejumlah individu
- Email ini diunggah ke forum Compuserve, dan Electronic Engineering Times menerbitkan Intel fixes a Pentium FPU glitch pada 7 November
- Perhitungan
- Awalnya Intel hanya ingin menawarkan penggantian kepada pelanggan yang dapat meyakinkan insinyur bahwa mereka membutuhkan akurasi, dan pengguna menyampaikan keluhan di grup online seperti comp.sys.intel
- Setelah liputan CNN pada 22 November, perhatian publik meningkat, dan situasi memburuk ketika IBM mengumumkan penghentian pengiriman komputer Pentium pada 12 Desember
- Pada 19 Desember, Intel mengumumkan akan mengganti chip cacat untuk semua pelanggan
- Biaya recall adalah $475 juta
- Dalam nilai saat ini, jumlahnya lebih dari $1 miliar
Pembagian SRT yang digunakan Pentium
- Pembagian panjang biner biasa lambat karena membutuhkan satu clock untuk setiap bit hasil bagi
- Intel 486 dan prosesor sebelumnya menggunakan pendekatan ini
- Pentium menggunakan algoritme SRT dengan radix-4, yaitu dalam satuan 2 bit
- Menghasilkan 2 bit hasil bagi pada setiap tahap, dua kali lebih cepat daripada pembagian biner biasa
- Setiap digit hasil bagi bernilai salah satu dari
-2,-1,0,1,2
- SRT mengizinkan digit hasil bagi negatif, sehingga meskipun satu tahap memilih nilai yang agak terlalu besar, tahap berikutnya dapat mengoreksinya dengan digit negatif
- Digit hasil bagi tidak harus ditentukan secara unik, sehingga dapat dipilih cepat melalui lookup table
- Sebagian bit sisa parsial dan pembagi dipotong untuk mengurangi ukuran tabel ke tingkat yang praktis
- Metode ini cepat, tetapi membutuhkan tambahan lookup table, sirkuit untuk menambah atau mengurangi kelipatan
1atau2, serta sirkuit untuk mengonversi ke bentuk hasil bagi standar
Struktur yang memampatkan tabel 2048 entri menjadi PLA 112 baris
- Lookup table SRT Pentium menerima sisa parsial
pdan pembagidsebagai input, lalu mengeluarkan digit hasil bagi yang sesuai - Tabel ini terdiri dari 2048 entri
- Pembagi diskalakan ke antara 1 dan 2, menjadi koordinat sumbu X
- Sisa parsial menjadi koordinat sumbu Y dengan nilai antara -8 dan 8
- Untuk pembagi, digunakan 4 bit dari
1.dddd, dengan bit depan yang selalu 1 dikecualikan - Sisa parsial dipotong menjadi nilai signed 7 bit
pppp.ppp - Total indeks 11 bit menunjuk ke
2^11 = 2048entri
- Tabel memiliki 5 area yang sesuai dengan digit hasil bagi
+2,+1,0,-1,-2- Sebagian area atas dan bawah tidak digunakan secara matematis dalam SRT
- Pada tabel cacat asli, entri yang tidak digunakan diisi 0
- 5 entri merah yang bermasalah seharusnya bernilai
+2, tetapi dibiarkan 0
- Pentium mengimplementasikan tabel ini bukan sebagai ROM, melainkan sebagai PLA (Programmable Logic Array)
- Jika seluruh tabel disimpan sebagai ROM, dibutuhkan 2048 baris
- Karena struktur tabel teratur dan banyak area kosong, PLA hanya menggunakan 112 baris
- PLA terdiri dari AND plane dan OR plane
- AND plane menghasilkan term logika dari kombinasi bit input dan bit komplemennya
- OR plane menggabungkan term-term tersebut untuk membuat bit output yang menunjukkan apakah hasil bagi bernilai
1atau2
- Dengan mengekstrak pola transistor PLA melalui mikroskop, ekspresi logika tiap baris PLA dapat direkonstruksi
- Baris PLA tidak bekerja sebagai satu sel tabel, melainkan seperti area persegi panjang yang mencakup banyak sel sekaligus
- Semakin bergerigi batas tabel tertentu, semakin banyak baris PLA yang dibutuhkan
Batas matematis dan area +2 yang salah
- Langkah inti pembagian SRT adalah memilih digit hasil bagi
qberdasarkan rasiop/d, yaitu sisa parsialpdibagi pembagid - Rentang yang diperbolehkan untuk
p/dharus berada dalam[-8/3, 8/3]karena alasan matematis- Setelah memilih digit hasil bagi,
q*ddikurangkan lalu dikalikan 4 untuk membuat sisa parsial tahap berikutnya - Agar proses ini dapat diulang, rentang baru harus berukuran sama dengan rentang awal
- Setelah memilih digit hasil bagi,
- SRT memiliki redundansi, sehingga pada sebagian interval salah satu dari dua digit hasil bagi dapat dipilih
- Namun jika memilih
0di tempat yang seharusnyaq=2, sisa parsial berikutnya keluar dari rentang yang diperbolehkan dan algoritme tidak dapat pulih - Bug FDIV termasuk kasus ini
- Namun jika memilih
- Tabel P-D Pentium adalah kuantisasi batas matematis tersebut ke tingkat sel
- Batas diagonal menentukan sel mana yang wajib
+2, boleh+1atau+2, wajib+1, dan seterusnya
- Batas diagonal menentukan sel mana yang wajib
- Hasil analisis die menunjukkan bahwa garis batas magenta bagian atas pada tabel cacat seharusnya selalu berada di atas garis batas matematis hitam, tetapi berulang kali melintasinya
- Akibatnya, sebagian sel yang wajib
+2tetap bernilai 0 - Sel-sel inilah entri hilang yang memicu bug FDIV
- Akibatnya, sebagian sel yang wajib
Bagaimana carry-save adder membuat kesalahan langka tetapi menentukan
- Sirkuit pembagian Pentium menggunakan carry-save adder untuk mempercepat penjumlahan dan pengurangan
- Carry-save adder tidak langsung mempropagasikan carry, melainkan menyimpannya dalam word terpisah, sehingga cocok untuk pembagian yang membutuhkan banyak penjumlahan
- Pada akhirnya tetap diperlukan penjumlahan yang lebih lambat untuk menggabungkan carry tersimpan
- Indeks lookup table membutuhkan sisa parsial, tetapi carry-save adder menyimpan sisa parsial terpisah sebagai bit sum dan bit carry
- Pentium menggunakan carry-lookahead adder untuk menghitung cepat hanya 7 bit yang dibutuhkan oleh indeks tabel
- Sirkuit ini menghitung carry tiap posisi secara paralel
- Tidak cocok untuk word besar karena kompleksitasnya meningkat, tetapi praktis untuk nilai 7 bit
- Masalahnya, sisa parsial berukuran 64 bit sedangkan perhitungan indeks tabel hanya menggunakan 7 bit
- Ketika bit lainnya dipotong sebelum dijumlahkan, sisa parsial untuk indeks bisa menjadi sedikit lebih rendah daripada nilai sebenarnya
- Secara spesifik, bisa muncul offset satu sel lebih rendah daripada sel yang benar, yaitu
1/8
- Karena efek ini, sebagian garis batas harus digeser turun
1/8, tetapi tidak semua garis batas boleh digeser- Batas
+2bagian atas tidak boleh digeser turun, tetapi Intel menghasilkan tabel yang keliru menggesernya - Efek carry-save ini merupakan efek yang sudah dikenal dan juga disebutkan dalam makalah pembagian SRT pada masa itu
- Batas
Titik perbedaan antara penjelasan Intel dan analisis die
- White paper Intel menjelaskan bahwa beberapa entri hilang dari PLA karena ada masalah pada skrip yang memasukkan tabel ke PLA
- Intel menyebutnya Programmable Lookup Array, tetapi struktur sebenarnya adalah Programmable Logic Array
- Analisis die menilai entri yang hilang lebih cocok dijelaskan sebagai kesalahan batas matematis daripada sekadar kesalahan penyalinan
- Program pembuat tabel mungkin salah mendefinisikan kondisi batas
- Istilah “skrip” secara teknis bisa benar jika tabel dibuat dengan program C, tetapi inti masalahnya ditafsirkan sebagai batas matematis yang keliru
- The Pentium Chronicles karya Robert Colwell memberikan penjelasan berbeda
- Penjelasannya: desain Pentium awalnya menggunakan lookup table yang sama seperti 486, lalu menjelang peluncuran terjadi kesalahan saat dioptimalkan di bawah tekanan penghematan ruang die
- Ada beberapa hal yang tidak cocok dengan penjelasan ini
- Sejak awal, Pentium menggunakan algoritme pembagian yang berbeda dari 486
- Pentium memakai SRT radix-4, sedangkan 486 menggunakan pembagian biner standar
- 486 tidak memiliki lookup table tersebut
- PLA cacat masih memiliki 8 baris tidak digunakan, sehingga jika tujuannya sekadar mengecilkan sirkuit, baris-baris itu bisa dihapus terlebih dahulu
Mengapa PLA yang diperbaiki menjadi lebih kecil
- Laporan saat itu menyebut Intel menambahkan beberapa puluh transistor atau gate sequence ekstra ke PLA untuk memperbaiki cacat
- PLA yang diperbaiki yang terlihat pada die menunjukkan hal sebaliknya
- Ukuran PLA tetap sama
- Sekitar 1/3 term dihapus
- Dari 120 baris, hanya 74 yang digunakan dan 46 sisanya kosong
- PLA cacat asli hanya memiliki 8 baris kosong
- Perbaikan Intel bukan sekadar mengisi 5 entri yang hilang dengan
2- Seluruh entri tabel yang sebelumnya tidak digunakan diisi dengan 2
- Dengan begitu, kemungkinan mengakses entri kosong secara tidak sengaja hilang
- Ketika area yang tidak digunakan diisi 2, batas tabel menjadi lebih sederhana
- Batas bergerigi membutuhkan banyak term PLA
- Area persegi panjang besar dapat dicakup oleh satu term PLA
- Karena itu, meskipun lebih banyak sel tabel diisi, ekspresi PLA justru menjadi lebih sederhana
- Karena term logika PLA yang diperbaiki sepenuhnya berbeda dari PLA asli, sulit menunjuk beberapa transistor tertentu sebagai perbaikan bug
Dampak nyata dan kontroversi
- Probabilitas cacat terjadi pada pembagian acak sangat rendah, sekitar 1 banding 9 miliar
- Hasil pembagian yang salah biasanya berbeda pada digit desimal ke-9 atau ke-10
- Dalam kasus terburuk yang jarang, kesalahan muncul pada angka signifikan ke-4
- White paper Intel memperkirakan kemungkinan pengguna umum mengalami masalah adalah sekali dalam 27.000 tahun
- Intel menyatakan ini bukan masalah bagi sebagian besar pengguna, dan sebagian pengguna di bidang sains/rekayasa serta rekayasa finansial mungkin membutuhkan prosesor yang diperbaiki atau workaround perangkat lunak
- Dalam analisisnya sendiri, IBM memperkirakan pelanggan dapat mengalami masalah setiap beberapa hari dan menghentikan penjualan Pentium
- Saat itu IBM juga memiliki prosesor pesaing, PowerPC
- Ada juga penilaian bahwa dalam penggunaan nyata, orang yang tampaknya menemukan bug ini hanyalah Profesor Nicely
- Analisis IBM dinilai tampak menyetel angka yang mudah memicu kesalahan
- Kebanyakan pengguna tidak akan menemui bug ini, dan sekalipun terjadi, penurunan kecil akurasi floating-point kemungkinan tidak menjadi masalah
- Namun bug FDIV dapat direproduksi secara deterministik
- Jika dividend dan divisor tertentu memicu masalah, hasilnya 100% salah
- Karena pelanggan dapat mereproduksinya dengan mudah di komputer mereka sendiri, Intel sulit berargumen bahwa ini adalah “masalah yang tidak akan pernah ditemui”
Bug prosesor setelahnya dan microcode yang dapat dipatch
- Bug FDIV adalah salah satu bug prosesor paling terkenal, tetapi Intel juga memiliki bug penting lainnya
- Sebagian prosesor 386 awal memiliki masalah perkalian 32 bit
- Pada kondisi suhu, tegangan, dan frekuensi tertentu, hasilnya salah secara tidak terduga
- Penyebabnya adalah masalah layout dengan margin elektrik yang tidak memadai
- Intel membatasi penjualan chip cacat ini ke pasar 16 bit dan menandainya “16 BIT S/W ONLY”
- Masalah Pentium lainnya adalah F00F bug yang ditemukan pada 1997
- Urutan instruksi tertentu yang dimulai dengan
F0 0Fmembuat prosesor berhenti hingga reboot - Masalah ini diselesaikan melalui pembaruan sistem operasi
- Urutan instruksi tertentu yang dimulai dengan
- Pada Pentium, microcode di-hardcode dalam ROM sehingga bug FDIV tidak dapat diperbaiki melalui pembaruan microcode
- Intel menambahkan microcode yang dapat dipatch pada Pentium Pro tahun 1995
- Awalnya untuk debugging dan pengujian chip
- Setelah bug FDIV, nilainya untuk perbaikan bug juga terbukti
- Pentium Pro memiliki SRAM yang dapat menampung hingga 60 microinstruction bersama microcode ROM, dan BIOS dapat memuat patch saat boot
- Patch microcode prosesor Intel modern digunakan untuk berbagai masalah, mulai dari kerentanan Spectre hingga masalah tegangan
Kesalahan yang lahir dari sirkuit yang makin kompleks
- Seiring bertambahnya jumlah transistor prosesor mengikuti Hukum Moore, sirkuit dan algoritme juga menjadi makin kompleks
- Perubahan dukungan pembagian memperlihatkan hal ini dengan jelas
- Intel 8080 pada 1974 menggunakan 6000 transistor dan tidak mendukung pembagian hardware maupun aritmetika floating-point
- Intel 8086 pada 1978 menggunakan 29.000 transistor dan mengimplementasikan pembagian integer dengan microcode, tetapi floating-point membutuhkan koprosesor 8087
- Intel 486 pada 1989 mengintegrasikan dukungan floating-point ke chip dengan 1,2 juta transistor
- Pentium pada 1993 menggunakan 3,1 juta transistor dan mengadopsi algoritme pembagian SRT yang lebih cepat tetapi kompleks
- PLA pembagian Pentium saja memiliki sekitar 4900 situs transistor
- Ini lebih banyak daripada keseluruhan prosesor MOS Technology 6502
- Artinya, satu komponen sirkuit pembagian Pentium menggunakan lebih banyak transistor daripada seluruh prosesor pada 1975
- Dampak jangka panjang bug FDIV masih diperdebatkan
- Pesaing seperti AMD memperoleh keuntungan dari iklan yang mengejek masalah Pentium
- Robert Colwell menilai bug FDIV sangat meningkatkan pengenalan nama Pentium dan menunjukkan bahwa Intel mendukung mereknya, sehingga dampak bersihnya bisa saja positif
- Intel berhasil melewati bug FDIV, tetapi cacat saat itu menunjukkan bahwa ketika matematika yang kompleks, pemampatan sirkuit, dan keterbatasan verifikasi berpadu, kesalahan yang sangat langka pun dapat berkembang menjadi masalah kepercayaan berskala besar
1 komentar
Komentar Hacker News
Saya penulisnya. Kalau ada pertanyaan soal Pentium, saya bisa menjawab :-)
Thread Mastodon tentang bug ini sempat naik di HN beberapa minggu lalu, jadi mungkin sudah familier, tetapi sekarang saya sudah menyelesaikan tulisan blog yang lebih detail. Postingan HN sebelumnya juga punya cukup banyak komentar: https://news.ycombinator.com/item?id=42391079
Di dalam Intel sendiri ada kesalahan yang lebih parah, dan di perusahaan lain juga ada, tetapi hal-hal seperti itu benar-benar terlupakan. Saya penasaran dengan pengerjaan ulang value stack pada unit floating-point Pentium—saya tidak tahu nama tepatnya. Ini sudah lama sekali, tetapi bukankah mereka melakukan semacam bentuk awal register renaming sehingga
fxchgharus dikelola manual dengan hati-hati?Seberapa sulit “men-dump” mikrokode sebagai bitstream? Apakah bisa dilakukan secara programatis dari foto die beresolusi tinggi? Tentu saja itu mungkin masih tergolong mudah dibandingkan merekayasa balik apa arti bitstream tersebut
Saya juga penasaran dengan bagian “meneliti PLA secara saksama dengan mikroskop”. Apakah pekerjaan seperti ini dilakukan di rumah, peralatan apa yang ada di lab, dan bagaimana teknik seperti ini dipelajari?
Setelah dipikir-pikir, saya jadi penasaran mengapa bagian lookup table yang tidak digunakan tidak diisi dengan 2 dan -2 sejak awal
Bug-nya sendiri menarik, tetapi respons Intel juga menarik dengan sendirinya. Sepertinya mereka tidak mengganti prosesor cacat dengan yang bebas cacat untuk semua orang yang menginginkannya, dan akibatnya mereka mendapat reputasi buruk yang luar biasa
Sebagai perbandingan, saya banyak teringat pada peluncuran Amazon Colorsoft. Sebagian perangkat, termasuk milik saya, mengalami masalah grafis berupa garis kuning. Amazon memeriksa fakta selama sekitar satu atau dua hari, lalu mengakuinya, dan setelah itu diam-diam mengganti semuanya. Bukan recall; kalau diminta, mereka mengirim produk baru. Pengganti saya datang hari Jumat, semoga masalahnya beres. Ketika peluncuran tersandung, jelas terlihat bahwa sistem retur/dukungan yang sangat solid merupakan keunggulan yang jauh lebih besar daripada yang diperkirakan lewat analisis
Mirip juga, masalah noise Apple AirPods Pro beberapa tahun lalu belakangan ini tidak terlalu banyak diberitakan. AirPods saya harus diganti dua kali, tetapi Apple juga menggantinya diam-diam, dan rasanya kemampuan dukungan mereka, meski tidak terlalu terlihat dari luar, bekerja cukup kuat
Colorsoft: https://www.tomsguide.com/tablets/e-readers/amazon-kindle-co...
AirPods Pro: https://support.apple.com/airpods-pro-service-program-sound-...
Dari sisi Apple, iPhone 4 antennagate adalah pembanding yang lebih baik. Solusi yang setara di sana adalah mengganti gratis produk flagship yang menjadi inti pendapatan, tetapi Apple tidak melakukannya
Sebaliknya, Intel pada akhirnya memberikan penggantian gratis kepada siapa pun yang memintanya, dan menanggung pukulan finansial besar
Sikap Apple yang bertanggung jawab atas produk seperti itu benar-benar layak dihormati
Saya paham maksudnya karena pernah mengalami situasi “garansi bayangan” pada produk Apple konsumen, tetapi menurut saya itu sangat berbeda dari krisis TI yang dihadapi Intel. Pada masa itu, ungkapan “IBM bilang begitu” punya bobot yang sangat besar di dunia TI
Dalam white paper Intel disebutkan bahwa pengguna umum akan menemui masalah ini sekali setiap 27.000 tahun, dan bahwa hal itu bisa diabaikan dibandingkan penyebab galat lain seperti bit flip pada DRAM. Sebaliknya, dalam analisis internalnya IBM menilai pelanggan bisa mengalaminya setiap beberapa hari
Rasanya kedua angka itu mungkin tidak sejauh kelihatannya. Intel tampaknya melihatnya berdasarkan satu pengguna, sedangkan IBM kemungkinan memikirkannya dari sudut pandang permintaan dukungan
Di tempat kerja, saya pernah mengalami masalah serupa. Kalau memproses 100 juta request per hari, masalah satu dalam satu miliar akan muncul beberapa kali dalam sebulan. Kalau itu jenis yang diketahui pelanggan, atau lebih buruk lagi manajer, orang-orang mengabaikan penyebutnya dan mulai curiga semua orang tidak kompeten. Empat kali sebulan bisa diterjemahkan menjadi “selalu” dalam bias pengalaman manusia. Kalau dua kali terjadi klaster statistik tiga kali dalam seminggu, seseorang pasti meledak
Mereka juga menilai angka-angka yang dipakai orang 90 kali lebih mungkin memicu galat dibanding angka berdistribusi seragam versi Intel. Dari situ muncul hasil bahwa satu pengguna akan mengalami galat setiap 24 hari
Ada bagian yang mengatakan, “tampaknya hanya satu orang, Profesor Nicely, yang menyadari bug ini dalam penggunaan nyata”
Itu mengingatkan saya pada sebuah studi lama yang membagikan kalkulator untuk pelajaran matematika kepada para siswa. Kalkulatornya telah dimanipulasi agar menghasilkan hasil yang salah, dan para peneliti ingin tahu seberapa besar kesalahan kalkulator agar siswa menyadari ada yang aneh
Jawabannya adalah 2 kali lipat
Menyadari galat dan terdampak oleh galat adalah dua hal yang sama sekali berbeda. Berapa banyak orang yang memeriksa apakah output komputer benar? Menurut saya sangat, sangat, sangat sedikit. Saya sendiri juga tidak melakukannya saat melakukan perhitungan engineering di Boeing, kecuali satu kasus ketika saya membalik persamaan untuk memastikan output cocok dengan input
Pada akhirnya ini sangat bergantung pada konteks dan seberapa baik orang yang menghitung memahami materinya
Seberapa banyak penggunaan FDIV di Pentium yang ditujukan untuk output yang penting secara numerik, bukan multimedia?
Saya ingat bug itu. Karena kami tidak bisa mengontrol CPU apa yang dipakai pelanggan untuk menjalankan program, kami harus memasukkan kode deteksi FPU yang cacat ke dalam library dan menjalankan kode workaround. Kode ini disediakan oleh Intel
Dengan kata lain, masalah Intel menjadi masalah saya, ugh
Saya teringat lelucon yang beredar saat itu. Lelucon itu menangkap berbagai nuansa era 90-an dengan baik:
I AM PENTIUM OF BORG.
DIVISION IS FUTILE.
YOU WILL BE APPROXIMATED.
Satu lagi tulisan bagus dari Ken. Saya ingat terutama karena PC pertama yang saya beli dengan uang sendiri memakai CPU yang terdampak. Sebelumnya saya tidak terlalu tertarik karena PC tidak bisa menjalankan software “sungguhan”
Namun Windows NT mengubah itu, dan terima kasih kepada Cutler. Motherboard murah buatan Taiwan juga membuat merakit mesin sendiri menjadi realistis, dan sampai sekarang banyak orang masih melakukannya. Ken menyoroti bahwa pengguna mudah memeriksa apakah CPU mereka terdampak. Yang saya ingat, semudah memasukkan rumus pembagian dengan angka ajaib ke Excel. Kalau Microsoft merilis versi Excel yang mengakali bug itu, mungkin lebih sedikit pengguna yang mengajukan klaim penggantian
Analisis yang menarik dan benar-benar gigih. Upaya menganalisis silikon dan membagikan hasilnya luar biasa. Saya terutama suka karena PR Intel membuat penyebab sebenarnya terdengar seperti kelalaian kecil, sementara tulisan ini menunjukkan akar penyebab yang sebenarnya
Kenyataannya masalah itu jauh lebih sulit dimaafkan dan lebih layak disalahkan. Karena yang kacau adalah algoritma pembuatan tabelnya
Kalimat “Smith memposting email itu ke forum Compuserve, versi media sosial tahun 1990-an” membuat perasaan saya aneh
Tabel yang diperbaiki menjadi jauh lebih sederhana karena tidak menambahkan rangkaian yang mengembalikan 0 untuk nilai di luar rentang, melainkan langsung mengembalikan 2. Kalau begitu, saya jadi penasaran mengapa sejak awal tidak dibuat begitu
Orang yang membuat tabel tidak tahu bahwa mengisi nilai di luar rentang dengan 2 akan menghasilkan PLA yang lebih sederhana, dan orang yang memasukkan tabel ke PLA mungkin tidak tahu bahwa 0 adalah nilai tak relevan (don't care) sehingga menganggapnya harus dipertahankan
Atau mungkin mereka berhenti mengoptimalkan begitu merasa PLA sudah cukup kecil. Kalau floorplan sudah selesai, membuat PLA lebih kecil pun tidak akan membuat keseluruhan chip lebih kecil, dan waktu engineering lebih baik dipakai di tempat lain
Seperti kebanyakan software, ada optimisasi yang tertinggal karena tidak terpikirkan oleh siapa pun tepat waktu. Dan CPU pada era ini tidak bisa di-patch