MPACT-Sim 簡介

MPACT-Sim 是一個架構和程式庫,旨在協助開發人員為各種指令集架構建立高效能的 ISA 模擬器。使用 MPACT-Sim 建構的模擬器容易建立、方便檢測且快速。MPACT-Sim 的激勵用途是快速建立和輕鬆修改架構探索的模擬工具。不過,針對無 (或有限) 硬體可用性的架構,產生的模擬器也可以用於系統建模、編譯器驗證或軟體開發。

MPACT-Sim 可讓您輕鬆表示並實作指令語意,就像簡單的 C++ 函式/可呼叫函式一樣。MPACT-Sim 也提供宣告式方法,用於表示指令可自動產生大部分的指令解碼器,提高可建立新模擬器的方便性和速度。您可以輕鬆新增自訂設定項目,產生的模擬器可輕鬆使用一組標準類別檢測。

教學課程

以下的教學課程會逐步說明如何針對部分 RiscV 操作說明建立 ISA 模擬器,足以執行針對 RV32I 架構子集編譯的「hello world」應用程式。其中涵蓋下列活動:

  • 撰寫 RV32I 的 ISA 解碼器說明。

    這會說明獨立於外部表示法 (編碼) 之外的個別指示。此說明用於產生 C++ 程式碼,可初始化模擬器的內部指令描述元。

  • 為 RV32I 撰寫二進位解碼器說明。

    以下說明操作說明、位元欄位及其值的二進位編碼。這個程式碼可用於產生解碼器,以便取得將指示字詞對應至自訂程式碼及擷取特定位元欄位值的指示。

  • 編寫整合 (完整) 的解碼器來整合兩個已產生的解碼器,並新增必要的程式碼,涵蓋產生的程式碼不具備的功能。

  • 編寫操作說明語意函式,提供每個目標 RV32I 指令的實作內容。

目前的教學課程並不包含完成模擬工具所需的其餘程式碼 (包括程式碼控制指令問題),但日後可能會添加。不過,您可以在教學課程存放區及完整 [MPACT-RiscV 模擬器]https://github.com/mpact-riscv 的存放區中查看程式碼範例。

模擬工具基礎架構是以 C++ 編寫,因此建議使用良好的 C++ 工作知識。