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 sepertifyl2x
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