Next: Remerciements Up: Les microprocesseurs xxx86 Previous: Les compatibles Pentium

Le processeur Intel P6

Dernier processeur annoncé par Intel, le P6 dépasse largement les performances de ses prédécesseurs. Il utilise pour cela des techniques déjà mises en oeuvre par ses concurrents tels que le K5 d'AMD ou le M1 de Cyrix. Les instructions xxx86 sont traduites dans un premier temps en << micro-instructions >>, puis exécutées sur une architecture superscalaire découplée utilisant les techniques de renommage de registres et d'exécution dans le désordre.

Par ailleurs, ce processeur implémente un nouveau bus système qui supporte jusqu'à quatre processeurs P6 sans logique de contrôle supplémentaire. Ces caractéristiques le rendent particulièrement attrayant pour les serveurs ainsi que les PC haut de gamme.
À la différence du Pentium qui s'affiche dans la continuité du 486, le P6 traduit une profonde évolution du coeur de l'architecture. La structure du pipeline est divisée en deux parties : l'une traitant les instructions de manière ordonnée, l'autre au contraire pouvant les exécuter dans le désordre (tampon de réordonnancement et unités d'exécution fonctionnelles). Cette architecture est comparable à celle du K5.

Une approche ROP.

Les instructions sont chargées à partir du cache d'instructions de 8 Ko (identique à celui du Pentium) dans une file (Instruction byte queue) au rythme de 16 octets à chaque cycle (la taille maximale d'une instruction xxx86 étant de 15 octets). Cette file alimente directement trois décodeurs qui assurent la traduction des instructions xxx86 en << micro-instructions >>. Le premier de ces décodeurs gèrent l'ensemble des instructions xxx86, les deux autres étant restreints aux instructions << plus simples >> (de type registre-registre). De ce fait, jusqu'à trois instructions au maximum peuvent être décodées à chaque cycle, le décodage s'effectuant toujours dans l'ordre. Dans le cas d'instructions complexes, telles que des manipulations de chaînes, les micro-instructions sont générées par un séquenceur (schéma similaire à celui du K5). Le décodeur général peut générer jusqu'à quatre micro-instructions à chaque cycle (une opération de calcul avec un opérande en mémoire pouvant être convertie en une opération de lecture, calcul, écriture), alors que les deux autres décodeurs ne génèrent qu'une opération. La moyenne, selon Intel, serait de 1.5-2.0 micro-instructions par instruction xxx86.

Le pipeline.

Ces micro-instructions transitent ensuite par un tampon de réordonnancement de 40 entrées. Ce tampon comprend une table d'alias de registres qui permet de mettre en oeuvre le mécanisme de renommage ainsi que le banc de registres. Ces 40 entrées sont utilisées par le mécanisme de renommage pour mettre en correspondance les registres entiers et flottants. Dans ce dernier cas, l'instruction FXCH (permute deux registres flottants) couramment utilisée ne dépasse pas cette étape, dans la mesure où elle correspond simplement à une mise à jour des alias.

Jusqu'à trois micro-instructions sont prises en compte par le tampon de réordonnancement à chaque cycle. Celles-ci sont envoyées vers une station de réservation de 20 entrées où elles attendent la disponibilité de leurs opérandes. Le tampon de réordonnancement a une capacité supérieure dans la mesure où il conserve des instructions déjà exécutées mais non encore validées (c'est à dire qu'il existe des instructions antérieures non encore achevées).

À chaque cycle, jusqu'à quatre micro-opérations dont deux instructions de calcul, une lecture ainsi qu'une écriture (en fait, séquence de deux micro-instructions : calcul d'une adresse et écriture de la donnée dans le tampon d'accès à la mémoire) peuvent être extraites de la station de réservation.

Du fait du nombre limité de ports de la station de réservation, ainsi que de part la nature des unités d'exécution, le P6 implémente un ensemble de priorités concernant l'émission des instructions.

L'unité arithmétique principale inclut une unité flottante ainsi qu'une unité arithmétique complète (ALU, décaleur, multiplieur, diviseur). Une seconde unité permet d'effectuer des calculs entiers simples (pas de division, ni de multiplication ou de décalage) ou des calculs d'adresses de branchements cibles.

Les deux unités de calcul d'adresses utilisées par les instructions de lecture et d'écriture contiennent chacune un additionneur à quatre entrées qui permet de prendre en compte toutes les combinaisons de l'adressage xxx86 (segment, base, index et immédiat) en un seul cycle. De même que dans le Pentium, un deuxième additionneur à deux entrées permet d'effectuer les tests relatifs aux limites de segments en parallèle. L'adresse résultante est alors placée dans un tampon de réordonnancement mémoire en attendant la disponibilité de l'opérande.

Le tampon de réordonnancement peut accepter trois résultats à chaque cycle : deux provenant de chacune des unités arithmétiques, le troisième issu d'une instruction de lecture. Dès lors que l'instruction a inscrit son résultat dans le tampon de réordonnancement, celle ci peut en être extraite (si le flot d'instructions est confirmé). Jusqu'à trois instructions peuvent être retirées de ce tampon à chaque cycle afin de mettre à jour le banc de registres. Ces extractions s'effectuent toujours dans l'ordre.

Un pipeline très long.

L'une des particularités de ce processeur est la profondeur de son pipeline (voir figure ) : douze étages. Annoncé à la fréquence de 150 et 167 MHz, la structure de ce pipeline lui permettra vraisemblablement d'atteindre des fréquences de fonctionnement bien supérieures.

L'un des principaux inconvénients d'un pipeline aussi profond est la pénalité liée à une mauvaise prédiction de branchement qui est sur ce processeur d'au minimum onze cycles. Aussi, le P6 se doit d'avoir un mécanisme de prédiction de branchements particulièrement performant. Il utilise pour cela un BTB de 512 entrées associatif par ensemble à quatre voies. Contrairement à la plupart des processeurs, le P6 n'utilise pas le traditionnel algorithme de Smith à deux bits mais fait appel à un algorithme plus récent, celui de Yeh and Patt ([13]) qui met en oeuvre un algorithme de prédiction adaptatif à deux niveaux. Ce dernier devrait fournir un taux de prédiction supérieur à celui atteint par les processeurs d'aujourd'hui.

Dans le cas où un branchement serait lui-même absent du BTB, une prédiction statique est alors utilisée (branchement prédit pris si déplacement négatif). Par ailleurs, autre particularité de ce processeur, bien que le jeu d'instructions soit similaire au Pentium et à ses prédécesseurs, le P6 introduit des instructions de déplacement conditionnel (CMOV) qui contribuent à diminuer le taux de mauvaises prédictions de branchement en remplaçant la séquence de << test-et-branchement >> (pas de compatibilité descendante !).

Hiérarchie mémoire.

Le processeur P6 implémente une hiérarchie de caches particulièrement performante. En plus du cache d'instructions de 8 Ko déjà mentionné, le P6 implémente un cache de données de même taille associatif par ensemble à deux voies. Ces caches relativement petits sont secondés par un cache externe de 256 Ko, associatif par ensemble à quatre voies. Un tampon de réordonnancement des accès vers la mémoire contribue à l'efficacité de cette hiérarchie. Il est à noter que le P6 ne permet qu'un accès en lecture à chaque cycle. Les deux niveaux de cache utilisés sont non-bloquants et pipelinés sur trois cycles. Le P6 est le premier des processeurs Intel à fournir un contrôleur interne pour le deuxième niveau de cache, ainsi qu'un bus de 64 bits dédié à ces transferts.

Les caches primaires d'instructions et de données sont virtuellement adressés mais physiquement testés, le cache secondaire étant quant à lui physiquement adressé et testé. Deux TLB d'instructions et de données (32 et 64 entrées) totalement associatifs fournissent les traductions d'adresses.

Technologie.

Le P6 sera réalisé en technologie BiCMOS à quatre couches de métal et à 0.5 m. Il devrait être conditionné sous la forme d'un module à deux cavités (CPU et cache secondaire). Bien que ce processeur inclut 5.5 millions de transistors, un nombre sensiblement identique à celui du MIPS R10000 (5.9 millions), le niveau de complexité de cette architecture nécessite pratiquement le double de transistors de logique (4.5 millions contre 2.3 millions). Les performances attendues de ce processeur sont de l'ordre de 200 SPECint92 et SPECfp92.



Next: Remerciements Up: Les microprocesseurs xxx86 Previous: Les compatibles Pentium


flloansi@IRISA.irisa.fr
Fri Jun 7 11:05:24 MET DST 1996