Index

Table of contents

Assignment 0: Getting started

A simple assignment to get students started with gem5. This will introduce the students to how to use gem5, codespaces, etc. In this assignment you will learn how to use gem5’s standard library to:

  • describe the computer system you would like to simulate,
  • set up the workloads and benchmarks you need to evaluate your system’s performance,
  • set up a simulation environment,
  • use gem5 in command line.

The assignment is due on 1/15. Read about submission deadlines on the assignment page.

Start assignment 0.

GitHub Classroom link for 154B: https://classroom.github.com/a/MSJXTW62

GitHub Classroom link for 201A: https://classroom.github.com/a/6tW_hScw

Assignment 1: ISA vs Technology

This assignment compares the performance difference of x86, Arm, and RISC-V ISAs on a simple matrix multiplication workload. The performance is compared across ISAs and between 1 GHz and 4 GHz. The goal is to use the Iron Law of Performance to explain the results. In this assignment you will:

  • compare the performance of three different ISAs
  • evaluate the effect of changing CPU clock frequency on the overall performance

The assignment is due on 1/20. Read about submission deadlines on the assignment page.

Start assignment 1.

GitHub Classroom link for 154B: https://classroom.github.com/a/U2i19Erv

GitHub Classroom link for 201A: https://classroom.github.com/a/5c60g6T7

Assignment 2: Pipelining

This assignment compares the performance of an in-order CPU with different pipeline widths, latencies, and depths. The goal is to understand the impact of the pipeline on performance. In this assignment you will:

  • learn how you can use gem5 to obtain an instruction mix
  • construct hypotheses using simple analytical models
  • evaluate the performance of different configurations of a pipeline

The assignment is due on 1/27. Read about submission deadlines on the assignment page.

Start assignment 2.

GitHub Classroom link for 154B: https://classroom.github.com/a/9ttRhgEf

GitHub Classroom link for 201A: https://classroom.github.com/a/wvKeeK6I

Assignment 3: Out of Order CPU

This assignment digs into how different parameters of an out-of-order CPU, including width, ROB size, and the number of physical registers, impact performance. This assignment uses a variety of workloads to showcase the differences in how these parameters impact performance. In this assignment you will:

  • Show how applications have different behaviors as the microarchitecture changes
  • Give you experience investigating the bottleneck in a particular architecture
  • Improve your understanding of out-of-order processor architecture

The assignment is due on 2/3. Read about submission deadlines on the assignment page.

Start assignment 3.

GitHub Classroom link for 154B: https://classroom.github.com/a/TOfrsoGz

GitHub Classroom link for 201A: https://classroom.github.com/a/f4SMUSm8

Assignment 4: Blocked matrix-multiply

In this assignment, you’ll be investigating the performance impacts of different cache architectures and different algorithm designs on matrix multiplication. It reinforces the average memory access time calculation and the impact of cache size on performance. The goals of this assignment are:

  • Show how algorithms have different behaviors as the microarchitecture changes.
  • Show how changing the algorithm can change performance on the same microarchitecture
  • Improve your understanding of cache architectures

The assignment is due on 2/17. Read about submission deadlines on the assignment page.

Start assignment 4.

GitHub Classroom link for 154B:

GitHub Classroom link for 201A:

Assignment 5: Virtual Memory

In this assignment, you will explore the performance impacts of different virtual memory configurations on a variety of workloads. You will investigate the impact of page size, TLB size, and associativity on performance. The goals of this assignment are:

  • Show how virtual memory configurations can impact performance
  • Show how different workloads can have different behaviors
  • Improve your understanding of virtual memory

The assignment is due on 2/24. Read about submission deadlines on the assignment page.

Start assignment 5.

GitHub Classroom link for 154B:

GitHub Classroom link for 201A:

Assignment 6: False sharing

In this assignment, you will explore the performance bottlenecks in poorly-written parallel code, specifically false sharing. It uses a simple parallel workload, shows 6 different implementations, and asks the students to figure out why the performance is different. Then, after seeing which algorithms perform well and poorly on real hardware, we will use a cycle-level simulator (gem5) with a detailed cache model to understand the performance.

The assignment is due on 3/10. Read about submission deadlines on the assignment page.

Start assignment 6.

GitHub Classroom link for 154B:

GitHub Classroom link for 201A:


Next submodule: