Le chemin de donnée Une première notion d’architecture L2 – I303 Séance 5 26/11/07 1 Couche des langages d’application Niveau 5 Traduction (compilateur) Couche du langage d’assemblage Niveau 4 Traduction (assembleur) Couche du système d’exploitation Niveau 3 Interprétation partielle (OS) Niveau 2 Couche architecture du jeu d’instruction (ISA) Interprétation (microprogramme) ou exécution directe (cablé) Niveau 1 Couche microarchitecture Matériel 26/11/07 Niveau 0 Couche logique numérique 2 Architecture des ordinateurs Introduction & Historique 3h Cours 4h TDs Représentation des nombres Couche physique, circuits logiq. Circuits séquentiels Le chemin de donnée CC Couche micro-architecture Cycle d’exécution 26/11/07 Conclusion sur l’exécution CC 3 Plan • Le microprocesseur, aspect externe • Le chemin de donnée, aspect interne • Le contôleur • Le cycle d’exécution machine • Illustration du principe d’exécution d’un processeur • Résumé 26/11/07 4 Le microprocesseur, aspect externe 26/11/07 5 Architecture de Von Neumann (1952) Mémoire (4096 mots de 40 bits) Unité arithmétique et logique Unité de commande Accumulateur Entrées 26/11/07 Sorties 6 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 26/11/07 7 Architecture actuelle de l’ordinateur UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 26/11/07 Bus externe • Données • Adresses 8 • Commandes 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 – Transfert d’adresses 26/11/07 9 Principe général d’exécution UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 26/11/07 1) Charger la prochaine instruction 10 Principe général d’exécution UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 26/11/07 2) Charger les données sur lesquelles travaille l’instruction 11 Principe général d’exécution UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 26/11/07 3) Exécuter l’instruction et modifier la copie locale des données12 Principe général d’exécution UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 4) Ranger le résultat en mémoire 26/11/07 13 Principe général d’exécution UC / CPU Unité de Contrôle Disque (HDD) Unités d’entrée/sortie Registres UAL Mémoire principale Bus interne 26/11/07 5) Envoyer l’adresse de la prochaine instruction Revenir à l’étape 1)14 Première vision du cycle d’exécution machine Un cycle d’exécution machine consiste à 2. Charger l’instruction 3. Charger ses données 4. Faire un traitement sur ces données 5. Ranger le résultat du traitement 6. Désigner la prochaine instruction 26/11/07 15 Interface du microprocesseur Alimentation et masse Adresses In Out InOut 26/11/07 Vcc GND A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 M I C R O P R O C E S S O R D0 D1 D2 D3 D4 D5 D6 D7 Données Read Write INTR INTA NMI READY Mémoire Périphérique PRÊT Demande Bus ACK. Bus Horloge 16 Aspects internes Le chemin de donnée 26/11/07 17 Contrôle de l’ALU B A Fo F1 InvA, EnA, EnB 8 8 N Z ALU Inc 8 O 26/11/07 18 Tableau de commande des fonctions de l’ALU 26/11/07 19 Tableau de commande des fonctions de l’ALU 26/11/07 20 Tableau de commande des fonctions de l’ALU 26/11/07 21 Tableau de commande des fonctions de l’ALU 26/11/07 22 Registre de contrôle de l’ALU Entrées / Sorties de l’ALU ? B A 8 8 6 Commandes 26/11/07 ALU N Z 8 O 23 Rappel : le Registre 4 bits D2 D3 D Q D Q Q CK D0 D1 D Q Q CK D Q Q CK Q CK CK Read 26/11/07 CK RD 24 Architecture à chargement / rangement Banc de registres B A 8 8 6 Commandes 26/11/07 ALU N Z 8 O 25 Contrôle du chemin de données 26/11/07 26 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 Le contrôleur écriture dépend de 26/11/07 27 • Charger la prochaine instruction l’architecture Plus précisément 1) Charger l’instruction Accès mémoire 3) Charger les données Registres 5) Retour Adr. Prochaine instruction Contrôleur 2) Décoder l’instruction B A 8 8 6 Commandes 26/11/07 4) Exécuter l’opération ALU 8 O N Z 5) Ranger le résultat Chemin de données 28 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 • Il est composé de plusieurs champs contrôlant chacun une partie de l’architecture – – – – – 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 RI26/11/07 Bus de sortie Bus d’entrée ALU Mémoire 29 Cycle d’exécution des instructions • 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 : Décodage – ADD R0, R0, R1 Aucune R0 – LOAD R3, (R4) … Aucune 26/11/07 R4 R0 et R1 A+B Aucune Registre mémoire A Lecture 30 Cycle d’exécution machine 1. Charger l’instruction 3. Incrémenter PC RI_tmp DECOD 5. Décoder l’instruction RI 7. Charger les données Registres de travail 9. Exécuter l’opération PC PC+1 R_AdrD ALU 11. Ranger le résultat 13. Retour 26/11/07 total:SR 31 Résumé 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. Séquenceur • Registre d’état 2. Décodeur • Registre de transfert des instructions 26/11/07 • Registre d’instruction 32 RI_tmp PC Décodeur Séquenceur Chemin de donnée SR R_AdrD RI Contrôleur Commandes B A 8 8 6 Commandes ALU 8 26/11/07 O N Z 33 Notre bibliothèque de portes Portes • INV_ • OR_ • AND_ • NAND_ • NOR_ • XOR_ • latchD 26/11/07 • Registre_ LSI MSI • PLA_ • MAJ_ • ALU_ • MUX_ • RAM_ • DEC_ • COMP_ • HalfAdder _ • ADDER_ 34 Exécution du processeur 26/11/07 35 Exécution du processeur • Exemple sur une architecture à banc de registres • Composée des 5 parties définies précédemment 1. Calcul (ALU) 2. Registres de travail 3. Transfert mémoire 5. Séquenceur 26/11/07 6. Décodeur 36 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 26/11/07 ... $40 $37 $F0 $35 $20 $32 $10 $00 $F0 $20 $24 $3B ... 37 Architecture de base d’un processeur (architecture Von Neumann) Unité(s) de calcul Unité d’adressage Registres @ données Unité de décodage 26/11/07 Séquenceur 38 Exécution du programme ALU banc de registres unité d’adressage R0 R1 PC RI unité de décodage 26/11/07 39 Exemple (simple) /* exemple en C */ /* code assembleur */ int a,b; /* a:R0 a = 2; compilateur b:R1 */ 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. 26/11/07 40 load 26/11/07 R0,2 41 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 26/11/07 42 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 26/11/07 43 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 26/11/07 44 add 26/11/07 R0,R0,R1 45 Phase de recherche de l’instruction (I-Fetch) ALU add banc de registres unité d’adressage R0 R1 PC+1 PC R0, RI R0, R1 unité de décodage 26/11/07 46 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 26/11/07 47 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 26/11/07 48 Cas des accès en mémoire /* exemple en C */ /* code assembleur */ int Tab[100]; /* a:R0 a = Tab[0]; compilateur b:R1 Tab:R2 */ 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. 26/11/07 49 load 26/11/07 R0,(R2) 50 Phase de recherche de l’instruction (I-Fetch) ALU banc de registres unité d’adressage R0 R1 R2 PC+1 PC load RI R0, (R2) unité de décodage 26/11/07 51 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 26/11/07 52 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 26/11/07 53 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 26/11/07 54 store 26/11/07 (R2),R3 55 Phase de recherche de l’instruction (I-Fetch) ALU banc de registres R2 R3 unité d’adressage PC+1 PC store RI (R2), R3 unité de décodage 26/11/07 56 Phase de décodage de l’instruction (Decode) ALU banc de registres R2 R3 unité d’adressage PC+1 store (R2), R3 ? unité de décodage 26/11/07 57 Phase d’exécution de l’instruction (Execute) ALU banc de registres R2 R3 unité d’adressage PC+1 store (R2), R3 unité de décodage 26/11/07 58 Cas des branchements conditionnels /* exemple en C */ /* code assembleur */ int a,b,c; /* a:R0 if (a!=b) compilateur test: c = 12; b:R1 c:R2 */ 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) 26/11/07 59 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 26/11/07 60 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 26/11/07 61 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 26/11/07 62 Exemple du MIPS R3000 26/11/07 63 MIPS microprocessor specifications Model Frequency [MHz] Year Process [µm] Transistors [millions] Die size [mm²] IO Power [W] P i n s Voltag e Dcache [k] Icache [k] Scache [k] 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 2004 0.11 -- -- -- -- -- 64 64 4096 R16000A 26/11/07 800 64 Architecture externe du Mips R3000 6 it berr reset frz 3 rw CK 32 adr 26/11/07 32 data 65 Architecture externe du Mips R3000 6 it berr reset frz 3 Partie Contrôle CK commandes 32 adr 26/11/07 rw Partie Opérative Indications 32 data 66 Chemin de donnée du R3000 Data In Data Out RES Y PC RI R(i) ADR DT … X Adresse OPX 26/11/07 OPY ALU RES ADRW EXCP 67 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 26/11/07 68 Résumé 26/11/07 69 Résumé • Une architecture de Von• Elle s’exécute en 7 Neumann est constituée étapes : 1. Fetch instruction de 5 unités: 1. 2. 3. 4. 5. • de Calcul de Mémoire de Registres Séquenceur Décodeur Elle utilise les 2 registres• principaux suivants : – PC 26/11/07 – RI 2. 3. 4. 5. 6. 7. 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 : – Données – Instructions 70 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é • … 26/11/07 71 26/11/07 72 A voir en TD 26/11/07 73 Quelques questions à se poser… 26/11/07 74