Microprocesseurs & Microcontrôleurs Lotfi BOUSSAID Département de Génie Électrique Ecole Nationale d’Ingénieurs de Monastir [email protected] 2016 - 2017 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 2 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 3 CH 1. Codage de l’Information Histoire des systèmes de numération o Vers la fin des années 30, Claude Shannon démontra qu'à l'aide de contacteurs il était possible d'effectuer des opérations logiques en associant le nombre 1 pour « vrai » et 0 pour « faux ». o Ce codage de l'information est nommé base binaire. o L'homme calcule depuis 2000 ans avant Jésus-Christ avec 10 chiffres (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), on parle alors de base décimale (ou base 10). o Toutefois dans des civilisations plus anciennes ou pour certaines applications actuelles d'autres bases de calcul ont et sont toujours utilisées : • base sexagésimale (60), utilisée par les Sumériens ; • base vicésimale (20), utilisée par les Mayas ; • base duodécimale (12), les anglo-saxons dans le système d’heure ; • base quinaire (5), utilisée par les Mayas ; • base binaire (2), utilisée par l'ensemble des technologies numériques Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 4 CH 1. Codage de l’Information Bit • • • Le terme bit signifie « Binary Digit », c'est-à-dire 0 ou 1 ; Un bit : deux états sont possibles : soit 1, soit 0 ; Deux bits : 4 états possibles : 00, 01, 10 et 11 Poids des bits Dans un nombre binaire, la valeur d'un bit, appelée poids, dépend de la position du bit en partant de la droite. Nombre binaire Poids 1 1 1 1 1 1 1 1 27=128 26=64 25=32 24=16 23=8 22=4 21=2 20=1 Octet L'octet (byte) est une unité d'information composée de 8 bits. Il permet de stocker un caractère, tel qu'une lettre ou un chiffre. Le plus petit nombre est représenté par : 00000000 = 0 Le plus grand nombre est représenté par : 11111111 = 255 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 5 CH 1. Codage de l’Information Un kilooctet (ko) = 210 octets = 1024 octets Un Mégaoctet (Mo) = 220 octets = 1024 ko = 1 048 576 octets Un Gigaoctet (Go) = 230octets = 1024 Mo = 1 073 741 824 octets Un Téraoctet (To) = 240 octets = 1024 Go = 1 099 511 627 776 octets Systèmes de numération en base 2, 8 et 16 Dans un système de base b > 1, les symboles 0, 1, 2, .. b-1 sont appelés chiffres. Tout nombre entier positif peut être représenté par une expression de la forme : 𝑁 = 𝑛𝑖=0 𝑎𝑖 𝑏𝑖 Forme canonique On utilise la notation condensée : N = (an an-1 … a1 a0 )b En base 10 : (132)10 = 1 x 102 + 3 x 101 + 2 100 En binaire : (132)10 = 1 x 27 + 0 x 26 + 0 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 0 x 20 = (10000100)2 En base 8 : (132)10 = 2 x 82 + 0 x 81 + 4 x 80 = (204) 8 En base 16 : (132)16 = 8 x 161 + 4 x 160 = (84)16 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 6 CH 1. Codage de l’Information Systèmes de numération en base 2, 8 et 16 Décimal Binaire Hexadécimal Octal 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 17 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 7 CH 1. Codage de l’Information Conversions entre systèmes Binaire Décimal Lotfi BOUSSAID Hexadécimal Microprocesseurs & Microcontrôleurs 8 CH 1. Codage de l’Information Conversions entre systèmes Méthode des soustractions successives Méthode des divisions successives Méthode de regroupement Méthode d’éclatement Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 9 CH 1. Codage de l’Information Conversions entre systèmes • Méthodes des divisions successives (125)10 = (1111101)2 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 10 CH 1. Codage de l’Information Conversions entre systèmes • Méthodes des soustractions successives (235)10 = (?)8 80 = 1; 81 = 8; 82 = 64; 83 = 512 235 – 64 = 171; 171 – 64 = 107; 107 – 64 = 43; => 3 x 64 43 – 8 = 35; 35 – 8 = 27; 27 – 8 = 19; 19 - 8 = 11; 11 - 8 = 3 => 5 x 8 3 – 1 = 2; 2 – 1 = 1; 1 – 1 = 0; => 3 x 1 (235)10 = 3 x 64 + 5 x 8 + 3 x 1 = (353)8 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 11 CH 1. Codage de l’Information Conversions entre systèmes • Méthode de regroupement (001 111 101 010 11 1 100)2 (1111 1010 1011 1100)2 (F A B C)16 (1 7 5 2 7 4)8 • Méthode d’éclatement (5 3 7 2 6)8 (101 011 111 010 110)2 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 12 CH 1. Codage de l’Information Limitation des représentations Le nombre de symboles n’est pas infini. Sur n bits il n’est possible d’écrire que : 2n nombres différents! (De 0 à 2n-1) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 13 CH 1. Codage de l’Information Codage des entiers Les entiers naturels Les entiers relatifs o Codage en complément à 1 (restreint) o Codage en complément à 2 Récapitulatif: codage sur 4 bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 14 CH 1. Codage de l’Information Les entiers naturels Sur 8 bits (un octet) on peut écrire 28 nombres différents, soit les entiers naturels de 0 à 255. Codage standard ASCII sur 1 octet (American Standard Code for Information Interchange) De 0 à (31)d, les codes ASCII ne sont pas imprimable - (10)10 = (0A)16 début de ligne - (13)10 = (0D)16 passage à la ligne - De (32)10 à (127)10 les codes ASCII sont standards - (48)10= (30)16 caractère ‘0’ - (49)10 = (31)16 caractère ‘1’ - (65)10 = (41)16 caractère ‘A’ - (97)10 = (61) 16 caractère ‘à’ Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 15 CH 1. Codage de l’Information Les entiers relatifs Comment stocker des entiers qui peuvent être soit positifs soit négatifs? Il faut stocker le signe et la valeur absolue! Sur n bits, le plus grand positif sera au mieux de 2n-1-1 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 16 CH 1. Codage de l’Information Codage en complément à 1 (restreint) sur n bits Signe sur le premier bit à gauche, Les positifs sont codés comme des entiers naturels en ajoutant 1 zéro à gauche pour obtenir n bits, Pour les négatifs tous les bits sont inversés par rapport au codage en entier naturel sur n bits. Exemple: (00010011)CR code +19 (11101100)CR code -19 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 17 CH 1. Codage de l’Information Codage en complément à 2 sur n bits Signe sur le premier bit à gauche, Les positifs sont codés comme des entiers naturels en ajoutant 1 zéro à gauche pour obtenir n bits. Pour les négatifs on ajoute 1 au codage en complément à 1 sur n bits. Exemple: (00010011)CR code +19 (11101101)CR code -19 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 18 CH 1. Codage de l’Information Codage des entiers relatifs sur 4 bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 19 CH 1. Codage de l’Information Opérations En complément à un • Le codage se fait en une étape • L’addition en deux étapes En complément à deux • Le codage se fait en deux étapes • L’addition se fait en une étape • Il est utilisé dans les machines actuelles Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 20 CH 1. Codage de l’Information Nombres Fractionnaires N = an2n + an-1 2n-1 + … + a1 21 + a020 + a-12-1 + a-22-2 + … Cette dernière formule peut donc servir de conversion binaire-décimal. Exemple : an2n + an-1 2n-1 + … + a1 21 + a0 + a-1(1/2) + a-2 (1/4) + … 0,0112 = 0 x (1/2) + 1 x (1/4) + 1 x (1/8) = 0 + 0,25 + 0,125 = (0,375)10 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 21 CH 1. Codage de l’Information Nombres Fractionnaires Exemple : (0,5625)10 Réponse : (0,10010000)2 Pour passer du décimal à une autre base, il suffit de multiplier par la base en question au lieu de 2. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 22 CH 1. Codage de l’Information Nombres Fractionnaires Pour un nombre constitué d’une partie entière et d’une partie fractionnaire, on convertit les deux parties séparément, la partie entière avec l’une des méthodes de conversion des entiers, la partie fractionnaire avec les méthodes présentées dans la présente section. Exemple: convertir (123,21)4 en décimal 1234= 1 x 42+ 2 x 41 + 3 40 = 2710 0,214= 2 x 4-1 + 1 x 4-2 = 2 x 0,25 + 1 x 0,0625 = 0,562510 Réponse : 27,562510 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 23 CH 1. Codage de l’Information Nombres Fractionnaires Le développement s’arrête lorsque la précision voulue est obtenue Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 24 CH 1. Codage de l’Information Nombres Fractionnaires Virgule fixe Partie entière Partie fractionnaire 32 32 Inconvénients : étendue de représentation limitée - 32 bits seulement dans la partie entière - 32 bits seulement dans la partie fractionnaire - Perte de précision pour les petits nombres Complexité de traitement de la virgule lors d’opérations telles que la multiplication et la division. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 25 CH 1. Codage de l’Information Nombres Fractionnaires Virgule fixe Exemples : 1,0 = 00000001,0000000016 -1,0= FFFFFFFF,0000000016 0,5= 00000000,8000000016 -0,5= FFFFFFFF,8000000016 Plus petit nombre positif : 00000000,00000001 = 1 / 4 294 967 296 Plus grand nombre positif :7FFFFFFF,FFFFFFFF = +2 147 483 647,999999999767 Plus grand nombre négatif : 80000000,00000000 = -2 147 483 648, 999999999767 Plus petit nombre négatif : FFFFFFFF,FFFFFFFF = -1 / 4 294 967 296 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 26 CH 1. Codage de l’Information Nombres Fractionnaires Virgule flottante simple précision la norme IEEE 754: X = (-1)S x1,M x2E-127 S :Signe, M :Mantisse, E : Exposant Exemple : 9 = (-1)0 x 1,125 x 23 (9/8=1+1/8) S=0 E=130 M=1/8 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 27 CH 1. Codage de l’Information Nombres Fractionnaires Virgule flottante simple précision Exemple : 100010= 3E816= 11111010002= 1,111101000 x 29 s= 0 car nombre positif E - 127 = 9 E = 136 = 100010002 M= 1,111101000 donc f= ,111101000 0 10001000 11110100000000000000000 qu’on peut écrire 447A0000IEEE en groupant les bits 4 par 4 et en les codant en hexadécimal Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 28 CH 1. Codage de l’Information Nombres Fractionnaires Virgule flottante double précisions - La mantisse M est normalisée sous la forme 1; f et l’exposant est ajusté en conséquence; La partie f est codée sur 52bits; On ajoute 1023 à E et le total est codé sur 11 bits ; S est le signe de la mantisse. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 29 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 30 CH 2. Les portes logiques La Porte Non (Not) Table de vérité Entrée Sortie E S E S 0 1 1 0 S=𝑬 Entrée Sortie Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 31 CH 2. Les portes logiques La Porte ET (AND) Table de vérité S= A · B Lotfi BOUSSAID A B S 0 0 0 1 0 0 0 1 0 1 1 1 Microprocesseurs & Microcontrôleurs 32 CH 2. Les portes logiques La Porte Non ET (NAND) Table de vérité S= A · B Lotfi BOUSSAID A B S 0 0 1 1 0 1 0 1 1 1 1 0 Microprocesseurs & Microcontrôleurs 33 CH 2. Les portes logiques La Porte OU (OR) Table de vérité S= A + B Lotfi BOUSSAID A B S 0 0 0 1 0 1 0 1 1 1 1 1 Microprocesseurs & Microcontrôleurs 34 CH 2. Les portes logiques La Porte Non OU (NOR) Table de vérité S= A + B Lotfi BOUSSAID A B S 0 0 1 1 0 0 0 1 0 1 1 0 Microprocesseurs & Microcontrôleurs 35 CH 2. Les portes logiques La Porte OU Exclusif (XOR) Table de vérité S = A ⊕𝑩 Lotfi BOUSSAID A B S 0 0 0 1 0 1 0 1 1 1 1 0 Microprocesseurs & Microcontrôleurs 36 CH 2. Les portes logiques La Porte Non OU Exclusif (XNOR) Table de vérité S = A ⊕𝑩 Lotfi BOUSSAID A B S 0 0 1 1 0 0 0 1 0 1 1 1 Microprocesseurs & Microcontrôleurs 37 CH 2. Les portes logiques Buffer à trois états S=E si Activation = 1 S=E si Activation = 0 S=Z si Activation = 0 S=Z si Activation = 1 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 38 CH 2. Les portes logiques 4 Types de Buffer à trois états Activation = 1 Sortie inversée Activation = 1 Sortie non inversée Activation = 0 Sortie inversée Activation = 0 Sortie non inversée Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 39 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 40 CH 3. Les Registres, les mémoires et les ALU La bascule D Latch D H Qn D H Qn D H Qn 0 1 0 0 ↑ 0 0 ↓ 0 1 1 1 1 ↑ 1 1 ↓ 1 X 0 Qn-1 X Lotfi BOUSSAID 0 ou 1 Qn-1 X 0 ou 1 Qn-1 Microprocesseurs & Microcontrôleurs 41 CH 3. Les Registres, les mémoires et les ALU La bascule D Différence de comportement entre le Latch et la bascule H Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 42 CH 3. Les Registres, les mémoires et les ALU Les Registres à décalage Registres à entrée série et sortie série Registres à entrée série ou entrée parallèle et sortie série Registres à entrée série et sortie parallèle Registres à entrée parallèle et sortie parallèle (avec sortie 3 états) Registres à décalage bidirectionnel Registres à entrée série et sortie série ou entrée ou sortie parallèle Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 43 CH 3. Les Registres, les mémoires et les ALU Les Registres à décalage Registre à entrée série et sorties parallèles Registre à entrées parallèles et sorties parallèles Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 44 CH 3. Les Registres, les mémoires et les ALU Les multiplexeurs Le multiplexeur a des entrées de sélection (adresses) et des entrées d'informations (données).Avec deux entrées de sélection on obtient 4 combinaisons. Un multiplexeur qui a n entrées de sélection aura 2n entrées d'information. Exemple: B=0 A=1 B=1 A=0 D0 D1 D2 D3 S=D1 S=D2 S AB Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 45 CH 3. Les Registres, les mémoires et les ALU Les Décodeurs / Codeurs Décodeur Un décodeur : A une entrée binaire de n bits correspond 2n combinaisons et M sorties telles que 2n≥M. Codeur Le codeur : Une seule entrée parmi M est activée à la fois, ce qui correspond à un nombre binaire en sortie. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 46 CH 3. Les Registres, les mémoires et les ALU Addition binaire 0+0=0 1+0=1 1 + 1 = 0 avec retenue de 1 1+1+1 = 1 avec retenue de 1 Demi Additionneur Somme : OU exclusif Retenue : AND A B S A B R 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 47 CH 3. Les Registres, les mémoires et les ALU Addition binaire Dans l'additionneur complet, les reports précédents et suivants doit être pris en compte Addition hexadécimal B3 10110011 78 + 01111000 retenues Total Lotfi BOUSSAID +1 00000000 1 0010 1011 Microprocesseurs & Microcontrôleurs 48 CH 3. Les Registres, les mémoires et les ALU Soustraction binaire La soustraction est réalisée à l'aide de l'addition. On utilise pour cela le complément à 2. Le codage par complémentation permet de transformer une soustraction en addition. Soit une soustraction décimale : 9 -5 = 4 et en binaire : 0000 1001 -0000 0101 = 0000 0100 Le complément à 1 de 0000 0101 est : 1111 1010 Et le complément à 2 est : 1111 1010 + 1 = 1111 1011 En binaire signé le bit le plus à gauche est un 1 (nombre négatif) Nous obtenons l'addition suivante : 0000 1001 + 1111 1011 = 0000 0100 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 49 CH 3. Les Registres, les mémoires et les ALU Additionneur 4 bits : Le 4008 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 50 CH 3. Les Registres, les mémoires et les ALU A et B sont les entrées de l’ALU; se sont les données à manipuler qu’on appelle “Operands” ; R est la sortie, le résultat de traitement ; F est le code (Instruction) qui parviens de l’Unité de Contrôle ; D indique l’état de la sortie, connue aussi par la condition du code, elle indique les cas tels que la retenue (carry-in), le dépassement (Overflow), la division par zéro, etc. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 51 CH 3. Les Registres, les mémoires et les ALU Unité logique AND et OR • Exécute AND et OR Additionneur complet • Additionneur complet 1-bit ALU 1-bit • Exécute AND, OR, et l’addition Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 52 CH 3. Les Registres, les mémoires et les ALU ALU 1 bits : Ajout de la soustraction Inverser chaque bit (par l’inverseur) de b et rajouter 1 Implémentation : Solution: a + (-b) = a + (b’ +1) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 53 CH 3. Les Registres, les mémoires et les ALU ALU 1 bits : Fonction NOR NOR (a,b) = not (a or b) = not(a) . Not(b) Implémentation : Ajouter un inverseur au niveau de a Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 54 CH 3. Les Registres, les mémoires et les ALU ALU 32 bits : La sortie Result fournit le résultat de la fonction appliquée aux entrées A et B La sortie Zero indique si toutes les sorties sont à zéro. La sortie Overflow indique le dépassement qui résulte après une opération d’addition ou de soustraction; pour le binaire non signé cette sortie ne fournit une information utile; La sortie Carry out indique la retenue et le dépassement des entiers non signés. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 55 CH 3. Les Registres, les mémoires et les ALU ALU 32 bits : Deux fonctions AND et OR Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 56 CH 3. Les Registres, les mémoires et les ALU ALU 32 bits : Trois fonctions AND, OR et ADD Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 57 CH 3. Les Registres, les mémoires et les ALU ALU 32 bits : Quatre fonctions AND, OR , ADD et SUBSTRACT Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 58 CH 3. Les Registres, les mémoires et les ALU Unité Arithmétique et Logique 4 bits : Le 74LS381 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 59 CH 3. Les Registres, les mémoires et les ALU Les Mémoires Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 60 CH 3. Les Registres, les mémoires et les ALU Hiérarchie des mémoires Les différents éléments de la mémoire d’un ordinateur sont ordonnés en fonction des critères suivants : Temps d’accès Capacité Coût par bit Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 61 CH 3. Les Registres, les mémoires et les ALU Hiérarchie des mémoires Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 62 CH 3. Les Registres, les mémoires et les ALU Types d’accès Accès séquentiel (e.g. bande magnétique): le plus lent de tous Accès direct ou aléatoire (e.g. mémoire centrale, registres) : chaque information a une adresse. Accès semi-séquentiel (e.g. disques) Accès par le contenu ou associatif (e.g. mémoire cache) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 63 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs La mémoire à accès direct (RAM) : chaque bit a une adresse (adresse rangée + adresse colonne). La mémoire dite statique (SRAM) : Les éléments de mémoire sont des bistables et l’information reste sur la sortie tant que les signaux de lecture sont appliqués. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 64 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire à m bits par adresse Capacité totale : n x n x m bits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 65 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Statique 1 bit La mémoire statique nécessite 6 transistors par bit et s’avère très coûteuse en pratique, même si elle est la plus rapide. Les puces de mémoire statique ont donc une capacité relativement modeste. On utilise la mémoire statique pour la mémoire cache. Quatre de ces six transistors constituent deux inverseurs mis en tête-bêche et les deux derniers, commandés par la ligne d'adresse A, relient les inverseurs aux lignes de données Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 66 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Statique 128 Ko Nombre total de bits : 128K x 8 = 1 Mbit. Nombre total d’adresses = 217 = 128 Ko. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 67 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Statique 128 Ko Nombre total de bits : 128K x 8 = 1 Mbit. Nombre total d’adresses = 217 = 128 Ko. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 68 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Dynamique 1 bit On utilise donc pour la mémoire centrale la mémoire dynamique ou DRAM. Dans ce cas, l’élément de mémoire est une capacité et est beaucoup moins coûteux. L’inconvénient est que l’information est volatile et qu’il faut la rafraîchir périodiquement (chaque ms environ). Mémoire dynamique 1 bit La ligne A est appelée ligne de commande ou ligne d'adresse. La ligne B est la ligne de donnée sur laquelle est lu ou écrit le bit d'information. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 69 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Dynamique Dans le cas de la mémoire dynamique, l’adresse est scindée en deux moitiés, l’adresse de rangée et l’adresse de colonne. On applique d’abord l’adresse de rangée. On active la ligne RAS (Row Address Select). Puis on applique l’adresse de colonne. On active finalement la ligne CAS (Column Address Select). Ceci permet de réduire de moitié le nombre de broches de la puce. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 70 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Dynamique Mémoire dynamique : chronogramme Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 71 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Morte ROM (Read Only Memory) PROM(Programmable Read Only Memory) EPROM (Electrically Programmable Read Only Memory) EAROM (Electrically Alterable Read Only Memory) EEPROM (Electrically Erasable Programmable Read Only Memory) Une partie du système d’exploitation se trouve souvent en mémoire morte. C’est le cas pour le BIOS du PC et le Toolbox du Macintosh. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 72 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Morte Le principe de fonctionnement d'une PROM est fort similaire à celui d'une ROM. Dans une PROM vierge, les diodes sont en série avec de petits fusibles. La programmation se fait en brûlant les fusibles pour les positions des bits devant être mis à 1. Cette opération est irréversible. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 73 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Cache La mémoire centrale étant lente par rapport à la vitesse d’horloge des processeurs actuels, on utilise une mémoire cache ou antémémoire de capacité plus faible et faite de mémoire statique entre le processeur et la mémoire centrale. On y place les données les plus récemment utilisées. Elle contient donc une petite partie de la mémoire centrale. Lors d’un accès mémoire, le système de gestion de mémoire cache doit déterminer si l’information désirée se trouve dans le cache. Si elle s’y trouve, on n’a pas besoin d’aller en mémoire centrale et on obtient l’information à la vitesse du cache (~5ns). Si elle ne s’y trouve pas, on la copie de la mémoire centrale vers le cache, de sorte qu’elle s’y trouvera la prochaine fois. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 74 CH 3. Les Registres, les mémoires et les ALU Mémoires à semi-conducteurs Mémoire Cache Un cache est donc inutile et même nuisible pour un programme qui n’aurait aucune boucle, ou qui n’utiliserait jamais de données contigües. Les processeurs modernes ont deux caches internes (L1): o un pour les instructions, o un pour les données, On utilise aussi habituellement un cache externe d’une capacité beaucoup plus grande (L2). Pentium : o Cache interne :instructions : 16 Ko o données : 16 Ko o Cache externe :512 Ko Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 75 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 76 CH 4. Introduction aux Microprocesseurs Motivations Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 77 CH 4. Introduction aux Microprocesseurs Histoire des calculateurs Les ordinateurs mécaniques Abaque Pascaline Métier à tisser Falcon Lotfi BOUSSAID Boulier chinois Machine à différence Microprocesseurs & Microcontrôleurs 78 CH 4. Introduction aux Microprocesseurs Histoire des calculateurs Les ordinateurs électroniques En 1946 premier ordinateur ENIAC (Electronics Numerical Integrator and Calculator) 17000 tubes à vide 50 000 câbles électriques 30 Tones Traitement de 100 000 opérations par seconde Se Programme par un nouveau câblage de ses circuits Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 79 CH 4. Introduction aux Microprocesseurs Histoire des calculateurs Les ordinateurs électroniques 1948 Fabrication du transistor par les laboratoires BELL 1958 Invention du circuit intégré par TEXAS INSTRUMENTS 1960 Fabrication du circuit intégré numérique 1971 Premier Microprocesseur le 4004 d’Intel • • • • • Lotfi BOUSSAID 2250 Transistors 4 bits 45 Instructions 40-50K instructions par secondes Horloge 100 KHz Microprocesseurs & Microcontrôleurs 80 CH 4. Introduction aux Microprocesseurs Histoire des calculateurs Les microprocesseurs Année μP # Bits Taille Mémoire # Instr. Lotfi BOUSSAID Caractéristiques Microprocesseurs & Microcontrôleurs 81 CH 4. Introduction aux Microprocesseurs Les microprocesseurs Architecture des microordinateurs à base de microprocesseur μP WR RD IOW IOR Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 82 CH 4. Introduction aux Microprocesseurs Le CPU 8085AH 8 bits d’Intel Il existe en plusieurs versions 8085A, 8085AH, 8085AH-1 et 8085AH-2 ; Fonctionnement à 3 MHz, 5 MHz et 6 MHz ; 1,3 μs par cycle d’instruction pour le 8085AH, 0,8 μs pour 8085AH-2 et 0,67 μs pour le 8085AH-1 ; Générateur d’horloge interne (avec quartz externe ou réseau LC ou RC ) ; 4 vecteurs d’interruption dont 1 non masquable Interface série en entrée et en sortie Précision arithmétique binaire, décimale et double Possibilité d’adressage mémoire Direct jusqu’à 64 Ko de mémoire; Disponible en version à 40 broches Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 83 CH 4. Introduction aux Microprocesseurs Architecture du CPU 8085AH 8 bits d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 84 CH 4. Introduction aux Microprocesseurs Architecture du CPU 8085AH 8 bits d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 85 CH 4. Introduction aux Microprocesseurs Machine cycle status and control signals Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 86 CH 4. Introduction aux Microprocesseurs Opcode fetch MOV B,C Data Bus Adress Bus Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs CH 4. Introduction aux Microprocesseurs Opcode fetch MOV B,C Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 88 RappelCHsur les Architectures Microprogrammées 4. Introduction aux Microprocesseurs Fetch & Execute operation Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 89 CH 4. Introduction aux Microprocesseurs Instruction MVI A,45H Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 90 CH 4. Introduction aux Microprocesseurs Instruction LXI H,2035H Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 91 CH 4. Introduction aux Microprocesseurs Le KIT SDK-85 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 92 CH 3. Les Registres, les mémoires et les ALU Le KIT SDK-85 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 93 CH 4. Introduction aux Microprocesseurs Von Neumann MÉMOIRE CPU IO IO IO ••••• BUS SYSTÈME Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 94 CH 4. Introduction aux Microprocesseurs Harvard BUS SYSTÈME BUS INSTRUCTIONS MÉMOIRE DONNÉES MÉMOIRE PROGRAMME CPU IO IO IO ••••• BUS DONNÉES Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 95 CH 4. Introduction aux Microprocesseurs Les processeurs CISC (Complex Instructions Set Computer) Les avantages • Instructions plus proches d'un langage de haut niveau • Programmation plus compact • Écriture plus rapide et plus élégante des applications • Moins d'occupation mémoire des programmes • Exécution nécessite moins d'octets mémoire Les inconvénients • beaucoup trop de codes d'instruction différents • taille des instructions élevée et variable (1 à 15 bytes – octets par instruction) • structure des instructions non standardisées: exécution complexe, peu performante Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 96 CH 4. Introduction aux Microprocesseurs Les processeurs RISC (Reduced Instructions Set Computer) • Nette séparation entre les instructions d'accès mémoire et les autres • Instructions standardisées, en taille et en durée d'exécution • Unité de décodage câblée, non microcodée architecture pipeline, superscalaire • Très nombreux registres à usage général • Un ou plusieurs cache (s) internes(s) ainsi que des tampons internes et un jeu d'instruction réduit aux instructions simples Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 97 CH 4. Introduction aux Microprocesseurs Le pipeline (ou pipelining) • LI : Lecture de l'Instruction (en anglais FETCH instruction) depuis le cache ; • DI : Décodage de l'Instruction (DECODe instruction) et recherche des opérandes; • EX : Exécution de l'Instruction (EXECute instruction) • MEM : Accès mémoire (MEMory access), écriture ou chargement de la mémoire ; • ER : Ecriture (Write instruction) de la valeur calculée dans les registres. Objectif du pipeline : Être capable de réaliser chaque étape en parallèle avec les étapes amont et aval Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 98 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Les ordinateurs séquentiels : Augmentation des performances 2 fois / 14 mois (Lois de Moore) Insuffisance pour certaines applications : météorologie, synthèse et reconstruction d'images, simulations numériques, etc. Développer des calculateurs parallèles Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 99 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Applications Grand Challenge également appelées « Applications 3T », parce qu'elles nécessitent pour leur exécution [1]: • 1 Téra flops (floating operation per second) ; • 1 Téra octet de mémoire centrale ; • 1 Téra octet par seconde de bande passante pour produire les résultats. Ces applications ne sont réalisables actuellement qu’en faisant recours à un parallélisme massif : Plus de 8000 processeurs GPP !! [1] François PELLEGRINI, Architecture et systèmes des calculateurs parallèles, ENSEIRB, Octobre 2003. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 100 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Classification de M. J. Flynn Proposée en 1966 et basée sur la notion de flux de données et d’instructions Architecture SISD « Single Instruction stream, Single Data stream » • Traitement séquentiel (architecture Von Neumann) ex: monoprocesseur • Mono unité de contrôle (CU) cherche une Instruction (IS) de la mémoire • Le CU génère les signaux de contrôle appropriés au monoprocesseur (PE) pour traiter une donnée unique (DS) ex: une opération à la fois Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 101 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Classification de M. J. Flynn Architecture SIMD « Single Instruction stream, Multiple Data stream » CU unique et multiple PEs CU cherche une instruction de la mémoire et après décodage, diffuse les signaux de contrôle à tous les PEs Une horloge globale pilote tous les PEs A un moment donné, tous les PEs exécutent de manière synchrone la même instruction mais sur un ensemble différent de données Processeur SIMD appelé aussi processeur vectoriel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 102 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Classification de M. J. Flynn Architecture MISD « Multiple Instruction stream, Single Data stream » • Utilisée dans le cas où la même donnée doit être exécuté de plusieurs façons • Ex: Plusieurs filtres qui opèrent sur le même flux de données Plusieurs algorithmes de cryptographie essayant de cracker le même message codé. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 103 CH 4. Introduction aux Microprocesseurs Les calculateurs Parallèles Classification de M. J. Flynn Architecture MIMD « Multiple Instruction stream, Multiple Data stream » Multiprocesseurs : chacun exécute son propre instruction pour traiter les données qui lui ont été allouées. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 104 Plan du cours CH 1. Codage de l’Information CH 2. Les Portes Logiques CH 3. Les Registres, les mémoires et les ALU CH 4. Introduction aux Microprocesseurs CH 5. Le Microprocesseur 8086 d’Intel CH 6. Le Microcontrôleur PIC16F84 de Microchip CH 7. Introduction à la Programmation en Langage de Haut Niveau Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 105 CH 5. Le Microprocesseur 8086 d’Intel Introduction Premier microprocesseur 16 bits fabriqué par la société Intel L’espace mémoire adressable est organisé en deux bancs de 512ko chacun; Banc Pair et Banc Impair. La ligne d’adresse A0 est utilisée pour la sélection du banc pair et le signal de contrôle BHE est utilisé pour l’accès au banc impair. Approximativement 29000 transistors, 40 pin DIP, Tension 5V Pas d’horloge interne; Horloge externe asymétrique à rapport cyclique de 33% 20 bits d’adresses peut adresser jusqu’à 220=1Mo d’espace mémoire. Lotfi BOUSSAID Utilise 16 lignes d’adresses pour les E/S et la communication avec les périphériques peut générer 216=64k d’adresses. Fonctionne en deux modes: Mode Minimum et Mode Maximum, au moyen des signaux MN et MX. Microprocesseurs & Microcontrôleurs 106 CH 5. Le Microprocesseur 8086 d’Intel Caractéristiques générales du 8086 Microprocesseur 16 bits avec une architecture issue de celle du 8080. Jeu d'instructions très puissant (multiplication et division câblées). Il utilise pour l’adressage des segments spécialisés (transportabilité). Il peut fonctionner soit en mode minimum, soit en mode maximum. La mémoire de un Mo est vu comme un bloc de 512 Kilo-mots. le bus d’adresses et de données sont multiplexés. L’espace mémoires des E/S est séparé du reste de la mémoire. Il est totalement compatible avec le microprocesseur 8088. Il présente 1 entrée d’interruption logicielle et 2 entrées matérielles. Il dispose de circuits d'interface ou de traitements spécialisés. Peut reprendre les circuits périphériques des microprocesseurs 8 bits. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 107 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 108 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 109 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 110 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 111 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Le μP 8086 peut fonctionner selon deux modes: Mode Minimum et Mode Maximum. En mode minimum le μP ne coopère avec aucun coprocesseur et ne peut être utilisé en mode multiprocesseurs. En mode maximum, le 8086 peut fonctionner en multiprocesseurs ou en coopération avec un coprocesseur. Les opérations en mode Minimum ou maximum sont décidées par la broche MN/MX (Active par niveau bas). Quand cette broche est au niveau haut, le 8086 opère en mode minimum. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 112 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Pins 24 -31 Pour les opérations en mode minimum, MN/𝐌𝐗 est relié au VCC (Niveau Haut) Le 8086 génère tous les signaux du bus de control DT/R (Data Transmit/ Receive) Signal pour contrôler la direction du flux de données. DEN (Data Enable) Sortie d’activation de l’émetteur / récepteur ALE (Address Latch Enable) Utile pour démultiplexer les lignes d’adresses et de données en utilisant des latches externes. M/IO Utilisée pour différencier entre l’accès mémoire et les accès d’E/S. Pour les instructions mémoires, il est haut. Pour les instructions d’E/S, il est bas. WR Le signal Write est à l’état bas quand le processeur écrit une donnée dans la mémoire ou dans le port d’E/S. INTA (Interrupt Acknowledge) Quand la demande d’interruption est acceptée par le microprocesseur, cette sortie est à l’état bas. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 113 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Pins 24 -31 Pour les opérations en mode minimum, MN/𝐌𝐗 est relié au VCC (Niveau Haut) Le 8086 génère tous les signaux du bus de control HOLD Signal d’entrée au processeur pour demander le contrôle du bus. Utilisé par le contrôleur de DMA pour avoir le contrôle sur le bus. HLDA Lotfi BOUSSAID (Hold Acknowledge) Signal d’acquittement envoyé par le processeur au bus en réponse au signal HOLD. Acknowledge passe haut, quand le processeur accepte le signal HOLD. Microprocesseurs & Microcontrôleurs 114 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Durant les opérations du mode maximum, MN/ 𝐌𝐗 est à la masse (Niveau bas) Les Pins 24 -31 sont réaffectés 𝑆0, 𝑆1, 𝑆2 Status signals; utilisés par le contrôleur de bus du 8986 pour générer le timing du bus et le contrôle des signaux. Ils sont décodés comme indiqué au tableau ci-dessous. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 115 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Durant les opérations du mode maximum, MN/ 𝐌𝐗 est à la masse (Niveau bas) Les Pins 24 -31 sont réaffectés 𝑄𝑆0, 𝑄𝑆1 (Queue Status) Le processeur fournit l’état de la file d’attente à travers ces lignes. L’état de la file d’attente peut être utilisé par un composant externe pour vérifier l’état interne de file d’attente du 8086. Les sorties QS0 et QS1 peuvent être interprétées comme indiqué ci-dessous : Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 116 CH 5. Le Microprocesseur 8086 d’Intel Brochage et signaux Durant les opérations du mode maximum, MN/ 𝐌𝐗 est à la masse (Niveau bas) Les Pins 24 -31 sont réaffectés RQ/GT0, RQ/GT1 (Bus Request / Bus Grant) Ces demandes sont utilisées par un autre bus local maître pour forcer le processeur à libérer le bus local à la fin du cycle de bus. Cette broche est bidirectionnelle. La demande sur GT0 va avoir une priorité plus élevé que GT1 Un signal de sortie est activé par le préfixe de l’instruction LOCK. Reste actif jusqu’à la fin de l’instruction préfixée par LOCK. Le 8086 émet un signal bas sur la broche LOCK pendant l’exécution de l’instruction préfixée par LOCK pour empêcher d’autres bus maîtres pour avoir le contrôle sur le bus système. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 117 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 118 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 119 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 120 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 121 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 122 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 123 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 124 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 125 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 126 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 127 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 128 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 129 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 130 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 131 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 132 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 133 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 134 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 135 CH 5. Le Microprocesseur 8086 d’Intel Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 136 CH 5. Le Microprocesseur 8086 d’Intel Bus Timing for a READ Operation Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 137 CH 5. Le Microprocesseur 8086 d’Intel BUS Timing Durant la période T1: Les adresses sont placées sur le bus d’Adresses / Données. Les signaux M/IO, ALE et DT/R spécifient le composant à sélectionner mémoire ou E/S, Latch les adresses sur les bus d’adresses et fixe la direction du transfert de données sur le bus. Durant la période T2: Le 8086 émet le signal RD ou WR, DEN, et écrit la donnée. DEN autorise la mémoire ou l’E/S à recevoir la donnée pour l’écriture et le 8086 à recevoir la donnée pour la lecture. Durant la période T3: Ce cycle est fourni pour autoriser la mémoire à accéder à la donnée. READY est prélevé à la fin de T2. Si niveau bas, T3devient un cycle d’attente. Sinon, la donnée est prélevée à la fin de T3. Durant la période T4: Tous les signaux du bus sont désactivés pour la préparation du cycle suivant du bus. La donnée est prélevée durant les lectures, et aura lieu durant les écritures. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 138 CH 5. Le Microprocesseur 8086 d’Intel Les modes d ’adressages Le code exécutable d'un programme est toujours pointés par le contenu du registre IP par rapport au contenu du registre CS. Les données stockées en pile de sauvegarde sont toujours pointées par le contenu du registre SP par rapport au contenu du registre SS. Les positions mémoires représentant des données sont pointées par une adresse effective AE par rapport au contenu d'un segment qui dépend de la composition de l’adresse effective. Les données à manipuler peuvent être dans des registres, dans la mémoire, dans la pile ou spécifiées immédiatement dans l’instruction. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 139 CH 5. Le Microprocesseur 8086 d’Intel Les modes d ’adressages 1. Adressage des registres Concerne tout transfert ou toute opération, entre deux registres de même taille, ou sur un registre. MOV SI , CX 2. Adressage immédiat La valeur immédiate 4E41 est recopiée dans CX. Dans ce mode d'adressage l'opérande apparaît dans l'instruction elle-même. MOV CX , 4E41 3. Adressage direct Dans ce mode on spécifie directement l'adresse de l'opérande dans l'instruction. exemple : MOV AX , Adr La valeur adrest une constante (un déplacement) qui doit être ajouté au contenu du registre DS pour former l'adresse physique de 20 bits. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 140 CH 5. Le Microprocesseur 8086 d’Intel Les modes d ’adressages 4. Adressage basé L’offset est contenu dans un registre de base BX ou BP. Exemple : MOV AL, [BX] Transfère la donnée dont l’offset est contenu dans le registre de base BX vers le registre AL. Le segment associé par défaut au registre BX est le segment de données : on dit que l’adressage est basésur DS ; 5. Adressage indexé Semblable à l’adressage basé, sauf que l’offset est contenu dans un registre d’index SI ou DI, associés par défaut au segment de données. Exemple : MOV AL,[SI] Charge le registre AL avec le contenu de la case mémoire dont l’offset est contenu dans SI Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 141 CH 5. Le Microprocesseur 8086 d’Intel L’adressage des Entrées / Sorties Les entrées sorties sont situées dans un espace d'adressage indépendant de la mémoire. Iles ne font l'objet d'aucune segmentation. Deux possibilités sont utilisées. Adressage direct : l'adresse du port est donnée directement par le programme. On n'accède qu'aux 256 premiers octets, ou aux 128 premiers mots d'entrées sorties. IN AX , 0A8H OUT 0A8H , AL Adressage par registre : l'adresse du port est contenue dans le registre DX. On accède alors aux 64 Ko, 32 K-mots, d'entrées sorties . OUT DX , AL IN AX , DX Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 142 CH 5. Le Microprocesseur 8086 d’Intel Instructions du 8086 Transfert de données -MOV -POP -OUT Instructions arithmétiques -ADD -DIV -MUL Instructions logiques -OR -AND -DEC / INC Décalages et rotations -ROL -RCL -SAL Instructions de branchement -JMP -CALL -JCXZ Lotfi BOUSSAID Manipulations de caractères -REP MOVS -REP MOVSB -REP MOVSW Instructions de commande -INT N -STI -CLI Remarque Un ou plusieurs indicateurs d’état peuvent être affectés par l’exécution de ces instructions. Microprocesseurs & Microcontrôleurs 143 Architecture du 80x86-Pentium Unité d’interface de bus Unité d’exécution Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 144 Architecture du 80x86-Pentium Accumulateur Base Registres Généraux Count Data Stack Pointer Registres pointeurs Base Pointer Source Index Destination index Registres index Code Segment Data Segment Stack Segment Extra Segment Lotfi BOUSSAID Registre compteur de programme Registres de Segment Registre des indicateurs Microprocesseurs & Microcontrôleurs 145 Architecture du 80x86-Pentium Exemple de programme en assembleur sous C++ (Pentium) Calcul du maximum d’un vecteur #include <stdio.h> char VECT[5]; char RES; char Chaine; int MaxElemVect; void main (void) { int NbElem = 5; VECT[0] = 2; VECT[1] = 3; VECT[2] = 1; VECT[3] = 7; VECT[4] = 0; // Debut de la partie assembleur __asm { MOV ECX, NbElem ; (ECX)=NbElem DEC ECX MOV ESI, 0 ; i := 0 Lotfi BOUSSAID MOV AL, VECT[ESI] ; (AL) = MAX = VECT[0] INC ESI ; i := 1 NEXT: MOV AH, VECT[ESI] ; (AH) = VECT[i] CMP AL, AH JGE SUP ; MAX >= VECT[i] ? MOV AL, AH ; MAX < VECT[i] (AL) = VECT[i] SUP: INC ESI ; MAX >= VECT[i] i = i + 1 LOOP NEXT ; (ECX) = (ECX) - 1 MOV RES, AL ; (AL) → RES } // Fin de la partie assembleur MaxElemVect = RES; printf ("\nElement maximum du vecteur = %d\n\n", MaxElemVect); } Microprocesseurs & Microcontrôleurs 146 Architecture du 80x86-Pentium Organisation d’une carte mère à base d’un PC Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 147 Architecture du 80x86-Pentium Architecture d’un PC Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 148 Calculateurs à basedude Processeurs GPP Architecture 80x86-Pentium Les interruptions du 8086 • Il existe 2 catégories d’interruptions: les interruptions hardware et les interruptions software – Les interruptions hardware surviennent lorsque les lignes RST, NMI ou INTR du 8086 sont activées. – Les interruptions software surviennent lorsque l’instruction INT apparaît ou lors d’exceptions logicielles (exemples: débordement de pile (stack overflow), division par zéro…). – Les sauts conditionnels ou inconditionnels ainsi que les appels de sous-routines ne sont pas des interruptions. • Toutes les interruptions ont un numéro de 0 à 255, sauf reset. Certains numéros sont fixés par le matériel, d’autres par les concepteurs du 8086 et finalement il en reste de disponibles pour le programmeur. • Les interruptions ont des priorités. Elles sont, du plus prioritaire au moins prioritaire: Reset, INT, NMI et INTR. À l’intérieur d’une de ces catégories, l’INT avec le numéro le plus bas est habituellement la plus prioritaire. • Une interruption de haute priorité peut interrompre une interruption de priorité inférieure. • Une interruption de basse priorité ne peut pas interrompre une interruption de priorité égale ou supérieure. L’interruption Reset est la plus prioritaire. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 149 Calculateurs à basedude Processeurs GPP Architecture 80x86-Pentium Interruptions matérielles (1) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 150 Calculateurs à basedude Processeurs GPP Architecture 80x86-Pentium Interruptions matérielles (2) Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 151 Calculateurs à basedude Processeurs GPP Architecture 80x86-Pentium Interruptions vectorisées • La table des vecteurs d’interruption contient l’adresse des instructions à exécuter lorsqu’une interruption survient. Pour chaque interruption, la table contient 4 bytes d’information: CS et IP. La taille de la table des vecteurs d’interruption est donc : 256 ints * 4bytes = 1Ko. • La table des vecteurs d’interruption commence à l’adresse 00000h et elle finit à l’adresse 003FFh. Ne pas mettre de segments à cet endroit!!! • Lorsqu’une interruption survient, le numéro de l’interruption permet de trouver l’emplacement des instructions à exécuter. Le numéro de l’interruption est multiplié par 4 afin de trouver l’adresse du CS et du IP à rechercher (IP est à l’adresse inférieure, suivi de CS). Puis un JMP à CS:IP est fait. CS:IP est un « vecteur » vers le code à exécuter afin de répondre à l’interruption. – Exemple: Si le contenu de la mémoire, à partir de l’adresse 00000h est 00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, etc... et que l’interruption 1 survient, alors la routine à l’adresse 0706:0504 sera exécutée. • Reset est la seule interruption sans numéro. Pour reset, CS:IP = FFFF0H. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 152 Calculateurs à basedude Processeurs GPP Architecture 80x86-Pentium Séquence d’évènements après une interruption Lors d’une interruption logicielle ou matérielle, les évènements suivants se produisent : 1. Le 8086 termine l’instruction en cours. 2. Le drapeau IF est testé si l’interruption provient de la ligne d’interruption matérielle (INTR). Si le drapeau est à 0, l’interruption est ignorée. 3. Si une autre interruption de priorité supérieure ou égale est en cours, l’interruption est ignorée. 4. 3 registres sont mis sur la pile (PUSH) dans l’ordre qui suit : les drapeaux, CS actuel, puis IP actuel. Le drapeau IF est mis à 0 après le PUSH des flags. 5. Un JMP est exécuté avec à l’adresse CS:IP trouvée dans la table des vecteurs d’interruption à partir du numéro de l’interruption. 6. La routine de service de l’interruption (ISR ou Interrupt Service Routine) est exécutée. 7. Théoriquement, la dernière instruction de l’ISR est IRET (Interrupt RETurn). Un IRET est équivalent à trois POP dans cet ordre: IP, CS et drapeaux. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 153 Calculateurs à base Processeurs GPP Architecture dude 80x86-Pentium Interruptions Internes (Exceptions) • Les interruptions internes sont des interruptions qui peuvent se produire sans que l’instruction INT soit présente. Il s’agit d’exceptions qui surviennent quand un évènement logiciel spécial arrive (division par zéro par exemple) • L’interruption 0 survient lorsque le diviseur de DIV ou IDIV est 0. • L’interruption 4 survient lorsque le drapeau Overflow est 1 et que l’instruction INTO est exécutée. • Les interruptions 1 et 3 servent pour du debug de programme. Note: Comme pou toutes les interruptions, les interruptions internes désactivent les interruptions matérielles. Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 154 154 Calculateurs à base Processeurs GPP Architecture dude 80x86-Pentium Transfert par accès direct à la mémoire 4 5 2 1 3 Lotfi BOUSSAID Microprocesseurs & Microcontrôleurs 155155 155