SHIM Specification V2.00
The Multicore Association January 28, 2019 Page 17 of 82
Each class has its unique properties or attributes. All classes include connection information describing which
pairs of cores are connected by the particular communication object. Since there can be multiple connections, the
object contains ConnectionSet, which in turn contains any number of Connection. Each Connection contains
references to a pair of MasterComponents.
Software tools can use this information to obtain the type of MasterComponent-to-MasterComponent
communication mechanisms are supported by a particular hardware implementation represented by a SHIM XML.
Note that the connection can be across multiple ComponentSet boundaries, even if it traverses the chip or hardware
board boundaries.
2.4 Frequency & Voltage - FrequencyVoltageSet
Software execution time strongly depends on the component clock frequencies. As such, specifying the clock
frequencies of those components is necessary if one wants to estimate software performances, which is relevant for
SHIM (see Use Cases
).
To define the components’ clock frequencies, SHIM 1.0 provided basic support through the ClockFrequency
object. However, modern multi- and many-core platforms support advanced techniques such as dynamic frequency
scaling which allows changing the clock frequency of a component dynamically. These techniques, combined with
dynamic voltage scaling, allows tuning the operating point of the platform components to optimize the power
consumption while still providing the desired quality of service or meeting real-time execution deadlines.
Nowadays, most of those techniques are unavoidable, e.g. to fit an application power budget or to maximize the
autonomy of autonomous battery-operated systems.
The software architecture and implementation must generally be adapted to take the most benefit of those
techniques. It is therefore greatly relevant for SHIM to include some level of modeling of the dynamic frequency
and voltage scaling capabilities of a platform. Consequently, SHIM 2.0 provides an improved support for the
definition of component frequency and voltage operating points. The main classes associated with this feature are
listed in Table 3.
Most platform clock trees are designed in such a way that components are partitioned in several frequency
domains. Inside those domains, all components share the same clock frequency. For instance, in a CPU cluster, all
the cores typically run at the same frequency. Similarly, the input voltage trees are designed in such a way that
components are partitioned in voltage domains, where all components inside a domain share the same input
voltage. There is, however, no direct correspondence between both domains and it is very often the case that all
components inside a voltage domain do not belong the same frequency domain. For instance, in a platform, a GPU
and a CPU cluster might share the same voltage input but run at different clock frequencies. In SHIM 2.0, it is
possible to model these complex configurations by defining FrequencyDomain and VoltageDomain objects, which
allow to define separately groups of components sharing respectively the same clock frequency or the same input
voltage.
In platforms supporting dynamic frequency and/or voltage scaling, the components will generally support several
operating points, characterized by different clock frequencies and input voltages. To define those operating points,
SHIM 2.0 provides the OperatingPointSet class, which contains a list of OperatingPoint objects. Each of those
OperatingPoint objects defines a valid component operating point. This OperatingPoint must provide a supported
clock frequency value and optionally the associated input voltage.
To associate a FrequencyDomain, a VoltageDomain and OperatingPointSet to any component, one should use
respectively the component object’s frequencyDomainRef, voltageDomainRef, and operatingPointSetRef
attributes.