MPACT-Sim은 다양한 명령 집합 아키텍처용 고성능 ISA 시뮬레이터를 쉽게 만들 수 있도록 설계된 프레임워크 및 라이브러리입니다. MPACT-Sim을 사용하여 제작된 시뮬레이터는 손쉽게 만들고 계측할 수 있으며 빠릅니다. MPACT-Sim의 강력한 사용 사례는 (명령어 세트) 아키텍처 탐구를 위한 시뮬레이터를 빠르게 만들고 쉽게 수정하는 것입니다. 그러나 결과 시뮬레이터는 시스템 모델링, 컴파일러 유효성 검사 또는 하드웨어 가용성이 없거나 제한된 아키텍처의 소프트웨어 개발에 사용할 수도 있습니다.
MPACT-Sim을 사용하면 명령 의미 체계를 간단한 C++ 함수/호출 가능 함수로 쉽게 표현하고 구현할 수 있습니다. 또한 MPACT-Sim은 대부분의 명령 디코더를 자동으로 생성할 수 있는 명령을 표현하는 선언적 방법을 제공하여 새로운 시뮬레이터를 만들 수 있는 용이성과 속도를 높입니다. 맞춤 구성 항목을 쉽게 추가할 수 있으며 결과 시뮬레이터는 표준 클래스 세트를 사용하여 쉽게 계측할 수 있습니다.
튜토리얼
이어지는 튜토리얼에서는 RV32I 아키텍처 하위 집합을 위해 컴파일된 'hello world' 애플리케이션을 실행하기에 충분한 RiscV 명령의 하위 집합을 위한 ISA 시뮬레이터를 만드는 과정을 안내합니다. 이 과정에서는 다음 활동을 다룹니다.
RV32I용 ISA 디코더 설명을 작성합니다.
이는 외부 표현 (인코딩)과 별개로 개별 명령을 설명합니다. 이 설명은 시뮬레이터의 내부 명령 설명자를 초기화하는 C++ 코드를 생성하는 데 사용됩니다.
RV32I용 바이너리 디코더 설명을 작성합니다.
이는 명령, 비트 필드 및 그 값의 바이너리 인코딩을 설명합니다. 이는 명령 단어를 명령 코드에 매핑하고 특정 비트 필드의 값을 추출할 수 있는 명령의 디코더를 생성하는 데 사용됩니다.
생성된 코드가 하지 않는 작업을 처리하는 데 필요한 코드를 추가하여 생성된 두 개의 디코더를 통합하는 통합 (전체) 명령 디코더를 작성합니다.
각 타겟 RV32I 명령의 구현을 제공하는 명령 시맨틱 함수를 작성합니다.
명령 문제를 제어하는 코드 등 시뮬레이터를 완료하는 데 필요한 나머지 코드 작성은 현재 튜토리얼에서 다루지 않지만 향후 추가될 수 있습니다. 그러나 샘플 코드는 튜토리얼 저장소와 전체 [MPACT-RiscV 시뮬레이터]https://github.com/mpact-riscv 저장소에서 볼 수 있습니다.
시뮬레이터 인프라는 C++로 작성되므로 C++에 대한 좋은 실무 지식이 있다고 가정합니다.