Welcome!
Welcome to the learning gem5 online bootcamp! We’re excited to have you, and we hope you’re excited to get started with gem5. This section will introduce you to how the course is organized.
By the end of this section, you will be able to:
- Describe how the learning gem5 course is organized.
- Explain what learning objectives are.
Learning objectives
You might’ve noticed the box in at the top labeled “By the end of this section, you will be able to”. These are the section’s learning objectives, and they’ll be at at the top of every section. These are meant to help you recognize whether you met the section’s goals. If, after going through a section, you can confidently say you can do what’s in its learning objectives box, it’s safe to say you’re ready to move on.
Assumed knowledge
This course makes some assumptions about what you already know in order to engage with the material. gem5 is a computer architecture simulator, meaning that computer architecture knowledge is expected and will not be covered in detail. We assume that you have taken the following university-level courses or acquired the equivalent knowledge elsewhere:
- Computer Organization
- Computer Architecture I and II
We also assume knowledge in the following areas:
- C++ and Python programming
- Programming tools such as Makefiles, GDB, and the command line
- Software such as Git/GitHub and VSCode
Please refer to the knowledge checklist for a detailed list of assumed knowledge and resources if you need to fill in the gaps.
Organization and tracks
This course is divided into units and sections.
Course outline
Unit I: Introduction
Section 1: Why simulation?
Section 2: Enter gem5
Section 3: Installing gem5
Section 4: Your first configuration script
Unit II: Beginning gem5 simulation
Section 1: Standard library and resources introduction
Section 2: Modeling processors in gem5
Section 3: Modeling classic caches in gem5
Section 4: Modeling memory in gem5
Unit III: Intermediate gem5 features
Section 1: Simulation modes
Section 2: Revisiting gem5 resources
Section 3: Traffic generation
Section 4: Communicating from simulation to simulator
Unit IV: Developing gem5 models
Track A: Processors
Track B: Caches
Track C: Memory
Unit V: Advanced gem5 concepts
Section 1: KVM fast-forwarding
Section 2: Checkpointing
Section 3: Sampled simulation
Section 4: MultiSim
Section 5: Creating disk images
Section 6: Power modeling
You are encouraged to complete the units in order, but you can always jump around or skip sections if you’re familiar with their subject matter. Use the learning objectives to guide you!
Unit IV is unique as it’s split into 3 tracks: Processors, Caches, and Memory. You may choose to complete any number of these tracks and still complete the course. These tracks are independent and convey similar information about simulating in gem5, but their emphasis and encompassing project differ in focus. You can choose to complete all 3 tracks in a row, complete the entire course with one track then come back to the other tracks, or do one track and call it good. It depends on your goals and how you’ll use gem5!
Acknowledgements
gem5in5 is developed by Naama Amiel, who is advised by Dr. Elba Garza at the University of Washington.
This course is built upon previous in-person gem5 bootcamps:
Some sections are based on the gem5 tutorial and assignments for CMPUT 429 at the University of Alberta. Thank you to Ayrton Chilibeck for contributing this resource.
The format of this bootcamp was inspired by Learn You A Haskell For Great Good by Miran Lipovača.