4 तरह के CPU और 2 SoC डिज़ाइनों पर आधारित प्रैक्टिकल अभ्यासों के माध्यम से RISC-V CPU डिज़ाइन की बुनियाद सीखने के लिए basic_RV32s का परिचय।

basic_RV32s सारांश

  • सैन्य सेवा के दौरान 6 महीनों में बनाया गया FPGA पर चलने योग्य softcore RISC-V RV32I CPU
  • Dhrystone 1.11 DMIPS/MHz, Coremark 1.10 Coremark/MHz प्रदर्शन हासिल
    देश में डिज़ाइन किए गए RV32I-आधारित CPU शोधपत्रों में शीर्ष स्तर का प्रदर्शन।
    (RISS के 126 शोधपत्रों में RV32I benchmark शामिल 11 शोधपत्रों का संदर्भ, लेखन तिथि के अनुसार)
    (@50MHz संचालन)
  • क्रमिक CPU डिज़ाइन प्रक्रिया और SoC डिज़ाइन
    • 3 single-cycle core, (37F, 43F, 46F)
    • 1 five-stage pipeline core, (46F5SP)
    • pipeline core से लैस 2 SoC डिज़ाइन
      (46F5SP_SoC - Debug, Benchmark)
  • सहज रूप से समझने योग्य high-level मॉड्यूल abstraction और डिज़ाइन
  • RISC-V CPU डिज़ाइन सीखने के लिए कई दस्तावेज़ उपलब्ध
    • RV32I Cheatsheet Excel
    • डेवलपमेंट लॉग, debug रिकॉर्ड
    • architecture डिज़ाइन guidelines
    • सभी architecture और module-वार logic explanation दस्तावेज़
    • bare-metal porting guidelines
      • RISC-V GNU GCC Toolchain RV32I build guidelines
      • Dhrystone benchmark RV32I bare-metal रन गाइडलाइन आदि
  • बिना टिप्पणियों वाला clean code और टिप्पणियों सहित dual-format संरचना कोड उपलब्ध
  • signal-level architecture block diagram उपलब्ध
  • दूसरे वर्ष के 2 undergraduate छात्रों ने स्वतंत्र रूप से शोधपत्र जमा कर ISOCC 2025 में अकादमिक प्रस्तुति दी
  • RISC-V के आधिकारिक learning repository riscv/learn में सूचीबद्ध
    • Learning Resources - Intermediate-Level Resource

विकास पृष्ठभूमि

15 दिसंबर 2024 को, सैन्य सेवा के दौरान मैंने अपने एक साथी के साथ मिलकर CPU को सीधे बनाने का प्रोजेक्ट शुरू किया था। कुछ समय पहले इसकी पहली वर्षगांठ भी थी!

बुनियादी computer architecture theory पर आधारित RISC-V CPU बनाना तुलनात्मक रूप से आसानी से सीखा जा सकता था, क्योंकि सिद्धांत बहुत समृद्ध हैं और पाठ्यपुस्तकें भी बहुत हैं। लेकिन जब वास्तव में कीबोर्ड के सामने बैठा, तो यह एक बिल्कुल अलग चुनौती बन गई।

कॉलेज में सतही तौर पर सीखे गए VerilogHDL के साथ किसी ठीक-ठाक प्रोजेक्ट की शुरुआत करना मेरे लिए पहली बार था, लेकिन मैंने जाना कि coding क्षमता से परे, RISC-V CPU बनाने के लिए दस्तावेज़, manual और guideline सहित वास्तविक open source RISC-V उदाहरण लगभग मौजूद ही नहीं थे। (riscv/learn - open implementations के आधार पर.)

बेशक, NEORV32 या DarkRISCV जैसे पहले से लागू किए गए core को तोड़कर और विश्लेषित करके सीखना एक अच्छा तरीका है, लेकिन design philosophy, development record आदि जैसे डिज़ाइन मुद्दों में उस डिज़ाइन के आधार या कारण को सही-सही समझना और ढूँढना काफी कठिन था।

इसलिए मैंने तय किया कि इस प्रोजेक्ट को केवल open source RISC-V CPU implementation तक सीमित न रखकर, RISC-V RV32I CPU बनाने के लिए एक संपूर्ण open source guideline तक विस्तारित किया जाए। लगा कि एक शुरुआती के बढ़ने का रिकॉर्ड, अगली पीढ़ी के शुरुआती लोगों के लिए अच्छे पदचिह्न छोड़ सकता है.

basic_RV32s परिचय

जैसा ऊपर के सारांश में लिखा है, इसमें development log, core डिज़ाइन से जुड़े दस्तावेज़, और RISC-V CPU निर्माण पर गलतियों से सीखे गए नोट्स शामिल हैं, और यह Patterson-Hennessy methodology पर आधारित architecture के साथ मेरे जैसे RISC-V hardware डिज़ाइन शुरुआती लोगों को लक्षित करता है।

मुख्य डिज़ाइन RV32I में 37 instructions को सपोर्ट करने वाली 37F architecture से शुरू होता है और इसे नीचे की तरह क्रमिक रूप में विस्तारित किया गया है।

  • 37F : base architecture, single-cycle
  • 43F : 6 Zicsr extension instructions का समर्थन
  • 46F : EBREAK, ECALL, mret instructions का समर्थन
  • 46F5SP : data forwarding और 2-bit FSM dynamic branch predictor से युक्त 5-stage pipeline विस्तार

core को FPGA पर लागू करने के लिए 46F5SP_SoC डिज़ाइन किया गया, और इसे दो संस्करणों में बनाया गया।

  • debugging version
    बटन दबाकर step-by-step execution process को UART communication के जरिए देखते हुए instructions को debug किया जा सकता है।
  • benchmarking version
    Dhrystone या Coremark आदि चलाकर UART के माध्यम से सीधे परिणाम प्राप्त किए जा सकते हैं।

हाल ही में अपडेट किया गया 46F5SP_MMIO_SoC, UART output को सपोर्ट करने वाला MMIO implement करता है और printf फ़ंक्शन को सपोर्ट करता है। इस SoC को उपयुक्त linker, boot script, syscall आदि BSP फ़ाइलों के साथ compile करने पर Dhrystone 2.1 या Coremark जैसे विभिन्न C programs के परिणाम सीधे प्राप्त किए जा सकते हैं।

अंत में

आशा है कि RISC-V के प्रति हमारा उत्साह, शुरुआती लोगों को शुरुआत करने में मदद करेगा। और सबसे महत्वपूर्ण बात यह है कि यह पूरा प्रोजेक्ट open source है!
इसका मतलब है कि इस प्रोजेक्ट का उपयोग करके RISC-V community के लिए बेहतर learning tutorial, दस्तावेज़ और processor design बनाए जा सकते हैं, और कोई भी स्वतंत्र रूप से योगदान कर सकता है।

मुझे लगता है कि इस प्रोजेक्ट के उद्देश्य के लिए अभी और भी बहुत कुछ चाहिए। प्रोजेक्ट पर काम करते हुए मुझे एहसास हुआ कि verification का कोई अंत नहीं है, और चूँकि मैं विशेषज्ञ नहीं हूँ, इसलिए संभव है कि इसमें hazards सहित बहुत-सी ऐसी त्रुटियाँ हों जिनके बारे में मुझे खुद भी पता न हो। इसी कारण repository को frozen नहीं किया गया है और यह लगातार खुली हुई है! यदि अनुभवी लोग कृपया हमारे काम को देखें और feedback दें, तो यह बहुत मददगार होगा। सिर्फ हमारे लिए नहीं, बल्कि उन सभी के लिए भी जो इस प्रोजेक्ट को देखकर सीखते हैं।

आगे क्या

अब हम RV32I के बाद RV64I विस्तार पूरा कर चुके हैं और RV64IM की ओर विस्तार, और उससे भी आगे अपने मूल सपने — दक्षिण कोरिया का एक general-purpose CPU (RVA23) बनाने — की दिशा में आगे बढ़ रहे हैं। अभी हम ima_make_rv64 नामक repository में RV64IMA विस्तार तक के विकास पर ध्यान केंद्रित कर रहे हैं। यदि आप इस यात्रा पर नज़र बनाए रखें तो हम वास्तव में आभारी होंगे।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.