Chapitre 1. Organisation de l’ordinateur 23/01/2011 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. 23/01/2011 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. Mono-cycle Multi-cycle Pipeline 1. 2. 3. V. Implémentation du contrôleur Architecture RISC Décodage des instructions Microprogrammation 1. 2. 3. VI. Exemple du MIPS R3000 23/01/2011 3 I. Cycle d’exécution machine 23/01/2011 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 23/01/2011 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 23/01/2011 6 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 23/01/2011 Bus externe • Données • Adresses 7 • Commandes 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 Transfert 23/01/2011 d’adresses 8 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 23/01/2011 1) Charger la prochaine instruction 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 23/01/2011 2) Charger les données sur lesquelles travaille l’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 23/01/2011 3) Exécuter l’instruction et modifier la copie locale des données 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 4) Ranger le résultat en mémoire 23/01/2011 12 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 5) Envoyer l’adresse de la prochaine instruction 23/01/2011 Revenir à l’étape 1)13 3. Synthèse - Cycle d’exécution machine Un cycle d’exécution machine consiste à 1. Charger l’instruction 2. Décoder 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 7. Retour 23/01/2011 14 II. Structure de l’ordinateur 23/01/2011 15 1. Structure système 1. 2. 3. 4. Unité de traitement Hiérarchie mémoire Périphériques Média de communication (Bus système) 23/01/2011 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 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 23/01/2011 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 abc abc b e1 e2 OU abc en abc s c 23/01/2011 18 s 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 B Bus High Bit 2 N 6 C Bus 23/01/2011 ALU Shifter 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 sousjacente Informations au niveau mot Dimensionnement des champs de l’instruction : Adresse Code d’instruction adressage Constantes Opérandes… 23/01/2011 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 23/01/2011 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; 23/01/2011 */ 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 : Compilateurs Assembleurs Interpréteurs Editeurs 23/01/2011 de liens 23 int main (){ int a = 3; … return a = b+c; } main : load a, R1 add R1, R2, R3 … $0F47 0x03D810A2 23/01/2011 24 III. Composants de l’unité de traitement 23/01/2011 25 1. Interface du microprocesseur Alimentation et masse Adresses In Out InOut 23/01/2011 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 26 2. Le chemin de donnée 23/01/2011 27 a. l’ALU B A Fo F1 InvA, EnA, EnB 8 8 N Z ALU Inc 8 O 23/01/2011 28 Tableau de commande des fonctions de l’ALU 23/01/2011 29 Tableau de commande des fonctions de l’ALU 23/01/2011 30 Tableau de commande des fonctions de l’ALU 23/01/2011 31 Tableau de commande des fonctions de l’ALU 23/01/2011 32 b) Registres du processeur Entrées / Sorties de l’ALU ? B A 8 8 6 Commandes ALU N Z 8 O 23/01/2011 33 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 CK RD 23/01/2011 34 Architecture à chargement / rangement Banc de registres Qui place la valeur des signaux de commandes ? B A 8 8 6 Commandes ALU N Z 8 O 23/01/2011 35 c. Accès à la mémoire Accès mémoire @ Banc de registres Registre d’adresse de données (AD) B A 8 8 6 Commandes ALU N Z 8 O 23/01/2011 36 MIPS microprocessor specifications Model Frequency [MHz] Year Process [µm] Transistors [millions] Die size [mm²] IO Power [W] P i n s Voltage 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 800 2004 0.11 -- -- -- -- -- 64 64 4096 R16000A 23/01/2011 37 d. Exemple du MIPS R3000 Data In / Data Out RES Y PC RI R(i) ADR DT … X Adresse 23/01/2011 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) 23/01/2011 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é … 23/01/2011 40 2. Unité de contrôle 23/01/2011 41 Architecture externe du Mips R3000 6 it berr reset frz 3 rw CK 32 adr 23/01/2011 32 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 23/01/2011 rw Partie Opérative Indications 32 data 43 Chemin de données et contrôleur Accès mémoire Banc de registres Contrôleur B A 8 8 6 Commandes ALU 8 O 23/01/2011 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 Le contrôleur Charger la prochaine instruction (registre PC)de dépend 23/01/2011 l’architecture45 Plus précisément 1) Charger l’instruction Accès mémoire 3) Charger les données Registres 6) Retour Adr. Prochaine instruction Contrôleur 2) Décoder l’instruction B A 8 8 6 Commandes ALU 8 4) Exécuter l’opération 23/01/2011 O 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 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…) RI Donnée sup 23/01/2011 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 Ces instructions sont des suites de bits (commandes) que l’on peut coder par des mnémoniques : ADD LOAD Aucune 23/01/2011 Décodage R0, R0, R1 Aucune R0 Mémoire R0 et R1 A+B Aucune Registre mémoire A Lecture R3, (R4) … R3 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 programme Codedu machine Assembleur Micro 23/01/2011 ... $40 $37 $F0 $35 $20 $32 $10 $00 $F0 $20 $24 $3B ... 49 Cycle d’exécution machine PC PC+1 1. Charger l’instruction 2. Incrémenter PC 3. Décoder l’instruction RI 4. Charger les données Registres de travail 5. Exécuter l’opération 6. Ranger le résultat 7. Retour 23/01/2011 RI_tmp DECOD R_AdrD ALU 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 2. 3. Registre d’adresse de données Registre d’adresse d’instructions ou Compteur Ordinal (CO) ou PC Registres de travail (architecture à Accumulateur, à Pile, à banc de registres) L’ALU Le contrôleur 4. Décodeur 5. Registre de transfert des instructions Registre d’instruction Séquenceur – 23/01/2011 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 ALU N Z 8 23/01/2011 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 Elle utilise les 2 registres principaux suivants : PC RI 23/01/2011 1. 2. 3. 4. 5. 6. 7. Elle s’exécute en 7 étapes : 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 : 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 23/01/2011 MSI MAJ_ MUX_ DEC_ COMP_ HalfAdder _ ADDER_ Registre_ LSI PLA_ ALU_ RAM_ 54 Animation : Exécution du processeur 23/01/2011 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. 4. 5. 23/01/2011 Calcul (ALU) Registres de travail Transfert mémoire Séquenceur Décodeur 56 Architecture de base d’un processeur (architecture Von Neumann) Unité(s) de calcul Unité d’adressage Registres @ données Unité de décodage 23/01/2011 Séquenceur 57 Exécution du programme ALU banc de registres unité d’adressage R0 R1 PC RI unité de décodage 23/01/2011 58 Exemple (simple) /* exemple en C */ /* code assembleur */ int a,b; /* a:R0 a = 2; b:R1 */ load R0,2; b = 12; load R1,12; a = a + b; add R0,R0,R1; compilateur ... 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. 23/01/2011 59 load 23/01/2011 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 23/01/2011 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 23/01/2011 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 23/01/2011 63 add 23/01/2011 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, RI R0, R1 unité de décodage 23/01/2011 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 23/01/2011 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 23/01/2011 67 Cas des accès en mémoire /* exemple en C */ /* code assembleur */ int Tab[100]; /* a:R0 a = Tab[0]; 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; compilateur 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. 23/01/2011 68 load 23/01/2011 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 23/01/2011 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 23/01/2011 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 23/01/2011 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 23/01/2011 73 store 23/01/2011 (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 23/01/2011 75 Phase de décodage de l’instruction (Decode) ALU banc de registres R2 unité d’adressage PC+1 R3 store (R2), R3 ? unité de décodage 23/01/2011 76 Phase d’exécution de l’instruction (Execute) ALU banc de registres R2 unité d’adressage PC+1 R3 store (R2), R3 unité de décodage 23/01/2011 77 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) 23/01/2011 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 23/01/2011 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 23/01/2011 80 Phase d’exécution de l’instruction (Execute) ALU banc de registres unité d’adressage sub R0 R1 R2 etiq beq etiq si la condition est vraie R0,R1,etiq unité de décodage 23/01/2011 81 IV. Implémentation du Contrôleur 23/01/2011 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 multicycles 1 Cycle k Cycles 1. Fetch instruction 2. Incrémenter PC 1. Fetch instruction 2. Incrémenter PC 3. Décoder l’instruction 4. Charger données 5. Exécuter l’opération Registre 23/01/2011 6. Ranger le 3. Décoder l’instruction 4. Charger données 5. Exécuter l’opération 6. Ranger le résultat 83 Quelles différences Supposons les informations suivantes : Étape d’exécution Temps d’exécution 23/01/2011 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 monocyle? Quel est le temps d’exécution de l’instruction en monocyle? 23/01/2011 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 ? 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 monocyle? P = 10 ns, F = 100MHz T = 10 ns Quel est le temps d’exécution de l’instruction en monocyle? T = 2*6 = 12 ns 23/01/2011 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 23/01/2011 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 23/01/2011 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 23/01/2011 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 23/01/2011 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é 23/01/2011 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 23/01/2011 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 23/01/2011 93 Séquenceur micro-programmé Concept de microprogrammation introduit par M. Wilkes en 1951 Premier processeur à avoir utilisé un microprogramme : 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 23/01/2011 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 Sortie = données à l’emplacement mémoire morte (ROM) Entrées = adresse désigné 23/01/2011 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) 23/01/2011 96