Compiler-based prefetching algorithm for recursive data structure - Anuar, Nurulhaini (2007)
Memory latency becoming an increasing important performance bottleneck as the gap between processor and memory speeds continues to grow. While cache hierarchies are an important step toward addressing the latency problem but they are not a complete solution. To further reduce or tolerate memory latency problem, several techniques have been proposed and evaluated which is responsible to tolerating memory latency and cachemisses. Regarding to this problem, it has become necessary for us to have a better compiler optimization techniques. One of the techniques has recently used was Software Prefetching. Software prefetching relies on the programmer or compiler to insert explicit prefetch instructions into the application code for memory references that are likely to miss in the cache. Software prefetching has been shown to be effective in reducing memory stalls in array-based applications but not in pointer-based applications. This project investigates compiler-based prefetching for pointer based applications particularly those containing Recursive Data Structures (RDS) and designs the proposed algorithm. To designs this propose algorithm, there are two methodology used in this project that are comparative study and lab experiments in order to generates the hypothesis and quantitatively tested to measure the performance. There are three existing techniques that are selected for comparative study that are Greedy Prefetching, Jump History Pointer and Prefetch Array. The results from the comparative study and lab experiment give the best algorithm which is guide to design the proposed algorithm. This best algorithm consists of greedy prefetching and prefetch array algorithms. The proposed algorithm have been implemented and tested in the same environment as existing algorithms and the results shows the better improvement achieved compared from the best algorithm. This improvement results from the lab experiments shows this project have achieved the main objectives and gives better performance of compiler-based prefetching algorithm.