TD Architecture des ordinateurs

publicité
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
Téléchargement