Chapitre 1. Organisation de l’ordinateur 21/02/07 B. Miramond – Université de Cergy 1 Objectif A terme comprendre l’architecture de la future machine à pile (processeur Java). Pour cela, il faut comprendre comment s’exécutent les instructions d’un processeur : cycle d’exécution machine. Cette exécution doit être contrôlée, notion de contrôleur, et dans le cas multi­cyles, notion de séquenceur. Ce séquenceur sera implanté comme un microprogramme dans l’architecture PicoJava, donc étude des différentes implantations de contrôleur. 21/02/07 2 Plan Cycle d’exécution machine Structure en couches de l’ordinateur Rappels sur les composants du processeur Implémentation temporelle I. II. III. IV. 1. 2. 3. Implémentation du contrôleur V. 1. 2. 3. VI. 21/02/07 Mono­cycle Multi­cycle Pipeline Architecture RISC Décodage des instructions Microprogrammation Exemple du MIPS R3000 3 I. Cycle d’exécution machine 21/02/07 B. Miramond – Université de Cergy 4 1. Les rappels : Architecture de Von Neumann (1952) Mémoire (4096 mots de 40 bits) Unité arithmétique et logique Unité de commande Accumulateur Entrées 21/02/07 Sorties 5 Le bus central UC Mémoire Console E/S à ruban Autres E/S Architecture du PDP­8 (1965) structurée autour d’un bus central : • L’omnibus 21/02/07 6 Architecture actuelle de l’ordinateur UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 Bus externe • Données • Adresses • Commandes7 2. Echanges entre le processeur et la mémoire Le processeur exécute un programme – Programme écrit en mémoire – Transfert d’instructions Le programme manipule des variables – Transfert de données Toutes ces informations sont rangées à un certain emplacement 21/02/07 – Transfert d’adresses 8 Principe général d’exécution UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 1) Charger la prochaine instruction 9 Principe général d’exécution UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 2) Charger les données sur lesquelles travaille l’instruction 10 Principe général d’exécution UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 3) Exécuter l’instruction et modifier la copie locale des données 11 Principe général d’exécution UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 4) Ranger le résultat en mémoire 21/02/07 12 Principe général d’exécution UC / CPU Disque (HDD) Unité de Contrôle Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 5) Envoyer l’adresse de la prochaine instruction Revenir à l’étape 1) 13 3. Synthèse ­ Cycle d’exécution machine Un cycle d’exécution machine consiste à Charger l’instruction Décoder l’instruction Charger ses données Faire un traitement sur ces données Ranger le résultat du traitement Désigner la prochaine instruction Retour 21/02/07 14 II. Structure de l’ordinateur 21/02/07 B. Miramond – Université de Cergy 15 1. Structure système Unité de traitement Hiérarchie mémoire Périphériques Média de communication (Bus système) 21/02/07 16 2. Organisation multi niveaux de l’unité de traitement Niveau 5 Couche des langages d’application Traduction (compilateur) Niveau 4 Couche du langage d’assemblage Traduction (assembleur) Niveau 3 Couche du système d’exploitation I nterprétation partielle (OS) Niveau 2 Niveau 1 Couche architecture du jeu d’instruction (I SA) I nterprétation (microprogramme) ou exécution directe (cablé) Couche microarchitecture Matériel 21/02/07 Niveau 0 Couche logique numérique 17 a. Niveau physique • Architecture et fonctionnement interne des composants • Informations au niveau bit s = abc + abc + abc + abc a b c a b c a a b c a b c e1 e2 b a b c OU s en s 21/02/07 a b c c 18 b. Niveau microarchitecture Architecture matérielle du processeur Information au niveau mot Memory control signals (rd,wr,fetch) 3 4 to 16 Decoder MAR MDR 4 MPC 9 PC 8 MBR Contrôleur 8 SP LV JMPC Addr J Alu CPP MIR C MB TOS OPC JAMN/JAMZ H 6 21/02/07 C Bus B Bus ALU Shifter High Bit 2 N Z 2 19 c. Niveau ISA Architecture de jeu d’instruction du processeur Interface entre matériel et logiciel Écrit en code binaire C’est le code manipulé et mémorisé en mémoire principale au moment de l’exécution Totalement dépendant de l’architecture sous­jacente Informations au niveau mot Dimensionnement des champs de l’instruction : – Adresse – Constantes – Opérandes… 21/02/07 Code d’instruction adressage 20 d. Niveau OS Exemple : primitives de uCOS Visibilité du niveau système Gestion du code binaire, du chargement… Responsable de la commutation de contextes Services de communications entre processus Abstraction des périphériques d’E/S … UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 21/02/07 21 e. Niveau Assemblage Premier niveau historique de programmation Dépend d’une famille d’architecture de processeur /* code assembleur */ /* a:R0 b:R1 Tab:R2 load R2,Tab; load R0,(R2); load R1,12; add R3,R0,R1; store (R2),R3; 21/02/07 */ 22 f. Niveau Langage d’application L’interface avec le programmeur humain Langages Abstraction des mécanismes d’exécution de l’unité de calcul sous­jacente Totalement indépendant du CPU Nécessité de logiciels qui écrivent du code : – – – – 21/02/07 Compilateurs Assembleurs Interpréteurs Editeurs de liens 23 int main (){ int a = 3; … return a = b+c; } main : load a, R1 add R1, R2, R3 … $0F47 21/02/07 0x03D810A2 24 III. Composants de l’unité de traitement 21/02/07 B. Miramond – Université de Cergy 25 1. Interface du microprocesseur Alimentation et masse Adresses In Out InOut 21/02/07 Vcc GND A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 D0 D1 D2 D3 D4 D5 D6 D7 M I C R O P R O C E S S O R Données Read Write INTR INTA NMI READY Mémoire Périphérique PRÊT Demande Bus ACK. Bus Horloge 26 2. Le chemin de donnée 21/02/07 B. Miramond – Université de Cergy 27 a. l’ALU B A Fo F1 InvA, EnA, EnB 8 8 ALU Inc N Z 8 O 21/02/07 28 Tableau de commande des fonctions de l’ALU 21/02/07 29 Tableau de commande des fonctions de l’ALU 21/02/07 30 Tableau de commande des fonctions de l’ALU 21/02/07 31 Tableau de commande des fonctions de l’ALU 21/02/07 32 b) Registres du processeur Entrées / Sorties de l’ALU ? A 6 Commandes 21/02/07 B 8 ALU 8 N Z 8 O 33 Rappel : le Registre 4 bits D2 D3 D Q D Q Q CK D0 D1 D Q Q D Q Q CK CK Q CK CK Read 21/02/07 CK RD 34 Architecture à chargement / rangement Banc de registres Qui place la valeur des signaux de commandes ? A 6 Commandes 21/02/07 B 8 ALU 8 N Z 8 O 35 c. Accès à la mémoire Accès mémoire @ Banc de registres Registre d’adresse de données (AD) A 6 Commandes 21/02/07 B 8 ALU 8 N Z 8 O 36 MIPS microprocessor specifications Model Frequency [MHz] Year R2000 16.7 1985 2.0 0.11 ­­ ­­ ­­ ­­ 32 64 none R3000 25 1988 1.2 0.11 66.12 145 4 ­­ 64 64 none R4000 100 1991 0.8 1.35 213 179 15 5 8 8 1024 R4400 150 1992 0.6 2.3 186 179 15 5 16 16 1024 R4600 133 1994 0.64 2.2 77 179 4.6 5 16 16 512 R5000 180 1996 0.35 3.7 84 223 10 3.3 32 32 1024 R8000 90 1994 0.5 2.6 299 591 30 3.3 16 16 1024 R10000 200 1995 0.35 6.8 299 599 30 3.3 32 32 512 R12000 300 1998 0.18­0.25 6.9 204 600 20 4 32 32 1024 R14000 600 2001 0.13 7.2 204 527 17 ­­ 32 32 2048 R16000 700 2002 0.11 ­­ ­­ ­­ 20 ­­ 64 64 4096 R16000A 800 2004 0.11 ­­ ­­ ­­ ­­ ­­ 64 64 4096 21/02/07 Process [µm] Transistors [millions] Die size [mm²] IO Power [W] P i n s Voltage Dcache [k] Icache [k] Scache [k] 37 d. Exemple du MIPS R3000 Data In / Data Out RES Y PC RI R(i) ADR DT … X Adresse 21/02/07 38 e. Synthèse Le chemin de données est principalement composé de : – Une unité de calcul (ALU) – De registres de mémorisation temporaire des données – De bus de communication entre l’ALU et les registres – De moyen d’accès à la mémoire (adresse + données) 21/02/07 39 Notion de micro­architecture Les choix d’organisation du chemin de donnée forment ce que l’on appelle la microarchitecture du processeur : Le CdD dispose de 2 ou 3 bus Le nombre de registres L’architecture dispose d’un pipeline Elle est superscalaire Son contrôle est microprogrammé ou cablé … 21/02/07 40 2. Unité de contrôle 21/02/07 B. Miramond – Université de Cergy 41 Architecture externe du Mips R3000 6 it berr reset frz 3 rw CK 32 32 adr 21/02/07 data 42 a. Contrôle et chemin de données Architecture du Mips R3000 6 it berr reset frz 3 Partie Contrôle CK commandes 32 adr 21/02/07 rw Partie Opérative Indications 32 data 43 Chemin de données et contrôleur Accès mémoire Banc de registres Contrôleur A 6 Commandes 21/02/07 B 8 ALU 8 O 8 N Z Chemin de données 44 b. Rôle du contrôleur Commander les opérations de l’ALU Placer les adresses mémoire de lecture de données (variables). Requête en lecture Désigner parmi les registres ceux qui alimenteront les 2 entrées de l’ALU (1 dans le cas d’un ACC) Désigner dans quel registre le résultat de l’ALU doit être rangé Placer l’adresse mémoire à laquelle doit être mémoriser un résultat (variable). Requête en écriture Charger la prochaine instruction (registre PC) Le contrôleur 21/02/07 dépend de l’architecture 45 Plus précisément 1) Charger l’instruction Accès mémoire 3) Charger les données Registres 6) Retour Adr. Prochaine Contrôleur instruction 2) Décoder l’instruction A 6 Commandes 4) Exécuter 21/02/07l’opération B 8 ALU 8 O 8 N Z 5) Ranger le résultat Chemin de données 46 c. Commandes de l’architecture Tous les signaux de commande de l’architecture sont mémorisées dans un seul registre appelé le Registre d’Instruction (RI) Il est composé de plusieurs champs contrôlant chacun une partie de l’architecture – – – – – RI 21/02/07 L’ALU Les opérandes de l’ALU La/les sorties de l’ALU Les accès mémoires (Lecture, écriture, fetch) Des données complémentaires (immédiat, adresse de saut…) Donnée sup Bus de sortie Bus d’entrée ALU Mémoire 47 d. Retour sur le cycle d’exécution du processeur Un cycle d’exécution du processeur correspond à l’exécution d’une instruction : Donnée sup Bus de sortie Bus d’entrée Op. ALU Mémoire Ces instructions sont des suites de bits (commandes) que l’on peut coder par des mnémoniques : – ADD R0, R0, R1 Aucune R0 Décodage R0 et R1 A+B Aucune Registre mémoire A Lecture – LOAD R3, (R4) … Aucune 21/02/07 R4 48 Bibliothèque de fonctions Langage C int a,b; scanf(« %d »,&b); a = sqrt(b); printf(« %d »,a); Compilateur C Langage assembleur debut: bsr $3520 ldaa $1000 bsr $2024 pusha Complexité Taille du programme Code machine Assembleur Micro 21/02/07 . . . $40 $37 $F0 $35 $20 $32 $10 $00 $F0 $20 $24 $3B . . . 49 Cycle d’exécution machine Charger l’instruction PC PC+1 RI_tmp Incrémenter PC DECOD Décoder l’instruction RI Charger les données Registres de travail Exécuter l’opération R_AdrD ALU Ranger le résultat Retour 21/02/07 total:SR 50 e. Synthèse Architecture composée de 2 parties Le chemin de donnée réalise les traitements 1. Unité de transfert mémoire Registre d’adresse de données Registre d’adresse d’instructions ou Compteur Ordinal (CO) ou PC 2. Registres de travail (architecture à Accumulateur, à Pile, à banc de registres) 3. L’ALU Le contrôleur 1. Décodeur Registre de transfert des instructions Registre d’instruction 2. Séquenceur 21/02/07 – Positionne les commandes à chaque cycle d’horloge 51 RI_tmp PC Décodeur Séquenceur Chemin de donnée SR R_AdrD RI Contrôleur Commandes B A 8 8 6 Commandes 21/02/07 ALU N Z 8 O 52 Résumé 5 – 2 – 7 – 3 Une architecture de Von Neumann est constituée de 5 unités: 1. 2. 3. 4. 5. de Calcul de Mémoire de Registres Séquenceur Décodeur 21/02/07 1. 2. 3. 4. 5. 6. 7. Fetch instruction Incrémenter PC Décoder l’instruction Charger données Exécuter l’opération Ranger le résultat Retour Les échanges avec la mémoire sont de 3 sortes : Elle utilise les 2 registres principaux suivants : – PC – RI Elle s’exécute en 7 étapes : – – – Données Instructions Adresses 53 Le circuit se construit autour d’une bibliothèque de portes/composants Portes INV_ OR_ AND_ NAND_ NOR_ XOR_ latchD 21/02/07 MSI MAJ_ MUX_ DEC_ COMP_ HalfAdder_ ADDER_ Registre_ LSI PLA_ ALU_ RAM_ 54 Animation : Exécution du processeur 21/02/07 B. Miramond – Université de Cergy 55 Exécution du processeur Exemple sur une architecture à banc de registres Composée des 5 parties définies précédemment 1. 2. 3. Calcul (ALU) Registres de travail Transfert mémoire 5. Séquenceur 6. Décodeur 21/02/07 56 Architecture de base d’un processeur (architecture Von Neumann) Unité(s) de calcul Unité d’adressage Registres @ données Unité de décodage 21/02/07 Séquenceur 57 Exécution du programme ALU banc de registres unité d’adressage R0 R1 PC RI unité de décodage 21/02/07 58 Exemple (simple) /* exemple en C */ /* code assembleur */ int a,b; /* a:R0 b:R1 */ a = 2; compilateur load R0,2; b = 12; load R1,12; a = a + b; add R0,R0,R1; ... Le rôle du compilateur consiste principalement, ici, à effectuer une allocation des variables du programme (a et b) aux registres disponibles dans le processeur et à traduire les opérations arithmétiques en instructions assembleur. 21/02/07 59 load 21/02/07 R0,2 60 Phase de recherche de l’instruction (I­Fetch) ALU banc de registres unité d’adressage R0 R1 PC+1 PC load RIR0, 2 unité de décodage 21/02/07 61 Phase de décodage de l’instruction (Decode) ALU load banc de registres unité d’adressage R0 R1 PC+1 R0, 2 ? unité de décodage 21/02/07 62 Phase d’exécution de l’instruction (Execute) ALU load banc de registres unité d’adressage R0 R1 PC+1 R0, 2 unité de décodage 21/02/07 63 add 21/02/07 R0,R0,R1 64 Phase de recherche de l’instruction (I­Fetch) ALU add banc de registres unité d’adressage R0 R1 PC+1 PC R0, R0, R1 RI unité de décodage 21/02/07 65 Phase de décodage de l’instruction (Decode) ALU add banc de registres unité d’adressage R0 R1 PC+1 R0, R0, R1 ? unité de décodage 21/02/07 66 Phase d’exécution de l’instruction (Execute) ALU banc de registres unité d’adressage add R0 R1 PC+1 add R0, R0, R1 unité de décodage 21/02/07 67 Cas des accès en mémoire /* exemple en C */ /* code assembleur */ int Tab[100]; /* a:R0 b:R1 Tab:R2 */ a = Tab[0]; compilateur load R2,Tab; b = 12; load R0,(R2); Tab[12] = a + b; load R1,12; add R3,R0,R1; store (R2),R3; Le compilateur doit effectuer une allocation d’espace mémoire aux structures de données (statiques) utilisées dans le programme. En fonction des cas (espaces mémoire dédiés, mémoires multiples), le code compilé peut être différent. 21/02/07 68 load 21/02/07 R0,(R2) 69 Phase de recherche de l’instruction (I­Fetch) ALU load banc de registres unité d’adressage R0 R1 R2 PC+1 PC RI R0, (R2) unité de décodage 21/02/07 70 Phase de décodage de l’instruction (Decode) ALU load banc de registres unité d’adressage R0 R1 R2 PC+1 R0, (R2) ? unité de décodage 21/02/07 71 Phase d’exécution de l’instruction (Execute) ALU load banc de registres unité d’adressage R0 R1 R2 PC+1 R0, (R2) unité de décodage 21/02/07 72 Phase d’écriture du résultat (ReadBack) ALU load banc de registres unité d’adressage R0 R1 R2 PC+1 R0, (R2) unité de décodage 21/02/07 73 store 21/02/07 (R2),R3 74 Phase de recherche de l’instruction (I­Fetch) ALU banc de registres R2 unité d’adressage PC+1 PC R3 store RI (R2), R3 unité de décodage 21/02/07 75 Phase de décodage de l’instruction (Decode) ALU banc de registres R2 PC+1 R3 store unité d’adressage (R2), R3 ? unité de décodage 21/02/07 76 Phase d’exécution de l’instruction (Execute) ALU banc de registres R2 PC+1 R3 store unité d’adressage (R2), R3 unité de décodage 21/02/07 77 Cas des branchements conditionnels /* exemple en C */ /* code assembleur */ int a,b,c; /* a:R0 b:R1 c:R2 if (a!=b) compilateur c = 12; */ test: beq R0,R1,suite; load R2,12; suite: Ici, le compilateur introduit des « étiquettes » dans le programme permettant de localiser les suites d’instructions exécutées de manière conditionnelle. De plus, le compilateur traduit le code en remplaçant la condition : (a!=b) devient beq (branch if equal) 21/02/07 78 Phase de recherche de l’instruction (I­Fetch) ALU beq banc de registres unité d’adressage R0 R1 R2 PC+1 PC R0,R1,etiq RI unité de décodage 21/02/07 79 Phase de décodage de l’instruction (Decode) ALU beq banc de registres unité d’adressage R0 R1 R2 PC+1 etiq R0,R1,etiq ? unité de décodage 21/02/07 80 Phase d’exécution de l’instruction (Execute) ALU banc de registres unité d’adressage sub R0 R1 R2 etiq etiq beq si la condition est vraie R0,R1,etiq unité de décodage 21/02/07 81 IV. Implémentation du Contrôleur 21/02/07 B. Miramond – Université de Cergy 82 1. Choix d’implémentation temporelle L’exécution du cycle machine peut prendre Un cycle – implémentation mono­cycle Plusieurs cycles – implémentation multi­cycles 1 Cycle k Cycles 1. Fetch instruction 3. Incrémenter PC 21/02/07 1. Fetch instruction 2. Incrémenter PC 3. Décoder l’instruction 4. Charger données 5. Registre Exécuter l’opération 5. Décoder l’instruction 7. Charger données 9. Exécuter l’opération 11. Ranger le résultat 83 Quelles différences Supposons les informations suivantes : Étape d’exécution Temps d’exécution 21/02/07 Fetch instruction 2ns Incrémenter PC 1ns Décoder l’instruction 1,5ns Charger données 2ns Exécuter l’opération 1,8ns Ranger le résultat 1,7ns Retour ­ 84 Quelles différences La version mono­cycle est­elle plus rapide de la version multi­ cyles ? Quel est le temps de cycle de l’horloge pour la version mono­ cycle ? Sa fréquence ? Quel est le temps de cycle de l’horloge pour la version multi­ cycle ? Sa fréquence ? Quel est le temps d’exécution de l’instruction en mono­cyle? Quel est le temps d’exécution de l’instruction en mono­cyle? 21/02/07 85 Quelles différences La version mono­cycle est­elle plus rapide de la version multi­ cyles ? – … Quel est le temps de cycle de l’horloge pour la version mono­ cycle ? Sa fréquence ? – P = 10 ns, F = 100MHz Quel est le temps de cycle de l’horloge pour la version multi­ cycle ? Sa fréquence ? – P = 2ns, F = 500 MHz Quel est le temps d’exécution de l’instruction en mono­cyle? – T = 10 ns Quel est le temps d’exécution de l’instruction en mono­cyle? – T = 2*6 = 12 ns 21/02/07 86 Amélioration des performances : Le pipeline Fetch, PC+1 Decod Reg Exec Write i­1 Fetch, PC+1 Decod Reg Exec Write Fetch, PC+1 Decod Reg Exec Write Fetch, PC+1 Decod Reg Exec Write Fetch, PC+1 Decod Reg Exec Write Fetch, PC+1 Decod Reg Exec i­2 i­3 i­4 i­5 21/02/07 Toutes les étapes en parallèle !! Write 87 2. Contrôle des signaux de commandes Les composants de l’architecture sont contrôlés par un ensemble de signaux de commande Une micro­instruction représente une configuration complète de tous les signaux de commande de l’architecture à un instant donné Une instruction est donc une séquence de micro­ instructions en version multi­cycles Le séquenceur définit l’état de chaque signal de commande à tout instant de l’exécution en fonction de l’instruction reçue en entrée 21/02/07 88 3. Le séquenceur fonction des instructions Les micro­instructions peuvent être séparées en plusieurs étapes appartenant au cycle d’exécution machine – – – – Fetch Decode Execute … La phase de Fetch est toujours la même quelque soit l’instruction Dès que l’on connaît l’instruction à exécuter, les micro­instructions sont différentes 21/02/07 89 Le séquenceur fonction de l’architecture L’architecture définit le nombre et la nature des micro­commandes Elle a donc un impact direct sur la structure des micro­instructions et sur leur séquencement 21/02/07 90 4. Implantation du séquenceur (En multicycles) Le séquenceur est un automate distribuant, selon un chronogramme précis, les signaux de commande aux diverses unités participant à l'exécution d'une instruction. Deux implantations possibles – Séquenceur câblé – Séquenceur micro­programmé 21/02/07 91 Le séquenceur (contrôleur câblé) Un séquenceur câblé est un circuit séquentiel complexe comprenant un sous­circuit pour chacune des instructions à commander. Ce sous­circuit est activé par le décodeur. ETAT Courant conditions 21/02/07 Calcul De l’état suivant ETAT suivant Registre d’états Schéma d’une machine à états (machine de Moore) Génération des signaux de sortie 92 Choix d’architecture ­ 1 Contrôleur cablé Avantages – Exécution rapide – Instructions simples Inconvénients – Jeu d’instruction fixé – Pas d’évolutivité – Complexe à réaliser 21/02/07 93 Séquenceur micro­programmé Concept de microprogrammation introduit par M. Wilkes en 1951 Premier processeur à avoir utilisé un micro­ programme : le motorola 68000 Principe : – Remplacer le circuit cablé par une mémoire – Chaque configuration des commandes est définit comme une micro­instruction – L’exécution d’une instruction machine nécessite un micro­ programme 21/02/07 94 Rappel sur la réalisations de circuits logiques combinatoires Un système logique combinatoire peut être réalisé – à base de portes logiques discrètes, – d'un circuit PLA (Programable Logic Array) – ou encore, puisque l'état des sorties ne dépend que de l'état des entrées, d'une mémoire morte (ROM) Sortie = données à l’emplacement désigné Entrées = adresse 21/02/07 95 Choix d’architecture ­ 1 Séquenceur microprogrammé Avantages – Simplicité de réalisation – Flexibilité – Jeu d’instruction plus complexe – Moins d’accès mémoire pour le transfert des instructions Inconvénients – Lenteur d’exécution – 1 micro­programme / instruction (uPC) 21/02/07 96 5. Exemples de séquenceurs Les architectures RISC, séquenceur cablé – Exemple de la machine MIPS R3000 Les architectures CISC, séquenceur micro­ programmé – Exemple de la machine PicoJava 21/02/07 97 Exemple du MIPS R3000 21/02/07 B. Miramond – Université de Cergy 98 Chemin de donnée du R3000 Data In Data Ou RES Y PC RI R(i) ADR DT … X Adresse OPX 21/02/07 OPY ALU RES ADRW EXCP 99 Architecture externe du Mips R3000 6 it berr reset frz 3 Partie Contrôle CK commandes 32 adr 21/02/07 rw Partie Opérative Indications 32 data 100 Valeurs possibles du champs ALU RES <­ X + Y RES <­ X – Y RES <­ X.Y RES <­ X | Y RES <­ X xor Y RES <­ !X . !Y RES <­ X << Y[4:0] RES <­ X >> Y[4:0] RES <­ X* >> Y[4:0] RES <­ (X<Y)u RES <­ (X<Y)s 21/02/07 101 Séquenceur du MIPS La partie opérative est contrôlée par un séquenceur décrit comme un automate d’états finis (de MOORE). Les entrées de l’automate sont les signaux indicateurs venant de la partie opérative et l’instruction à exécuter Les sorties sont les commandes du chemin de donnée 21/02/07 102 Automate du séquenceur Toute instruction du langage machine du MIPS R3000 se décompose en une séquence de microinstructions. Toutes les instructions commencent par la même micro­instruction qui réalise l’incrémentation du compteur ordinal. Ensuite le comportement change en fonction du code opération (IR 31:26) L’automate complet comporte plus de 95 états 21/02/07 103 Structure hiérarchique de l’automate Test des signaux RST, IRQ PC <­ PC +4 EXCP 21/02/07 BRANCH ALU/IMD MOVE ALU/REG LOAD/ STORE RESET 104 Exemple ALU/IMD Ad <­ I16 Addiu Rt <­ rs + ad IR <­ m(pc) Addi­e sltiu Rt <­ ?(rs<ad) Ir <­ m(pc) Ad <­ rs + ad slti Rt <­ ?(rs<ad) Ir <­ m(pc) Rt <­ ad Ir <­ m(pc) 21/02/07 105 Résumé L’exécution d’un programme se fait par traductions (interprétation) successives depuis le langage de haut niveau jusqu’au niveau physique Les ordinateurs actuels (embarqués ou non) sont des machines multi­couches 21/02/07 106 Niveau 5 Couche des langages d’application Traduction (compilateur) Niveau 4 Couche du langage d’assemblage Traduction (assembleur) Niveau 3 Couche du système d’exploitation Interprétation partielle (OS) Niveau 2 Niveau 1 Couche architecture du jeu d’instruction (ISA) Interprétation (microprogramme) ou exécution directe (cablé) Couche microarchitecture Matériel Niveau 0 21/02/07 21/02/07 Couche logique numérique 107 Résumé (suite) L’architecture d’un processeur est composé de plusieurs composants électroniques combinatoires ou séquentiels – – – L’ALU Le décodeur Le Contrôleur Le programme utilise la ressource du processeur et le pilote par l’intermédiaire de registres (PC, RI, Adr, …) Le programme s’exécute dynamiquement dans une partie de la mémoire appelée la Pile 21/02/07 108