L'architecture Intel Nehalem

Publié le 17/09/2008 par
Imprimer
Quad neuf ?
Nehalem est une architecture quadruple cores « monolithique », c'est-à-dire qui ne résulte pas du rapprochement de deux noyaux double cores. Le Nehalem introduit également la notion de « uncore » sur la gamme Intel, le terme désignant toute partie du processeur qui n'entre pas directement dans le moteur de traitement des instructions. A la différence du Core 2 qui se basait sur une distribution d'horloge simple (tout le processeur tourne à une unique fréquence d'horloge), le Nehalem exploite une distribution d'horloge complexe. Chaque core peut donc tourner à sa fréquence propre, ainsi que toute la partie uncore du processeur.

Du neuf avec du vieux
Les cores du Nehalem bénéficient de la technologie SMT (Simultaneous Multi-Threading), apparue avec les Pentium 4 équipés de l'Hyperthreading (nom commercial du SMT sur Netburst), et que l'on trouve également sur les premières générations de processeurs Atom.

SMT est une technique visant à faciliter la prise en charge de plusieurs threads par un même core d'exécution. En l'absence de SMT, le core gère de façon successive des morceaux des différents threads dont il a la charge à un instant donnée. Les passages incessants d'un thread à l'autre donnent l'illusion que ceux-ci sont exécutés simultanément, mais dans les faits beaucoup de temps est consacré aux transitions d'un thread à l'autre. Le core doit à chaque fois sauvegarder le contexte d'exécution d'un thread (état des registres, de la pile ...) et charger le contexte du nouveau thread. L'idée de SMT est d'offrir au core la possibilité de gérer non plus un mais deux contextes en même temps, permettant ainsi de prendre en charge deux threads de façon réellement simultanée cette fois. Les ressources du core (caches, unités d'exécution) sont partagées entre les deux threads, de façon statique (buffer séparé en deux parties identiques par exemple) ou dynamique (les threads accèdent à la ressource de façon concurrente selon leur besoin spécifique).


Outre la réduction de temps passé dans les transitions de contexte, le gain de performance du SMT provient du meilleur taux d'utilisation des unités d'exécution du noyau. En effet, les flux d'instructions de chacun des deux threads sont indépendants, ce qui profite notablement au moteur d'exécution out-of-order (OOO) dont une des contraintes de fonctionnement réside dans la dépendance des instructions. Les opportunités de remplir plus efficacement le pipeline d'exécution sont ainsi plus nombreuses, et au final le rendement du coeur d'exécution augmente. Sur un moteur d'exécution non OOO qui ne peut réordonner les instructions (comme c'est le cas sur l'Atom), le débit dépend directement des dépendances entre instructions successives ; SMT permet alors de pratiquement doubler les performances. Et pour ne rien gâcher, l'ajout de SMT sur un core est économique en comparaison des bénéfices apportés en terme de performance dès lors que plus d'un thread tourne sur le processeur.

Le système d'exploitation ne manipulant que des threads, il interprète la présence des deux contextes comme deux processeurs logiques distincts, au même titre que deux cores. Les quatre cores de Nehalem apparaissent donc dans le gestionnaire des tâches de Windows sous la forme huit processeurs logiques.

Tout ceci semble plutôt séduisant, mais la technologie SMT n'est pas pour autant exempte de défauts.

En premier lieu, le principe de SMT réside dans l'augmentation du rendement d'un coeur d'exécution, et le gain possible est donc d'autant plus important que le rendement d'origine de l'architecture concernée est faible. Netburst souffre d'un pipeline très long (20, puis 30 étapes), et donc difficile à remplir de façon optimale ; l'architecture a ainsi tiré profit du SMT, le gain pouvant atteindre 40% sur certaines applications sur le Pentium 4 Prescott. L'effet est encore plus bénéfique sur l'Atom dont le moteur d'exécution in-order est fortement pénalisé par les dépendances.

Nehalem emprunte son moteur d'exécution au Core 2, et il est légitime de s'interroger sur le gain apporté par le SMT sur des coeurs d'exécution réputés déjà efficaces. Selon Intel, SMT permettra au moteur 4-wide du Nehalem (c'est-à-dire capable de traiter jusqu'à quatre instructions simultanément) d'exploiter pleinement sa largeur ; une optimisation « horizontale » en quelque sorte, à comparer à celle « verticale » obtenue sur le long pipeline de Netburst.

L'autre défaut du SMT réside dans l'accès concurrent des threads aux caches, et en particulier aux L1. Les L1 du Nehalem sont heureusement suffisamment volumineux pour s'accommoder sans peine de deux threads, et sont en tout cas mieux armés que ceux du Pentium 4 dans ce domaine.

Au final, le SMT sera-t-il bénéfique au Nehalem ? Oui, car nous verrons au cours de notre étude que beaucoup d'améliorations apportées sur le noyau du Nehalem l'ont été dans l'optique d'un fonctionnement optimal du SMT sur la nouvelle architecture, et ce afin de maximiser le gain de performance. Mais le gain sera forcément variable selon les applications. Le SMT fait des merveilles en environnement serveur et en gestion de bases de données, c'est du moins ce qui est ressorti de son exploitation sur les Xeon à architecture Netburst. Il reste que l'intérêt du SMT sera forcément moindre sur les PC de bureau, notamment dans le cadre d'une utilisation bureautique ou ludique. Et a fortiori sur plateforme Mobile. Il a d'ailleurs été envisagé pendant un temps de ne pas équiper du SMT les versions non serveur du Nehalem, mais Intel est revenu sur cette décision et le Bloomfield (version haut-de-gamme pour PC de bureau) en sera pourvu. Quoiqu'il en soit, SMT reste débrayable, il sera donc toujours possible de décider si sa présence est désirée ou non.
Vos réactions

Top articles