ram_access_subscribe simulator_cache
API Reference Manual  /  5 Model-to-Simulator Interfaces  / 

simple_timing_v2

Description
=============================================

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.

Note: Temporal decoupling may cause calls regarding different cores to come out of order with regards to virtual time.

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.

To use the 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"

Execution Context
Called from performance models.

ram_access_subscribe simulator_cache