Vous êtes sur la page 1sur 6

Université de la Manouba Année Universitaire 2009-2010

Ecole Nationale des Sciences de l’Informatique

Examen (session principale)


Matière : Architecture des Ordinateurs Date : 07 - 01 - 2010
Durée : 2H Classe : II2
Documents non autorisés

Exercice 1 (4 points= 1+0.75+0.75+0.75+0.75)

On considère un jeu d’instructions ne contenant qu'une seule instruction:

SBN A,B,S : où SBN signifie (Soustrait et Saute si Négatif).

L'instruction effectue l'opération suivante:

Mem(A) = Mem(A) - Mem(B), et


si (Mem(A) < 0) PC = PC + S ; sinon PC = PC + 1 (saut à l'instruction suivante) ;

où Mem(A) correspond au contenu de la mémoire à l’adresse A, et PC au compteur de


programme; le test est effectué après la soustraction; on suppose que la largeur de la mémoire
est telle qu’une adresse mémoire correspond à une donnée ou une instruction; on ne se
préoccupe pas non plus de la taille du mot que l’on suppose suffisamment grand pour les
calculs; enfin, on considère qu’un programme se termine quand sa dernière instruction est
exécutée.

On suppose que Mem(0)=1, et on peut utiliser les adresses 1 à 9 pour stocker des valeurs
temporaires. Dans les questions suivantes, on suppose que 10 ≤ A, B, C ≤ 20.

1- Ecrire le programme permettant d'effectuer Mem(A) ← 0.


SBN A,A,1 ; Mem(A)=Mem(A)-Mem(A)=0

2- Ecrire le programme permettant d’effectuer Mem(A) ← Mem(B).


SBN A,A,1 ; Mem(A)=0
SBN 1,1,1 ; Mem(1)=0
SBN 1,B,1 ; Mem(1)=-Mem(B)
SBN A,1,1 ; Mem(A)=-Mem(1)=Mem(B)

3- Ecrire le programme permettant d’effectuer Mem(A) ← 3.


SBN A,A,1 ; Mem(A)=0
SBN 1,1,1 ; Mem(1)=0
SBN 1,0,1 ; Mem(1)=-Mem(0)=-1
SBN 1,0,1 ; Mem(1)=Mem(1)-Mem(0)=-2
SBN 1,0,1 ; Mem(1)=Mem(1)-Mem(0)=-3
SBN A,1,1 ; Mem(A)=-Mem(1)=3

4- Ecrire le programme permettant d’effectuer Mem(A) ← Mem(B) + Mem(C).


SBN A,A,1 ; Mem(A)=0
SBN 1,1,1 ; Mem(1)=0
SBN 1,B,1 ; Mem(1)=-Mem(B)
SBN 2,2,1 ; Mem(2)=0
SBN 2,C,1 ; Mem(2)=-Mem(C)
SBN A,1,1 ; Mem(A)=-Mem(1)=Mem(B)
SBN A,2,1 ; Mem(A)=Mem(B)-Mem(2)=Mem(B)+Mem(C)

1/6
5- Ecrire le programme permettant d’effectuer Mem(A) ← Mem(B) x Mem(C) en
supposant que 0≤Mem(B).
On additionne Mem(B) fois Mem(C) à Mem(A).
SBN A,A,1 ; Mem(A)=0
SBN 1,1,1 ; Mem(1)=0
SBN 1,C,1 ; Mem(1)=-Mem(C)
SBN 3,3,1 ; Mem(3)=0
BCL SBN 2,2,1 ; Mem(2)=0
SBN 2,B,ADD; Mem(2)=-Mem(B), -Mem(B)<0 ? ( Mem(B)>0 ?)
SBN 3,0,FIN; Aller à FIN (branchement inconditionnel)
ADD SBN A,1,1 ; Mem(A)=Mem(A)-Mem(1)=Mem(A)+Mem(C)
SBN B,0,1 ; Mem(B)=Mem(B)-1
SBN 3,0,BCL; Aller à BCL (branchement inconditionnel)
FIN

Exercice 2 (4 points= 3 +1)

Supposons un processeur MIPS big-endian qui exécute le programme suivant:


xor $t0, $t0, $t0
addi $t1, $t0, 0x50
a: lw $t2, 0($t1)
beq $t2, $zero, c
slt $t3, $t0, $t2
beq $t3, $zero, b
lw $t0, 0($t1)
b: addi $t1, $t1, 4
j a
c: sw $t0, 0($t1)

1- Donner une explication de la fonction du programme


Le programme trouve le plus grand nombre d’un tableau qui commence à l’adresse
0x50 et se termine par une valeur 0. A la fin du programme, la plus grande valeur
trouvée est mise à la place du 0 qui indiquait la fin du tableau

2- Supposons que l’état initial de la mémoire est celui de la figure suivante, quel est
l’état de la même portion de mémoire après l’exécution du programme ?
L’état est le même (les cases de 0x58 à 0x5B ne contiennent pas un 0x0000)

2/6
Contenue Adresse

Exercice 3 (4 points=2+2)

1- Considérons la suite des instructions suivante :

Deb : sub $1, $1, $3


add $3, $1, $5
or $2, $7, $8
bne $1, $4, Fin
and $5, $2, $3
addi $1, $8, 15
j Deb
Fin : ori $1, $2, $3

Trouver les aléas dans cette suite pour la machine pipelinée à 5 étages du cours. Donner les solutions
possibles pour ces aléas.

2- Calculer le temps d’exécution sur une machine MIPS en pipeline à 5 étages d’un programme
composé de 20 instructions de chargements, 10 instructions de rangements, 50 instructions de
type-R et 10 instructions de branchements.

Un temps de cycle (période) d’horloge est égal à 2,2ns.


On considère pour la machine pipelinée les conditions suivantes :
• Les Aléas de structure sont résolus,
• Les Aléas de contrôle sont résolus par prédiction dynamique (avec 85% des
prédictions sont correctes).
• Le programme ne contient pas d’autres types d’aléas.

Taux de succès =0.85


On a 10 branchements, et si notre prédiction est fausse, on perd 2 cycles, donc le nombre de
cycles perdus : np=10*0.15*2=3 cycles

Texec= [(Nbre d’étages -1 +Nbre d’instruction) + np] * T = [5-1+90+3]*2.2ns = 213.4ns

Exercice 4 (4 points=3+1 (ou 2.5+1.5) )

3/6
L’instruction (imaginaire) jump memory (jmem) est similaire à l’instruction Jal à l’exception
que l’adresse de branchement ainsi que l’adresse de retour sont sauvegardées dans la
mémoire. Nous supposons qu’il s’agit d’une instruction de type I et que les adresses R[rt] et
(R[rs] + offset) sont distinctes.

jmem (rt), offset(rs) # Memory[R[rs]+offset] = PC+4;


# PC = Memory[R[rt]]

1- Proposer les modifications nécessaires au niveau chemin de données du multicycle du


processeur MIPS.
2- Compléter la machine à état qui permettra d’avoir les signaux de contrôle de l’instruction
jmem.

4/6
Exercice 5 (4 points=1+1+1+1)

Supposons que nous disposons d’un processeur qui implémente le MIPS ISA à 5 étages
pipeline. Le pipeline implémente une unité de renvoi afin de réduire les pertes de temps dues
aux aléas de données. Répondez aux questions suivantes concernant la séquence
d’instructions suivantes :
I1 : add r3, r5, r6
I2 : sub r3, r2, r3
I3 : and r1, r3, r4

1- Au niveau de quel étage doit-on placer l’unité de renvoi
Étage « DI »
2- L’unité de renvoi fournit, à l’aide d’un multiplexeur, le signal approprié afin de sélectionner
les données correctes de calcul. Décrire la logique de cette unité de renvoi.
Rappel :

((Di/EX.reg_wr = 1) and (Di/EX.reg_ecriture = EI/DI.reg_lecture1)


Ou (Di/EX.reg_ecriture = EI/DI.reg_lecture2))
Ou ((EX/MEM.reg_wr = 1) and (EX/MEM.reg_ecriture = EI/DI.reg_lecture1)
Ou (EX/MEM.reg_ecriture = EI/DI.reg_lecture2))

3- Ajoutez au niveau du pipeline la conception de cette unité, tout en détaillant les informations
nécessaires à cette fonctionnalité.

5/6
4- Dans la séquence des instructions, l’instruction I3 recevra la donnée r3 à partir de quelle
instruction et à partir de quel étage du pipeline.
I3 recevra r3 à partir de I2, à partir de l’étage EXEC

Bon travail

6/6

Vous aimerez peut-être aussi