• Aucun résultat trouvé

5.3 Coprocesseur DVS

5.3.6 Choix du régulateur DC/DC

Dans ce système, le choix du type de convertisseur DC/DC a une grande importance. En effet, si le convertisseur possède peu de niveaux de sortie, la tension d’alimentation sera en moyenne assez su-périeure à la tension idéale. Au contraire, plus le niveau de sortie peut être proche de ce qu’il faudrait pour que la vitesse réelle du processeur soit la même que la consigne, et plus l’énergie consommée sera faible. Dans [64], nous avons réalisé une étude pour évaluer l’impact du type de régulateur utilisé. Dans cette étude, nous avons considéré deux catégories de régulateurs : les régulateurs à sortie continue, et les régulateurs à paliers, commandés par des commandes binaires.

La figure 5.9 montre des courbes de consommation du processeur, pour un profil applicatif identique donné :

– sans régulation de tension, à vitesse maximale (a)

– régulé avec un régulateur commandé sur 2 bits, (4 niveaux de tension)

– régulé avec un régulateur 2 bits (4 niveaux de tension) et une politique logicielle de gestion de la vitesse idéale qui prend en compte le surplus de vitesse pour ralentir le plus tôt possible le processeur (c)

– régulé avec un régulateur 4 bits (16 niveaux de tension) (d) – régulé avec un régulateur à sortie continue (e)

Ces courbes ne considèrent que l’énergie consommée par le processeur et ne tiennent pas compte de l’énergie dissipée dans le régulateur et dans le coprocesseur. Il faut donc en plus considérer le rendement des régulateurs qui dépend d’un grand nombre de paramètres tels que la plage de tension, l’intensité débitée, la stabilité de l’alimentation, ...

Si le processeur sans régulation consomme à vitesse maximum 33 µJ pour le profil d’application donné sur la période considérée, on peut voir que l’utilisation d’un régulateur à paliers permet de faire chuter la consommation d’énergie à 15,5µJ, soit 53 % d’économie.

On peut également remarquer que plus il y a de niveaux en sortie, plus il est possible de réaliser des économies d’énergie. En particulier, passer de 4 à 16 niveaux permet de faire passer la consommation d’énergie de 15,5 µJ à 10,9 µJ et d’économiser ainsi près de 30% d’énergie supplémentaire pour ce profil applicatif donné. Le gain est encore meilleur (10µJ) si on utilise un régulateur à sortie continue. Cependant, la différence avec un régulateur à 16 niveaux est faible, et le choix devra donc se faire principalement sur le rendement des régulateurs pour les profils de courant considérés.

FIG. 5.9 – Énergie consommée par la processeur avec différentes régulations, pour un profil d’application donné.

Enfin, on peut voir un gain de 25% entre la consommation de la courbe (b) et celle de la courbe (c). Ce gain est uniquement dû à la politique de gestion de la consommation mise en œuvre au niveau logiciel. La politique logicielle de gestion des tensions est donc un aspect très important dans la régulation qui sera traité dans les chapitres 6 et 7.

5.4 Conclusion

L’utilisation de circuits asynchrones permet de réduire naturellement l’activité électrique au sein du circuit. Ainsi, les techniques de réduction de l’activité des circuits synchrones n’ont pas lieu d’être, ce qui permet d’éviter une gestion logicielle et une mise en œuvre matérielle potentiellement compliquée.

De plus, les techniques d’adaptation des tensions du circuit permettent de réduire considérablement l’énergie consommée statiquement et dynamiquement. En effet, la technique de l’ABB permet de polari-ser le substrat des transistors afin de réduire fortement le courant de fuite. La technique du DVS permet, quant à elle, de jouer sur la tension d’alimentation du circuit pour modifier la vitesse des circuits. Ainsi, beaucoup d’énergie peut être économisée si on a le temps d’effectuer un traitement. Les circuits asyn-chrones n’ayant pas d’horloge, il n’y a pas de fréquence d’horloge à changer conjointement à la tension. Le contrôle de cette technique s’en trouve donc facilité.

Néanmoins, l’absence d’horloge dans un processeur asynchrone empêche de connaître simplement la vitesse du circuit au niveau logiciel. Pour éviter de caractériser les temps d’exécution pire cas en fonction des tensions d’alimentation, nous avons spécifié un coprocesseur. Il permet d’asservir la vitesse

du processeur en fonction d’une consigne définie par le logiciel. Dans ce cas, la vitesse du processeur est mesurée ce qui permet de conserver un comportement en moyenne et, par conséquent, d’économiser de l’énergie.

Chapitre

6

Ordonnancement et gestion du DVS

6.1 Problématique dans un contexte de réseau de capteurs sans fil

Pour contrôler le coprocesseur DVS, il est nécessaire de générer une consigne logicielle. Cette consigne en vitesse doit être calculée en fonction des tâches qui s’exécutent sur le système, c’est-à-dire en fonction de leur complexité en termes de temps d’exécution ou de nombre d’instructions à exécuter, ainsi qu’en termes d’échéances. Les notions de contraintes temps réel et d’ordonnancement de tâches interviennent donc naturellement pour contrôler la vitesse du processeur.

Dans un réseau de capteurs sans fil, les tâches ont une faible complexité et il est donc très important de prendre cet aspect en considération pour la programmation et l’ordonnancement de celles-ci. Comme nous l’avons vu à la section 3.2.1, l’utilisation de système d’exploitation dédié au réseaux de capteurs permet d’économiser beaucoup d’énergie par rapport aux OS généralistes.

TinyOS est un OS pour réseaux de capteurs très faible consommation et avec une très faible empreinte mémoire. De plus, dans la version 2.x, il est possible de redéfinir la notion de tâche pour y ajouter les contraintes temps réel et de créer un ordonnanceur permettant de gérer ces contraintes. Nous avons choisi TinyOS 2.0 comme base pour développer et comparer les algorithmes d’ordonnancement temps réel et de DVS, en raison principalement de sa légèreté.

Au niveau algorithmique, la gestion de l’énergie se fait à plusieurs niveaux. Il y a tout d’abord le type d’ordonnancement de tâches, préemptif ou non-préemptif. Les ordonnancements non préemptifs sont très peu couteux à la fois en ressources mémoire et en ressources processeur. De plus, ils sont supportés par TinyOS. Quant aux ordonnancements préemptifs, bien que plus coûteux, ils permettent un contrôle plus précis des tâches et de la vitesse. Ils permettent donc généralement d’économiser plus d’énergie. Néanmoins, il faut faire attention à ce que le surcoût qu’engendre l’implantation d’un ordon-nancement préemptif ne coûte pas plus cher en énergie que les optimisations en vitesse que permettent les préemptions, surtout dans un contexte de réseaux de capteurs sans fil où les tâches sont généralement

petites comparativement aux tâches rencontrées habituellement dans les systèmes temps réel telles que du décodage MPEG.

Il y a de plus le type de tâches : périodique ou sporadique. Les tâches périodiques ont des dates d’occurrence connues ce qui autorise généralement des politiques plus agressives. D’un autre côté, dans un contexte de réseau de capteurs sans fil, certaines tâches peuvent être considérées comme sporadiques, comme par exemple, une tâche créée pour recevoir un message provenant de la radio suite à une inter-ruption. Considérer ce type de tâches peut s’avérer assez coûteux dans certains cas s’il est mal géré.

Enfin, il existe différents algorithmes permettant de contrôler la vitesse du processeur en fonction des tâches présentes sur le système et de leurs contraintes temps réel. Ces algorithmes ont une grande influence sur la consommation d’énergie.

Sans vouloir se montrer exhaustive, cette partie a pour but de mettre en évidence les mécanismes de gestion du temps réel et du DVS qui ont un impact, qu’il soit positif ou négatif, sur la consommation d’énergie dans un contexte de réseau de capteurs sans fil.