Adaptive hardware algorithms for instruction-level parallelism in CPUs

In this project the student will explore three types of adaptive mechanisms that exist in modern general purpose processors (CPUs): branch prediction (prediction of condition results to help with fetching near-future instructions) and cache replacement (evicting the cache blocks that are less likely to be referenced soon).

The main task in this project is to try an innovative approach such as with a new cache replacement policy to improve CPU performance. This will be studied under different benchmarks, such as for machine learning.

The student should be familiar with basic computer architecture topics including prefetching and branch prediction, and be comfortable using Linux and bash. The beginning of the project is well laid out for obtaining some basic results, but the project also has the potential to provide important insights for creating novel adaptive algorithms in hardware. The student will do C/C++ coding under Linux, and will use a scripting language of their choice like Python.