implement a Cache Simulator to evaluate different configurations of Caches, running it in different traces files. The followings are the requirements for the simulation: 1. Simulate only one level cache: L1 2. The size of the cache, associativity and blocksize are parameterizable 3. Replacement algorithm: LRU 4. Implement write through cache and write back cache