Cache Simulator Extra Credit

Here are a few options for extra credit, roughly in order of increasing difficulty. Most of these options have you build a more sophisticated cache. For each option you choose, you MUST provide us with a paragraph describing your changes (in a high-level way) and how your modifications impacted the performance of your cache.

  1. Implement write-allocate policy for write-misses.
  2. Implement split Instruction and Data caches.
  3. Implement a victim cache.
  4. Build a more realistic write-buffer. If you've looked at the code, you've probably realized that it doesn't model a write-buffer as accurately as it could. In particular, when a cache read occurs, we also need to check if the item is possibly in the write-buffer. Doing this would mean modifying the write-buffer to maintain a list of the memory addresses it's writing. Also, a real write-buffer would merge writes to the same memory location.
  5. Implement a unified L2 cache. Misses in the L1 cache(s) should be propogated to the L2 cache. The L1 and L2 caches potentially will use different organizations and policies.
  6. Anything you want, as long as you clear it with me or Matthew.


dugan@cs.washington.edu