कहानी
- एक साल पहले RV64 DynaRec केवल अपेक्षाकृत "आसानी से चल सकने वाले" native Linux गेम, जैसे Stardew Valley और World of Goo, ही चला सकता था
- कई नए x86_64 निर्देश तेजी से RISC-V में लागू किए गए थे, लेकिन DynaRec में अब भी कई बग बाकी थे
- उस समय ऐसा कोई RISC-V डिवाइस नहीं था जिसमें AMD graphics card जोड़ा जा सके, और VisionFive 2 तथा LicheePi 4A के IMG इंटीग्रेटेड graphics card OpenGL को सपोर्ट नहीं करते थे
- gl4es का उपयोग करके Stardew Valley जैसे गेम चलाए जा सकते थे, लेकिन यह अधिक जटिल Linux गेम या Windows गेम के लिए पर्याप्त नहीं था
- Sophgo के Milk-V Pioneer की मदद से AMD graphics card जोड़ना संभव हुआ, और RV64 DynaRec के कई बग ठीक करने तथा नए x86 निर्देश जोड़ने के बाद The Witcher 3 चलाया जा सका
RISC-V DynaRec की वर्तमान स्थिति
- x86 निर्देश सेट बहुत विशाल है
- ARM64 backend ने 1,600 से अधिक x86 निर्देश लागू किए हैं, लेकिन RV64 backend ने लगभग 1,000 लागू किए हैं
- SSE निर्देश scalar निर्देशों के रूप में लागू किए गए हैं, जबकि AArch64 Neon extension और LoongArch64 LSX extension का उपयोग करते हैं, जिससे performance कम हो जाती है
- RISC-V में vector extension RVV है, और Milk-V Pioneer तथा SpacemiT K1/M1 SoC इसे सपोर्ट करते हैं
- हाल ही में box64 में बुनियादी RVV सपोर्ट जोड़ा गया है और कुछ सामान्य SSE निर्देश लागू किए गए हैं, लेकिन यह अभी शुरुआती चरण में है
x86 emulation के लिए सबसे ज़रूरी निर्देश
- x86 emulation में RISC-V, AArch64 और LoongArch64 की तुलना में कम expressive है
- RISC-V में ऐसे निर्देश नहीं हैं जो register की bit range चुन सकें या उसे किसी दूसरे register की bit range में insert कर सकें
- उदाहरण के लिए,
ADD AH, BL निर्देश को RISC-V में लागू करने के लिए 10 निर्देशों की आवश्यकता होती है
16-byte atomic निर्देशों की निराशा
- x86 में LOCK prefix वाले atomic operation निर्देश होते हैं, और box64 इन्हें LR/SC sequence का उपयोग करके emulate करता है
LOCK CMPXCHG16B निर्देश 16-byte memory की compare-and-swap करता है, लेकिन RISC-V में इसके समकक्ष कोई निर्देश नहीं है
- इसलिए इस निर्देश को पूरी तरह लागू नहीं किया जा सकता, जबकि Unity गेम जैसे कई प्रोग्राम इस निर्देश का उपयोग करते हैं
निष्कर्ष
- कई कमियों के बावजूद The Witcher 3, box64 पर अधिकतम 15fps तक चलता है, और main menu में full speed पर चलता है
GN⁺ का सार
- RISC-V पर The Witcher 3 चलाना तकनीकी प्रगति दिखाने वाली एक महत्वपूर्ण उपलब्धि है
- RISC-V का x86 emulation अभी भी अन्य architectures की तुलना में पीछे है, लेकिन RVV जैसे extensions के जरिए इसमें सुधार की संभावना है
- RISC-V की कम expressiveness और 16-byte atomic निर्देशों की अनुपस्थिति प्रमुख समस्याएँ बनी हुई हैं
- समान कार्यक्षमता वाले प्रोजेक्ट्स में QEMU जैसे emulators शामिल हैं
1 टिप्पणियां
Hacker News राय
RISC-V को target करके software develop करते समय software engineers को क्या अलग करना चाहिए, इस पर सवाल
कुछ बड़े RISC-V CPU और कई छोटे RISC-V CPU से बने "GPU" वाले system आने की संभावना को लेकर जिज्ञासा
एक मशहूर रूसी व्यक्ति द्वारा Elbrus 8S पर Atomic Heart चलाने के मामले की याद दिलाई गई
राय कि article "बुनियादी बातें" पर बहुत छोटा है
राय कि x86 emulation के संदर्भ में RISC-V सबसे कम expressive है
राय कि यह चौंकाने वाला परिणाम है
86Box के बारे में सवाल
screenshot में 31GB RAM दिख रही है
पिछले post का link और Milk-V Pioneer के बारे में जानकारी
राय कि RVI तक ISA-स्तर का feedback पहुंचा पाना अच्छा होगा