
Ternyata, pelaksanaan beberapa instruksi FMA3 spesifik pada prosesor AMD Ryzen menyebabkan crash OS kritis.
Petunjuk seperti FMA3 (Fused-Multiply-Add) didukung oleh Intel (di Haswell) dan AMD. Ini adalah instruksi seperti
d = round(a ร b + c)
, di mana
d harus berada dalam register yang sama dengan
a ,
b atau
c . Sebagai perbandingan, instruksi FMA4 hanya didukung oleh AMD (di Buldozer dan prosesor yang lebih baru). Di sana
a ,
b ,
c dan
d dapat berada di register yang berbeda.
Bug dalam prosesor ditemukan di
Flops version2 , sebuah utilitas sederhana dan sedikit diketahui untuk menguji CPU. Perlu dicatat bahwa pengembang utilitas ini Alexander "Mystical" Yee (Alexander "Mystical" Yee) memposisikannya sebagai utilitas pengujian khusus yang sensitif terhadap mikroarsitektur prosesor. Di tolok ukur lain, bug tidak pernah muncul.
Dengan utilitas Flops version2, binari tertentu dikirimkan untuk semua arsitektur x64 utama (Core2, Bulldozer, Sandy Bridge, Piledriver, Haswell, Skylake). Tetapi pada saat ini, tidak ada di antara rakitan biner
untuk Windows , atau
untuk Linux tidak ada versi untuk menguji Zen. Karena itu, sekarang untuk menguji Ryzen menggunakan binari dari arsitektur lain, yaitu, Haswell terdekat. Kesalahan yang disebutkan di atas dengan instruksi FMA3
ditemukan dua minggu lalu oleh penulis program Flops, ketika ia menjalankan tes dengan binary stock untuk Haswell pada komputer dengan konfigurasi berikut:
- Ryzen 7 1800X
- Asus Prime B350M-A (BIOS 0502)
- 4 x 8GB Corsair CMK32GX4M4A2400C14 @ 2133 MHz
- Pembaruan Hari Jadi Windows 10
Tiba-tiba ditemukan bahwa sistem biasanya membeku selama operasi berikut:
Single-Precision - 128-bit FMA3 - Fused Multiply Add:
Kadang-kadang tes berhasil melewati operasi ini, tetapi masih tergantung pada beberapa operasi lain di masa depan.
Pengembang menjelaskan bahwa pengujiannya adalah open source, dan jika Anda tidak mempercayai hasilnya, Anda dapat mengambil dan mengkompilasi biner di Visual Studio sendiri dan memeriksa ulang hasilnya.
Alexander tahu perhatian apa yang akan ia tarik ketika melaporkan kesalahan pada prosesor yang diiklankan. Karena itu, ia berulang kali memeriksa hasilnya. Prosesor menggantung sistem pada semua frekuensi clock. Dan ketika bekerja dalam mode single-threaded, masing-masing inti menggantung sistem.
Ada beberapa kemungkinan bahwa penyebab kegagalan mungkin masih bukan pada prosesor, tetapi pada sesuatu yang lain. Misalnya, di motherboard tertentu, di BIOS tertentu, di sistem operasi tertentu ... Apa lagi yang bisa?
Pengembang membagikan hasilnya dengan kolega sehingga mereka memeriksa versi Zen lainnya di komputer mereka. Kegagalan dikonfirmasi untuk prosesor lain, pada motherboard yang berbeda, di bawah versi Windows yang berbeda dan di Linux.
Pada hari-hari pertama setelah panggilan Alex, tes diluncurkan oleh lima pemilik prosesor Ryzen. Inilah hasilnya:
Kegagalan Terkonfirmasi:- 1800X + Asus Prime B350M-A (BIOS 0502)
- 1700 + Asus Prime B350M-A (BIOS ???)
- 1700 + Asus Crosshair VI Hero
- 1700 + Asus Crosshair VI Hero (BIOS 5803) (dua bank memori G.Skill + Kingston)
- 1800X + Asus Crosshair VI Hero (Windows 7) - begitu lulus tes, berulang kali gagal.
Operasi bebas masalah yang dikonfirmasi:Pengembang benchmark memeriksa semua varian FMA (128 bit, 256 bit, presisi tunggal, angka presisi ganda). Dalam semua kasus, komputer membeku dengan erat.
Dia dilecehkan oleh hanya satu detail: meskipun tes itu ditulis dengan benar, untuk beberapa alasan itu tidak cocok dengan tolok ukur lain, seperti prime95 dan y-cruncher, meskipun mereka juga menggunakan FMA dalam pengujian.
Jadi beberapa ketidakpastian tetap ada.
Pada akhirnya, pada 16 Maret, sebuah
pesan resmi diterima dari perwakilan AMD bahwa bug tersebut akan diperbaiki dalam kode
AGESA baru (AMD Generic Encapsulated Software Architecture), sebuah protokol yang digunakan, antara lain, untuk menginisialisasi core prosesor AMD. Dengan kata lain, spesialis perusahaan memeriksa dan mengkonfirmasi bug. Kemudian, perwakilan AMD
secara resmi mengkonfirmasi bug dalam komentar untuk media .
Untungnya, bug semacam itu dapat diperbaiki tanpa mengganti perangkat kerasnya, tetapi cukup memperbarui mikrokode. Bug tidak signifikan, sehingga tidak akan menyebabkan ulasan prosesor atau masalah lain bagi perusahaan. Bahkan, di dunia kerja yang sebenarnya, hampir tidak ada orang yang bisa menemukan bug ini, itu tidak mempengaruhi komputer atau kinerja prosesor.
Berita buruknya adalah bahwa penyerang dapat menggunakannya untuk serangan DoS. Artinya, terutama kesalahan ini adalah masalah keamanan informasi. Lagi pula, program pengguna biasa yang berjalan dalam mode pengguna, dan tidak pada level kernel OS, seharusnya tidak menggantung sistem dengan erat. Tetapi ini sedang terjadi.
Fakta bahwa tes dijalankan pada biner untuk arsitektur lain tidak begitu penting. Setiap prosesor harus berhasil mereproduksi tes dari biner apa pun jika mendukung serangkaian instruksi yang sesuai, tulis penulis benchmark. Tetapi bahkan jika Anda menjalankan tes menggunakan instruksi yang tidak kompatibel, program tidak harus menggantung sistem dengan erat.
Bahaya kerentanan keamanan diperparah oleh fakta bahwa kode jahat bahkan dapat dijalankan dari bawah mesin virtual, masih akan menggantung seluruh sistem. Komputer dengan prosesor Ryzen baru dapat menggantung malware apa pun. Mungkin bahkan melalui browser.
Seperti yang telah disebutkan, AMD sedang berupaya memperbarui protokol AGESA. Setelah itu, tambalan akan dirilis untuk semua versi BIOS di semua motherboard.