Présentation de l’IRISA
L'Institut de Recherche en Informatique et Systèmes Aléatoires (IRISA) est une structure de recherche publique regroupant plus de 370 personnes, parmi elles 129 chercheurs ou enseignants chercheurs, 112 chercheurs en thèse, 65 ingénieurs, techniciens et administratifs et 40 personnes sur contrats divers (ingénieurs-experts, chercheurs invités étrangers, chercheurs post-doctoraux, etc.,...).
L'INRIA, le CNRS, l’Université de Rennes 1 et l'INSA de Rennes sont partenaires au sein de cette structure de recherche, fédérant ainsi les missions essentielles liées aux organismes de recherche (EPST) et aux établissements d'enseignement supérieur. Les thématiques de recherche du laboratoire sont liées au vaste secteur des sciences et technologies de l'information et de la communication (STIC) englobant tant les recherches sur les systèmes, logiciels et architectures informatiques avancés que celles en automatique, traitement du signal et de l'image, calcul scientifique, et représentation des connaissances.
Les recherches de l’Irisa sont regroupées au sein de projets, au nombre de 19 et qui recouvrent des travaux sur les quatre grands thèmes scientifiques suivants :
- thème 1 : réseaux et systèmes
- thème 2 : génie logiciel et calcul symbolique
- thème 3 : interaction homme-machine, images, données, connaissances
- thème 4 : simulation et optimisation de systèmes complexes
Ces thèmes scientifiques génériques se déclinent selon de nombreux domaines applicatifs. Citons en particulier les télécommunications, le multimédia, les transports, la santé, l'environnement, tout ceux-ci‚ tant source de collaborations interdisciplinaires avec d'autres acteurs tant du monde académique qu'industriel.
Les missions essentielles de l’Irisa sont d'une part d'entreprendre des recherches fondamentales et appliquées visant l'excellence scientifique et leur visibilité au travers de publications et d'échanges internationaux, d'autre part d'effectuer des transferts et valorisation auprès de partenaires type PME-PMI régionales ou structure RD de grands groupes industriels mondiaux, assurant ainsi à tous les niveaux, une diffusion des connaissances et du savoir-faire. En complément, le laboratoire s'investit actuellement fortement dans la démarche d'incubation d'entreprises lancée tant par l'INRIA que par la technopole Rennes-Atalante. Par ailleurs, de nombreuses collaborations sur des projets RD ou des réseaux de recherche européens (30 contrats en cours dans le cadre des programmes Euréka, Esprit, ACTS ou, TMR) permettent à l'IRISA d'entretenir de fortes relations avec divers partenaires européens.
Situé en plein cœur du campus universitaire de Beaulieu de l’Université de Rennes1, l'IRISA, en relation étroite avec l’IFSIC, participe activement à la formation par et pour la recherche. L'accueil de nombreux stagiaires en formation DEA ou ingénieur, la soutenance d'environ 50 thèses réalisées au sein du laboratoire ou encadrées par des membres de l'Irisa est un élément essentiel de dynamisme et de progression dans les recherches ; en sus, l'accueil de visiteurs en séjours post-doctoraux ou sabbatiques vient renforcer ce potentiel.
Les défis scientifiques auxquels s'intéresse le laboratoire sont en prise directe avec des technologies à évolution très rapide, ayant de nombreux impacts sociétaux ; ceci renforce la volonté de l’Irisa d'être constamment attentif et réactif aux mutations en cours et à ce titre de pouvoir contribuer à l'avancée des connaissances dans la thématique des sciences et technologies de l'information et de la communication.
Le projet SDE : Scratchy Development Environment
Présentation
Le marché de l'embarqué croît rapidement dans le sens où de nouvelles applications et architectures de matériel apparaissent chaque jour. Du point de vue des applications, le multimédia est maintenant nécessaire pour les appareils sans fil ou les écrans de téléphone.
Le langage Java offre aux systèmes embarqué une solution pour fournir les fonctionnalités qui ne sont pas encore intégrées ensemble. Ainsi, Java peut contribuer de manière significative à généraliser l'utilisation d'un dispositif embarqué et à réduire le coût de développement et l'entretien des applications. Java offre aux systèmes embarqués deux principaux avantages :
-
le chargement dynamique des applications.
Cette fonctionnalité est très utile. De nos jours, les applications sont pré-embarquées dans les systèmes. Il est très difficile de télécharger dynamiquement une application ou de la raccorder avec une application déjà existante. Java permet le chargement dynamique d'une application complète écrite par une tiers personne et qui est disponible sur un serveur à distance.
Grâce à la standardisation des APIs Java (configuration et profiles), une parfaite compatibilité des applications est garantie lorsque la plate-forme de Java est disponible sur le système embarqué. Les fonctionnalités de sécurité permettent également d’identifier un code téléchargé dynamiquement par le réseau et de préserver la disponibilité du système embarqué.
-
la gestion transparente du matériel d’architecture hétérogène.
L'avantage principal de cette fonctionnalité est de réduire le coût de développement de logiciel d'une application. En raison de l’importante diversité des processeurs embarqués qui ont des caractéristiques spécifiques, le coût d'intégration d’une nouvelle architecture matériel se fonde uniquement sur l’implémentation de la JVM. Un autre point important est que l'exploitation transparente de l'architecture d’un multiprocesseur peut être réalisée par la JVM, sans aucun changement du code de l’application.
Le projet SDE a pour objectif de construire une JVM qui pourrait être compatible avec plusieurs systèmes embarqués. La conception d'une JVM doit être dédiée à un système embarqué pour réaliser une abstraction optimale entre tous ses différents composants. L’approche du projet est de concevoir une JVM d'une façon modulaire et efficace pour permettre son adaptation à n'importe quel genre de système embarqué tenant compte de plusieurs critères comme la capacité de la mémoire ou, les équipements disponibles de processeur.
Un grand nombre de critères doivent être pris en considération pour la conception d’une JVM sur un système embarqué. Cette conception est complexe à réaliser si nous voulons atteindre les objectifs suivants :
-
coût de portabilité minimal de la JVM sur un nouveau système embarqué;
-
obtention d’une abstraction maximale entre les besoins de l’application, les contraintes et les fonctionnalités de système embarqué;
-
adapter la JVM aux fonctionnalités du nouveau matériel et des nouvelles applications.
L'environnement de développement Scratchy se compose de trois composants principaux:
-
le sélectionneur de module,
-
le gestionnaire de type
-
et plusieurs projections sur des langages divers (mapping).
Le sélectionneur de module est responsable de choisir parmi tous les modules celui le mieux approprié pour un système embarqué spécifique selon les critères de conception. En effet, plusieurs modules peuvent implémenter les mêmes services et les mêmes types pour avoir différentes versions. Dans ce cas, un seul doit faire partie de la JVM. Pour cela, chaque module est décrit par un ensemble de mots-clés.
Le rôle du gestionnaire de type est de fusionner les différentes parties d'un type, globales et privées à un module, et de générer les offsets de ses différents composants selon les contraintes d’alignement d'un ou de plusieurs processeurs.
Enfin, les différentes projections (mapping) doivent générer les sources capables de faire la jonction entre les différents modules et langages.
Actuellement, beaucoup de travaux doivent encore être faits sur le SDE, essentiellement en y ajoutant des projections sur différents langages ; mais grâce au travail effectué durant ce stage, une grande partie du SDE est opérationnel.
Objectifs
Il nous a été demandé d’implémenter un gestionnaire de types qui permette de tenir compte des spécifications d’un processeur donné. L’outil doit permettre l’allocation mémoire des types créés par l’utilisateur, ainsi que l’accès aux divers champs de ces types tout en respectant les principaux critères de SDE : modularité et performance.
De plus, l’allocation mémoire citée ci-dessus demande de résoudre le problème suivant : les objets générés par l’environnement SDE doivent être stockés en mémoire de manière optimale, à savoir une occupation mémoire minimale et un accès rapide aux données stockées.
Démarche
Nous avons commencé par analyser les types de taille fixe, c’est-à-dire générer des structures représentant ces types. Ces structures nous ont permis de créer une fonction d’allocation mémoire appropriée et de générer des macros permettant l’accès aux différents champs des types.
Une fois ces types analysés et transformés en objets mémoire (entités occupant une certaine place mémoire), il devient impératif de savoir comment lier ces objets à leur emplacement mémoire. C’est ainsi que nous avons défini une interface entre la création de ces objets et leur stockage. Cette interface, utilisant les techniques de la programmation objet, nous a permis de rendre notre travail modulaire tout en gardant une relation de service entre ces deux parties.
L’implémentation des types a été précédemment réalisée dans le projet SDE. L’alignement des objets instanciant ces types était réalisé sans aucune optimisation. Nous avons donc commencé par supprimer cette gestion de l’alignement, et nous l’avons remplacée par l’interface précédente.
Pour la partie concernant le stockage en mémoire, nous avons étudié plusieurs algorithmes traitant du problème de placement d’objets dans un espace borné comme l’algorithme du sac à dos. Mais ce dernier a été rapidement abandonné car les contraintes du SDE étaient trop nombreuses pour cette solution. Nous avons donc choisi une solution adaptative répondant, une à une, à chaque spécification. Nous étudierons par la suite cette solution plus en détails.
Finalement, nous avons analysé les types de taille variable qui nécessitent un traitement particulier pour l’allocation mémoire et l’alignement. De même que pour l’analyse des types de taille fixe, nous avons généré des macros permettant l’accès aux différents champs de ces types.
Dostları ilə paylaş: |