DESCRIPTION DU PROJET DE RECHERCHE 1 Beltrame, Giovanni Contexte de la recherche Les systèmes multiprocesseurs sur puce (MPSoC) constituent aujourd’hui l’une des solutions les plus utilisées pour réduire le temps de mise sur le marché des systèmes embarqués à haute performance. En fournissant davantage de flexibilité au niveau de leur programmation, ils permettent de réutiliser des systèmes matériels déjà existants dans plusieurs applications [7]. Cependant, les MPSoCs sont plus difficiles à modéliser et à analyser, à cause de leur architecture parallèle et de leurs éventuelles caractéristiques temps réel, en particulier dans le domaine aérospatial. Les entreprises cherchent à développer des solutions génériques, applicables à une gamme de produits étendue. Ces nouvelles exigences en matière de flexibilité, particulièrement présentes dans les marchés à petits volumes comme l’aérospatial, induisent de nouvelles contraintes au niveau de la conception du logiciel et du matériel. Une solution très répandue pour faire face à ce type de problème consiste à utiliser de la logique réconfigurable, pour augmenter la flexibilité et la durabilité du système sans trop détériorer ses performances [6]. Le fait que ces systèmes doivent être capables de s’adapter à un environnement hostile et changeant, ainsi qu’à des objectifs fréquemment réajustés, ouvre de nouvelles perspectives dans des domaines relativement nouveaux comme ceux de l’auto-optimisation et l’auto-réparation, où les dispositifs modifient en permanence leur configuration pour atteindre les objectifs de performance ou de fiabilité. Les agences spatiales ainsi que les grandes compagnies aéronautiques comme Airbus et EADS investissent aujourd’hui massivement dans ces méthodologies, qui permettent une réduction substantielle des coûts de développement et du temps de mise sur le marché. Dans ce contexte, le programme de recherche de ce projet propose des nouvelles techniques pour la conception de systèmes MPSoC capables d’auto-optimisation. Plus précisément, il s’agit d’un nouvel algorithme d’exploration de l’espace de conception et de nouvelles techniques pour implémenter cet algorithme sur un système MPSoC. 2 2.1 Problématique d’ensemble, objectifs et contributions Problématique d’ensemble Les systèmes self-aware sont capables d’adapter leur comportement et l’utilisation des ressources (plusieurs milliers de fois par seconde) pour trouver automatiquement la meilleure façon d’atteindre un objectif fixé, tout en tenant compte des éventuels changements de l’environnement et des exigences des utilisateurs [10]. Une telle capacité serait profitable à une grande partie des systèmes informatiques modernes et serait particulièrement utile pour satisfaire les contraintes de puissance et de performance dans les systèmes mobiles, le “cloud computing”, et les systèmes d’exploitation pour architectures parallèles. Pour réaliser de tels objectifs, il faut a) permettre aux applications de spécifier leurs objectifs, b) permettre aux services du système de déterminer si ces objectifs sont atteints et c) permettre aux systèmes d’adaptation de prendre des décisions rationnelles entre les multiples actions possibles. 2.2 Approche théorique Un algorithme d’exploration de l’espace de conception, basé sur la théorie de la décision [5], peut être utilisé pour une telle méthodologie d’auto-optimisation temps réel pour les systèmes embarqués. Cette idée s’inspire 1 DESCRIPTION DU PROJET DE RECHERCHE Beltrame, Giovanni des recherches menées dans le domaine de l’intelligence artificielle, et utilise des algorithmes déjà implémentés dans des applications temps-réel (e.g. football robotique), qui sont par conséquent de bons candidats à l’optimisation en ligne. Il s’agit d’un concept novateur, qui n’a été jamais appliqué à l’optimisation temps réel. 2.3 Objectifs Les objectifs spécifiques : 1. La création d’un algorithme d’optimisation temps réel, c’est à dire, un algorithme suffisamment rapide pour permettre une optimisation en temps réel. 2. L’implémentation de cet algorithme dans un système multiprocesseur réconfigurable, afin de valider et d’évaluer cet algorithme. Afin d’atteindre ces objectifs, une première contribution du programme proposé consistera à modifier l’algorithme décrit dans [5] pour diminuer ses besoins en mémoire et en ressources de calcul. Comparée aux algorithmes déjà utilisés pour l’exploration de l’espace de conception, l’originalité de cet algorithme réside dans sa capacité à déterminer rapidement la meilleure combinaison de paramètres, et à retenir en permanence le système le plus proche de l’optimum selon les métriques données par l’utilisateur. Une deuxième contribution sera de proposer une série de "sondes" et d’"actions" dans un système multiprocesseur : les premières seront utilisées pour déterminer l’état du système à chaque instant, les deuxièmes serviront à changer le comportement du système pour maximiser ses performances selon les métriques fournies par l’utilisateur. 2.4 Méthodologie Le projet se déroulera en deux phases, durant chacune un an. Durant la première phase, l’algorithme d’autooptimisation sera conçu et testé en simulation ; la deuxième phase sera dédiée à la réalisation d’un système prototype et à la validation de l’approche. 2.4.1 Phase 1 : définition de l’algorithme Généralement, la configuration optimale d’un système embarqué est difficile à déterminer à cause du grand nombre de paramètres et leurs relations complexes. Les algorithmes d’optimisation classiques (par exemple simulated annealing, tabu search, genetic algorithms, etc.) ont besoin d’évaluer des milliers de configurations pour trouver celle qui maximise les performances. Or, l’évaluation elle-même nécessite d’exécuter l’application sur le système où d’utiliser d’en estimer les résultats. Par ailleurs, la configuration optimale dépend toujours des objectifs fixés qui peuvent changer durant l’exécution. Par conséquent, les algorithmes existants ne sont pas applicables pour l’optimisation en ligne d’un système. D’où la nécessité de concevoir un algorithme spécifique pour ce problème. Ce projet se base sur l’algorithme d’exploration (MDP) qui utilise la théorie de la décision [5], et plus précisément les processus de décision de Markov. Il s’agit d’un cadre mathématique permettant de modéliser la prise de décisions dans des situations où leurs effets sont partiellement aléatoires et partiellement sous le contrôle du décideur. L’algorithme MDP parcours l’espace de configurations en changeant les valeurs des paramètres disponibles et en cherchant la meilleure configuration (la valeur d’une configuration est déterminée par une “fonction 2 DESCRIPTION DU PROJET DE RECHERCHE Beltrame, Giovanni objective” qui doit être établi par l’utilisateur). Chaque changement de valeur, appelé une action est dû à une décision de MDP. Ces actions sont prises en considérant une estimation probabiliste des effets de chacune. Le système nécessite de vérifier les actions seulement quand l’information probabiliste est insuffisante pour prendre une décision. Un tel algorithme n’est pas directement applicable à l’auto-optimisation car il demande d’évaluer très fréquemment le comportement du système. Dans ce projet, l’algorithme MDP sera amélioré pour être appliqué à cette classe de problèmes : l’évaluation du système sera faite régulièrement (par exemple chaque 0.1 seconde) par des estimateurs statistiques, et le résultat sera utilisé pour prendre une décision. Les principaux défis pour l’utilisation des MDPs pour l’auto-optimisation sont les suivants : 1. l’estimation en temps réel des effets des actions 2. la rapidité d’exécution : de larges graphes doivent être explorés pour trouver la configuration optimale 3. la sélection de la fonction objective : le choix des paramètres utilisés dépend du besoin du moment Les défis 1) et 2) seront adressés en introduisant des techniques statistiques décrites dans “Design of Experiments” [8] (DSE), en particulier la technique appelée “response surface modeling”. Ces techniques permettent l’estimation des effets des paramètres dans un système configurable. Cette estimation est obtenue à travers une phase d’apprentissage suivi par la création d’un meta-modèle analytique ; ce dernier demande peu de calcul et peut donc être utilisé pour une optimisation en ligne. Le processus d’intégration de DSE est représenté à la figure 1 : le simulateur ReSP [4] sera utilisé pour la phase d’apprentissage et pour le premier test de l’algorithme. Le défi 3) sera adressé à travers l’analyse de plusieurs fonctions objectives, qui seront évaluées avec les bancs d’essai présents dans ReSP. La recherche déterminera aussi les paramètres à utiliser pour l’optimisation Changement de paramètres Bancs d'essai Sélection des expériences Simulation avec ReSP MDP (décision) Meta-modèles Métriques MPSoC Paramètres F IGURE 1 – Le processus d’apprentissage et d’intégration de meta-modèles “response surface modeling” du système (par exemple l’ordonnancement de tâches, la priorité de chaque coeur dans l’accès mémoire, la fréquence de chaque coeur, etc.) L’étudiant qui travaillera sur cette phase apprendra des techniques statistiques applicables dans plusieurs domaines scientifiques. Il apprendra également les principes de la simulation à haut niveau de systèmes embarqués. Ces connaissances sont de plus en plus demandées par les entreprises oeuvrant dans ce domaine. 3 DESCRIPTION DU PROJET DE RECHERCHE 2.4.2 Beltrame, Giovanni Phase 2 : implémentation d’un système prototype sur FPGA Durant la deuxième année, l’algorithme sera implémenté dans un système prototype sur carte FPGA. Son efficacité sera évaluée en comparant les résultats obtenus avec une optimisation classique. Pour l’implémentation du système, nous utiliserons la bibliothèque libre GRLib [1] de Aeroflex-Gaisler qui fournit un système basé sur le processeur LEON3. Nous utiliserons également le système d’exploitation RTEMS [2], très utilisé dans l’industrie aérospatiale. La librairie GRLib fournit tous les outils nécessaires pour implémenter rapidement et facilement des systèmes sur carte FPGA. Le prototype sera modifié en ajoutant des “sondes” qui permettent de déterminer les conditions de fonctionnement du système. L’idée est d’utiliser un système analogue à celui proposé par Santambrogio et. al en [10], mais amélioré pour ne pas se limiter à la performance des tâches logicielles. Des sondes permettant de connaître l’utilisation du processeur, la congestion du réseau de communication, etc. seront utilisées dans le but de déterminer un ensemble de dimensions suffisantes. L’algorithme sera intégré dans le logiciel du prototype sous la forme d’une tâche temps réel qui collecte les valeurs des sondes et utilise les meta-modèles précalculés afin de choisir la prochaine configuration (voir figure 2). Enfin, le système sera validé en comparant les résultats LEON3 RTEMS LEON3 RTEMS LEON3 RTEMS LEON3 RTEMS Tâche periodique Modèles MDP RTEMS Param. Sondes FPGA F IGURE 2 – Le système prototype de l’optimisation en ligne avec une optimisation classique. Cette étape sera indispensable pour connaître la distance des résultats obtenus par rapport à l’optimum. L’étudiant qui travaillera sur cette partie du projet acquerra une expertise dans l’implémentation des systèmes sur puce basés sur le processeur LEON3 ainsi que dans l’utilisation du système RTEMS. Ces connaissances complèteront une formation très demandée par les entreprises du secteur aérospatial. 2.5 Calendrier de réalisation Le tableau 1 montre les activités du projet réparties sur deux années. 3 Références [1] GRLib SoC IP Library, http ://www.gaisler.com/. [2] RTEMS Home Page, http ://www.rtems.com/. [3] Beltrame, G., L. Fossati et D. Sciuto: High-Level Modeling and Exploration of Reconfigurable MPSoCs. Dans Proc. of the NASA/ESA Adaptive Hardware and Systems Conference (AHS), pages 330–337, 2008. 4 DESCRIPTION DU PROJET DE RECHERCHE Première année Beltrame, Giovanni TABLE 1 – Activités du projet Deuxième année – Intégration de "Design of Experiments" – Choix de la fonction objective et des paramètres – Évaluation de l’algorithme avec ReSP – Implémentation du système prototype – Introduction de “sondes” en logiciel – Validation des résultats [4] Beltrame, G., L. Fossati et D. Sciuto: ReSP : A Nonintrusive Transaction-Level Reflective MPSoC Simulation Platform for Design Space Exploration. Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on, 28(12) :1857–1869, 2009, ISSN 0278-0070. [5] Beltrame, G., L. Fossati et D. Sciuto: Decision-Theoretic Design Space Exploration of Multiprocessor Platforms. Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on, 29(7) :1083–1095, 2010, ISSN 0278-0070. [6] Compton, Katherine et Scott Hauck: Reconfigurable computing : a survey of systems and software. ACM Comput. Surv., 34 :171–210, 2002. http://portal.acm.org/citation.cfm?id=508353. [7] Jerraya, A. et W. Wolf: Multiprocessor Systems-on-Chips. Morgan Kaufmann, 1re édition, octobre 2004, ISBN 012385251X. [8] Montgomery, Douglas C.: Design and Analysis of Experiments, 5th Edition. Wiley, 5e édition, juin 2000, ISBN 0471316490. [9] Palermo, G., C. Silvano et V. Zaccaria: An efficient design space exploration methodology for multiprocessor SoC architectures based on response surface methods. Dans Proc. of International Conference on Architectures, Modeling, and Simulation (SAMOS), pages 150–157, 2008. [10] Santambrogio, M.D., H. Hoffmann, J. Eastep et A. Agarwal: Enabling technologies for self-aware adaptive systems. Dans Adaptive Hardware and Systems (AHS), 2010 NASA/ESA Conference on, pages 149 –156, juin 2010. 5