Home Tests Dossiers Nehalem : visite du cœur du Core i7...

Nehalem : visite du cœur du Core i7...

Imprimer Envoyer
Note des utilisateurs: / 1
MauvaisTrès bien 
Écrit par Pascal Thevenier   
Vendredi, 24 Octobre 2008 14:52
Après les derniers Pentium 4 largement dominés par les Athlon 64 X2, les Core Duo et Core 2 Duo ont totalement inversé la vapeur. Les processeurs basés sur l’architecture Core ne souffrent d’aucun défaut : performances et overclocking sont au rendez-vous et riment avec consommation modérée et dissipation thermique contenue. Que demander de plus ? Une nouvelle architecture avec un processeur Quad Core natif, pardi ! Effectivement. Alors qu’AMD commercialise le Phenom – le seul processeur Quad Core natif – depuis bientôt un an, les Core 2 Quad d’Intel sont toujours composés de deux « dies » montés sur un même support… Avec l’architecture Nehalem, Intel entend bien combler ce retard et dans la foulée faire fi de certaines technologies un peu dépassées comme le bon vieux Front Side Bus. En développement depuis 2003, cette architecture prétend au titre de plus grande avancée technologique…

Philosophie de l’architecture…

Courant septembre, nous avons eu la chance d’assister à une conférence donnée par Ronak Singhal, Nehalem Chief Architect et de partager sa table en compagnie de deux confrères. Le Pentium 4 et les Core i7 ont un point commun : ils ont été conçus par la même équipe de développement mais avec des impératifs cette fois bien différents. Une des lignes directrices de cette architecture est la performance par watt. Pour augmenter la puissance brute des processeurs, les ingénieurs connaissent certaines « recettes » mais toutes n’accusent pas les mêmes contreparties en termes de consommation ou en nombre de transistors nécessaires. Dans le cadre de Nehalem, seules les améliorations avec un ratio consommation, gain de puissance et augmentations contenue du nombre de transistors ont été retenues. La seconde grande caractéristique de la nouvelle architecture est sa modularité. En effet, elle doit pouvoir être adaptable facilement aux serveurs et stations de travail mais aussi aux ordinateurs portables. Pour concevoir une architecture très flexible, il a fallu segmenter toutes les parties du processeur afin de le rendre « modulaire ». S’il est très facile de coucher cette idée sur le papier, Ronak Singhal nous a confié que cette conception leur a donné du fil à retordre notamment au niveau de la « colle » (NDLR : les interconnexions) nécessaire à la combinaison des différentes parties… Après cinq années de recherche, l’architecture Nehalem est ancrée dans la réalité et ses différentes déclinaisons devraient répondre aussi bien aux besoins des serveurs que des ordinateurs portables.



Nehalem en quelques mots…

Plutôt que de présenter un résumé en fin de parcours, nous avons décidé de dégrossir sommairement un processeur Core i7. Une des grandes différences de Nehalem vient de la présence de deux entités distinctes dans le processeur : Core et Uncore. La partie Core contient les unités d’exécution (dérivées de l’architecture « actuelle » Core) ainsi que les caches L1 et L2. Innovation de cette génération, la partie Uncore comporte le cache L3 et des contrôleurs : mémoire, bus de communication, gestion thermique, etc. Comme l’a déjà fait AMD avec l’Athlon 64, Intel a déplacé le contrôleur mémoire du northbridge vers la partie Uncore du processeur. A terme, celle-ci contiendra aussi le contrôleur PCI-Express et un ou plusieurs contrôleurs graphiques…

Remarque : Le mot « core » désigne plusieurs choses ! Core, utilisé seul avec un majuscule désigne l'architecture précédente des Core 2 Duo (au même titre que NetBurst pour les Pentium 4 et Nehalem pour les Core i7). Le terme core désigne aussi le cœur d'éxécution du processeur notamment quand on parle de processeur double core (ou double cœur). Enfin, il est aussi utilisé comme nom propre (comme marque) dans Core 2 Duo, Core 2 Quad et Core i7.


La partie Core de Nehalem

Intel ne cache pas la parenté entre la nouvelle architecture Nehalem et « l’ancienne » Core. On retrouve donc toujours une approche : Wide Dynamic Execution - 4 wide decode/rename/retire. En d’autres mots, Nehalem présente toujours un maximum théorique de 4 opérations par cycle, comme son prédécesseur. Cependant, avec Nehalem, Intel s’est attelé à approcher le plus possible du maximum théorique.


Pour améliorer l’unité d’exécution, Intel a travaillé sur trois grandes parties : l’entrée et le décodage (Front End), l’unité de traitement (Execution Engine, le « pipeline ») et la mémoire.
.
  • Front End : L’entrée dans l’unité de traitement passe par le décodage et l’analyse des instructions desquelles il découle des possibilités de prédiction de branchement (Branch Prediction), des opportunités de fusion (macrofusion) ainsi que la détection de boucles (Loop stream detector).

    La macrofusion introduite par l’architecture précédente a été optimisée au niveau de la vitesse d’exécution et des ressources nécessaires. En outre, elle est étendue à de nouvelles instructions (relatives aux conditions de branchement) et opère aussi en 64bits. Au sein de l’architecture Nehalem, la macrofusion est plus complète, plus rapide, demande moins de ressources et consomme moins…

    Les boucles sont une structure particulièrement courante dans les programmes. Dans Core, Intel avait déjà réussi à limiter les unités actives durant ce type d’opération afin de réduire la consommation. Les boucles étaient alors cantonnées aux « Loop Stream Detector » et à l’unité de décodage. Dans l’architecture Nehalem, seul le « Loop Stream Dectector » est actif. Plus complexe que l’ancien, il est à présent (et pour la première fois dans un processeur) autonome. Intel est d’ailleurs assez fier d’avoir réussi cette première…


    Pipeline conventionnel


    Le LSD introduit par Core


    Le LSD de Nehalem

    La prédiction de branchement permet d’éviter les traitements inutiles et donc la consommation « inutile ». Déjà particulièrement efficace, l’unité de prédiction de branchement a encore été optimisée avec un double objectif : performances accrues et consommation réduite avec un maximum de prédictions correctes. Dans cette optique, Intel a amélioré la prédiction de branchement au niveau du cache L2 et du Return Stack Buffer (RSB).

  • Execution Engine : Par rapport aux unités de traitement des Penryn, celles du Core i7 bénéficient d’optimisations au niveau des ports Load (port 3) et Store (port 4) qui supportent chacun une opération par cycle, ce qui n’était pas possible auparavant. Enfin, le port 5 a aussi été légèrement modifié tandis que les autres restent identiques. Le tableau ci-dessous illustre l’augmentation des différents buffers.



    La technologie HyperThreading apparue dans les Pentium 4 Northwood est de retour. Aussi appelée SMT pour Simultaneous Multi-Threading, elle permet d’optimiser le remplissage des ports et de se rapprocher du rendement maximum de 4 instructions par cycle (à condition que les tâches soient « parallélisables »). L’implémentation du SMT requiert une augmentation de 10% du nombre de transistors dans l’unité d’exécution mais se traduit par des gains bien supérieurs en termes de performances. Intel a adapté les différents buffers internes en fonction de cette charge supplémentaire de travail. Compte tenu de la philosophie de l’architecture Nelahem, l’HyperThreading a parfaitement sa place dans les processeurs Core i7. Bien entendu, alimenter 4 cores avec HyperThreading, soit 8 processeurs logiques, nécessite une bande passante mémoire importante.


    SMP : Les theads vert et bleu se partagent les unités de traitement.


    Les gains engendrés par l'HyperThreading sont aujourd'hui importants.

  • Les différentes mémoires nécessaires à alimenter le processeur en données et en instructions deviennent critiques. Si elles ne sont pas en mesure d’alimenter les unités d’exécution, tout le travail d’optimisation est perdu.

    Dans l’architecture Nehalem, on retrouve trois niveaux de cache de type inclusif. Les données du cache L1 se retrouvent donc dans le cache L2 et dans le cache L3. Cette approche est non seulement plus efficace mais elle est aussi plus adaptée à une architecture modulaire. Dans chacun des caches, un bit permet de suivre l’état des données afin de savoir si elles ont été modifiées (ou non) et ainsi assurer la réplication correcte. Le dernier avantage des caches inclusifs est de réduire la latence et d’éviter les transferts incessants entre les niveaux.
  • Cache L1 : Dans chaque core, 32 Ko pour les instructions et 32 Ko 8-way pour les données
  • Cache L2 : 256 Ko 8-way unifiés très basse latence (10 cycles contre 15 dans les Penryn) par core.
  • Cache L3 (partie Uncore) : jusqu’à 8 Mo 16-way partagés par tous les cores (latence de ~40 cycles).
  • Dans le cas d’un Core i7 à 4 cœurs, le total des caches L1 et L2 consomme « seulement » 1280 Ko sur les 8192 Ko de cache L3. Il reste donc plus de 6,5 Mo pour d’autres données et instructions.
    La gestion des caches fait toujours intervenir les technologies Memory Disambiguation, Advanced Smart Cache et Hardware Prefetchers introduits avec l’architecture Core.

    Afin de faire face à l’augmentation de la taille du code à exécuter, les TLB (Translation lookaside buffer) ont été élargis que ce soit pour les données ou pour les instructions. Un TLB unifié de niveau 2 fait aussi son apparition.

    Certaines opérations nécessitent un alignement (MOVAPS/D, MOVDQA) alors que d’autres non (MOVUPS/D, MOVDQU). Par le passé, les instructions alignées s’exécutaient plus rapidement. Grâce au « Fast Unaligned Cache Access », l’architecture Nehalem est aussi rapide dans un cas comme dans l’autre.
    Le Hardware Prefetching (HWP) de l’architecture Nehalem est proche de celui utilisé par l’architecture Core et repose sur des algorithmes complexes mais éprouvés. Dans le cache L1, il se base sur un historique et/ou sur des adresses de chargement (load adress pattern). Au niveau du cache L2, le mécanisme repose principalement sur les « load adress patern ». Plus intelligent, le prefecth est aussi plus « agressif » et plus rapide. Il n’est plus nécessaire de le désactiver comme dans les Xeon actuels (NDRL : dans certaines applications, le HWP du cache L2 pénalisait les performances).


  • Résumé de la section Core de Nehalem : Par rapport à l’architecture précédente orientée Dual Core, Nehalem est modulaire. Intel a déjà prévu de 2 à 8 cores d’exécution. Chacun des cores profite de la technologie HyperThreading et les buffers ont été adaptés en conséquence. De nombreuses optimisations permettent au unités d’être plus rapides tout en étant moins gourmandes en énergie. Les caches et les mécanismes de prefetch ont été adaptés à la plus grande puissance de calcul interne.


    La partie Uncore de Nehalem

    Pour la première fois, Intel utilise deux grandes entités dans son architecture. A côté de Core, Uncore est relativement plus simple même si elle intègre le grand cache L3 de 8 Mo. Cette approche s’inscrit en ligne droite dans la modularité qui est un des leitmotivs de Nehalem… Car la partie Uncore peut aussi s’adapter à la vocation du processeur. Dans le cas d’un serveur, plusieurs contrôleurs QPI (QuickPath Interconnect) pourront être installés afin de faciliter les interconnexions entre les processeurs. Le contrôleur mémoire (appelé IMC) triple canal DDR3 pourra être remplacé par une version plus simple pour créer une lignée de processeurs « mainstream ».

  • L’IMC ou Intel Memory Controler fait partie du processeur comme sur les Athlon 64, Athlon 64 X2 et les Phenom. Les avantages du contrôleur mémoire intégré ne sont plus à démontrer en terme de latence : elle s’effondre ! Histoire de ne pas faire « seulement » aussi bien que la concurrence, Intel fait appel à un triple contrôleur 64 bits qui prendra dans un premier temps en charge la DDR3-1066.

  • Le Front Side Bus est un héritage du passé qui pénalisait fortement les derniers processeurs Intel surtout dans le monde des serveurs. En effet, les communications entre les processeurs passent systématiquement par le chipset. De plus, les processeurs se répartissent la bande passante mémoire… Techniquement, la liaison QPI se compose de deux canaux de 20 bits répartis en 16 bits pour les données et 4 bits pour les commandes. Il autorise une bande passante totale de 25,6 Go/s, 12,8 Go/s dans chaque sens. A titre comparatif, le FSB QDR des Core 2 Duo offre au total 12,8 Go/s. En outre, il permet des connexions directes entre plusieurs processeurs.

    La combinaison du QPI et de l’IMC permet aux processeurs de l’architecture Nehalem des interconnexions avantageuses. Ainsi, un processeur ayant besoin d’une énorme bande passante mémoire peut adresser directement la mémoire connectée à un autre processeur (Non-Uniform Memory Access ou NUMA). Ce type d’accès augmente cependant la latence de 58% mais elle reste inférieure à celle d’un Xeon actuel !

  • PCU. Le dernier circuit de la partie Uncore qui n’a pas encore été évoqué est la « Power Control Unit ». Ce circuit entièrement dédié à la gestion thermique du processeur est aussi complexe qu’un processeur 486. Il est en mesure de surveiller et d’adapter les tensions, ampérages, température et fréquence de tout le processeur afin d’exploiter au mieux l’enveloppe thermique disponible. Ces informations pourront être surveillées par un logiciel de monitoring développé par Intel. Il devrait même être possible d’avoir un certain contrôle sur le processeur via cette application (à confirmer).

    Mais pour contenir la consommation au maximum, Intel s’est attaqué au problème dans sa totalité. La plus grande partie de la consommation est liée au fonctionnement des unités (60%). La distribution de la fréquence représente 10% et enfin le « Leakage » (les pertes) est de l’ordre de 30%. Seul le processus de production (usage de High-K et optimisations) permet de réduire ce dernier poste. Grâce aux « C-States », il est possible d’agir sur les 70% restants quand le processeur n’est pas utilisé. Introduits au début des années 90, les modes C1 et C2 permettent d’arrêter le pipeline et la distribution de certaines fréquences. Ce n’est qu’à la fin des années 90 que le mode C3 a permis l’arrêt complet de la distribution des fréquences. Depuis quelques années, les tensions peuvent aussi être réduites via les modes C4, C5 et le récent C6.

    L’architecture Nehalem est en mesure de placer les cores d’exécution dans des « C-States » différents de manière totalement indépendante. Des interrupteurs permettent de couper complètement l’alimentation de chaque core afin d’abaisser la consommation à quasiment 0 ! Il s’agit d’une première car actuellement, tant qu’un core est actif, il faut continuer d’alimenter les autres… La partie Uncore du processeur a aussi fait l’objet de nombreuses attentions et supporte le mode C6, ce qui se traduit par l’arrêt d’une partie des circuits, le passage en mode basse tension des I/O et l’arrêt de la distribution de la fréquence Uncore. Dans le cas d’un Core i7 (4 cores) en pleine charge, la partie Uncore intervient à hauteur de ~25% dans la consommation totale.



  • Résumé de la section Uncore de Nehalem : Cette section est inédite et comprend une partie des fonctionnalités anciennement gérées par le northbridge comme le contrôleur mémoire. Elle comprend aussi le(s) contrôleur(s) QPI, le cache L3 et le circuit de gestion de l’énergie. Ce dernier optimise la consommation et les performances du système. La partie Uncore bénéficie aussi d’état de veille et peut fonctionner à moindre fréquence que la partie Core.


    Retour du turbo !

    Il ne s’agit bien entendu pas du mode turbo comme celui des 386 et 486 mais bien d’une évolution de l’IDA (ou Intel Dynamic Acceleration) introduite avec la plateforme mobile Santa Rosa. Concrètement, il s’agit d’accélérer les opérations mono thread en augmentant la fréquence de l’unité d’exécution active. Ainsi, un Core 2 Duo T7100 à 1800 MHz peut temporairement passer à 2000 MHz si un seul des cores est actif.


    L’architecture Nehalem va beaucoup plus loin grâce à son circuit de gestion de l’énergie très évolué. Tant que le processeur reste dans son enveloppe thermique, un, plusieurs ou même tous les cores pourront être accélérés indépendamment selon leur charge de travail. Le mode turbo est bien entendu débrayable. Intel souligne que les gains liés à ce mode seront très variables. En effet, les modèles les plus puissants ont moins de marge de manœuvre étant donné leur TDP plus élevé. En outre, l’action du turbo étant dynamique, un système de refroidissement très performant donnera de meilleurs résultats qu’un autre plus basique. Il faudra bien entendu appréhender ce nouveau mode de fonctionnement lors de la mesure des performances… A titre indicatif, Intel annonce un gain de 10% maximum sur le plus puissant des Core i7. Il devrait atteindre jusqu’à 50% dans la version Mobile de Nehalem (Dual Core) après optimisation des moyens de production. Comme pour le monitoring du circuit de gestion de l’énergie, Intel a prévu un logiciel pour surveiller et contrôler ce mode turbo.


    SSE4.2

    Les processeurs Penryn ont introduit le jeu d’instructions SSE 4.1, Nehalem continue dans se sens avec SSE 4.2. Ces instructions accélèrent la recherche et la comparaison de chaînes notamment dans le traitement XML, le comptage ou encore le calcul de CRC.



    Conclusion

    Au plus profond de l’architecture Nehalem, on retrouve un pipeline d’exécution proche de celui utilisé par l’architecture Core. Déjà très performant, il a fait l’objet de nombreuses optimisations avec comme fil conducteur l’augmentation des performances sans débauche de transistors et sans augmentation conséquente de la consommation. Très facile à implémenter, particulièrement intéressante au niveau des gains de performances et peu pénalisante en nombre de transistors et sur le plan thermique, la technologie HyperThreading fait son grand retour. Le pipeline et les unités annexes ont été adaptées afin d’augmenter le rendement : plus gros buffers, nouveaux TLB, caches plus rapides, cache de niveau 3, Loop stream detector, optimisation du prefetch et macrofusion plus aboutie. Le design qui est cette fois totalement modulaire introduit pour la première fois deux grandes entités dans le processeur. La partie Core regroupe les unités de traitement et la partie Uncore (inédite) contient le contrôleur QPI (I/O), le triple contrôleur mémoire, l’unité de gestion thermique et le cache L3. Intel a aussi porté une attention particulière à la gestion de l’énergie et en même temps à l’optimisation de la puissance disponible (mode Turbo) avec une unité aussi complexe qu’un 486 entièrement dédiée à ces tâches. Optimisée pour un maximum de puissance par watts et dans l’optique d’une large modularité (de 2 à 8 cores), l’architecture Nehalem nous semble avoir tous les atouts nécessaires pour délivrer des performances exceptionnelles aussi bien dans un portable que dans un serveur et sans contrepartie !!! Les tests s’annoncent d’emblée passionnants…
  •