Thèse soutenue

Contribution à l'arithmétique des ordinateurs et applications aux systèmes embarqués

FR  |  
EN
Auteur / Autrice : Nicolas Brunie
Direction : Florent Dupont de Dinechin
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 16/05/2014
Etablissement(s) : Lyon, École normale supérieure
Ecole(s) doctorale(s) : École doctorale en Informatique et Mathématiques de Lyon
Partenaire(s) de recherche : Laboratoire : Laboratoire de l'informatique du parallélisme (Lyon ; 1988-....) - ARIC / Inria Grenoble Rhône-Alpes / LIP Laboratoire de l'Informatique du Parallélisme
Jury : Président / Présidente : Lionel Torres
Examinateurs / Examinatrices : Florent Dupont de Dinechin, Lionel Torres, David Lutz, Renaud Ayrignac, Laurent-Stéphane Didier
Rapporteurs / Rapporteuses : David Lutz, Arnaud Tisserand

Résumé

FR  |  
EN

Au cours des dernières décennies les systèmes embarqués ont dû faire face à des demandes applicatives de plus en plus variées et de plus en plus contraintes. Ce constat s'est traduit pour l’arithmétique par le besoin de toujours plus de performances et d'efficacité énergétique. Ce travail se propose d'étudier des solutions allant du matériel au logiciel, ainsi que les diverses interactions qui existent entre ces domaines, pour améliorer le support arithmétique dans les systèmes embarqués. Certains résultats ont été intégrés au processeur MPPA développé par Kalray. La première partie est consacrée au support de l'arithmétique virgule flottante dans le MPPA. Elle commence par la mise au point d'une unité flottante matérielle basée sur l'opérateur classique FMA (fused multiply-Add). Les améliorations proposées, implémentées et évaluées incluent un FMA à précision mixte, l'addition à 3 opérandes et le produit scalaire 2D, à chaque fois avec un seul arrondi et le support des sous-Normaux. Cette partie se poursuit par l'étude de l'implémentation des autres primitives flottantes normalisées : division et racine carrée. L'unité flottante matérielle précédente est réutilisée et modifiée pour optimiser ces primitives à moindre coût. Cette première partie s’ouvre sur le développement d'un générateur de code destiné à l'implémentation de bibliothèques mathématiques optimisées pour différents contextes (architecture, précision, latence, débit). La seconde partie consiste en la présentation d'une nouvelle architecture de coprocesseur reconfigurable. Cet opérateur matériel peut être dynamiquement modifié pour s'adapter à la volée à des besoins applicatifs variés. Il vise à fournir des performances se rapprochant d'une implémentation matérielle dédiée sans renier la flexibilité inhérente au logiciel. Il a été spécifiquement pensé pour être intégré avec un cœur embarqué faible consommation du MPPA. Cette partie s'attache aussi à décrire le développement d'un environnement logiciel pour cibler ce coprocesseur ainsi qu'explorer divers choix architecturaux envisagés. La dernière partie étudie un problème plus large : l'utilisation efficace de ressources arithmétiques parallèles. Elle présente une amélioration des architectures régulières Single Instruction Multiple Data tels qu’on les trouve dans les accélérateurs graphiques (GPU) pour l'exécution de graphes de flot de contrôle divergents.