Apport des Instructions Multimédia. Quelques Techniques de Compilation. Processeur générique 2. Introduction



Documents pareils
Sanity Check. bgcolor mgcolor fgcolor

Fonctionnement et performance des processeurs

Limitations of the Playstation 3 for High Performance Cluster Computing

Exécution des instructions machine

Initiation au HPC - Généralités

Systèmes et traitement parallèles

Architecture des Ordinateurs. Partie II:

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Rappels d architecture

Comparatif entre Matrox RT.X2 et Adobe Premiere Pro CS3 (logiciel seul)

Représentation des Nombres

Compilation (INF 564)

TD : Codage des images

Évaluation et implémentation des langages

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

ASR1 TD7 : Un microprocesseur RISC 16 bits

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Architecture des ordinateurs

Introduction à MATLAB R

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

UE Programmation Impérative Licence 2ème Année

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Master IAD Module PS. Reconnaissance de la parole (suite) Alignement temporel et Programmation dynamique. Gaël RICHARD Février 2008

IFT2880 Organisation des ordinateurs et systèmes

TABLE DES MATIÈRES CHAPITRE I. Les quanta s invitent

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Architecture des ordinateurs

IFT1215 Introduction aux systèmes informatiques

Conception de circuits numériques et architecture des ordinateurs

Plan du cours Cours théoriques. 29 septembre 2014

Algorithme. Table des matières

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Tout savoir sur le matériel informatique

nom : Collège Ste Clotilde

Programmation C. Apprendre à développer des programmes simples dans le langage C

Architecture matérielle des systèmes informatiques

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Modules Multimédia PAO (Adobe)

Création de maquette web

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

Performances et optimisations

CM2 L architecture MIPS32

Algorithmique I. Algorithmique I p.1/??

IV- Comment fonctionne un ordinateur?

Traitement numérique de l'image. Raphaël Isdant

Cours d initiation à la programmation en C++ Johann Cuenin

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Résolution de systèmes linéaires par des méthodes directes

CH.3 SYSTÈMES D'EXPLOITATION

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Optimisation multi-critère pour l allocation de ressources sur Clouds distribués avec prise en compte de l énergie

1S Modèles de rédaction Enoncés

Cours Informatique Master STEP

Éléments de programmation et introduction à Java

Logiciel de Base. I. Représentation des nombres

ALGORITHMIQUE ET PROGRAMMATION En C

Chapitre 10 Arithmétique réelle

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Chapitre 2 : Abstraction et Virtualisation

Informatique Générale

Techniques d ordonnancement pour les SoC

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Matériel & Logiciels (Hardware & Software)

Mathcad Ces capacités font de Mathcad l outil de calcul technique le plus utilisé au monde.

CUOMO PC Route d Oron Lausanne 021/

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Optimiser les s marketing Les points essentiels

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d analyse numérique SMI-S4

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

La vidéosurveillance sur réseau qui surpasse vos attentes

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015


Bases de programmation. Cours 5. Structurer les données

Machines virtuelles Cours 1 : Introduction

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

Les technologies numériques à l usage des professionnels de la communication

Chapitre 4 : Les mémoires

TD Architecture des ordinateurs. Jean-Luc Dekeyser

ENREGISTREUR DE TEMPERATURE

en version SAN ou NAS

Transmission d informations sur le réseau électrique

Cours Informatique 1. Monsieur SADOUNI Salheddine

Programmes des classes préparatoires aux Grandes Ecoles

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

En DV (PAL ou NTSC), la largeur est toujours de 720 pixels, c'est la proportion du pixel qui change la proportion de l'image.

Introduction aux systèmes temps réel. Iulian Ober IRIT

Définitions. Numéro à préciser. (Durée : )

Transcription:

Résumé Apport des Instructions Multimédia Quelques Techniques de Compilation Ronan.Keryell Ò Ø ºÓÖ Département Informatique École Nationale Supérieure des Télécommunications de Bretagne On présentera sommairement les instructions dites multimédia introduites dans les dernières générations de processeurs, telles que les Pentium d Intel avec instructions MMX. Elles consistent à segmenter les ALU pour traiter par exemple de manière SIMD 8 données sur 8 bits stockées dans les registres 64 bits du processeur afin d accélérer les applications nécessitant beaucoup de calculs sur de petits types de données. Quelques exemples d applications sont abordés et une méthode de compilation est introduite. Master Recherche 2 ème année Informatique de Rennes 1 ENSTBr ISIA ENSMP octobre 2006 février 2007 Version 1.9 0-1 Introduction 1 Processeur générique 2 Explosion du marché du multimédia et des télécommunications Affichage et synthèse d image 2D & 3D Son (stéréo et plus) Télécommunications rapides (modem) Compression & décompression (MPEG-2 1 GOPS) Point commun beaucoup de calculs Processeurs génériques de plus en plus puissants +60 %/an (11,7 à 19,8 SPECint95) Mémoire ր +60 %/an Baisse des coûts intégration & factorisation de ces moyens de calcul Puissant : UAL 64 bits, extraction matérielle du parallélisme Pas d optimisations spécifiques Optimisé pour des types de données «classiques» (C) : entiers 32 bits, nombres flottants (grand public?) Pas adapté aux applications intensives sur des petites données : image GIF : 8 bits image RVBα en vrai couleur 4 8 bits son téléphone encodage A ou µ : 8 bits son qualité CD : 2 16 bits transistors sous-utilisés pour ces applications (multiplieur double précision...)

Processeur multimédia 3 Utilisation logicielle 4 Demander au compilateur de faire des efforts Bibliothèques optimisées du constructeur (Direct3D) ¹Ñ Ö Ô ÒØ ÙÑ ¹Ñ ÔÑ Ø Rajouter les opérations les plus utiles qui manquent Économie sur l emballage des opérations (monoprocesseur) Opérations à parallélisme explicite SIMD Réutilisation de parties d opérateurs (multiplieur flottant) Transparent au système d exploitation : données dans registres flottants) Gain immédiat et facile sans recompilation Surcoût d interface Pas toujours les fonctions critiques qui sont optimisées Réécriture de portions du code en assembleur avec instructions multimédia Flexibilité Difficile & sujet à erreurs Pas évident de prévoir le gain vue la complexité des micro-architectures (Intel...) Utilisation logicielle 5 Utilisation logicielle 6 Codage langage de haut niveau avec des macros constructeurs pour accéder aux primitives multimédia Abstraction de type fonction représentant une instruction multimédia Laisse au compilateur gestion des registres & déroulage Intégration plus fluide au code Portabilité via une redéfinition des macros Classes C++ pour des opérations SIMD ( Ú ¾, Á ½ Ú,...) Compilation automatique (recherche...) Exploitation recherche en compilation pour ordinateurs parallèles Optimisation pour les flux importants de données Exploitation micro-parallélisme (inférence des types) Vectorisation automatique (mais C et non Fortran en général...)

Plan 7 Processeurs avec multimédia 8 Intel : i860, Pentium (Pro, II) avec MMX (MultiMedia extensions) Processeurs avec instructions multimédia Exemples d applications Techniques de compilation SGI/MIPS : MIPS-V (R10000) MDMX HP : PA-RISC MAX-2 (Multimedia Acceleration extensions) Digital : MVI dans Alpha 21164PC (Motion Video Instructions) Moins génériques : Philips TriMedia,... Faire du neuf avec du vieux 9 Faire du neuf avec du vieux 10... et du vieux avec du neuf! Registres vectoriels (8 dans MMX) dans registres flottants Instructions vectorielles :Ô ±ÑѼ ±Ñѽ 8additions sur bits,ô Û4sur 16 bits,... 8 Pas de scatter-gather ou d indirection locale Opérations de (dé)compactage Éventuellement registres de masque (Sun VIS) Éventuellement registres d accumulation (MDMX) Gestion des débordements avec saturation

Faire du neuf avec du vieux 11 Sun UltraSPARC VIS 12 Visual Instruction Set 32 registres (flottants) Opérations partitionnées SIMD Multiplications partitionnées style 8 8 8 ou 8 8 16 Opérations de comparaison générant un masque Instructions de réalignement Superscalaire : 2 opérations MMX/cycle (4,8 GOPS 8 bits à 300 MHz) Instructions de compactage/décompactage/fusion Conversion adresse 3D (3 11b,11b) 1D Écriture suivant masque Calcul de distance pixel (L 1 ) (MPEG-2, H.261) MIPS MDMX 13 MIPS Digital Media extension 32 registres (flottants) Opérations partitionnées SIMD en 8 ou 16 bits Accumulateur privé de 192 bits partitionné en données signées de taille 3 type de l opération Possibilité de promouvoir des scalaires : ºÕ Ú½¼ Ú ¾ et ºÓ Ú Ú Instructions de chargement acceptant le non-alignement Instructions de compactage/décompactage/fusion Comparaison générant une condition vectorielle Min/max Multiplication d un vecteur par le signe d un autre Multiplications partitionnées avec saturation ou accumulation Opération d homothétie sur l accumulateur avec arrondi HP PA-RISC 2.0 MAX-2 14 Multimedia Acceleration extensions 32 registres (flottants) Opérations partitionnées SIMD avec ou sans saturation Moyennage arithmétique entre 2 registres Permutations, compactages/décompactages 2 opérations + 2 accès mémoires simultanés dans un PA-8000 Occupe 0,1 % de la surface d un PA-8000

Intel MMX 15 Héritier Intel 16 MultiMedia extensions 8 registres (flottants)... Opérations partitionnées SIMD avec ou sans saturation Multiplication-addition 8 8 + 8 8 16 Opérations de comparaison générant un masque Compactages/décompactages Opération de nettoyage des registres MMX (50 cycles) 2 opérations simultanées (+ accès mémoire sur Pentium II) Pas de chargement de constantes Puissance d expression entre MAX-2 et VIS Modèle CISC remontant au 4004... MMX rajoute un caractère RISC 8 registres génériques 32 bits + 8 registres flottants ou MMX Processeur non orthogonal, registres spécialisés Instructions 2 adresses ( et pas ) 2 pipes U & V d exécution superscalaire (+ 3 pour les accès à la mémoire du Pentium II) Conditions d exécution sur les 2 pipes très compliqués, encore pire avec les micro-instructions du Pentium II Difficile de prévoir le comportement et d écrire du code optimal IA-64 VLIW : 128 registres entiers de 64 bits, 128 registres flottants... MMX? Mais processeur très répandu... Optimisation pour MMX 17 SSE2 : MMX moderne version Pentium 4 18 Partir d un algorithme et d un code déjà bien optimisé Alignement des données sur 8 octets 1 seul décaleur et multiplieur disponible 1 seul accès à la mémoire ou MMX-registres entiers Localité du cache & précharge Utiliser les instructions «RISC» Ne pas mélanger code flottant et MMX Éviter le code auto-modificateur... Utiliser les compteurs de mesure Extensions registres MM en XMM 128 bits Permet aussi d accueillir des flottants 32 ou 64 bits Rajout d instructions flottantes...et de difficultés : exceptions flottantes Instructions de min/max ØØÔ»» Ú ÐÓÔ Öº ÒØ кÓÑ» Ó ØÛ Ö»ÔÖÓ ÙØ» Ø» ¾» Ñ ¾º ØÑ ØØÔ»» Ú ÐÓÔ Öº ÒØ кÓÑ» Ó ØÛ Ö»ÔÖÓ ÙØ» Ø» ¾» ¾ ÔÔÒÓØ º ØÑ

Transposition de matrice 19 Transposition de matrice 20 A i,j = B j,i Déroulage de boucle & pipeline logiciel Approche naïve : 1 lecture & 1 écriture/élément 2 cycles/élément Utilisation des instructions de (dé)compactage en traitant des sous-matrices 4 4 de 16 bits Transposition de matrice 21 Transposition de matrice 22 4 lectures, 4 écritures, 8 instructions 1 cycle/élément

Produit scalaire 23 Produit scalaire 24 s = n x i y i i=1 Déroulage de boucle & pipeline logiciel sommes partielles Approche naïve : 2n lectures, n multiplications, n 1 additions, 1 écriture Utilisation deôñ en utilisant 2 réductions séparées 2ÔÑ Û, 2Ô, 2 lectures/8 éléments 16 bits + 3 opérations de réduction finale Sprite 25 Rendu 3D 26 écran i+x,j+y = sprite i,j si sprite i,j 0 (1) écran i+x,j+y sinon (2) 2 lectures, 1 écriture, 3 instructions pour 8 éléments 8 bits

Rendu 3D 27 Trucs & astuces 28 Instructions inhabituelles... max(x, y) = x + (y x) + en non signé Quand utiliser MMX? Si pas d accélérateur matériel Si pas les bonnes fonctions disponibles Si triangles petits (temps de démarrage du matériel) clipping non signé dans [l, h] y = ((x + ( 1 h)) + (l h 1)) + + l Multiplication complexe±ññ¼=(d r, d i ),±Ñѽ=(c r ±ÑѼ (d r, d i, d r, d i ±ÑѼ (d r c r d i c i, d r c i + d i c r ) ÔÑ Û ±Ñѽ ±ÑѼ ) ÔÙÒÔ Ð Õ±ÑѼ ±ÑѼ, c i, c i, c r ) Pattern matching puissant Principe de compilation 29 Principe de compilation 30 Extraction du parallélisme (graphe de dépendance) Mise sous forme normale des espaces d itération If-conversion instructions de masquages Pattern matching Strip-mining Pipeline logiciel & précharge de cache Fusion de boucles parallèles conformantes (limitation débit mémoire) & privatisation de tableaux Ordonnancement des opérations & allocation des registres Restructuration des données autour des zones de calcul, alignement données/itérations (loop-peeling) grandes zones Nettoyage : élimination de code mort,... Rajout de directives? HPF? Extension à plusieurs processeurs En fait, interdépendances entre phases, haut et bas niveau...

Ö Ð ¼ ¾ µ ¼ ¾ µ Forme normale 31 Exemple non dense 32 Passage du nid de boucle dans un formalisme d algèbre linéaire Nid de boucle Polyèdre Transformations matricielles. Strip-mining : 1 f o {c 0 c < C} {(c, c ) c = Γc +c, 0 c < Γ, 0 c < C} r ¼ µ ß µ Ð a a a 0 24, 0 0 t 80 0 p 3 3 t 24 1 f o f o r ÔÔ ¼ ÔÔ ÑÑ ²² Ô ÔÔ ÔÔ µ ß Ô ÔÔµ Ð r Ô ¼ ÑÑ µ Forme normale de Hermite Regénérer du code à partir des équations = ÀÈ Ø ÑÔÐ Ø Ì ¼ ¼µ = ÀÈ ØÖ ÙØ Ì ÝÐ µµóòøóè t ÀÈ ÔÖÓ ÓÖ È ¼ µ = ¼ Í µ ¼ Í µ ½ Í ½ µ i = a ÀÈ Ð Ò µû Ø µ ÀÈ Ð Ò µû Ø Ì µ a 16c + 4p + l 0 l < 4 3i, 0 i a = i Í Configuration de l exemple 33 Allocation calculs & mémoire 34 Par exempleí=20 : l p = 0 p = 1 p = 2 p = 3 c 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 u 1 1 2 3 4 5 u 2 u 2 HPF : autorise des trous Compromis temps-espace Méthode : u 1 Base (c, l) Base du cristal (u 1, u 2 ) via HERMITE Rectangularisation du tableau en (u 1, u 2) par division entière p = 0 p = 1 p = 2 p = 3 : template, : tableau, : calcul : template, : tableau, : calcul

Autres travaux proches 35 Conclusion 36 Équipe SUIF de Stanford (Monica Lam) Optimiseur pour VIS ciblant décodeur vidéo MPEG Atomise le code, distribue les boucles Vectorisation automatique (nombre infini de registres, longueur infinie) Transformation du code vectoriel en VIS Réductions à rajouter Améliorer la localité (fusion de boucle, plus de vecteurs infinis) Encore un prototype Gain sur des tâches répétitives sur de petits types de données Expérimentation sur un code de reconnaissance d empreintes digitales avec la SAGEM et étude de codes de sonar avec Thomson Optimisation style MMX à partir de l expérience en parallélisation automatique Tâche encore complexe à automatiser par rapport aux machines parallèles classiques : parallélisme inter-processeur et intra-processeur Démarrage d une thèse utilisant l infrastructure de PIPS (ressemblances avec HPF) Intéressé par des collaborations industrielles Conclusion Conclusion Liste des transparents 0 Apport des Instructions Multimédia Quelques Techniques de Compilation slideheading.1 0 Introduction 1 Introduction slideheading.2 2 Processeur générique slideheading.3 3 Processeur multimédia slideheading.4 4 Utilisation logicielle slideheading.5 7 Plan slideheading.6 8 Processeurs avec multimédia slideheading.7 7 Processeurs multimédia 9 Faire du neuf avec du vieux slideheading.8 12 Sun UltraSPARC VIS slideheading.9 13 MIPS MDMX slideheading.10 14 HP PA-RISC 2.0 MAX-2 slideheading.11 15 Intel MMX slideheading.12 16 Héritier Intel slideheading.13 17 Optimisation pour MMX slideheading.14 18 SSE2 : MMX moderne version Pentium 4 slideheading.15 19 Transposition de matrice slideheading.16 18 Exemples 23 Produit scalaire slideheading.17 25 Sprite slideheading.18 26 Rendu 3D slideheading.19 28 Trucs & astuces slideheading.20 29 Principe de compilation slideheading.21 28 Compilation 31 Forme normale slideheading.22 32 Exemple non dense slideheading.23 33 Configuration de l exemple slideheading.24 34 Allocation calculs & mémoire slideheading.25 35 Autres travaux proches slideheading.26 34 Conclusion 36 Conclusion slideheading.27 37-1