devices, including in some cases mission critical systems, for which
there is a need to optimize their energy consumption and verify that
they will perform their function within the available energy budget.
In this work we propose a novel parametric approach to estimating
tight energy bounds (both upper and lower) that are practical
for energy verification and optimization applications in embedded
systems. Our approach consists in dividing a program into basic
(“branchless”) blocks, establishing the maximal (resp. minimal)
energy consumption for each block using an evolutionary algorithm,
and combining the obtained values according to the program
control flow, using static analysis, to produce energy bound functions.
Such functions depend on input data sizes, and return upper
or lower bounds on the energy consumption of the program for any
given set of input values of those sizes, without running the program.
The approach has been tested on XMOS chips, but is general
enough to be applied to any microprocessor and programming
language. Our experimental results show that the bounds obtained
by our prototype tool can be tight while remaining on the safe side
of budgets in practice