Travail De Bachelor Rapport Final
Total Page:16
File Type:pdf, Size:1020Kb
Travail de Bachelor NEXT GENERATION DIGITAL ARITHMETIC ±∞ P 0 sit DANS Rapport final Auteur: Baeriswyl Julien Superviseur: Dassati Alberto (ADI) 27 juillet 2018 Table des matières 1 Préface 9 1.1 Remerciements........................................9 1.2 Résumé............................................9 2 Introduction 11 2.1 Contexte........................................... 11 2.1.1 Cadre de déroulement................................ 11 2.1.2 Contexte informatique................................ 11 2.1.2.1 Types de représentation de nombres................... 11 2.1.2.2 Pourquoi a-t-on besoin d’une alternative ?................ 11 2.1.2.3 Alternatives à l’heure actuelle....................... 11 2.1.2.3.1 Inconvénients des alternatives.................. 12 2.1.2.3.2 Pourquoi les Posits ?....................... 12 2.2 Objectif principal....................................... 12 2.3 Objectifs pratiques...................................... 12 3 Notions mathématiques 13 3.1 Ensemble de nombres.................................... 13 3.2 Représentations des nombres................................ 13 3.3 Notation scientifique..................................... 14 3.4 Nombres dans l’informatique................................. 14 3.4.0.1 Problèmes liés aux approximations.................... 14 3.4.1 Nombres entiers................................... 15 3.4.2 Nombres à virgule.................................. 15 3.4.3 Principe de clôture.................................. 15 3.4.4 Arithmétique d’intervalles.............................. 15 3.4.5 Real projective line .................................. 15 3.4.6 Arithmétique multi-précision............................. 16 3.4.7 Tapered floating point ................................ 16 4 Nombres à virgule flottante ou floating-point 17 4.1 Représentations standards IEEE Std 754-1985/ IEEE Std 754-2008............ 17 4.1.1 Formats binaires................................... 17 4.1.1.1 Exposant.................................. 17 4.1.1.2 Mantisse.................................. 17 4.1.1.3 Bit implicite................................ 17 4.1.1.4 Signe.................................... 17 4.1.1.5 Représentations spéciales......................... 18 4.1.1.6 Signification selon le champ exposant................... 18 4.1.1.7 Example.................................. 18 4.1.2 Intervalles dynamiques................................ 19 4.1.2.1 Distribution des nombres sur l’intervalle................. 19 4.1.3 Particularités..................................... 19 4.1.4 Inconvénients..................................... 19 4.2 Représentations alternatives................................. 19 4.3 Support dans les systèmes informatiques.......................... 20 4.3.1 Méthodes de support................................ 20 3 Département TIC, 27 juillet 2018 4.3.2 Support logiciel................................... 21 4.3.3 Support matériel................................... 21 4.3.4 Support dans GNU/Linux .............................. 21 4.3.4.1 GNU Toolchain (GCC,...) ou LLVM ?................... 21 5 À propos des Universal Numbers ou Unum 22 5.1 Historique.......................................... 22 5.2 Unum I............................................ 22 5.2.1 Buts......................................... 22 5.2.2 Format........................................ 22 5.2.2.1 Organisation des champs......................... 22 5.2.2.2 Signification des champs......................... 23 5.2.3 Application...................................... 23 5.3 Unum II........................................... 23 5.3.1 Buts......................................... 23 5.3.2 Principes....................................... 23 5.3.2.1 Encodage SORN.............................. 23 5.3.3 Format........................................ 24 5.4 Unum III........................................... 24 5.4.1 Buts......................................... 24 5.4.2 Première variante, le Posit .............................. 24 5.4.2.1 Particularités................................ 24 5.4.2.2 Format................................... 24 5.4.2.2.1 Organisation des champs.................... 24 5.4.2.2.2 Signification des champs.................... 25 5.4.2.3 Le champ regime ............................. 25 5.4.2.4 Équivalence avec le standard IEEE Std 754-2008 ............ 26 5.4.2.5 Exemple de format............................ 26 5.4.2.6 Méthodes de calcul............................ 27 5.4.2.7 Algorithmes................................ 28 5.4.3 Seconde variante, le Valid .............................. 30 5.4.3.1 Format................................... 30 5.5 Implémentations des Posits ................................. 30 5.5.1 Logicielles...................................... 30 5.5.2 Matérielles (soft-core)................................ 30 5.5.3 Observations..................................... 31 6 Réalisation du projet 32 6.1 Structure du projet...................................... 32 6.2 Licence logicielle....................................... 32 6.3 Émulation logicielle floating-point dans GNU/Linux .................... 32 6.3.1 Du côté noyau.................................... 32 6.3.2 Architectures supportées par la GNU Toolchain .................. 32 6.4 Immersion dans la GNU Toolchain.............................. 33 6.4.1 Infrastructure..................................... 33 6.4.1.1 Pré-requis................................. 33 6.4.1.2 Composants................................ 33 6.4.1.3 Organisation des sources......................... 33 6.4.1.4 Types de fichiers.............................. 34 6.4.2 Fonctionnement de GCC ............................... 34 6.4.2.1 Front-end................................. 34 4 Département TIC, 27 juillet 2018 6.4.2.2 Back-end.................................. 34 6.4.3 Options floating-point à la compilation d’une application.............. 34 6.4.3.1 ARM ABI s : OABI vs EABI ........................ 35 6.4.3.2 Usage des ressources matérielles..................... 35 6.4.3.3 Lien dans les applications......................... 35 6.4.3.4 Implémentations des routines....................... 35 6.5 Mécanismes à gérer..................................... 35 6.6 Considérations sur le développement............................ 36 6.6.1 Interventions dans les sources............................ 36 6.6.2 Version de GCC .................................... 36 6.7 Méthodes d’intégration................................... 36 6.7.1 Aspect fonctionnel.................................. 36 6.7.1.1 Bénéfice pour l’utilisateur......................... 36 6.7.2 Portabilité...................................... 36 6.7.2.1 Types entiers natifs............................ 37 6.7.2.2 Support de la cible............................ 37 6.7.3 Remplacement.................................... 37 6.7.3.1 Approche générique............................ 37 6.7.4 Ajout......................................... 37 6.7.5 Principes algorithmiques de l’implémentation générique............... 38 6.8 Mise en place des Posits dans la GNU Toolchain ..................... 38 6.8.1 Méthode de mise en place.............................. 38 6.8.2 Modification de GCC ................................. 38 6.8.3 Modification de Binutils .............................. 39 6.9 Choix de la cible et de l’environnement hôte........................ 39 6.9.1 Environnement cible................................. 39 6.9.1.1 Plate-formes................................ 39 6.9.1.2 Système d’exploitation........................... 39 6.9.2 Outils de développement............................... 39 6.9.2.1 Moteurs de production.......................... 39 6.9.2.2 Outils d’analyse.............................. 40 7 Tests 41 7.1 Méthodologie......................................... 41 7.1.1 Types de tests.................................... 41 7.1.2 Tailles de Posits ................................... 41 7.1.3 Ressources de tests................................. 41 7.1.4 Facteurs limitants.................................. 41 7.1.5 Choix de la batterie de tests............................. 42 7.1.5.1 Tests unitaires............................... 42 7.1.5.2 Tests fonctionnels............................. 42 7.1.5.3 Tests de performance........................... 42 7.1.6 Choix des plate-formes de test............................ 42 7.2 Tests logiciels........................................ 42 7.2.1 Wrappers ....................................... 42 7.2.2 Bancs de test.................................... 42 7.2.3 Benchmarking .................................... 43 7.3 Améliorations et tests manquants.............................. 43 7.4 Résultats des tests...................................... 43 7.5 Hardware de test....................................... 43 7.5.1 Machines hôtes................................... 43 5 Département TIC, 27 juillet 2018 7.5.2 Plate-formes cibles (embarquées).......................... 44 8 Conclusion 45 8.1 Résultats obtenus...................................... 45 8.2 Gestion du temps...................................... 45 8.2.1 Quelles auraient été les mesures à prendre ?..................... 45 8.3 Difficultés rencontrées.................................... 45 8.4 À poursuivre dans le futur.................................. 46 Glossaire 47 Bibliographie 48 9 Authentification 52 Annexes 53 A Journal de travail 54 9.1 Révisions du document.................................... 54 9.2 Planification initiale..................................... 54 9.2.1 Suivi du planning..................................