1 पॉइंट द्वारा GN⁺ 2024-08-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें

कहानी

  • एक साल पहले 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 टिप्पणियां

 
GN⁺ 2024-08-28
Hacker News राय
  • RISC-V को target करके software develop करते समय software engineers को क्या अलग करना चाहिए, इस पर सवाल

    • executable file का आकार बढ़ सकता है, इसलिए cache locality के लिए आक्रामक optimization करनी पड़ सकती है
    • कुछ प्रकार के software CISC या RISC के लिए ज्यादा उपयुक्त हो सकते हैं, जैसे game या web server
  • कुछ बड़े RISC-V CPU और कई छोटे RISC-V CPU से बने "GPU" वाले system आने की संभावना को लेकर जिज्ञासा

    • packed SIMD की जगह classical vector GPU में उपयोगी हो सकता है या नहीं, इस पर अतिरिक्त सवाल
  • एक मशहूर रूसी व्यक्ति द्वारा Elbrus 8S पर Atomic Heart चलाने के मामले की याद दिलाई गई

    • Elbrus में native translator है, और Atomic Heart 15-25 fps पर खेलने लायक था
  • राय कि article "बुनियादी बातें" पर बहुत छोटा है

    • x86_64 ISA को RISC-V chip पर कैसे implement किया गया, इस पर और जानकारी चाहिए
  • राय कि x86 emulation के संदर्भ में RISC-V सबसे कम expressive है

    • RISC को computer science के इतिहास की कक्षा में simplified instruction set computer के रूप में समझाया गया था
    • कई article और नए RISC-V profile यह सुझाव देते हैं कि "feature parity के लिए कुछ और instructions चाहिए"
    • RISC-V दूसरे platform के लिए एक सुविधाजनक विकल्प है, लेकिन क्या RISC का सपना खत्म हो चुका है, इस पर सवाल
  • राय कि यह चौंकाने वाला परिणाम है

    • बहुत काम की जरूरत थी, और कुछ मामलों में लगता है कि RISC-V अपनी सीमा तक पहुंच गया
    • bit-set और scatter instructions को extension के रूप में जोड़ा जाना चाहिए
  • 86Box के बारे में सवाल

    • Amstrad PC1512 इस्तेमाल करने के दिनों को याद करते हुए, hard card और memory expansion जोड़ने का अनुभव साझा किया गया
    • Borland TurboPascal और Zortech C के साथ मजेदार दिनों का जिक्र
  • screenshot में 31GB RAM दिख रही है

    • लगता है कि यह अधिकतम specification वाले development board से भी कहीं ज्यादा RAM इस्तेमाल कर रहा है
  • पिछले post का link और Milk-V Pioneer के बारे में जानकारी

    • native development के लिए 64-core RISC-V motherboard और workstation उत्पाद
  • राय कि RVI तक ISA-स्तर का feedback पहुंचा पाना अच्छा होगा