(2) Représentation de l’information. Plan. 1. Représentation de l’information. 2. Architecture logicielle. 3. Micro-architecture. 4. Hiérarchie mémoire. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(3) Représentation de l’information. Introduction. Plan. 1. Représentation de l’information Introduction Représentation des caractères Représentation des entiers Représentation des réels. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(4) Représentation de l’information. Introduction. Les niveaux d’un système informatique. Application Programmation Programmable. Langage Haut niveau Compilation Langage machine Exécution Microarchitecture. Non programmable Circuits. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(5) Représentation de l’information. Introduction. L’information - définition Analogique : grandeur continue Numérique : connaissance d’un états parmi un nombre fini possible Amplitude 111 110. 110 101. 100. 011. 001 000 Joël Gay. 001. APP3 - Architecture des ordinateurs. Temps Année 2018 − 2019.
(6) Représentation de l’information. Introduction. L’information - définition Support : la tension, grandeur physique continue Échantillonnage en fonction du temps : fréquence Seuil de tolérance V État haut État bas t1. Joël Gay. t2. APP3 - Architecture des ordinateurs. t3. Temps. Année 2018 − 2019.
(7) Représentation de l’information. Introduction. Quantité d’informations 1 bit : quantité d’information liée à la connaissance d’un état parmi 2 ⇒ codage par 0 et 1 Avec n bits, on peut coder 2n états, donc la quantité d’information contenue dans la connaissance d’un état parmi N est. dlog2 (N)e bits Exemple de codage sur 2 bits : − France : 00 − GB : 01 − Italie : 10 − Espagne : 11 Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(8) Représentation de l’information. Introduction. Ordre de grandeurs. Kilo Méga Giga Tera Péta. 210 103 220 106 230 109 240 1012 250 1015. N.B. 210 = 1024.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(9) Représentation de l’information. Introduction. Quelles informations coder ?. Tous les processeurs : I. Nombres F F. I I. Entiers naturels et relatifs Réels. Caractères Instructions. Certains processeurs représentent et traitent les vecteurs d’entiers et de réels : on parle de processeurs vectoriels.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(10) Représentation de l’information. Introduction. Quel type de codage ? Le codage doit permettre de réaliser des opérateurs matériels fonctionnels et rapides Opérateur matériel = circuit électronique non programmable. Exemple : un additionneur : code de 1. code de 2. Additionneur. code de 3. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(11) Représentation de l’information. Introduction. Quel type de codage ? Les opérateurs sont sur un nombre fixe de bits − caractéristique du processeur et de la technologie des Circuits Intégrés − typiquement 32 ou 64 bits code de 1. code de 2. .... ... Additionneur ... code de 3. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(12) Représentation de l’information. Introduction. Notations humaines Binaire : 0010110 = 0b0010110 = (0010110)2 Peu pratique pour le traitement manuel. Hexadécimal : en base 16 : un digit pour 4 bits. Ex : 0xAC ; 31 = 16 + 15 = 0x1F. Décimal binaire Hexa Décimal binaire Hexa 0 0000 0 8 1000 8 1 0001 0 9 1001 9 2 0010 0 10 1010 A 3 0011 0 11 1011 B 4 0100 0 12 1100 C 5 0101 0 13 1101 D 6 0110 0 14 1110 E 7 0111 0 15 1111 F N.B. Ce ne sont que des notations : on peut mélanger les systèmes d’écritures mais attention aux confusions. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(13) Représentation de l’information. Représentation des caractères. Plan. 1. Représentation de l’information Introduction Représentation des caractères Représentation des entiers Représentation des réels. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(14) Représentation de l’information. Représentation des caractères. Codage des caractères. ASCII (American Standard Code for Information Interchange) : 7 bits + 1 bit de parité Caractères alphanumériques latins non accentués + caractères spéciaux Latin -1 : 8 bits, standard ISO 8859-1. Caractères alphanumériques latins accentués Unicode : 16 bits, caractères d ’alphabets variés. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(15) Représentation de l’information. Représentation des caractères. Codage ASCII Decimal Hex Char. Joël Gay. Decimal Hex Char. Decimal Hex Char Decimal Hex Char. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(16) Représentation de l’information. Représentation des entiers. Plan. 1. Représentation de l’information Introduction Représentation des caractères Représentation des entiers Représentation des réels. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(17) Représentation de l’information. Représentation des entiers. Codage des entiers naturels Sur n bits, écriture en base 2 de N : N=. n−1 X. x i 2i .. i=0. Exemple : 10100101. Sur n bits, les nombres représentables sont [0, 2n − 1] Exemple sur 8 bits : [0, 255]. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(18) Représentation de l’information. Représentation des entiers. Passage décimal ↔ binaire Passage binaire → décimal : (10100011)2 = |{z} 1 |{z} 0 |{z} 1 |{z} 0 |{z} 0 |{z} 0 |{z} 1 |{z} 1 = 27 +25 +21 +20 = 163. 27. 26. 25. 24. 23. 22. 21. 20. Passage décimal → binaire : directement ou par division euclidienne successive : 163 81 40 20 10 5 2 1 Joël Gay. = = = = = = = =. 2 · 81 2 · 40 2 · 20 2 · 10 2·5 2·2 2·1 2·0. + + + + + + + +. 1 1 0 0 0 1 0 1. Lecture en sens inverse. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(19) Représentation de l’information. Représentation des entiers. L’additionneur Additionneur : circuit matériel qui effectue l’addition naı̈ve des entiers naturels sur n bits et tronque éventuellement la retenue.. a. b n. n. 1 c. Additionneur n r. a 0 0 1 1. b 0 1 0 1. r 0 1 1 1. c 0 0 0 1. Additionneur 1 bit.. Opération additionnage notée # a, b opérandes; r résultat ; c retenue (carry) Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(20) Représentation de l’information. Représentation des entiers. L’additionneur. Le résultat du calcul dans l’additionneur peut être faux : problème de retenue Sur 3 bits : 001 # 001 = 010 001 # 111 = 000. Correct : 1 + 1 = 2 Faux : 1 + 7 6= 0. # est l’addition modulo 2n. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(21) Représentation de l’information. Représentation des entiers. Codage des entiers relatifs Définition : Codage en complément à 2 sur n bits I I. Si N ≥ 0, N est codé comme un entier naturel Si N < 0, N est codé par la représentation en naturel de 2n + N. Nombres représentables : [−2n−1 , 2n−1 − 1]. Exemple : Nombre 0 1 2 3 −1 −2 −3 −4. Code 000 001 010 011 De 8 − 1 = 7, De 8 − 2 = 6, De 8 − 3 = 5, De 8 − 4 = 4,. Joël Gay. 0 −1. 1 000 111 001. −2 soit soit soit soit. 111 110 101 100. 110. 010. 2. 101 011 100 −3. APP3 - Architecture des ordinateurs. 3 −4 Année 2018 − 2019.
(22) Représentation de l’information. Représentation des entiers. Propriétés du codage en complément à 2 Le bit de poids fort : I I. des positifs est 0 des négatifs est 1. La représentation de −1 est le mot où tous les bits sont à 1 : 0xFF (8bits), 0xFFFF (16bits) etc. L’opposé d’un relatif s’obtient en complémentant bit à bit et en ajoutant 1. Exemples : 2 est codé par 010 sur 3 bits. Comment coder −2 ? Complément bit à bit : 101 On ajoute 1 : −2 est donc codé sur 3 bits par 110. Dans l’autre sens, faire les mêmes opérations : 110 → 001 → 010. Le codage de −2n−1 est 1 suivi de n − 1 zéros. En effet : complément. +1. 10000000 −−−−−−−→ 01111111 −−→ 10000000. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(23) Représentation de l’information. Représentation des entiers. Extension de signe Soit un relatif représenté en complément à 2 sur n bits. Sa représentation en complément à 2 sur m > n bits s’obtient en répliquant le bit de poids fort sur les bits manquants. 5 s’écrit 0b0101 sur 4 bits, et −5 s’écrit 0b1011. On étend à 8 ou 16 bits : ∗ 5 est représenté sur 8 bits par 0b00000101 ∗ 5 est représenté sur 16 bits par 0b0000000000000101 ∗ −5 est représenté sur 8 bits par 0b11111011 ∗ −5 est représenté sur 16 bits par 0b1111111111111011 Notation: ESm (Immn ). Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(24) Représentation de l’information. Représentation des entiers. Opérations arithmétiques Le circuit additionneur peut effectuer aussi l’addition des relatifs s’ils sont codés en complément à 2 : 1 seul et même circuit code de 1. code de 2. code de 1. code de −2. Additionneur. Additionneur. code de 3. code de −1. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(25) Représentation de l’information. Représentation des entiers. Additions des relatifs Le résultat du calcul dans l’additionneur peut être faux : overflow Sur 3 bits : 001 # 001 = 010 001 # 110 = 111 111 # 111 = 110 011 # 001 = 100 110 # 101 = 011. correct correct correct faux faux. : 1 + 1 =2 : 1 + (−2) = −1 : −1 + −1 = −2 : 3 + 1 n’est pas codable : −2 + (−3) n’est pas codable. Attention : retenue 6= overflow.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(26) Représentation de l’information. Représentation des entiers. Addition des relatifs On démontre : L’additionnage des codes de deux relatifs N et M est égal à N + M si et seulement si N + M est codable. L’additionneur est aussi satisfaisant que possible. L’additionnage des codes de deux relatifs N et M est égal à N + M si et seulement si : I I. N et M sont de signes contraires. Ou bien N et M sont de même signe, et le bit de signe du résultat est égal à la retenue.. Facile à tester.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(27) Représentation de l’information. Représentation des entiers. Conclusion. Avec les codages choisis, l’additionneur effectue l’addition des naturels et des relatifs aussi bien que possible : tout résultat représentable est correctement calculé. Mais le résultat peut être faux s’il n’appartient pas à l’ensemble d’entiers représentables. I. I. Analyser l’application et le programme pour garantir que le résultat reste codable. Si ce n’est pas possible, spécifier le comportement sur overflow et utiliser les ressources de l’environnement pour le détecter et réaliser l’action spécifiée.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(28) Représentation de l’information. Représentation des réels. Plan. 1. Représentation de l’information Introduction Représentation des caractères Représentation des entiers Représentation des réels. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(29) Représentation de l’information. Représentation des réels. Codage des réels. Problèmes : I I. Arrondir. Représenter équitablement des nombres très grands et très petits.. Principe : représentation normalisée par mantisse et exposant, avec un choix judicieux des valeurs de l’exposant.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(30) Représentation de l’information. Représentation des réels. Codage IEEE 754 simple précision 31 30 s. 23 22. 0. E. f. 1. 8. 23. E = interprétation en naturel. Pour E 6= 0 et E 6= 255, la valeur codée est : (−1)s · 2E −127 · 1, f où 1, f doit être interprété en base 2. Soit e = E − 127. Alors −127 ≤ e ≤ 128. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(31) Représentation de l’information. Représentation des réels. Codage IEEE 754 simple précision - décodage. 31 30 23 22 0 1 100 1000 1 001 0000 0000 0000 0000 0000 1. 8. 23. Que représente 0xC8900000 = 0b 1100 1000 1001 0...0 ? s = 1 ; E = 10010001 = 145 donc e = 18 ; f = 0010 . . . 0 donc m = (1, f )2 = (1, 001)2 = 1 + 2−3 ; Le nombre codé est −218 (1 + 2−3 ).. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(32) Représentation de l’information. Représentation des réels. Codage IEEE 754 simple précision - codage. Codage de 2, 5 2, 5 = 5 × 2−1 = 1012 × 2−1 = 1, 012 × 21 E = 127 + 1 = 128 ; f = 01 codage : 010000000010 . . . 0 = 0x40200000. Codage de 0, 75 0, 75 = 3 × 2−2 = (2 + 1) × 2−2 = (1 + 2−1 ) × 2−1 = 1, 12 × 2−1 E = 127 − 1 = 126 ; f = 1 codage : 00111111010 . . . 0 = 0x3F400000. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(33) Représentation de l’information. Représentation des réels. Codage IEEE 754 simple précision Les cas exceptionnels 31 30 s. 23 22 E. f. 1. 8. 23. Nom Dénormalisé Zéro Infini NaN. Joël Gay. E 0 0 255 255. 0. f valeur non 0 (−1)s · 2−127 · 0, f 0 0 0 (−1)s · ∞ non 0 Not a number. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(34) Représentation de l’information. Représentation des réels. L’addition des flottants Idée de base : se ramener à la même puissance de 2 puis sommer en faisant les arrondis nécessaires. 1. Comparaison des exposants. 2, 5 = 1, 012 × 21 0, 75 = 1, 12 × 2−1. 2. Décalage à droite de la mantisse du plus petit nombre. Différence de 2 0, 75 = 0, 0112 × 21. 3. Somme des mantisses. 1, 012 + 0, 0112 = 1, 1012. 4. Normalisation du résultat 5. Traitement cas exceptionnels. Normalisé Non. Résultat : 1, 1012 × 21 = 3, 25. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(35) Représentation de l’information. Représentation des réels. L’addition des flottants. 1. Comparaison des exposants 2. Décalage à droite de la mantisse du plus petit nombre 3. Somme des mantisses 4. Normalisation du résultat. 2, 5 = 1, 012 × 21 3, 25 = 1, 1012 × 21 Différence de 0 1, 012 + 1, 1012 = 10, 1112 10, 1112 × 21 = 1, 01112 × 22. 5. Traitement cas exceptionnels. Non. Résultat : 1, 01112 × 22 = 5, 75.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(36) Représentation de l’information. Représentation des réels. L’addition des flottants. 1. Comparaison des exposants. 230 = 1, 02 × 230 3, 25 = 1, 1012 × 21. 2. Décalage à droite de la mantisse du plus petit nombre. Différence de 29 Mantisse mise à 0. 3. Somme des mantisses. 1, 02 + 0, 02 = 1, 02. 4. Normalisation du résultat 5. Traitement cas exceptionnels. Normalisé Arrondi. Résultat : 230 .. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(37) Représentation de l’information. Représentation des réels. Erreurs d’arrondi Le résultat d’une addition est souvent faux. Mais le standard impose que le résultat soit le résultat exact arrondi, avec des choix possibles : I I. Au plus près / Valeur Inférieure / Valeur supérieure Mais 230 + 3, 25 a pour résultat 230 .. Réalisé avec 3 bits supplémentaires seulement. L’addition n’est plus associative : (−230 + 230 ) + 3, 25 = 3, 25 −230 + (230 + 3, 25) = 0 Le traitement des erreurs d’arrondi dans les méthodes numériques est une composante essentielle de l’informatique numérique I I. I. Méthodes mathématiques. Très bien connu pour l’algèbre linéaire et encapsulé dans des bibliothèques dont l’utilisation est impérative. Beaucoup moins bien en simulation.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(38) Représentation de l’information. Représentation des réels. Un bug à $7 milliards : Ariane V 39 seconds: self-destruct, triggered automatically because aerodynamic forces were ripping the boosters from the rocket. Just before: This disintegration had begun an instant before, when the spacecraft swerved off course under the pressure of the three powerful nozzles in its boosters and main engine. The rocket was making an abrupt course correction that was not needed, compensating for a wrong turn that had not taken place. Steering was controlled by the on-board computer, which mistakenly thought the rocket needed a course change because of numbers coming from the inertial guidance system. That device uses gyroscopes and accelerometers to track motion. The numbers looked like flight data – bizarre and impossible flight data – but were actually a diagnostic error message. The guidance system had in fact shut down. 36.7 seconds after launch: shutdown of the guidance system when trying to convert the sideways velocity of the rocket from a 64-bit floating point format to a 16-bit integer. The number was too big, and an overflow error resulted. When the guidance system shut down, it passed control to an identical, redundant unit, which was there to provide backup in case of just such a failure. But the second unit had failed in the identical manner a few milliseconds before. And why not? It was running the same software. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(39) Représentation de l’information. Représentation des réels. Arithmétique des cas exceptionnels Arithmétique étendue I I. Infini : trop grand, règles classiques NaN : not a number, opération hors de l’ensemble de définition. NaN est absorbant.. Dénormalisé simple précision I. I. Motivation : la différence de deux nombres représentables peut ne pas l’être. 1, 11 . . . 12 × 2−126 − 1, 10 . . . 02 × 2−126 = 0, 0 . . . 01 × 2−126 = 2−149 n’est pas représentable. Donc les tests x == y (comparaison des bits) et x − y = 0 ne seraient pas équivalents. Évidemment, le même problème existe pour la différence de deux dénormalisés.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(40) Représentation de l’information. Représentation des réels. Traitement des cas exceptionnels Comportements souhaitables I. Arrêt immédiat : x/(1 + x 2 ) pour x = 265 produit x 2 = ∞, résultat 0 alors que le résultat est de l’ordre de 1/x, donc représentable. Pas d’intérêt à continuer le calcul.. I. Aucune action Arrondi presque toujours Dénormalisé si pas de soustraction problématique. I. Traitement par l’application Méthodes d’exploration : la valeur peut tomber en dehors de l’ensemble de définition. Support au niveau de la norme I I I. Fonctionnement par défaut : continuer dans l’arithmétique étendue Enregistrement des événements anormaux dans des drapeaux Fortement conseillé : gestionnaire d’exception F F. Joël Gay. Traitement par le logiciel de base Souvent arrêt immédiat APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(41) Représentation de l’information. Représentation des réels. Événements anormaux - drapeaux. Drapeau Underflow. Condition Nb trop petit. Overflow Division by 0 Invalid operation. Nb trop grand Division par 0 Résultat NaN avec opérandes non NaN : 0/0, ∞/∞, ∞ − ∞, 0 × ∞, parfois 1∞ Arrondi. Inexact. Joël Gay. APP3 - Architecture des ordinateurs. Résultat 0, xmin, nombre dénormalisé ±∞, xmax ±∞ NaN. Résultat arrondi. Année 2018 − 2019.
(42) Architecture logicielle. Plan. 1. Représentation de l’information. 2. Architecture logicielle. 3. Micro-architecture. 4. Hiérarchie mémoire. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(43) Architecture logicielle. Modèle de Von-Neumann. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(44) Architecture logicielle. Modèle de Von-Neumann. Modèle d’ordinateur de Von Neumann. Processeur (CPU) Unité de contrôle Mémoire UAL Accumulateur. Joël Gay. APP3 - Architecture des ordinateurs. Entrées Sorties. Année 2018 − 2019.
(45) Architecture logicielle. Modèle de Von-Neumann. Modèle d’ordinateur de Von Neumann Mémoire = Instruction et données Processeur : I I I. Tant que true faire Lire instruction : RI ← Mem[PC] ; PC ← PC +1 Exécuter instruction : suite d’actions dépendant de l’instruction. CPU. Addresses. PC = x. Mémoire Inst J Inst J + 1. RI. x x +1. Données. RI : Registre d’instructions Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(46) Architecture logicielle. Modèle de Von-Neumann. Les niveaux d’un système informatique. Application Programmation Programmable. Langage Haut niveau Compilation Langage machine Exécution Microarchitecture. Non programmable Circuits. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(47) Architecture logicielle. Modèle de Von-Neumann. Architecture logicielle. On considère le processeur tel que le voit le compilateur, ou un programmeur d’applications spécifiques bas niveau : interface de programmation Utilisation d’un langage-machine = jeu d’instructions = ”assembleur” Dans toute la suite, on considère un sous-ensemble du jeu d’instructions MIPS.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(48) Architecture logicielle. Modèle de Von-Neumann. Le processeur : partie opérative Calcul uniquement sur les registres Architecture matérielle RISC (Reduced Instruction Set Computer) Registres : Organes de stockage à l’intérieur du processeur (accumulateur). Chacun contient 1 mot. UAL : opérations additionnage, soustraction, division et multiplication par puissances de 2 etc. Joël Gay. R0. .. .. Mémoire. R31. UAL. APP3 - Architecture des ordinateurs. PC RI. Année 2018 − 2019.
(49) Architecture logicielle. Modèle de Von-Neumann. Caractéristiques élémentaires du CPU. Largeur du chemin de données = taille de l’UAL : 32 ou 64 bits. 32 bit pour MIPS. R0 toujours 0 pour MIPS Chaque registre a la même taille que le chemin de données.. Joël Gay. APP3 - Architecture des ordinateurs. R0. .. . 32. R31 32. 32. UAL. Année 2018 − 2019.
(50) Architecture logicielle. Modèle de Von-Neumann. Caractéristiques élémentaires de la mémoire. p Tableau de mots de largeur fixe p. Pour nous par octets (p=8). Accessible chacun par leur adresse Taille = nombre de mots mémoire n.. Joël Gay. APP3 - Architecture des ordinateurs. n. Année 2018 − 2019.
(51) Architecture logicielle. Modèle de Von-Neumann. Un exemple Instruction d’affectation LHN (Langage Haut Niveau) : int A, B, C ; A = B + C ; Comment sont stockées les variables A, B et C ? Comment effectuer le calcul ? Charger B depuis la mémoire vers le CPU LOAD R1, ”adresse de B” Charger C depuis la mémoire vers le CPU LOAD R2, ”adresse de C” Effectuer : R3 ← R1 + R2 ADD R3, R2, R1 Stocker le résultat en mémoire STORE R3, ”adresse de A”. R2 R1 UAL. Mémoire. R3 Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(52) Architecture logicielle. Modèle de Von-Neumann. Langages de haut niveau. Structures de données : Scalaires, Tableaux, Listes, Produits, etc. Affectations : A = B + C + D Contrôle I I I I. Séquence : Instruction1 ; Instruction2 Conditionnelles Boucles Appels de procédures et fonctions. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(53) Architecture logicielle. Modèle de Von-Neumann. Types de données. Un type décrit en général : encombrement mémoire et les opérateurs admissibles Ici les opérateurs sont matériels, donc les types sont : I I. Entiers signés et non signés : taille du chemin de données Flottants : 32 ou 64 bits. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(54) Architecture logicielle. Format des instructions. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(55) Architecture logicielle. Format des instructions. Format des instructions Qu’est-ce qu’une instruction ? Chaı̂ne de bits respectant un format 31 26 25 21 20 16 15 11 10 6 5 0 CODOP Rs Rt Rd Shamt funct 6. 5. 000000 00001 ⇒ 0x00221420. 5. 5. 5. 6. 00010. 00011. 00000. 100000. Version lisible par un humain, assembleur ADD R3, R1, R2. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(56) Architecture logicielle. Format des instructions. Formats MIPS Registre-Registre 31 26 25 21 20 16 15 11 10 6 5 0 CODOP Rs Rt Rd Shamt funct 6. 5. 5. 5. 5. 6. Registre-Immédiat 31 26 25 21 20 16 15 CODOP Rs Rt 6. 5. 0 Immédiat. 5. 16. Sauts 31 27 26 CODOP 5 Joël Gay. 0 Immédiat 27 APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(57) Architecture logicielle. Format des instructions. Opérandes 2 opérandes d’entrée et 1 résultat = 3 opérandes à décrire dans l’instruction Modes d’accès (d’adressage) à un opérande I. Registre F F. I. Immédiat F F. I. L’opérande est dans un registre Le registre est décrit par son numéro, sur 5 bits L’opérande est dans l’instruction, sur les 16 bits de poids faible Problématique, voir plus loin. Le résultat est toujours en registre !. Format R-R : tous les opérandes en registre Format R-I : un des opérandes source est un immédiat. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(58) Architecture logicielle. Format des instructions. Quelques instructions MIPS (1) MIPS Reference Sheet 31. 26 25 opcode opcode opcode. 21 20 rs rs. 16 15. 11 10. rt rt. rd target. 6 5 0 shamt funct R-type immediate I-type J-type. R[$x]&indicates&the®ister&with&address&x BMEM&indicates&a&byte&aligned&access&to&memory HMEM&indicates&a&half&word&aligned&access&to&memory WMEM&indicates&a&word&aligned&access&to&memory. Load and Store Instructions Name. Mnemonic. RTL Description. 100000. base. dest. signed offset. Load Byte. LB rt,offset(rs). 100001. base. dest. signed offset. Load Halfword. LH rt,offset(rs). 100011. base. dest. signed offset. Load Word. LW rt,offset(rs). Load Byte Unsigned. LBU rt,offset(rs). R[$rt] = SignEXT(BMEM[(R[$rs]+ SignEXT(imm))[31:0]]) R[$rt] = SignEXT(HMEM[(R[$rs]+ SignEXT(imm))[31:1]]) R[$rt] = WMEM[(R[$rs]+ SignEXT(imm))[31:2]] R[$rt] = ZeroEXT(BMEM[(R[$rs]+ SignEXT(imm))[31:0]]) R[$rt] = ZeroEXT(HMEM[(R[$rs]+ SignEXT(imm))[31:1]]) BMEM[(R[$rs]+SignEXT(imm))[31:0]] = R[$rt][7:0] HMEM[(R[$rs]+SignEXT(imm))[31:1]] = R[$rt][15:0] WMEM[(R[$rs]+SignEXT(imm))[31:2]] = R[$rt]. 100100. base. dest. signed offset. 100101. base. dest. signed offset. Load Halfword Unsigned. LHU rt,offset(rs). 101000. base. dest. signed offset. Store Byte. SB rt,offset(rs). 101001. base. dest. signed offset. Store Halfword. SH rt,offset(rs). signed offset. Store Word. SW rt,offset(rs). 101011. base. dest. R-Type Computational Instructions 000000. 000000. src. dest. shamt. 000000. Name Shift Left Logical. Mnemonic SLL rd, rt, shamt. R[$rd] = R[$rt] << shamt. 000000. 000000. src. dest. shamt. 000010. Shift Right Logical. SRL rd, rt, shamt. R[$rd] = R[$rt] >> shamt. RTL Description. 000000. 000000. src. dest. shamt. 000011. Shift Right Arithmetic. SRA rd, rt, shamt. R[$rd] = R[$rt] >>> shamt. 000000. src1. src2. dest. 000000. 100000. Add (with overflow). ADD rd, rs, rt. R[$rd] = R[$rs] + R[$rt]. 000000. src1. src2. dest. 000000. 100001. Add Unsig. (no overflow). ADDU rd, rs, rt. R[$rd] = R[$rs] + R[$rt]. 000000. src1. src2. dest. 000000. 100010. Subtract. SUB rd, rs, rt. R[$rd] = R[$rs] - R[$rt]. 000000. src1. src2. dest. 000000. 100011. Subtract Unsigned. SUBU rd, rs, rt. R[$rd] = R[$rs] - R[$rt]. AND rd, rs, rt. R[$rd] = R[$rs] & R[$rt]. 000000. src1. src2. dest. 000000. 100100. And. 000000. src1. src2. dest. 000000. 100101. Or. OR rd, rs, rt. R[$rd] = R[$rs] | R[$rt]. XOR rd, rs, rt. R[$rd] = R[$rs] ^ R[$rt]. 000000. src1. src2. dest. 000000. 100110. Xor. 000000. src1. src2. dest. 000000. 100111. Nor. NOR rd, rs, rt. R[$rd] = ~R[$rs] & ~R[$rt]. 000000. src1. src2. dest. 000000. 101010. Set Less Than. SLT rd, rs, rt. R[$rd] = R[$rs] < R[$rt]. 000000. src1. src2. dest. 000000. 101011. Set Less Than Unsig.. SLTU rd, rs, rt. R[$rd] = R[$rs] < R[$rt]. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(59) Architecture logicielle. Format des instructions. Quelques instructions MIPS (2) MIPS Reference Sheet 31. 26 25 opcode opcode opcode. 21 20 rs rs. 16 15 rt rt. 11 10 rd target. 6 5 0 shamt funct R-type immediate I-type J-type. I-Type Computational Instructions. Name. R[$x]&indicates&the®ister&with&address&x BMEM&indicates&a&byte&aligned&access&to&memory HMEM&indicates&a&half&word&aligned&access&to&memory WMEM&indicates&a&word&aligned&access&to&memory RTL$Description. 001001. src. dest. signed immediate. Add Imm. Unsigned. Mnemonic ADDIU rt, rs, signed-imm.. R[$rt] = R[$rs] + SignEXT(imm). 001010. src. dest. signed immediate. Set Less Than Imm.. SLTI rt, rs, signed-imm.. R[$rt] = R[$rs] < SignEXT(imm). 001011. src. dest. signed immediate. Set Less Than Imm. Unsig. SLTIU rt, rs, signed-imm.. R[$rt] = R[$rs] < SignEXT(imm). 001100. src. dest. zero-ext. immediate. And Immediate. ANDI rt, rs, zero-ext-imm.. R[$rt] = R[$rs] & ZeroEXT(imm). 001101. src. dest. zero-ext. immediate. Or Immediate. ORI rt, rs, zero-ext-imm.. R[$rt] = R[$rs] | ZeroEXT(imm). 001110. src. dest. zero-ext. immediate. Xor Immediate. XORI rt, rs, zero-ext-imm.. R[$rt] = R[$rs] ^ ZeroEXT(imm). 001111. 00000. dest. zero-ext. immediate. Load Upper Imm.. LUI rt, zero-ext-imm.. R[$rt] = {imm, 0x0000}. Name. PC = {PC[31:28], target, 00}. Jump and Branch Instructions 000010. target. Jump. Mnemonic J target. 000011. target. Jump and Link. JAL target. 000000. src. 00000. 00000. 00000. 001000. Jump Register. JR rs. 000000. src. 00000. dest. 00000. 001001. Jump and Link Register. JALR rd, rs BEQ rs, rt, offset BNE rs, rt, offset. RTL$Description R[31] = PC + 8; PC = {PC[31:28], target, 00} PC = R[$rs] R[$rd] = PC + 8; PC = R[$rs] PC = PC + 4 + (R[$rs] == SignEXT(imm) << 2 : PC = PC + 4 + (R[$rs] != SignEXT(imm) << 2 : PC = PC + 4 + (R[$rs] <= SignEXT(imm) << 2 :. R[$rt] ? 0) R[$rt] ? 0) 0 ? 0). 000100. src1. src2. signed offset. Branch On Equal. 000101. src1. src2. signed offset. Branch On Not Equal. 000110. src. 00000. signed offset. 000111. src. 00000. signed offset. Branch On Less Than or Equal BLEZ rs, offset to Zero Branch on Greater than Zero BGTZ rs, offset. 000001. src. 00000. signed offset. Branch on Less Than Zero. BLTZ rs, offset. 000001. src. 00001. signed offset. Branch on Greater than or Equal to Zero. BGEZ rs, offset. Name Branch Less Than. Mnemonic BLT rs, rt, label. if(R[$rs]<R[$rt]) PC = Label. Branch Greater Than. BGT rs, rt, label. if(R[$rs]>R[$rt]) PC = Label. Pseudoinstruction Set These are simple assembly language instructions that do not have a direct machine language equivalent. During assembly, the assembler translates each psedudoinstruction into one or more machine language instructions.. Joël Gay. PC = PC + 4 + (R[$rs] > 0 ? SignEXT(imm) << 2 : 0) PC = PC + 4 + (R[$rs] < 0 ? SignEXT(imm) << 2 : 0) PC = PC + 4 + (R[$rs] >= 0 ? SignEXT(imm) << 2 : 0). RTL$Description. Branch Less Than or Equal BLE rs, rt, label. if(R[$rs]<=R[$rt]) PC = Label. Branch Greater Than or Equal BGE rs, rt, label. if(R[$rs]>=R[$rt]) PC = Label. Load Immediate. li rd, immediate. R[$rd] = immediate. Move. move rd, rs. R[$rd] = R[$rs]. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(60) Architecture logicielle. Instructions arithmétiques. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(61) Architecture logicielle. Instructions arithmétiques. Instructions arithmétiques et logiques Arithmétiques I. ADD, SUB et variantes : addition, soustraction. Logiques I. AND, OR, XOR et variantes : opérations logiques bit à bit. Exemples I I I. Etat initial R1 = 0x00001000, R2 = 0xEF125634 ADD R3, R2, R1 : R3 ← 0xEF126634 AND R3, R2, R1 : R3 ← 0x00001000. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(62) Architecture logicielle. Instructions arithmétiques. Instructions d’addition (1) ADD 31. I I I. I. 26 25. 21 20. 16 15. 000000. Rs. Rt. 6. 5. 5. 11 10. 6. 5. 0. Rd. 00000. 100000. 5. 5. 6. Format R-R Syntaxe ADD Rd, Rs, Rt Effet Rd ← Rs + Rt si résultat représentable en interprétation en relatifs, trap on overflow sinon. Exemple : ADD R3, R1, R2 F F F F. Joël Gay. Initialement R1= 0x00000000 et R2 =0x12345678 code 0b000000 00001 00010 00011 00000 100000 = 0x00221820 si initialement R1 = 0x00000001, effet R3 = 0x12345679 si initialement R1 = 0x70000000, effet R3 inchangé et exception. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(63) Architecture logicielle. Instructions arithmétiques. Instructions d’addition (2) ADDU 31. I I I I. 26 25. 21 20. 16 15. 11 10. 6. 5. 0. 000000. Rs. Rt. Rd. 00000. 100001. 6. 5. 5. 5. 5. 6. Format R-R Syntaxe ADDU Rd, Rs, Rt Effet Rd ← Rs + Rt au sens additionnage Exemple : ADDU R3, R1, R2 F F F F. Joël Gay. Initialement R1= 0x00000000 et R2 =0x12345678 code 0b000000 00001 00010 00011 00000 100001 = 0x00221821 si initialement R1 = 0x00000001, effet R3 = 0x12345679 si initialement R1 = 0x70000000, effet R3 = 0x82345679. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(64) Architecture logicielle. Instructions arithmétiques. Instructions d’addition (3) ADDI 31. I I I. I. 26 25. 21 20. 16 15. 0. 001000. Rs. Rt. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe ADDI Rt, Rs, Imm16 Effet Rt ← Rs + ES32 (Imm16 ) si résultat représentable en interprétation en relatifs, trap on overflow sinon. Exemples. Initialement R2= 0x00000000 et R1 = 0x12345678 F. F. Joël Gay. ADDI R2, R1, 9 Code 0b001000 00001 00010 0. . . 01001 = 0x20220009 Résultat R2 = 0x12345681 ADDI R2, R1, -1 Code 0b001000 00001 000010 1. . . 1 = 0x2022FFFF Résultat R2 = 0x12345677 APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(65) Architecture logicielle. Instructions arithmétiques. Instructions d’addition (4) ADDIU 31. I I I I. 26 25. 21 20. 16 15. 0. 001000. Rs. Rt. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe ADDI Rt, Rs, Imm16 Effet Rd ← Rs + ES32 (Imm16 ) au sens additionnage Exemples. F. F. F. Joël Gay. Initialement R1 = 0x7FFFFFFF ADDI R2, R1, 1 : Résultat R2 = 0x80000000 Initialement R1 = 0xFFFFFFFF ADDI R2, R1, 9 : Résultat R2 = 0x00000008 Initialement R1 = 0x80000000 ADDI R2, R1, -1 : Résultat R2 = 0x7FFFFFFF. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(66) Architecture logicielle. Instructions arithmétiques. Instruction addition Registre-Immédiat Application : compiler l’évaluation des expressions contenant des constantes Y = X + 12 Se compile en < charger X dans R1 > ADDI (ou ADDIU) R2, R1, 12 < ranger R2 dans Y > Mais comment compiler Y = X + 0x12345678 ? Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(67) Architecture logicielle. Instructions arithmétiques. Instruction LUI LUI 31. I I I I I. 26 25. 21 20. 16 15. 0. 001111. 00000. Rt. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe LUI Rt, Imm16 Effet Rt ← Imm16 || 0x0000 Exemple LUI R1, 0x1234. Effet : R1 = 0x12340000. Usage F. F. Joël Gay. Compiler les expressions faisant intervenir des constantes entières sur plus de 16 bits, par exemple Y= X + 0x12345678. En langage assembleur, on utilise la pseudo-instruction LI, qui est implémentée à partir de LUI (voir TD). On ne peut pas avoir 32 bits dans une instruction 32 bits !. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(68) Architecture logicielle. Instructions arithmétiques. Instructions logiques (1). AND 31. I I I I. 26 25. 21 20. 16 15. 11 10. 6. 5. 0. 000000. Rs. Rt. Rd. 00000. 100100. 6. 5. 5. 5. 5. 6. Format R-R Syntaxe AND Rd, Rt, Rs Effet Rd ← Rs AND Rt au sens bit-à-bit Exemple. Initialement R1 =0x12345678 et R3= 0x00000000 F. Joël Gay. si R2 = 0x00000041,. effet R3 = 00000040. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(69) Architecture logicielle. Instructions arithmétiques. Instructions logiques (2) ANDI 31. I I I I. 26 25. 21 20. 16 15. 0. 001100. Rs. Rt. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe ANDI Rt, Rs, Imm16 Effet Rt ← Rs AND EZ32 (Imm16 ) au sens bit-à-bit Exemple. Initialement R1 =0x12345678 et R2= 0x00000000 F F. ANDI R2, R1, 0x0041 ANDI R2, R1, 0xFF41. effet R2 = 0x00000040 effet R2 = 0x00005640. Autres instructions logiques (OR, ORI, NOR, NOT, XOR, XORI) dans la feuille MIPS de référence. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(70) Architecture logicielle. Instructions arithmétiques. Instructions de décalage (1) SLL : Shift Left Logical 31. I I I. I. 26 25. 21 20. 16 15. 11 10. 6. 5. 0. 000000. 00000. Rt. Rd. Imm5. 000000. 6. 5. 5. 5. 5. 6. Format R-R, bits 21-25 non significatifs (0) Syntaxe SLL Rd, Rt, Imm5 Effet Rd ← Rt décalé à gauche de Imm5 interprété en non signé. NB: C’est donc la multiplication non signée par 2Imm5 si le résultat est représentable Exemple : SLL R2, R1, 8 F F. Joël Gay. Initial R1 = 0x00070000 Résultat R2 = 0x07000000. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(71) Architecture logicielle. Instructions arithmétiques. Instructions de décalage (2) SRL : Shift Right Logical I I. Syntaxe SRL Rd, Rt, Imm5 Effet Rd ← Rt décalé à droite de Imm5 , avec extension à zéro NB: Division en entiers naturels par 2Imm5 si représentable.. SRA : Shift Right Arithmetic I I. Syntaxe SRL Rd, Rt, Imm5 Effet Rd ← Rt décalé à droite de Imm5 , avec extension de signe. Exemples I I. SRL R2, R1, 12 avec R1=0xFFFFFFFF, résultat R2 = 0x000FFFFF SRA R2, R1, 12 avec R1=0xFFFFFFFF, résultat R2 = 0xFFFFFFFF. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(72) Architecture logicielle. Instructions arithmétiques. Calculs de conditions SLT 31. I I I. 26 25. 21 20. 16 15. 11 10. 6. 5. 0. 000000. Rs. Rt. Rd. 00000. 101010. 6. 5. 5. 5. 5. 6. Format R-R Syntaxe SLT Rd, Rs, Rt Effet Si Rs < Rt en signé, Rd ← 1, sinon Rd ← 0.. SLTI 31. I I I. 26 25. 21 20. 16 15. 0. 001010. Rs. Rt. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe SLTI Rt, Rs, Imm16 Effet si Rs < ES32 (Imm16 ) en signé, Rd ← 1, sinon Rd ← 0.. SLTU, SLTIU : comparaison non signée Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(73) Architecture logicielle. Instructions arithmétiques. Instructions conditionnelles Limités à des MOV : I. MOVN F F. I. Syntaxe MOVN Rd, Rs, Rt Effet si Rt 6= 0, Rd ← Rs. MOVZ F F. Syntaxe MOVZ Rd, Rs, Rt Effet si Rt = 0, Rd ← Rs. Exemple de programme : Min Signe (R8, R9) SLT R1, R8, R9 MOVN R9, R8, R1. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(74) Architecture logicielle. Instructions arithmétiques. À retenir sur “l’assembleur”. On a vu les instructions sous représentation alphanumérique du format, pour la commodité de l’interaction homme-machine. Exemple : ADD R1, R2, R3. On peut trouver de telles instructions : I I. En programmation directe (cf. TP) Comme résultat de la compilation (sous Unix, Option -S). On a vu comment coder les instructions (codage) : de l’alphanumérique vers le binaire.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(75) Architecture logicielle. Instructions d’accès mémoire. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(76) Architecture logicielle. Instructions d’accès mémoire. Instruction d’accès mémoire. Chargement : de la mémoire vers le processeur Rangement : du processeur vers la mémoire MIPS : uniquement format R-I Point délicat : la mémoire est organisée par octets, mais le chemin de données est 32 bits.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(77) Architecture logicielle. Instructions d’accès mémoire. Représentation des variables en mémoire Dans quel ordre placer les variables multi-octets ? int x = 0x12345678 ; Mémoire organisée en big endian. 0x00001000 0x00001001 0x00001002 0x00001003. 12 34 56 78. Mémoire organisée en little endian. 0x00001000 0x00001001 0x00001002 0x00001003. 78 56 34 12. On se met en cadre big endian pour la suite.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(78) Architecture logicielle. Instructions d’accès mémoire. Chargement LW : Load Word 31. 26 25. 21 20. 16 15. 0. 100011. base. Rt. Immédiat. 6. 5. 5. 16. I I I. I. I. Syntaxe LW Rt, Imm16 (base) Effet Rt ← Mem32 [base + ES(Imm16 )] L’immédiat est appelé parfois offset : décalage. NB: attention aux questions d’alignement, ici multiple de 4 (voir + loin) Exemples LW R2, 0(R1) R2 ← 0x12345678 LW R2, 4(R1) R2 ← 0xABCDEF09 Joël Gay. APP3 - Architecture des ordinateurs. Etat initial R1 = 0x00001000 12 34 56 78 AB CD EF 09. 1000 1001 1002 1003 1004 1005 1006 1007. Année 2018 − 2019.
(79) Architecture logicielle. Instructions d’accès mémoire. Rangement SW : Store Word 31. I I I I. 26 25. 21 20. 16 15. 0. 101011. base. Rt. Immédiat. 6. 5. 5. 16. Syntaxe SW Rt, Imm16 (base) Effet Mem32 [base + ES(Imm16 )] ← Rt NB: attention aux questions d’alignement Exemple :. Etat initial R1 = 0x00001000 et R2 = 0xEF125634. Effet des instructions SW R2, 0(R1). 12 34 56 78 AB CD EF 09. EF 12 56 34 AB CD EF 09. Joël Gay. 1000 1001 1002 1003 1004 1005 1006 1007 APP3 - Architecture des ordinateurs. 1000 1001 1002 1003 1004 1005 1006 1007 Année 2018 − 2019.
(80) Architecture logicielle. Instructions d’accès mémoire. Représentation des variables en mémoire Les types élémentaires des LHN correspondent à un nombre précis d’octets : Caractères char 1 Entiers courts short 2 Entiers int 4 Flottants simple précision float 4 Flottants double précision double 8 Alignement : à la compilation, les variables sont alignées sur leurs frontières naturelles = adresses multiples de leurs tailles. Instructions Nom Multiple de SB, LB Byte 1 SH, LH Half-word 2 SW, LW Word 4 Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(81) Architecture logicielle. Instructions d’accès mémoire. Représentation des variables en mémoire Tableaux : stockés séquentiellement à partir de l’adresse du premier élément Adresse(tab[i]) = Adresse(tab[0]) + i * sizeof(élément tableau). Programme en C : échange int v[N], k, temp ; temp = v[k] ; v[k] = v[k+1] ; v[k+1] = temp ;. Joël Gay. Assembleur Initialement, R1 = SLL R2, R2, 2 ADD R2, R2, R1 LW R3, 0(R2) LW R4, 4(R2) SW R4, 0(R2) SW R3, 4(R2). APP3 - Architecture des ordinateurs. v[0], R2 = k ; k ← k*4 ; R2 ← v[k] ; temp = R3 ← v[k] ; R4 ← v[k+1] ; v[k] ← R4 ; v[k+1] ← temp. Année 2018 − 2019.
(82) Architecture logicielle. Instructions de contrôle. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(83) Architecture logicielle. Instructions de contrôle. Instructions de branchement Comment réaliser les ruptures de séquence ? Branchements : déplacement relatif PC ← PC + depct Sauts PC ← adresse NB : I I I. PC pointe l’instruction qui suit le branchement Les instructions occupent 4 octets et sont alignées En MIPS vrai, l’instruction qui suit le branchement ou le saut (delay slot) est exécutée. Le cours et les TD ne sont pas conformes au MIPS sur ce point.. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(84) Architecture logicielle. Instructions de contrôle. Instructions de branchement (1) BLEZ 31. I I I I. 26 25. 21 20. 16 15. 0. 000110. Rs. 00000. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe BLEZ Rs, Imm16 Effet Si Rs ≤ 0, PC ← PC + ES(Imm16 || 0b00) Exemples F. F. Joël Gay. BLEZ R0, Imm16 est un branchement inconditionnel BA (Branch At). Pour les exercices papier, on peut utiliser la fausse pseudo-instruction BA SI BLEZ est à l’adresse 0x10000000, BLEZ R0, 16 branche à l’adresse 0x10000040.. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(85) Architecture logicielle. Instructions de contrôle. Instructions de branchement (2). BGEZ 31. I I I. 26 25. 21 20. 16 15. 0. 000001. Rs. 00001. Immédiat. 6. 5. 5. 16. Format R-I Syntaxe BGEZ Rs, Imm16 Effet Si Rs ≥ 0, PC ← PC + ES(Imm16 || 0b00). Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(86) Architecture logicielle. Instructions de contrôle. Compilation des conditionnelles LHN :. Assembleur : Bcond vrai Instructions du bloc 2 BA lsuite vrai: Instructions du bloc 1 suite: . . .. Si condition alors Bloc1 sinon Bloc2. Exemple : placer dans R1 la valeur absolue de R2 Version littérale. Pos: Suite:. BGEZ R2, pos NEGU R1, R2 B suite MOV R1, R2 ... Joël Gay. Version optimisée ; R2 ≥ 0 ? ; R1 = −R2 ; R1 ← R2 Suite:. MOV R1, R2 BGEZ R1, suite NEGU R1, R1 .... APP3 - Architecture des ordinateurs. ; R1 = R2. Année 2018 − 2019.
(87) Architecture logicielle. Instructions de contrôle. Conditionnelles Rappel : Instructions conditionnelles : I. MOVN F F. I. Syntaxe MOVN Rd, Rs, Rt Effet si Rt 6= 0 Rd ← Rs. MOVZ F F. Syntaxe MOVZ Rd, Rs, Rt Effet si Rt = 0 Rd ← Rs. Utilisation des instructions conditionnelles : éviter les branchements. Exemple : placer dans R1 la valeur absolue de R2 Version optimisée. Suite:. MOV R1, R2 BGEZ R1, suite NEGU R1, R1 ... Joël Gay. Version sans branchements NEGU R1, R2 SLT R3, R1, R0 MOVN R1, R2, R3 APP3 - Architecture des ordinateurs. ; R1 = −R2 ; R3 = (R1 < 0) ; si (R1 < 0) corriger Année 2018 − 2019.
(88) Architecture logicielle. Instructions de contrôle. Boucles : principes généraux. Tant que : un branchement conditionnel + un branchement inconditionnel Boucle: bcht cond fausse Suite corps boucle bcht incond Boucle Suite: for, répétition : un seul branchement, conditionnel Boucle: corps boucle bcht cond vraie Boucle. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(89) Architecture logicielle. Instructions de contrôle. Boucles : exemple (1) int a[100], b[100]; for (i=0; i < 100; i++) a[i] = b[i] +10 ; Initialement : R4 = b[0] et R5 = a[0] loop:. ADDI R6,R5,400 ; R6 ← première adresse invalide LW R7,0(R5) ; R7 ← b[i] ADDI R7,R7,10 ; R7 ← b[i]+10 SW R7,0(R4) ; a[i] ← R7 ADDI R5,R5,4 ; i++ pour b ADDI R4,R4,4 ; i++ pour a BNE R5,R6,loop ; branche si i < n. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(90) Architecture logicielle. Instructions de contrôle. Boucles : exemple (2) char a[100], b[100]; for (i=0; i < 100; i++) a[i] = b[i] +10 ; Initialement : R4 = b[0] et R5 = a[0] loop:. ADDI R6,R5,100 ; R6 ← première adresse invalide LB R7,0(R5) ; R7 ← b[i] ADDI R7,R7,10 ; R7 ← b[i]+10 SB R7,0(R4) ; a[i] ← R7 ADDI R5,R5,1 ; i++ pour b ADDI R4,R4,1 ; i++ pour a BNE R5,R6,loop ; branche si i < n. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(91) Architecture logicielle. Instructions de contrôle. Boucles : exemple (3) int a[100], b[100]; for (i=0; i < 99; i++) a[i+1] = b[i] +10 ; Initialement : R4 = b[0] et R5 = a[0] loop:. ADDI R6,R5,396 ; R6 ← première adresse invalide LW R7,0(R5) ; R7 ← b[i] ADDI R7,R7,10 ; R7 ← b[i]+10 SW R7,4(R4) ; a[i] ← R7 ADDI R5,R5,4 ; i++ pour b ADDI R4,R4,4 ; i++ pour a BNE R5,R6,loop ; branche si i < n. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(92) Architecture logicielle. Procédures. Plan. 2. Architecture logicielle Modèle de Von-Neumann Format des instructions Instructions arithmétiques Instructions d’accès mémoire Instructions de contrôle Procédures. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(93) Architecture logicielle. Procédures. Procédures Appel et retour de procédure La procédure peut être à une adresse éloignée L’appelante connaı̂t l’adresse de l’appelée, mais le contraire n’est pas vrai Il faut assurer la sauvegarde de l’adresse de retour Appelante. Appelée Inst. 1. Inst. d’appel Inst. suivante. retour. PC. Mémoire Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(94) Architecture logicielle. Procédures. Support pour l’appel et le retour de procédure JAL : Jump and Link 31. I I I. 26 25. 0. 000011. Immédiat. 6. 26. Format Sauts (J) Syntaxe JAL Imm2 6. Effet R31 ← PC + 4 ; PC ← PC31:28 || Imm26 || 0b00.. JR : Jump Register 31. I I I I. 26 25. 21 20. 16 15. 11 10. 6. 5. 0. 000000. Rs. 00000. 00000. hint. 001000. 6. 5. 5. 5. 5. 6. Format R-R Syntaxe JR Rs Effet PC ← Rs Usage typique : JR R31. Joël Gay. APP3 - Architecture des ordinateurs. Année 2018 − 2019.
(95) Architecture logicielle. Procédures. Pile d’exécution. Pile précédente. Appels de procédures imbriqués : conserver l’adresse de retour Les procédures peuvent modifier certains registres Conventions logicielles sur :. I I. Le stockage en mémoire de l’adresse de retour et des paramètres Le registre pointeur de pile : R29 l’usage des registres : F. F F. Joël Gay. R8-R15 et R25-R26 ne sont pas sauvegardés par l’appelée R16-R23 doivent être sauvegardés. R4-R7 passage des paramètres, R2 valeur de retour. APP3 - Architecture des ordinateurs. variables locales adresse retour sauvegarde registres autres arguments pour future pile si besoin arguments registre pour une future pile (R4-R7). Année 2018 − 2019. Pile courante. I.
(96)