make
Populate the traces directory located in base directory (./).
./driver -trace <trace_name> -parts <number_of_parts> ...
Check usage by running ./driver without any arguments.
The Functional_Cache class has simple functions like Invalidate, Fill, etc. The class creates a functional cache level and maintains strict LRU order through the functions.
The Cache_Hierarchy class implements the cache policies and has a function per policy (Inclusive/ Exclusive/ NINE). The class instantiates 2 objects of Functional_Cache class with different sets and ways to simulate L2 and L3.
The CacheFullyAssociative class implements fully-associative LRU and Belady policies at L3 for cache miss classification into cold/ capacity/ conflict. This class is called only in the Inclusive policy case. A progress bar keeps track of Belady simulation, which can take upto a few hours.
The driver instantiates objects of Cache_Hierarchy class as per flags and knobs. By default, multi-threaded simulations (-mt flag) are enabled (each simulation itself is sequential) and all 3 policies are simulated. The -simulate flag can be used to toggle between policy combinations.
The knobs header file in include/ directory can be used to toggle L2 and L3 set-associativity, including fully-associative LRU policy for L2 and L3, if required. The BLK_OFFSET variable can be used to toggle block size.