Dalam era di mana sokongan perisian untuk perkakasan lama terus berkurangan, satu projek penting telah muncul untuk memberi nafas baharu kepada perkakasan komputer yang berusia berdekad. Seorang pembangun telah berjaya memulihkan sokongan emulasi unit titik terapung (FPU) untuk pemproses i486SX dalam NetBSD 10.x dan seterusnya, membolehkan fungsi sistem operasi moden pada CPU lama ini yang tidak mempunyai keupayaan titik terapung perkakasan.
Legasi i486SX dan Emulasi FPU
i486SX adalah varian bajet daripada barisan pemproses Intel 486 yang dikeluarkan pada awal 1990-an, yang sengaja dihadkan dengan mematikan unit titik terapungnya. Seperti yang dinyatakan oleh seorang pengomen, ia secara meluas dianggap sebagai perisian yang cacat pada masa ia dikeluarkan. Tanpa FPU, pemproses ini tidak dapat mengendalikan pengiraan titik terapung secara semula jadi, yang penting untuk banyak aplikasi termasuk pengkomputeran saintifik dan operasi grafik tertentu.
Projek pemulihan ini memperkenalkan semula pilihan MATH_EMULATE
ke dalam kernel NetBSD, membolehkan sistem operasi memerangkap arahan titik terapung dan mengemulasikannya dalam perisian. Pendekatan ini membolehkan binari yang tidak diubah suai yang menggunakan operasi titik terapung untuk berjalan pada sistem i486SX tanpa memerlukan kompilasi khas atau penyambungan dengan pustaka titik terapung perisian.
Ini pernah menjadi sangat biasa sebelum pemproses Pentium. Banyak (kebanyakan?) rantaian alat pengkompil termasuk emulator FPU perisian. Projek yang sangat keren!
Aplikasi Lebih Luas Melampaui i486SX
Perbincangan komuniti mendedahkan bahawa kerja ini mempunyai implikasi melampaui hanya perkakasan Intel lama. Seperti yang ditunjukkan oleh seorang pengomen, banyak SoC x86 alternatif yang bertujuan untuk sistem terbenam tidak mempunyai FPU, termasuk Vortex86 yang asal. Ini menunjukkan projek ini boleh memberi manfaat kepada pelbagai perkakasan yang lebih luas daripada yang kelihatan pada mulanya.
Terdapat juga minat sama ada perkembangan ini mungkin membolehkan NetBSD 10.x berjalan pada implementasi FPGA pemproses x86, seperti teras ao486 dalam projek MiSTer. Walaupun ujian awal oleh seorang ahli komuniti tidak berjaya, kemungkinan itu tetap menarik bagi penggemar pengkomputeran retro.
Implementasi Teknikal dan Asal-usul
Menariknya, projek ini menggabungkan kod dengan sejarah yang penting. Kod emulasi FPU teras ini berasal dari pencipta Linux, Linus Torvalds, dengan notis hak cipta dari 1991, dan akhirnya berasal dari 386BSD. Hubungan sejarah ini mencetuskan perbincangan sampingan tentang keserasian pelesenan antara kod Linux awal dan projek berlesen BSD.
Implementasi ini menangani pelbagai operasi titik terapung, dari aritmetik asas hingga fungsi yang lebih kompleks seperti logaritma. Walau bagaimanapun, beberapa operasi masih belum dilaksanakan atau mempunyai masalah yang diketahui dengan ketepatan, terutamanya dengan fungsi logaritma.
Kategori Utama Arahan FPU yang Diemulasi
- Kawalan & Permulaan: Arahan seperti
fninit
untuk memulakan FPU - Muatan ke Tindanan FPU: Arahan termasuk
fld
,fldt
,filds
,fildl
untuk memuatkan nilai - Simpanan dari Tindanan FPU: Arahan seperti
fstps
,fstpt
untuk menyimpan nilai - Operasi Aritmetik: Operasi asas seperti
fadd
,fsub
,fmul
,fdiv
- Perbandingan: Arahan termasuk
fcom
,fucom
,ftst
- Manipulasi Tindanan: Operasi seperti
fxch
,fchs
,fabs
,frndint
- Logaritma/Matematik Khas: Beberapa operasi seperti
f2xm1
telah dilaksanakan, yang lain sepertifyl2x
masih dalam pembangunan
Nota: Sesetengah operasi kompleks masih belum dilaksanakan atau mempunyai isu ketepatan.
Perbandingan dengan Pembangunan Kernel Linux
Masa projek ini sangat penting memandangkan perkembangan terkini dalam komuniti kernel Linux. Hanya beberapa hari sebelum projek ini ditonjolkan, patch telah dicadangkan untuk menghentikan sokongan kernel Linux untuk CPU x86 yang tidak mempunyai FPU sama sekali. Perbezaan pendekatan antara NetBSD dan Linux ini menyerlahkan falsafah berbeza terhadap sokongan perkakasan antara sistem operasi ini, dengan NetBSD mengekalkan reputasinya untuk menyokong platform perkakasan yang pelbagai dan lama.
Walaupun pengkomputeran moden sebahagian besarnya telah beralih daripada pemproses lama ini, projek seperti ini menunjukkan minat berterusan dalam memastikan perkakasan lama berfungsi dengan perisian kontemporari. Bagi penggemar retrocomputing, tujuan pendidikan, atau aplikasi industri khusus yang menggunakan pemproses x86 terbenam tanpa FPU, pemulihan emulasi titik terapung dalam NetBSD ini merupakan sumbangan berharga kepada ekosistem pengkomputeran.