مقدمة إلى MPACT-Sim

MPACT-Sim هو إطار عمل ومكتبة مصمّمة لتسهيل إنشاء محاكيات ISA عالية الأداء لمجموعة واسعة من بُنى مجموعة التعليمات. من السهل إنشاء المحاكيات التي تم إنشاؤها باستخدام MPACT-Sim وخطوات استخدامها وسرعتها. إن حالة الاستخدام المحفزة لـ MPACT-Sim هي إنشاء محاكيات للاستكشاف المعماري (مجموعة التعليمات) وتعديلها بسهولة بسرعة. ومع ذلك، يمكن أيضًا استخدام المحاكي الناتج لنمذجة النظام، أو التحقق من صحة المحول البرمجي، أو تطوير البرامج للبُنى التي ليس لها توفر (أو محدود) للأجهزة.

تجعل MPACT-Sim من السهل التعبير عن دلالات التعليمات وتنفيذها كدوال C++/قابلة للاستدعاء بسيطة. توفّر MPACT-Sim أيضًا منهجية وصفية للتعبير عن التعليمات لإتاحة الإنشاء التلقائي لمعظم برامج فك الترميز في التعليمات، ما يزيد من سهولة وسرعة إنشاء المحاكيات الجديدة. يمكن بسهولة إضافة إدخالات التكوين المخصصة، كما يسهل قياس أدوات المحاكيات الناتجة باستخدام مجموعة من الفئات القياسية.

البرامج التعليمية

توفر البرامج التعليمية التي تليها إرشادات إرشادية حول إنشاء محاكي ISA لمجموعة فرعية من إرشادات RiscV التي تكفي لتنفيذ تطبيق "helloworld" الذي تم تجميعه لمجموعة فرعية مع بنية RV32I. إنها تغطي الأنشطة التالية:

  • اكتب وصفًا لبرنامج فك ترميز ISA لـ RV32I.

    يصف هذا التعليمات الفردية بشكل مستقل عن تمثيلها الخارجي (الترميز). يُستخدم هذا الوصف لإنشاء رمز C++ الذي يقوم بإعداد واصفات التعليمات الداخلية للمحاكي.

  • اكتب وصفًا لفك الترميز الثنائي لـ RV32I.

    يصف هذا الترميز الثنائي للتعليمات وحقول البت وقيمها. يُستخدم هذا لإنشاء برنامج فك ترميز للتعليمات القادرة على تعيين كلمة تعليمات إلى رمز تشغيل معيّن، واستخراج قيم حقول بت معيّنة.

  • اكتب برنامج فك ترميز تعليمات مدمج (كامل) يدمج برنامجَي فك الترميز اللذين تم إنشاؤهما، مع إضافة الرمز المطلوب لتغطية ما لا ينطبق على الرمز الذي تم إنشاؤه.

  • اكتب الدوال الدلالية للتعليمات لتوفير عمليات تنفيذ كل من تعليمات RV32I المستهدفة.

لا تغطي البرامج التعليمية الحالية كتابة التعليمات البرمجية المتبقية المطلوبة لإكمال المحاكي، بما في ذلك مشكلة تعليمات التحكم في التعليمات البرمجية، ولكن يمكن إضافتها في المستقبل. ومع ذلك، يمكن عرض نموذج التعليمات البرمجية في مستودع البرنامج التعليمي وكذلك في مستودع [MPACT-RiscV Simulator]https://github.com/mpact-riscv).

تتم كتابة البنية الأساسية للمحاكي بلغة C++ ، لذلك يتم افتراض معرفة عملية جيدة بـ C++.