Next: Résumé #9: Les machines
Up: Résumés de Organisation et
Previous: Résumé #7: Grande capacité
À lire: Article ``The PowerPC 603 Microprocessor'', CACM,
vol. 37, no. 6.
- Architecture développée en collaboration par IBM, Apple et
Motorola.
- Objectif ``politique'': Empêcher Intel de contrôler le
marché futur des micro-processeurs pour les ordinateurs personnels!
- Objectifs techniques:
- Compatibilité avec l'architecture POWER d'IBM (RISC
System/6000).
- Simplification de l'architecture et clarification/simplification
des contraintes de mises en oeuvre dans le but de permettre diverses
mises en oeuvre, i.e., d'obtenir une véritable famille de
processeurs.
- Fournir un support pour une grande variété de systèmes
tant mono- que multi-processeurs.
- Définition d'une extension 64 bits compatible avec les
applications 32 bits existantes.
- Incorpore les caractéristiques fondamentales des machines RISCs:
- Instructions de taille fixe (32 bits).
- Architecture de type rangement/chargement, (i.e., opérations
arithmétiques et logiques avec 3 opérandes: 3 registres ou 2
registres + 1 constante).
- Nombre limité de modes d'adressage.
- Instructions ``simples'' réalisées via contrôle cablé
(i.e., sans microprogrammation).
- Caractéristique importante = Machine superscalaire
Peut amorcer l'exécution de plusieurs instructions (1, 2
ou 3) à chaque cycle d'horloge via l'utilisation d'unités
fonctionnelles multiples et indépendantes. Les instructions peuvent
s'exécuter en parallèle et terminer leur exécution dans le
désordre.
- Evolution historique: IBM 801 (Fin 70)
IBM RT PC
(1986)
IBM RS/6000 (1990)
IBM RSC (POWER sur
1 seule puce)
PowerPC
- Mises en oeuvre prévues de la famille PowerPC:
- 601: Premier microprocesseur de la famille (début 1993). Le
moins performant et le moins coûteux. Ne réalise pas
l'architecture PowerPC dans son ensemble (émulation logicielle de
certaines instructions).
- 603: Plus performant que le 601. Plus coûteux parce que conçu pour une consommation faible d'énergie (pour utilisation dans les
ordinateurs portatifs). Réalise l'ensemble de l'architecture.
- 604: Plus performant que 601 et 603.
- 620: Processeur haute performance réalisant l'architecture
complète à 64 bits et incluant un cache à 2 niveaux.
- Premier processeur de la famille PowerPC à supporter
entièrement l'architecture PowerPC (i.e., toutes les instructions de
l'architecture sont effectivement réalisées au niveau matériel).
- Structure du pipeline:
- Étage Fetch: Extraction de 2 instructions via le cache.
- Étage Decode/source: Décodage de l'instruction
et lecture des opérandes registres suivi de l'envoi (dispatch)
à l'unité fonctionnelle appropriée.
- Étage Execute: Exécution de l'instruction puis
écriture du résultat dans le registre virtuel de destination. Si
le résultat est immédiatement requis par une autre instruction,
alors il est transmis par un envoi (forwarding). Finalement, une
fois l'exécution terminée, l'instruction est envoyée au tampon
de terminaison (completion buffer).
- Étage Completion: Écrit le résultat (contenu dans le
registre virtuel) dans le registre physique approprié, retournant
ensuite le registre virtuel au pool des registres virtuels
disponibles.
1) Unité de répartition: Décode les instructions (sauf les
branchements, qui ont déjà été envoyés à l'unité de
branchement) et les envoie (jusqu'à 2 instructions par cycle) à
l'unité appropriée, dans l'ordre rencontré dans le programme. Si
l'unité requise est déjà occupée (ainsi que sa table de
réservation associée), alors l'exécution est suspendue.
Divers mécanismes sont utilisés pour éviter les suspensions:
- Table de réservation: Contient les instructions n'ayant pas
pû être initiées parce qu'un ou plusieurs de leurs opérandes
n'étaient pas disponibles ( file d'attente des instructions
pour les unités fonctionnelles). Lorsque les opérandes deviennent
disponibles, l'instruction est envoyée à l'unité appropriée.
- Tampon de registres virtuels (rename buffers): Fournit un
espace temporaire pour conserver les résultats de l'exécution
d'une instruction avant que celui-ci soit écrit dans le registre
physique approprié. Permet d'éviter les délais dûs à
certains types d'aléas de données. De plus, cela facilite
l'exécution spéculative des branchements puisque les vrais
registres affectés par l'exécution d'instructions exécutées
inutilement (fausse prédiction) ne sont pas modifiés (i.e., seuls
les registres virtuels le sont, jusqu'à l'étape de
terminaison/completion où la mise à jour des registres
architecturaux s'effectue).
2) Unités d'exécution:
- 2.1)
- Unité de branchement: Décode les instructions et
exécute celles qui sont des branchements. Possède sa propre UAL
pour le calcul de l'adresse destination. Si la condition peut être
déterminée immédiatement, le branchement s'effectue aussitôt,
autrement l'exécution se fait de façon spéculative (via
prédiction statique).
Stratégie de prédiction statique des branchements: Par défaut,
le matériel prédit que les branchements vers l'arrière (boucles)
seront effectués alors que les branchements vers l'avant ne le
seront pas. (Par contre, le compilateur peut positionner un bit de
l'instruction pour indiquer que la prédiction inverse doit être
faite.)
Note: Contrairement à la machine MIPS, il n'y pas de cases de
délai de branchement, i.e., pas de branchements différés. Cette
dernière approche fonctionne bien seulement lorsque le délai est
petit; de plus, cette approche crée des problèmes dans le cas
d'une machine superscalaire où les instructions ne sont pas
nécessairement initiées dans l'ordre.
- 2.2)
- Unité entière: Exécute la plupart des instructions
arithmétiques entières en 1 cycle. Possède des registres
indépendants de l'unité point-flottante.
- 2.3)
- Unité de rangement/chargement: Gère les transferts
entre le cache de données et les registres entiers et
point-flottants. Possède sa propre UAL pour le calcul de l'addresse
effective.
- 2.4)
- Unité point-flottante: Unité avec pipeline traitant
les nombres en simple ou double précision. Possède un débit
maximum de 1 cycle et une latence de 3 cycles.
- 2.5)
- Unité de registres systèmes: Gère les instructions
modifiant les registres de contrôle du processeur.
3) Tampon de terminaison: Gère la terminaison (finalisation)
de l'exécution des instructions (i.e., leur mise à la retraite) et
contrôle l'écriture des registres physiques à partir des
registres virtuels. Le tampon contient jusqu'à 5 instructions et
peut en retirer jusqu'à 2 par cycle.
Next: Résumé #9: Les machines
Up: Résumés de Organisation et
Previous: Résumé #7: Grande capacité
Guy Tremblay
Tue Aug 27 14:04:33 EDT 1996