ARCHITECTURE DES ORDINATEURS IG3 2012-2013 Examen nal Clément Jonquet {[email protected]} Instructions L'examen dure 2h. Il y a 14 questions pour 20 points. 1 point supplémentaire de lisibilité et clarté pourra être ajouté. Les questions sont indépendantes les unes des autres. Vous pouvez les traiter dans l'ordre que vous voulez. Pensez à toujours justier synthétiquement vos réponses. Votre copie ne doit pas être rédigée au crayon à papier, ni au stylo rouge. Support de cours/TD/livres autorisés. Tous moyens de communication (bavardage, téléphone, SMS, chat, Tweets, etc.) interdits. L'utilisation des téléphones portables comme montre est interdite. Veuillez les laisser dans vos sac. Toute sortie de la salle est dénitive. Questions de cours Question 1 (1 point) Expliquez pourquoi est-ce qu'un disque dur à disques magnétiques est en accès semi-sequentiel ? L'accès au bon disque magnétique est en accès direct : chaque disque est identiable et accessible directement par une tête de lecture/ecriture spécique. L'accès au bon secteur est séquentiel, car il faut attendre la rotation du disque jusqu'au bon emplacement. Question 2 (1 point) Qu'est-ce que le décodeur dans le unité centrale de traitement ; décrire son rôle en une courte phrase. C'est un circuit logique capable pour un signal de n entrées d'activer une des 2n sorties possibles. Dans l'UAL, il sert à choisir (i.e., décoder) le circuit à activer pour exécuter l'instruction codée par le code opération de l'instruction. Question 3 (1 point) Donnez les avantages principaux des architectures processeur RISC. Petit nombre d'instructions ; format xe ; plus facilement standardisable ; traduction et décodage simple et rapide. Question 4 (1 point) Rappelez les diérentes étapes de la chaîne de production d'un programme (passage du texte d'un programme en langage d'assemblage à programme exécutable en machine). Expliquez brièvement le rôle de chaque étape. Édition du texte. Édition dans un logiciel spécique du chier texte (code source source) du programme dans le langage assembleur. Traduction en langage machine. Traduction des symboles du langage assembleur en codes binaires (code objet). Édition de liens. Tous les programmes formant le programme principal sont combinés. Gestion des adresses globale au programme. Chargement en mémoire. Le chargeur place le programme en mémoire à une adresse spécique. Question 5 (1 point) Qu'est-ce que la pile ? Quelles opérations fait-on avec ? Quel registre permet sa gestion ? C'est un espace de stockage en mémoire comme vu comme un tableau à gestion d'accès automatique. On peut empiler dessus ou dépiler des valeurs (LIFO). Cette gestion est réalisée grâce au pointeur de haut de pile SP. Exercices Question 6 (1 point) Représenter les nombres décimaux suivants sur 16 bits : -520 en valeur absolue signée, -1023 en complément à 2 et 1067 en complément à 2. -520 en valeur absolue signée : 1000 0010 0000 1000 -1023 en complément à 2 : 1111 1100 0000 0001 1067 en complément à 2 : 0000 0100 0010 1011 Question 7 (2 points) Donner la représentation binaire ottante IEEE 754 en simple précision de -27.75 Représentation IEEE 754 : x = (−1)S × (1, M ) × 2E−(2 n−1 −1) 27, 75 = 11011, 11 = 1.101111 × 24 S = 1 (le nombre est négatif) M = 101 1110 0000 0000 0000 0000 E = 4+127 = 131 = 1000 0011 sur 8 bits Soit 1100 0001 1101 1110 0000 0000 0000 0000 Question 8 (2 points) Eectuer les opérations arithmétiques suivantes en représentant les nombres en codage normal (entier positif) : (a) 56 − 18 − 0 0 0 0 0 0 1 0 1 1 1 0 1 01 0 10 0 1 1 0 0 0 1 0 10 01 1 0 0 0 1 1 (56) (18) (38) (b) 48/6 / 0 A dérouler ! 1 0 1 0 0 0 0 (48) (6) (8) 2 Question 9 (1 point) Compléter (recopier la matrice sur vos copies) en utilisant le contrôle de double parité impaire les mots de 6 bits suivants : 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 En parité impaire, le nombre de bits des mots transversaux et longitudinaux à 1 doit être impair. 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 Question 10 (1 point) Démontrer le théorème de l'absortion, soit que : a.(a + b) = a à l'aide des théorèmes fondamentaux de l'algèbre de Boole. Indiquez les théorèmes utilisés. a.(a + b) = = = = (a + 0).(a + b) a + (0.b) a+0 a // // // // constante distributivité constante constante Question 11 (1 point) Faire l'analyse du circuit logique suivant : S1 = a.b S2 = a.b S3 = (a.b) + (a.b) Question 12 (3 points) Faire la synthèse d'un multiplexeur 4 bits (i.e., avec 4 entrées de données). 4 = 22 entrées, 2 variables, 1 sortie La sortie (K) prend la valeur d'une des entrées (k0 , k1 , k2 , k3 ) selon la valeur des 2 variables (a,b) : une des 4 entrées est aiguillée sur la sortie K. 3 Table de vérité (on peut considérer que 3 entrées pour construire la table : les variables et 1 entrée de donnée) : a b k0 k1 k2 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 Multiplexeur 4- k3 K 0 0 1 1 0 1 0 1 0 1 entrées Expression algébrique (méthode des minterms) : K = abk0 + abk1 + abk2 + abk3 ! Logigramme et symbole pour le multiplexeur Circuit : à 4 entrées 44 Question 13 (1 point) Indiquez le mode d'adressage utilisé dans chacune des instructions suivantes (sans liens les unes les autres) : la addi add jr sb $s1 , label $t1 , $t1 ,1 $s1 , $s1 , $s2 $ra $v0 ,0( $a1 ) Respectivement : par registre + direct par registre + immédiat par registre par registre par registre + indexé/basé Question 14 (3 points) Complétez le programme MIPS suivant (remplacer les ...) pour que le tableau en mémoire contienne les valeurs des cubes de ses valeurs actuelles. Utilisez la fonction cube déjà dénie. T: main : . data . byte 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 . text ... 4 end : cube : T: main : loop : end : cube : li $v0 , 10 syscall # exit mul $v0 , $a0 , $a0 mul $v0 , $v0 , $a0 jr $ra # computes the cube . data . byte 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 . text la li li $a1 , T $t1 ,0 $t2 ,9 # a1 = T adress # t1 = i = 0 # t2 = nb of iteration = 9 bgt lb jal sb addi addi j $t1 , $t2 , end $a0 ,0( $a1 ) cube $v0 ,0( $a1 ) $t1 , $t1 ,1 $a1 , $a1 ,1 loop # for i in 1..10 loop # a0 = T1 [ i ] ( input argument ) # store the result in T # i = i +1 li $v0 , 10 syscall # exit mul $v0 , $a0 , $a0 mul $v0 , $v0 , $a0 jr $ra # computes the cube 5