CPSC 3300 - Spring 2016 - Project 3 Assignment Due date: Friday, April 22, by midnight (no late penalties until April 26) Grading standard: correctness 100% Submission: use handin.cs.clemson.edu This is to be an individual programming assignment. Your assignment is to modify the cache simulator /web/home/mark/public_html/330/sa4_4kb_pl.c to investigate the performance of a pseudo-set-associative cache design. In this design, there are four banks. Instead of doing parallel lookup in the four banks, it is hoped that power can be saved by predicting which bank will have the hit and initially only doing a lookup in that bank. If there is a miss in that bank, then the cache does a parallel lookup in the other three banks. The design calls for one bank predictor per set with the predicted bank being the most recent one in the set that was accessed as either a hit or a refill. Each predictor should be initialized to predict bank 0. Your job is to add the prediction logic to the simulator and to maintain a count of the correct predictions. A correct prediction occurs when there is a hit in the predicted bank of the set. The added code should be written totally by yourself, but you may discuss the project requirements and the concepts with anyone in class. Turn in your program using the handin web site (see URL above). You should turn in the plaintext copy of the source file. Please do not tar or otherwise compress the program source. Examples Using the input file /web/home/mark/public_html/330/sc1000.addrs [] gcc -Wall sa4_4kb_pl.c [] ./a.out < sc1000.addrs 72 misses of 1000 references (92.80% hit rate) [] gcc -Wall psa4.c [] ./a.out < sc1000.addrs 72 misses of 1000 references (92.80% hit rate) 593 correct bank predictions (59.30% accuracy) Using the input file /web/home/mark/public_html/330/gcc1000.addrs [] gcc -Wall psa4.c [] ./a.out < gcc1000.addrs 48 misses of 1000 references (95.20% hit rate) 868 correct bank predictions (86.80% accuracy)