NetBSD Menghidupkan Kembali Emulasi FPU untuk Prosesor i486SX, Memberi Kehidupan Baru pada Perangkat Keras Lama

BigGo Editorial Team
NetBSD Menghidupkan Kembali Emulasi FPU untuk Prosesor i486SX, Memberi Kehidupan Baru pada Perangkat Keras Lama

Di era di mana dukungan perangkat lunak untuk perangkat keras lama terus berkurang, sebuah proyek penting telah muncul untuk memberikan kehidupan baru pada perangkat keras komputer yang berusia puluhan tahun. Seorang pengembang telah berhasil memulihkan dukungan emulasi floating-point unit (FPU) untuk prosesor i486SX di NetBSD 10.x dan versi selanjutnya, memungkinkan fungsionalitas sistem operasi modern pada CPU lama yang tidak memiliki kemampuan floating-point perangkat keras.

Warisan i486SX dan Emulasi FPU

i486SX adalah varian anggaran dari lini prosesor Intel 486 yang dirilis pada awal 1990-an, yang secara sengaja dibatasi dengan menonaktifkan unit floating-point-nya. Seperti yang dicatat oleh seorang komentator, prosesor ini secara luas dianggap sebagai perangkat keras yang dibatasi kemampuannya pada saat peluncurannya. Tanpa FPU, prosesor ini tidak dapat menangani perhitungan floating-point secara native, yang sangat penting untuk banyak aplikasi termasuk komputasi ilmiah dan operasi grafis tertentu.

Proyek kebangkitan ini memperkenalkan kembali opsi MATH_EMULATE ke dalam kernel NetBSD, memungkinkan sistem operasi untuk menangkap instruksi floating-point dan mengemulasikannya dalam perangkat lunak. Pendekatan ini memungkinkan binary yang tidak dimodifikasi yang menggunakan operasi floating-point untuk berjalan pada sistem i486SX tanpa memerlukan kompilasi khusus atau linking terhadap pustaka soft-float.

Ini dulu sangat umum sebelum prosesor Pentium. Banyak (kebanyakan?) rantai alat kompiler menyertakan emulator FPU perangkat lunak. Proyek yang sangat keren!

Aplikasi Lebih Luas di Luar i486SX

Diskusi komunitas mengungkapkan bahwa pekerjaan ini memiliki implikasi di luar perangkat keras Intel lama. Seperti yang ditunjukkan oleh seorang komentator, banyak SoC x86 alternatif yang ditujukan untuk sistem embedded tidak memiliki FPU, termasuk Vortex86 original. Ini menunjukkan proyek tersebut dapat menguntungkan berbagai perangkat keras yang lebih luas dari yang terlihat pada awalnya.

Ada juga ketertarikan apakah pengembangan ini mungkin memungkinkan NetBSD 10.x berjalan pada implementasi FPGA dari prosesor x86, seperti core ao486 dalam proyek MiSTer. Meskipun pengujian awal oleh seorang anggota komunitas tidak berhasil, kemungkinan tersebut tetap menarik bagi para penggemar retro-computing.

Implementasi Teknis dan Asal Usul

Menariknya, proyek ini menggabungkan kode dengan sejarah panjang. Kode emulasi FPU inti berasal dari pencipta Linux, Linus Torvalds, dengan pemberitahuan hak cipta dari tahun 1991, dan pada akhirnya berasal dari 386BSD. Koneksi historis ini memicu diskusi sampingan tentang kompatibilitas lisensi antara kode Linux awal dan proyek berlisensi BSD.

Implementasi ini menangani berbagai operasi floating-point, dari aritmatika dasar hingga fungsi yang lebih kompleks seperti logaritma. Namun, beberapa operasi tetap belum diimplementasikan atau memiliki masalah yang diketahui dengan presisi, terutama dengan fungsi logaritmik.

Kategori Instruksi FPU yang Diemulasi

  • Kontrol & Inisialisasi: Instruksi seperti fninit untuk menginisialisasi FPU
  • Memuat ke Stack FPU: Instruksi termasuk fld, fldt, filds, fildl untuk memuat nilai
  • Menyimpan dari Stack FPU: Instruksi seperti fstps, fstpt untuk menyimpan nilai
  • Operasi Aritmatika: Operasi dasar seperti fadd, fsub, fmul, fdiv
  • Perbandingan: Instruksi termasuk fcom, fucom, ftst
  • Manipulasi Stack: Operasi seperti fxch, fchs, fabs, frndint
  • Logaritmik/Matematika Khusus: Beberapa operasi seperti f2xm1 sudah diimplementasikan, yang lain seperti fyl2x masih dalam pengembangan

Catatan: Beberapa operasi kompleks masih belum diimplementasikan atau memiliki masalah presisi.

Kontras dengan Pengembangan Kernel Linux

Waktu proyek ini sangat penting mengingat perkembangan terbaru di komunitas kernel Linux. Hanya beberapa hari sebelum proyek ini disorot, patch diusulkan untuk menghapus dukungan kernel Linux untuk CPU x86 yang sama sekali tidak memiliki FPU. Perbedaan pendekatan antara NetBSD dan Linux ini menyoroti filosofi yang berbeda terhadap dukungan perangkat keras antara sistem operasi ini, dengan NetBSD mempertahankan reputasinya untuk mendukung platform perangkat keras yang beragam dan lama.

Meskipun komputasi modern sebagian besar telah beralih dari prosesor vintage ini, proyek seperti ini menunjukkan minat yang berkelanjutan dalam menjaga perangkat keras lama tetap berfungsi dengan perangkat lunak kontemporer. Untuk para penggemar retrocomputing, tujuan pendidikan, atau aplikasi industri khusus yang menggunakan prosesor x86 embedded tanpa FPU, kebangkitan emulasi floating-point di NetBSD ini merupakan kontribusi berharga bagi ekosistem komputasi.

Referensi: FPU Emulation Revival for i486SX on NetBSD