In addition to recording branches, Simics can record memory reads and writes by physical address—all of it simultaneously if you like. Start it like this:
simics> cpu0.add-memory-profiler read [cpu0] New read memory profiler added: cpu0_read_mem_prof
This creates a new data profiler called cpu0_read_mem_prof, which will keep track of all reads performed by cpu0 until you detach it:
simics> cpu0.remove-memory-profiler read
Like branch recorders, data profilers retain their recorded data after being detached, and may be reattached later. They may also be attached to another processor, even while they are still attached to the first one.
And, like branch recorders, data profilers are also address profilers. This means that while they may be different under the hood, they present their data the same way:
simics> cpu0_read_mem_prof.address-profile-info cpu0_read_mem_prof has 1 address profiler view: View 0: data profiler 64-bit addresses, granularity 32 bytes
However, unlike branch recorders, data profilers can only record physical addresses.
Section 13.3 explains how to access the recorded data.
Cache models provide profiling on cache hits and misses. See chapter 18 for more information.