Pentium 4 : Voyage au cur du CPU | ||||
By Franck | ||||
Le Nouveau Jeux d'instructions SSE2
Profitons de ce paragraphe pour commenter un peu ce phénomène des jeux d'instructions. Leur apparition coïncide avec celle de la recherche de la parallélisation sur les processeurs. Le Pentium a inauguré ce phénomène avec son architecture superscalaire, qui lui permettait dans certains cas de traiter deux instructions simultanément. La technologie SIMD repose sur une technique différente, à savoir traiter plusieurs données mais en une seule instruction. D'un point de vue complexité, il est beaucoup plus simple pour un processeur de traiter par exemple une instruction opérant sur quatre données, plutôt que de traiter simultanément quatre instructions opérant chacune sur une donnée. Dans le premier cas une unité de calcul suffit, alors que dans le second il faut au moins quatre unités de calcul, et un système complexe de répartition des instructions, le débit final étant le même dans les deux cas. Mais si l'effort de parallélisation n'est pas fait pas le processeur, il doit être présent dans le code en et c'est bien là qu'est tout le problème des jeux d'instructions SIMD. Les compilateurs actuels sont en effet pratiquement incapable de générer du code "vectorisé", c'est-à-dire exploitant la parallélisation des instructions SIMD. Ce travail doit encore être fait à la main, c'est très long, et surtout très coûteux pour les éditeurs de logiciels. Ceci étant, voyons ce que le jeu d'instruction SSE2
apporte de plus par rapport aux précédents jeux d'instructions, et pour
cela traçons un rapide historique depuis le MMX.
Les instructions nommées «de contrôle de lecture / écriture en mémoire» permettent d'effectuer des opérations vers la mémoire sans passer par le cache. Quel est l'intérêt de ne pas passer par le cache ? De ne pas le polluer avec des données dont on sait qu'elles ne seront pas utilisées d'ici peu. Les instructions de contrôle de la mémoire cache sont arrivées avec le SSE et ont été encore étendues avec le SSE2. Jusqu'alors, tout contrôle sur le fonctionnement de la mémoire cache était inaccessible aux programmeurs, les constructeurs préférant se fier à leurs propres algorithmes intégrés dans les puces. Mais les choses ont changé, et il est désormais possible de précharger des données dans les différents niveaux de cache, de passer outre ces mêmes niveaux lors de lecture ou d'écritures, et même de forcer une ligne de cache à se vider. Pourquoi ce phénomène ? Non pas que les algorithmes de gestion des caches soient moins performants qu'avant (c'est plutôt le contraire), mais parce que l'influence des mémoires caches sur les performances globales a considérablement augmenté (le processeur tournant parfois 20 fois plus vite que le reste du système). Ainsi, toute mauvaise gestion du cache peut avoir des conséquences importantes sur les performances. Les algorithmes étant limités, les constructeurs offrent aux programmeurs la possibilité d'intervenir sur certains paramètres importants.
|
||||
Close |