0% ont trouvé ce document utile (0 vote)
34 vues2 pages

Micro Interrogation L2: Corrigé MIPS

Transféré par

houda animation
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
34 vues2 pages

Micro Interrogation L2: Corrigé MIPS

Transféré par

houda animation
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Micro interrogation L2 (Architecture des ordinateurs) Durée 1h00 Le 23/02/2021

Corrigé Type de la micro interrogation


Exercice 1 (BONUS : 1 point)
Calcul de la capacité mémoire :
Capacité mémoire = 232x32 = 232x25 = 27x230 bits =27x230/23 = 24x230 = 16Go
Exercice 2 (3 points) : 0.5 pour chaque bonne réponse.
Étant donné la séquence d’instructions MIPS suivantes :
lw $s0, 30($s1)
add $t0, $s0, $s1
sw $t0, 40($s1)
 Donner le format de chacune des instructions ? Formats respectives : I, R, I

 Donner la présentation en langage machine de ces instructions sachant que les


numéros respectifs des registres $t0, $t1, $s0, $s1 sont 8, 9, 16 et 17 ainsi que
l’opcode (lw) = 35 ; opcode (add) = 0 et funct (add) = 35 ; opcode (sw) = 43 ?
35 17 16 30 lw $s0, 30($s1)

0 16 17 8 0 35 add $t0, $s0, $s1

43 17 8 40 sw $t0, 40($s1)

Exercice 3 (7 points) : 1 pour chaque bonne réponse.


Un compilateur C a transformé un code en une séquence d’instructions en langage
assembleur MIPS ci-contre (Programme P1) :

1. Extraire de ce programme l’instruction qui Programme P1 :


réalise une lecture de la mémoire ? .data
Supposons que le tableau se trouve à tab: .word 10 20 30 40 50 60 70
l’adresse « 0x10010000 ». .text
L’instruction qui réalise une lecture de la addi $s1, $0, 0
mémoire est : la $s4, tab et lw $t0, 0($t1) addi $s3, $0, 3
la $s4, tab
2. Calculer le nombre d’instructions exécutées ?
Loop: add $t1, $s1, $s1
Nombre d’instructions exécutées = 7N + 3
add $t1, $t1, $t1
Comme N = 3 (3 tours de boucle) alors :
add $t1, $t1,$s4
Nombre d’inst. : IC = 24 inst. lw $t0, 0($t1)
3. Quelle est la valeur du contenu du registre $s4 bgt $s1, $s3, Exit
après exécution du programme ? addi $s1, $s1, 2
$s4 = 0x10010000. j Loop
4. Au deuxième tour de l’exécution de la boucle, Exit: li $v0,10
quelle est la valeur du registre $t1 ? Syscall
$t1 = 0x10010008.
5. Donner la valeur du registre $t0 à la fin de l’exécution du programme.
$t0 = 50.

1
Micro interrogation L2 (Architecture des ordinateurs) Durée 1h00 Le 23/02/2021

Corrigé Type de la micro interrogation


6. Afin d’optimiser le programme P1, nous pouvons remplacer les deux premières
instructions par une seule « sll $t1, $s1, 2 ». Le même code en C précédemment
compilé a été de nouveau compilé avec un compilateur plus performant produisant le
Programme P2 ci-dessous :

 Calculer le nouveau nombre d’instructions exécutées ?


Nombre d’instructions exécutées = 5N + 5 ; Comme N = 3 (3 tours de boucle)
alors :
Nombre d’inst. : IC = 20 inst.

 Supposons que le programme P2 est exécuté sur une machine de fréquence


d’horloge égale à 2 Ghz et que le CPI de toutes les instructions est identique,
CPI =1, Calculer le temps d’exécution de ce programme.

Tex = (ICxCPI)/f
Tex = 20x1/2.109 = 10.10-9 sec = 10 nanosec.

Programme P2 :
.data
tab: .word 10 20 30 40 50 60 70
.text
addi $s1, $0, 0
addi $s3, $0, 3
la $s4, tab
j Begin
Loop: addi $s1, $s1, 2
Begin: sll $t1, $s1, 2
add $t1, $t1, $s4
lw $t0, 0($t1)
blt $s1, $s3, Loop
li $v0,10
syscall

Vous aimerez peut-être aussi