The AMALTHEA common model is not a model by itself, but provides standard elements used by other models as containments.
The only exception is the CommonElements class that provides a central container for tags and classifiers. These elements are used in many sub models where references to tags or classifiers provide a mechanism to annotate the objects.
Tags are a generic possibility to annotate objects in the AMALTHEA model.
Classifiers are used to define specific features or abilities of a core or a memory. They are used in the PropertyConstraintsModel to restrict the allocation to cores or the memory mapping.
The CustomProperty element is used to define own properties that are not (yet) available in AMALTHEA. If there is the need to extend an element or to store tool information related to processing steps, CustomProperties can be used to store this type of information. It also provides the possibility to work with prototypical approaches that later (if established and more stable) can be integrated in the standard model.
The elements are stored in a
HashMap. The values can be of different types as shown in the structure picture, like String, Integer, Boolean...
In addition a
ReferenceObject is available to store own references to other
EObject elements.
The
ListObject can be used to store multi-valued custom properties.
The AMALTHEA data model includes a common element to describe time ranges in an easy way, the
Time element. The
Time class in general allows to define negative time values. If only positive values are expected the AMALTHEA validation will show a warning.
The
Time element can be contained by any other element for specifying attributes to store time information.
Time units are needed to describe different timing behavior and requirements, like deadlines or offsets of components.
To support different time ranges, especially different time units, AMALTHEA predefines these types like seconds, milli-seconds, micro-seconds, nano-seconds or pico-seconds.
The DataSize (and DataRate) definition contains units and prefixes
| International System of Units (SI) | Prefixes for binary multiples | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
The
DataSize provides convenience methods to get the size also in bit and byte.
It is internally converted and can be retrieved in both ways.
The Deviation class is used to model statistical distributions within AMALTHEA. There is a wide variety of possible use cases, where such a distribution is needed. With such a deviation for example, the variation in run times of functions or respectively their instructions can be imitated. Therefore, AMALTHEA currently supports the following three statistical distributions:
With the Boundaries class it is possible to define the deviation of instructions in such a way that a specific scenario is covered. The scenario is on the one hand specified by the minimum and maximum value between which the instructions vary. On the other hand, the Sampling Type specifies the specific scenario that is covered. The following sampling types are available which are visualised in the figures below:
The uniform distribution is a statistical distribution where the values between the stated lower and upper bound are equally likely to be observed.
The Gaussian/normal distribution is a statistical distribution where the values decrease symmetrically. The maximum value and thus its location is thereby stated by the mean and the rate of decrease is defined by its standard deviation. Since the curves approach zero on either side, an additional upper and lower bound can be added to constraint the values.
The Beta distribution is a statistical distribution whose shape is defined by alpha > 0 and beta > 0. That way, the Beta distribution can also be used to model other distributions like for example uniform, normal, or Bernoulli distribution. Since the curves can approach zero or infinity on either side, an additional upper and lower bound can be added to constraint the values.
The Weibull distribution is a statistical distribution whose shape is defined by kappa > 0 and the scale of the distribution by lambda > 0. That way, the Weibull distribution can also be used to model other distributions like for example the exponential or normal distribution. Since the curves can approach zero or infinity on either side, an additional upper and lower bound can be added to constraint the values. Alternatively, the Weibull distribution can also be parameterized using the mean value and a parameter that constraints the distribution regarding the per mill of remaining values.
The contained elements are representing statistical values.
The values can be set either with a min, avg and max representation using the
MinAvgMaxStatistic element.
The other possibility is to set a single value using the
SingleValueStatistic element.
The minimum and maximum values are set as a normal
int value, the average the single value as
float.
Instructions are used to express execution times in a more abstract way. The number of instructions characterizes the amount of computation that is necessary to execute e.g. a Runnable. Depending on the capabilities of a Core (the frequency and the instructions per cycle) the time to execute such an element will differ.
In the next picture a more detailed overview is given about the Instructions.
| Name | Description |
|---|---|
| Instructions | As a runnable contains several instructions to perform, this is represented using different algorithms or a constant value to consume the same amount of time/ticks per cycle. |
Needs are used to express execution needs in the most abstract way. The number characterizes the amount of computation that is necessary to execute e.g. a Runnable. In future releases Needs will replace Instructions because they can also represent instructions but are more flexible.
The Counter element describes an activation of a target element that happens only every nth time.
| Name | Description |
|---|---|
| prescaler | Gives the number n for the activation, e.g. if set to 2, the target element is executed every second time. |
| offset | Initial shift for the first execution of the target. |
If for example prescaler is 5 and offset is 2 it is executed on the 2nd, 7th, 12th, … time.
Counters are available at the following elements: