Giới thiệu về MPACT-Sim

MPACT-Sim là một khung và thư viện được thiết kế để giúp bạn dễ dàng tạo các trình mô phỏng ISA hiệu suất cao cho nhiều cấu trúc tập lệnh. Các trình mô phỏng được tạo bằng MPACT-Sim rất dễ tạo, dễ đo lường và nhanh chóng. Trường hợp sử dụng thúc đẩy của MPACT-Sim là nhanh chóng tạo và dễ dàng sửa đổi cũng như sửa đổi trình mô phỏng dữ liệu khám phá kiến trúc (tập lệnh). Tuy nhiên, trình mô phỏng thu được cũng có thể được dùng để lập mô hình hệ thống, xác thực trình biên dịch hoặc phát triển phần mềm cho những kiến trúc không có (hoặc có giới hạn) khả năng sử dụng phần cứng.

MPACT-Sim giúp bạn dễ dàng diễn đạt và triển khai ngữ nghĩa lệnh dưới dạng các hàm/lệnh gọi C++ đơn giản. MPACT-Sim cũng cung cấp một phương pháp khai báo để thể hiện hướng dẫn nhằm cho phép tự động tạo hầu hết bộ giải mã lệnh, giúp tăng mức độ dễ dàng và tốc độ tạo ra các trình mô phỏng mới. Bạn có thể dễ dàng thêm các mục cấu hình tuỳ chỉnh và trình mô phỏng thu được có thể dễ dàng đo lường bằng cách sử dụng tập hợp các lớp tiêu chuẩn.

Hướng dẫn

Các hướng dẫn sau đây cung cấp hướng dẫn từng bước về cách tạo trình mô phỏng ISA cho một tập hợp con các lệnh RiscV đủ để thực thi ứng dụng "chào thế giới" được biên dịch cho tập hợp con kiến trúc RV32I. Chúng bao gồm các hoạt động sau:

  • Viết nội dung mô tả bộ giải mã ISA cho RV32I.

    Đoạn mã này mô tả từng lệnh độc lập với cách biểu diễn bên ngoài (mã hoá) tương ứng. Nội dung mô tả này được dùng để tạo mã C++ khởi chạy bộ mô tả hướng dẫn nội bộ của trình mô phỏng.

  • Viết mô tả bộ giải mã nhị phân cho RV32I.

    Định nghĩa này mô tả phương thức mã hoá nhị phân của lệnh, trường bit và giá trị của chúng. Tính năng này dùng để tạo bộ giải mã cho các lệnh có khả năng ánh xạ một từ lệnh với một mã hoạt động và trích xuất các giá trị của các trường bit cụ thể.

  • Viết một bộ giải mã hướng dẫn tích hợp (đầy đủ) tích hợp 2 bộ giải mã đã tạo, thêm mã bắt buộc để xử lý những gì mã được tạo không có.

  • Viết các hàm ngữ nghĩa của lệnh để cung cấp cách triển khai cho từng lệnh RV32I mục tiêu.

Các hướng dẫn hiện tại không hỗ trợ việc viết mã còn lại cần thiết để hoàn tất trình mô phỏng (bao gồm cả vấn đề về lệnh kiểm soát mã) nhưng có thể sẽ được thêm trong tương lai. Tuy nhiên, bạn có thể xem mã mẫu trong kho lưu trữ hướng dẫn cũng như trong kho lưu trữ để xem toàn bộ mã mẫu [MPACT-RiscV emulator]https://github.com/mpact-riscv).

Cơ sở hạ tầng trình mô phỏng được viết bằng C++, vì vậy, giả định bạn sử dụng kiến thức thực hành tốt về C++.