TECH-PREVIEW
This interface may change without notice.
=============================================
The simple_timing_v2
interface is used to send information
about timing, instructions executed and activity factor from timing models
to power and temperature models. It should be implemented by the consumer
of the data.
The period that is covered by a call is called a heartbeat. The length of that period may vary between calls.
When a core has completed a heartbeat new_active_data is called and when a period of idleness has passed new_idle_data is called.
The core argument is the core the performance data comes from.
The time argument is the virtual time of the core at the end of the heartbeat.
The frequency argument is what the core frequency was set to at the time of the call.
The cycles argument is the number of cycles in the heartbeat.
The ipc argument is average ipc during this heartbeat.
The cdyn argument is average activity factor during the heartbeat.
The version_data argument can be a NULL
or a pointer to
simple json-string that can contain information about the performance model.
Time during heartbeat may not add up with time passed since last call on a particular core, especially when cores goes in and out of idle-mode.
simple_timing_v2
add the following
EXTRA_MODULE_VPATH := simple-timing-interface
to the modules Makefile.
#define SIMPLE_TIMING_V2_MAX_NR_EVENTS 120 SIM_INTERFACE(simple_timing_v2) { bool (*new_active_data) (conf_object_t *obj, double time, conf_object_t *core, uint64 frequency, cycles_t cycles, double ipc, double cdyn, char const *version_data); bool (*new_idle_data) (conf_object_t *obj, double time, conf_object_t *core, uint64 frequency, cycles_t cycles); }; #define SIMPLE_TIMING_V2_INTERFACE "simple_timing_v2"