Test : Intel Pentium 4 3,06GHz Hyper-Threading
Par Pascal Thévenier
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.

par James-Kiwi
|