Réduire la consommation d'un microcontrôleur en mode ... - L'Embarqué

L'ordonnancement des tâches. Dans tout système embarqué, la solution la plus simple est d'assurer que chaque tâche soit activée lors- qu'une interruption ...
298KB taille 4 téléchargements 54 vues
A P P L I C A T I O N

Gestion d'énergie

Réduire la consommation d’un microcontrôleur en mode actif grâce à l’optimisation logicielle Pour une consommation électrique optimale, il est essentiel d’avoir une vue d’ensemble d’un système dès sa conception, mais des gains importants peuvent être obtenus en minimisant l’énergie consommée pendant la phase active d’un microcontrôleur. Et ce en réduisant la durée d’exécution du logiciel et le temps passé à piloter les E/S et les périphériques externes.

C

e n’est qu’à l’échelle d’un système pris dans son intégralité qu’il est véritablement possible d’approcher au plus près la solution optimale qui permettra d’ajuster au mieux une application connectée à faible consommation. Et cette réflexion est valable aussi bien pour les modes actifs que pour les modes de veille. Quand le mode actif de consommation est primordial, la solution optimale pourra être trouvée en associant une connaissance détaillée de l’application et une expérience approfondie des différentes méthodes de communication utilisées, quelles qu’elles soient. Il est primordial de comprendre en premier lieu les spécificités fonctionnelles du produit ainsi que les objectifs de consommation, et d’éviter l’ajout de fonctionnalités inutiles. Il est peu probable qu’une solution générique soit la réponse la plus adaptée pour chaque exigence particulière, bien que certaines mesures évidentes puissent être mises en place dans un premier temps. Utiliser un compilateur qui soit apte à optimiser le code pour une consommation électrique réduite et le faire fonctionner à son niveau d’optimisation le plus élevé apparaît comme l’une de ses mesures. Il existe deux méthodes principales qui permettent de réduire la consommation électrique des applications embarquées quelles qu’elles soient : minimiser la consommation pendant la phase inactive/passive et minimiser la consommation pendant la phase active. Cet article se concentre sur le rôle du logiciel et sur la pro-

32 / L’EMBARQUÉ / N°9 / 2015

AUTEUR

blématique liée à la réduction de la consommation électrique d’un système pendant sa phase active. Le bénéfice net qu’il est possible d’atteindre en travaillant sur ces deux aspects dépendra du rapport entre la consommation électrique en mode actif et celle en mode passif, soit : (moyenne_consommation_active x durée_mode_actif)

Dave Hughes, PDG, HCC Embedded.

(moyenne_consommation_passive x durée_mode_passif)

Le principe essentiel pour obtenir une consommation électrique optimale est d’appréhender la conception d’une application au niveau système. Ceci requiert une étude précise des exigences du produit afin d’analyser et d’optimiser les activités qui nécessitent le plus d’énergie. Il faut alors concevoir matériel et logiciel en fonction de ces exigences, et éliminer les fonctionnalités inutiles ou redondantes. La plupart des systèmes fortement enfouis ont une ou plusieurs sources d’entrée et une ou plusieurs sorties. Certains systèmes sont plus complexes et les options sont donc plus compliquées, ce qui impacte directement les possibilités d’amélioration. Les objectifs de conception recherchés pour le mode actif incluent notamment la réduction de la durée d’exécution du logiciel nécessaire à l’accomplissement d’une tâche précise, ainsi que la réduction du temps nécessaire au pilotage des périphériques et des E/S externes.

L’ordonnancement des tâches Dans tout système embarqué, la solution la plus simple est d’assurer que chaque tâche soit activée lors-

qu’une interruption l’exige. Tout code est donc déclenché par un événement : il doit seulement faire ce qui est exigé, puis retourner en mode de consommation réduite. Néanmoins, ce principe n’est applicable que pour les applications les plus simples. Quand il y a transmission de données, cette option n’est plus adaptée et les contraintes au niveau du code peuvent augmenter rapidement. La solution est alors d’utiliser un ordonnanceur ou un système d’exploitation qui gère les interactions entre les données et les tâches, mais l’un ou l’autre a un impact différent sur la consommation électrique. Il ne faut, par exemple, utiliser une boucle quasi infinie que si l’application est très simple et que si les exigences en termes de consommation électriques ne sont pas cruciales. Ce choix ne permet qu’une réutilisation limitée du code logiciel sans possibilité d’évolution dans le temps. Cette méthode est loin d’être idéale puisque, par définition, elle implique des traitements inutiles pour définir la suite des tâches. De plus, il est en général difficile, mais pas impossible, d’utiliser des composants logiciels tierces parties avec des boucles quasi infinies. Une autre option est d’utiliser un système d’exploitation temps réel préemptif. Le développeur obtient un gain immédiat car la plupart des systèmes peuvent être déclenchés par un événement, c’est-à-dire que le code ne s’exécute qu’en réponse à un événement spécifique. Cette option est très flexible, mais pas toujours optimale quand il s’agit de

Gestion d'énergie

A P P L I C A T I O N

gestion de fichiers FAT utilisé développer un équipement à   1   UTILISER UN ORDONNANCEUR PRÉEMPTIF sur un PC) d’accéder aux consommation réduite. Les données et fournir une API systèmes d’exploitation La permutation des tâches dans un ordonnanceur coopératif peut conduire à une exécution particulièrement efficace étant donné que le simple pour masquer la comtemps réel sont d’avantage nombre de changements de contexte est minimisé. plexité de la mémoire flash. conçus pour être perforEvidemment cela implique mants plutôt que pour des surcoûts qui peuvent ne répondre à des contraintes pas être adaptés à un sysde basse consommation. En tème dont l’autonomie doit particulier, le temps de être maximisée… réponse de la tâche la plus Le système de gestion de prioritaire est conçu pour fichiers pour compteurs être le plus faible possible. communicants (SMFS, Smart En conséquence, dans les Meter File System) de HCC conceptions à base d’OS que l’on peut voir en Figure 3 temps réel, les caractérisest un très bon exemple tiques les plus importantes d’optimisation de consomsont les durées de changemation électrique appliquée ments de contexte et les à la mémoire flash. Au lieu temps de réponse aux interde s’appuyer sur une ruptions. Dans les systèmes approche multicouche avec « sysà basse consommation, le temps de et ses inconvénients, mais leurs diftème de gestion de fichiers + pilote », réponse aux interruptions n’est pro- férences sont trop variables pour être il associe directement les bases de bablement pas un critère critique développées ici. Néanmoins données à la mémoire flash. Ceci dans le contexte des processeurs quelques principes de base s’apsimplifie l’application et minimise les modernes. Idem pour les durées de pliquent. coûts de gestion de la mémoire flash. changements de contexte puisque Tous ces dispositifs ont des architecCe sont des caractéristiques idéales les équipements seront en mode tures internes complexes d’effacepour une solution basse consommaveille la plupart du temps... ment, de lecture et d’écriture qu’il est tion puisqu’il faut très peu de temps Un ordonnanceur coopératif (voir possible d’utiliser au mieux en adappour traiter les opérations complexes figure 1) peut s’avérer une bonne tant l’usage désiré à la strucde gestion de fichiers et que le solution puisqu’une tâche ne rend la ture-même de la mémoire flash. La nombre de cycles de lecture/écriture/ main qu’à la condition d’avoir ter- plupart requiert également un effacement est radicalement réduit. miné son action, permettant ainsi à contrôle d’usure mais cela dépend Comparé à l’usage d’un système de la prochaine tâche prioritaire de aussi de l’utilisation qui en est faite. gestion de fichiers classique, on peut prendre le relais. Faire un contrôle d’usure pour une obtenir une économie d’énergie plus Quelle que soit la méthode d’ordon- mémoire flash qui n’est pas beauimportante rien qu’en réduisant les nancement choisie, il faut être atten- coup utilisée serait de fait une perte opérations d’accès à la mémoire tif à la gestion des interruptions. Suite de temps et d’énergie. flash. à une interruption, la durée du trai- Cela vaut la peine par ailleurs d’exaIl existe aussi certains dispositifs de tement nécessaire à la prise en miner les avantages d’un système de mémoire flash qui ont des modes à compte de cette interruption n’est gestion de fichiers. Un système de basse consommation et qui doivent pas particulièrement critique vis-à- gestion de fichiers a deux rôles prinêtre gérés avec précaution pour s’asvis de la consommation. En fait, l’ob- cipaux : permettre à un système surer que le contenu de leur tampon jectif premier est de minimiser le externe (par exemple un système de RAM ne soit pas perdu. Les systèmes nombre d’interruptions dans le sysde gestion de fichiers qui supportent tème en exploitant au mieux les FIFO   2   FAVORISER LES MODES LOW POWER ces types de mémoire flash le plus et les timeouts, et de choisir un Le choix d’un mécanisme d’ordonnancement efficacement possible doivent s’assumécanisme d’ordonnancement qui qui favorise l’optimisation de la consommation peut avoir un impact important sur la consommation rer qu’il y a des indicateurs mis en permette des modes de consommaélectrique globale du système, surtout s’il met à profit place pour signaler quand un tel tion réduite pour le système cible les modes à faible consommation du produit final. mode est activé ou désactivé. (voir figure 2). L’agrégation de données est très La mémoire flash importante lorsqu’on essaie de minimiser la consommation électrique. Le stockage de données en mémoire Quasiment tous les dispositifs flash flash peut s’avérer très complexe, fonctionnent plus efficacement mais il permet potentiellement de quand la taille des données à stocker réaliser les plus grandes économies est un multiple de l’unité de base de d’énergie. Il existe un large éventail stockage de la mémoire. Dans cerd’options de stockage comme la tains cas, la différence en charge de flash NOR, la flash NAND, les cartes travail s’avère importante, mais ce SD et l’eMMC pour ne citer que les choix entraîne d’autres difficultés. Si plus utilisées dans les systèmes les données sont agrégées et que le embarqués. Chacune a ses avantages L’EMBARQUÉ / N°9 / 2015 /

33

A P P L I C A T I O N   3   SYSTÈME DE GESTION DE FICHIERS DE COMPTEURS COMMUNICANTS Le système de gestion de fichiers de compteurs communicants avancé (SMFS) de HCC a été conçu sur mesure pour répondre aux exigences de consommation électrique réduite des applications Smart Energy et des compteurs communicants. La base de données structurée réduit la complexité de l’application en utilisant un minimum d’opérations flash pour préserver à la fois la flash et la batterie.

système redémarre, alors des données peuvent être perdues. Il pourrait être utile d’envisager une solution hybride où un petit espace de stockage statique (par exemple une petite quantité de mémoire FRam) est utilisé pour un stockage intermédiaire jusqu’à ce que les données soient prêtes à être transmises sur la mémoire flash. Il existe aussi certaines situations où réduire la RAM peut être contre-productif surtout si on essaie de réduire la consommation électrique. De fait, pouvoir maintenir le cache et les métadonnées du système de gestion de fichiers dans la RAM peut réduire radicalement la nécessité d’accéder à la mémoire flash pour récupérer des informations.

Le réseau Le temps passé à piloter de manière active une interface réseau externe risque également de consommer une quantité importante d’énergie. Il est donc important de pouvoir revenir à un mode de consommation faible le plus rapidement possible. Si possible, le concepteur devra aussi minimiser le nombre de transferts de données pour assurer une consommation minimale. Les interfaces de connexion (sockets) utilisées par beaucoup de piles réseau sont par nature inefficaces. Dans la pratique, elles exigent une copie des données et une gestion supplémentaire qui n’est pas souhai-

34 / L’EMBARQUÉ / N°9 / 2015

table pour un système à faible consommation. La solution probablement la plus efficace consiste plutôt à concevoir un système où les données peuvent être directement regroupées dans une mémoire tampon pour ensuite être transmises, puis lues directement depuis le tampon Ethernet. Comme pour la mémoire flash, l’agrégation de données en paquets peut réduire la charge de travail du système, mais il faut être attentif aux risques liés à la réinitialisation d’un système contenant des données non transmises. D’autres possibilités d’amélioration seraient de couper les checksums TCP lorsque les moyens de transmission sont fiables (typiquement parce qu’ils utilisent leurs propres checksums) ou d’utiliser UDP pour transmettre des données. Mais il faut être vigilant quant à l’usage d’UDP. C’est un protocole qui fonctionne sans négociation, donc qui nécessite une gestion supplémentaire pour garantir l’arrivée du message – ce qui en fait signifie utiliser un protocole très similaire au TCP !

La sécurité Les modules de sécurité SSL/TLS peuvent être optimisés vis-à-vis de la consommation et cela vaut aussi la peine de s’y intéresser. Il faut se rappeler que le logiciel TLS offre trois fonctions différentes : l’authentification (pour s’assurer que l’on est vraiment en train de parler au bon desti-

Gestion d'énergie nataire), le chiffrement (pour s’assurer que les données ne peuvent pas être lues par un tiers), et l’intégrité (pour s’assurer que le message n’a pas été modifié lors du transfert). Chaque fonction utilise des algorithmes différents et trois algorithmes de base sont validés par défaut lors de l’établissement d’une session TLS. Le développeur doit veiller aux exigences de conception pour délimiter ce qui est vraiment nécessaire afin d’éviter tout traitement inutile ou superflu. A titre d’exemple, les données peuvent être dans un format non exploitable par un tiers, ou le piratage des données est irréalisable de par la nature des données utilisées. Au cas où le chiffrement et l’intégrité sont renforcés par TLS, toute donnée devra par contre passer par deux étapes de traitement supplémentaires : un module de chiffrement/déchiffrement et un module de hachage. Les algorithmes de sécurité purement logiciels ont tendance à drainer une forte activité de l’unité centrale (CPU). Du point de vue de la consommation électrique, il est clairement avantageux de réduire l’usage de ces algorithmes au minimum requis par le système, plutôt que d’opter pour la configuration par défaut.

La conception système Comme le souligne cet article, il est donc important d’analyser les besoins et de développer un design qui réponde précisément à ces objectifs. Mais ce principe doit aussi être mis en œuvre à tous les niveaux de l’implémentation logicielle. L’utilisation de composants qui sont développés en utilisant un processus parfaitement défini est le meilleur moyen de s’assurer qu’ils feront ce que l’on attend d’eux sans en faire plus. Un processus limite de très petite taille qui semble avoir peu d’impact sur les fonctionnalités de l’appareil pourrait en effet avoir des conséquences sérieuses sur la consommation électrique. Par exemple, lors d’un test classique, il pourrait être très difficile de détecter une E/S qui ne s’achève pas après une condition d’exception particulière. Les risques seront inévitablement minimisés si l’on utilise des méthodes de développement ayant déjà fait leur preuve, comme la conception selon le cycle en V. n

����������������������������������������������� ������������������������

� � � �

��������������������������������������� ������������������������������������������������������� ������������������������������������ ����������������������

� � � �

����������������� �������������������������������������������������������������� ���������������������������������������������������������� ������������������

� �

�������������������������������������������������� �����������������������������������������������������



����������������������������������������������

������������������

������������������������������������� ������������������������������ ��������������������������������������������������� �������������������������� ����������������������������������������