This paper examines dynamic energy consumption caused by data during software execution on deeply embedded microprocessors, which can be significant on some devices. In worst-case energy consumption analysis, energy models are used to find the most costly execution path. Taking each instruction's worst case energy produces a safe but overly pessimistic upper bound. Algorithms for safe and tight bounds would be desirable. We show that finding exact worst-case energy is NP-hard, and that tight bounds cannot be approximated with guaranteed safety. We conclude that any energy model targeting tightness must either sacrifice safety or accept overapproximation proportional to data-dependent energy. software. In this paper, we shall study the calculation of worst-case energy, considering only the effects that different software and inputs can have on a system. The objective is to determine whether it is possible to establish an upper bound on energy that is tighter than over-estimating by, for example, using a maximum activity factor. Such a factor may be unachievable during the execution of a real program, because an operand value that triggers the highest energy consumption in one instruction may, through data dependency and other constraints, preclude subsequent instructions from consuming their maximal energy [27].Energy is the integral of power over a given time interval. The power dissipation of a processor can be apportioned in two parts: static and dynamic. Static power or leakage is the power dissipated for as long as the component is turned on, irrespective of its internal state or any changing inputs and outputs. Dynamic power or switching activity refers to power dissipation due to changes within the processor: the clock tree, switching of gates and charging of data buses, which all consume energy. We express these more formally in Section 3. Analysis of worst-case instantaneous dynamic power has been well studied in the literature, but here we consider worst-case energy, i.e. the integral of power over a program execution.Estimating worst-case energy for a particular program requires the computation of these two distinct contributions to power dissipation. Static power is constant in a stable operating environment (for example voltage, frequency and temperature), therefore energy consumption due to static power is proportional to program execution time. Numerous techniques have been developed by the Worst Case Execution Time (WCET) community to address this matter [42]. Dynamic power, however, has received much less attention. Several models of how systems consume energy have characterised the dynamic power only for specific inputs, averaged over all inputs, assumed the upper bound of dynamic power for each instruction [15,41] or assumed no dynamic power at all [11].In this paper we demonstrate that for the proportion of dynamic energy that is due to switching caused by operand values, the calculation of the worst-case input to a software execution is an NP-hard problem, and further, that this quantity canno...