Variable voltage task scheduling algorithms for minimizing energy