Architecture Fondamentale des Microprocesseurs Institut Supérieur d’Electronique du Nord 41 Boulevard Vauban - 59046 Lille Cedex - France 1 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Architecture d’un ordinateur Canaux de communication (bus) Unité centrale Mémoire centrale Contrôleurs d’entrée/sortie ou interface 2 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Les types d’architecture : SISD Une instruction manipule une seule donnée (Single Instruction Single Data) instruction 3 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Les types d’architecture : SIMD Une instruction manipule un ensemble de données (Single Instruction Multiple Data) : machine tableau instruction 4 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Les types d’architecture : MISD 5 Un ensemble d’instructions manipule une seule donnée (Multiple Instruction Single Data) : machine vectorielle ou pipeline Instruction 1 Instruction 2 Instruction 2 Instruction 3 Instruction 3 Instruction 4 Instruction 4 Instruction 5 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Les types d’architecture : MIMD Un ensemble d’instructions manipule un ensemble de données (Multiple Instruction Multiple Data) : machine multi-processeurs SIMD SISD SISD 6 MISD Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Architecture de Von Neuman Machine de Von Neuman (1945) 7 programme : suite d’instructions codées en binaire et mémorisées en mémoire centrale données : codées en binaire et mémorisées en mémoire centrale les instructions sont exécutées séquentiellement par l’unité centrale une instruction manipule une seule donnée (SISD) Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Mémoire centrale : rôle et fonctions Rôle : mémorisation des instructions et des données code binaire (algèbre de Boole) Fonctions d’accès : 8 0 : absence de courant 1 : présence de courant écriture : mémorisation d’une information lecture : récupération d’une information préalablement enregistrée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Mémoire centrale : constituants Cellule mémoire : circuit électronique chargé de mémoriser un seul bit d’information Mémoire centrale : 9 construire un mot à partir d’un ensemble de cellules construire un ensemble de mots créer un mécanisme d’accès à un mot dans l’ensemble des mots : adressage Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Mémoire centrale : vision logique Vision logique : tableau de mots plus ou moins grand mécanisme d’adressage : chaque mot est repéré par son emplacement (adresse) dans le tableau (indice) 2006 FF 2005 FE Entier signé sur 16 bits (valeur -2) 2004 10 2003 B9 2002 0E 2001 77 2000 92 Flottant IEEE sur 32 bits (valeur -1,2345.10-4) Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Unité centrale : composition 11 L’unité centrale (CPU - Central Processing Unit) regroupe 5 blocs fonctionnels : l’unité de contrôle l’unité arithmétique et logique les registres généraux les registres spécialisés l’interfaçage avec l’extérieur Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Unité de contrôle intel 8085 Bus de communication interne Registre d’instruction Accumulateur Registre B Registre C Registre D Registre E UAL Registre H Registre L Décodeur d’instructions et séquenceur Indicateurs Unité de contrôle Horloge 12 Interruptions Bus de contrôle Pointeur de pile SP Compteur ordinal PC Registre d’adresse Registre de donnée Bus d’adresse Bus de donnée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Unité de contrôle Elle contrôle la totalité du fonctionnement de l’unité centrale lecture, décodage, et exécution des instructions lecture et écriture des données en mémoire centrale lecture et écriture des registres contrôle de l’unité arithmétique et logique contrôle de l’interface avec l’extérieur : 13 bus d’adresse et de donnée fonctions d’accès à la mémoire centrale interruptions, ... Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Programme Un programme écrit en langage évolué (C) n’est pas compréhensible directement par la machine (i.e. par l’unité de contrôle) compilateur ... if (i == 0) { i = 1 ; } j = 2 ; ... 14 assembleur ... cmp bne move label: move ... i,#0 label #1,i #2,j ... 1000 1004 1007 100B 3E332000 2A100B 3F332001 3F332102 ... Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Instructions mnémonique code opération (opcode) ... i,#0 label #1,i #2,j ... 1000 1004 1007 100B opérande(s) adresse cmp bne move label: move ... étiquette 15 3E 332000 2A 100B 3F 332001 3F 332102 ... opérande(s) Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Exécution d’un programme intel 8085 Bus de communication interne Registre d’instruction Accumulateur Registre B Registre C Registre D Registre E UAL Registre H Registre L Décodeur d’instructions et séquenceur Indicateurs Unité de contrôle Horloge 16 Interruptions Bus de contrôle Pointeur de pile SP Compteur ordinal PC Registre d’adresse Registre de donnée Bus d’adresse Bus de donnée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Exécution d’un programme Le compteur ordinal (PC ou Program Counter) registre spécialisé contient à tout moment l’adresse de l’instruction qui va être exécutée PC 17 1004 0B 1006 10 1005 2A 1004 00 1003 20 1002 33 1001 3E 1000 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Unité arithmétique et logique (ALU) intel 8085 Bus de communication interne Registre d’instruction Accumulateur Registre B Registre C Registre D Registre E UAL Registre H Registre L Décodeur d’instructions et séquenceur Indicateurs Unité de contrôle Horloge 18 Interruptions Bus de contrôle Pointeur de pile SP Compteur ordinal PC Registre d’adresse Registre de donnée Bus d’adresse Bus de donnée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Unité arithmétique et logique (ALU) Rôle : calcul d’opérations élémentaires opérations arithmétiques addition, soustraction, multiplication, division changement de signe opérations logiques et, ou, ou exclusif, inversion décalage, rotation Traite des mots de taille fixe (1, 2, 4 octets) Génère les indicateurs 19 caractérisation du dernier résultat produit par l’ALU Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Registres intel 8085 Bus de communication interne Registre d’instruction Accumulateur Registre B Registre C Registre D Registre E UAL Registre H Registre L Décodeur d’instructions et séquenceur Indicateurs Unité de contrôle Horloge 20 Interruptions Bus de contrôle Pointeur de pile SP Compteur ordinal PC Registre d’adresse Registre de donnée Bus d’adresse Bus de donnée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Registres Registres généraux Registres spécialisés 21 opérandes pour l’unité arithmétique et logique résultats des calculs (accumulateur) en nombre variable (2 à plusieurs dizaines) taille = taille des mots traités par l’ALU compteur ordinal (Program Counter - PC) registre d’état (Status Register - SR) pointeur de pile (Stack Pointer - SP) Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Exemple d’exécution ... if (i == 0) { i = 1 ; } j = 2 ; ... ... cmp bne move label: move ... 3322 3321 3320 i,#0 label #1,i #2,j 1000 1004 1007 100B 100F PC 04 02 10 ... 3E332100 2A100B 3F332101 3F332002 ... 100F ???? 1000 1007 1004 (variable i) (variable j) SR (indicateur Z) ? 0 3319 22 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Modes d’adressage des opérandes Permettent de localiser précisément les opérandes d’une instruction immédiat (constante) registre (donnée « anonyme ») direct (donnée « variable ») en mémoire centrale indirect (pointeur sur ...) en mémoire centrale via un registre autres suivant la puissance du CPU : 23 indirect avec déplacement (8086, 68000) pré/post indexé (68000) facteur d’échelle (80386) Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Modes d’adressage (1) immédiat (constante) 0 registre R2 direct / absolu 24 [3044] 1111 R1 2222 R2 3333 R3 4444 R4 33 6666 3046 3E 4444 3044 2222 3042 0000 3040 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Modes d’adressage (2) indirect via registre indirect via registre avec déplacement 25 [R2] [R2-2] R1 1111 R2 3044 6666 3046 R3 3333 4444 3044 R4 4444 2222 3042 0000 3040 R1 1111 R2 3044 6666 3046 R3 3333 4444 3044 R4 4444 2222 3042 0000 3040 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Jeu d’instructions (1) déplacement MOV MOV 26 R3,R2 MOV destination,source 1111 R1 2222 R2 3333 2222 R3 4444 R4 1111 2002 2222 FFFC 2000 3333 1FFE 4444 1FFC [2000],-4 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Jeu d’instructions (2) opérations ADD ADD R3,R2 NOT NOT [R2] 27 destination,source 1111 R1 2222 R2 3333 5555 R3 4444 R4 destination R1 1111 R2 3044 6666 3046 R3 3333 4444 BBBB 3044 R4 4444 2222 3042 0000 3040 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Jeu d’instructions (3) Saut inconditionnel - JMP adresse Saut conditionnel - JNZ adresse 28 le compteur ordinal (PC) est remplacé par l’adresse spécifiée par l’instruction l’exécution du programme reprend à partir de la nouvelle valeur du compteur ordinal la condition porte sur la valeur d’un ou de plusieurs indicateurs de l’UAL (registre d’état) le compteur ordinal (PC) est remplacé par l’adresse spécifiée par l’instruction si et seulement si la condition est vérifiée Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Sous-programme Vision logique : 2 composants une pile mémorisée en mémoire centrale le pointeur de sommet de pile (Stack Pointer - SP) Appel d’un sous-programme : CALL adresse // création d’un nouveau sommet // sauvegarde de l’adresse de retour // saut au sous-programme Retour d’un sous-programme : RETURN 29 SP SP - k [SP] PC PC adresse PC [SP] SP SP + k // restauration de l’adresse de retour // destruction du sommet Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Exemple d’exécution 1 ... 2 CALL 100 3 ... 99 100 101 102 201 102 100 200 101 4 2 3 PC 1004 3 101 ... CALL 200 RETURN ... 1002 1000 pile (k = 2) 199 ... 200 RETURN 201 ... 30 SP 1000 1004 1002 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002 Interruptions Définition : arrivée d’un événement extérieur à l’unité centrale Action : appel forcé d’un sous-programme d’interruption, indépendant du programme en cours d ’exécution Capteur Programme en cours Unité centrale Appel du 18 31 Architecture Fondamentale des Microprocesseurs - Laurent ALLAIN - Juillet 2002