A branch recorder records the branches taken by the zero or more processors that it is attached to. For each pair of addresses, the branch recorder keeps track of how many times the processors have branched from the first to the second address. This information can be used directly, or be processed to yield e.g. execution count for each address.
conf_object, log_object, address_profiler, branch_arc
- cell-change
- Notifier that is triggered after the object's cell was changed.
- object-delete
- Notifier that is triggered just before Simics object is deleted.
- queue-change
- Notifier that is triggered after the object's clock was changed. New clock can be obtained with the SIM_object_clock function.
-
clean
– delete all branch arcs in the branch recorder
-
info
– print information about the object
-
print-branch-arcs
– print branch arcs
-
status
– print status of the object
-
address_type
-
Required attribute;
read/write access; type:
i
Record physical ('2') or virtual ('1') addresses?
-
cpu_type
-
Pseudo attribute;
read-only access; type:
s
Type of processor this branch recorder can handle.
-
processors
-
Optional attribute;
read/write access; type:
[o*]
Processors this branch recorder is attached to.
-
num_arcs
-
Pseudo attribute;
read-only access; type:
i
Number of branch arcs in this recorder.
-
clean
-
Pseudo attribute;
write-only access; type:
n
Write nil to this attribute to erase all recorded branch arcs.
-
branches
-
Pseudo attribute;
read-only access; type:
[[iii]*]|n
branches collected by branch recorder
Simics Core