Microprocesseur PowerPC 750

Transcription

Microprocesseur PowerPC 750
Ecole Polytechnique
Electronique, composants & systèmes
Microprocesseur
PowerPC 750
Guillaume Rincé
X96 – 2ème Cie
I L’évolution du PowerPC
Les processeurs PowerPC sont apparus en 1993. Ils sont développés par IBM et par
Motorola sous licence IBM. Auparavant, les processeurs des ordinateurs grand public étaient
tous de type CISC, que ce soient ceux d’Intel pour le monde PC ou ceux de Motorola pour le
monde Apple. Le PowerPC 601 est le premier processeur RISC à tourner dans un ordinateur
de ce type, il vient remplacer la fameuse famille des 68000 qui tournait au cœ ur des premiers
Macintosh.
L’évolution de la famille PowerPC va se faire ensuite en étroite collaboration entre
IBM, Motorola et Apple. Actuellement, le PowerPC 750 ou PowerPC G3 est la dernière
évolution fruit de cette collaboration.
L’accroissement des performances est la conséquence directe de cette alliance. Non
seulement, le processeur a été amélioré de manière intrinsèque, mais en outre, son intégration
a été facilitée par la coopération des trois entreprises. MacOS, le système d’exploitation
d’Apple est optimisé pour le PowerPC et le PowerPC lui-même est optimisé pour MacOS. Le
design externe de l’architecture PowerPC a été amélioré en particulier par une augmentation
des vitesses des bus. L’ensemble forme maintenant un ensemble à la fois cohérent et
performant.
La carte mère ci-dessous, celle de la première génération de PowerMac G3 d’Apple
est un exemple de cette intégration.
2
Il y a quelques semaines, ce design a encore été amélioré afin d’intégrer tous les
nouveaux standards, USB, FireWire. Parallèlement à ces modifications externes, le PowerPC
750 a lui aussi évolué. IBM a en effet atteint la fréquence de 400 MHz pour ses G3, et ce
grâce à une révolution technologique, la technologie CMOS 7S qui consiste à remplacer
l’aluminium par du cuivre.
Toutes ces évolutions techniques se traduisent en termes de performances et font du
PowerPC G3 l’un des tout meilleur processeur du marché.
3
Ce haut niveau de performance est le résultat d’une technologie avancée et complexe,
6,35 millions de transistors avec une technologie cuivre actuelle de 0,22 µm.
4
II Analyse
processeur
du
diagramme
de
fonctionnement
du
5
II.1 « Instruction Queue » & « Dispatch Unit »
L’ « instruction queue » (IQ) peut contenir jusqu’à six instructions. Elle peut
renouveler jusqu’à quatre instructions par cycles d’horloge. Le « fetcher » charge de
nouvelles instructions dans l’IQ dès qu’une place est vacante. Toutes les instructions sont
réparties par la « Dispatch Unit » mis à part les branchements qui sont traités par la « Branch
Processing Unit » (BPU). A chaque cycle d’horloge, les deux instructions du bas de la file
(IQ0 et IQ1) peuvent être réparties. Les branchements sont traités et envoyés vers le BPU
quelles que soient leurs positions dans la file IQ.
II.2 « Completion Unit »
« Completion Unit » (CU) travaille en relation avec l’ « Instruction Unit » (IU). Les
instructions sont réparties dans l’ordre défini par le programme. Cet ordre est maintenu par
l’affectation d’une entrée dans la CU à chaque instruction. Une fois exécutées, ces
instructions sont retirées dans l’ordre maintenu par la CU. La CU peut retirer les deux
dernières instructions (c’est-à-dire les instructions correspondant aux entrées CQ0 et CQ1 de
la « Completion Unit ») à chaque cycle d’horloge. Aucune instruction ne peut être acheminée
par la DU tant qu’il n’y a pas de entrée libre dans la CU.
II.3 « Integer Units »
Les deux « Integer Units », IU1 et IU2, ne sont pas identiques. IU1 peut exécuter
toutes les instructions entières. IU2 peut exécuter toutes les instructions entières, sauf les
instructions multiplication et division. Les deux unités sont indépendantes, elles ont chacune
une entrée distincte (« Reservation Station »). Une IU reçoit les instructions de la « Dispatch
Unit » (DU) et les opérandes du GPR ou de l’un des buffers (« Rename Buffers »).
Chaque IU est constitué de trois sous-unités :
1. Un additionneur / comparateur rapide
2. Une sous-unité dédiée aux opérations logiques
3. Une sous-unité pour les opérations « rotate », « shift », …
Seule une sous-unité peut exécuter une instruction à un instant donné. La spécificité de
l’IU1 est de posséder un multiplicateur / diviseur entier 32 bits. Ce multiplicateur peut sortir
rapidement au cas où l’opération ne nécessiterait pas une vraie multiplication 32 x 32 bits.
Chaque IU a en sortie un bus dédié (non représenté sur le diagramme) relié aux
« Rename Buffers ».
II.4 « Floating-Point Unit »
La FPU est conçue de manière qu’une opération de précision simple soit effectuée en
une seule fois sur trois cycles d’horloge. Les instructions sont amenées par la DU dans la
« Reservation Station » de la FPU et les opérandes proviennent du « FPR File » ou des « FPR
6
Rename Buffers ». Les résultats sont stockés dans le « Rename Buffer » et sont ainsi
accessibles aux instructions suivantes.
La FPU est formée d’un multiplicateur / additionneur de précision simple et d’un
registre de contrôle de l’état de l’unité (« Floating-Point Status and Control Register » FPSCR).
II.5 « Load/Store Unit »
La LSU exécute toutes les instructions de type chargement et stockage. Elle gère les
transferts de données entre les GPR et les FPR. La LSU peut stocker au maximum une
instruction par cycle dans sa file (« Store Queue ») et une instruction tous les trois cycles dans
la cache L1. Le temps nécessaire à ces opérations dépend du ratio fréquence du processeur sur
fréquence du bus de cache L2, ainsi que des différentes mémoires impliquées, L1, L2, …
II.6 « Memory Management Unit »
La MMU supporte jusqu’à 4 petabytes (252) de mémoire virtuelle et jusqu’à 4
gigabytes (232) de mémoire physique. La MMU traduit les adresses effectives générées par les
autres unités, en particulier la LSU, en adresses physiques.
La MMU traduit les bits de poids fort de l’adresse effective en bits d’adresses
physiques. Les bits de poids faible sont dirigés dans la cache L1 où ils forment un index.
Ensuite, la MMU envoie les bits de poids fort de l’adresse physique dans la cache.
II.7 Caches d’instructions et de données de niveau 1 (on chip)
Les caches internes (« on chip ») d’instructions et de données sont séparées à
l’intérieur du processeur. Comme le définit l’architecture PowerPC, elles sont indexées
physiquement. Chaque bloc de la cache contient huit mots contigus de la mémoire. Lors d’un
chargement, la cache reste accessible aux demandes internes. L’organisation de la cache est
décrite dans le schéma suivant.
7
A chaque cycle d’horloge, la LSU peut accéder à deux mots de la cache de données.
Lors d’un renouvellement, la LSU est bloquée pour un cycle d’horloge pour que le bloc de
huit mots puisse être copié.
II.8 La cache de niveau 2
La cache de niveau 2 est unifiée, elle dialogue aussi bien avec la cache d’instructions
L1 qu’avec la cache de données L1. La cache L2 communique d’un autre côté avec jusqu’à
1 Mbyte de mémoire synchrone SRAM.
Suivant sa taille, la cache L2 est organisée en lignes de 64 ou 128 bytes qui sont
divisées en blocs de 32 bytes. Le contrôleur de la cache L2 dispose d’un registre « L2 Cache
Control Register » (L2CR) qui permet de définir le ratio fréquence du bus dédié à la cache L2
sur fréquence du processeur, d’identifier le type de RAM utilisé pour la cache L2, …
Les requêtes de la cache L1 sont principalement des instructions ou des chargements /
stockages de données. Si la cache L2 peut répondre, elle le fait, sinon, elle oriente la requête
vers le bus interface où se trouve la réponse à la requête.
II.8 Les bus d’adresses et de données
Les bus d’adresses et de données fonctionnent de manière indépendante afin de rendre
plus souple la gestion du trafic mémoire. L’activité première du « Bus Interface Unit » (BIU)
est de transférer les données entre le processeur et la mémoire. Il y a deux types d’accès
mémoire :
4. « Single-beat transfer » : ces accès mémoire autorisent des transferts de 8, 16, 24,
32 ou 64 bits en un seul cycle d’horloge. Ce mode d’accès se produit à cause
d’opérations de lecture / écriture directes en mémoire qui surviennent lorsque la
fonction de cache est désactivée.
5. « Four-beat burst (32 bytes) data transfers » : Ce type de transfert correspond au
transfert d’un bloc de cache entier (32 bytes). Il s’agit du mode de transfert le plus
courant puisque le processeur est doté d’une cache L1.
Le PowerPC 750 optimise de manière dynamique les opérations de lecture / écriture
afin d’améliorer les performances globales. Les signaux du 750 sont regroupés comme
l’explique le schéma suivant.
8
1. « Adress Arbitration » : ces signaux sont utilisés pour gérer la propriété du bus
d’adresses
2. « Adress start » : ces signaux signifient qu’un propriétaire du bus a commencé une
transaction
3. « Adress transfer » : ces signaux sont utilisés pour transférer une adresse et pour
s’assurer du succès du transfert
4. « Transfer attribute » : ces signaux donnent des informations sur le type de
transfert, comme la taille du transfert, le mode de transfert …
5. « Adress termination » : ces signaux sont utilisés pour indiquer la fin de la phase
adresse d’une transaction ou bien pour dire que la phase adresse doit être répéter.
6. « Data arbitration » : ces signaux sont utilisés pour gérer la propriété du bus de
données
7. « Data transfer » : ces signaux sont utilisés pour transférer les données adresse et
pour s’assurer du succès du transfert
8. « Data termination » : ces signaux marquent la fin de chaque transfert de données
9. « L2 cache clock / control » : ces signaux permettent le contrôle de l’horloge de la
cache L2
10. « L2 cache adress/data » : le 750 a un bus d’adresses et un bus de données séparées
11. « Interrupt » : ces signaux comprennent :
1. « Interrupt »
2. « Checkstop »
3. « Soft Reset »
4. « Hard Reset »
Ces signaux sont utilisés afin de faire un reset du processeur
• « Processor status / control » : ces signaux sont utilisés pour gérer et contrôler le
processeur
• « Clock signals » : ces signaux déterminent la fréquence d’horloge du processeur
et peuvent aussi servir à synchroniser un système multiprocesseur
9
Les détails des signaux du PowerPC 750 sont indiqués sur le schéma suivant.
10
II.9 L’horloge
Le 750 possède une unique entrée pour le signal d’horloge, SYSCLK, qui représente
la fréquence du bus interface. A l’intérieur du processeur, un circuit génère une autre horloge
multipliée en fréquence, mais en phase avec SYSCLK. Cette fréquence est utilisée pour les
opérations internes au processeur.
Le signal PLL_CFG[0-3] permet de définir le rapport entre fréquence du bus et
fréquence du processeur.
11
III. Implémentation du PowerPC 750
III.1 Les registres
L’architecture PowerPC définit des opérations de registres à registres pour les
instructions de calcul. Le format d’instruction à trois registres permet de spécifier un registre
de destination différent des opérandes sources. Les instructions de chargement / stockage
transfèrent les données entre les registres et la mémoire.
Les PowerPC ont deux niveaux de privilège, un mode superviseur utilisé par le
système d’exploitation et un mode utilisateur utilisé par les applications. L’accès aux
instructions et registres privilégiés permet au système d’exploitation de contrôler
l’environnement des applications, la mémoire virtuelle, la protection du système
d’exploitation, …
Le schéma suivant décrit l’ensemble des registres présents au cœ ur du processeur.
12
III.2 Le jeu d’instruction
Toutes les instructions PowerPC sont des mots de 32 bits. Le jeu d’instruction est
optimisé de manière à simplifier la mise en pipeline. Ces instructions sont regroupées en
plusieurs catégories :
1. Integer instructions
2. Floating-point instructions
3. Load / store instructions
4. Flow control instructions
5. Processor control instructions
6. Memory control instructions
En plus de ces instructions, le PowerPC 750 dispose des instructions spécifiques
suivantes :
1. External Control In Word Indexed (eciwx)
2. External Control Out Word Indexed (ecowx)
3. Floating Select (fsel)
4. Floating Reciprocal Estimate Single-Precision (fres)
5. Floating Reciprocal Square Root Estimate (frsqrte)
6. Store Floating-Point as Integer Word (stfiwx)
III.3 La cache de niveau 1
L’architecture PowerPC ne définit pas de spécifications Hardware pour la cache L1.
Elle peut-être unifiée, elle peut séparer instructions et données ou ne pas exister. En
l’occurrence, pour le PowerPC 750, la cache L1 est séparée en deux entités, données et
instructions.
III.4 Les exceptions
Le mécanisme d’exception permet au processeur d’interrompre l’exécution des
instructions. Cette interruption peut-être déclenchée par un signal externe, une erreur, …
Lorsqu’une exception se produit, l’état du processeur est enregistré dans des registres et le
processeur reprend l’exécution à une adresse, vecteur d’exception, prédéterminée qui dépend
de l’exception.
Il y a quatre types d’exceptions définit dans l’architecture PowerPC :
• « Synchronous, precise »
• « Synchronous, imprecise »
• « Asynchronous, maskable »
• « Asynchronous, nonmaskable »
Pour le PowerPC 750, les exceptions sont regroupées dans le tableau suivant.
13
Le tableau suivant donne la liste complète des exceptions du PowerPC 750 ainsi que
les causes de ces exceptions.
14
III.5 La gestion de la mémoire
Dans l’architecture PowerPC, le rôle du « Memory Management Unit » (MMU) est de
transformer les adresses logiques en adresses physiques et de permettre l’accès aux blocs et
aux pages mémoires. Il y a deux types d’accès, les accès aux instructions et les accès aux
données. Ces accès sont générés par des instructions de chargement et stockage ou par la
mémoire cache.
Le PowerPC 750 utilise la version 32 bits de l’architecture PowerPC qui permet 4
Gbytes d’adresses logiques accessibles aussi bien au superviseur qu’aux programmes
utilisateurs. Les pages mémoires sont de 4 Kbytes et les segments de 256 Mbytes. En plus de
ceci, l’architecture définit une adresse virtuelle temporaire sur 52 bits ainsi que des tables de
hachage afin de générer une adresse physique sur 32 bits.
La mémoire virtuelle permet l’exécution de programmes dont la taille mémoire est
supérieure à la mémoire physique disponible. La table de hachage est une structure de
données de taille variable qui définit la relation entre les pages de la mémoire virtuelle et
celles de la mémoire physique. Cette table a une taille qui est une puissance de 2 et son
adresse de début est un multiple de cette taille.
15
Le PowerPC 750 met en œ uvre cette architecture en dissociant les instructions des
données.
III.6 Timing des instructions
Le PowerPC 750 est un processeur pipeline superscalaire. Un processeur pipeline est
un processeur où l’exécution des instructions s’effectue en étapes discrètes comme le montre
le schéma suivant.
Un processeur superscalaire est un processeur qui peut exécuter en parallèle des
instructions dans des unités distinctes. Ainsi, le PowerPC 750 possède six unités
indépendantes. Le schéma suivant décrit cette organisation temporelle du processeur.
L’étape « fetch » permet de ramener les instructions de la mémoire du système et de
déterminer la position de l’instruction suivante. Le BPU cherche les branchements durant
cette étape.
16
L’étape « dispatch » est responsable du décodage des instructions provenant de l’étape
« fetch » et détermine quelles instructions peuvent être envoyées dans le cycle en cours. Si les
opérandes sources sont accessibles, elles sont lues dans les registres concernés pour permettre
la poursuite de l’exécution en pipeline. Si un opérande source n’est pas disponible,
« dispatch » indique dans quel registre l’opérande va devenir disponible. A la fin de cette
étape, les instructions sont réparties dans les différentes unités d’exécution avec les opérandes
sources dont elles ont besoin.
Lors de l’étape « execute », chaque unité d’exécution qui a une exécution à effectuer
l’effectue sur un ou plusieurs cycles d’horloge. Ensuite, le résultat est inscrit dans le registre
approprié. Enfin, l’unité d’exécution signifie au CU qu’elle a achevé son travail. Dans le cas
d’une exception interne, l’unité d’exécution en informe le CU et interrompt l’exécution. Le
schéma suivant montre le timing des exécutions au sein des différentes unités d’exécution.
L’étape « complete » maintient la cohérence de la machine et transmet les résultats des
instructions. Si une exception est détectée, toutes les instructions suivantes sont annulées et
leurs résultats écartés.
17
Le schéma suivant résume les différentes étapes de l’exécution des instructions.
III.7 La gestion thermique
Le PowerPC possède une unité de gestion thermique, « Thermal Assist Unit » (TAU),
qui lui permet de contrôler la dissipation de la chaleur. Cette particularité est très intéressante
en particulier pour les ordinateurs portables. Cette unité a en particulier permis de supprimer
les ventilateurs de refroidissement du processeur, y compris sur les ordinateurs dits de bureau.
18
Cette unité surveille et régule la température. Par exemple, si la température est sur le
point de dépasser un seuil critique, le système ralentit ou suspend temporairement les
exécutions afin de faire baisser cette température.
La TAU se compose entre autres d’un capteur de température interne, d’un
convertisseur numérique analogique, d’un comparateur. Elle compare la température de
jonction avec les réglages de l’utilisateur, elle génère des interruptions lorsque la température
ne correspond plus aux réglages et elle permet à l’utilisateur d’estimer la température de
jonction via des routines appropriées.
Les fonctions THRM1 & THRM2 permettent de comparer la température de jonction
avec deux réglages utilisateurs. Cette double comparaison permet un contrôle plus fin. Si l’on
utilise un seul réglage, la sonde thermique n’est comparée qu’avec une seule des deux. La
fonction THRM3 permet de rendre opérationnelle la TAU et de contrôler la sortie du
comparateur.
Le schéma suivant explique comment tirer le meilleur profit de cette gestion
thermique, notamment comment doivent être installés les appendices de dissipation de la
chaleur comme, par exemple, le radiateur.
19
III.8 L’indicateur de performance
L’indicateur de performance est un outil que les concepteurs peuvent utiliser pour
bâtir, déboguer et optimiser les logiciels. Cet indicateur compte les évènements des étapes
« dispatch », « execute » et « complete » ainsi que les accès mémoires durant l’exécution du
code.
20
Bibliographie
1. PowerPC 750 SCM RISC Microprocessor Datasheet version 3.1 – IBM - 1998
2. PowerPC 750 RISC Microprocessor User’s Manual – IBM – 1997
3. PowerPC 750 Microprocessor – High Performance, Low Power Consumption – IBM –
1998
4. Motorola PowerPC 750 and PowerPC 740 Microprocessors Fact Sheet – Motorola – 1999
5. Site web IBM : http://www.chips.ibm.com
6. Site web Motorola : http://www.mot.com
7. Site web Apple : http://www.apple.com
21