Cerita
- Setahun lalu, RV64 DynaRec hanya bisa menjalankan game Linux native yang relatif "mudah dijalankan" seperti Stardew Valley dan World of Goo
- Banyak instruksi x86_64 baru telah dengan cepat diimplementasikan di RISC-V, tetapi masih banyak bug yang tersisa di DynaRec
- Saat itu belum ada perangkat RISC-V yang bisa dihubungkan dengan kartu grafis AMD, dan GPU terintegrasi IMG pada VisionFive 2 dan LicheePi 4A tidak mendukung OpenGL
- Game seperti Stardew Valley bisa dijalankan dengan menggunakan gl4es, tetapi itu tidak cukup untuk game Linux yang lebih kompleks atau game Windows
- Melalui Sophgo Milk-V Pioneer, kini kartu grafis AMD bisa dihubungkan, dan setelah banyak bug RV64 DynaRec diperbaiki serta instruksi x86 baru ditambahkan, The Witcher 3 pun dapat dijalankan
Status saat ini dari RISC-V DynaRec
- Set instruksi x86 sangatlah luas
- Backend ARM64 telah mengimplementasikan lebih dari 1.600 instruksi x86, tetapi backend RV64 baru mengimplementasikan sekitar 1.000
- Instruksi SSE diimplementasikan sebagai instruksi skalar, dan AArch64 menggunakan ekstensi Neon, sementara LoongArch64 menggunakan ekstensi LSX, sehingga performanya menurun
- RISC-V memiliki ekstensi vektor RVV, dan Milk-V Pioneer serta SoC SpacemiT K1/M1 mendukungnya
- Baru-baru ini dukungan RVV dasar ditambahkan ke box64 dan beberapa instruksi SSE umum telah diimplementasikan, tetapi ini masih tahap awal
Instruksi yang paling dibutuhkan untuk emulasi x86
- Dalam emulasi x86, RISC-V kurang ekspresif dibandingkan AArch64 dan LoongArch64
- RISC-V tidak memiliki instruksi untuk memilih rentang bit dari register atau menyisipkannya ke rentang bit register lain
- Sebagai contoh, untuk mengimplementasikan instruksi
ADD AH, BL di RISC-V diperlukan 10 instruksi
Frustrasi akibat instruksi atomik 16-byte
- x86 memiliki instruksi operasi atomik dengan prefiks LOCK, dan box64 mengemulasikannya menggunakan urutan LR/SC
- Instruksi
LOCK CMPXCHG16B membandingkan dan menukar memori 16-byte, tetapi RISC-V tidak memiliki instruksi padanannya
- Karena itu, instruksi ini tidak dapat diimplementasikan secara sempurna, padahal banyak program seperti game Unity menggunakan instruksi tersebut
Kesimpulan
- Terlepas dari berbagai kekurangannya, The Witcher 3 berjalan di box64 hingga 15fps, dan di menu utama berjalan pada kecepatan penuh
Ringkasan GN⁺
- Menjalankan The Witcher 3 di RISC-V merupakan peristiwa penting yang menunjukkan kemajuan teknis
- Emulasi x86 di RISC-V masih tertinggal dibandingkan arsitektur lain, tetapi ada potensi perbaikan melalui ekstensi seperti RVV
- Kurangnya ekspresivitas RISC-V dan absennya instruksi atomik 16-byte tetap menjadi masalah utama
- Proyek dengan fungsi serupa antara lain emulator seperti QEMU
1 komentar
Opini Hacker News
Ada pertanyaan tentang hal-hal yang perlu dilakukan berbeda oleh software engineer saat mengembangkan perangkat lunak dengan target RISC-V
Ada rasa penasaran apakah mungkin akan muncul sistem yang dilengkapi "GPU" yang diimplementasikan dengan beberapa CPU RISC-V besar dan banyak CPU RISC-V kecil
Mengingatkan pada kasus seorang tokoh Rusia terkenal yang menjalankan Atomic Heart di Elbrus 8S
Ada pendapat bahwa artikelnya terlalu singkat soal "dasar-dasar"
Ada pendapat bahwa RISC-V adalah yang paling kurang ekspresif dalam konteks emulasi x86
Ada pendapat bahwa hasilnya mengejutkan
Ada pertanyaan tentang 86Box
Tangkapan layar menampilkan RAM 31GB
Ada tautan ke postingan sebelumnya dan informasi tentang Milk-V Pioneer
Ada harapan agar masukan di tingkat ISA bisa disampaikan ke RVI