Pengantar MPACT-Sim

MPACT-Sim adalah framework dan library yang dirancang untuk mempermudah pembuatan simulator ISA berperforma tinggi untuk berbagai arsitektur set instruksi. Simulator yang dibangun menggunakan MPACT-Sim mudah dibuat, mudah diinstrumentasi, dan cepat. Kasus penggunaan yang memotivasi MPACT-Sim adalah membuat dan memodifikasi dengan cepat simulator untuk eksplorasi arsitektur (set petunjuk). Namun, simulator yang dihasilkan juga dapat digunakan untuk pemodelan sistem, validasi compiler, atau pengembangan software untuk arsitektur yang tidak memiliki (atau terbatas) ketersediaan hardware.

MPACT-Sim memudahkan untuk mengekspresikan dan mengimplementasikan semantik instruksi sebagai fungsi/callable C++ sederhana. MPACT-Sim juga menyediakan metodologi deklaratif untuk mengekspresikan instruksi guna mengaktifkan pembuatan otomatis sebagian besar decoder instruksi, sehingga meningkatkan kemudahan dan kecepatan untuk membuat simulator baru. Entri konfigurasi kustom dapat dengan mudah ditambahkan, dan simulator yang dihasilkan mudah diinstrumentasikan menggunakan serangkaian class standar.

Tutorial

Tutorial berikut memberikan panduan terpandu tentang cara membuat simulator ISA untuk subset petunjuk RiscV yang memadai untuk menjalankan aplikasi "hello world" yang dikompilasi untuk subset arsitektur RV32I. Topik tersebut mencakup aktivitas berikut:

  • Tulis deskripsi decoder ISA untuk RV32I.

    Ini menjelaskan setiap petunjuk yang terpisah dari representasi eksternalnya (encoding). Deskripsi ini digunakan untuk menghasilkan kode C++ yang menginisialisasi deskriptor petunjuk internal simulator.

  • Menulis deskripsi decoder biner untuk RV32I.

    Ini menjelaskan encoding biner instruksi, bit-field, dan nilainya. Atribut ini digunakan untuk menghasilkan decoder untuk petunjuk yang mampu memetakan kata petunjuk ke opcode, dan mengekstrak nilai kolom bit tertentu.

  • Tulis decoder petunjuk terintegrasi (lengkap) yang mengintegrasikan dua dekoder yang dihasilkan, dengan menambahkan kode yang diperlukan untuk mencakup hal yang tidak dilakukan oleh kode yang dihasilkan.

  • Menulis fungsi semantik petunjuk untuk menyediakan implementasi setiap petunjuk RV32I target.

Penulisan kode tersisa yang diperlukan untuk menyelesaikan simulator, termasuk masalah petunjuk pengontrolan kode, tidak tercakup dalam tutorial saat ini, tetapi dapat ditambahkan di masa mendatang. Namun, kode contoh dapat dilihat di repositori tutorial, serta di repositori untuk [simulator MPACT-RiscV]https://github.com/mpact-riscv lengkap.

Infrastruktur simulator ditulis dalam C++, sehingga asumsinya adalah Anda memiliki pengetahuan kerja yang baik tentang C++.