CSCE 689-602 Fall 2020 Project
The project for our class will be a cache replacement contest. It will be
an individual projects, i.e., no group project. The project is
due on December 7, 2020. The project proposal is due September 24, 2020.
The Project
You will implement a microarchitectural prediction technique and demonstrate
its effectiveness. You will choose a technique from the literature,
preferably from the last 10 years, to implement in a microarchitectural
simulator. You will test the technique on a set of benchmarks to show
how well it works and why it works. For example, you might implement some
optimization and show its geometric mean speedup over a baseline technique
on a set of benchmarks. The technique, simulator, metrics, and benchmarks
are up to you to propose. You will write a proposal outlining these aspects
of your project and turn it in on September 24.
What Is Due for the Project
You will turn in a project proposal on September 24, and a final project
writeup and your code on December 7.
The Proposal
The proposal should be a document giving the approach you will
take to accomplish the project. The following questions should be answered:
- What algorithm(s) will be used for the technique?
- What experiments will you do to tune your technique?
- What papers have you read to inform your technique? List at least three papers.
- What simulation platform will you use to develop and test the technique?
- What benchmarks will you use to test the technique?
- What metrics will you use to quantify the value of the technique?
- Beyond speedup or other figure of merit, how will you evaluate why the technique performs well (or doesn't)?
Turn in the proposal through email to djimenez@tamu.edu.
The Final Project
The final project is due on December 7, 2020. You will turn in a
project writeup giving an introduction, related work, main idea of the
technique, methodology, results with bar charts or other pretty graphics,
and conclusion. You will also turn in your source code you used for the
project. Make a .tar.gz file that can be unpacked into a folder with
instructions on how to build the project.
How To Choose A Technique
If you already have an idea of what you might like to do, that's great. Please email the
professor to make sure you're on the right track, then start writing the proposal. If you don't have an idea, here are some:
- Cache replacement contest. Visit this website to learn about a cache replacement contest that was held in 2017. You can download the infrastructure and implement your own cache replacement policy.
- Instruction prefetching contest. Visit this website for an instruction prefetching contest.
- Data prefetching contest. Visit this website for a data prefetching contest.
- Value prediction. Visit this website for a value prediction contest.
- Conditional branch prediction. Visit this website for a conditional branch prediction contest.
- Indirect branch prediction. Visit this page for an indirect branch prediction contest I had for my class a few years ago.
For these contests, you may implement a technique from the literature
yourself and do not use other code from anyone else. Or, you could
alternately try combining two (or more) predictors to outperform the original
predictors. If you try this second idea, you may use the source code for
the predictors you combine, but the way you combine them must be coded
by you, and it must be non-trivial. You should also tune the parameters
of the original algorithms to yield a good improvement while working as
a combination. Your writeup must explain how the components of the two
predictors are able to complement each other to give superior performance.
These contests typically specify a maximum hardware budget, say, 32KB. You
may choose to respect this hardware budget, or go beyond it to see how
much more improvement a larger budget yields. If you do the idea where
you combine two predictors, make sure that your combined predictor uses
the same hardware budget specified for the competition when you compare it
to a base predictor; it's easy to achieve a speedup by providing a larger
hardware budget, but we really want to compare predictors to each other
on a equal footing.