Renode Guest Cache Modelling Analyzer
Generating traces from Renode:
Add the following lines to the resc file:
cpu MaximumBlockSize 1
cpu CreateExecutionTracing "tracer" $ORIGIN/trace.log PCAndOpcode
tracer TrackMemoryAccesses
Usage:
-
Using build-in presets
./renode_cache_interface.py trace.log presets 'fu740.u74' -
Custom cache configuration
./renode_cache_interface.py trace.log config \ --memory_width 64 \ --l1i_cache_width 15 \ --l1i_block_width 6 \ --l1i_lines_per_set 4 \ --l1i_replacement_policy LRU \ --l1d_cache_width 15 \ --l1d_block_width 6 \ --l1d_lines_per_set 8 \ --l1d_replacement_policy LRU \
An example output of the analysis:
$ ./renode_cache_interface.py trace.log presets fu740.u74
l1i,u74 configuration:
Cache size: 32768 bytes
Block size: 64 bytes
Number of lines: 512
Number of sets: 128 (4 lines per set)
Replacement policy: RAND
l1d,u74 configuration:
Cache size: 32768 bytes
Block size: 64 bytes
Number of lines: 512
Number of sets: 64 (8 lines per set)
Replacement policy: RAND
Instructions read: 174620452
Total memory operations: 68952483 (read: 50861775, write 18090708)
Total I/O operations: 1875 (read: 181, write 1694)
l1i,u74 results:
Misses: 168
Hits: 174620284
Invalidations: 3
Hit ratio: 100.0%
l1d,u74
Misses: 17320212
Hits: 51632271
Invalidations: 17319700
Hit ratio: 74.88%
Full documentation on guest CPU cache modeling is available in the Renode documentation.