Les processeurs NEHALEM-EP d’Intel se mettent au vert
Par Jean-François Lemerre, Bull
PAROLE D'EXPERT
![]() |
Nouvelle architecture, nouvelles fonctionnalités : le dernier-né des processeurs Intel® Xeon® concilie performance et efficacité énergétique |
Le socket Nehalem-EP (NHM) est le nom de code du dernier né des processeurs Xeon® 5500 d’Intel qui intègre une nouvelle microarchitecture d’Intel succédant à l'Enhanced Intel Core architecture. EP est la version de Nehalem qui permet de concevoir des serveurs bi sockets. Son architecture est optimisée pour offrir un ratio performance-consommation très élevé.
Les autres sockets utilisant le cœur Nehalem sont la version single socket pour poste de travail, vendue sous le nom de Core i7 et la version EX (expandable, scalable) permettant de construire des serveurs comptant quatre sockets et plus.
Nehalem-EP, tout comme Core i7, offre quatre cœurs intégrés sur la même puce. Il est comme la gamme précédente Penryn (plus précisément Harpertown dans la déclinaison dual socket) réalisé en technologie 45 nm1. Il est compatible x86-64.
Ses principales caractéristiques sont les suivantes :
- Un contrôleur mémoire intégré offrant trois canaux, permettant de tripler le débit mémoire par rapport aux architectures précédentes ;
- Trois niveaux de cache inclusifs, dont le dernier de 8 Mégaoctets est partagé entre les quatre cœurs ;
- Un mécanisme d’hyperthreading : chaque cœur peut traiter deux threads simultanément, soit l’équivalent de 16 processeurs virtuels pour un serveur bi-sockets ;
- Un bus système QPI (Quick Path Interconnect) ;
- Le support des instructions SSE4.2 et de la virtualisation ;
- Une gestion d'horloge et d'énergie propre à chaque cœur.

Dispositifs pour démultiplier les performances des applications : contrôleur mémoire intégré, cœur NHM et hyperthreading optimisés, cache renforcé
Un contrôleur mémoire intégré : une nouveauté dans l'architecture Intel. Le composant North-bridge de l’architecture précédente a disparu ; il permettait à l’ensemble des cœurs d’accéder à une mémoire centralisée. C’était un goulot d’étranglement mesurable dans de nombreuses applications.
La connexion directe de la mémoire sur chaque socket permet à la bande passante d’accès à la mémoire de croître avec le nombre de processeurs. En effet, chaque socket fournit trois canaux mémoire DDR3 fonctionnant jusqu’à 1333 MHz. Cela donne un débit théorique de 32 Go/s par socket, soit 64 Go/s pour un serveur bi-socket, à comparer aux 21 Go/s du FSB de la gamme précédente. Ceci permet de multiplier par trois le débit mémoire théorique. En pratique, on mesure un débit proche de 40 Go/s pour les deux sockets avec le benchmark STREAM.
Avec cette nouvelle architecture, le temps d’accès à la mémoire n’est plus uniforme, il dépend de la position respective du cœur et des barrettes mémoire accédées, on parle de mémoire NUMA (Non Uniform Memory Architecture). Le temps d’accès aux données est nettement plus rapide lorsqu’un processeur utilise la mémoire attachée au socket auquel il appartient que lorsqu’il utilise la mémoire du socket distant. On parle de facteur NUMA, ratio entre ces deux temps d’accès aux données.
L’impact en termes de performance est minimisé grâce à deux apports des nouveaux serveurs.
- Le premier est le résultat d’un effort logiciel qui permet au système d’exploitation de prendre en compte le facteur NUMA en favorisant l’utilisation de la mémoire dite « locale » lors de l’allocation de mémoire à une application.
- Le second est une deuxième évolution de l’architecture matérielle avec l’introduction du QPI (Quick Path Interconnect). Chaque socket Nehalem-EP est équipé de deux QPI. Ce nouveau lien de communication à la fois rapide et à forte bande passante, permet l’échange de données entre les processeurs, les DMA d’entrée/sortie et les différentes mémoires. Le QPI est l’équivalent, en plus performant, du lien hyper-transport d'AMD. A la fréquence de fonctionnement de 6,4 GT/s2, il permet d'échanger 25,6 Go/s (12,8 dans chaque direction). Ce débit permet de supporter les débits cumulés des cartes PCI Express Gen2 ou un débit mémoire important entre les deux sockets. La faible latence du QPI permet de minimiser les temps d’accès aux données – 108 ns pour la mémoire distante à comparer aux 64 ns pour la mémoire locale, soit un facteur NUMA inférieur à 2.
Le cœur NHM permet une amélioration significative des performances malgré une fréquence plutôt inférieure à celle de la génération précédente. En fait, tout a été fait pour effectuer plus d'instructions par cycle.
Parmi les améliorations constatées, le moteur d'exécution Out Of Order a été amélioré par une taille plus grande du buffer de ré-ordonnancement des instructions et le mécanisme de prédiction de branchement a été revu en améliorant l'efficacité de cette prévision et en diminuant la pénalité des mauvaises prédictions. Le décodage des instructions x86 en micro instructions élémentaires fusionnées est encore plus efficace. Enfin, le jeu d'instruction SSE4.2 a été complété, les instructions de synchronisation (LOCK*) sont plus efficaces et un support amélioré de la virtualisation est mis en œuvre.
L'hyperthreading a lui aussi été amélioré en doublant un certain nombre de registres. Ceci permet de jouer deux threads sans perte de temps : dès que le premier est bloqué par une attente quelconque de ressources, la mémoire par exemple, on « passe la main » à l'autre thread en utilisant les registres associés. Cette technologie, efficace dans le domaine des bases de données, dégradait le niveau de performance atteint en High Performance Computing (HPC), on a pu vérifier que ce n’est plus le cas avec ce nouveau cœur.
Un cache partagé entre les 4 cœurs de taille importante (8 Mo) apporte également une amélioration significative. Il remplace les deux fois deux caches de l'architecture Penryn et permet d'avoir des taux de « miss » très faibles. Les données présentes à ce niveau peuvent donc être accédées plus rapidement par les quatre cœurs. Nehalem utilise une architecture à trois niveaux de cache où le cache partagé est le dernier niveau. Chaque cœur accède ainsi au cache partagé de dernier niveau à travers les caches de niveau 1, inchangés à 32 K instructions et 32 K données et un cache de niveau 2 de 256 Koctets. Tous ces caches sont inclusifs, ce qui simplifie la gestion de la cohérence. Les latences d’accès aux données de ces différents caches sont de quatre cycles, soit 1,4 ns pour L1, de 10 cycles soit 3,3 ns pour L2 et de 40 cycles, soit 13 ns pour le cache de dernier niveau.
Des fonctionnalités inédites au cœur du processeur pour optimiser l’efficacité énergétique
Un autre aspect extrêmement intéressant du socket Nehalem-EP est la possibilité de gérer la consommation électrique des processeurs. Ceci est possible grâce au changement dynamique de la fréquence et de la tension d’alimentation des processeurs, qui permet de piloter leur consommation électrique. Celle-ci est en effet pour partie, proportionnelle à la fréquence et au carré de la tension. Il faut noter que ce mécanisme permet de mettre en mode « idle » certaines parties du circuit en passant la fréquence à 0 et qu’il intègre la mesure de la consommation électrique au niveau de chaque socket.
De tels pilotages peuvent être mis en œuvre soit pour limiter la consommation, soit pour augmenter les performances. Par exemple, lorsque certains cœurs sont inutilisés, il sera possible de les passer dans l’état « idle » pour, soit suivre une politique de gestion intelligente de l'énergie lorsqu’il est souhaitable de ne pas dépasser un seuil défini de consommation, soit bénéficier de l’énergie rendue ainsi disponible pour augmenter sa fréquence d'exécution, c'est le mode Turbo.
Schéma de référence d’un serveur bi-socket Nehalem-EP

Du processeur aux applications, les bénéfices de Nehalem-EP sont directement évalués par les experts Bull
En conclusion, considérons l’utilisation par deux serveurs Bull équipés respectivement des architectures Harpertown et Nehalem-EP. Pour chaque serveur, on considèrera deux sockets, quatre cœurs par socket, utilisés à la fréquence maximum. On obtient ainsi :
- Une performance crête théorique en Gigaflops3 sensiblement identique (4 opérations flottantes par cycle et par cœur) car la fréquence est à peu près identique, proche de 3 GHz ;
- Une latence mémoire améliorée d'environ 50 ns, lorsqu’on accède à la mémoire « locale » du socket considéré, soit presque divisée par deux ;
- Un débit mémoire multiplié par trois ;
- Des résultats Spec CPU2006 « rate », c'est à dire avec tous les cœurs actifs, très nettement améliorés, dans un facteur de l'ordre de 1,8 pour les benchmarks dits entiers (à 250 contre 140 Specintrate2006) et de 2,5 pour les benchmarks flottants (à 195 Specfprate2006 contre 79). Sans être parfaitement représentatifs, ces benchmarks donnent une idée intéressante de la performance relative de ces processeurs, et ce d'autant plus que le compilateur est le même ou quasiment. On mesure donc ici l’effet des optimisations du cœur et de l’hyperthreading ;
- Les performances en gestion sont également exceptionnelles. Les benchmarks TPC-C et TPC-E conduisent à des valeurs de l’ordre 632 Ktpm4 et 800 tps atteintes par plusieurs constructeurs (275 et 317 tps pour la gamme précédente).
1 nm : nanomètres
2 GT/s : Giga Transfert par seconde
3 Gigaflops : un milliard d'opérations en virgule flottante par seconde
4 Ktpm : Kilo transactions par minute


