Système Auto-adaptatif
Définition
La prise en compte des contraintes liées à la consommation et la fiabilité dues à la complexité grandissante des systèmes intégrés sur puce, nécessite la mise en place des solutions nouvelles s’appuyant notamment sur des circuits auto-adaptatifs, qui sont définis comme des systèmes capables de modifier en ligne certains paramètres de fonctionnement, sur la base d’un objectif d’optimisation.
Action
L’adaptation est réalisée par la modification en ligne des caractéristiques de fonctionnement à l’aide des actionneurs, pour passer à un état plus adéquat qui satisfait le critère d’optimisation. Le choix d’actionneur se fait en fonction de la configuration système en vue d’être déployé, et également des mécanismes offerts par l’architecture. Sa latence doit être en adéquation avec le temps de contrôle ciblé. Nous pouvons classer ces dispositifs selon les deux niveaux : Logiciel si l’action est appliquée sur les programmes ou tâches exécutés par le système, et Matériel si elle porte sur un paramètre physique ou logique du circuit.
Logiciel
Au niveau applicatif, il y a en premier lieu les techniques d’ordonnancement (task scheduling) qui consistent à remplacer une tâche par une autre sur le même cœur. Cette technique est anticipée dans les méthodes pro-actives pour éviter le surchauffe du circuit [SAR12]. Par ailleurs, la gestion des tâches au niveau « Multi-Processor System on Chip » (MPSoC) est effectuée à l’aide d’une unité de gestion globale (global manager) qui prend en charge le placement des tâches sur les cœurs, et le basculement en cours d’exécution d’une tâche d’un processeur à un autre (migration). Ces techniques sont fréquemment utilisées pour rééquilibrer la température [MB08], ou dans le cadre de la réallocation des ressources en vue de meilleures performances [SOM+07] .
Matériel
En ce qui concerne les actions matérielles, elle peuvent s’effectuer à deux niveaux : architecture ou circuit. La première intègre une boucle de contrôle au niveau des composants de l’architecture, où l’action est réalisée par le biais d’un processus matériel qui réagit sur le fonctionnement du composant. Nous citons, par exemple, la limitation des instructions fetch (fetch throttling) au niveau du processeur pour une gestion dynamique de la température [SAS02], la re-configuration de la taille et de la politique du cache pour maximiser l’efficacité énergétique [SJT11], le découpage des lignes de cache de données (sub-banking data cache) [SD95], et le routage des paquets pour éviter la congestion sur les liens d’un « Network on Chip » (NoC) afin d’améliorer la performance du système multi-cœurs [vdBCGB07].
Au niveau circuit, les actions s’appliquent directement sur les paramètres physiques tels que la fréquence de l’horloge, la tension d’alimentation (Vdd ) et la tension de polarisation du substrat des transistors (Vbb tension de body-biais pour les technologies FDSOI). La régulation de l’horloge dans les circuits intégrés est souvent réalisée à l’aide d’un dispositif constitué d’une boucle d’asservissement permettant d’assigner une fréquence de sortie conditionnée par un signal (« Phase Locked-Loop » (PLL) [Bes07] ou « Frequency Locked-Loop » (FLL) [LPB+11]). En outre, la tension d’alimentation est ajustée à l’aide d’un (ou plusieurs) convertisseur DC-DC qui permet de passer d’un niveau de tension à un autre d’une manière continue ou discrète (Vdd -Hopping). Ces actionneurs sont impliqués dans des mécanismes de DVS/DVFS (Dynamic Voltage/Frequency Scaling) qui gèrent la fréquence et la tension pour atteindre un compromis adéquat entre la performance du circuit et sa consommation [CH10], et de gestion des cœurs actifs par basculement en mode basse consommation par l’arrêt de l’horloge (clock-gating) ou bien de « power switch » permettant l’activation/désactivation de domaine de consommation (« Voltage and Frequency Island » (VFI)).
Prise de décision
La gestion des actionneurs précédemment détaillés est effectuée à l’aide d’une unité de prise de décision, généralement associée à un objectif d’optimisation. Dans cette thèse, on s’intéresse plus particulièrement aux méthodes qui visent l’optimisation énergétique/thermique, les contraintes de temps réels, et la fiabilité du système au cours du temps. Les méthodes qui assurent le bon fonctionnement du circuit à travers un mécanisme de débogage ou bien la robustesse contre les fautes et les attaques (sécurité), sortent du cadre de nos travaux. Ainsi, la prise de décision peut être aussi effectuée sur les deux niveaux d’abstraction.
Logiciel
Le fait de décider de la configuration de l’architecture au niveau de la couche applicative se révèle d’un grand intérêt. D’une part, on réutilise les mêmes ressources de l’architecture pour mener le processus de prise de décision. Par conséquent, le coût matériel est fortement diminué si l’on considère uniquement l’empreinte mémoire du contrôle. D’autre part, les concepteurs sont moins contraints au niveau complexité, et la prise de décision peut traiter plusieurs critères avec une vision globale et moyennant des méthodes de résolution avancées.
Il existe dans la littérature de nombreuses méthodes de prise de décision à ce niveau. Nous citons ici, par exemple, l’ensemble des services OS (« Intelligent Energy Manager » (IEM)) [ARM10b] dans l’architecture ARM qui permettent de classer les phases d’applications en fonction de leur charge de travail pour prédire les performances exigées afin d’ajuster la tension et la fréquence, et les politiques d’ordonnancement dynamique des tâches orientées vers le contrôle des architectures mono- et multi-cœurs qui décident l’emplacement et la durée d’exécution des tâches selon la métrique à optimiser (énergie ou performance) [CK07].
Matériel
La prise de décision au niveau matériel est constituée d’un composant intégrant des mécanismes plus ou moins élaborés. Si l’architecture dispose d’un nombre limité de configurations (par exemple la profondeur du pipeline, structure et hiérarchie du cache, fenêtre d’instructions, les niveaux de tension etc.), une simple évaluation de chaque mode ou une combinaison de modes permet de positionner le système sur la configuration la plus adéquate aux besoins du contexte [HRYT00]. Certes, cette approche requiert plus d’attention si le nombre de configurations est élevé, dans le sens ou la durée d’évaluation de tous les choix possibles doit rester raisonnable. En outre, quand la configuration requise est une valeur numérique d’un paramètre donné ou bien le nombre de configurations est relativement grand, les mécanismes les plus avancés ont recours à (i) des approches analytiques se basant sur des modèles tels que la politique d’optimisation de la performance du processeur sous contrainte de température qui exprime analytiquement la fréquence en fonction de la température [RVCC06], ou bien (ii) à des heuristiques basées sur la théorie du contrôle telles que la théorie des jeux ou de consensus pour configurer, par exemple, le couple tension-fréquence [WJMC04].
Synthèse
La politique d’adaptation dépend principalement du type d’actionneurs et de l’objectif d’optimisation, qui impose une analyse :
• Au niveau temporel : la granularité temporel (ou latence) reflète la durée pendant laquelle la boucle d’adaptation sera impliquée (temps entre le moment de l’observation et l’action). Ce paramètre dépend de la criticité de l’adaptation, i.e. s’il y a une urgence d’action ou pas. Par exemple, la gestion de la fiabilité contre les surchauffes du circuit est réalisée par des mécanismes relativement rapides tels que l’arrêt du processeur (poweroff ) ou bien la régulation de la fréquence/tension (DVFS), où la latence est de quelques dizaines de cycles d’horloge (centaines de microsecondes). D’autres méthodes d’adaptation ciblent par exemple l’amélioration de la performance, où la latence est plus élevée (mais moins critique).
• Au niveau spatiale : la granularité spatiale permet d’identifier à quel niveau est réalisé l’adaptation. Afin d’illustrer ce point, nous allons prendre l’exemple de l’amélioration de la performance. Pour ce faire, il est possible de régler la fréquence de toute la puce, ou bien de réagir à grain plus fin en distribuant la charge au niveau de chaque cœur du circuit.
1 Introduction |