Simulation de jeux d’instructions à hautes performances

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

PC / Traitement numérique / Contrôle Environnement logiciel
Architecture de machines Le microprocesseur
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Objectif de l’exposé.
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
Le Concept du programme enregistré
Auto Apprentissage Le DSP
simulateur de réseau de machines UML connectées par WiFi mode ad-hoc
Architecture de machines Principes généraux
Les Ateliers de Génie Logiciel
Architectures et systèmes à microprocesseurs – ELEC288
Les Systèmes d’Exploitation
Cours #8 Flot de conception d’un circuit numérique
Automates Programmables Industriels Automates Programmables
Programme et Langage C++
Architecture des Ordinateurs
Algorithmique et Programmation
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
C6E2 Positionnement de C6E2 par rapport à SimPA2 et Modelica
Systèmes Superscalaires et VLIW
Présentation du mémoire
Universté de la Manouba
Les systèmes multiplateformes
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Partie II Sémantique.
Chap. 2 - Structure d’un ordinateur
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Sensibilisation a la modelisation
Lycée ELKHAWARIZMI De SAFI
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Supports de formation au SQ Unifié
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Langages de description architecturale.
Cours de Structure et Technologie des composants d’ordinateurs
Hatainville Les Moitiers d’Allonne – Tel : Website : stratic.online.com La démarche projet Mars 2001.
INF8505: processeurs embarqués configurables
Un outil d’estimation du temps d’exécution au pire-cas par analyse statique de programmes IRISA - Projet Solidor Antoine COLIN.
© Petko ValtchevUniversité de Montréal Février IFT 2251 Génie Logiciel Conception Hiver 2002 Petko Valtchev.
Introduction au Génie Logiciel
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
Noyau Linux et multi-processeur sur plateforme embarquée ST50 Vendredi 18 Mars 2005 – Thomas Petazzoni.
Programmation Système et Réseau
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Initiation à la conception des systèmes d'informations
Construction d'une hiérarchie mémoire faible consommation
Steven Derrien Équipe R2D2
L’Audio sur PC Comparaison Numérique vs Analogique Comparaison Audio sur PC vs Hardware dédié (DSP) Rmq: beaucoup de simulitudes avec la vidéo, mais débit.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
1 Université Henri Poincaré, Nancy 1 La préemption appliquée aux FPGAs Soutenance de rapport bibliographique de DEA Faculté des Sciences Vandoeuvre-lès-Nancy.
MOCK.
Introduction et Généralités sur l’Algorithmique
1 Vers la gestion de la cohérence dans les processus multi-modèles métier Wolfgang THEURER Ecole Nationale Supérieure d’Ingénieurs des Etudes et Techniques.
Optimisation pour la Conception de Systèmes Embarqués
ISNET-43 Atelier de génie logiciel Approche fonctionnelle ou objets Concurrence ou complémentarité ? Synthèse.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
UE MAREP Cours 12 : Révisions
Patricia Renault UPMC 2005/2006
Visualisation des flots optiques en 3D
1 Démo SoftGrid. Le Séquenceur SoftGrid Utilisation d’un « packageur » SoftGrid Possibilité de “séquencer” en ligne de commande (CLI) Existence d’outils.
Génération de simulateurs de jeux d’instructions compilés Ronan AMICEL IRISA / Equipe CAPS.
1.1: notions de bases de l’informatique
Algorithmes parallèles
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Transcription de la présentation:

Simulation de jeux d’instructions à hautes performances Ronan AMICEL IRISA, équipe CAPS Université de Rennes 1

Plan de la présentation 2 Plan de la présentation Contexte des travaux et problématique Méthode de génération de simulateurs approche générale simulation fonctionnelle simulation : aspects temporels, appels système maîtrise des coûts de démarrage Résultats expérimentaux Conclusion et perspectives

Systèmes enfouis Niveaux de simulation Le contexte Systèmes enfouis Niveaux de simulation

Systèmes informatiques enfouis 4 Systèmes informatiques enfouis Systèmes haute performance Multimédia Télévision numérique, caméscopes, MP3… Télécommunications Téléphonie, équipements réseau… Automobile, radar, GPS, etc. Tendance : toujours plus de calculs…

Niveaux de simulation Simulation de jeu d’instructions 5 Niveaux de simulation Simulation de jeu d’instructions SimpleScalar, etc. Modèle VHDL Niveau de détail / vitesse de simulation

Simulation de jeux d’instructions 6 Simulation de jeux d’instructions Simulation fonctionnelle comportement du programme Simulation des performances directement (architectures « statiques ») via un modèle externe de la micro-architecture (processeurs « superscalaires »)

Problématique : accélérer la simulation de jeux d’instructions Besoin de rapidité Techniques existantes

Notre point de départ Constatation Objectif 8 Notre point de départ Constatation les besoins en vitesse de simulation croissent les performances des systèmes classiques deviennent insuffisantes Objectif Accélérer la simulation, en appliquant des techniques d’optimisation

Besoin de rapidité Deux aspects complémentaires 9 Besoin de rapidité Deux aspects complémentaires Rapidité de la simulation Rapidité du « reciblage »

Rapidité de simulation 10 Rapidité de simulation Performances des processeurs enfouis se rapprochent des processeurs généralistes Applications enfouies de plus en plus de calculs données de plus en plus volumineuses Validation (architecture, compilateur, application) tester de nombreux programmes tester de nombreux jeux de données deux tendances : ... là dessus se rajoutent les besoins de validation d’une architecture, d’un compilateur, d’une application qui vont nécessiter de tester de nombreux programmes ou de nombreux jeux de données.

Rapidité de « reciblage » 11 Rapidité de « reciblage » Exploration architecturale évaluer différentes configurations ajouter, modifier des instructions Spécification de l’architecture Compilation des applications Simulation pour évaluer les performances Temps de développement du système

Techniques existantes 12 Techniques existantes Deux techniques principales Interprétation technique traditionnelle, bien maîtrisée faibles performances Simulation compilée plus rapide adoption encore lente Maintenant que je vous ai exposé le contexte et la problématique de la simulation de jeux d’instructions pour les systèmes enfouis, je vais vous présenter les 2 principales techniques utilisées pour cette simulation.

Interprétation Principe : « machine virtuelle » Avantages 13 Interprétation Principe : « machine virtuelle » exécution du programme cible pas à pas boucle dite « charger, décoder, exécuter » Avantages assez simple à mettre en oeuvre grande souplesse Inconvénients faibles performances La technique la plus couramment utilisée est l’interprétation.

Simulation compilée Deux étapes 14 Simulation compilée Deux étapes produire un simulateur spécifique pour le programme à simuler, en langage C ou C++ ce simulateur est ensuite compilé et exécuté sur la machine hôte Programme cible Générateur Compilateur Simulateur compilé

Avantages de la simulation compilée 15 Avantages de la simulation compilée Portabilité indépendance par rapport à la machine hôte besoin seulement d’un compilateur C ou C++ Performances potentiellement élevées le décodage des instructions est fait une fois pour toutes le compilateur peut optimiser le code final du simulateur Complexité acceptable génération du code final à la charge du compilateur

Contraintes de la simulation compilée 16 Contraintes de la simulation compilée Technique statique : tout le code doit être connu lors de la génération pas de bibliothèques chargées dynamiquement pas de code auto-modifiant Systèmes enfouis : ces contraintes sont généralement acceptables édition de liens statique programmes souvent en ROM

Problème principal : coût de démarrage 17 Problème principal : coût de démarrage Génération Compilation Simulation Coût de démarrage

Approche Schéma général Forme assembleur Notre méthode Approche Schéma général Forme assembleur

Notre approche Utiliser la simulation compilée Trois objectifs 19 Notre approche Utiliser la simulation compilée indépendance par rapport à la machine hôte potentiel de performance Trois objectifs système reciblable optimiser la vitesse de simulation maîtriser le coût de démarrage

Description de l’architecture Source C++ du simulateur 20 Schéma général Description de l’architecture Programme cible Générateur (ABSCISS) Source C++ du simulateur Compilateur Simulateur compilé

Choix de la forme assembleur 21 Choix de la forme assembleur Méthodes existantes : code objet en entrée Avantages de l’assembleur cycle de développement plus rapide pas d’assemblage ni d’édition de liens pas de description de l’encodage binaire informations de plus haut niveau flot de contrôle (points d’entrée des blocs de base) Inconvénients adresse des instructions ? agencement des sections (code, données) ?

Simulation fonctionnelle Analyse Optimisations Génération

Simulation fonctionnelle 23 Simulation fonctionnelle Principe produire du code C++ sémantiquement équivalent au code assembleur Deux phases construction d’une représentation optimisée de la sémantique du programme génération du code C++ correspondant, selon un schéma de génération

Construction de la représentation 24 Construction de la représentation Partie frontale basée sur Salto système de manipulation de code assembleur Construction d’arbres sémantiques instanciation de la sémantique contrôle des types optimisations Autres tâches analyse du flot de contrôle gestion des données statiques affectation des adresses

Optimisations (1/2) Une optimisation doit : 25 Optimisations (1/2) Une optimisation doit : accélérer la simulation avoir un impact réduit sur le coût de démarrage Compromis comparable aux systèmes d’optimisation dynamiques (p. ex. JIT) Incluses dans la phase de construction optimisations locales  coût réduit

Types d’optimisations 26 Types d’optimisations Évaluation statique opérations dont les arguments sont connus Règles algébriques if( true, x, y )  x add(x,0)  x Règles spécifiques à la cible R0  0 R0 = ...  nop

Phase de génération Génération de code C si possible 27 Phase de génération Génération de code C si possible exploiter les types et opérateurs standards Sinon, utilisation d’une bibliothèque C++ gestion des valeurs de taille arbitraire (24 bits...) Génération du code de soutien aiguillage du flot de contrôle données statiques

Autres fonctionnalités Aspects temporels Appels de bibliothèques

Simulation cycle à cycle 29 Simulation cycle à cycle Limitée aux architectures de type RISC ou VLIW à pipelines statiques Exploitation des tables de réservation pour calculer statiquement le coût d’un bloc de base Surcoût négligeable à la simulation

Appels de bibliothèques 30 Appels de bibliothèques Appel à des fonctions externes appels au système d’exploitation appels à des bibliothèques Deux stratégies simuler l’ensemble application+bibliothèques+OS utiliser les services de la machine hôte

Utilisation de la machine hôte 31 Utilisation de la machine hôte Méthode interception de l’appel externe extraction des paramètres appel de la fonction sur la machine hôte insertion du résultat dans l’état simulé Convention pour les paramètres (ABI) passage via les registres ou la pile dépend de l’architecture et du compilateur

Temps de compilation Segmenter le code Coût de démarrage Temps de compilation Segmenter le code

33 Le problème Le temps de compilation dépend de la taille des fonctions générées Ce temps ne croît pas linéairement… Code C original Code assembleur Code C du simulateur

Maîtrise du temps de compilation 34 Maîtrise du temps de compilation Réduire la taille des fonctions dans le code du simulateur généré Segmentation naturelle de l’application plusieurs fichiers assembleur Segmentation automatique génération du simulateur en « tranches » taille optimale des tranches ?

Temps de compilation (GCC 2.95) 35 Temps de compilation (GCC 2.95)

Noyaux de calcul Décodage vidéo MPEG2 Synthèse Performances Noyaux de calcul Décodage vidéo MPEG2 Synthèse

Performances : noyaux Calculs de type traitement de signal 37 Performances : noyaux Calculs de type traitement de signal Programmes courts (boucles) < 300 instructions assembleur (hors nops) 500K à 2M itérations par test Machine hôte : SUN Blade 100 Plateforme cible : TriMedia TM1000 Comparaison : simulateur Philips (tmsim)

Temps de simulation (secondes) hors coût de démarrage 38 Performances : noyaux Temps de simulation (secondes) hors coût de démarrage

Application réelle : MPEG2 39 Application réelle : MPEG2 Application de décodage vidéo Taille du code : ~ 10 000 lignes de code C ~ 16 000 instructions assembleur (hors nops) Machine hôte : SUN Ultra 10 Plateforme cible : TriMedia TM1000 Comparaison : simulateur Philips (tmsim)

40 Performances MPEG2 (1/2) Vidéo très courte. Avec ABSCISS le temps de simulation est négligeable, et le coût de démarrage (ici de 5 à 8 minutes) domine. Mais dès que celui-ci est amorti, ABSCISS devient plus rapide.

41 Performances MPEG2 (2/2) Sur une vidéo un peu plus volumineuse, le gain est flagrant puisqu’ABSCISS est déjà 16 fois plus rapide. Et avec des vidéos encore plus grosses, le gain augmenterait encore puisque le rapport de vitesse sur la simulation seule (hors coût de démarrage) est entre 75 et 100.

Performances : synthèse 42 Performances : synthèse Un à deux ordres de grandeur plus rapide qu’un simulateur industriel classique Le coût de démarrage est rapidement amorti Sur une station d’entrée de gamme ~ jusqu’à 30 millions d’opérations par seconde ~ jusqu’à 20 MHz simulés pour le TriMedia

Conclusion Perspectives Valorisation Pour terminer… Conclusion Perspectives Valorisation

44 Conclusion Une nouvelle approche pour la simulation compilée de jeux d’instructions utilisation du langage assembleur en entrée application d’optimisations dans le générateur Performance un à deux ordres de grandeur plus rapide que les méthodes traditionnelles maîtrise des coûts de démarrage

Perspectives Quantifier l’impact précis des optimisations 45 Perspectives Quantifier l’impact précis des optimisations Reciblage vers d’autres architectures PowerPC, MIPS, ARM… Intégration de plusieurs simulateurs processeur + blocs matériels multiprocesseurs pour applications parallèles

Valorisation Dépôt du logiciel déposé à l’APP 46 Valorisation Dépôt du logiciel déposé à l’APP Transféré dans le cadre de la création d’une entreprise issue de l’équipe de recherche

Questions

Backup

Speedup simulation sur MPEG2 49 Speedup simulation sur MPEG2

Speedup global sur MPEG2 50 Speedup global sur MPEG2

Performances : MPEG2 (38 Ko) 51 Performances : MPEG2 (38 Ko)

Exemple d’optimisation 52 Exemple d’optimisation Instruction assembleur IF r1  iadd r5,r0,r6 Sémantique $0  $3 = add($1,$2) Repr. intermédiaire r1  r6 = add(r5,r0) Règles d’optimisation r0  0 r1  1 add(x,0)  x true  x  x Repr. optimisée r6 = r5

Description de l’architecture cible 53 Description de l’architecture cible Basée sur Salto système de manipulation de code assembleur Pour la simulation fonctionnelle Sémantique des instructions Registres, mémoires Pour la simulation « cycle à cycle » Unités fonctionnelles Usage temporel des ressources

Un système reciblable Description de la cible basée sur SALTO 54 Un système reciblable Description de la cible basée sur SALTO Ressources : ressources de mémorisation unités fonctionnelles Instructions syntaxe assembleur tables de réservation Ajout : description de la sémantique

Une infrastructure extensible 55 Une infrastructure extensible ABSCISS fournit le « coeur » lié à la simulation comportementale une API pour ajouter des fonctions supplémentaires Exemples d’extensions existantes ou possibles simulation au cycle près de pipelines statiques émulation des appels de bibliothèques ou au système simulation des caches modèles de consommation électrique génération de traces, profiling et débogage

56 Extension d’ABSCISS Le code de l’utilisateur peut être appelé par le générateur lors d’événements grâce à un système de « call-backs » modules d’extension C++ Compilés dans ABSCISS scripts Python Pas de recompilation nécessaire d’ABSCISS Rapide à développer et à tester

Ventes de microprocesseurs 57 Ventes de microprocesseurs

Jeu d’instructions Ensemble des « commandes de base » d’un processeur 58 Jeu d’instructions Ensemble des « commandes de base » d’un processeur Architecture : interface matériel-logiciel Micro-architecture : implémentation …001011010100100110110101101…

Variété des jeux d’instructions 59 Variété des jeux d’instructions Processeurs enfouis (multimédia, télécoms, automobile, etc.) Adelante Saturn Tensilica ARM TMS C6x Infineon TriCore MIPS ST200 ARCtangent ColdFire PowerPC Philips TriMedia Equator MAP Infineon CARMEL Hitachi SH-x StarCore Siroyan  Foisonnement de nouveaux jeux d’instructions

Simulation de jeux d’instructions 60 Simulation de jeux d’instructions Reproduire sur une machine hôte le comportement d’un programme destiné à une machine cible Machine hôte Machine cible

Traduction de binaires 61 Traduction de binaires Principe : produire directement du « code machine » Traduction statique produire un binaire pour la machine hôte Traduction dynamique traduction au fur et à mesure de la simulation utilisation d’une cache de traductions possibilité d’optimiser le code produit en s’adaptant au profil d’exécution Traduction statique systèmes ad-hoc en général (sauf UQBT)

Techniques mixtes Interprétation + traduction de binaires 62 Techniques mixtes Interprétation + traduction de binaires permet d’accélérer l’interprétation des portions fréquemment exécutées statique en tâche de fond : FX!32 dynamique : Support matériel spécifique Crusoe (Transmeta) Daisy et BOA (IBM) Support matériel Utilisation d’un processeur spécialement adapté à la simulation d’une autre architecture Découplage entre le jeu d’instructions réel du processeur (de type VLIW ici) et l’architecture exposée à l’utilisateur : Intel x86 pour Transmeta, PowerPC pour les systèmes d’IBM. Possibilité de changer le jeu d’instructions visible en changeant la partie logicielle : Transmeta a fait une démonstration d’une version de sa technologie qui exécutait directement du bytecode Java.

Processus de génération 63 Processus de génération Source C tmcc Assembleur TriMedia Description de l’architecture ABSCISS tmas Source C/C++ Binaire TriMedia gcc tmsim Simulateur compilé

Développement de la chaîne d’outils et des applications 64 Développement de la chaîne d’outils et des applications Validation du compilateur génération de code et optimisations vérifier que la sémantique est préservée Faciliter la mise au point développement sur une station de travail profiling, débogage, etc. On a déjà un compilateur pour la famille de processeurs -> on va développer des optimisations spécifiques. Il faut vérifier qu’elles fonctionnent corrrectement.