HardWare.fr


Intel Core 2 Duo
Processeurs
Publié le Jeudi 22 Juin 2006 par Franck Delattre et Marc Prieur

URL: /articles/623-1/intel-core-2-duo.html


Page 1 - Introduction



Netburst est mort, vive Core ! Intel l’avait annoncé il y’a maintenant plus d’un an, l’architecture Netburst introduite avec le Pentium 4 en novembre 2000 laisse désormais place à une nouvelle architecture, Core, qui est déclinée sur les plate-formes desktop, mobile et server.

Ainsi, Intel va lancer dans les jours à venir de nouveaux Xeon, et lancera fin juillet les processeurs Core 2 Duo au format LGA 775. L’occasion pour HardWare.fr de faire le tour du sujet, que ce soit au niveau de l’architecture Core à proprement parler qu’au niveau des performances de la gamme Core 2 Duo en pratique.
« The Core legacy »
Pour bien comprendre les choix techniques retenus dans le design de l’architecture Core, un petit coup d’œil en arrière est nécessaire. Remontons donc le temps de quelques années pour nous arrêter fin 2000, date à laquelle toute la gamme des processeurs Intel (desktop, server et mobile) repose sur l’architecture P6. P6 a été introduite près de 6 ans auparavant avec le Pentium Pro, et malgré des améliorations au fil des versions elle commence à montrer quelques signes d’essoufflement. Surtout face à AMD et son Athlon, qui a remporté la très symbolique et médiatique course vers le Gigahertz. Il était donc urgent pour Intel de dévoiler l’architecture succédant au P6.

L’introduction d’une nouvelle architecture n’est pas une mince affaire. Elle doit, dès son introduction, fournir des performances au moins égales aux modèles les plus évolués basés sur l’architecture précédente, mais aussi (et surtout) posséder un potentiel d’évolutivité pour les cinq ou six années à venir, durée moyenne de rentabilisation des budgets investis en R&D. C’est en tout cas le schéma adopté par Intel depuis toujours, bien que la présence d’un concurrent dangereux constitue une nouvelle donnée qui tende à accélérer la succession des modèles. Il s’agit en tout cas de ne pas reproduire la mésaventure du Pentium III EB 1,13 GHz qui poussait l’architecture P6 dans ses retranchements d’une telle façon que le modèle a du être rappelé et retiré de la vente.

C’est certainement ce souci d’évolutivité qui a prévalu lors de la définition de l’architecture Netburst. Netburst a en effet été conçue pour fournir des performances croissantes pendant plusieurs années d’existence. Voyons de quelle façon.


Page 2 - IPC et fréquence

IPC et fréquence
La performance d’un CPU peut être évaluée par la quantité d’instructions qu’il exécute à chaque seconde, soit le rapport i/s. Cette donnée peut se décomposer comme suit :

i/s = i/c x c/s

où c correspond au nombre de cycles processeur, i/c correspond au nombre moyen d’instructions exécutées à chaque cycle (c’est l’IPC) et c/s est le nombre de cycles par seconde, soit la fréquence d’horloge, notée F.

Ainsi :

i/s = IPC x F

Cette formule simple nous montre que l’IPC et la fréquence sont les deux principaux facteurs de performance. Or, IPC et fréquence sont intimement liés à l’architecture du processeur, et notamment à la profondeur du pipeline de traitement.

Considérons par exemple un processeur définit de telle manière que l’instruction la plus rapide s’effectue en 10 ns. S’il utilise un pipeline de traitement composé de 10 étapes, une étape s’effectue en 1 ns (10 ns / 10 étapes), ce qui correspond au temps de cycle minimal. La fréquence maximale atteignable est alors l’inverse de ce temps de cycle, soit 1 GHz. Si le pipeline comporte 20 étapes, le temps de cycle vaut alors 0,5 ns (10 ns / 20 étapes), soit une fréquence maximale de 2 GHz. Comme on le voit, la fréquence maximale de fonctionnement augmente avec la profondeur du pipeline.

L’IPC est quant à lui une donnée intrinsèque à l’architecture du processeur, et dépend notamment des capacités des unités de calcul. Par exemple, si le processeur possède une seule unité de traitement des additions, il pourra fournir un débit maximal de une addition par cycle. S’il en possède deux, ce sont deux additions qui seront susceptibles de s’effectuer en un cycle. « Susceptibles », car ce scénario optimal implique que le pipeline de traitement fournisse un débit constant et maximal. Or, en pratique, le flux d’instructions qui est traité par le pipeline comporte des dépendances qui imposent des états d’attente au pipeline, brisant ainsi son débit, et qui tendent à faire baisser l’IPC. Deux types de dépendances sont particulièrement néfastes pour le pipeline : les branchements, et surtout les accès à la mémoire.

Voyons par exemple le cas d’un processeur possédant deux unités de calcul sur les entiers, lui conférant ainsi un IPC maximal de 2 sur ces instructions. Ajoutons lui un sous-système de cache qui présente un taux de succès de 98%, et une mémoire centrale affichant un temps d’accès de 70 ns.

Un code x86 comporte en moyenne 20% d’instructions accédant à la mémoire. Parmi ces instructions, 98% trouveront la donnée dans le sous-système de cache, et 2% devront accéder à la mémoire centrale. Pour les 80% de code restant et pour les 98% d’instructions accédant avec succès au cache, nous allons supposer que le processeur peut fournir son IPC maximum de 2, ce qui représente 0,5 cycle par instruction.

Le nombre de cycles moyen par instruction vaut alors :

c/i = 20% x (98% x 0,5 + 2% x M) + 80% x 0,5

où M représente le temps d’accès à la mémoire centrale en cycles.
  • avec un pipeline à 10 étapes, un accès à la mémoire nécessite 70 cycles à 1GHz. Le rapport c/i vaut donc 0,778, ce qui correspond à un IPC moyen de 1,28, soit 64% de l’IPC maximal théorique.
  • avec un pipeline à 20 étapes, seul change le temps d’accès à la mémoire en cycles. A 2 GHz, les 70ns correspondent à 140 cycles. Dans ce cas c/i = 1,06, soit un IPC moyen de 0,95, ou encore 47% de l’IPC théorique.
  • Les branchements ont un impact un peu moins important, mais il dépend également de la profondeur du pipeline. En effet, en cas de mauvaise prédiction de branchement, le contenu du pipeline est erroné car il contient les instructions de la mauvaise branche. La pénalité est alors égale, en cycles, à la profondeur du pipeline. Si l’on part avec les hypothèses de 10% d’instructions de branchements et un taux de succès du mécanisme de branchement de 96%, on obtient :

    c/i = 10% x (96% x 0,5 + 4% x P) + 90% x 0,5


    où P est la profondeur du pipeline.
  • avec un pipeline à 10 étapes, on obtient c/i = 0,538, soit un IPC égal à 1,85 (92,5% de l’IPC théorique).
  • avec un pipeline à 20 étapes, on obtient c/i = 0,578, soit un IPC égal à 1,74 (87% de l’IPC théorique).

  • L’IPC qui découle des pénalités dues aux branchements et aux accès mémoire tombe ainsi à 1,19 pour le pipeline à 10 étapes, et 0,82 pour celui à 20 étapes. Ce qui nous intéresse n’est pas tant l’IPC que son produit par la fréquence, qui fournira le nombre d’instructions traitées à chaque seconde.


    On s’aperçoit alors que la fréquence maximale permise par l’utilisation d’un pipeline à 20 étapes compense la baisse de l’IPC, si tant est qu’au final le pipeline à 20 étapes se montre plus rapide que la version à 10 étapes. Il n’en a pas fallu plus à Intel pour que le constructeur fasse des longs pipeline sa nouvelle philosophie, et Netburst était née.


    Page 3 - Le plan et les problèmes Netburst

    Le plan Netburst
    L’architecture Netburst a donc été motivée par des considérations réelles de performances, même si les fréquences importantes n’étaient certainement pas pour déplaire au service marketing d’Intel. Le plan de développement de Netburst était relativement simple : augmenter la profondeur du pipeline au fur et à mesure des versions. Doublée de la réduction de la finesse de gravure, cette stratégie était censée permettre d’atteindre et de dépasser 7 GHz :
  • 20 étapes (cores Willamette et Northwood), pour une fréquence maximale de 3,4 GHz.
  • 31 étapes (cores Prescott et Cedar Mill), pour une fréquence maximale prévue de l’ordre de 5 GHz.
  • 45 étapes (core Tejas), pour dépasser les 7 GHz.
  • Bien sûr l’augmentation du découpage du pipeline a ses limites. Au delà de 55 étapes, la baisse de l’IPC engendrée par les dépendances n’est plus compensée par l’augmentation de la fréquence d’horloge, et le nombre d’instructions par seconde, et donc la performance, commence à décliner.


    (source Intel)

    Les premiers Pentium 4 Willamette ne se sont hélas pas montré très performants, hormis peut-être la version à 2GHz. En effet, le modèle théorique révèle que la performance n’est au rendez-vous que si la fréquence d’horloge est assez élevée pour compenser la baisse d’IPC, et les versions entre 1,3 et 1,5GHz du Willamette ne remplissaient que partiellement cette condition. La déclinaison Northwood a cependant redressé la barre de façon spectaculaire. D’une part par l’utilisation de fréquences plus élevées, mais également par l’emploi d’un cache L2 plus gros et plus performant que celui du Willamette, ce qui a eu pour effet d’augmenter le succès du sous-système de cache et de réduire ainsi les pénalités liées aux accès mémoire. Les versions à partir de 2,8GHz du Northwood ont réellement donné ses lettres de noblesse au Netburst, et les modèles à 3,2 et 3,4GHz sont encore aujourd’hui des modèles de performance, d’ailleurs très recherchés sur le marché de l’occasion.

    En juin 2004 Intel passe à la seconde phase du plan Netburst et introduit le Prescott. Bien que possédant plus de mémoire cache que le Northwood, le Prescott surprend doublement ses premiers testeurs : les performances sont dans certains cas inférieures à celles du Northwood, et le nouveau processeur, bien que gravé en 90nm, tend à chauffer exagérément. La baisse de performance par rapport au Northwood s’explique par l’augmentation de la profondeur du pipeline à 31 étapes. L’échauffement excessif est en revanche une très mauvaise surprise, dont le Prescott ne se débarrassera jamais complètement malgré une sensible amélioration du phénomène au fil des steppings. Mais ce sont au final les problèmes de dissipation thermique qui casseront la progression du Prescott. Dès lors les choses ont tourné au vinaigre pour Netburst. Le Prescott bloqué dans sa montée en fréquence, c’est tout l’intérêt de l’architecture Netburst qui est remis en cause.
    Les problèmes du Netburst
    Northwood souffrait déjà d’une dissipation thermique importante, bien que le problème fût moins conséquent que sur le Prescott. Si la dissipation restait acceptable pour une plate-forme de bureau ou un server, elle représentait un réel problème pour la plate-forme mobile, tant en terme de chaleur dégagée que d’autonomie. Bien que le Pentium 4 existe en version Mobile, l’architecture Netburst n’est réellement pas adaptée à la mobilité, ce qui a nécessité le développement d’une architecture dédiée à une utilisation basse consommation.

    En parallèle de Netburst s’est ainsi développée l’architecture Mobile, dérivée de P6, et dont le premier représentant, le Pentium M Banias, est sorti dès mars 2003. Bien qu’elle fut un succès, alliant performances et économie d’énergie, Mobile a représenté un coup dur pour Netburst, imposant à Intel la production de deux architectures distinctes pour couvrir toutes les plate-formes PC. Ce qui bien sûr signifie des coûts de production plus élevés en comparaison à une architecture multi-usage. Premier revers pour Netburst.

    La raison pour laquelle Netburst est en proie à une dissipation thermique élevée tient dans les fréquences utilisées, mais ce n’est pas la seule raison. A fréquences égales, Prescott dissipe bien plus d’énergie que Northwood, et ce malgré une finesse de gravure inférieure. La différence réside en réalité dans la profondeur du pipeline. Augmenter le nombre d’étapes tend en effet à augmenter la puissance dissipée, pour une raison liée au découpage.

    Pour comprendre, il faut savoir que certaines étapes critiques dans le traitement des instructions nécessitent de s’effectuer en un cycle d’horloge, sous peine de ralentir considérablement le fonctionnement du pipeline. C’est par exemple le cas de la prédiction de branchement ou du moteur out-of-order, responsable de gérer les dépendances. Ces étapes clés ne sont pas de bonnes candidates au découpage, et doivent terminer leur travail sur un temps de cycle.

    Or, plus le pipeline est long, plus le temps de cycle est faible. Afin de compenser cette diminution, il est nécessaire de paralléliser les algorithmes utilisés par ces étapes afin qu’elles puissent effectuer leur travail dans le temps imparti. Cette parallélisation complexifie considérablement l’étape, et notamment le nombre de transistors qu’elle requiert. De plus, si le seul changement de l’algorithme ne suffit pas à boucler l’opération en un cycle, il est alors nécessaire d’utiliser des transistors plus rapides, donc plus gros et plus gourmands. Tout ceci se traduit bien évidemment par une augmentation de la dissipation thermique, et est d’autant plus critique que le temps de cycle visé est faible, et donc le pipeline profond.

    Un exemple illustre particulièrement bien cette contrainte. Le Northwood possède des unités de calcul entier de type « double vitesse », qui permettent en pratique de boucler deux opérations entières par cycle. L’allongement de la longueur du pipeline sur le Prescott n’a pas permis d’implémenter de telles ALUs. Afin de garder le même débit d’instructions, chaque ALU double vitesse a donc été transformée en deux ALUs simple vitesse. Ceci a bien entendu doublé le nombre de transistors utilisé par les unités concernées.


    Le Prescott a transformé chaque ALU double vitesse du Northwood en deux ALUs simple vitesse.

    On peut se demander où en serait Netburst aujourd’hui si l’on fait abstraction des problèmes de dissipation, c’est-à-dire si le refroidissement cryogénique remplaçait le ventirad standard Intel. Prescott tournerait alors à 4,8 GHz, et la version Cedar Mill permettrait de franchir la barrière des 5 GHz. Le Tejas serait à nos portes, introduisant son jeu d’instruction SSE4 (initialement appelé TNI pour « Tejas New Instructions ») et un pipeline à 45 étapes.

    Le but de cette projection n’est pas de dresser un tableau idyllique de l’architecture Netburst, mais de constater que l’abandon de Netburst n’a pas été motivé par un problème de performances absolues de l’architecture mais bel et bien de dissipation thermique ce qui au final n’a pas permis d´atteindre les fréquences nécessaires à la performance ciblée.


    Page 4 - L'après Netburst : Intel Core

    L’après Netburst
    Lors de l’abandon de Netburst, Intel s’est retrouvé dans une situation très proche de celle de 2001 lors de la définition du successeur à l’architecture P6. Le passage par la case Netburst a cependant changé les impératifs de 2001. Le nouveau cahier des charges qui en a découlé constitue le fondement même de Core.

  • Netburst a montré qu’il était désormais de plus en plus difficile de dessiner une micro-architecture évolutive sur le long terme (entendez plus de 5 ans), toute prévision étant accompagnée de trop d’incertitudes et d’inconnues. Pour succéder à Netburst, il ne s’agit donc plus d’investir dollars et espoirs dans le design d’une toute nouvelle architecture. La nouvelle politique consiste à faire évoluer par pas successifs une architecture existante et déjà performante en l’état.

  • Intel doit de plus se débarrasser de la mauvaise image de gouffres en énergie qu’ont acquis ses processeurs. Place donc aux processeurs économes, chauffant peu, et peu bruyants à l’utilisation.

  • Plus question de maintenir une architecture parallèle pour la plate-forme mobile, il faut désormais une architecture commune à toutes les plate-formes.
  • A la lecture de ces nouvelles spécifications, les regards se sont naturellement tournés vers l’architecture Mobile. Elle a le mérite d’exister et d’avoir évolué en parallèle au Netburst, intégrant ainsi à P6 les innovations introduites par Netburst sur desktop (bus quad-pumped, SSE2). En outre, l’emploi d’un pipeline court la rend économe en énergie. Tout est là ou presque pour faire de Mobile le successeur idéal de Netburst. De plus, Mobile bénéficie d’une très bonne réputation auprès des utilisateurs, qui ne regrettent que le cantonnement de son utilisation sur la plate-forme du même nom. A tel point que les tentatives pour l’adapter sur les ordinateurs desktop se multiplient, et ce malgré la volonté d’Intel de protéger Netburst d’une chute trop rapide, le temps que la relève arrive.

    En application du nouveau cahier des charges, Mobile va ainsi bénéficier de quelques améliorations pour la rendre plus performante afin de la rendre capable de mener la barque Intel sur les trois plate-formes PC. L’architecture Core est née !
    Retour à une architecture unifiée
    Si le choix de Mobile comme fondation de la nouvelle architecture Core répond à l’exigence de créer une architecture économe en énergie, il reste à l’adapter aux conditions d’économie de production, ce qui signifie la rendre capable de subvenir aux besoins des plate-formes non mobiles. La démarche est originale, car jusqu’alors les processeurs mobiles étaient adaptés des versions desktop et non l’inverse.

    Le retour à une architecture unifiée pour les trois plate-formes représente bien sûr un intérêt économique de production pour le fondeur, mais aux dires d’Intel facilite également le travail des développeurs qui n’auront dès lors plus à se soucier d’optimiser leurs programmes pour plusieurs micro-architectures aux exigences différentes … du moins tant qu’ils restent dans la gamme Intel !
    Et de fait, une architecture commune signifie des optimisations génériques et non plus spécifiques à tel ou tel processeur. A titre d’exemple, la non généralisation des extensions 64 bits a certainement représenté un frein dans l’utilisation de ce nouveau mode d’exploitation, jusqu’alors non présent sur l’architecture Intel Mobile. Core offre ainsi en standard aux développeurs :
  • Les jeux d’instructions SSE, SSE2, SSE3 et les nouvelles instructions Supplemental SSE3.
  • l’EM64T.
  • la technologie de virtualisation.
  • Il aurait été bienvenu d’ajouter le dual-core dans cette liste, hélas Intel prévoit de décliner l’architecture Core sur des modèles mono-core. Dommage !


    Architecture Core au sein du Conroe
    Priorité à l’IPC
    Bien que performante, Mobile ne creuse pas un écart assez important dans ce domaine face aux derniers modèles basés sur Netburst, et surtout face à l’Athlon 64. Core a pour ambition de reprendre la palme de la performance sur plate-forme desktop, et doit donc faire évoluer Mobile dans ce sens.

    Core bénéficie d’un découpage du pipeline de traitement en 14 étapes, là où Mobile en comporte 12. Une telle profondeur limite la fréquence maximale de fonctionnement, et à défaut d’aller chercher la performance sur la longueur, c’est sur la largeur qu’on été portés tous les efforts afin d’obtenir un IPC élevé.

    Core hérite du moteur d’exécution dynamique Out-Of-Order de Mobile, mais innove en étendant sa capacité de traitement. Chaque noyau d’exécution de Core permet ainsi de charger, de décoder, d’exécuter et de sortir jusqu’à 4 instructions par cycle, là où Mobile ne peut en fournir que 3. Core introduit ainsi le 4-wide dynamic execution engine.

    L’augmentation du débit d’instructions constitue un facteur d’accélération en soit, mais offre également au moteur OOO une fenêtre d’instructions plus large, facilitant ainsi son travail de gestion des dépendances, et par là-même son efficacité. C’est, rappelons-le, ce même souci d’optimisation du travail de l’OOO qui a motivé l’implémentation de l’Hyper-Threading au sein de Netburst.

    Un moteur d’exécution plus large sous-entend des unités de calcul en mesure de digérer un débit d’instructions supérieur en comparaison à Mobile, et à ce titre les unités de calcul de Core ont fait l’objet de toutes les attentions.


    Page 5 - Les unités de calcul

    Les unités de calcul
    Voici une rapide comparaison des unités de calcul des architectures actuelles :


    ... et les bandes passantes théoriques en instructions qui en découlent :


    Core possède trois unités de calcul sur les entiers, soit une de plus que Mobile, le plaçant ainsi au niveau du K8 avec une capacité de trois instructions x86 par cycle. A noter que Netburst conserve sa suprématie en capacité de traitement des entiers avec ses unités double vitesse qui lui permettent de traiter jusqu’à 4 instructions entières par cycle (et non pas 5 comme le laisserait supposer la présence d’une ALU supplémentaire en simple vitesse, car celle-ci partage son port avec une des deux ALUs double vitesse). Hélas, cette capacité de traitement n’est pas exploitable en pratique car les unités de décodage de Netburst ne permettent pas de fournir un tel débit, limitant ainsi l’IPC à 3.

    Il nous a semblé intéressant d’étudier le comportement de Core sur des instructions courantes x86 telles qu’opérations arithmétiques, décalages, rotations... Nous avons pour cela utilisé un outil intégré à Everest  qui fournit latence et débit de quelques instructions choisies parmi x86/x87, MMX, SSE 1, 2 et 3. Ce petit outil est présent dans la version d’évaluation : il suffit de cliquer droit dans la barre d’état d’Everest, et sélectionner « CPU Debug » puis « Instructions latency dump » dans le menu qui apparaît.

    A titre de rappel, la latence d’une instruction représente, en nombre de cycles processeur, le temps qu’elle passe dans le pipeline de traitement. En pratique, le moteur OOO s’efforce de traiter le flux d’instructions de telle façon que ces latences soient masquées, mais les dépendances entre instructions tendent à générer des attentes, d’autant plus importantes que les latences de ces instructions le sont. Le débit d’une instruction correspond au temps minimal, en cycles processeur, séparant la prise en charge de deux instructions similaires. Ainsi, par exemple, la division entière possède un débit de 40 cycles sur K8, ce qui signifie que le processeur ne pourra traiter, et donc fournir le résultat d’un telle division entière qu’à raison d’une tous les 40 cycles.


    Sur certaines instructions, dont l’addition, Core affiche un débit correspondant à son IPC maximal théorique (0,33 cycle par instruction, soit 3 instructions par cycle). La multiplication affiche une latence légèrement inférieure à celle obtenue sur le Yonah, et se place ainsi au niveau du K8. La division entière a subi en revanche une légère baisse de performance, quoiqu’elle reste beaucoup plus rapide que sur K8 et Netburst. En ce qui concerne les manipulations de registres, Core reste en dessous de K8, bien que le décalage (shl) ait été amélioré en comparaison au Yonah.

    Ce qu’il faut retenir de ce tableau est que les efforts sur les unités de Core semblent avoir été portés sur les instructions pour lesquelles le K8 possédait jusque là une certaine avance sur Mobile et Netburst (addition et multiplication entières par exemple), alors qu’un peu de lest a été lâché sur les instructions pour lesquelles K8 ne brille pas (la division entière).
    Performances SSE théoriques
    Une des améliorations les plus notables des unités de calcul de Core consiste en la présence de trois unités SSE dédiées aux opérations SIMD entières et flottantes. Alliée aux unités arithmétiques concernées, chacune d’elles est capable d’effectuer en un seul cycle des opérations paquées 128 bits (c’est-à-dire agissant simultanément sur quatre données 32 bits ou deux données 64 bits), là où Netburst, Mobile et K8 nécessitent deux cycles. Sont concernées notamment les opérations arithmétiques courantes telles que la multiplication et l’addition.


    Chacune des trois ALUs est associée à une unité SSE, permettant ainsi de traiter jusqu’à trois opérations SSE entières 128 bits par cycle (soit 12 instructions sur des entiers 32 bits, ou encore 24 sur des entiers 16 bits). En comparaison, Mobile et K8 ne possèdent que deux unités SSE, et celles-ci ne peuvent traiter que 64 bits par cycle d’horloge. La capacité de Mobile et de K8 en SSE entier n’est donc que de 2 x 64 bits, soit 4 instructions sur des entiers 32 bits (ou encore 8 instructions sur des entiers 16 bits).

    Core possède deux unités de calcul flottant, une dédié aux additions et l’autre aux multiplications et aux divisions. La capacité de calcul théorique atteint donc deux instructions x87 par cycle, et deux instructions flottantes SSE 128 bits par cycle (soit 8 opérations sur des flottants simple précision 32 bits, ou 4 opérations sur flottants double précision 64 bits). Core se montre ainsi en théorie deux fois plus rapide sur ce type d’instructions que Mobile, Netburst et K8. Voyons cela sur quelques instructions SSE2.


    Le packed mov se montre particulièrement véloce sur Core, qui atteint là son pic de débit de 3 opérations 128 bits par cycle. Les débits affichés sur les opérations arithmétiques isolées s’expliquent par la prise en charge de ces opérations par une seule des unités FP, qui utilisée seule offre son débit maximal d’une opération 128 bits par cycle. L’opération combinée mul + add exploite en revanche les deux unités conjointement, et s’exécute alors avec un débit de 1 cycle pour les deux opérations, soit deux opérations 128 bits par cycle.

    Intel communique beaucoup sur cette nouvelle capacité de calcul introduite par Core, et la désigne sous le terme de Digital Media Boost. On notera au passage que Core introduit une nouvelle extension du jeu d’instructions SSE. Initialement prévue pour sortir sur le Tejas, SSE4 consiste en 16 nouvelles instructions SIMD, la plupart opérant sur des données entières. Elles sont essentiellement destinées à accélérer le traitement dans les algorithmes de compression et de décompression vidéo. A titre d’exemple, l’instruction palignr permet d’effectuer un décalage à cheval sur deux registres, opération qui est souvent utilisée dans l’algorithme de prédiction de mouvement dans le décodage MPEG.

    Les capacités des unités d’exécution de Core sont pour le moins impressionnantes. Intel a doté sa nouvelle architecture d’un potentiel de calcul entre deux et trois fois supérieur à celle de ses prédécesseurs et de la concurrence. Mais posséder un IPC élevé sur le papier est une chose, et l’exploiter en pratique en est une autre. Comme nous l’avons vu un peu plus haut, un code x86 tend à faire chuter l’IPC par les branches et des accès mémoire. Intel a ainsi logiquement apporté quelques améliorations destinées à réduire les effets néfastes de ces deux types de dépendances.


    Page 6 - Caches, mémoire et prefetch

    Les caches de Core
    L’architecture Core introduit de nouvelles contraintes à son sous-système de cache. De fait, l’IPC élevé nécessite d’une part un sous-système de cache présentant un de taux de succès élevé, et ce afin de masquer efficacement les latences mémoire ; mais également un débit élevé afin de faire face à l’augmentation en demande de données qui accompagne celle de l’IPC.

    Le tableau ci-dessous regroupe les principales caractéristiques des caches de la nouvelle architecture, et inclut les latences d’accès ainsi que les débits obtenus avec le test de bande passante SSE2 (128 bits) de RightMark Memory Analyzer (RMMA)  :


    Les caches L1 de l’architecture Core partagent les mêmes caractéristiques de taille et d’associativité que ceux qui équipent Mobile. En revanche, la bande passante offerte est doublée, comme le montre le test de débit en lecture 128 bits de RMMA. Nous retrouvons ce résultat si nous regardons le débit de l’instructions de lecture mémoire 128 bits SSE2 movapd : une lecture 128 bits par cycle, soit 16 octets / cycle.


    L’accès au cache L2 nécessite un cycle supplémentaire, ce qui porte son débit à 8 octets par cycle.

    A la différence des Pentium D et Athlon 64 X2, Core utilise la technique de l’Advanced Smart Cache inaugurée sur le Yonah et qui consiste à partager le cache L2 entre les deux cores d’exécution. En comparaison à un cache L2 dédié à chaque core, cette méthode présente le principal avantage de partager des données entre les deux cores, et ce sans passer par le bus mémoire. Cela réduit les accès mémoire (et les latences qui l’accompagnent) et optimise le remplissage du L2 (les redondances disparaissent).


    Le cache partagé offre également la possibilité d’être dynamiquement alloué par chacun des deux cores, jusqu’à devenir accessible dans son intégralité par un seul des deux cores. Ainsi, cette technique développée spécifiquement pour une implémentation dual core s’avère paradoxalement plus efficace que les caches séparés lorsqu’un seul des deux cores est utilisé, c’est-à-dire pour toutes les applications mono-thread.
    Un accès intelligent à la mémoire
    En plus des améliorations apportées sur les mémoires caches, Intel a développé de nouvelles techniques visant à améliorer les accès à la mémoire, techniques que le fondeur regroupe sous le terme un peu pompeux de Smart Memory Access.

    L’idée consiste à répondre à deux critères visant, encore et toujours, à masquer les latences d’accès à la mémoire :
  • s’assurer qu’une donnée peut être utilisée le plus tôt possible (contrainte du « quand »).
  • s’assurer qu’une donnée est la plus proche possible (sous-entendu dans la hiérarchie mémoire) du noyau d’exécution (contrainte du « où »).
  • La contrainte du « quand » réfère à la façon dont un processeur planifie les opérations de lecture et d’écriture mémoire. En effet, lorsque survient une instruction de lecture mémoire dans le moteur out-of-order, celui-ci ne peut la mener à terme avant que toutes les instructions d’écriture en cours soient complétées. S’il ne le faisait pas, le risque serait de lire une donnée qui n’a pas encore été mise à jour dans la hiérarchie mémoire. Cette contrainte impose donc des états d’attente, et donc un ralentissement.

    Core a donc introduit un mécanisme spéculatif visant à prédire si une instruction de lecture est susceptible de dépendre des écritures en cours, c’est-à-dire si elle peut être traitée sans attendre. Le rôle du prédicateur est ainsi de lever les ambiguïtés, et donne son nom de Memory Disambiguation à la technique utilisée. Outre la réduction des attentes, l’intérêt de la méthode est de réduire les dépendances entre instructions, augmentant par là-même l´efficacité du moteur out-of-order.
    Prefetch hardware
    Répondre à la contrainte du « où », c’est-à-dire s’efforcer de rapprocher les données du noyau d’exécution, est la fonction du sous-système de cache. Afin de lui donner un coup de pouce dans cette tâche, Core a recours au prefetch hardware. Cette technique, rappelons-le, consiste à mettre à profit les moments d’inactivité du bus mémoire afin de précharger code et données de la mémoire vers le sous-système de cache.

    Le prefetch hardware n’est pas une technique inédite, loin s’en faut. Elle a été inaugurée sur le Pentium III Tualatin, mais c’est surtout Netburst qui l’a fondamentalement améliorée. De fait, la différence importante entre la fréquence du processeur et celle du bus rend Netburst particulièrement sensible aux effets néfastes d’un cache miss, augmentant ainsi l’intérêt d’un prefetch performant. Une fois n’est pas coutume, Core hérite ainsi des techniques de prefetch de Netburst, et les améliore quelque peu.

    Plusieurs types de prefetcher équipent Core :

  • Le prefetcher d’instructions précharge les instructions dans le cache L1 d’instructions en se basant sur les résultats de la prédiction de branchement. Chacun des deux cores en possède un.
  • Le prefetcher IP scrute l’historique des lectures afin d’en dégager un schéma, et charger les données ainsi « prévues » dans le cache L1. Chaque core en possède un également.
  • Le prefetcher DCU détecte quant à lui les lectures multiples depuis une même ligne de cache sur une période donnée, et décide le cas échéant de charger la ligne suivante dans le L1. Toujours un par core.
  • Le prefetcher DPL a un fonctionnement proche du DCU, à ceci près qu’il détecte les requêtes sur deux lignes de cache successives (N et N+1), et déclenche le cas échéant la lecture de la ligne N+2 de la mémoire centrale dans le cache L2. Le cache L2 en comprend deux, qui sont partagés de façon dynamique entre les deux cores.
  • Ce qui nous donne un total de pas moins de 8 prefetchers sur un Core 2 Duo.


    Les petits soleils représentent les huit prefetchers du Core 2 Duo.

    Les mécanismes de prefetch hardware se montrent généralement très efficaces, et se traduisent en pratique par une augmentation du taux de succès du sous-système de cache. Hélas, il peut arriver que le prefetch se traduise par l’effet inverse de celui escompté, car si les erreurs sont fréquentes elles tendent à polluer le cache avec des données inutiles, donc réduire son taux de succès. Pour cette raison la plupart des mécanismes de prefetch hardware sont désactivables. Intel préconise même de désactiver le prefetch DCU sur les processeurs destinées à un usage dans un server (en l’occurrence le Woodcrest), son utilisation étant susceptible de réduire la performance dans certaines applications.


    Page 7 - Branchements et fusion

    Les branchements
    Les branchements constituent, après les accès mémoire, le second plus important facteur de ralentissement dans le fonctionnement du processeur en cas de mauvaise prédiction.

    Un branchement consiste, dans un flux d’instructions, en un saut vers une nouvelle adresse dans le code. Deux types de branchements existent :
  • Les branchements directs pour lesquels l’adresse du saut est explicitement mentionnée dans le code, sous la forme d’une opérande. L’adresse de destination est résolue lors de la compilation. Les branchements directs sont dans la plupart des cas des sauts de boucle.

  • Les branchements indirects sautent vers une adresse qui varie dynamiquement au cours de l’exécution du programme, les destinations possibles sont donc multiples. On les retrouve par exemple dans les tests de type « switch / case », et sont également souvent utilisés dans les langages orientés objets, sous forme de pointeurs de fonctions.
  • Qu’ils soient directs ou indirects, les branchements constituent un obstacle dans le fonctionnement optimal du pipeline de traitement. Dès lors que l’instruction de saut entre dans le pipeline, celui-ci ne peut, en théorie, plus accueillir de nouvelle instruction tant que l’adresse de destination n’est pas calculée, c’est-à-dire lorsque l’instruction de saut atteint les dernières étapes de traitement. Le pipeline insère alors des bulles, ce qui nuit fortement à son rendement. Le rôle du prédicateur de branchement est donc d’essayer de deviner l’adresse de destination, afin que les instructions suivant le saut soient chargées sans tarder.

    Il n’existe en fait pas un mais plusieurs prédicateurs. Le plus simple et le plus ancien est le prédicateur statique, dont le fonctionnement repose sur l’assertion que la branche sera toujours prise ou à l’inverse jamais prise. Ainsi, dans une boucle, le mécanisme statique prédit correctement tous les sauts, sauf le dernier ! Son taux de succès dépend bien entendu du nombre d’itérations.

    Le prédicateur statique montre ses limites dans les branchements de type si … alors … sinon, pour lesquels il a une chance sur deux de se tromper. Le processeur a alors recours à une prédiction dynamique, qui consiste à stocker un historique des résultats des branchements dans une table (la BHT : branch history table). Lorsqu’une branche est rencontrée, la BHT stocke le résultat du saut, et si la branche est prise l’adresse de destination est stockée dans un buffer dédié, le BTB (branch target buffer) (si la branche n’est pas prise aucune adresse n’est évidemment stockée, car la destination est alors l’instruction suivant la branche). Deux types de prédicateurs dynamiques existent au sein d’un processeur, qui se différencient par la portée des branches dont ils stockent l’historique, et ce afin d’améliorer la granularité du mécanisme de prédiction.

    L’action combinée des prédicateurs statiques et dynamiques offrent, selon la taille des buffers de stockage, un taux de succès de la prédiction entre 95 et 97% sur les branches directes. En revanche leur efficacité tombe à environ 75% de prédictions correctes sur les branches indirectes, qui, du fait de la multiplicité des destinations possibles, ne sont pas adaptées au stockage de l’information binaire « pris / non pris » des BHT. Mobile a ainsi inauguré un mécanisme de prédiction de branchements indirects. Le prédicateur stocke dans le BTB les différentes adresses auxquelles le branchement a abouti, ainsi que le contexte qui a conduit à cette destination (c’est-à-dire les conditions qui ont accompagné le saut). La décision du prédicateur n’est donc plus limitée à une adresse en cas de branche prise, mais en une série de destinations « préférées » de la branche indirecte. La méthode donne de bons résultats mais est très consommatrice de ressources, le BTB contenant alors plusieurs adresses par branche.

    Mobile a également introduit une technique innovante appelée « détecteur de boucle ». Ce détecteur scrute les branches à la recherche du schéma typique de fonctionnement d’une boucle : toutes les branches prises sauf une (ou l’inverse, selon la condition de sortie). Si ce schéma est détecté, une série de compteurs est affectée au branchement concerné, assurant ainsi un taux de succès de 100%.

    Core bénéficie bien entendu de tous ces raffinements, en plus de petites améliorations diverses, mais sur lesquelles aucune information n’a filtré.
    Les mécanismes de fusion
    Core comporte un certain nombre de techniques qui visent, pour un nombre d’instructions donné, à réduire le nombre de micro-opérations générées. Effectuer la même tâche avec moins de micro-opérations, cela signifie la faire plus rapidement (augmentation de l’IPC) tout en consommant moins d’énergie (augmentation de la performance par watt consommé).

    Initialement introduite sur Mobile, la micro-fusion est l’une de ces techniques. Voyons en quoi elle consiste sur un exemple, l’instruction x86 : add eax,[mem32].
    Cette instruction effectue en réalité deux opérations distinctes : une lecture mémoire, et une addition. Elle sera ainsi décodée en deux micro-opérations :
    load reg1,[mem32]
    add reg2,reg1
    Cette décomposition suit également la logique de l’organisation du processeur : la lecture et l’addition sont prises en charge par deux unités différentes. Dans un schéma classique, les deux micro-opérations seront traitées dans le pipeline, le moteur OOO s’assurant de gérer les dépendances.
    La micro-fusion consiste dans notre cas en l’existence d’une « super » micro-opération se substituant aux deux précédentes, en l’occurrence :
    add reg1,[mem32]
    Ce n’est ainsi plus qu’une unique micro-instruction qui traversera le pipeline de traitement. Lors de l’exécution proprement dite, une logique dédiée à la gestion de cette micro-opération sollicitera de façon parallèle les deux unités concernées. La méthode présente en outre l’intérêt de nécessiter moins de ressources (un seul registre interne est désormais nécessaire dans notre exemple).

    Core ajoute à cette technique celle de la macro-fusion. Là où la micro-fusion transforme deux micro-opérations en une seule, la macro-fusion décode deux instructions x86 en une seule micro-opération. Elle intervient donc en amont de la phase de décodage, à la recherche de paires « fusionnables » dans la file d’attente des instructions. A titre d’exemple, la séquence d’instruction :
    cmp eax,[mem32]
    jne target
    est détectée comme telle, et se décode en la seule micro-opération :
    cmpjne eax,[mem32],target
    Cette micro-opération bénéficie d’un traitement de faveur car elle est prise en charge par une ALU améliorée, capable de la traiter en un seul cycle (si la donnée [mem32] est dans le cache L1).


    Une unité de calcul améliorée de Core est en charge des micro-opérations issues de la macro-fusion.

    Il est assez délicat de quantifier le gain de performance apporté par ces mécanismes de fusion. Cela étant, nous avons pu mesurer sur Yonah qu’en moyenne 10% des instructions sont micro-fusées ce qui réduit d’autant le nombre de micro-opérations à traiter. On peut estimer sans trop de risque que l’utilisation simultanée de la macro-fusion étend cette proportion à plus de 15%.


    Page 8 - Gamme & plates-forme Intel Core

    La gamme Intel Core
    Comme nous vous l’indiquions précédemment, l’architecture Intel Core est commune aux gammes desktop, server et mobile. Dans un premier temps, ce sont les Xeon qui sont servis avec les nouveaux processeurs de la gamme 51xx qui sortent dans les jours à venir :
  • 5160 (3.00 GHz, FSB1333, 4 Mo L2) : 851$
  • 5150 (2.66 GHz, FSB1333, 4 Mo L2) : 690$
  • 5140 (2.33 GHz, FSB1333, 4 Mo L2) : 455$
  • 5130 (2.00 GHz, FSB1333, 4 Mo L2) : 316$
  • 5120 (1.86 GHz, FSB1066, 4 Mo L2) : 256$
  • 5110 (1.60 GHz, FSB1066, 4 Mo L2) : 209$
  • Le TDP des modèles jusqu’à 2.66 GHz est de 65 Watts, contre 80 Watts pour la version 3 GHz Les processeurs pour PC de bureau, les Core 2 Duo, seront pour leur part lancés officiellement fin juillet dans les déclinaisons suivantes :
  • X6800 (2.93 GHz, FSB1066, 4 Mo L2) : 999$
  • E6700 (2.66 GHz, FSB1066, 4 Mo L2) : 530$
  • E6600 (2.40 GHz, FSB1066, 4 Mo L2) : 316$
  • E6400 (2.13 GHz, FSB1066, 2 Mo L2) : 224$
  • E6300 (1.86 GHz, FSB1066, 2 Mo L2) : 183$
  • E4200 (1.60 GHz, FSB800, 2 Mo L2) : N/A

  • Le X6800 fait partie de la gamme « Extreme Edition » d’où un prix assez élevé. On notera d’ailleurs que son homologue Xeon cadencé à 3 GHz et utilisant un FSB plus élevé est moins cher, ce qui est assez peu cohérent.


    Les portables verront enfin le Core 2 Duo débarquer dans le courant de l’été :
  • T7600 (2.33 GHz, FSB667, 4 Mo L2) : 637$
  • T7400 (2.16 GHz, FSB667, 4 Mo L2) : 423$
  • T7200 (2.00 GHz, FSB667, 4 Mo L2) : 294$
  • T5600 (1.83 GHz, FSB667, 2 Mo L2) : 241$
  • T5500 (1.66 GHz, FSB667, 2 Mo L2) : 209$
  • Les prix indiqués ici sont issus du tarif officiel et correspondent aux prix annoncés par Intel pour 1000 pièces. Généralement avec les tarification réduites au délà de ce chiffre, le taux de change et le TVA on arrive à une certaine équivalence (300$ en prix officiel Intel = environ 300 € dans le commerce en France).
    Les plates-formes Intel Core
    Quelle que soit la plate-forme pour laquelle ils sont destinés, les processeurs basés sur l’architecture Core utilisent des Socket déjà existant. Côté serveur, il s’agit du Socket LGA771 introduit il y a peu avec les Xeon 50xx de type « Dempsey » (dérivé du Presler), alors que pour le desktop et le mobile il s’agit des Socket LGA775 et Socket mPGA479M.

    Attention toutefois, ceci ne veut pas dire que les processeurs sont pour autant compatibles avec les plates-formes existantes. Si côté portables presque toutes les cartes mères supportant le Core Duo devraient être compatibles avec le Core 2 Duo, les cartes mères desktop doivent quant à elles être conformes à la 11è version du VRM (Voltage Regulation Module) d’Intel.

    Du coup, alors que l’i975X supporte officiellement les Core 2 Duo (d’ailleurs on peut penser que c’est également le cas de tous les autres chipsets FSB1066), les cartes mères i975X vendues depuis septembre 2005 ne sont pas compatibles. Il faut donc s’orienter vers de nouvelles révisions, comme la rev.304 de l’Intel D975X Bad Axe, ou de nouveaux modèles, comme la P5W DH Deluxe d’Asus.


    Un moyen relativement simple de s’assurer de la compatibilité Core 2 Duo est également de passer directement au P965 Express. Annoncé début juin, ce chipset n’équipe que des cartes mères très récentes et qui sont d’office compatibles Core 2 Duo. Par rapport au 975X, il est associé à un ICH8 plus fonctionnel mais le MCH ne peut gérer qu’un lien de type PCI Express x16 alors que le 975X peut gérer un lien x16 ou deux liens x8 et donc le CrossFire. Le SLI sera pour sa part accessible au travers de la nouvelle gamme nForce 5 de NVIDIA pour Intel, qui sera lancée durant l’été. La encore toutes les cartes mères nForce 5 seront d’office compatibles Core 2 Duo, mais on pourra trouver avant des nForce 4 revues et corrigées pour supporter le Core 2 Duo.


    Page 9 - Les cpu, la mobo, conso et o/c

    Les processeurs
    Pour ce test, nous avons pu mettre la main sur 3 Core 2 Duo pour PC de bureau :
  • X6800 (2.93 GHz, FSB1066, 4 Mo L2) : 999$
  • E6600 (2.40 GHz, FSB1066, 4 Mo L2) : 316$
  • E6400 (2.13 GHz, FSB1066, 2 Mo L2) : 224$
  • E6400, E6600 et X6800
    E6400, E6600 et X6800

    Les trois processeurs sont en révision B0 (stepping 4). Il faut noter que les processeurs commercialisés seront en stepping 6.
    La carte mère : ASUSTeK P5W DH Deluxe
    Les tests ont été effectués sur la carte mère i975X + ICH7R ASUSTeK supportant le Core 2 Duo, il s’agit de la P5W DH Deluxe. On retrouve les fonctionnalités habituelles implémentées via ce chipset, mais ASUSTeK a bien entendu ajouté des fonctions supplémentaires.


    Au niveau stockage tout d’abord, l’un des ports 4 SATA géré par l’ICH7R est connecté à une puce Silicon Image 4723 qui splitte ce port en 2. On peut connecter un seul disque sur le premier port, qui pourra être utilisé de manière classique, ou deux afin de les utiliser en RAID 1, RAID 0 ou JBOD. On notera que le réglage de ces deux derniers mode se fait par jumper, le RAID 1 étant celui configuré par défaut, ce qui est pour le moins archaïque. ASUS a également intégré un contrôleur JMicron JMB363 au format PCI Express. Ce dernier gère ici deux Serial ATA (dont un externe) qui peuvent être utilisés en RAID 0 ou 1, ainsi qu’un port UDMA 100/66/33 supplémentaire qui ne sera pas de trop pour certains utilisateurs, étant donné que l’ICH7-R n’en gère qu’un.

    La gestion du réseau est confiée à deux puces Marvel 88E8053. Gérant le réseau Gigabit, elles sont interconnectées au reste du système via le PCI Express. Le WiFi est également de la partie puisque la carte intègre une puce WiFi 802.11a/b/g Realtek RTL8187L empruntant le bus USB. L’HD Audio est confié à une puce Realtek ALC882M et la carte est conforme aux spécifications Dolby Master Studio, et le FireWire est également de la partie via un contrôleur Texas Instrument. On notera la présence d’une télécommande infrarouge permettant notamment d’allumer ou d’éteindre l’ordinateur, de le mettre en veille ou en mode silencieux ou encore de contrôler le son ou l’avancement d’une vidéo.
    La consommation
    Avant toute chose nous allons nous intéresser à la consommation de ces processeurs. Le Core 2 Duo étant dérivé d’une architecture Mobile, il possède les bases nécessaires à une architecture économe en énergie. Procédé de fabrication, utilisation de transistors à faible perte de charge, les Core 2 Duo bénéficient des derniers procédés de fabrication destinés à réduire la dissipation au niveau électronique. Le SpeedStep est bien entendu implémenté, et a, selon Intel, été amélioré afin d’obtenir une réduction des temps de transition.

    Une nouvelle méthode de gestion de l´énergie existe sur le Core 2 Duo, qui permet au processeur de gérer de façon précise sa consommation même en charge, l’Ultra Fine Grained Power Control, qui consiste en un découpage très fin des zones susceptibles d’être mises en sommeil. Ce faisant, les unités non sollicitées restent en mode veille, alors même que d’autres tournent à plein régime. Ce qui se produit souvent, car rares sont les cas où toutes les unités du processeur sont requises en même temps. Cette gestion ultra précise permet une meilleure maîtrise de la consommation, et par là-même du dégagement thermique.

    La dernière innovation de l´architecture Core visant à réduire la consommation du processeur réside dans la capacité de ses bus d’adresse et des données à s’adapter à la largeur des données qui les traversent. Ainsi, si seulement 64 bits doivent transiter, seule la moitié du bus 128 bits concerné est activée.

    Qu’en est-il en pratique ? Nous rapportons ici la consommation totale de la configuration en charge sous Prime95, logiciel lancé autant de fois qu’il y a de core étant donné qu’il ne gère pas le multi thread. Dans le cas des Athlon 64 X2 et FX, les mesures ont été faites sur M2N32-SLI Deluxe en AM2 :


    Les résultats sont très bons puisque les Core 2 Duo E6600 et E6400 sont moins gourmands qu’un Athlon 64 X2 3800+. Bizarrement, notre E6400 consommait d’ailleurs plus que notre E6600, pourtant la tension était identique soit 1.3V. Le Core 2 Duo X6800 est également assez économe puisque se situant à peine au dessus d’un Pentium 4 631 à 3 GHz avec des performances qui n’ont bien entendu pas grand-chose à voir.

    On est loin de ce que consomme le FX-62 et surtout le Pentium D 950 (ici en stepping B1). Gravé en 90nm, le Celeron représenté ici consomme plus que le Pentium 4 631 gravé en 65nm.
    Overclocking
    Quid de l’overclocking ? Certes, nos processeurs ne sont « que » des stepping 4, mais nous avons tout de même voulu voir ce qu’il en était. Pour ce faire nous nous sommes limités au refroidissement à air, en l’occurrence avec un ventirad Intel classique fourni avec les Pentium 4 & D. La température ambiante était de 31°C pour ces tests et nous nous sommes limités à une augmentation de +0,1V des tensions. Sont ici considérés comme réussis les overclockings validés sous 2 Prime95 pendant 15 minutes.


    L’E6400 monte à 3.2 GHz, toutefois à cette fréquence le FSB est de 400 MHz au niveau de l’ICH7 et il a fallu augmenter sa tension d’alimentation à 1,65V.


    Notre E6600 s’est avéré moins bon puisque cette fois les 3.2 GHz n’ont pas pu être atteints de manière stable, et ce même avec une tension de 1.4V.


    Enfin, le X6800 était le plus overclockable avec 3.4 GHz stables à 1.4V. Il nous faut une nouvelle fois préciser que ces overclockings ne sont valables que pour les Core 2 Duo de stepping 4, les stepping 5 dépassant apparemment aisément les 3.4 voir même 3.6 GHz en air cooling. Partir d’un processeur trop bas nécessitera donc un FSB élevé par forcément supporté par toutes les cartes mères, par exemple pour 3.6 GHz un E6400 nécessitera un FSB de 450 MHz. En effet côté coefficient, on peut descendre par pas de 1 jusqu´à 6 quelque soit le CPU grâce à l’EIST, par contre nous n’avons pas pu aller au delà du coef. de base, même sur le X6800.

    Overclocking Step 5
    Peu de temps après la publication de l’article, nous avons pu mettre la main sur un Core 2 Duo E6600 de stepping 5 afin de voir quel était le potentiel d’overclocking de ce processeur, toujours dans les mêmes conditions :


    Cette fois les 3.4 GHz sont tenus dès 1.35V, contre 1.4V sur le X6800 step 4. On atteint même 3.6 GHz en 1.4V. Pour aller au delà, il faudra encore augmenter la tension et le processeur commence à dissiper beaucoup d’énergie, des solutions telles que le watercooling ne seront pas de trop.


    Viser une fréquence comprise entre 3.4 et 3.6 GHz semble donc tout à fait raisonnable pour un Core 2 Duo stepping 5.
    Performances à 3.6 GHz
    Quelles sont les performances d’un Core 2 Duo overclocké à 3.6 GHz en 9x400, le tout couplé avec de la DDR2-800 en 4-4-4-12 ? C’est ce que nous avons voulu vérifier, et voici les chiffres, comparés notamment à un X6800 en DDR2-800 :


    Avec une hausse de fréquence de 22.7%, on a en toute logique des gains proches de ce chiffre, et même parfois supérieurs, du fait de l’impact d’un FSB plus important sur certains de nos tests.


    Page 10 - Influence L2, DDR2, FSB

    Influence du cache L2
    Avant toute chose nous avons voulu voir quels étaient les gains apportés par 4 Mo de cache L2 unifié par rapport à 2 Mo. Pour ce faire, nous avons comparé un Conroe (4 Mo) et un Allendale (2 Mo) cadencés tous deux à 2.13 GHz :


    Comme d’habitude, les gains sont très variables selon les applications. On atteint ainsi 7,2% sous WinRAR, 6,2% sous Pacific Fighters et 4,8% sous Far Cry ce qui est appréciable. Mais il y a aussi des applications dans lesquelles les gains ne sont que de 1%, voire moins, avec par exemple 0,2% seulement sous 3ds max.

    Ces gains sont relativement comparables à ceux obtenus par le passage de 512 Ko à 1 Mo de cache par coeur sur Athlon 64 X2.
    Influence fréquence et timings DDR2
    Quelle est l’influence de la DDR2 sur le Core 2 Duo ? Etant donné que Intel a encore amélioré son prefetch hardware afin de limiter les pénalités liées à l’accès à la mémoire, on peut penser que l’impact sera réduit, c’est ce que nous avons voulu vérifier.

    Pour ce faire nous avons mesuré les performances dans 4 domaines. Nous nous sommes tout d’abord concentrés, avec ScienceMark, sur un test de bande passante en lecture et un test de latence. Ces résultats sont respectivement exprimés en Mo /s et en nombre de cycles. Enfin, deux tests applicatifs viennent compléter ceux-ci, à savoir WinRAR et Far Cry, qui sont particulièrement dépendants de la vitesse du sous-système mémoire.


    Avec un FSB1066, la bande passante maximale théorique du bus est de 8533 Mo /s. Même si ces valeurs ne sont pas atteintes ici en pratique, il est certain que ceci est limitatif pour des mémoires telles que la DDR2-1066 qui offrent en dual channel jusqu’à deux fois 8.5 Go /s de bande passante. Cela n’empêche pas la DDR2-1066 d’apporter un gain en bande passante, l’écart étant de 12% par rapport au moins bon réglage, soit DDR2-533 en 4-4-4-12.


    Côté latences, on note un écart assez important entre la DDR2-1067 et d’autres types de mémoire. On peut penser que ceci est lié à l´asynchronisme entre la fréquence du FSB et celui du bus mémoire dans les modes DDR2-667 et DDR2-800 alors qu’en DDR2-1067, le bus mémoire fonctionne pile à deux fois la fréquence du FSB.


    Nous passons maintenant à des résultats plus « pratiques » avec pour commencer un temps de compression sous WinRAR. Comme vous pouvez le voir, la DDR2-1067 en CL5 est ici 15% plus véloce que la DDR2-533 en CL4. DDR2-667 CL4, DDR2-800 CL5 et DDR2-533 CL3 sont pour leur part assez proches.


    Sous Far Cry l’écart se réduit puisque l’avantage à la DDR2-1067 n’est plus que de 8,9%. Là encore les performances du trio DDR2-667 CL4, DDR2-800 CL5 et DDR2-533 CL3 sont très proches.

    Qu’en est-il du comportement du Core 2 Duo face à la DDR2 par rapport à celui d’AMD ? Pour ce faire nous avons comparé l’impact des timings et de la fréquence sur les deux plates-formes. Nous indiquons ici le % de performance atteint par rapport au meilleur réglage :


    Les résultats parle d’eux-mêmes, sur AM2 la DDR2-533 CL4 n’offrent que 83% et 87% des performances de la DDR2-800 CL4 alors qu’avec le Core 2 Duo on grimpe à 91% et 94%. Le Core 2 Duo est impacté par une mémoire moins rapide dans des proportions deux fois moins importantes qu’un Athlon 64 X2.
    Influence du FSB
    Nous avons également voulu regarder ce qu’il en était de l’influence du FSB sur les performances du Core 2 Duo. Pour ce faire, nous avons effectué une série de test toujours à 2.4 GHz mais d’une part en 9x266 et d’autre part en 7x342 MHz.


    La première chose que l’on remarque c’est la bande passante mémoire qui augmente fortement et qui profite mieux de l’augmentation de la fréquence DDR : le FSB limitait donc cette dernière dans le test précédent.

    Toutefois, en FSB1370 la DDR2-1026 CL5 se situe au final à un niveau comparable à de la DDR2-684 en CL3, du fait de l’action combinée de la fréquence et du léger coup de pouce lié au synchronisme.

    En FSB1600 les choix ne sont pas très variés : DDR2-600, 800, 1000, 1066, 1200, etc. ... Mais au dessus de DDR2-800 la carte mère ne boote bizarrement plus. Le réglage le plus rapide est ici la DDR2-800 en 4-4-4, et on obtient de meilleures performances que la DDR2-855 4-4-4 en FSB1370 du fait du synchronisme.

    Reste que dans l’absolu le FSB ne joue pas beaucoup sur les performances et qu’on n’aura donc pas forcément un grand intérêt à abaisser le coefficient pour l’augmenter. Plus qu’une vitesse de FSB et DDR les plus élevées possibles, on cherchera donc afin d’avoir des performances optimales à trouver un réglage combinant FSB élevé, timings agressifs et DDR fonctionnant à 1x ou 2x la vitesse du FSB. Dans tous les cas en dehors de quelques réglages les performances sont relativement proches.


    Page 11 - Windows x64 & EM64T, le test

    Windows x64 & EM64T
    Introduit par AMD en 2003, l’AMD64 ISA tarde à faire son chemin sur le marché des PC de bureau. Pour rappel, il s’agit d’une une extension aux 64 bits du jeu d’instruction x86. Ainsi, les registres généraux, des petites zones mémoires qui stockent de manière temporaire les adresses mémoires et les entiers, passent de 32 à 64 bits. Intel propose depuis début 2005 une fonction comparable et compatible, l’EM64T, mais cette fonction n’était disponible que sur Netburst et pas sur Mobile. Avec Core, l’EM64T est étendue à toutes les plates-forme.

    Le fait de traiter des données 64 bits n’est pas en soit une nouveauté. Ainsi, depuis son introduction, le x87 qui se charge des calculs en virgule flottante va jusqu’à travailler en 80 bits en interne. De plus, certaines instructions MMX/SSE/SSE2 permettaient également de travailler sur des entiers 64 bits. Toutefois l’usage de ce type de donnée est désormais généralisé à toutes les données stockées dans les GPR ce qui procure deux avantages :
  • Une accélération des calculs sur les nombres entiers. En effet, dans les applications nécessitant des calculs sur des entiers très importants (la limite est tout de même de 4.29e9 en 32 bits, et atteint 1.84e19 en 64 bits), le fait de coder l’entier sur 64 bits permet au processeur de pouvoir manipuler plus simplement et plus rapidement ce type de nombre, sans avoir à doubler le nombre de registres et de cycles d’horloges nécessaires aux calculs. Ceci ne devrait toutefois concerner que des applications bien spécifiques comme l’encryptage de données ou les calculs scientifiques.

  • Le fait de stocker les adresses mémoire en 64 bits permet de dépasser la limite de 4 Go liée au codage binaire sur 32 bits pour la passer à 256 Teraoctet du fait d’une "limitation" à 48 bits du codage de la mémoire virtuelle. On notera toutefois qu’Intel a de son côté pu outrepasser cette limite de 4 Go sur ces Xeon pour atteindre 64 Go, même si ce mode à des limitations. Là encore, ceci ne sera pas vraiment utile pour le commun des mortels.

  • En fait le principal intérêt de l’EM64T comme de l’AMD64, c’est le nombre de registres. En effet, en mode x86, les processeurs disposent de 8 registres x87 80 bits, de 8 registres généraux 32 bits et de 8 registres SSE 128 bits. Avec l’AMD64 et l’EM64T, on reste à 8 registres x87 80 bits, par contre on passe à 16 registres généraux 64 bits et 16 registres SSE 128 bits. L’augmentation du nombre de registres disponibles permet de limiter le nombre d’instructions destinées à libérer ces derniers et à les copier en mémoire, et donc d’augmenter les performances.

    Enfin, l’arrivée de l’EM64T et de l’AMD64 permet de faire une rupture avec la sacro sainte compatibilité x86. De nombreux exécutables sont encore compilés de manière à être compatible avec le jeu d’instruction x86 tel qu’il était avec le 386. Il a connu des améliorations depuis, qui ne sont pas forcément utilisées par les développeurs lors de la compilation. Désormais, la question ne se posera plus.


    Quels sont les gains de performances en pratique ? Pour le savoir, nous avons installé Windows XP x64 sur un Core 2 Duo E6600, un Pentium D 950 et un Athlon FX-60 et avons testé trois logiciels en 32 bits et en 64 bits : Mathematica 5.2 (calculs scientifiques), CineBench 9.5 (rendu 3d) et Far Cry (jeu).


    Sous Mathematica, les performances sont très variables puisque l’on gagne 2.7% sur Core, 8.6% sur Netburst que sur K8 la vitesse est réduite de 2.9%. Cinebench est plus à l’avantage d’AMD avec un gain de 11.5% sur la vitesse de rendu, contre 8.6% sur Pentium D et 4.6% sur Core 2 Duo. C’est enfin sur Pentium D que Far Cry profite le plus du 64 bits avec 6.5% de mieux, contre 3.2% de plus sur Athlon 64 FX et 0.3% (!) sur Core.

    Les performances sont donc très variables d’un processeur à l’autre et d’un logiciel à l’autre, et on observe même dans un cas une baisse des performances. Globalement et ironiquement c’est le Pentium 4 qui offre les gains les plus homogènes, ceci pouvant s’expliquer du fait de la présence du Trace Cache qui stocke les instructions telles qu’elles sont décodées.

    Au contraire dans une architecture plus classique telle que le Core ou le K8 les instructions sont stockées avant le décodage dans le L1I, alors que l’AMD64 et l’EM64T impacte négative les performances du décodage puisque ces instructions sont codées sur plus d´octets que les instructions x86 classiques, ce qui augmente la charge au niveau du décodage. D’ailleurs, il semblerait que sur Core 2 Duo beaucoup de cas de fusions ne sont pas activés en 64 bits.

    Bien entendu cette charge sur les décodeurs est généralement compensée par la diminution du nombre total d´instructions en 64 bits, mais au final les gains de performances peuvent donc varier d’une architecture à une autre. En l’occurrence, Core semble moins tirer avantage que les autres architectures du 64 bits, mais dans tous les cas étant donné ses performances 32 bits et les gains globalement faibles offert par le 64 bits quelque soit l’architecture cela n’a rien de dramatique.
    Les configurations de test
    Après ces tests spécifiques nous avons bien entendu fait passer aux Core 2 Duo notre suite de tests habituelle. Pour toutes les configurations DDR2, nous avons utilisés de la DDR2-667 4-4-4-12, mais également de la DDR2-800 4-4-4-12 pour les solutions les plus haut de gamme en AM2 et Core 2 Duo.

    Les configurations utilisées étaient les suivantes :

    Commun :
    - ATI Radeon X850 XT PE
    - 2 x Raptor 74 Go
    - Windows XP SP2 Français

    Intel Socket 775 Core 2 Duo :
    - Carte mère ASUSTeK P5W DH (i975X)
    - 2 x 512 Mo DDR2-667 4-4-4
    - 2 x 512 Mo DDR2-800 4-4-4

    Intel Socket 775 :
    - Carte mère ASUSTeK P5WD2-E (i975X)
    - 2 x 512 Mo DDR2-667 4-4-4

    Intel Socket mPGA479 :
    - Carte mère Gigabyte GA-I8I945GTMF-YRH
    - 2 x 512 Mo DDR2-667 4-4-4

    AMD Socket AM2 :
    - Carte mère ASUS M2N32-SLI Deluxe
    - 2 x 512 Mo DDR2-667 4-4-4
    - 2 x 512 Mo DDR2-800 4-4-4

    AMD Socket 939 :
    - Carte mère ASUS A8N SLI Premium
    - 2 x 512 Mo DDR-400 2-2-2


    Page 12 - 3ds Max & Maya

    3d Studio Max 7
    Pour 3d studio max, nous effectuons le rendu via le moteur de rendu interne de 3ds (scanline) d’une scène mise au point par Studio PC qui fait fortement appel à la radiosité. Ce type de rendu plus réaliste au niveau des éclairages est aussi plus lent, et 80% du temps de rendu est passé sur ce type d’effet au sein de cette scène.


    Le Core 2 Duo commence déjà à montrer toute sa puissance, puisqu’il arrive au niveau des Pentium et Athlon 64 FX les plus rapides, et ce dès le E6400. Bien entendu au delà ce n’est que du bonus, et au final la configuration Core 2 Duo la plus performante est de fait 38% plus rapide que les solutions AMD et Intel existantes !

    Par rapport au Core Duo, le Core 2 Duo apporte un gain d’environ 8-10% à fréquence égale.

    >Voir les performances des CPU mono core sous ce test
    Maya 6
    Nous utilisons une scène mise au point par Yann Dupont de 3DVF que nous remercions, rendue via Mental Ray.


    L’HyperThreading sur dual core impactant négativement les performances sous Maya, du côté des Pentium c’est ici la version 960 qui est en tête. Mais le Core 2 Duo est nettement plus performant puisqu’il est devant dès sa version E6300 à seulement 1.86 GHz. La résistance est plus forte que sous 3ds du côté d’AMD puisqu’il faut un E6700 pour atteindre les performances d’un FX-62 ... mais le Core 2 Duo est annoncé comme deux fois moins cher que ce FX !

    L’avantage du X6800 est de 71% comparé au Pentium EE 965, et de 15.4% comparé au FX-62.

    >Voir les performances des CPU mono core sous ce test


    Page 13 - Mathematica & WinRAR

    Mathematica 5.2
    Voici venue l’heure des calculs scientifiques, avec Mathematica 5.2 de Wolfram Research et la suite de tests développée par Stefan Steinhaus.


    Le Core 2 Duo offre clairement des performances de « nouvelle génération ». Un simple E6400 suffit à atteindre le niveau d’un FX-62, et même le E6300 est nettement plus rapide qu’un PEE 965. Du coup, le X6800 est au final 36,9% plus véloce que son homologue AMD et 74% plus véloce que son ancêtre basé sur Netburst. Par rapport au Core 2 Duo les gains sont d’environ 14% à fréquence égale.

    >Voir les performances des CPU mono core sous ce test
    WinRAR 3.51
    Un total de 588 Mo de fichiers, répartis en 493 fichiers Word & Excel (69 Mo), 22 fichiers de boite e-mail Eudora (251 Mo) et 1 fichier audio au format wav (268 Mo), sont compressés via WinRAR 3.51 en utilisant la compression la plus poussée.


    On commence à se répéter mais une nouvelle fois le Core 2 Duo affiche des performances de tout premier ordre puisqu’un E6400 atteint des performances comparables à celles des FX-62/P EE 965. L’Allendale est environ 18% plus rapide que le Yonah à fréquence égale, et au final le X6800 a un avantage de 38,9% sur l’ancien haut de gamme Intel et 33,6% sur le haut de gamme AMD.

    >Voir les performances des CPU mono core sous ce test


    Page 14 - TMPGEnc & Vdub / DiVX 6

    TMPGEnc 3.3 Xpress
    Sous TMPGEnc 3.3.3.7, nous encodons un fichier DV de 10 minutes et 16 secondes au format MPEG-2, en 720x576 avec un bitrate moyen de 4500 kbits /s et en 2 passes. L’affichage de la vidéo en mode preview est activé pendant ce test et le décodage du fichier DV se fait via un codec Mainconcept, qui est plus rapide que le décodage intégré à TMPGEnc.


    Pour la première fois l’avantage du Core 2 Duo est bien moins évident par rapport aux processeurs d’architecture Netbust. Ainsi, le Pentium EE 965 parvient à des performances comprises entre un E6700 et un X6800, ce qui est tout à fait honorable, et l’avantage du X6800 sur prédécesseur n’est « que » de 6.2%. Par rapport à AMD le trou est par contre toujours aussi important puisque de 29.9% par rapport au FX-62, ce dernier offrant des performances comprises entre E6600 et E6400. L’architecture Core est ici 25% plus performante que Mobile, preuve que les améliorations apportées au niveau SSE portent leurs fruits.

    >Voir les performances des CPU mono core sous ce test
    VirtualDub 6.11 + DiVX 6
    Nous compressons la même vidéo que sous TMPGEnc en mode Fast recompress et via le codec DiVX 6.1 en une passe avec un bitrate moyen de 1500 kbits /s, b-frame et performance d’encodage meilleure qualité. L’affichage de la vidéo en mode preview est activé pendant ce test.


    Là encore le gain par rapport à Mobile est de 25% à 2.1x GHz, et même 30% à 1.8x GHz. Les performances atteignent de fait des sommets avec un X6800 50% plus rapide qu’un Pentium EE 965 et 37% au dessus d’un FX-62. Le EE 965 n’est du coup que légèrement au dessus d’un simple Core 2 Duo E6300 alors que le E6400 fait match égal avec le FX-62.

    >Voir les performances des CPU mono core sous ce test


    Page 15 - Far Cry & Pacific Fighters

    Far Cry
    Voici nos résultats sous Far Cry, sur une scène de test constituée d’un parcours sur la map training en extérieur.


    L’E6300 parvient ici à faire mieux que le Pentium EE 965, alors que le FX-62 n’est qu’un peu plus rapide qu’un E6400. Du coup le X6800 met un vent à ses adversaires puisqu’il est respectivement 67% et 31,7% plus rapide que l’ancienne solution haut de gamme Intel et que la solution haut de gamme AMD.

    >Voir les performances des CPU mono core sous ce test
    Pacific Fighters

    Sous Pacific Fighters l’E6300 est de nouveau plus rapide que le Pentium EE 965 alors que le FX-62 se retrouve pris en sandwich entre E6300 et E6400. Le X6800 est donc de nouveau bien plus rapide que ses compères : 74,6% de mieux qu’un EE 965 et 54,8% de mieux qu’un FX-62 !

    >Voir les performances des CPU mono core sous ce test
    A propos des tests dans les jeux
    Bien entendu nous effectuons ici des tests en basse résolution afin de voir quels sont les performances absolues du processeur, en tenant compte au minimum de l’influence que pourrait avoir un facteur limitant tel que pourrait l’être de la carte graphique.

    Selon cette carte, selon le jeu utilisé, selon la scène utilisée au sein du jeu et selon la résolution graphique utilisée, les processeur pourra plus ou moins attendre la carte graphique, ou l’inverse.

    Les combinaisons sont infinies et c’est pour cette raison que nous avons pour leitmotiv de faire nos tests processeurs dans le but de savoir quel sera le processeur le plus rapide, et dans quelle proportion, dans le cas ou c’est lui et uniquement lui qui limiterait les performances. En effet le niveau de limitation liée à la carte graphique que l’on pourrait introduire dans un test en testant en dans une plus haute résolution ne serait pas forcément représentatif puisqu’il ne s’agirait que de modifier une fois un des paramètres de la combinaison.

    De plus étant donné que les chiffres sont, afin de garantir une certaine stabilité de la mesure, une moyenne de framerate sur une période de 1 à 2 minutes, cette limitation lissant en moyenne les performances pourrait masquer des écarts qui resteraient important à un moment X où les performances resteraient limitées par le processeur (explosion par exemple).

    Si vous voulez savoir sur votre configuration, dans vos jeux, dans vos passages préférés, avec vos réglages, qui de votre carte graphique ou de votre cpu fait que vous n’avez pas la fluidité attendue, nous vous conseillons un test simple : baissez la résolution à 800*600 voir 640*480 ! Si vous n’observez pas de gain notable de fluidité, vous êtes limité par le CPU, sinon c’est la carte graphique qui vous limite.


    Page 16 - Conclusion

    Conclusion
    Avec Core, Intel nous propose une architecture qui est tout le contraire de ce qu’était le Netburst en son temps. Alors que le Netburst remettait en cause de nombreux principes et était très innovant, à tort ou à raison, Core est une sorte de pot-pourri, reprenant à son compte le meilleur des technologies existantes et les améliorant. Alors que Netburst n’offrait pas vraiment d’avantage en pratique à sa sortie, Core est dès son lancement pleinement opérationnel.

    Au vu des résultats obtenus en pratique on a tendance à donner raison à Intel sur les choix effectués, au moins à court et moyen terme. En effet, le Core 2 Duo est tout bonnement un processeur d’exception ! Par exemple, un simple E6400 affiché à 224$ offre un niveau de performance comparable à un Athlon 64 FX-62 à 1031$, tout en consommant moins qu’un Athlon 64 X2 3800+ et en offrant une marge d’overclocking confortable. Dès l’E6600, AMD ne peut plus lutter en terme de performances, sauf sous Maya ou le FX-62 parvient à faire mieux, mais bon ...

    Quelles sont les armes à la disposition d’AMD afin de tenter de freiner la déferlante Core 2 Duo ? Etant donné que la prochaine architecture du père des Athlon ne verra pas le jour avant l’année prochaine, il n’y en a qu’une : les prix ! Le fondeur appliquera ainsi une première baisse sur gamme le 24 juillets prochain, mais celle-ci semble bien insuffisante puisque c’est le 4200+ qui sera placé par exemple en face du E6400 (240$ vs 224$) alors que le 4600+ sera à un prix proche du E6600 (301$ vs 316$). Mais d’un autre côté on voit mal AMD placer son A64 5000+ à ce tarif, d’autant qu’il est pour le moment limité à une gravure en 90nm.

    Intel KentsfieldReste à savoir quelle est la marge d’évolution de Core. Côté fréquence, certes le dernier stepping 5 des Core 2 Duo permet de dépasser facilement les 3.4 voir 3.6 GHz en refroidissement à air, mais on peut penser qu’on atteindra rapidement les limites découlant d’un pipeline court. L’autre solution, favorisée par une dissipation réduite de ces CPU, c’est l’augmentation du nombre de cores. Le Kentsfield, composé de deux die Conroe intégrés au même packaging devrait être lancé début 2007, les échantillons de test étant déjà disponibles et pleinement fonctionnels. Mais que penser d’un Quad Core alors que l’on attend encore que certains types de logiciels, tels les jeux, tirent vraiment partie du dual ? C’est certainement une des raisons pour lesquelles Intel attend 2007, mais il n’est pas dit que la situation sera nettement plus favorable à cette date.

    Dans tous les cas, Intel ne compte pas sur le Core sur le long terme, puisqu’il a déjà annoncé une nouvelle architecture pour 2008, Nehalem, et une autre pour 2010, Gesher. En attendant, c’est bien Core qui devrait être disponible fin juillet sur tous les étalages et à la vue des performances offertes, on aurait tort de s’en priver !


    Copyright © 1997-2025 HardWare.fr. Tous droits réservés.