Introduction
Using gem5
Developing gem5 models
Extra topics
Introduction to gem5
About the bootcamp
Computer Architecture Simulation
Getting started with gem5
Getting started with gem5 development
Next module:
Using gem5
Getting started with gem5 development
View the slides
here
.
Why develop gem5?
Add new models
Extend current models
Fix things and contribute back!
A bit about the difference between C++ and python
The
models
are in C++
The parameters that you can change are declared in
src/
, but in a “python” file (SimObject description file)
You have an “instance” or “configuration” which sets the parameters.
An analogy
The model is “An out of order CPU”
The parameters are the size of the reorder buffer and the issue width
The “instance” or “configuration” is an i7-7700
What is a SimObject?
Main thing that gem5 uses as the bridge from the C++ models to the python configuration
Things in
src/
and in the SimObjects should be the
model
not the configuration.
gem5’s event queue
A bit about event-driven programming
What it means for events to execute
Relation between SimObjects and events
Building gem5
Dependencies
Build system:
SCons
Build parameters
Two types: gem5 features and compiler parameters
Opt/fast, profiling, linker
ISA, GPU, Ruby protocol, others
Making modifications and using git
Install the hooks!
Use the style checker! Don’t ignore it!
Create a branch for yourself
Use good commit messages… it’s worth the time!
Previous submodule:
Getting started with gem5