Lab Assignments
Lab2 Leaderboard
Lab1 Leaderboard
Lab Information
You will work on Labs 1-4 in small teams of 3 students; Lab 0 is done individually. See the Course Info page for the late policy and grace-day budget, and the schedule for when each lab runs.
More details and updates will be provided throughout the course of the
semester.
Lab 0: Orientation (1 week, individual)
- Learn how to run programs in Gem5
- Do some initial analysis of metrics and pipeline stalls
- Play around with different built-in processor configurations
Tools: Gem5, McPAT
Lab 1: CPU Design: Dynamic Branch Predictors (2 weeks)
- Implement different branch predictors (global, local, gshare, perceptron, TAGE) in C
- Study various metrics: performance, energy, area, efficiency
- Students come up with their own branch prediction algorithm (competition for best performance)
Tools: Gem5, McPAT
Lab 2: CPU Design: Superscalar Out-of-Order Structures and Cache Coherence (4 weeks)
- Study issue queues, wakeup/select logic, ROB sizing, dependency checking
- Explore superscalar widths, pipeline stages, RS and ROB implementations in SystemVerilog
- Implement cache coherence protocols (MSI, MESI) in C
Tools: VCS
Lab 3: Profiling Snapdragon SoC (4 weeks)
- Experimentally investigate and profile the behavior of single threaded, multi-threaded, GPU, NPU, and DSP workloads on the Snapdragon SoC
- Heterogeneous profiling, including of the shared memory system on the Snapdragon SoC
Lab 4: Heterogeneous Systems and Algorithms (3.5 weeks)
- Conduct a study to showcase the differences between various heterogeneous algorithms and how they behave differently across a multitude of dimensions
- Experimentally investigate running AI inference workloads on CPU-GPU-NPU systems