Unlike most profiling tools, which instrument the target source code or object code, Simics can profile a workload non-intrusively. This allows you to profile without disturbing the execution. Simics will profile arbitrary code, including device drivers, dynamically generated code, and code for which you do not have the source. Also unlike most profiling tools, Simics collects profiling data exactly, not by sampling the execution and relying on statistics.
The following sections describe how to make Simics collect profiles of instruction execution and memory reads and writes, and how to examine the collected data.