5MMCEAMC/SLE-3A Travaux Pratiques
Utilisation des extensions SIMD du pentium pour le calcul
de la conversion YCbCr vers RGB
Frédéric Pétrot
Durée : 3 heures
1 Organisation
Le travail se fait en binôme cette fois-ci (l’expérience forme la jeunesse). Le sujet est découpé en
parties qui peuvent au départ être faites plus ou moins indépendamment, aussi il est raisonnable que
les 2 membres du binôme travaillent en parallèle (de degré 2 ici).
Merci de m’envoyer votre fichier au plus tard lundi soir minuit, c’est là dessus que vous
serez notés (ou pas, ...).
2 Introduction
Ce TP a pour objectif de mettre en pratique l’utilisation des opérations SIMD de base (dites MMX) du
processeur x86. SIMD signifie Single Instruction, Multiple Data, ce qui veut dire que la même opération
va être exécutée sur
n
données différentes (et indépendantes) simultanément. Un exemple simple est
l’exécution d’une addition sur les 4 octets d’un mots de 32 bits considérés indépendamment.
Les instructions MMX d’Intel travaillent sur des registres de 64 bits dont le contenu peut être
considéré comme soit 8 octets (de 8 bits, dits bytes), 4 entiers courts de 16 bits (appelés words par
Intel), 2 entiers de 32 bits (appelés doubles), ou 1 entier long de 64 bits (encore dit quad). Il y a 57
instructions MMX, mais le travail demandé ne requière l’utilisation que d’un petit sous-ensemble. Pour
information, je n’ai utilisé que les 15 suivantes dans ma correction :
Une rapide explication des instructions MMX se trouve sur le site
. Attention, sur ce cite l’ordre des
opérandes dans les instructions est celui de l’assembleur Intel, alors que par défaut GAS utilise l’ordre
opposé : l’opérande 1 et le résultat sont à droite.
Le TP utilise un décodeur vidéo Motion-JPEG (celui du projet C de 1ère année pour être précis),
dans lequel nous allons tenter d’optimiser une fonction particulière, celle qui assure la conversion des
composantes de luminance et chrominance en rouge, vert, bleue pour l’affichage dans un frame buffer.
3 Travail demandé
3.1 Préliminaires
Récupérez sur le site du cours ( ) l’ar-
chive contenant les sources nécessaires au TP. Cette archive s’expand dans le répertoire , et
contient une vidéo qui sera notre benchmark, un , des fichiers
objets contenant les différentes phases du décodage hormis la conversion YUV vers RGB, et trois fichiers
sources contenant diverses implantations (dont certaines partielles) de la conversion.
1