Amélioration de la gestion thermique sur architecture à base de processeur ARM
Daniel Lezcano · 2024
L'augmentation de la densité des composants sur les Socket-On-Chip ARM et la croissance de leur performance posent de réels défis sur le plan de la gestion thermique. Les mécanismes mis en œuvre jusqu'ici se focalisent sur la protection de zones thermiques prises en compte de manière individuelle. Cette approche simpliste a fait ses preuves depuis plusieurs années, mais montre aujourd'hui ses limites lorsqu'il faut exploiter les performances maximales du système sur une longue durée. Conscients des problématiques liées aux phénomènes thermiques, les fabricants de SoC rajoutent de plus en plus de mécanismes de notification, de contrôles de température et de performance. Toutefois, ces nouvelles fonctionnalités ne sont pas encore complètement exploitées et démocratisées dans l'ensemble des plateformes embarquées. L'objet de cette étude est de présenter les notions de gestion thermique qui existent aujourd'hui sur les systèmes d'exploitation à base de noyau Linux, d'en étudier les limitations et de proposer une approche globale qui va permettre une gestion thermique optimisée pour les systèmes embarqués complexes. Cette approche, novatrice par son paradigme, propose une représentation hiérarchisée des composants sous la forme d'un arbre dont chaque noeud permet de lire la puissance consommée et de poser une limite de puissance. Un noeud parent donnera la somme de la puissance utilisée par ses fils ainsi que la limite de puissance totale. Il représentera donc un groupe de composants sur lequel le système pourra s'appuyer pour équilibrer les limites afin de respecter la contrainte de plus haut niveau. Cette répartition dynamique des budgets de puissance permettront un gain de performance tout en restant dans l'enveloppe thermique du système. Cette étude présente cet algorithme de répartition de charges. Toutefois, la réalisation de ce mécanisme rencontre quelques difficultés liées au nombre limité de composants sur lesquels le noyau peut recevoir les informations tout en ayant un contrôle sur la puissance dissipée. À défaut d'avoir accès aux mécanismes des futures générations de SoC, l'étude propose d'étendre l'existant afin d'augmenter la nomenclature qui peut être utilisée. À la périphérie de la gestion thermique, l'infrastructure de gestion de temps de repos des CPUs repose sur un mécanisme de prédiction des événements qui peut augmenter la température moyenne pendant des cycles de travail. En cas de mauvaises prédictions, le système va réaliser davantage d'opérations que nécessaire, provoquer une baisse de performance et une augmentation de la consommation d'énergie, donc de la puissance à dissiper. Après étude de l'existant, il est apparu que l'approche ne s'est pas adaptée aux évolutions des processeurs multicoeurs qui introduisent des interruptions inter-processeur et que les prédictions sont le plus souvent erronées. Un chapitre est consacré à un nouveau mécanisme qui sépare les sources de réveil des processeurs et prédit le prochain évènement pour chacune de ces sources prises individuellement. Par ailleurs, le système peut modifier la performance des processeurs pour réduire la puissance dissipée. Ceux-ci sont regroupés par domaine de performance et la réduction de la performance d'un processeur impacte tout le groupe. Afin de permettre une réduction de la performance par CPU, un mécanisme d'injection de temps de repos a été réalisé. Il introduit, par un algorithme de hachage variable, un temps de repos forcé pendant lequel le CPU va s'endormir. Dans le contexte de cette étude, un ensemble de contributions ont été apportées dans le noyau Linux. Elles sont aujourd'hui déployées et utilisées soit sur les plateformes embarquées à base de Linux, soit sur les plateformes mobiles au travers d'Android.