MPACT-Sim के बारे में जानकारी

MPACT-Sim एक फ़्रेमवर्क और लाइब्रेरी है. इसे इस तरह से डिज़ाइन किया गया है कि आप कई तरह के निर्देश सेट आर्किटेक्चर के लिए, बेहतर परफ़ॉर्मेंस वाले ISA सिम्युलेटर आसानी से बना सकें. MPACT-Sim का इस्तेमाल करके बनाए गए सिम्युलेटर को बनाना, इंस्टॉल करना आसान, और तेज़ है. MPACT-Sim को इस्तेमाल करने का मुख्य मकसद, आर्किटेक्चरल एक्सप्लोरेशन (निर्देश सेट) के लिए, फटाफट सिम्युलेटर बनाना और उनमें आसानी से बदलाव करना है. हालांकि, इस सिम्युलेटर का इस्तेमाल ऐसे आर्किटेक्चर के लिए सिस्टम मॉडलिंग, कंपाइलर पुष्टि या सॉफ़्टवेयर डेवलपमेंट के लिए भी किया जा सकता है जिनमें हार्डवेयर की उपलब्धता (या सीमित) नहीं है.

MPACT-Sim की मदद से, निर्देशों के सिमैंटिक को आसानी से समझा और लागू किया जा सकता है. यह C++ फ़ंक्शन/कॉल करने लायक आसान है. MPACT-Sim में ज़्यादा से ज़्यादा निर्देश डिकोडर को अपने-आप जनरेट करने की सुविधा चालू करने के लिए, निर्देश देने का तरीका भी बताया जाता है. इससे नए सिम्युलेटर बनाए जा सकते हैं और इन निर्देशों को आसानी से जनरेट किया जा सकता है. कस्टम कॉन्फ़िगरेशन एंट्री को आसानी से जोड़ा जा सकता है. इससे मिलने वाले सिम्युलेटर, स्टैंडर्ड क्लास के सेट की मदद से इस्तेमाल करना आसान होता है.

ट्यूटोरियल

यहां दिए गए ट्यूटोरियल में, RiscV के कुछ निर्देशों के लिए आईएसए सिम्युलेटर बनाने का तरीका बताया गया है. यह गाइड, RV32I आर्किटेक्चर के सबसेट के लिए इकट्ठा किए गए "hello world" ऐप्लिकेशन के इस्तेमाल के लिए काफ़ी है. इनमें ये गतिविधियां शामिल हैं:

  • RV32I के लिए ISA डिकोडर का ब्यौरा लिखो.

    इसमें उन निर्देशों के बारे में बताया गया है जो संगठन से बाहर के नहीं हैं (एन्कोडिंग). इस जानकारी का इस्तेमाल C++ कोड जनरेट करने के लिए किया जाता है. यह कोड सिम्युलेटर के इंटरनल निर्देश डिस्क्रिप्टर (जानकारी देने वाले) को शुरू करता है.

  • RV32I के लिए बाइनरी डिकोडर का ब्यौरा लिखो.

    यह निर्देशों, बिट-फ़ील्ड, और उनकी वैल्यू की बाइनरी कोडिंग के बारे में बताता है. इसका इस्तेमाल, निर्देश के लिए डिकोडर जनरेट करने के लिए किया जाता है, ताकि ऑपकोड में निर्देश शब्द को मैप करने और खास बिट फ़ील्ड की वैल्यू निकालने में मदद मिल सके.

  • इंटिग्रेट किया गया (पूरा) निर्देश डिकोडर लिखें जो जनरेट किए गए दो डिकोडर को इंटिग्रेट करता हो. साथ ही, ज़रूरी कोड जोड़कर यह बताता हो कि जनरेट किया गया कोड क्या नहीं करता है.

  • टारगेट RV32I निर्देशों को लागू करने के लिए, निर्देश सिमैंटिक फ़ंक्शन लिखें.

सिम्युलेटर को पूरा करने के लिए, बचे हुए कोड को लिखना, जिसमें कोड को कंट्रोल करने से जुड़ी समस्या भी शामिल है, मौजूदा ट्यूटोरियल में शामिल नहीं किया गया है. हालांकि, आने वाले समय में इसे जोड़ा जा सकता है. हालांकि, सैंपल कोड को ट्यूटोरियल डेटा स्टोर करने की जगह के साथ-साथ पूरे [MPACT-RiscV सिम्युलेटर]https://github.com/mpact-riscv के लिए डेटा स्टोर करने की जगह में देखा जा सकता है.

सिम्युलेटर इन्फ़्रास्ट्रक्चर को C++ में लिखा गया है. इसलिए, यह माना जाता है कि C++ के बारे में आपको अच्छी जानकारी है.