A cache simulator for studying the factors that affects the performance of cache accesses
This project requires the GNU Compiler Collection (GCC) as the compiler.
See this link for further details about GCC
If you have ever compiled before, please clean an executable program and object files first by running this command in project's root directory. Otherwise, just skip this step.
make clean
Now, you can compile by running this command:
make
./bin/Simulator [options] <path_to_address_file>
Option | Description |
---|---|
-s, --size <cache_size> |
Set cache size (kilobyte) |
-sb, --size-b <cache_size> |
Set cache size (byte) |
-dm, --direct-mapped <block_size>? |
Set cache structure to a direct mapped with specific block size (4 by default) |
-as, --associativity <n_way>? |
Set cache structure to an associativity with specific n (2 by default) |
-lru, --least-recently-used |
Set least recently used as a replacement algorithm when --associativity option is triggered (default) |
-rr, --round-robin |
Set round robin as a replacement algorithm when --associativity option is triggered |
-h, --help |
Show help message |
Note that ?
after <argument>
indicates that <argument>
is optional and you can also view this help message by including --help
or -h
option after command.
Specification | Value |
---|---|
Cache type | Direct Mapped |
Cache size | 4 KB |
Block size | 4 Bytes |
./bin/Simulator input/gcc_ld_trace.txt --direct-mapped 4 --size 4
Specification | Value |
---|---|
Cache type | Associativity |
Cache size | 1024 KB |
N-way | 4 |
Replacement algorithm | Least recently used |
./bin/Simulator input/gcc_ld_trace.txt --associativity 4 --size 1024 --least-recently-used
An address file fed to this simulator must be conform to the following pattern:
name_label
address
address
...
gcc_ld_trace
0x40119618
0x1ffff1d0
0x40119618
0x1ffff1d0
0x1ffff1d0
Command:
./bin/Simulator input/gcc_ld_trace.txt --direct-mapped <block_size> --size <cache_size>
Direct mapped (Hit) | ||||
---|---|---|---|---|
Block Size (Bytes) |
Cache Size (KB) | |||
4 | 8 | 16 | 32 | |
4 | 1669560 | 1775198 | 1849934 | 1895088 |
8 | 1652147 | 1766215 | 1846558 | 1895885 |
16 | 1677463 | 1784151 | 1860161 | 1906747 |
32 | 1687566 | 1793431 | 1867498 | 1911848 |
Direct mapped (Miss) | ||||
---|---|---|---|---|
Block Size (Bytes) |
Cache Size (KB) | |||
4 | 8 | 16 | 32 | |
4 | 330440 | 224802 | 150066 | 104912 |
8 | 347853 | 233785 | 153442 | 104115 |
16 | 322537 | 215849 | 139839 | 93253 |
32 | 312434 | 206569 | 132502 | 88152 |
Direct mapped (Miss rate) | ||||
---|---|---|---|---|
Block Size (Bytes) |
Cache Size (KB) | |||
4 | 8 | 16 | 32 | |
4 | 0.1652 | 0.1124 | 0.0750 | 0.0525 |
8 | 0.1739 | 0.1169 | 0.0767 | 0.0521 |
16 | 0.1613 | 0.1079 | 0.0699 | 0.0466 |
32 | 0.1562 | 0.1033 | 0.0663 | 0.0441 |
Command:
./bin/Simulator input/gcc_ld_trace.txt --associativity <n_way> --size <cache_size> [--round-robin | --least-recently-used]
Associativity (Hit) | ||||
---|---|---|---|---|
Cache Size (KB) |
Two-way | Four-Way | ||
LRU | RR | LRU | RR | |
1 | 1491704 | 1458831 | 1527679 | 1475129 |
4 | 1759588 | 1740139 | 1786471 | 1759111 |
8 | 1834446 | 1821673 | 1852267 | 1834498 |
32 | 1939563 | 1934739 | 1950492 | 1943335 |
512 | 1974599 | 1974538 | 1974745 | 1974736 |
1024 | 1974717 | 1974691 | 1974753 | 1974753 |
Associativity (Miss) | ||||
---|---|---|---|---|
Cache Size (KB) |
Two-way | Four-Way | ||
LRU | RR | LRU | RR | |
1 | 508296 | 541169 | 472321 | 524871 |
4 | 240412 | 259861 | 213529 | 240889 |
8 | 165554 | 178327 | 147733 | 165502 |
32 | 60437 | 65261 | 49508 | 56665 |
512 | 25401 | 25462 | 25255 | 25264 |
1024 | 25283 | 25309 | 25247 | 25247 |
Associativity (Miss rate) | ||||
---|---|---|---|---|
Cache Size (KB) |
Two-way | Four-Way | ||
LRU | RR | LRU | RR | |
1 | 0.2541 | 0.2706 | 0.2362 | 0.2624 |
4 | 0.1202 | 0.1299 | 0.1068 | 0.1204 |
8 | 0.0828 | 0.0892 | 0.0739 | 0.0828 |
32 | 0.0302 | 0.0326 | 0.0248 | 0.0283 |
512 | 0.0127 | 0.0127 | 0.0126 | 0.0126 |
1024 | 0.0126 | 0.0127 | 0.0126 | 0.0126 |
This project is licensed under the MIT License - see the LICENSE.md file for details