FPGA पर Quake (MRISC32 CPU) [वीडियो]
Quake को FPGA में लागू किए गए एक कस्टम MRISC32 सॉफ़्टकोर CPU पर चलाने के लिए पोर्ट किया गया है, और इस बात से कई लोग प्रभावित हैं कि 1990s का 3D गेम पूरी तरह होमब्रू हार्डवेयर, टूलचेन और ISA पर कितनी सुचारूता से चल सकता है। टिप्पणीकार इसे “Quake-विशिष्ट” हार्डवेयर के सपनों, सामान्य-उद्देश्य कंप्यूटिंग के लिए FPGAs की सीमाओं, और ऐसे प्रोजेक्ट्स को अधिक सुलभ बनाने में Yosys और F4PGA जैसे ओपन-सोर्स टूल्स की भूमिका पर चर्चा का आधार बनाते हैं। थ्रेड CPU माइक्रोआर्किटेक्चर में भी गहराई से जाता है — वेक्टर-फर्स्ट डिज़ाइन्स से लेकर आधुनिक x86 और ARM पाइपलाइनों तक — यह देखने के लिए कि इंस्ट्रक्शन सेट, ब्रांच प्रेडिक्शन, और कोड डेंसिटी इस तरह के प्रोजेक्ट्स पर प्रदर्शन को कैसे प्रभावित करते हैं.
परियोजना अवलोकन एवं स्पष्टीकरण
- डेमो Quake का मूल सॉफ़्टवेयर रेंडरर है, जो FPGA में एक कस्टम 32-बिट MRISC32 सॉफ़्टकोर CPU पर चल रहा है; यह शुद्ध “ऑल-लॉजिक” Quake कार्यान्वयन नहीं है।
- लेखक Quake का उपयोग एक यथार्थवादी बेंचमार्क के रूप में कैश, ब्रांच प्रेडिक्टर और समग्र CPU डिज़ाइन को ट्यून करने के लिए करते हैं।
- Cyclone V बोर्ड पर यह लगभग 40 FPS पर 320×180 से 1080p तक अपस्केल करके चलता है, सही FPU के साथ और ~110 MHz क्लॉक पर (टाइमिंग मार्जिन औपचारिक क्लोज़र से आगे “ओवरक्लॉक्ड” हैं)।
क्लासिक गेम्स के हार्डवेयर बनाम सॉफ़्टवेयर इम्प्लीमेंटेशन
- कई टिप्पणीकार Quake-विशिष्ट हार्डवेयर की कल्पना करते हैं, जो पूरी तरह FPGA लॉजिक में लागू हो और अत्यंत ऊँची फ्रेम दरों पर चले।
- अन्य लोग नोट करते हैं कि बड़े, सामान्य-उद्देश्य गेम्स के पूर्ण हार्डवेयर इम्प्लीमेंटेशन अव्यावहारिक हैं; सॉफ़्टकोर के साथ एक्सेलरेटर या कस्टम निर्देश अधिक संभाव्य हैं।
- ऐतिहासिक संदर्भ: शुरुआती आर्केड गेम्स और कुछ कंसोल्स में अधिकांशतः डिस्क्रीट या एनालॉग हार्डवेयर था; पूरी तरह डिजिटल GPU-शैली की आर्किटेक्चर बहुत बाद में प्रमुख हुईं।
FPGA टूलिंग और इकोसिस्टम
- टूलिंग की व्यापक रूप से आलोचना की जाती है (जैसे, वेंडर IDEs); इसे FPGA के व्यापक उपयोग में एक प्रमुख बाधा माना जाता है।
- ओपन-सोर्स प्रयासों का उल्लेख किया गया: Yosys, F4PGA/SymbiFlow, Verilator। इन्हें आशाजनक माना जाता है, लेकिन मुख्यधारा के कंपाइलर स्टैक्स की तुलना में कम परिपक्व समझा जाता है।
कस्टम GPUs और संबंधित प्रोजेक्ट्स
- कई संबंधित FPGA ग्राफ़िक्स प्रोजेक्ट्स का उल्लेख किया गया:
- बहुत छोटे FPGAs पर Quake लेवल व्यूअर और छोटा Quake रेंडरर।
- मध्य-90s-शैली का कस्टम FPGA GPU जो Vulkan-जैसे API के माध्यम से Quake चलाता है।
- एक “Doom chip” और अन्य छोटे GPU प्रयोग।
- उसी FPGA पर या PCIe के जरिए कस्टम CPUs और GPUs को जोड़ने में रुचि है, हालांकि हार्डवेयर और बोर्ड डिज़ाइन की जटिलता नोट की गई।
MRISC32 ISA, वेक्टर्स, और माइक्रोआर्किटेक्चर
- MRISC32 एक “वेक्टर-फर्स्ट” RISC-शैली ISA है, जिसमें सरल हार्डवेयर वेक्टर्स हैं जो Quake/Doom रास्टराइज़ेशन लूप्स के लिए अच्छी तरह काम करते हैं।
- वर्तमान वेक्टर उपयोग हाथ से लिखे गए असेंबली में है; कंपाइलर की ऑटो-वेक्टराइज़ेशन सहायता अभी भी अनुपस्थित है।
- चर्चा पाइपलाइन डिज़ाइन, ब्रांच प्रेडिक्शन रणनीतियों, और ब्रांच डिले स्लॉट्स की आधुनिक प्रेडिक्टर्स से तुलना तक जाती है।
RISC बनाम CISC और GBOoO बहस
- लंबी उप-चर्चाएँ:
- आधुनिक x86 कोर जटिल निर्देशों को आंतरिक रूप से माइक्रो-ऑप्स में कैसे अनुवाद करते हैं।
- क्या उन्हें “लोड/स्टोर RISC अंदर से” माना जाना चाहिए या एक अलग वर्ग (“great big out-of-order” डिज़ाइन्स)।
- x86, AArch64, और RISC-V में कोड डेंसिटी, uop कैश आकार, निर्देश डिकोडिंग जटिलता, और पावर एफिशिएंसी के ट्रेडऑफ।
- सहमति: फ्रंट-एंड जटिलता और uop कैशेज़ x86 का एक बड़ा “टैक्स” हैं, लेकिन सभी उच्च-प्रदर्शन कोर, ISA चाहे जो हो, अब समान बड़े आउट-ऑफ-ऑर्डर माइक्रोआर्किटेक्चर्स की ओर अभिसरित हो रहे हैं।
डिस्प्ले, रेज़ोल्यूशन, और रेट्रो सौंदर्यशास्त्र
- कुछ लोग CRT पर लो-रेज़ोल्यूशन Quake को पसंद करते हैं, यह तर्क देते हुए कि एनालॉग स्मूदिंग और मस्तिष्क की “फिल-इन” क्षमता ने खेलों को आज के तेज LCD स्केलिंग से बेहतर महसूस कराया।
- डेमो लो रेस पर रेंडर करता है, फिर nearest neighbor से 1080p तक स्केल करता है, जिससे बहुत तेज पिक्सल बनते हैं; इस पर राय अलग-अलग हैं कि क्या अतिरिक्त स्मूदिंग वांछनीय होगी।
व्यावहारिक शुरुआत संबंधी सलाह
- FPGA में नए लोगों के लिए सलाह है:
- एक सस्ता FPGA dev board खरीदें और प्रयोग शुरू करें।
- डिज़ाइन्स बड़े होने पर सिमुलेशन के लिए Verilator का उपयोग करें।
- बोर्ड और ट्यूटोरियल सिफारिशों के लिए समुदाय संसाधनों (जैसे, FPGA-केंद्रित फ़ोरम/subreddits) को देखें।
विविध
- आक्रामक “Sign in with Google” पॉपअप्स को ब्लॉक करने पर कुछ साइड चर्चा; uBlock Origin में “annoyances” फ़िल्टर मददगार बताए गए हैं।