SYNTHESE :
PowerPc G3 (MPC750)
LUROIS Frédéric GRATIEN Xavier Maîtrise Informatique |
Le MPC750 est un processeur RISC qui implémente l’architecture PowerPC. Il implémente la partie 32 bits de l’architecture PowerPc, qui fournit des adresses 32 bits, des données de type entier de 8, 16 et 32 bits, et des données de type float de 32 et 64 bits. Le MPC750 est un processeur superscalaire qui peut : Ø Charger (fetch) quatre instructions du cache d’instructions par cycle d’horloge Ø Lancer (dispatch) deux instructions par cycle d’horloge Ø Exécuter six instructions par cycle d’horloge Ø Terminer l’exécution de deux instructions par cycle Il possède six unités fonctionnelles pouvant travailler en parallèle : v Une unité de calcul flottant (FPU) qui peut utiliser 32 registres flottants de 64 bits L’unité de calcul flottant (FPU) est pipelinée : les taches qu’elle exécute sont découpées en sous taches, implémentées comme trois étages successifs. De manière plus précise, une instruction flottante ne peut occuper qu’un seul des trois étages à la fois, libérant ainsi l’étage précédant pour travailler sur la prochaine instruction flottante. Ainsi, trois instructions flottante simple précision peuvent être dans l’unité de calcul flottant à la fois. Ce qui lui permet de compléter un calcul simple ou double précision par cycle d’horloge. v Une unité de prédiction de branchement (BPU) Elle gère aussi bien les prédictions dynamiques que statique. La prédiction dynamique est implémentée en utilisant une table d’historique des branchements (BHT) à 512 entrées avec deux bits par entrées, fournissant ainsi quatre niveaux de prédictions (non pris, fortement pris, pris, et fortement pris). L’unité dispose également d’un cache d’instruction de branchement (BTIC) à 64 entrées qui contient les instructions de branchements les plus utilisés. L’unité possède un additionneur qui lui permet de calculer les adresses branchement, ainsi que trois registres de contrôle (LR, CTR et CR) dans lesquels elle stocke différents éléments tels que les points de retour des appels de sous-programme ou les adresses cibles des conditions de branchement, etc.. Le fait d’utiliser ses propres registres, plutôt que des registres appartenant aux bancs de registres entiers et flottant (GPR et FPR), rend l’exécution des instructions de branchement totalement indépendante des instructions entières ou flottantes. Lorsque la prédiction dynamique est désactivée, l’unité utilise un bit dans le codage de l’instruction pour prédire la direction du branchement conditionnel. v Une unité de gestion des registres systèmes (SRU) Il exécute aussi bien différentes instructions systèmes que des opérations logiques sur des registres conditions. v Une unité de chargement / rangement (LSU) Elle possède une station de réservation à deux entrées, et son propre additionneur qui lui permet de calculer les adresses effectives. Les accès mémoire s’effectuent en un cycle d’horloge. De plus, l’unité sert d’interface entre le cache/mémoire et les bancs de registres entiers (GPR) et flottant (FPR). v Deux unités de calcul entier (IUs) qui se partagent 32 registres entiers Elles possèdent chacune une station de réservation à une entrée. IU1 peut exécuter toutes les instructions entières alors que IU2 exécute toutes les instructions entières excepté les multiplications et les divisions. La plupart des instructions entières sont exécutées en un cycle d’horloge. De plus, tous les calculs se font en 32 bits vrais avec un « exit » rapide (les calculs sont stoppés plus tôt pour les opérations qui ne requièrent pas du vrai 32 bits par 32 bits). La possibilité d’exécuter plusieurs instructions en parallèle, et l’utilisation d’instructions simple avec des temps d’exécution rapide permettent aux systèmes basés sur le MPC750 d’avoir un rendement maximum et une grande efficacité. Le MPC750 dispose également d’une unité de terminaison, (Complétion unit) dont le but est de retirer une instruction (il peut en retirer deux par cycle) du buffer de ré ordonnancement, (ROB) lorsque son exécution et celles de toutes les instructions précédentes sont terminées et qu’il n’y a pas d’exception en attente. L’unité garantie ainsi la terminaison dans l’ordre des différentes instructions. Le processeur possède des caches de données et d’instructions de 32 Ko associatif par ensemble de huit lignes de 32 octets (128 ensembles) indépendants. Ces caches implémentent le protocole de cohérence MEI (Modified / ExcIusive / Invalid), ce qui permet la cohérence, des données contenu dans les caches, avec les données en mémoire, ainsi que l’algorithme de remplacement pseudo LRU (on remplace au hasard, une des lignes du cache les moins utilisées). Le cache de second niveau est implémenté avec un cache associatif à 2 lignes et des SRAM synchrones externes pour le stockage des données. Il possède également des unités de gestion de mémoire (MMU) séparées pour les données et les instructions permettant d’adresser 252 adresses virtuelles et 232 adresses physiques. Chaque unité de gestion de la mémoire possède un cache spécifique de 128 entrées (ITLB et DTLB) de traduction, associatif par ensemble de 2 lignes qui sauvegarde les traductions (traduction de l’adresse virtuelle en adresse physique) des pages d’adresses récemment utilisées. La traduction des blocks d’adresses est effectuées par des tableaux de traduction d’adresse à quatre entrées (IBAT et DBAT) définies par l’architecture PowerPc. Enfin le MPC750 possède un bus de données de 32 bits et un bus d’adresses de 64 bits. L’activité principale des bus est de transférer des données et des instructions entre le processeur et la mémoire. Il y a deux d’accès mémoire : - le « single beat transfert » : il permet de transférer 8, 16, 24, 32 ou 64 bits en un cycle de bus - le « four beat burst data transfers » qui permet de transférer une ligne entière de cache (32 octets). C’est l’accès mémoire le plus utilisé. Les accès mémoire sont
rarement fait dans l’ordre, car c’est l’efficacité du bus qui prime
sur la cohérence (l’ordonnancement) des accès mémoires. |