A probability model is a C++ method that return a boolean value indicating if the approximation it was instantiated on should be executed or not. If a probability model returns true, the instruction and energy models instantiated for the given instruction will be run. Otherwise, the execution will follow its normal flow, not considering any approximated state.
Probability models are used mostly with probabilistic approximations. For example, consider that an architecture contains a first level cache memory supplied by an adjustable supply voltage. When the supply voltage is lower than nominal, errors in memory accesses start to be perceived. For simplicity, we assume as an example that for a supply voltage below 0.5 volts, every memory access will produce error.
PM LowVddMemProbability() {
if (OP["voltage"] < 0.5) {
return true;
}
else {
return false;
}
}
The example takes advantage of a voltage operating parameter to store the current supply voltage. See The Operating Parameters for more information.
Probability models can take arbitrary arguments upons instantiated, as defined in the ADeLe Description File. See Instantiating probability models for more information.