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