Review Board 2.0.15


ruby: add stats to .sm files, remove cache profiler

Review Request #1849 - Created April 28, 2013 and submitted - Latest diff uploaded

Information
Nilay Vaish
gem5
default
Reviewers
Default
Changeset 9686:66375a5b9ece
---------------------------
ruby: add stats to .sm files, remove cache profiler
This patch changes the way cache statistics are collected in ruby.

As of now, there is separate entity called CacheProfiler which holds
statistical variables for caches. The CacheMemory class defines different
functions for accessing the CacheProfiler. These functions are then invoked
in the .sm files. I find this approach opaque and prone to error. Secondly,
we probably should not be paying the cost of a function call for recording
statistics.

Instead, this patch allows for accessing statistical variables in the
.sm files. The collection would become transparent. Secondly, it would happen
in place, so no function calls. The patch also removes the CacheProfiler class.
This is how the output would look like:

system.ruby.l1_cntrl0.L1Dcache.demand_hits           82                       # Number of cache demand hits
system.ruby.l1_cntrl0.L1Dcache.demand_misses        11220                       # Number of cache demand misses
system.ruby.l1_cntrl0.L1Dcache.demand_accesses        11302                       # Number of cache demand accesses
system.ruby.l1_cntrl0.L1Dcache.total_sw_prefetches            0                       # Number of software prefetches
system.ruby.l1_cntrl0.L1Dcache.total_hw_prefetches            0                       # Number of hardware prefetches
system.ruby.l1_cntrl0.L1Dcache.total_prefetches            0                       # Number of prefetches
system.ruby.l1_cntrl0.L1Dcache.num_data_array_reads            0                       # number of data array reads
system.ruby.l1_cntrl0.L1Dcache.num_data_array_writes            0                       # number of data array writes
system.ruby.l1_cntrl0.L1Dcache.num_tag_array_reads            0                       # number of tag array reads
system.ruby.l1_cntrl0.L1Dcache.num_tag_array_writes            0                       # number of tag array writes
system.ruby.l1_cntrl0.L1Dcache.num_tag_array_stalls            0                       # number of stalls caused by tag array
system.ruby.l1_cntrl0.L1Dcache.num_data_array_stalls            0                       # number of stalls caused by data array
system.ruby.l1_cntrl0.L1Icache.demand_hits            0                       # Number of cache demand hits
system.ruby.l1_cntrl0.L1Icache.demand_misses          105                       # Number of cache demand misses
system.ruby.l1_cntrl0.L1Icache.demand_accesses          105                       # Number of cache demand accesses
system.ruby.l1_cntrl0.L1Icache.total_sw_prefetches            0                       # Number of software prefetches
system.ruby.l1_cntrl0.L1Icache.total_hw_prefetches            0                       # Number of hardware prefetches
system.ruby.l1_cntrl0.L1Icache.total_prefetches            0                       # Number of prefetches
system.ruby.l1_cntrl0.L1Icache.num_data_array_reads            0                       # number of data array reads
system.ruby.l1_cntrl0.L1Icache.num_data_array_writes            0                       # number of data array writes
system.ruby.l1_cntrl0.L1Icache.num_tag_array_reads            0                       # number of tag array reads
system.ruby.l1_cntrl0.L1Icache.num_tag_array_writes            0                       # number of tag array writes
system.ruby.l1_cntrl0.L1Icache.num_tag_array_stalls            0                       # number of stalls caused by tag array
system.ruby.l1_cntrl0.L1Icache.num_data_array_stalls            0                       # number of stalls caused by data array