MPACT-Sim یک چارچوب و کتابخانه است که به منظور ایجاد آسانتر شبیهسازهای ISA با کارایی بالا برای طیف وسیعی از معماریهای مجموعه دستورالعمل طراحی شده است. شبیهسازهایی که با استفاده از MPACT-Sim ساخته شدهاند، ساختن آسان، ابزارسازی آسان و سریع هستند. مورد استفاده محرک برای MPACT-Sim این است که به سرعت شبیه سازها را برای (مجموعه دستورالعمل) کاوش معماری ایجاد کرده و به راحتی تغییر دهید. با این حال، شبیهساز حاصل میتواند برای مدلسازی سیستم، اعتبارسنجی کامپایلر، یا توسعه نرمافزار برای معماریهایی که در دسترس بودن سختافزار (یا محدود) نیستند، استفاده شود.
MPACT-Sim بیان و پیادهسازی معنای دستورالعملها را بهعنوان توابع / فراخوانیهای ساده C++ آسان میکند. MPACT-Sim همچنین یک روش توضیحی برای بیان دستورالعملها ارائه میکند تا تولید خودکار بیشتر رمزگشای دستورالعمل را فعال کند و سهولت و سرعت ایجاد شبیهسازهای جدید را افزایش دهد. ورودی های پیکربندی سفارشی را می توان به راحتی اضافه کرد و شبیه سازهای حاصل با استفاده از مجموعه ای از کلاس های استاندارد به راحتی قابل ابزارسازی هستند.
آموزش ها
آموزشهایی که در ادامه میآیند، یک راهنمای راهنما برای ایجاد یک شبیهساز ISA برای زیرمجموعهای از دستورالعملهای RiscV ارائه میکنند که برای اجرای برنامه «سلام جهان» که برای زیرمجموعه معماری RV32I کافی است، کافی است. آنها فعالیت های زیر را پوشش می دهند:
یک توضیح رمزگشای ISA برای RV32I بنویسید.
این دستورالعمل های فردی را مستقل از نمایش خارجی آنها (رمزگذاری) توصیف می کند. از این توضیحات برای تولید کد ++C استفاده می شود که توصیفگرهای دستورالعمل داخلی شبیه ساز را مقداردهی اولیه می کند.
یک توضیح رمزگشای باینری برای RV32I بنویسید.
این کدگذاری باینری دستورالعمل ها، فیلدهای بیت و مقادیر آنها را توصیف می کند. این برای تولید یک رمزگشا برای دستورالعمل ها استفاده می شود که قادر به نگاشت یک کلمه دستورالعمل به یک کد عملیاتی و استخراج مقادیر فیلدهای بیتی خاص است.
یک رمزگشای دستورالعمل یکپارچه (کامل) بنویسید که دو رمزگشای تولید شده را ادغام می کند و کد مورد نیاز را برای پوشش دادن آنچه کد تولید شده انجام نمی دهد، اضافه می کند.
توابع معنایی دستورالعمل را بنویسید تا اجرای هر یک از دستورالعمل های RV32I هدف را ارائه کنید.
نوشتن کد باقیمانده مورد نیاز برای تکمیل شبیه ساز، از جمله مسئله دستورالعمل کنترل کد، توسط آموزش های فعلی پوشش داده نمی شود، اما ممکن است در آینده اضافه شود. با این حال، کد نمونه را می توان در مخزن آموزش و همچنین در مخزن برای کامل [MPACT-RiscV simulator]https://github.com/mpact-riscv مشاهده کرد.
زیرساخت شبیه ساز به زبان C++ نوشته شده است، بنابراین دانش کاری خوب از C++ فرض می شود.