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++ 工作知識。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-06-26 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2024-06-26 (世界標準時間)。"],[[["MPACT-Sim is a framework and library for building high-performance instruction set architecture (ISA) simulators."],["It simplifies simulator creation and modification, making it ideal for architectural exploration, system modeling, and software development."],["MPACT-Sim uses C++ functions to define instruction semantics and provides a declarative approach for instruction decoding, speeding up simulator development."],["The provided tutorials guide users through creating a basic RISC-V simulator, covering instruction decoding and semantic function implementation."],["While instruction issue and control are not explicitly covered in the tutorials, examples are available in the provided repository links."]]],[]]