Les processeurs

De tous les éléments d'un ordinateur, le processeur central est certainement le plus connu et à juste titre. En effet, dans les premiers systèmes, toutes les tâches lui incombaient : traitement des données, calcul de l'affichage, etc. Aujourd'hui, le processeur central peut compter sur d'autres éléments pour le décharger : les cartes accélératrices 3D, des chipsets efficaces, des cartes sonores évoluées et bien d'autres. Il reste cependant le véritable centre de calcul de la machine. Pour définir un processeur, il faut introduire plusieurs caractéristiques techniques comme l'architecture interne, la fréquence, les jeux d'instructions, les pipelines, la fréquence, la largeur de bus, le type de bus, etc. Si de nombreux facteurs peuvent différencier des processeurs, certains éléments restent totalement identiques comme le procédé de fabrication, la présence de mémoire cache, les unités logiques, …

Points communs

Les processeurs sont un assemblage de transistors (actuellement ~50 millions) dont une grande partie est utilisée pour composer le cache L2 (~14 millions pour 256ko de cache). Une fois le cache L2 retiré, il reste seulement 20 à 27 millions de transistors desquels il faut encore retirer le cache L1 (dont la taille varie de 32ko à 128ko). Au final, un processeur compte de 20 à 25 millions de transistors regroupés en différentes unités.

·  ALU (Arthmetic & logic Unit) réalise tous les calculs simples et se charge de la gestion des tests conditionnels. Il s'agit de la partie qui "fait tourner" les programmes.

·  FPU (Floating Point Unit) est destiné aux calculs intensifs sur les nombres réels et complexes. La FPU est mise à rude épreuve par les jeux 3D.

·  AGU (Address Generation Unit) sert à l'adressage des données dans la mémoire.

·  OOO (Out of order) en complément avec l'unité de prefetch permet de modifier l'ordre d'envoi des informations au processeur.

·  Buffers sont des zones de mémoire tampon où les données en cours de traitement sont logées temporairement.

·  Re-Order comme son nom l'indique, replace les données dans l'ordre.

·  Contrôleur I/O pour gérer les échanges de données avec l'extérieur.

Fonctionnement

Le processeur reçoit les données et les instructions via la mémoire centrale après un transit dans les cache L2 et L1. Les données et instructions les plus utilisées sont conservées dans le cache le plus proche et le plus rapide (L1). Quand celui-ci est plein, le contrôleur déplace le surplus vers le cache L2 puis vers la mémoire centrale. A noter que les instructions et les données sont séparées dans le cache L1 ce qui n'est pas le cas dans le cache L2 ni dans la mémoire centrale.

Les instructions sont traduites en un microcode. Elles passent dans l'unité OOO où elles sont réordonnées de manière optimale pour l'architecture interne du processeur afin de traiter les données plus rapidement. L'unité de prefetch vise à préparer au mieux les prochaines informations dont le processeur aura besoin. Dans ce qui porte le nom de pipeline, les instructions sont appliquées aux données. Durant ces traitements, il s'effectue des opérations qui font appel à la FPU, à l'ALU et à l'AGU. Les données sont écrites et lues dans des buffers. En fin de pipeline, il faut tout remettre dans l'ordre initial.

…
D = A x E – A x F (entiers)
A = B + C (entiers)
Z = tan X (flottants)
…

Dans cet exemple, les unité de pretech et OOO vont se rendre compte qu'il est préférable de traiter A = B + C en premier lieu, A étant nécessaire par la suite. Le processeur réalisera le calcul B + C éventuellement C + B si cette façon lui convient mieux et placera le résultat A dans le registre de sortie et dans le cache L1. Au second traitement qui vise à calculer D, l'unité OOO modifiera éventuellement A x E – A x F en A x (E – F) ou en (E – F) x A selon sa meilleur convenance. Il traitera ensuit Z = tan X qui n'a aucune dépendance avec les deux autres opérations. Notre processeur a calculé A, D et Z, ce qui n'est pas l'ordre attendu. L'unité Re-Order se charge de remettre les données dans l'ordre D, A, Z.

En pratique, les choses sont plus complexes. La simple instruction ADD demande cinq opération : chargement opérante 1, chargement opérante 2, envoi à l'unité de calcul, addition proprement dite, stockage de résultat.

Rendement ou vitesse ?

La puissance de calcul peut être assimilée au produit de la fréquence et du nombre d'instructions traitées par cycle. Pour rendre un processeur plus performant, il existe donc deux options : augmenter la fréquence ou traiter plus de données par cycle. Le pipeline du processeur est comparable à une chaîne de montage dans une usine. Pour que la chaîne puisse fonctionner rapidement, chacune des opérations doit être simple quitte à mettre plus de ''postes''. Dans l'assemblage d'une voiture, imaginons qu'il faut fixer les quatre roues.

·  Une approche consiste à placer quatre robots simples l'un derrière l'autre qui fixent chacun une roue. Chaque robot réalisant une tâche plus simple, il peut aller vite. Chaque opération est rapide et élémentaire.

·  Une autre vision des choses est l'emploi d'un robot plus complexe capable de fixer tour à tour les quatre roues. L'opération est plus longue et plus complexe.
Dans un processeur, la démarche est identique. En simplifiant les étapes, il est possible de monter en fréquence. Intel a choisi un pipeline long de 20 étages pour son Pentum 4 alors qu'AMD en utilise 10 pour les Athlon XP.

Jeux d'instructions

MMX, SSE, SSE2, 3Dnow! sont des jeux d'instructions qui viennent compléter le set x86. Ils ont tous le même but : accélérer certains calculs. Si le programme a été écrit de manière à faire appel à un de ces sets d'instructions, le processeur peut gagner de très nombreux cycles de calcul par rapport à un codage classique. AMD et Intel éditent donc des manuels et des compilateurs de manière à tenir compte de MMX, SSE, SSE2 ou 3Dnow! Le MMX bien que présent dans les processeurs actuels n'est pas réellement exploitable car trop limité. Le set 3Dnow! d'AMD a été développé pour pallier la faible FPU des AMD K6-2 et K6-III. Le SSE est par contre plus fonctionnel et largement utilisé. Il est présent dans les processeurs Intel (à partir du Pentium !!!) et AMD (depuis le Toroughbred). Le SSE2 a été inauguré par le Pentium 4 et AMD l'utilise également dans ses processeurs 64bits.

Mémoire cache

Les gros caches L2 sont à la mode ! Nous l'avons vu, cette mémoire intervient de manière considérable dans le nombre de transistors et donc dans la taille du processeur. Les gains ne sont par contre pas toujours ceux attendus. En effet, toutes les architectures de processeurs ne sont pas capables d'en tirer le même parti. Le Pentium 4 a été conçu pour fonctionner avec une très large bande passante ce qui est loin d'être le cas de l'Athlon XP. Du coup, les performances d'un Pentium 4 équipé de 512ko de cache sont de 5 à 15% plus élevées que celles d'un modèle limité à 256Ko. Dans le cas de l'Athlon XP, les gains apportés par les 256ko complémentaires se limitent à un maximum de 5%. Le Pentium 4 EE dispose d'un cache supplémentaire (L3 de 2Mo) qui lui permet d'être à nouveau 5 à 10% plus rapide qu'un modèle standard. Intel se prépare à passer le cache L2 du Pentium 4 de 512ko à 1024ko. Dans le même registre, celui du Pentium-m devrait doubler et atteindre 2Mo. AMD exploite 1Mo de cache pour ses processeurs 64bits.

Gravure

Les processeurs sont tous gravés sur des galettes de silicium par un procédé chimique, la photolithographie. Au cours de ce processus, la galette est chauffée puis oxydée par de l'oxygène pur pour obtenir une couche oxyde de silicium (de la ''rouille''). Ensuite une couche de vernis photosensible est déposée. Cette dernière est sensible aux rayons ultraviolets qui sont capables de la dissoudre. Un masque qui forme le dessin des circuits à reproduire est alors placé au dessus de la galette de silicium. L'ensemble est exposé à des rayons ultraviolets qui marquent leur empreinte sur le vernis photosensible. Il reste à présent à éliminer la couche d'oxyde de silicium en plongeant le tout dans un bain chimique. Le vernis est retiré avec un solvant et le circuit est alors formé par la couche d'oxyde de silicium.
Les galettes de silicium ont un diamètre de 200 ou 300mm. Le core du processeur est carré ou rectangulaire, plus il est petit, plus il est possible d'en disposer sur la galette et plus une opération de gravure est rentable.
En outre, graver un processeur plus finement permet de :

·  Réduire les coûts de production.

·  Ajouter des éléments (plus gros cache).

·  Réduire la chaleur dissipée.

·  Atteindre de plus hautes fréquences.
A titre d'exemple, un Pentium 4 Willamette avec 256ko de cache gravé en .18µ occupe 217mm² alors qu'un modèle Northwood (512Ko .13µ) n'occupe que 131mm². Une galette de 300mm supportera ainsi ~1.6x plus de processeur .13µ avec 512Ko que de .18µ avec seulement 256ko…

Limitations

Il suffit donc de faire un processeur avec un pipeline pas très long (haut rendement), utiliser une haute fréquence et graver le tout très petit en ajoutant beaucoup de cache et des jeux d'instructions, non ? Ce serait trop simple et des limitations technologiques sont présentes. Pour monter en fréquence, il faut un pipeline long comme le Pentium 4. Corollaire d'un pipeline long : la moindre erreur est coûteuse en cycles perdus. Il suffit de revoir notre chaîne d'assemblage. Si un des 4 robots est déréglé et monte mal la roue, il faut vider la chaîne de 4 voitures… Un pipeline à haut rendement comme dans le Pentium-m ou dans les Athlon XP montre des limites à plus basse fréquence. La solution est de passer à une nouvelle finesse de gravure pour atteindre de nouvelles fréquences, jusqu'à atteindre les limites de l'architecture (Athlon XP par exemple) Pour une architecture, il existe une fréquence maximale au delà de laquelle il n'est plus nécessaire voir impossible ou inutile d'aller. Les limitations peuvent être de différents ordres : thermique (chauffe), rentabilité (trop coûteux), rendement (la performances plafonnent).

Il faut alors introduire une nouvelle architecture, ajouter de nouveaux jeux d'instructions, etc.

Aller plus vite

Il existe heureusement des solutions pour aller plus vite. Par exemple l'optimisation de l'unité de prédiction de branchement. Les programmes contiennent de nombreux tests conditionnels de type IF THEN ELSE. Le processeur analyse les dernières réponses et via des algorithmes tente de deviner la réponse avant d'arriver au test. Le succès est de l'ordre de 95%. En cas d'erreur, il faut vider le pipeline puis le recharger et la perte en cycle est d'autant plus longue que le pipeline est long…

L'optimisation du pipeline par la technologie HyperThreading est très intéressant mais uniquement dans le cas du Pentium 4 où Intel profite du faible rendement pour injecter un second traitement dans le pipeline. Dans notre exemple simpliste, le Pentium 4 HT se rendra compte que A = B + C ne demande pas de faire appel aux mêmes unités que Z = tan X. Il les fera donc passer en même temps de sorte que B + C passe dans l'ALU et tan X soit traité par la FPU.

AMD voit les choses autrement en intégrant le contrôleur mémoire dans le processeur pour réduire les temps de latence. L'architecture 64bits introduite par AMD n'apporte actuellement pas grand chose d'utile : mémoire adressable de 256To, traitement des entiers beaucoup plus grands avec simplicité. Cependant, l'approche 32/64bits d'AMD est intéressante par sa souplesse : performances conservées en 32bits support software 32/64bits.

Overclocking

Un processeur issu d'une nouvelle technologie de gravure présente de bonnes aptitudes à l'overclocking une fois que le fondeur maîtrise la nouvelle technologie. Ceci est particulièrement vrai quand l'architecture du processeur est identique et que la gravure est plus fine : Athlon XP .18µ vers .13µ ou Pentium 4 .18µ vers .13µ ou bientôt vers .09µ. Nous avons ainsi droit à des Barton 2500+ qui passent en 3200+, à des Pentium 4 2.4C GHz qui grimpent à plus de 3.4GHz. Par contre, le manque de maturité d'une architecture nouvelle comme celle de l'Athlon 64 réduit ses possibilités en overclocking. Quand AMD maîtrisera mieux le procédé de fabrication, le potentiel d'overclocking sera meilleur.
A noter que constructeurs comme overclockers connaissent l'astuce qui consiste à augmenter le voltage pour monter en fréquence. Le rapport signal/bruit est meilleur et des plus hautes fréquences sont supportées. Il n'est pas rare de voir un processeur hautes fréquences introduit avec un voltage un rien plus élevé que ses prédécesseurs.

Les processeurs actuels

AMD

·  Les nouveaux Athlon supportant le 64bits sont divisés en deux familles : Athlon FX-51 et Athlon 64 3200+. Leurs principales innovations sont le cache L2 de 1024Ko, la présence du contrôleur mémoire dans le processeur et bien entendu les instructions 64bits (AMD64 ISA). Le modèle FX-51 encore peu disponible offre des performances supérieures à l'Athlon 64 3200+ car il dispose de deux contrôleurs de mémoire. L'Athlon 64 3200+ utilise un Socket 754 alors que l'Athlon FX-51 a besoin d'un Socket 940. L'architecture AMD 64 ISA est encore jeune et risque d'évoluer assez rapidement et les applications 64bits ne sont pas encore disponibles.

·  Les Athlon XP sont certainement les processeurs les plus populaires grâce à leur excellent rapport prix/performances. Ils exploitent le Socket 462 (ou Socket A) qui existe déjà depuis pas mal de temps et qui est donc parfaitement rodé.

·  Les AMD Duron sont des processeurs économiques qui exploitent le même Socket A que les Athlon XP. Ils offrent des performances très correctes compte tenu de leur prix.

Intel

·  Le Pentium 4 Extreme Edition est un Pentium 4 3.2GHz équipé d'une mémoire cache de 2Mo en niveau L3. Il entre en concurrence directe avec l'Athlon FX-51 en termes de prix et de performances. Aussi rare que cher !

·  Les Pentium 4 ''C'' bénéficient de la Technologie HyperThreading et un FSB 200MHz. Associés à de la mémoire DDR400 en double canal, ils sont très performants et constituent un bon choix pour une nouvelle configuration hautes performances.

·  Les Pentium 4 ''B'' exploitent un FSB à 133MHz et ne supportent pas l'HyperThreading. Ils entrent en concurrence directe avec les Athlon XP mais présentent un rapport prix/performances moins avantageux.

·  Les Celeron sont des processeurs d'entrée de gamme. Malgré leur très hautes fréquences, leur petite mémoire cache L2 (128Ko) bride fortement leurs prestations et le rapport prix/performance n'est pas aussi intéressant que celui du Duron.

Les performances

Nous avons repris les principaux processeurs afin d'en comparer les performances. L'indice de 100 correspond aux performances d'un Pentium !!! 1000MHz ou d'un Athlon 1000MHz.

Les meilleurs choix

·  Puissance pure : Pentium 4 HT 3,20GHz, Athlon 64 3200+ ou Athlon FX-51 ou Athlon XP 3200+

·  Le bon équilibre : Intel Pentium 4 2,80C GHz ou Athlon XP 2800+

·  Maître achat : Athlon XP 2500+

·  Petit budget : Athlon XP 2000+ ou Duron 1.6GHz

·  A éviter : Les Celeron 478