Câu chuyện
- Một năm trước, RV64 DynaRec chỉ có thể chạy các game Linux native tương đối “dễ chạy” như Stardew Valley và World of Goo
- Nhiều lệnh x86_64 mới đã nhanh chóng được triển khai cho RISC-V, nhưng DynaRec vẫn còn nhiều lỗi
- Khi đó chưa có thiết bị RISC-V nào có thể gắn card đồ họa AMD, và GPU tích hợp IMG trên VisionFive 2 và LicheePi 4A cũng không hỗ trợ OpenGL
- Có thể dùng gl4es để chạy các game như Stardew Valley, nhưng như vậy vẫn chưa đủ cho các game Linux phức tạp hơn hoặc game Windows
- Nhờ Sophgo Milk-V Pioneer có thể gắn card đồ họa AMD, đồng thời sửa được nhiều lỗi RV64 DynaRec và bổ sung các lệnh x86 mới, nên đã có thể chạy The Witcher 3
Tình trạng hiện tại của RISC-V DynaRec
- Bộ lệnh x86 là cực kỳ đồ sộ
- Backend ARM64 đã triển khai hơn 1.600 lệnh x86, trong khi backend RV64 mới triển khai khoảng 1.000 lệnh
- Các lệnh SSE được triển khai bằng lệnh vô hướng, còn AArch64 dùng phần mở rộng Neon và LoongArch64 dùng phần mở rộng LSX nên hiệu năng bị giảm
- RISC-V có phần mở rộng vector là RVV, và Milk-V Pioneer cùng SoC SpacemiT K1/M1 đều hỗ trợ nó
- Gần đây box64 đã thêm hỗ trợ RVV cơ bản và triển khai một số lệnh SSE phổ biến, nhưng vẫn còn ở giai đoạn đầu
Những lệnh cần thiết nhất cho giả lập x86
- Trong giả lập x86, RISC-V kém biểu đạt hơn so với AArch64 và LoongArch64
- RISC-V không có lệnh để chọn một dải bit trong thanh ghi hoặc chèn vào một dải bit của thanh ghi khác
- Ví dụ, để triển khai lệnh
ADD AH, BL trên RISC-V thì cần tới 10 lệnh
Sự bế tắc của lệnh nguyên tử 16 byte
- x86 có các lệnh toán tử nguyên tử với tiền tố LOCK, và box64 giả lập chúng bằng chuỗi LR/SC
- Lệnh
LOCK CMPXCHG16B dùng để so sánh và trao đổi 16 byte bộ nhớ, nhưng RISC-V không có lệnh tương ứng
- Vì vậy không thể triển khai đầy đủ lệnh này, trong khi nhiều chương trình như game Unity lại sử dụng nó
Kết luận
- Dù có nhiều nhược điểm, The Witcher 3 vẫn chạy được trên box64 với tốc độ tối đa 15fps, và ở menu chính thì chạy với tốc độ đầy đủ
Tóm tắt của GN⁺
- Việc chạy được The Witcher 3 trên RISC-V là một cột mốc quan trọng cho thấy tiến bộ kỹ thuật
- Giả lập x86 trên RISC-V vẫn còn thua kém các kiến trúc khác, nhưng có khả năng được cải thiện nhờ các phần mở rộng như RVV
- Sự thiếu biểu đạt của RISC-V và việc không có lệnh nguyên tử 16 byte vẫn là những vấn đề lớn
- Dự án có chức năng tương tự gồm các trình giả lập như QEMU
1 bình luận
Ý kiến trên Hacker News
Có câu hỏi về những điểm mà kỹ sư phần mềm cần làm khác đi khi phát triển phần mềm nhắm tới RISC-V
Có thắc mắc về khả năng xuất hiện các hệ thống trang bị một “GPU” được hiện thực bằng vài CPU RISC-V lớn và nhiều CPU RISC-V nhỏ
Nhắc lại trường hợp một người Nga nổi tiếng đã chạy Atomic Heart trên Elbrus 8S
Có ý kiến cho rằng bài viết nói quá ngắn về “những điều cơ bản”
Có ý kiến cho rằng trong bối cảnh giả lập x86, RISC-V là kiến trúc có khả năng biểu đạt kém nhất
Có ý kiến cho rằng đây là một kết quả đáng kinh ngạc
Có câu hỏi về 86Box
Ảnh chụp màn hình hiển thị 31GB RAM
Có liên kết đến bài đăng trước đó và thông tin về Milk-V Pioneer
Có ý kiến hy vọng có thể gửi phản hồi ở cấp độ ISA cho RVI