For this assignment, you will submit your cache implementation from lab along with a description of your improvement to the cache and step-by-step instructions for testing your cache.
[CSC 211.01] Assignment 11. Include every group member in the email. Attach your logisim file, but include the rest of your work in the body of the email, not as an attachment.Submit your cache implementation from lab, including at least one improvement to the cache. Other cache improvements are acceptable if I approve them before you submit your assignment.
Briefly describe the purpose and implementation of the improvement you made to your cache. This text should help me understand your Logisim file, and make it clear why this would be a useful feature to have in your cache. Make sure you use labels in your Logisim file so you can refer to components of your circuit in the text.
For this part of the assignment, you will identify all of the different circumstances that you need to test to validate your cache, then write concrete testing procedures to verify that your cache is working.
Your cache will behave differently depending on the inputs and its internal state. For example, a cache entry with a valid bit that is not set should return a miss, update the cached data and tag, then set the valid bit. Enumerate all of the different circumstances and explain how your cache shoud behave in each situation.
For each circumstance you identified in part C.1, write a set of steps to run your cache through this circumstance, along with the expected cache behavior. Each test procedure should start from an empty cache, which will have all registers (valid, tag, and data registers in each entry) set to zero. You should pre-load your RAM element with the data required for your tests.
You may find it useful to view the internal state of a specific subcircuit element, both for your own evaluation and in your testing procedures. If you right click on a cache entry subcircuit, you can select View cache-entry, which will show the current state of this specific cache entry instead of the default starting state. You may need to manually clear the valid register in your cache entries if you change the contents of RAM after caching the old data from RAM.
This assignment was developed in collaboration with Jerod Weinman, and is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 4.0 International License.