Cours Architecture des ordinateurs
Transcription
Cours Architecture des ordinateurs
IUP SI - L3 Architecture d’un ordinateur UPS IUP SI - L3 Architecture d’un ordinateur Architecture des ordinateurs Processeur : Plan du cours : – Unités de calcul : ➽ Architecture d’un ordinateur – Unité Arithmétique et logique (UAL) ➽ Codage des informations – Eventuellement, unité de calcul sur les flottants (FPU) – Mémoire interne (registres) : Utilisés pour stocker temporairement des ➽ Unité Arithmétique et Logique informations ➽ Chemin de données – Unité de commande : Automate qui envoie les ordres aux registres, aux unit és de ➽ Exemple d’architecture calcul, au bus, a la mémoire et aux système d’entrées/sorties pour exécuter les ➾ Instructions de traitement instructions d’un programme. ➾ Instructions de transfert – Bus internes : permettent de tranférer les informations entre la mémoire, les ➾ Instructions de branchement unités de calcul et l’unité de commande. ➾ Programmation modulaire Remarque : Unités de calcul+Registres+Bus=chemin des données ➽ Synthèse de l’unité de commande Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture d’un ordinateur –1– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture d’un ordinateur Mémoire Instructions et données sont codées en binaire et stockées en mémoire dans des Unités fonctionnelles d’un ordinateur : Processeur Memoire registres de n bits constitués de la concaténation de n bascules. Une mémoire est un vecteur de registres, chacun étant repéré par une adresse Interfaces E/S (équivalente à l’indice d’un tableau). Adresse bus RD WR – Processeur (CPU) : coeur de l’ordinateur. C’est lui qui traite les informations. – Mémoire : stocke les instructions et les données des programmes. Memoire Donnees On peut y accéder en lecture ou en écriture : – Entrées/Sorties : Permettent à l’ordinateur de communiquer avec l’extérieur. – En lecture, le signal RD met, sur le bus de donnéees, le contenu de la mémoire Les différentes unités sont reliés par des bus de communication. correspondant à l’adresse présente sur le bus d’adresses. – En écriture, le signal WR stocke la valeur présente sur le bus de données à l’emplacement correspondant à l’adresse présente sur le bus d’adresses. Jean-Michel ENJALBERT - [email protected], 2005/2006 –2– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Architecture d’un ordinateur IUP SI - L3 Entrées-Sorties Caractéristiques d’un processeur – Unités d’entrée : Clavier, souris, scanner, convertisseur analogique/digital, etc... – nombre de bits de l’Unité Arithmétique et Logique – Unités de sortie : Ecran, imprimante, convertisseur numérique/analogique, etc... – dimension de l’espace adressable – Unités d’entrée/sortie : Transferts d’information de et vers l’ordinateur. Mémoires – fréquence de fonctionnement (nombre de cycles par seconde) de masse ou secondaires : disquettes, CD-ROM, DVD, clefs USB, etc... Unite d’E/S Unite d’E/S Architecture d’un ordinateur – jeu d’instructions Unite d’E/S – architecture interne – puissance en Mips (Millions d’instructions par seconde) et en Mflops (Millions bus peripherique d’opérations flottantes par seconde) Processeur Memoire Interfaces E/S (controleurs) Types de processeurs – processeurs “universels” : Exemples Pentium, Athlon, PowerPC, ... bus systeme – micro-contrôleurs : interfaces d’E/S intégrés. Les unités d’entrée/sortie sont reliées au processeur par l’intermédiaire d’interfaces. – DSP : processeurs spécialisés en traitement du signal L’accès se fait par des adresses mémoires. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture d’un ordinateur –5– UPS IUP SI - L3 Architecture d’un ordinateur Architecture multi-niveaux Bus de communication – Niveau Applications : Un bus est un ensemble de fils qui assurent la transmission d’informations de – Niveau 6 : Langages d’applications (Matlab, langage G, mapple, ...) même type véhiculées en parallèle. On distingue trois types de bus : – Niveau 5 : Langages évolués (Pascal, Ada, C, ...) – Bus de données : bidirectionnel. Nombre de lignes égal à la capacité de – Niveau 4 : Langage d’assemblage (assembleur) traitement de l’UAL. – Niveau Système : – Bus d’adresses : unidirectionnel. Permet de sélectionner les informations dans un – Niveau 3 : Système d’exploitation (Unix, Windows, ...) espace mémoire. Pour un bus de m bits, on peut distinguer 2m adresses. – Niveau 2 : Macro-machine (langage machine) – Bus de commande : assure la synchronisation des flux d’informations sur les bus – Niveau 1 : Micro-machine (micro-instructions) de données et d’adresses. – Niveau 0 : Machine physique (circuits logiques) Un bus est une ressource partagée (par les différents boitiers d’E/S notamment). Chaque niveau fait appel aux services du niveau inférieur. Une fonction de décodage d’adresse permet de sélectionner le boitier pouvant Machine virtuelle : L’utilisation d’une machine à un niveau donné peut faire accéder au bus à un instant donné. Jean-Michel ENJALBERT - [email protected], 2005/2006 Jean-Michel ENJALBERT - [email protected], 2005/2006 abstraction des niveaux inférieurs. –6– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Codage des informations UPS IUP SI - L3 Codage des informations Codage des entiers relatifs (signés) sur n bits Codage des informations – Codage par signe et valeur absolue : le bit le plus à gauche ( bit le plus – Les informations que peut traiter un ordinateur sont des suites de bits (0 ou 1), un significatif) représente le signe du nombre (1 : nombre négatif). codage est donc nécessaire pour passer des données symboliques et instructions d’un programme à une forme exploitable par l’ordinateur. S(A) = (−1)an−1 – L’objet de taille minimale accessible est un octet (byte en anglais) soit 8 bits. n−2 X i=0 Le codage de données et d’instructions utilise donc des multiples d’octets. – Codage par complément à 2 : les nombres négatifs sont représentés par leur – Notation hexadécimale (base 16 :{0,1,...,E,F}) : permet de représenter de complément à 2. Celà revient a donner un poids négatif au bit le plus significatif. manière plus synthétique un ensemble de bits. 4 bits peuvent être représentés Z(A) = −an−1 2n−1 par un seul symbole. Ex : 3EF5h=0011111011110101b – Codage des caractères : On utilise essentiellement le codage ASCII qui permet n−2 X ai 2 i i=0 – Codage par excédent : Les nombres sont décalés d’une valeur e (en général de coder 128 caractères en utilisant 7 bits. Les codes 0 à 31 sont des codes de e = 2n−1 ou e = 2n−1 − 1). contrôle. – Codage des nombres : le codage varie suivant qu’il s’agit d’entiers naturels χe (A) = (non-signés), d’entiers relatifs ou de réels. n−1 X ai 2i − e i=0 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 ai 2i Codage des informations –9– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Codage des informations Codage des entiers naturels (non-signés) sur n bits Codage des réels en virgule fixe On utilise une numération positionnelle : chaque symbole du code à un poids qui dépend de sa position. Les poids sont croissants de la gauche vers la droite en Pour un codage sur n bits, on réserve m bits pour coder la partie fractionnaire. puissance de 2 en binaire (puissance de 10 en décimal et de 16 en hexadécimal) Soit A Soit m le nombre de bits codant la partie fractionnaire du réel : = an−1 an−2 ...a1 a0 un code binaire, la valeur décimale N (A) de l’entier Φm (A) = −an−1 2 naturel représenté par A peut être calculé par : N (A) = n−1 X n−1−m + n−2 X ai 2i−m = 2−m Z(A) i=0 Exemple : Soit A=3E20h représentant un réel codé sur 16 bits avec m ai 2i i=0 Φ7 (A) = 124, 25 Exemple : le code 0101 0111b (en hexadécimal : 57h) représente l’entier 87 codé sur 8 bits. Jean-Michel ENJALBERT - [email protected], 2005/2006 –10– Jean-Michel ENJALBERT - [email protected], 2005/2006 =7: IUP SI - L3 UPS Codage des informations IUP SI - L3 Codage des réels en virgule flottante Norme IEEE P754 Codage des caractères. Code ASCII sur 7 bits En simple précision, le codage se fait sur 32 bits : 31 30 ... 23 22 ... 0 S E F – Le bit S code le signe du nombre (1 pour un nombre négatif). – La mantisse est recadrée entre 1 et 2 (2 exclu) avant d’être codée. Elle est de la forme : m = 1, f . Seule la partie fractionnaire f est codée et ceci sur 23 bits (Φ23 (F )). – L’exposant est codée sur 8 bits par excédent 127. code 0 1 2 3 4 5 6 7 8 9 A B C D E 0x00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT NP CR SO 0x10 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS 0x20 SP ! ” # $ % & ’ ( ) * + , - . 0x30 0 1 2 3 4 5 6 7 8 9 : ; < = > 0x40 @ A B C D E F G H I J K L M N 0x50 P Q R S T U V W X Y Z [ \ ] ˆ 0x60 ‘ a b c d e f g h i j k l m n 0x70 p q r s t u v w x y z { — } ˜ Les caractères 0 a 31 et 127 sont des caractères de contrôle. Le code A=S|E|F représente le réel : Le 8ème bit peut avoir divers usages : R(A) = (−1)S (1 + Φ23 (F ))2χ127 (E) – contrôle de parité – définition de caractères étendus (accentués par exemple). Exemple : le nombre 1 a pour code : 3F800000h Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Codage des informations Codage des informations –13– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Codage des informations Caractères de contrôle et propriétés du code ascii Codage des instructions ➯ Les lettres de l’alphabet sont dans l’ordre croissant et se suivent : Un tri alphabétique se ramène à un tri numérique. – Types d’instructions : ➯ Le passage de minuscule en majuscule et vice-versa se fait simplement en – Instructions de traitement. inversant le bit 5 du code (soit + ou - $20) – Instructions de chargement/rangement. ➯ Le passage d’un chiffre à son code ASCII consiste à rajouter $30 à ce chiffre. – Instructions de contrôle d’exécution. – Format : dépend du type d’instruction. Exemples : Quelques caractères de contrôles : – traitement : code opération adresse 1er opérande adresse 2ème opérande adresse résultat – chargement/rangement : code opération adresse registre adresse mot en mémoire – contrôle : code opération code condition adresse de branchement Jean-Michel ENJALBERT - [email protected], 2005/2006 –14– NUL absence de caractère SOH début d’entète STX début de texte ETX fin de texte EOT fin de transmission ENQ interrogation ACQ accusé réception BEL sonnette BS retour arrière HT tabulation horizontale LF ligne suivante VT tabulation verticale FF page suivante CR retour chariot NAK reçu avec erreur SYN synchronisation CAN annulation SUB substitution ESC échappement FS séparateur de fichier GS séparateur de groupe RS séparateur d’article US séparateur d’unité DEL effaçer Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique UPS IUP SI - L3 Unité Arithmétique et Logique Unité Arithmétique et logique Additionneur binaire Au coeur du processeur, l’UAL effectue le traitement des informations. E1 E2 n – Demi-additionneur 1 bit : n s=a⊕b r = a.b – Additionneur complet 1 bit : f UAL m p ....... indicateurs si = a i ⊕ b i ⊕ r i ri+1 = ai .bi + ((ai ⊕ bi ).ri ) – Additionneur n bits à propagation de retenue : n a n−1 bn−1 S rn C’est un circuit combinatoire qui produit un résultat (S) sur n bits fonction des rn−1 add r2 a 1 b1 add r1 add s1 s données présentes sur ses entrées (E1 et E2) et de la fonction à réaliser (f) et met à a 0 b0 r0 s0 jour des indicateurs. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique –17– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique Fonctions de l’UAL L’UAL permet de réaliser différents types d’opérations sur des donnéees de la forme Addition d’entiers naturels S=f(E1,E2) : – Addition d’entiers codés sur n bits : – Des opérations arithmétiques : additions, soustractions, ... – Des opérations logiques : ou, et, ou exclusif, ... N (S) + 2n rn = N (A) + N (B) – Des décalages et rotations. Le résultat est exact si rn Elle met par ailleurs à jour des indicateurs en fonction du résultat de l’opération = 0 (pas de retenue). Soit le bit C (Carry) du registre de condition égal à 0 (C=rn ). effectuée : – Addition d’entiers codés sur k – Z : indicateur mis à 1 si le résultat de l’opération est 0. × n bits (précision multiple). Séquence de k additions en commençant par les poids faibles et en tenant – N : indicateur mis à 1 pour un résultat négatif (bit le plus à gauche égal à 1). compte de la retenue (bit C) du niveau précédent. – C : mis à 1 en cas de retenue ou débordement en contexte non signé. – V : mis à 1 en cas de débordement en contexte signé. Jean-Michel ENJALBERT - [email protected], 2005/2006 –18– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique UPS IUP SI - L3 Unité Arithmétique et Logique Opérations logiques Addition d’entiers relatifs Une Unité Arithmétique et Logique permet d’exécuter les fonctions logiques de – On utilise un codage par complément à 2. base : ET (AND), OU (OR), OU EXCLUSIF (XOR), PAS (NOT). Ces fonctions, pour Si le mot-code X représente le nombe Z(X), on peut écrire : des mots de n bits sont effectués en parallèle. Elles sont obtenus par juxtaposition d’opérateurs logiques 1 bit : n Z(X) = N (X) − 2 xn−1 ai bi – Soit A et B les codes des nombres Z(A) et Z(B) et S le code du résultat tel = Z(A) + Z(B). On montre que le résultat de Z(A) + Z(B) est le même que le résultat de N (A) + N (B) si que Z(S) V = rn−1 ⊕ rn = 0 – L’addition d’entiers relatifs est donc identique à celle d’entiers naturels. La seule f chose qui change, c’est l’indicateur qui permet de savoir si le r ésultat est exact (C 0 en non-signé, V en signé). 1 si 2 3 La commande f du multiplexeur permet de sélectionner l’opération à effectuer. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique –21– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité Arithmétique et Logique Soustraction Opérations de décalage – Entiers naturels : Soit B̃ le complément à 2 de B. N (B̃) = 2n − N (B). Si on additionne A et B̃ Les opérations de décalage sont obtenus au moyen d’un multiplexeur situé à la on obtient S tel que sortie de l’Unité Arithmétique et Logique. Suivant la commande f , le résultat S peut N (S) + 2n rn = N (A) + N (B̃) = N (A) − N (B) + 2n Le résultat est celui de la soustraction si r n = 1. Dans ce cas, on calcule C = r¯n . ne pas être décalé (f gauche (f – Entiers relatifs : = 0), ou être décalé d’un bit vers la droite (f = 1) ou vers la = 2). s n−1 Z(B̃) = −Z(B) d’ou : Z(A) − Z(B) = Z(A) + Z(B̃). Le résultat est s n−2 exact si celui de l’addition est exact soit si V=0. – En résumé, la soustraction se traite de la manière suivante : f – Prendre le complément à 2 de B 0 1 2 dn−1 – l’ajouter à A s2 s1 s0 0 1 2 0 1 2 d1 d0 – Vérifier le résultat : C=0 en contexte non-signé, V=0 en contexte signé Jean-Michel ENJALBERT - [email protected], 2005/2006 –22– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Chemin de données IUP SI - L3 Chemin de données Multiplexeur Unité de commande Seule la ligne correspondante au code de sélection se retrouve en sortie. – Automate qui élabore les ordres pour assurer l’exécution de chaque instruction. – Peut être modélisé par une machine à états synchrone. s0 – Machine de Moore : la fonction de sortie ne dépend que de l’état courant. fonction de sortie entrees s1 sorties fonction etat suivant e0 registre etat courant etat suivant e1 horloge e2 – Entrées : code instruction et indicateurs d’état (C, V, etc...). – Sorties : signaux de commande pour piloter le chemin de données. e3 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Chemin de données –25– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Chemin de données Chemins de données Mémoire – Registre : Elément de base constitué de n bascules de type D. Permet de conserver des mots-codes de n bits. E LR n R S Donnee WR n RD L’activation du signal LR provoque la copie de la donnée présente sur le bus E dans le registre R. – Bus direct entre registres : n L Rs Rs n L Rd Rd n Adresse L’activation du signal LRd provoque la copie de la donnée du registre Rs dans le registre Rd , opération notée : Rd Decodage ← Rs . Jean-Michel ENJALBERT - [email protected], 2005/2006 –26– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Chemin de données IUP SI - L3 Chemin de données Transfert bus → registre bus RISC et CISC LR1 registre 1 LR2 registre 2 Memoire WR – Processeurs de type CISC (Complex Instruction Set Computer) : nombreuses instructions de la plus simple à la plus complexe. Formats très variables Adresse (non-homogène). Décodeur d’instructions et unité de commande complexes. Transfert registre → bus registre 1 registre 2 Nombreux modes d’adressage. Faible nombre de registres registre 3 Exemples : familles Intel 80x86 et Motorola 680x0. – Processeurs de type RISC (Reduced Instruction Set Computer) : Jeu E mux 0 d’instructions réduit mais exécution plus rapide (moins de cycles d’horloge). 1 Homogénéité du format et régularité de l’exécution. Décodeur simple mais bus compilateur plus complexe. Nombreux registres. Exemples : PowerPC, Alpha, MIPS, Sparc, etc.. Memoire RD Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Chemin de données –29– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Chemin de données Différentes Architectures Von Neumann vs Harvard – Choix pour le stockage transitoire des données : – accumulateurs (registres spécialisés) Architecture de Von Neumann – pile bus donnees – registres généraux Memoire CPU – pas de stockage bus adresses – Sources de données pour l’UAL : – registres/mémoire Architecture de Harvard – registres/registres instructions – mémoire/mémoire ➱ 2 types d’architectures : adresses instructions – CISC : accumulateurs, calculs registres/mémoire donnees memoire donnees CPU memoire instructions adresses donnees – RISC : registres généraux, calculs registres/registres Jean-Michel ENJALBERT - [email protected], 2005/2006 –30– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Exemple d’architecture UPS IUP SI - L3 Exemple d’architecture Exemple d’architecture d’un processeur Fonctions de l’UAL Le processeur pris comme exemple d’étude comporte : – Une Unité Arithmétique et Logique traitant des mots de 16 bits. – Une banque de 16 registres généraux de 16 bits reliés par deux bus de donnés Yi et Yj aux entrées E1 et E2 de l’UAL – Un bus de données bidirectionnel de 16 bits DBUS – Un bus d’adresses de 12 bits ABUS (Espace adressable : 8 Ko) f S fonction f S fonction 0 0 mise à zéro 8 E1 complément à 1 1 E1+E2 addition 9 E1.E2 ET logique 2 E1+E2+C addition avec retenue A E1+E2 OU logique 3 E1-E2 soustraction B E1 ⊕ E2 OU exclusif ←− E1 − → E1 ←− c E1 −→ c E1 décalage à gauche – Un registre PC contenant l’adresse de la prochaine instruction à exécuter. 4 E1-E2+C soustraction avec retenue C – Un registre IR contenant le code de l’instruction à exécuter 5 E1+1 incrémentation D – Un registre SP contenant l’adresse du sommet de la pile système 6 E1-1 décrémentation E – Un registre d’indicateurs d’états I. 7 -E1 négation F décalage à droite rotation à gauche via C rotation à droite via C – Une unité de commande générant les divers signaux de contrôle. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Exemple d’architecture –33– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Exemple d’architecture WRF Jeu d’instructions D in j Le jeu d’instructions que l’on veut fournir au processeur est divis é en 4 familles : R[0] R[1] 1. Instructions de traitement : opérations arithmétiques et logiques effectuées par 2. Instructions de chargement/rangement : instructions permettant des transferts registre/registre et registre/mémoire. 3. Instructions de branchement : branchements conditionnels et inconditionnel. 0 R[15] 4. Instructions pour la programmation modulaire : gestion de la pile syst ème, i sous-programmes et interruptions. 16 16 15 4 Banque de registres Jean-Michel ENJALBERT - [email protected], 2005/2006 –34– Yj 15 Decodage l’UAL entre registres (pas d’opérations directement avec la mémoire) 0 Jean-Michel ENJALBERT - [email protected], 2005/2006 Yi IUP SI - L3 UPS Exemple d’architecture IUP SI - L3 Exemple d’architecture Recherche et décodage des instructions – Recherche de l’instruction en mémoire (état R1) : – L’adresse de l’instruction dans PC est sur le bus d’adresses ABUS Machine à états pour la recherche d’instructions – L’activation du signal RD , met sur DBUS le code de l’instruction – Le signal LR charge le contenu de DBUS dans le registre IR – Le signal LP C charge le compteur PC avec sa valeur incrémenté de 1 pour R1 préparer la recherche de l’instruction suivante. H Pendant l’état R1, les sorties actives sont RD , LR et LP C . Le signal d’horloge fait passer l’unité de commande de l’état R1 à l’état R2. Les opérations : IR IR<−M[PC], PC<− PC+1 R2 ← M [P C] et P C ← P C + 1 (notation RTL) sont effectives au moment du changement d’état. – Décodage de l’instruction (état R2) : L’analyse du contenu de IR par l’unité de commande permet de générer les signaux permettant d’exécuter l’instruction Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –37– UPS Exemple d’architecture DBUS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Exemple d’architecture 16 Registres Memoire E1 E2 S Z N V C 4 f I Unite de Commande LPC L IR WR RD LPC 12 ABUS PC SP 16 WR IR RD +1 L IR H 12 + Jean-Michel ENJALBERT - [email protected], 2005/2006 Processeur V.1 –38– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de traitement UPS IUP SI - L3 Format des instructions de traitement Instructions de traitement j 4 D in Les instructions de traitement sont effectuées par l’Unité Arithmétique et Logique. Ce sont des opérations du type : R[i] DBUS 16 WRF Registres ← f (R[i], R[j]) codées sur 16 bits suivant i le format (appelé format a) : 16 Yj 16 Yi 11...8 7...4 3...0 c.o. c.c.o i j Memoire 4 4 15...12 E1 E2 4 S Z – c.o : code opératoire. Egal à 0 pour toutes les instructions de traitement N V C (instruction générique). – c.c.o. : complément au code opératoire. Permet de sélectionner l’opération à f EUAL LI LPC L IR WR RD i j f EUAL LI WRF Unite de Commande effectuer. Signal f de l’UAL. 16 IR LPC LSP 12 SP WR L IR Instructions de traitement –41– UPS Jeu d’instructions de traitement + H 12 Processeur V.2 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de traitement Analyse des instructions de traitement c.o. c.c.o mnémonique fonction commande actions 0 0 clr Ri R[i] ← 0 i=IR(7..4) 0 1 add Ri,Rj Yi ← R[i], E1 ← Yi R[i] ← R[i] + R[j] j=IR(3..0) 0 2 adc Ri,Rj Yj ← R[j], E2 ← Yj R[i] ← R[i] + R[j] + C f=IR(11..8) 0 3 S ← f (E1, E2) sub Ri,Rj R[i] ← R[i] − R[j] 0 4 sbc Ri,Rj EU AL = 1 DBU S ← S , Din ← DBU S R[i] ← R[i] − R[j] − C 0 5 inc Ri WRF = 1 R[i] ← Din R[i] ← R[i] + 1 maj indicateurs 0 6 dec Ri LI = 1 R[i] ← R[i] − 1 0 7 neg Ri R[i] ← −R[i] 0 8 comp Ri R[i] ← R[i] 0 9 and Ri,Rj R[i] ← R[i].R[j] 0 A or Ri,Rj R[i] ← R[i] + R[j] 0 B xor Ri,R[j] 0 C lsl Ri 0 D lsr Ri 0 E rol Ri 0 F ror Ri R[i] ← R[i] ⊕ R[j] ← −− R[i] ← R[i] − − → R[i] ← R[i] ← −− R[i] ← R[i] via C − − → R[i] ← R[i] via C Jean-Michel ENJALBERT - [email protected], 2005/2006 RD +1 – j : indice du registre contenant le second opérande IUP SI - L3 ABUS PC – i : indice du registre contenant le 1er opérande Jean-Michel ENJALBERT - [email protected], 2005/2006 16 Machine à états R1 H IR<−M[PC], PC<− PC+1 R2 c.o.=0 H –42– E0 R[i]<−f(R[i],R[j]) H Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de transfert UPS IUP SI - L3 Instructions de transfert Transferts de données Modifications de l’architecture – Opérations de l’UAL : registres → registres – Transferts : Pour effectuer les instructions de transfert qui viennent d’être définies, des – registre → registre améliorations doivent être apportées à l’architecture de notre processeur : – registre → mémoire – Il faut pouvoir connecter Ri et Rj en sortie sur DBUS. On rajoute pour cel à les – mémoire → registre portes 3 états commandées par ERi et ERj . Modes d’adressage – Le bus d’adresses ABUS doit pouvoir être alimenté par Rj (adressage indirect) où par les 12 bits de poids faible du registre IR (adressage absolu). On rajoute pour – Adressage direct de registre : R[i] ← R[j]. – Adressage absolu implicite : R[0] ← M [adresse] ou M [adresse] ← R[0] – Adressage indirect : R[i] ← M [R[j]] ou M [R[j]] ← R[i] – Adressage immédiat : R[i] ← valeur Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de transfert celà le multiplexeur muxAd. Ceci conduit à la version 3 de notre processeur. –45– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de transfert Formats des instructions de transfert 15...12 a: 11...8 c.o. b: 7...4 0 i 15...12 11...0 c.o. adresse j j 4 DBUS 16 WRF 3...0 E Ri D in Registres i 16 Yj 16 Yi c: 11...8 7...4 3...0 c.o. 0 i 0 Memoire 4 4 15...12 E1 E2 4 S Z valeur N V C LI f EUAL 5 Jeu d’instructions format c.o. mnémonique fonction a 1 move Ri,Rj R[i] ← R[j] b 2 load adresse R[0] ← M [adresse] b 3 store adresse M [adresse] ← R[0] a 4 load Ri,[Rj] R[i] ← M [R[j]] a 5 store [Rj],Ri M [R[j]] ← R[i] c 6 load Ri,valeur R[i] ← valeur Jean-Michel ENJALBERT - [email protected], 2005/2006 Unite de Commande 16 IR L IR –46– 16 E Rj H 2 LPC L IR WR RD i j f EUAL LI WRF muxAd E Ri E Rj IR(11..0) LPC LSP 1 0 PC 12 ABUS SP muxAd WR RD +1 + 12 Jean-Michel ENJALBERT - [email protected], 2005/2006 Processeur V.3 IUP SI - L3 UPS Instructions de transfert IUP SI - L3 Instructions de transfert Analyse des instructions (1) E1 : R[i] R1 H ← R[j] IR<−M[PC], PC<− PC+1 R2 – On sélectionne R[j] et on le relie à DBUS : j=IR(3..0), ERj =1 – On sélectionne R[i] et on copie DBUS dedans : i=IR(7..4), WRF = 1 c.o.=0 H E2 : R[0] c.o=1 ← M [adresse] – On place adresse contenue dans IR sur ABUS : muxAd=1 c.o.=2 – on place la donnée (M (adresse)) sur DBUS : RD=1 – On sélectionne R[0] et on copie DBUS dedans : i=0, WRF =1 c.o.=3 E3 : M [adresse] ← R[0] – On place adresse contenue dans IR sur ABUS : muxAd=1 – On sélectionne R[0] et on le connecte à DBUS : i=0, ERi = 1 – On copie DBUS dans M [adresse] : WR=1 c.o.=4 c.o.=5 c.o=6 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –49– UPS Instructions de transfert E0 E1 E2 E3 E4 E5 E6 R[i]<−f(R[i],R[j]) H R[i]<−R[j] R[0]<−M[adresse] M[adresse]<−R[0] R[i]<−M[R[j]] M[R[j]<−R[i] R[i]<−M[PC], PC<−PC+1 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Instructions de transfert Analyse des instructions (2) E4 : R[i] ← M [R[j]] Résumé des signaux de commande : – On sélectionne R[j] et on le connecte à ABUS : j=IR(3..0), muxAd=2 – E0 : muxAd=0, i=IR(7..4), j=IR(3..0), f=IR(11..8), EU AL – On place M[R[j]] sur DBUS : RD=1 – On sélectionne R[i] et on copie DBUS dedans : i=IR(7..4), WRF E5 :M [R[j]] =1 – E1 : j=IR(3..0), ERj = 1, i=IR(7..4), WRF = 1 – E2 : muxAd=1, RD=1, i=0, WRF = 1 – E3 : muxAd=1, i=0, ERi = 1, WR=1 – E4 : j=IR(3..0), muxAd=2, RD=1, i=IR(7..4), WRF = 1 – E5 : i=IR(7..4), ERi = 1, j=IR(3..0), muxAd=2, WR=1 – E6 : muxAd=0, RD=1, i=IR(7..4), WRF = 1, LP C = 1 ← R[i] – On sélectionne R[i] et on le connecte à DBUS : i=IR(7..4), ERi =1 – On sélectionne R[j] et on le connecte à ABUS : j=IR(3..0), muxAd=2 – On effectue l’écriture en mémoire (M [ABU S] E6 :R[i] ← DBU S ) : WR=1 ← valeur – PC est connecté à ABUS, on connecte M[PC] à DBUS : muxAd=0, RD=1 – On sélectionne R[i] et on écrit dedans : i=IR(7..4), WRF – On incrémente PC pour l’instruction suivante : LP C = 1, WRF = 1, LP C = 1 =1 =1 Jean-Michel ENJALBERT - [email protected], 2005/2006 –50– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Instructions de branchements IUP SI - L3 Instructions de branchements Instructions de ruptures de séquence Principe : Si une condition est vérifiée : sauter à une adresse spécifiée Interprétation des conditions de branchement Sinon : continuer en séquence. cond? faux Généralement, une instruction de branchement conditionnel est précédé d’une vrai opération de comparaison ente 2 registres c’est à dire une soustraction : A-B. Les conditions de saut peuvent alors être interprétées ainsi : suite – – – Condition de branchement : basée sur les indicateurs mis à jour par l’UAL – (Z,N,V,C). – – Adresse de branchement : on veut coder l’instruction sur un seul mot-code (16 – bits). Or, c.o : 4 bits, adresse : 12 bits. Il faudrait un c.o. différent pour chaque test. beq : branchement si A=B (A-B=0 d’ou Z=1) blo : branchement si A < B en contexte non-signé blt : branchement si A < B en contexte signé bls : branchement si A ≤ B en contexte non-signé ble : branchement si A ≤ B en contexte signé Solution choisie : On utilise 3 bits (c.c.o) pour coder le test (8 possibilit és) et on ne code qu’un déplacement relatif sur 9 bits (-256 à +255). Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –53– UPS Instructions de branchements 15...12 11...9 8...0 c.o. c.c.o deplacement Instructions de branchements L’instruction de branchement (instruction générique) peut être exécuté de la manière suivante : (deplacement est un entier relatif codé sur 9 bits.) – On calcule la condition à l’aide d’un circuit combinatoire : Z N V C Jeu d’instructions : mnémonique IUP SI - L3 Modifications de l’architecture Format d’instruction : format c : Jean-Michel ENJALBERT - [email protected], 2005/2006 c.o. c.c.o. 7 0 bra deplacement 1 7 1 bns deplacement N 7 2 bvs deplacement V 7 3 beq deplacement Z 7 4 blo deplacement C 7 5 blt deplacement N⊕V 7 6 bls deplacement C+Z 7 7 ble deplacement Z +(N ⊕ V) c.c.o.=IR(9..11) condition Calcul condition condition Ce calcul est fait dans l’unité de commande. – On rajoute la possibilité d’additionner PC avec les bits 0..9 de IR (déplacement) : c’est le rôle du multiplexeur mux1. – Le déplacement étant un entier relatif sur 9 bits, on doit l’étendre à 12 bits pour conserver l’information de signe (circuit EXT). Jean-Michel ENJALBERT - [email protected], 2005/2006 –54– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 4 E Ri D in Registres i 16 Yj 16 Yi 16 E Rj Principe : Interrompre le programme en cours pour exécuter un sous-programme puis revenir au programme en cours (programme appelant). 4 E1 E2 4 S Z N V C Instruction f Sous−Programme EUAL LI jsr 5 2 LPC L IR WR RD i j f EUAL LI WRF muxAd E Ri E Rj mux1 Unite de Commande 16 IR L IR Programmation modulaire Sous-programmes, fonctions. Memoire 4 IUP SI - L3 Programmation modulaire DBUS 16 WRF j UPS Instructions de branchements IR(11..0) LPC LSP 1 12 ABUS 0 PC rts SP Programme appelant muxAd IR(8..0) WR EXT +1 0 1 RD Nécessite de stocker l’adresse de retour. mux1 Registre spécialisé : un seul niveau de sous-progamme possible. + H 12 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 ➱ Utilisation d’une structure de données de type pile Processeur V.4 Instructions de branchements –57– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Programmation modulaire Analyse de l’instruction Pile système Si condition=1, l’exécution de l’instruction peut être représentée, en notation RTL, par : PC ← PC+déplacement. Structure de données de type LIFO implémentée en mémoire. Les signaux de commande sont donc : mux1=1 et LP C = 1. Branchement à un sous-programme : empilage de l’adresse de retour Dans le cas contraire, il n’y a rien à faire. Retour du sous-programme : dépilage de l’adresse de retour On peut représenter ceci par la machine à états : Pointeur de pile : registre SP contenant l’adresse du sommet de la pile. Implémentation de la pile : adresses hautes (Ex : FFFh) et empilage vers les R1 H IR<−M[PC], PC<− PC+1 adresses basses. R2 c.o.=0 H c.o=7 condition=1 R[i]<−f(R[i],R[j]) E0 E7 ... FFD FFE FFF H PC<−PC+deplacement valeur 1 SP valeur 2 valeur 1 empilage SP valeur 1 depilage c.o.=7 et condition=0 Jean-Michel ENJALBERT - [email protected], 2005/2006 –58– Jean-Michel ENJALBERT - [email protected], 2005/2006 SP IUP SI - L3 Programmation modulaire UPS IUP SI - L3 Programmation modulaire Formats des instructions de pile a: 15...12 11...8 7...4 3...0 c.o. 0 i 0 b: 15...12 11...0 c.o. adresse j DBUS 16 WRF 4 E Ri D in Registres i 16 Yj 16 Yi Memoire 4 4 E1 E2 4 S Z N V C f EUAL LI 5 2 Jeu d’instructions format c.o. mnémonique fonction b 8 jsr adresse saut au sous-programme adresse a 9 rts retour d’un sous-programme a A push Ri M [SP ] ← R[i], SP ← SP + 1 a B pop Ri SP ← SP + 1, R[i] ← M [SP ] Unite de Commande E IR 16 IR L IR IUP SI - L3 Programmation modulaire H –61– UPS LPC L IR WR RD i j f EUAL LI WRF muxAd E Ri E Rj mux1 mux2 mux3 E PC E IR Jean-Michel ENJALBERT - [email protected], 2005/2006 16 E PC E Rj mux3 LPC IR(11..0) 1 0 LSP 1 12 ABUS 0 PC 3 SP muxAd IR(7..0) +1 mux2 0 1 0 EXT 1 WR −1 2 RD mux1 + 12 Processeur V.5 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Programmation modulaire Analyse des instructions (1) jsr adresse Modification de l’architecture L’instruction doit réaliser, en notation RTL : Pour implémenter les instructions pour la programmation modulaire, il faut : – Sauvegarde de l’adresse de retour sur la pile M [SP ] – Pouvoir relier SP à ABUS : rajout de l’entrée 3 de muxAd. de la pile : SP – Pouvoir incrémenter et décrémenter SP : rajout de mux2 et d’une entrée sur ← P C et décrémentation ← SP − 1. Les signaux de commande sont donc : muxAd=3, EP C mux1. mux1=2, mux2=1, LSP – Pouvoir charger où ranger PC en mémoire : rajout de mux3 et de la porte 3 états = 1, WR=1 ainsi que : = 1 et sont générés dans l’état E81. – Branchement à la 1ère instruction du sous-progammme : P C commandée par EP C . ← IR(11..0). Le transit de IR vers PC se fait par DBUS. Il faut pour celà générer les commandes : – Pouvoir connecter la sortie de IR sur DBUS : rajout de la porte 3 états mux3=1, EIR commandée par EIR . = 1 et LP C = 1. C’est fait dans l’état E82. rts L’instruction doit = 1 (état E91) – Mettre M[SP] dans PC : muxAd=3, RD=1, mux3=1, LP C = 1 (état E92) – Incrémenter SP : mux1=0, mux2=1, LSP Jean-Michel ENJALBERT - [email protected], 2005/2006 –62– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Programmation modulaire – Une interruption consiste à interrompre le programme en cours (tàche de fond) push Ri : Pour réaliser M [SP ] ← R[i] il faut : pour exécuter un sous-programme totalement indépendant. = 1, – Une interruption matérielle est provoquée par un événement externe provenant – connecter SP à ABUS : muxAd=3, d’une unité périphérique (Exemple : appui d’une touche du clavier). – envoyer un ordre d’écriture à la mémoire : WR=1, – décrémenter SP : mux1=2, mux2=1, LSP – Elle se matérialise sur notre processeur par l’activation d’une ligne reli é à l’unité = 1. de commande du processeur (ligne int). pop Ri : Pour réaliser R[i] ← M [SP ] il faut : – incrémenter SP : mux1=0, mux2=1, LSP – Le sous programme à exécuter est localisée à une adresse fixée par le = 1 puis : concepteur du système (vecteur d’interruption). – connecter SP à ABUS : muxAd=3, – L’interruption du programme ne peut se faire qu’à la fin de l’exécution en cours – envoyer l’ordre de lecture à la mémoire : RD=1, – sélectionner R[i] et charger DBUS dedans : i=IR(7..4), WRF (retour vers l’état R1). =1 – Le registre d’indicateurs (I) doit être sauvegardé sur la pile avant le départ en Cette instruction prend 2 cycles (états EB1 et EB2). interruption et restauré au retour. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –65– UPS Programmation modulaire Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Machine à états Interruptions Masque d’interruptions R1 H Interruptions Interruptions matérielles Analyse des instructions (2) – Sélectionner R[i] : i=IR(7..4), et le connecter à DBUS : ERi IUP SI - L3 – Le départ en interruption consiste à charger le pointeur de programme PC avec IR<−M[PC], PC<− PC+1 l’adresse du sous programme d’interruption après la fin d’une instruction et avant le retour à l’état R1 (recherche de la prochaine instruction). R2 c.o.=0 H E0 E81 c.o=9 E91 c.o=B – La ligne de demande d’IT (int) n’est désactivée qu’à la fin du SP d’IT. Il faut H donc rajouter un indicateur indiquant que l’on est en train de traiter une demande c.o=8 c.o=A R[i]<−f(R[i],R[j]) EA EB1 M[SP]<−PC, SP<−SP−1 SP<−SP+1 E82 E92 jsr – Si IE=1 et int=1, on se déroute vers le SP d’IT et on met IE à 0. PC<−M[SP] rts Sinon (IE=0 ou int=0), on traite les instructions normalement. M[SP]<−R[i], SP<−SP−1 SP<−SP+1 d’IT. C’est le rôle de l’indicateur IE. PC<−adresse – A la fin du SP d’IT, on remet à 1 l’indicateur IE pour pouvoir traiter la prochaine push EB2 R[i]<−M[SP] Jean-Michel ENJALBERT - [email protected], 2005/2006 interruption. pop –66– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Interruptions IUP SI - L3 Interruptions Modification de l’architecture Instructions supplémentaires – on rajoute la ligne d’entrée int – on rajoute le bit IE au registre d’indicateurs I. Ce bit peut être mis à 1 (signal SIE) où à 0 (signal CIE) – on connecte le registre I au bus de données en lecture et écriture : rajout du format c.o. mnémonique fonction a C sei Autorisation interruptions a D cli Interdiction interruptions a E rti retour d’interruption multiplexeur muxI et de de la porte 3 états EI . Analyse des instructions – on rajoute une entrée au multiplexeur muxAd fixant l’adresse du vecteur d’interruptions. “Instruction” d’interruption notation RTL Etat signaux de commande M [SP ] ← P C , SP ← SP − 1 I1 muxAd=3, EP C M [SP ] ← I , SP ← SP − 1 I2 muxAd=3, EI P C ← addIT , IE ← 0 I3 muxAD=4, RD=1, mux3=1, LP C j 4 E Ri D in IE ← 0 ED CIE = 1 rti SP ← SP + 1 EE1 mux1=0, mux2=1, LSP I ← M [SP ], SP ← SP + 1 EE2 muxAd=3, RD=1, muxI=1, LI –69– IUP SI - L3 Interruptions Machine à états PC<−addIT IE<−0 I3 I<−M[SP] SP<−SP−1 I2 4 muxI Z IE 1 0 N V E1 PC<−M[SP] SP<−SP−1 C LI E2 4 C IE S IE E IR 16 IR E IR L IR H int Unite de Commande int=1 et IE=1 int=0 ou IE=0 f H AddIT EUAL 5 EI I1 R1 S mux2 mux3 E PC muxI EI mux3 LPC IR(11..0) 1 0 LSP 1 0 PC IR<−M[PC], PC<− PC+1 4 R2 2 LPC L IR WR RD i j f EUAL LI WRF muxAd E Ri E Rj mux1 12 c.o.=0 H ABUS E0 muxAd IR(8..0) +1 mux2 0 1 0 R[i]<−f(R[i],R[j]) H 3 SP EXT 1 WR −1 2 c.o=C RD mux1 c.o=D + 12 Jean-Michel ENJALBERT - [email protected], 2005/2006 c.o=E Processeur V.6 –70– EC ED EE1 IE<−1 IE<−0 SP<−SP+1 EE2 =1 =1 Jean-Michel ENJALBERT - [email protected], 2005/2006 4 i =1 muxAd=3, RD=1, mux3=1, LP C Memoire Yi 16 EE3 P C ← M [SP ] = 1, CIE=1 Yj 16 Registres SIE = 1 cli 16 E PC E Rj signaux de commande EC mux1=0, mux2=1, LSP UPS DBUS 16 Etat IE ← 1 = 1, WR=1 mux1=2, mux2=1, LSP = 1 Interruptions WRF notation RTL sei = 1, WR=1 mux1=2, mux2=1, LSP = 1 Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 instruction I<−M[SP] SP<−SP+1 EE3 Jean-Michel ENJALBERT - [email protected], 2005/2006 PC<−M[SP] =1 IUP SI - L3 UPS Interruptions IUP SI - L3 Unité de commande Interruptions logicielles – Une interruption logicielle est une interruption provoquée par le programmeur Synthèse de l’unité de commande (instruction trap). On parle aussi de “trappe logicielle”. – Une différence avec un sous-programme (instruction jsr) est qu’une trappe L’unité de commande a été modélisée comme une machine à états synchrone. correspond à une adresse pré-fixée (numéro de trappe correspondant à une Deux solutions peuvent être mises en oeuvre pour la réaliser : entrée d’un vecteur d’interruption) ➽ Synthèse par PLA : Solution utilisée dans les processeurs de type RISC. – Elle permet d’exécuter une procédure du système d’exploitation de manière – Peu d’instructions ➯ complexité limitée transparente. – Rapidité ➯ grande fréquence de fonctionnement – Comme une IT matérielle, une trappe logicielle provoque la sauvegarde dans la ➽ Synthèse par Micro-Programmation : processeurs de type CISC. pile du registre d’indicateurs I. – synthèse par PLA trop complexe. Pour notre processeur, le codage choisi et de format b qui permet de coder – évolutivité plus grande. l’adresse dans l’instruction. En général, c’est un numéro qui est codé dans l’instruction à partir duquel une adresse et calculée. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –73– UPS Interruptions Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande Programmable Logic Array Instruction de trappe : Matrices de portes ET et OU permettant de réaliser des fonctions logiques de type c.o instruction notation RTL Etat signaux de commande F trap adresse M [SP ] ← P C , SP ← SP − 1 EF2 muxAd=3, EP C M [SP ] ← I , SP ← SP − 1 EF1 muxAd=3, EI P C ← IR(11..0) EF3 muxAd=1, RD=1, mux3=1, LP C SIGMA-PI. Exemple : = 1, WR=1 mux1=2, mux2=1, LSP =1 a = 1, WR=1 b mux1=2, mux2=1, LSP =1 H =1 c IR<−M[PC], PC<− PC+1 f1 f2 R2 c.o=F EF1 M[SP]<−PC SP<−SP−1 EF2 M[SP]<−I SP<−SP−1 EF3 Jean-Michel ENJALBERT - [email protected], 2005/2006 f 1 = a.b + a.b + a.c PC<−adresse f 2 = a.b.c + a.b + a.c –74– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Unité de commande IUP SI - L3 Synthèse par PLA Etat etat courant Horloge Matrice ET termes produits registre etat suivant sorties Matrice OU – Codage des états ➯ fonction etat suivant=f(etat present,entrees) – Sorties : ne dépendent que de l’état présent : signaux de commandes c.o. cond IR(15..12) etat suiv. code si IE.int=0 etat suiv. code si IE.int=1 R1 00h - - R2 01h R2 01h R2 01h 0 - E0 02h E0 02h R2 01h 1 - E1 03h E1 03h ... ... ... ... ... ... ... ... R2 01h 7 0 R1 00h R1 00h R2 01h 7 1 E7 08h E7 08h ... ... ... ... ... ... ... ... E0 02h - - R1 00h I1 19h E1 03h - - R1 00h I1 19h ... ... ... ... ... ... ... ... I1 19h - - I2 1Ah I2 1Ah ... ... ... ... ... ... ... ... I4 1Ch - - R1 00h R1 00h – Entrées : code instruction... Bilan : 5 fonctions logiques à 11 entrées. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 code courant Application à une machine de Moore synchrone : entrees Unité de commande Unité de commande –77– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande Fonction Etat Suivant Etape 1 : codage des états : La solution la plus simple est de coder les états de la Signaux de commande machine à états par des codes binaires croissants en partant de R1. A chaque état est associé des signaux de commandes à activer, par exemple pour Etats de la MEF : R1, R2, E0, E1, E2, E3, E4, E5, E6, E7, E81, E82, E91, E92, EA, EB1, EB2, EC, ED, EE1, EE2, EE3, EF1, EF2, EF3, I1, I2, I3. Soit 28 états. Il faut R1 : RD=1, LR donc 5 bits pour coder un état. A partir de là, il faut déterminer l’expression logique de chaque signal de commande = 1, LP C = 1, muxAD=0. en fonction du code des états dans lesquels le signal apparaı̂t. Etape 2 : On construit un tableau dont chaque ligne représente une transition de la Par exemple, RD doit être activé dans les états : R1, E2, E4, E6, E92, EB2, EE2, machine à état dans laquelle on code l’état suivant en fonction de l’état courant et EE3, EF3 et I3 dont les codes respectifs sont : 0, 4, 6, 8, 13, 16, 20, 21, 24 et 27. des entrées (code opératoire : c.o. et condition). L’expression logique est écrite sous forme d’une somme de produits pour être implémenté gràce à un réseau PLA. Demande d’interruption : dans le cas d’une demande d’IT, l’état suivant dépend de la prise en compte ou pas de la demande. Si une demande doit être prise en compte, l’état suivant est R1 sinon, c’est I1. Jean-Michel ENJALBERT - [email protected], 2005/2006 –78– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande UPS IUP SI - L3 Unité de commande Unité de commande Unité de commande micro-programmée 0 int.IE ➟ L’unité de commande peut être vue comme un interpréteur d’instructions qui, à AdIT=19h 0 1 partir du code opération, ordonne une séquence de micro-instructions pour en 5 assurer l’exécution. IR(15..12) ➟ Chaque instruction du processeur est vue comme un micro-programme, chaque cond ➟ Le rôle d’une micro-instruction est d’activer certains signaux de commande pour 0 distributeur activer un chemin de données. Les bits qui composent la micro-instruction sont 2 5 muPC mux IUP SI - L3 Unité de commande UPS ROM de commande 5 donc les signaux de commande du chemin de données. –81– +1 1 4 cycle correspondant à une micro-instruction de ce micro-programme. Jean-Michel ENJALBERT - [email protected], 2005/2006 + 2 Signaux de commande Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande L’unité de commande peut-être réalisée au moyen d’une architecture semblable à Fonctionnement celle d’un processeur c’est à dire composée : ROM de commande – d’une mémoire qui stocke les micro-instructions. – d’une micro-unité de commande (micro-séquenceur) qui lit les instructions La mémoire de commande est constitué de mots (1 par micro-instruction) successives d’un micro-programme. possédant autant de bits que de signaux de commande plus deux bits de – d’un registre micro-pointeur de programme (µPC). commande du multiplexeur mux. Les dispositifs devant être mis en oeuvre sont : La première adresse contient le code (signaux de commande) de la – un dispositif d’incrémentation de µPC micro-instruction correspondant à l’état R1 (phase 1 de la recherche d’instruction). – un dispositif de chargement de µPC avec l’adresse de début d’un micro-programme Reamarque : Les micros-instructions sont stockées à des adresses correspondant – un dispositif de retour à la phase de recherche d’instruction (état R1) a la fin au codage des états choisis pour la réalisation par PLA. Un autre choix aurait été d’une instruction courante. possible. – la possibilité de se dérouter vers une procédure d’interruption Jean-Michel ENJALBERT - [email protected], 2005/2006 –82– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande UPS IUP SI - L3 Commande du multiplexeur mux : Unité de commande Schéma du distributeur – La commande mux=0 permet, s’il n’y a pas d’interruption à prendre en compte Adresse (int.IE=0), de charger µPC avec l’adresse 0 et donc de démarrer une recherche d’instruction. Si une interruption doit être traitée, µPC sera chargée avec 0 1 0 0 0 1 0 0 0 0 1 1 E F 1 1 0 0 1 1 0 1 1 0 l’adresse de la micro-instruction correspondante (I1). La dernière instruction de chaque micro-programme contiendra donc ce code de commande de mux. – La commande mux=1 incrémente µPC et permet donc de passer à la micro-instruction suivante du micro-programme (par exemple de l’ état E91 à E92). – La commande mux=2 va charger µPC avec l’adresse fourni par le distributeur qui 0 dépend des entrées c.o et cond. Cette adresse est celle du micro-programme c.o.=7 et cond=0 correspondant à l’instruction à exécuter. 0 1 On retrouve cette commande dans la micro-instruction R2. Elle correspond au 5 décodage de l’instruction du processeur à exécuter. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande –85– UPS adresse micro−programme Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Unité de commande Distributeur Le distributeur doit associer l’adresse d’un micro-programme (dans la ROM de commande) à un code opération (c.o.) suivant la valeur de cond. - Il est réalisé à l’aide d’une ROM de 16 mots de 5 bits contenant les adresses des micro-programmes. A l’adresse correspondant à la valeur de c.o. est codée l’adresse du micro-programme, l’entrée cond étant traitée grace a un multiplexeur. Jean-Michel ENJALBERT - [email protected], 2005/2006 –86– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire UPS IUP SI - L3 Architecture de la mémoire Architecture de la mémoire Boı̂tier mémoire Deux classes de mémoire : Din ➟ Mémoire principale (où centrale) : – reliée directement au processeur par un bus rapide – capacité limitée : typiquement 1 Go k adresse boitier memoire 2k x m bits – volatile – accès aléatoire : temps d’accès indépendant l’adresse de stockage ➟ Mémoire secondaire (où de masse) : m CS R/W OE – reliée au bus système par un processeur d’E/S – supports magnétiques où optiques, capacité importante : plusieurs centaines m de Go. – non-volatile Dout – accès séquentiel : accès par blocs Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire –89– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire Association de boı̂tiers (banque de mémoire) Mémoire principale Exemple : réalisation d’une banque mémoire de 2 Méga-mots de 16 bits à partir de boı̂tiers de 1 Méga-mot de 4 bits : ➟ Mémoire vive (volatile) : RAM Extension du nombre de mots – statique – dynamique A0..A19 A0 ... A19 ➟ Mémoire morte (non-volatile) : ROM CS D3..D0 – PROM – EPROM – EEPROM A20..A31 12 – flash Decodeur d’adresse CS1 CS2 A0 ... A19 CS D3..D0 bus donnees Jean-Michel ENJALBERT - [email protected], 2005/2006 –90– Jean-Michel ENJALBERT - [email protected], 2005/2006 4 IUP SI - L3 UPS Architecture de la mémoire IUP SI - L3 Architecture de la mémoire Exemple de micro-système Association de boı̂tiers (suite) Extension de la longueur des mots A0..A19 A20..A31 12 Decodeur d’adresse A0 ... A0 ... A0 ... A19 A19 A19 CS CS D3..D0 CS D3..D0 D3..D0 A0 . A12 A13 A14 A15 Processeur CS D15..D12 D11..D8 D3..D0 R/W bus donnees Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire –93– UPS 8 D7..D0 8 D7..D0 D7..D0 13 A0 . A12 3 13 RAM EPROM CS CS R/W R Decodeur d’adresses A0 . A12 8 D7..D0 2 A0 A1 PIA CS R/W Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire Décodage d’adresse L’adresse d’un mot-mémoire peut être décomposé en deux parties : l’adresse du Décodage d’adresse mot-mémoire dans le boitier et l’adresse localisant le boitier dans l’espace adressable (poids forts de l’adresse). ➟ Décodage complet : on utilise toutes les lignes d’adresse pour réaliser la fonction de sélection. Le boitier n’utilise que sa propre dimension dans l’espace adressable. ➟ Décodage partiel : On n’utilise qu’un sous-ensemble des lignes d’adresse pour 0000 2000 EPROM 8000 A000 RAM 8Ko 8Ko 0000 EPROM 8000 RAM C000 8Ko x 4 4Ko x 2 réaliser la fonction de sélection. FFFC FFFF Si x lignes ne sont pas utilisées, le boitier occupe 2x fois sa dimension dans l’espace adressable. On parle d’efffet de miroir. La même information est disponible à partir d’adresses différents. 4o Decodage complet FFFF 4o x 4096 Decodage partiel Le décodage partiel est facile à réaliser mais gaspille l’espace adressable. Il est réservé aux micro-systèmes figés. Jean-Michel ENJALBERT - [email protected], 2005/2006 –94– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire UPS IUP SI - L3 Hiérarchie de mémoires Architecture de la mémoire Taux de succès et taux d’échec La mémoire cache est d’autant plus efficace que les défauts de cache sont rares. ➟ Mémoire secondaire Soit h le taux de succès et n le rapport en nombre de cycles entre un accès à la ➟ Mémoire principale mémoire principale et un accès au cache, la réduction du temps d’accès peut être ➟ Mémoire cache de niveau 2 évalué par la relation : R ➟ Mémoire cache de niveau 1 Exemple : Pour h = n/(h + n(1 − h)) = 0, 95 et n = 50, on obtient R = 14, 5, soit un temps moyen ➟ Registres internes d’accès divisé par 14,5. Plus on descend dans la hiérarchie, plus la capacité mais aussi le temps d’accès Les taux de succès élevés sont obtenus grace aux principes de localité spatiale et temporelle. diminuent. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire –97– UPS Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire Localité spatiale et temporelle Le principe de localité affirme que les informations auxquelles va accéder le processeur ont une forte probabilité d’être localisées dans une fenêtre spatiale et Mémoire cache une fenêtre temporelle. ➟ Localité spatiale : A un instant donné le processeur fait référence à des objets Lorsque le processeur doit accéder à une information, la recherche est effectuée proches du dernier qu’il a utilisé : code séquentiel (sauf rupture de séquence), d’abord dans la mémoire cache. données consécutives : tableaux, structures – Si l’information est présente, elle est fournie immédiatement au processeur ➟ Localité temporelle : En général, si un processeur à fait récemment référence à – Sinon, il y a défaut de cache. La lecture doit se faire dans la mémoire principale un objet, il va très probablement y faire à nouveau référence (structures ce qui bloque le processeur pendant plusieurs cycles. itératives). C’est le gestionnaire de cache qui se charge de gérer celà. Pour le processeur, cette gestion est transparente. La localité spatiale suggère de copier des blocs de mots dans le cache plutôt que des mots isolés. La localité temporelle suggère de conserver pendant quelque temps dans le cache les informations auxquelles on vient d’accéder. Jean-Michel ENJALBERT - [email protected], 2005/2006 –98– Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 UPS Architecture de la mémoire IUP SI - L3 Architecture de la mémoire Découpage de l’espace adressable Quelle que soit l’organisation physique de la mémoire, on peut définir une organisation purement logique et découper celle-ci de différentes manières. Mémoire cache ➟ Bloc mémoire (ou ligne) : un bloc mémoire représente un nombre fixe de mots mémoire. La mémoire est découpée en blocs et une adresse mémoire peut être ➟ totalement associative : solution la plus naturelle mais complexe à réaliser. vue comme la concaténation de l’adresse d’un bloc et de l’adresse du mot ➟ à correspondance directe : simple à réaliser mais moins efficace. mémoire dans le bloc. ➟ à plusieurs voies (hybride) : compromis entre l’efficacité de la technique associative et la simplicité du cache à correspondance directe. ➟ Page mémoire : On peut regrouper les blocs pour définir une page mémoire de la même manière que l’on regroupe des mots pour définir un bloc. L’adresse d’un mot mémoire se décompose alors en un numéro de page , un numéro de bloc et une position dans le bloc. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –101– UPS Architecture de la mémoire Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 Architecture de la mémoire Mémoire associative n−1 mot 0 0 Mémoire cache associative Decodeur presence etat n donnee mot 1 adresse Encodeur de priorite etiq[0] etiq[1] ... num. bloc l etiq[2^l−1] k adresse R/W wait mot 2^k−1 bloc[0] bloc[1] ... l bloc[2^l−1] presence logique de com. l adresse dans le bloc mot donnee Jean-Michel ENJALBERT - [email protected], 2005/2006 –102– Jean-Michel ENJALBERT - [email protected], 2005/2006 memoire principale IUP SI - L3 UPS Architecture de la mémoire Remplacement d’un bloc Si le cache est plein et que le processeur à besoin d’un bloc qui n’est pas dans le cache, il faut remplacer un des blocs du cache. Plusieurs politiques de remplacement sont possibles : ➟ aléatoire : très rapide mais peut supprimer un bloc à accès fréquent. ➟ FIFO : on utilise une file circulaire. Simple à implémenter et relativement efficace. ➟ LRU (Least Recently Used) :La ligne dont le dernier accès et le moins récent et celle qui sera remplacée. Implémentation pratique : un bit d’état A est mis à 1 chaque fois que le processeur accède à un bloc. A intervalle régulier, tous les bits A sont remis à 0. Le gestionnaire remplace le premier bloc dont le bit A est à 0. Jean-Michel ENJALBERT - [email protected], 2005/2006 IUP SI - L3 –105– UPS Architecture de la mémoire Mémoire cache à correspondance directe adresse etiq[0] etiq[1] ... num. bloc l etat etiq[2^l−1] num page bloc[0] bloc[1] ... l bloc[2^l−1] presence R/W wait memoire principale logique de com. l adresse dans le bloc mot donnee Jean-Michel ENJALBERT - [email protected], 2005/2006 –106–