เรื่องราว
- เมื่อ 1 ปีก่อน RV64 DynaRec สามารถรันได้เพียงเกม Linux แบบเนทีฟที่ "รันได้ไม่ยาก" อย่าง Stardew Valley และ World of Goo
- แม้จะมีการนำชุดคำสั่ง x86_64 ใหม่ ๆ จำนวนมากมาใช้งานบน RISC-V อย่างรวดเร็ว แต่ DynaRec ก็ยังมีบั๊กอยู่อีกมาก
- ในเวลานั้นยังไม่มีอุปกรณ์ RISC-V ที่สามารถต่อการ์ดจอ AMD ได้ และจีพียูแบบรวมของ IMG บน VisionFive 2 และ LicheePi 4A ก็ไม่รองรับ OpenGL
- สามารถใช้ gl4es เพื่อรันเกมอย่าง Stardew Valley ได้ แต่ยังไม่เพียงพอสำหรับเกม Linux ที่ซับซ้อนกว่านั้นหรือเกม Windows
- ด้วย Sophgo Milk-V Pioneer จึงสามารถต่อการ์ดจอ AMD ได้ และหลังจากแก้บั๊กของ RV64 DynaRec จำนวนมากพร้อมเพิ่มคำสั่ง x86 ใหม่ ๆ ก็สามารถรัน The Witcher 3 ได้
สถานะปัจจุบันของ RISC-V DynaRec
- ชุดคำสั่ง x86 มีขนาดใหญ่มาก
- แบ็กเอนด์ ARM64 รองรับคำสั่ง x86 มากกว่า 1,600 คำสั่ง ขณะที่แบ็กเอนด์ RV64 รองรับราว 1,000 คำสั่ง
- คำสั่ง SSE ถูกทำงานแบบคำสั่งสเกลาร์ และบน AArch64 ใช้ส่วนขยาย Neon ส่วน LoongArch64 ใช้ส่วนขยาย LSX ทำให้ประสิทธิภาพลดลง
- RISC-V มีส่วนขยายเวกเตอร์ RVV และ SoC อย่าง Milk-V Pioneer กับ SpacemiT K1/M1 ก็รองรับส่วนขยายนี้
- ล่าสุดมีการเพิ่มการรองรับ RVV ขั้นพื้นฐานใน box64 และรองรับคำสั่ง SSE ที่ใช้บ่อยบางส่วนแล้ว แต่ยังอยู่ในช่วงเริ่มต้น
คำสั่งที่จำเป็นที่สุดสำหรับการจำลอง x86
- สำหรับการจำลอง x86 นั้น RISC-V มีความสามารถในการแสดงออกของชุดคำสั่งด้อยกว่า AArch64 และ LoongArch64
- RISC-V ไม่มีคำสั่งสำหรับเลือกช่วงบิตของรีจิสเตอร์ หรือแทรกช่วงบิตนั้นเข้าไปในช่วงบิตของอีกรีจิสเตอร์หนึ่ง
- ตัวอย่างเช่น การทำคำสั่ง
ADD AH, BL บน RISC-V ต้องใช้ถึง 10 คำสั่ง
ความน่าผิดหวังของคำสั่งอะตอมมิก 16 ไบต์
- x86 มีคำสั่งปฏิบัติการแบบอะตอมมิกที่ใช้คำนำหน้า LOCK และ box64 จำลองสิ่งนี้ด้วยลำดับ LR/SC
- คำสั่ง
LOCK CMPXCHG16B ใช้เปรียบเทียบและสลับหน่วยความจำขนาด 16 ไบต์ แต่ RISC-V ไม่มีคำสั่งที่เทียบเท่ากัน
- ดังนั้นจึงไม่สามารถทำคำสั่งนี้ได้อย่างสมบูรณ์ และโปรแกรมจำนวนมาก เช่น เกมที่สร้างด้วย Unity ก็ใช้คำสั่งนี้
บทสรุป
- แม้จะมีข้อเสียหลายอย่าง The Witcher 3 ก็ยังรันบน box64 ได้ที่สูงสุด 15fps และในเมนูหลักสามารถทำงานได้เต็มความเร็ว
สรุปโดย GN⁺
- การรัน The Witcher 3 บน RISC-V เป็นเหตุการณ์สำคัญที่แสดงถึงความก้าวหน้าทางเทคนิค
- การจำลอง x86 บน RISC-V ยังด้อยกว่าสถาปัตยกรรมอื่น แต่ก็มีโอกาสพัฒนาได้ผ่านส่วนขยายอย่าง RVV
- ข้อจำกัดด้านความสามารถในการแสดงออกของ RISC-V และการไม่มีคำสั่งอะตอมมิก 16 ไบต์ยังคงเป็นปัญหาหลัก
- โครงการที่มีลักษณะใกล้เคียงกัน ได้แก่ อีมูเลเตอร์อย่าง QEMU
1 ความคิดเห็น
ความเห็นจาก Hacker News
มีคำถามว่าวิศวกรซอฟต์แวร์ต้องทำอะไรต่างออกไปบ้างเมื่อพัฒนาซอฟต์แวร์โดยเล็งเป้าไปที่ RISC-V
สงสัยถึงความเป็นไปได้ที่จะมีระบบที่ติดตั้ง "GPU" ซึ่งประกอบด้วย CPU RISC-V ขนาดใหญ่ไม่กี่ตัวและ CPU RISC-V ขนาดเล็กจำนวนมาก
นึกถึงกรณีที่ชาวรัสเซียผู้มีชื่อเสียงรัน Atomic Heart บน Elbrus 8S
มีความเห็นว่าบทความกล่าวถึง "พื้นฐาน" น้อยเกินไป
มีความเห็นว่าในบริบทของการจำลอง x86 นั้น RISC-V มีความสามารถในการแสดงออกน้อยที่สุด
มีความเห็นว่าเป็นผลลัพธ์ที่น่าทึ่ง
มีคำถามเกี่ยวกับ 86Box
ในภาพหน้าจอแสดงแรม 31GB
มีลิงก์ไปยังโพสต์ก่อนหน้าและข้อมูลเกี่ยวกับ Milk-V Pioneer
มีความเห็นว่าอยากจะส่งต่อฟีดแบ็กระดับ ISA ไปยัง RVI ได้