Vous êtes ici

Vers l’exécution efficace d’applications sur des architectures multi-cœur résilientes

Equipe et encadrants
Département / Equipe: 
DépartementEquipe
Site Web Equipe: 
https://team.inria.fr/cairn/
Directeur de thèse
Emmanuel Casseau
Co-directeur(s), co-encadrant(s)
Contact(s)
Sujet de thèse
Descriptif

Au cours des 20 dernières années, la complexité et les exigences des applications ont augmenté de manière exponentielle. Dans le même temps, les systèmes embarqués sont entrés dans une nouvelle ère avec des plates-formes sophistiquées, de type hétérogène et avec des architectures à base de nombreux cœurs de calculs (Kalray, SThorm, TI’s Keystone, …). Les plates-formes hétérogènes mettent en œuvre plusieurs types de ressources de traitement tels des cœurs de processeur, des architectures reconfigurables grain moyen (CGRA pour coarse grain reconfigurable arrays), plus récemment de la logique programmable plus classique (FPGA) (Zynq, [1], …), etc. et permettent d’atteindre un bon compromis puissance de calcul / consommation d'énergie.

L’évolution de la technologie des circuits vers les dimensions nanométriques et la réduction des tensions d’alimentation afin de réduire la consommation d’énergie ont pour conséquence malheureuse une diminution de la fiabilité des circuits numériques. Les circuits électroniques sont en effet de plus en plus sensibles aux aléas de fonctionnement relatifs aux interférences électromagnétiques, aux fluctuations de température, à l’instabilité de la tension de seuil, au vieillissement prématuré etc. qui conduisent à des fautes transitoires ou permanentes. Aussi, les portes logiques des circuits électroniques vont devenir intrinsèquement peu fiables et il faudra cependant exécuter des calculs sur ces circuits. Une des questions qui se pose actuellement est de savoir s’il s’agira de faire un calcul malgré tout toujours exact ou bien si l’on tolèrera, selon le contexte/l’application, un calcul approximatif, et dans les deux cas avec quelles incidences.

La tolérance aux fautes dans les circuits n’est pas nouvelle. Cela fait bien longtemps par exemple que les composants de mémorisation sont robustifiés par des codes détecteurs ou correcteurs d’erreur [2], on parle alors de redondance d’information. Pour les autres parties d’un circuit (calcul, contrôle), la tolérance aux fautes est restée jusqu’ici plutôt réservée à de domaines d’application particulièrement critiques tel le spatial par exemple. En ce qui concerne la conception d’opérateurs durcis, une méthode conventionnelle relativement simple mais couteuse en surface et en consommation, est basée sur la redondance matérielle par réplication (typiquement la triplication) à laquelle on ajoute un système de décision (voteur) [3, 4, 5]. D’autres techniques plus sophistiquées existent dont certaines au niveau arithmétique (changement de base de représentation des nombres) [4, 5, 6].

Bien que cela ne soit pas leur objectif à l’origine et que cette possibilité ne soit pas vraiment exploitée actuellement, les systèmes sur puce multiprocesseurs peuvent être considérés comme des systèmes naturellement résistants aux fautes. En effet, puisque par essence un système multiprocesseur dispose de multiples ressources de traitement, lorsqu'une ressource est détecté comme défectueuse (collage à zéro par exemple), elle peut être isolée et une autre ressource peut être utilisée à sa place. De même, pour lutter contre les fautes transitoires, une technique basée sur la redondance spatiale, ou temporelle, peut être mises en œuvre dès lors qu’il y a plus de ressources disponibles que nécessaire à un moment donné. Pour cela, lorsqu’une application arrive pour être exécutée, le contexte doit être analysé afin de connaitre l’utilisation/la disponibilité actuelle - voire prochaine si on peut accéder à cette information - des ressources d’exécution en fonction des autres applications en cours d'exécution et de l’état du système, et, selon le degré de parallélisme de l’application et ses contraintes d’exécution (performances, criticité, …), il s’agit alors de répartir les différents traitements de l’application sur les ressources (concept générique dit de resource aware computing).

L’objectif de cette thèse concerne l’étude de mécanismes permettant d’analyser l’état d’un système (typiquement monitoring de l’architecture multiprocesseur et de ses ressources) et le développement de techniques de placement et d’ordonnancement permettant l'auto-adaptation de l’exécution des traitements d’une application en fonction des ressources disponibles actuellement et potentiellement dans un futur proche sur un système sur puce multiprocesseur. Nous voulons traiter ces sujets en tenant compte des capacités de tolérance aux fautes qu’un système multiprocesseur peut intrinsèquement mettre en œuvre (redondance matérielle), et ce dans le contexte de baisse de fiabilité des circuits de prochaines générations.

La première étape de la thèse consistera en l’étude de techniques de placement et d’ordonnancement dynamiques pour des systèmes sur puce multiprocesseurs. Il s’agira d’identifier des techniques présentant un bon compromis complexité calculatoire / pertinence du résultat, sachant qu’on fera appel à ces primitives lorsqu’une nouvelle application arrivera pour être exécutée ou bien lorsqu’une faute aura été détectée. Les techniques devront permettre de considérer l’aspect criticité des applications et des tâches. Le niveau de granularité de l’application auquel on se situera sera le niveau tâche. Une tâche sera exécutée sur une des ressources du système et la tolérance aux fautes sera faite à ce niveau de granularité (redondance logicielle par réplication de tâche) [8]. Les stratégies devront combiner redondance spatiale et temporelle en fonction, entre autre, de la criticité, de l’urgence, du taux de charge.

La seconde étape de la thèse consistera en l’étude de mécanismes qui permettront de rendre l’exécution d’une application plus robuste. Afin de ne pas avoir besoin d’apporter de modifications matérielles qui impliquent de concevoir des circuits spécifiques dont la mise en œuvre peut s’avérer assez délicate (par exemple au niveau de l’horloge lors de la mise en place de la technique dite Razor system pour diminuer l’effet des fautes temporelles [9] ou bien nécessité d’avoir des portes logiques spécifiques afin d’améliorer la fiabilité du résultat si l’on utilise des d’éléments C-Muller à la place de traditionnels voteurs [10]), on privilégiera des solutions reposant sur l’observation de l’état des ressources du système, et donc à base de moniteurs et, dans la mesure du possible, de moniteurs logiciels. Plusieurs travaux montrent en effet qu’avec des modèles de comportement on peut avoir des informations relativement précises avec des moniteurs logiciels [11]. Un compromis complexité calculatoire du modèle / qualité de l’information doit être trouvé afin de mettre en œuvre ces moniteurs sans grande pénalité sur l’architecture multiprocesseur.

La troisième étape sera consacrée à l’étude de stratégies d’exécution d’applications sur architectures multiprocesseurs en combinant l’analyse active de l’état du système et la tolérance aux fautes. Il s’agira d’étudier des techniques de placement et d’ordonnancement dynamiques mettant en œuvre le potentiel de redondance implicitement offert par ces architectures et en tenant compte de l’état du système à l’instant courant mais aussi en intégrant les prévisions d’évolution de cet état grâce aux travaux menés dans la deuxième étape. Dans un premier temps, les techniques retenues lors de la première étape pourront être adaptées. Afin de tirer profit de l’information sur l’évolution possible de l’état du système système, des méthodes spécifiques de placement et d’ordonnancement dynamiques devront aussi être étudiées. L’évaluation des méthodes proposées devra tenir compte en outre des surcoûts des moniteurs et du contrôle actif de l’état du système (augmentation du taux de charge des processeurs en autre).

Bibliographie

[1] http://www.flex-logix.com/

[2] M. M. Mano, C. R. Kime, Logic and Computer Design Fundamentals, Pearson, 2004.

[3] J. Han, J. Gao, Y. Qi, P.P. Jonker, J.A.B. Fortes, "Toward hardware-redundant, fault-tolerant logic for nanoelectronics", IEEE Design & Test of Computers, vol. 22 (4), pp. 328-339, 2005.

[4] I. Koren, C. Krishna, Fault-Tolerant Systems, Elsevier, 2007.

[5] E. Dubrova, Fault-Tolerant Design, Springer, 2013.

[6] L. Woo, R. Guthaus, “Fault-tolerant synthesis using non-uniform redundancy”, International Conference on Computer Design (ICCD), pp. 213-218, 2009.

[7] A.K. Singh, M. Shafique, A. Kumar, J. Henkel, "Mapping on multi/many-core systems: Survey of current and emerging trends", Design Automation Conference, pp. 1-10, 2013.

[8] D. McAllister, M.A. Vouk, “Fault-tolerant software reliability engineering”, in: M.R. Lyu (ed.), Handbook of Software Reliability, pp. 567-614. McGraw-Hill, 1996.

[9] M. Fojtik, D. Fick, Y. Kim, D. Sylvester, “Bubble Razor: Eliminating Timing Margins in an ARM Cortex-M3 Processor in 45 nm CMOS Using Architecturally Independent Error Detection and Correction”, IEEE Journal of Solid-State Circuits, Vol. 48, Is. 1, pp. 66-81, 2013.

[10] C. Winstead, Y. Luo, E. Monzon, “An Error Correction Method for Binary and Multiple-Valued Logic”, IEEE International Symposium on Multiple-Valued Logic, pp. 105-110, 2011.

[11] R. Isermann, Fault-Diagnosis Systems, Springer, 2011

Début des travaux: 
Octobre 2017
Mots clés: 
architectures multi-cœurs hétérogènes, placement et ordonnancement dynamiques, systèmes embarqués, systèmes sur puce multiprocesseurs, tolérance aux fautes, traitements en fonction des ressources disponibles (resource aware computing).
Lieu: 
IRISA - Campus universitaire de Beaulieu, Rennes