L'architecture Intel Nehalem

Publié le 17/09/2008 par
Imprimer


Détecteur de boucles

Core 2 introduisit également un mécanisme de gestion optimisé des boucles decode appelé Loop Stream Detector, ou LSD. Le principe repose sur la détection des boucles dans le flux de code. Le code concerné est alors placé dans un buffer dédié, et est pris en charge sur un chemin spécial qui évite certaines phases redondantes du traitement. Il est en effet inutile par exemple de recourir à la prédiction de branchement sur chaque occurrence de la boucle. Nehalem conserve le principe, à la différence près que la détection de boucle est effectuée après le décodage en micro-opérations, et ce dans le but d'épargner la phase de décodage de la boucle à chaque occurrence. Le buffer stocke donc non plus des instructions x86 mais des micro-opérations déjà décodées. Il est intéressant de noter la similitude dans le principe avec le trace cache des Pentium 4, qui opérait à la façon d'un cache de code contenant des instructions déjà décodées. Comme quoi tout se recycle.


Moteur OOO

Le moteur d'exécution out-of-order (OOO) du Nehalem a subi quelques modifications principalement destinées au support du SMT. Ainsi, le buffer de réordonnancement des instructions (ROB : Re-order Buffer) a vu sa taille portée à 128 entrées (96 pour celui du Core 2), et est partagé en deux parties égales par les deux threads. Les micro-instructions des deux threads sont alors envoyées dans un buffer appelé « Reservation Station » responsable de les répartir sur les unités de calcul. Ce buffer comporte désormais 36 entrées (32 sur Core 2), et utilise une politique de partage dynamique entre les deux threads. Ainsi, si l'un des deux threads est en attente d'une opérande mémoire, l'autre thread peut bénéficier de davantage d'entrées dans la RS.


L'étape suivante consiste en l'exécution proprement dite des instructions par les unités de calcul. Celles-ci ne sont pas directement concernées par le SMT, dont l'influence à ce niveau ne se traduit qu'en terme de débit d'instructions à exécuter. Les unités de Nehalem sont donc en tous points identiques à celles de Core 2.

SSE4.2

Nehalem introduit un nouveau jeu d'instructions, ou plus précisément un complément d'instructions au SSE4.1 du Core 2 45 nm. Intel fait des efforts de communication sur les nouveaux jeux d'instructions, et les présente désormais sous une forme plus concrète pour les utilisateurs. SSE4.2 se décompose ainsi en STTNI (String and Text New Instructions), dont le but est d'accélérer le traitement de chaînes de caractères, et en ATA (Application Targeted Instructions), qui regroupe des instructions spécialisées dans le calcul de sommes de contrôle (utilisé par exemple dans les algorithmes de compression) et d'autres intervenant dans la recherche de données. A noter que le compilateur Intel C++ version 10 supporte déjà ces nouvelles instructions.

Vos réactions

Top articles