Home

Test : Intel Pentium 4 3,06GHz Hyper-Threading

Imprimer Envoyer
Note des utilisateurs: / 11
MauvaisTrès bien 
Écrit par Pascal Thevenier   
Jeudi, 14 Novembre 2002 01:33
Remplacer un quatre cylindres par un V8 ne permet pas forcément d'aller deux fois plus vite… Ceux qui connaissent les systèmes bi-processeurs savent très bien que les performances du système ne doublent pas non plus. Les gains peuvent être importants mais le prix de tels systèmes est très élevé. Avec la technologie Hyper-Threading, le Pentium 4 se dédouble. En effet, le setup de la carte mère tout comme le système d'exploitation voient deux processeurs alors qu'il n'y a physiquement qu'un Pentium 4 sur le Socket 478. Que peut-on attendre d'un Pentium 4 qui se fait passer pour deux ?


Evolution

Lors de sa conception, le Pentium 4 devait être un monstre de puissance. L'équipe qui l'avait conçu avait juste oublié un détail : Le coût de production. Le Pentium 4 qui est arrivé sur le marché début 2001 n'était qu'un castra du projet originel. Le core Willamette ne disposait que de 256Ko de cache L2 et sa gravure en .18µ combinée à un Socket 423 mal étudié limitait son évolution à 2GHz. Nous ne reviendrons même pas sur le succès plus que mitigé de la Rambus. Le Socket 423 sera très vite remplacé par un Socket 478 dont les nouvelles broches servent à l'amélioration du rapport signal/bruit notamment avec plus de masses.

Début 2002, Intel bascule en gravure .13µ et profite de l'opération pour porter le cache L2 à 512ko. Le fondeur optimise également le core et le processus de fabrication. La maîtrise des procédés de construction et l'excellent agencement du die permet aux Pentium 4 1,6A GHz de supporter un bus 133MHz et de passer le cap des 2GHz sans encombre. Le Pentium 4 reste cher en regard de ses performances mais l'arrivée de l'i845B0 remet Intel dans la course grâce à la prise en charge de la DDR266 bien plus abordable que la Rambus.

Le processeur continue son évolution. Une évolution qui peut être mise en parallèle avec celle du Pentium !!!. En effet, le Pentium 4 passe d'un bus 100MHz Quad Pumped à un bus à 133MHz (équivalent 533MHz). Le plus puissant des Pentium 4 Northwood culmine actuellement à 2,80GHz mais hormis son bus 533MHz, son die est identique à celui du Pentium 4 1,60A GHz sorti il y a plus d'un an.


Pourquoi deux processeurs ?

Une erreur fréquente des débutants en informatique est de croire qu'un système bi-processeur est deux fois plus performant qu'un seul processeur de même fréquence. En pratique, il n'en est rien. En effet, sans entrer dans les détails, un système bi-processeur utilise des "éléments partagés" entre les deux CPU. De plus, il ne suffit pas de disposer du hardware idoine pour que la couche logicielle en tire parti. Outre le fait que le système d'exploitation doit être capable de prendre en charge deux processeurs, l'application doit elle être capable d'exploiter cette puissance.
Les applications peuvent grosso modo être séparées en deux types : Des applications linéaires et des applications parallèles.

  • Une application de type linéaire a besoin d'un résultat pour passer à l'opération suivante. Ainsi, une application où le processeur doit additionner A + B pour connaître la valeur C ensuite ajouter D à C pour obtenir E et ainsi de suite est purement linéaire. L'emploi de deux processeurs ne permet nullement d'accélérer le traitement de manière significative.

  • Une application parallèle correspond généralement à des problèmes plus complexes. Dans le cas d'une partie d'échecs, il est nécessaire de calculer de nombreuses possibilités de mouvement de manière indépendante. Dans ce genre d'opérations, les gains d'un système multiprocesseurs sont impressionnants. Les plus anciens se souviennent sans aucun doute des parties d'échecs entre Deep Blue, un système multiprocesseurs conçu pour des traitements massivement parallèles, et Gary Kasparov, le champion du monde en titre.

    Le traitement en parallèle a donc malgré tout des limites. Dans un cadre plus concret, comme un jeu, le gain apporté par le SMP est très limité dans la mesure où la carte graphique est un frein important. Inversement, des applications de résonance moléculaire exploitent très bien cette technologie. Toutefois, la majorité des utilisateurs ne sont ni des Quakers fous ni des physiciens nucléaires… Ceci nous amène à une première conclusion importante : Le multiprocesseur offre des gains très variables en fonction des applications. Il faut également savoir qu'il est possible de paralléliser certaines applications afin de rendre leur traitement plus rapide en SMP mais d'autres problèmes sont inparallélisables.


    Les OS en point de mire…

    Du DOS à Windows XP, les choses ont largement évolué. En effet, les premiers OS étaient mono-tâche. A l'époque du bon vieux DOS, chaque programme occupait 100% du système et l'utilisateur devait attendre la fin d'une application pour en utiliser une seconde. Avec les premières générations de Windows, il est possible de lancer plusieurs tâches qui se partagent tant bien que mal les ressources. L'évolution des Windows NT porte directement sur le traitement multi-tâches et la gestion de plusieurs processeurs. Ces systèmes sont conçus pour gérer parfaitement différentes applications… Ainsi, un des processeurs peut assumer les fonctions de l'OS alors que le second peut se charger des applications.
    En informatique comme dans bon nombre de secteurs, les innovations du monde professionnel aboutissent un jour à l'utilisateur final… La majorité des ordinateurs actuels sont équipés de Windows XP. Qu'il s'agisse de la version Pro ou même de la Home, cet Os tient plus d'un système professionnel (dérivé des Windows New Technology) que d'un antique Windows 9x évolution ultime de Windows 3.0 !


    Applications et tâches

    Windows utilise des applications et ces applications font appel à des threads (tâches). La différence est ténue. Un exemple permet d'y voir plus clair que de grandes explications. Laurent lance Word et rédige une lettre. L'application qui fonctionne est le traitement de texte Word, mais ce dernier fait appel à des threads comme le correcteur orthographique qui vérifie les mots que Laurent tape ou l'affichage WISWIG de la page. Windows lui-même utilise des applications et des threads sans cesse. C'est ainsi que le système peut lire des fichiers MP3, vérifier périodiquement grâce à un client mail l'arrivée de messages, naviguer sur le net, imprimer des documents, et bien d'autres tâches "en même temps". En pratique, les différentes applications et les différents threads se succèdent dans le(s) processeur(s).


    Un ensemble qui ment très bien !

    Les différentes considérations que nous venons d'aborder de manière très sommaire sont nécessaires pour comprendre comment opère l'Hyper-Threading. L'utilisation du gestionnaire de tâches montre qu'un processeur peut travailler à 100%. En apparence seulement ! Si nous approchons du fonctionnement même du processeur, nous remarquerons que certaines de ces entités ne sont utilisées que de temps à autre. Il est ainsi possible que la FPU dorme toute une journée ou tout au moins se croise partiellement les bras lors d'une séquence de surf sur le net pendant laquelle l'ALU aura du pain sur la planche. A l'inverse, lors d'une partie de Quake III, la FPU n'aura pas le moindre répit. Même si le processeur affiche pleine charge, il peut très bien vous mentir : Certaines de ces entités sont au repos.


    L'Hyper-Threading

    L'Hyper-Threading consiste à faire travailler de manière optimale le processeur en évitant tant que possible de laisser des parties au repos. De par son pipeline long de 20 étages, le Pentium 4 ne peut se permettre d'erreurs sous peine d'avoir à le vider et entraîner de lourdes pertes de performances. Afin de le rentabiliser, il faut massivement faire appel à l'exécution "Out Of Order" (OOO). Il s'agit d'une technologie qui permet au processeur de traiter des opérations dans un ordre différent que celui proposé par le code du programme. Bien entendu, en fin de traitement, les résultats sont réordonnés. Pourtant, le Pentium 4 ne propose pas un rendement suffisant avec uniquement de l'out of order execution. Le principe de l'Hyper-Threading consiste donc à gaver le pipeline pour le rendre plus rentable. En pratique, il s'agit simplement de "fusionner" le flux de deux threads avant l'unité OOO. Ainsi, cette dernière peut organiser au mieux le travail du pipeline. Afin de pouvoir basculer facilement entre deux threads et de se comporter comme deux processeurs, les Pentium 4 Hyper-Threading sont capables de stocker deux états (sorte de cliché de l'état des registres du processeur) et de basculer rapidement entre les deux. Le système voit alors deux processeurs. A noter que le basculement entre deux threads est une opération très coûteuse en cycles sur un Pentium 4 classique.
    Les avantages et les inconvénients sautent tout naturellement aux yeux !
  • Dans le cas où deux threads font appel aux mêmes entités le gain est nul.
  • Avec "un seul thread" (ou une seule application), il ne peut y avoir de gain.
  • L'Hyper-Threading ne peut dégager la même puissance qu'un système bi-processeurs où chaque thread dispose de l'intégralité d'un processeur.
  • Si un thread est largement orienté FPU alors que le second fait essentiellement appel à l'ALU, le gain est important.
    A noter que l'implémentation de l'Hyper-Threading n'augmente la complexité du die que de 5% au grand maximum. En effet, toutes les unités ne sont pas dupliquées mais uniquement les buffers les précédant.


    Le graphe montre ce qui se produit avec un processeur Hyper-Threading. Cependant, nous pouvons le qualifier d'idyllique. En effet, le thread bleu et le thread jaune sont presque toujours cumulés. Dans la pratique, même avec l'Hyper-Threading activé, nous aurons droit à des barres uniquement bleues et à d'autres uniquement jaunes.


    Nous avons simplifié en 3 unités : ALU, FPU et S/L. Dans un processeur sans Hyper-Threading, les threads sont pris en charge l'un après l'autre. Dans un système bi-processeurs, chacun prend en charge un thread. Avec l'Hyper-Threading, les deux threads sont fusionnés avant le OOO, puis injectés dans le processeur après avoir été organisés de manière à optimiser l'emploi des ALU, FPU et S/L. Cet exemple un peu trop parfait montre que le Pentium 4 Hyper-Threading traite les deux threads avec un cycle de plus qu'un bi-Pentium 4… Dans la pratique, le gain obtenu par l'Hyper-Threading est limité à 40% (nous l'expliquerons avec l'analyse des performances).


    L'Hyper-Threading pour les nuls aussi…

    Beaucoup ont apprécié notre édito sur les MHz et les briques… Nous allons mettre notre maçon à la sauce Hyper-Threading ! Le maçon monte un mur avec des blocs de toutes les formes façon Tetris. L'apprenti (le thread) lui amène des blocs différents à chaque fois. Fort heureusement, le maçon sait conserver quelques blocs de réserve et les monter dans un ordre différent de celui de livraison (Out Of Order). L'Hyper-Threading consiste à travailler avec deux apprentis qui amènent en même temps des blocs différents. Ainsi, le maçon à plus de chances de trouver ceux dont il a besoin…


    Nous voyons clairement que les thread mauve et orange sont en swap continu. Sans Hyper-Threading, il n'y aurait que le thread jaune (ou mauve)... A noter que seuls les "Queue" et buffers sont dédoublés et propres à un tread, le reste est commun ! De manière très simplifiée, les deux treads arrivent chacun via leur queue dans le Register Renamer où les instructions sont envoyées dans les registres physiques du processeur. La partie "supérieure" est destinée aux Store/Load buffers tandis que l'autre se dirige vers les ALU et FPU. Dans les Schedulers, les différentes opérations à effectuer sont réorganisées afin d'optimiser le taux d'utilisation des entités. Les registres sont ensuite lus avant de passer à l'exécution proprement dite. Le cache L1 intervient largement à ce stade juste avant l'écriture des données et des buffers pour deux threads sont également présents à cet endroit capital. Dans la dernière phase, les registres sont réécrits puis réordonnées (Re-order buffer)...

    Installation

    La mise en œuvre du Pentium 4 Hyper-Threading est d'une simplicité déconcertante. Nous avons procédé à l'installation du Pentium 4 3,06GHz Hyper-Threading sur une Asus P4PE en remplacement d'un Pentium 4 classique. Après un passage dans le setup du bios pour activer l'Hyper-Threading, le système boot sans le moindre problème. Le Bios affiche clairement la présence de deux processeurs. Windows XP détecte la présence d'un second processeur et demande un redémarrage pour sa prise en charge. A noter que nous n'avons pas observé de différences de performances en installant le Service Pack qui n'est donc pas indispensable au fonctionnement de la technologie Hyper-Threading. Toutefois, ce dernier contient peut-être des optimisations au niveau de certains threads mais nous n'avons pu le mettre en évidence…


    Configuration de tests

    Une fois n'est pas coutume, nous avons réalisé les tests sur la système de démonstration livré par Intel (i850E + RDRAM 1066). Nous avons également réalisé des essais sur une P4PE... A noter que la carte mère de référence Intel était "underclockée" FSB de 132MHz alors que la P4PE travaillait avec un FSB de 135MHz.

    Matériel et drivers
  • Carte de référence Intel i850E
  • Intel Pentium 4 3,06GHz Hyper-Threading
  • 512Mo RDRAM PC1066
  • Seagate Barracuda IV 40Go ATA100
  • Ecran IIyama Vison Master 403 (synchronisation verticale toujours désactivée)
  • Leadtek Winfast A250 (Detonator 40.72)

    Logiciel
  • Windows XP français et Direct X 8a
  • Quake III + patch 1.29 1024x768x32 (tout à fond)
  • Gogo'n'Coda MP3 Encoder
  • Sandra Pro 2002 + SP1
  • ZD Content Creation, CPU Mark 99
  • 3D Mark 2001 SE (options par défaut)
  • Aquanox 1024x768x32 (options par défaut)


    Performances

    Nos benchs classiques ne permettent pas de mettre en avant les performances du Pentium 4 Hyper-Threading. Les scores sont identiques que la nouvelle technologie soit activée ou non. Seul Gogo'n'coda, l'encodage de MP3, est directement capable d'exploiter l'Hyper-Threading...


    Content Creation 2002

    De manière très étrange, le Content Creation 2002 est inférieur quand l'Hyper-Threading est activé. Il faut chercher la cause de ce problème dans un cas de figure assez particulier. En effet, les threads doivent se partager la mémoire cache du processeur. L'Hyper-Threading permet de stocker l'état du processeur pour deux threads mais lors du basculement, les données contenues dans le cache peuvent entrer en concurrence. Ainsi, si le Thread1 occupe 390ko dans le cache L2 et que le Thread2 occupe 400ko, il est impossible qu'ils cohabitent dans les 512ko. Le processeur doit donc faire appel à la mémoire centrale pour recharger les données, ce qui engendre une perte de temps importante et une dégradation des performances. A noter qu'un système SMP ne serait pas affecté de la sorte… Il n'est donc pas étonnant qu'Intel recommande au développeur de limiter à 256ko le volume de données à mettre en cache. Dans un même ordre d'idée, ceci explique également pourquoi Intel compte porter le cache L2 à 1024ko.


    Mesurer l'Hyper-Threading

    Pour illustrer les gains de l'Hyper-Threading, nous avons lancé deux benchs de front. Ainsi, un de nos premiers tests a porté sur l'exécution de deux CPU Mark 99 de front. Le Pentium 4 3,06GHz Hyper-Threading affiche deux brillants indices de 137 soit un total de 274. Sans Hyper-Threading, les scores sont respectivement de 136 et 64. A noter que le total atteint 200, à peu de chose près la même valeur que celle atteinte en lançant un seul CPU Mark 99. Le Pentium 4 Hyper-Threading peut en quelque sorte abattre 37% de travail supplémentaire… A noter que sur un système bi-processeurs, le lancement de deux CPU Mark 99 de front permet d'obtenir deux scores presque identiques comparables à celui atteint par le même processeur exécutant un seul CPU Mark 99. Grossièrement, nous pouvons ainsi admettre qu'un Pentium 4 3,06GHz affiche un indice de référence 1, qu'un bi-processeur Pentium 4 3,06GHz atteint presque 2 et que le Pentium 4 3,06GHz offre un indice de 1,4.

    Nous avons également procédé à un test beaucoup plus concret : Lancer une compression MP3 et un 3D Mark 2001 de front. Le verdict est alors sans appel ! Le Pentium 4 3,06GHz sans Hyper-Threading atteint un score de 6267 points et compresse les fichiers MP3 en 7,98x. Les chiffres n'illustrent par contre nullement un 3D Mark 2001 aux scènes très saccadées… Avec le Pentium 4 3,06GHz Hyper-Threading, le 3D Mark 2001 atteint 10173 points avec des animations parfaitement fluides et la compression audio se fait en 8,77x. A noter que le 3D Mark 2001 lancé seul offre un score de 13200 points avec ou sans Hyper-Threading. En mono tâche, la compression audio atteint 11x avec Hyper-Threading et 10,5x sans Hyper-Threading.

    Nous pouvons donc analyser les choses sous un autre angle. Laurent veut compresser un album audio et jouer à un jeu 3D. Avec un processeur classique, il doit jouer puis compresser son album ou l'inverse. Avec un processeur équipé de l'Hyper-Threading, Laurent peut compresser ses MP3 et jouer en même temps. Si Laurent comptait jouer 10 minutes à Quake III et "perdre" 10 minutes (temps approximatif pour la conversion d'un album) à compresser ses MP3, son PC devait tourner 20 minutes… Avec l'Hyper-Threading, Laurent peut jouer 10 minutes et compresser ses fichiers en même temps, soit un PC sous tension 10 minutes…

    L'intérêt est donc évident pour les utilisateurs habitués à faire plusieurs choses en même temps… Par contre, utiliser un Pentium 4 Hyper-Threading pour faire une tâche puis une seconde ne prodigue aucun intérêt !


    Hyper-overclocking

    Ceux qui ont déjà tenté un overclocking sur un système bi-processeurs se sont heurtés à la limitation imposée par le moins coopératif des deux CPU. Avec le Pentium 4 Hyper-Threading, les capacités d'overclocking des Northwood classiques sont toujours au rendez-vous. Nous avons atteint 3,30GHz sur une Asus P4PE soit un bus de 144MHz. Si ce score n'est pas aussi impressionnant que les +30% généralement obtenus par les modèles moins véloces, il ne faut pas perdre de vue que notre Pentium 4 3,06GHz Hyper-Threading est un exemplaire de pré-série…
    Le ventilateur fourni dans le kit de test d'Intel est d'un type nouveau. Il utilise un cylindre de cuivre sur lequel sont rapportées les ailettes. L'ensemble est surplombé par un ventilateur de très gros diamètre. Le système s'est révélé très bruyant, bien plus bruyant que les habituels HSF livrés avec les processeurs box. Lors de nos essais sur la P4PE, nous avons fait appel à un HSF classique qui s'en est très bien tiré… Espérons qu'Intel conserve son radiateur habituel !


    Conclusion

    Pour exploiter le Pentium 4 Hyper-Threading, il faudra au moins changer ses habitudes de travail. En effet, il faudra avoir le réflexe de faire plusieurs choses en même temps. Sans égaler les performances que pourrait offrir un vrai système bi-processeurs, l'Hyper-Threading offre un gain appréciable à moindre coût. De manière imagée, nous pourrions considérer que le Pentium 4 3,06GHz est une voiture dont les 100cv permettent d'atteindre 200km/h sur le plat et que le Pentium 4 3,06GHz Hyper-Threading est une voiture dont la puissance permet de conserver cette vitesse de pointe dans une côte…

    Pentium 4 3,06GHz Hyper-Threading : 8/10
    Pour :
    Souplesse, puissance, mise en oeuvre simple
    Contre : Prix, pas de gain systématique.
  • Mise à jour le Mardi, 10 Novembre 2009 20:23