gem5-accel is a framework built on top of gem5 targeting the fast modeling, validation, and evaluation of novel heterogeneous hardware accelerator architectures before actually implementing them in RTL. To achieve this, three sets of tools are provided:
The architectural model of gem5-accel is illustrated below. As it can be observed, three main architectural blocks are provided to help in the modeling of novel hardware accelerators: (1) System address management; (2) Prog. IO; and (3) Load/Store Unit.
The System address management block is responsible for managing a shared memory region that can be accessed by the CPU and the hardware accelerator. The hardware accelerator reads the operands and stores the results within this region.
The Prog. IO block implements a bank of programming registers that can be used by the CPU to control the hardware accelerator.
Finally, the Load and Store Unit is responsible for mediating all data transfers between the hardware accelerator and the memory hierarchy, automatically implementing and concealing all the complex control required for that effect.
The architectural model can be found here, and a practical example of an hardware accelerator based on the provided architectural model is here.
Examples of both SE and FS simulation scripts can be found here and here.
An example illustrating how to communicate with the hardware accelerator from the host code can be found here, and here an example of a device driver to be used with FS mode can be found.
The authors rely on the images and kernels officially supported by gem5, available at https://resources.gem5.org/.
@inproceedings{DBLP:conf/sbac-pad/VieiraR0T22,
author = {Jo{\~{a}}o Vieira and
Nuno Roma and
Gabriel Falc{\~{a}}o and
Pedro Tom{\'{a}}s},
title = {gem5-ndp: Near-Data Processing Architecture Simulation From Low Level Caches to {DRAM}},
booktitle = {{SBAC-PAD}},
pages = {41--50},
publisher = {{IEEE}},
year = {2022}
}