« Fonctionnement d'un ordinateur/Les architectures à parallélisme de données » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 123 :
====L’extension MMX====
 
Commençons par étudier le MMX. Le MMX ajoutait pas mal d'instructions SIMD assez basiques, essentiellement des instructions arithmétiques : addition, soustraction, opérations logiques, décalages, rotations, mise à zéro d'un registre, etc. La multiplication est aussi supportée, mais avec quelques petites subtilités, via l'instruction PMULLW. Ce MMX introduisait 8 registres vectoriels, du nom de MM0, MM1, MM2, MM3, MM4, MM5, MM6 et MM7. Ceux-ci avaient une taille de 64 bits et ne pouvaient contenir que des nombres entiers : pas de nombres flottants à l'horizon. Il n'y a pas de registre d'état pour les instructions MMX. Pire : lesLes instructions MMX ne mettent aucunpas le registre d'état à jour et ne préviennent pas en cas d'overflow ou d'underflow si ceux-ci arrivent (pour les instructions qui ne travaillent pas en arithmétique saturée).
 
CesLe MMX introduisait 8 registres MMXvectoriels, du nom de MM0, MM1, MM2, MM3, MM4, MM5, MM6 et MM7, d'une taille de 64 bits, qui ne pouvaient contenir que des nombres entiers. Ils avaient cependant un léger défaut, qui a nuit à l'adoption du MMX. Pour comprendre ce défaut, il faut savoir que les flottants sont gérés sur les processeurs x86 par une l'extension du jeu d'instruction x86 : le jeu d'instruction x87., Celui-ciqui définit 8 registres flottants de 80 bits, ainsi qu'à un registre d'état de 32 bits. Et c'est là qu'est le problème : chaque registresregistre MMX correspondait aux 64 bits de poids faible d'un des 8 registres flottants de la x87 ! En clair : il était impossible d'utiliser en même temps l'unité de calcul flottante et l'unité MMX. Le pire, c'est que ce n'était pas un bug, mais quelque chose de voulu par Intel. En faisant ainsi, ilsauvegarder n'yles avaitregistres paslors àd'un sauvegarderchangement 8de registrescontexte, supplémentaires lorsqud'on appelait une fonctioninterruption, ou qud'on devait interrompre un programmeappel pourde enfonction lancerétait untrès autre (changement de contexte, interruption, etc)simple : la sauvegarde des registres de la FPU x87 suffisait. CelaMais cela a sacrément gêné les programmeurs ou les compilateurs qui voulaient utiliser le jeu d'instruction MMX.
 
[[File:SSE registers.PNG|centre|vignette|upright=2.0|Registres MMX.]]
 
====L’extension SSE====