This is a Cache simulator that simulates a cache read for L1, L2, and/or L3. At the startup, if the user inputs the incorrect amount of arguments or just –h as the first argument, it will tell the user how to use the program. Once the user specifies how the sizes, replacement policy, and trace file, it will run the program. This works for simulating only L1, only L1 and L2, and all three caches. Once it calculates the hits and misses for specified caches, it will print them out and then free every memory that was allocated. Run time should not take more than 10 seconds even when doing all Fully associative caches and reading 1 MB of traces.