GIF-1001 Ordinateurs: Structure et Applications Automne 2016 Examen mi-session 26 octobre 2016 Durée: 170 minutes Cet examen comporte 8 questions sur 10 pages (incluant celle-ci), comptabilisées sur un total de 100 points. L’examen compte pour 40% de la note totale pour la session. Assurez-vous d’avoir toutes les pages. Les règles suivantes s’appliquent: • Vous avez droit à une feuille aide-mémoire 8.5 × 11 recto-verso écrite à la main; • Écrivez vos réponses dans le cahier de réponses qui vous a été remis; • L’annexe A contient une liste d’instructions ARM; • L’annexe B contient la table ASCII. La table ci-dessous indique la distribution des points pour chaque question. Bonne chance! Question: 1 2 3 4 5 6 7 8 Total Points: 6 23 11 12 12 21 15 10 110 GIF-1001 Examen mi-session Page 2 de 10 1. Répondez aux questions suivantes sur les ordinateurs. (a) (1 point) Quelle est la composante électronique qui à remplacé le tube à vide et qui à ouvert la porte aux microprocesseurs? (b) (2 points) Selon l’architecture de von Neumann, quelles sont les quatre (4) composantes principales d’un processeur? (c) (1 point) Quelles sont les trois (3) grandes opérations du cycle d’instructions? (d) (2 points) Identifiez un périphérique qui est à la fois une entrée et une sortie pour l’ordinateur et expliquez pourquoi il s’agit d’une entrée et pourquoi il s’agit d’une sortie. 2. Répondez aux questions suivantes sur la représentation des données dans un ordinateur. (a) (1 point) Combien de bits sont nécessaires pour stocker le jour du mois? (b) (3 points) Convertissez les nombres décimaux suivants en hexadécimal sur 20 bits: 4096, 512 et 170. Nombres rationnels, en binaire (c) (2 points) Additionnez les deux nombres suivants qui sont donnés en représentation complément-2 sur 12 bits et donnez la réponse en hexadécimal et en décimal: 0xFF5 et• 0xFE3. La norme IEEE 754 a été adoptée universellement (2008) pour les fractions sur si l’addition de la question précédente à provoqué une retenue (carry) (d) (1 point) 32, 64,Indiquez et 128 bits et indiquez si elle a provoqué un débordement (overflow ). • Très similaire à la notation scientifique: (e) (1 point) Donnez deux nombres en hexadécimal sur 4 bits qui vont provoquer une retenue exposant et un• débordement lorsqu’on les additionne ensemble. (signe) 1,mantisse x2 (f) (2 points) Lors d’une addition de deux nombres en complément-2, comment peut-on faire • Par exemple, 32 bits (simpleDonnez précision): pour détecter unsur débordement? un exemple sur 5 bits. (g) (2 points) • signe:Donnez un bit le nombre de bits à 1, le nombre de bits à 0 et le nombre total de bits dans le nombre suivant: 0xF0E1D2C3B4A59687. • base: 2, donc binaire. Comme cette base est toujours 2, on n’a pas besoin de la (h) (2 points) Quel stocker (c’estnombre implicite)est représenté par 0x42280000 encodé sur 32 bits avec IEEE 754? Rappel: la norme IEEE 754 emploie la formule • exposant (décalé): 8 bits (donc de 0 à 255), mais on soustrait 127, donc de -127 à +127 (signe)1, mantisse × 2(exposant−127) , mantisse: bits selon la figure 1. et les• bits sont 23 stockés 1 bit signe 8 bits exposant 23 bits mantisse Figure 1: Convention IEEE-754 sur 32 bits. (i) (2 points) Quel nombre est représenté par 0x7FC42000 encodée sur 32 bits avec IEEE 754? (j) (2 points) Quel nombre est représenté par 0xff800000 encodé sur 32 bits avec IEEE 754? (k) (3 points) Donnez la réprésentation IEEE 754 32 bits en hexadécimal de la fraction 87 . (l) (2 points) Comment pouvez-vous représenter en mémoire sur 16 bits le nombre de pizzas 1 que vous aller manger durant vos études universitaires avec une précision d’exactement 32 de pizza? Dites quel est le nombre maximal de pizzas que vous pourrez représenter avec votre système. GIF-1001 Examen mi-session Page 3 de 10 3. Pour les questions suivantes, considérez une mémoire pouvant stocker 128 octets (1 octet par adresse) dont une partie du contenu est illustré ci-dessous. Adresse ... 50h 51h 52h 53h 54h 55h 56h 57h 58h 59h ... 70h 71h 72h 73h ... Valeur ... 00h 61h 42h 63h 21h 00h 10h 12h 14h 15h ... 23h 67h 69h 66h ... (a) (1 point) Quelle est la largeur minimale requise du bus d’adresse pour accéder à toutes les adresses de cette mémoire? (b) (1 point) Quelle est la largeur du bus de données utilisé par cette mémoire? (c) (1 point) Donnez le nombre total de bits pouvant être stockés dans cette mémoire. (d) (2 points) Après avoir analysé un programme, vous avez déterminé qu’il met le mot de passe de l’utilisateur à l’adresse 81, et que le mot de passe a quatre (4) caractères. Quel est-il? (e) (2 points) En faisant l’hypothèse d’un système petit boutiste (little endian) et qu’un nombre non-signé de 32 bits est en mémoire à l’adresse 86, quel est ce nombre en hexadécimal? (f) (2 points) En faisant l’hypothèse d’un système gros boutiste (big endian) et qu’un nombre non-signé de 32 bits est en mémoire à l’adresse 84, quel est ce nombre en hexadécimal? (g) (2 points) Quel type d’information vu dans le cadre du cours (entier, rationnel, caractère, chaı̂ne de caractères, ...) est stocké en mémoire aux adresses 70h à 73h inclusivement? GIF-1001 Examen mi-session Page 4 de 10 4. Un système de type “memory-mapped I/O” possède les caractéristiques suivantes: • un bus d’adresse de 21 bits, avec les 2 bits les plus significatifs (MSB) utilisés pour le décodeur d’adresse; • un bus de données de 16 bits; • une mémoire RAM où chaque octet possède une adresse différente; • trois autres périphériques sont branchés sur les bus; • il stocke les données en mémoire avec la convention “big endian”; • si on nomme les bits les plus significatifs (MSB) du bus d’adresse b20 et b19 , le décodeur sélectionne les périphériques de la façon suivante: b20 0 0 1 1 b19 0 1 0 1 Périphérique activé RAM Périphérique 1 Périphérique 2 Périphérique 3 (a) (2 points) Quelle est la taille maximale de la mémoire RAM? Écrivez votre réponse en kilo-octets (Ko). (b) (2 points) Quelle est la carte de la mémoire (memory map) de ce système? Nous modifions le système afin qu’il puisse utiliser un bus de données de 32 bits au lieu de seulement 16. Le bus d’adresse ne change pas. (c) (2 points) Décrivez l’impact de ce changement sur la taille maximale de la mémoire RAM. Écrivez votre réponse en kilo-octets (Ko). (d) (2 points) Quelle est la carte de la mémoire (memory map) de ce système? Finalement, nous remplaçons la mémoire RAM du système pour une mémoire qui attribue une adresse différente à chaque mot de 16 bits au lieu de seulement 8. Le système possède maintenant un bus de données de 32 bits, et cette nouvelle mémoire. (e) (2 points) Décrivez l’impact de ce changement sur la taille maximale de la mémoire RAM. Écrivez votre réponse en kilo-octets (Ko). (f) (2 points) Quelle est la carte de la mémoire (memory map) de ce système? GIF-1001 Examen mi-session Page 5 de 10 5. Répondez aux questions suivantes portant sur le micro-processeur du simulateur du travail pratique 1. Un rappel du jeu d’instructions est fourni: Toutes les instructions du microprocesseur sont sur 16 bits et se décomposent comme suit: • Bits 15 à 12: Opcode de l’instruction • Bits 11 à 8: Registre utilisé comme premier paramètre. • Bits 7 à 0: Registre ou constante utilisés comme deuxième paramètre Le jeu d’instruction supporte les instructions suivantes où Rd est le registre destination, Rs le registre source et Rc le registre de condition: Mnémonique MOV Rd Rs MOV Rd Const ADD Rd Rs ADD Rd Const Opcode 0000 0100 0001 0101 SUB Rd Rs SUB Rd Const LDR Rd [Rs] STR Rd [Rs] JZE Rc Const 0010 0110 1000 1001 1111 JZE Rc Rs 1011 Description Écriture de la valeur du registre Rs dans le registre Rd Écriture d’une constante dans le registre Rd Addition des valeurs des registres Rd et Rs et insertion du résultat dans le registre Rd Addition de la valeur du registre Rd avec une constante et insertion du résultat dans Rd Soustraction de la valeur Rs à l’intérieur de registre Rd. Soustraction d’une constante à l’intérieur du registre Rd Chargement d’une valeur se trouvant à l’adresse Rs de l’ordinateur dans un registre. Écriture de la valeur d’un registre à l’adresse Rs de l’ordinateur. Saut à l’instruction située à l’adresse identifiée par la constante, mais seulement si Rc = 0 (sinon, cette instruction n’a aucun effet). Saut à l’instruction située à l’adresse Rs seulement si Rc = 0 (sinon, cette instruction n’a aucun effet). Table 1: Jeu d’instructions du microprocesseur (a) (5 points) Traduisez le programme suivant en binaire, et écrivez votre réponse en hexadécimal. Les numéros de ligne sont indiqués à gauche. 1 2 3 4 5 MOV LDR ADD ADD STR R3 R2 R2 R2 R2 #32 [ R3 ] R2 #1 [ R3 ] (b) (7 points) Soit le programme suivant. Pour chaque ligne, on indique l’adresse (qui commence à 0x0), suivie de l’instruction en format binaire. Les numéros de ligne sont indiqués à gauche. Expliquez ce que fait ce programme en une phrase. 1 2 3 4 5 6 7 8 9 10 0 x0 0 x1 0 x2 0 x3 0 x4 0 x5 0 x6 0 x7 0 x8 0 x9 0 x4000 0 x8000 0 x0100 0 x4200 0 x6101 0 x1200 0 xF109 0 x4300 0 xF304 0 x9201 GIF-1001 Examen mi-session Page 6 de 10 6. Répondez aux questions suivantes, portant sur l’assembleur ARM. (a) (1 point) Quel est le programme qui permet de créer un programme qui contient à la fois de l’assembleur et du code d’un autre langage? (b) (1 point) Quelle est la particularité des instructions de type SIMD? (c) (1 point) Auquel des deux grands types de jeu d’instructions le jeu d’instructions ARM appartient-il? (d) (3 points) Quels sont les registres spéciaux utilisés dans l’architecture ARM et quelles sont leurs fonctions? (e) (5 points) Considérez le code suivant (les numéros de ligne sont indiqués à gauche): 1 2 3 4 5 6 7 8 9 10 11 MOV SP , #0 x3 MOV LR , PC test BX LR BL test CMP LR , PC BLT test MOV R0 , #0 x1 B test fin B fin Indiquez l’ordre des instructions exécutées par le microprocesseur en utilisant leur numéro de ligne correspondant. (f) (5 points) Écrivez du code assembleur qui place dans R0 la valeur 1 si R1 est pair ou -1 si R1 est impair. (g) (5 points) Écrivez du code assembleur qui calcule la factorielle d’un nombre placé dans R0. En d’autres mots, implémentez le pseudo-code suivant: R1 ← 1 ; while R0 6= 0 do R1 ← R1 × R0 ; R0 ← R0 − 1 ; end GIF-1001 Examen mi-session Page 7 de 10 7. Répondez aux questions portant sur le code assembleur ARM suivant (les numéros de ligne sont indiqués à gauche): 1 B main 2 3 tableau DC32 0 x10 , 0 x42 , 0 xA4 , 0 xA0 , 0 x32 , 0 x05 , 0 x45 , 0 x02 , 0 x00 4 5 6 7 main LDR SP , = maPile ADD SP , SP , #64 8 9 10 11 LDR R0 , = tableau BL fonctionMystere MOV R5 , R0 12 13 B main 14 15 16 17 18 fonctionMystere PUSH { R1 , R2 , LR } LDR R1 , [ R0 ] , #4 MOV R2 , R1 19 20 21 22 debut CMP R1 , #0 x00 BEQ fin 23 24 25 26 27 CMP R2 , R1 MOVLT R2 , R1 LDR R1 , [ R0 ] , #4 B debut 28 29 30 31 32 fin MOV R0 , R2 POP { R1 , R2 , LR } BX LR 33 34 maPile DS32 16 (a) (1 point) Pourquoi utilise-t-on l’instruction BL et non B à la ligne 10? (b) (2 points) Pourquoi utilise-t-on les instructions PUSH et POP aux lignes 16 et 31? (c) (3 points) Que fait l’instruction LDR R1, [R0], #4 à la ligne 17? (d) (4 points) Quelle est la valeur de R5 après l’exécution de l’instruction MOV R5, R0 à la ligne 11? (e) (5 points) Décrivez succinctement ce que fait la fonction fonctionMystere. De plus, indiquez ses arguments, la façon dont elle les obtient du programme principal, et comment elle retourne sa valeur de sortie. GIF-1001 Examen mi-session Page 8 de 10 8. Répondez aux questions suivantes. (a) (1 point) Donnez un exemple d’un nombre hexadécimal qu’on ne peut pas représenter en décimal. (b) (1 point) Que désigne l’acronyme RISC? Donnez un exemple de famille de microprocesseurs lui correspondant. (c) (1 point) Que désigne l’acronyme CISC? Donnez un exemple de famille de microprocesseurs lui correspondant. (d) (1 point) Quel sous-sytème détermine la première micro-instruction à exécuter pour une certaine instruction? (e) (1 point) Quel est le nombre maximal d’instructions dans un jeu d’instructions? (f) (1 point) Donnez deux exemples de mnémoniques d’instructions de gestion de la séquence d’instructions. (g) (1 point) En assembleur ARM, donnez l’instruction qui permet de placer l’adresse de maVariable dans le registre R5. (h) (1 point) Dans une architecture de type “memory-mapped I/O”, quelle composante est responsable d’activer la broche d’activation (enable) des périphériques? (i) (1 point) Quelle composante est responsable de configurer l’ALU dans le bon mode? (j) (1 point) Expliquez la différence entre les mémoires volatiles et non-volatiles? GIF-1001 A Examen mi-session Page 9 de 10 Annexe: Instructions ARM et codes de conditions Instruction Description ADD Rd, Rs, Op1 AND Rd, Rs, Op1 ASR Rd, Rs, #imm Bcc Offset BLcc Offset CMP Rs, Op1 LDR Rd, [Rs, Op2] LDR Rd, [Rs], Op2 LDR Rd, [Rs, Op2]! LSL Rd, Rs, #imm MUL Rd, Rs, Op1 MVN Rd, Op1 POP {Reg List} PUSH {Reg List} STR Rd, [Rs, Op2] STR Rd, [Rs], Op2 STR Rd, [Rs, Op2]! SUB Rd, Rs, Op1 Rd ← Rs + Op1 Rd ← Rs AND Op1 Rd ← Rs / 2imm PC ← PC + Offset, si cc est rencontré Comme B, LR ← adresse de l’instruction suivante Change les drapeaux comme Rs - Op1 Rd ← Mem[Rs + Op2] Rd ← Mem[Rs], Rs ← Rs + Op2 Rs ← Rs + Op2, Rd ← Mem[Rs] Rd ← Rs × 2imm Rd ← Rs × Op1 Rd ← !Op1 (inverse les bits) Récupère la liste de registres de la pile Met la liste de registres sur la pile Mem[Rs + Op2] ← Rd Mem[Rs] ← Rd, Rs ← Rs + Op2 Rs ← Rs + Op2, Mem[Rs] ← Rd Rd ← Rs - Op1 Table 2: Instructions ARM. Op1 dénote une opérande de type 1, et Op2 une opérande de type 2. Code Condition Code Condition CS EQ VS GT GE PL Retenue (carry) Égalité Débordement Plus grand Plus grand ou égal Positif CC NE VC LT LE MI Pas de retenue Inégalité Pas de débordement Plus petit Plus petit ou égal Négatif Table 3: Codes de condition. GIF-1001 B Examen mi-session Page 10 de 10 Annexe: Table ASCII Dec 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Hx 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A Oct 000 001 002 003 004 005 006 007 010 011 012 013 014 015 016 017 020 021 022 023 024 025 026 027 030 031 032 033 034 035 036 037 040 041 042 043 044 045 046 047 050 051 052 Char NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US Space ! ” # $ % & ’ ( ) * Dec 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 Hx 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 Oct 053 054 055 056 057 060 061 062 063 064 065 066 067 070 071 072 073 074 075 076 077 100 101 102 103 104 105 106 107 110 111 112 113 114 115 116 117 120 121 122 123 124 125 Char + , . / 0 1 2 3 4 5 6 7 8 9 : ; ¡ = ¿ ? @ A B C D E F G H I J K L M N O P Q R S T U Dec 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 Hx 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F Oct 126 127 130 131 132 133 134 135 136 137 140 141 142 143 144 145 146 147 150 151 152 153 154 155 156 157 160 161 162 163 164 165 166 167 170 171 172 173 174 175 176 177 Char V W X Y Z [ \ ] ˆ ‘ a b c d e f g h i j k l m n o p q r s t u v w x y z { } ˜ DEL