Académique Documents
Professionnel Documents
Culture Documents
Exercice : (6 points)
1/
Instruction RTL
movz rd, rs, rt Si (R[rs] = = 0) alors R[rd] <= R[rt]
Le chemin de données monocycle ci-dessous manque les bonnes implémentations pour les
blocs pointillés (a), (b),et (c) afin d’implémenter movz
1/ Pour implémenter movz, vous n'avez pas besoin d'utiliser tous les signaux fournis à chaque
boîtier, et le signal de contrôle MOVZ vaut 1 si et seulement si l'instruction est movz.
2/ Sachant que les valeurs ALUCtr pour chaque opération de l'ALU sont :
Générez les signaux de contrôle pour movz. Les valeurs doivent être des termes 0, 1 ou X
Sur le chemin de données à 32 bits ci-dessous, nous souhaitons exécuter le programme suivant
constitué de QUATRE instructions successives.
408 : LW $6,3($8)
412 : SW $5,4($8)
Ce programme une fois compilé et assemblé, il sera stocker dans la mémoire d’instructions à partir
de l’adresse en décimale PC = 400, Pour ces instructions, la mise à jour de la valeur PC sera
toujours PC+4
La mémoire d’instructions, une fois elle reçoit l’adresse de l’instruction en cours d’exécution, elle
génère les numéros de rs, rt et rd au banc de registres ainsi que la valeur immédiate imm16 = offset
sur 16 bits pour le calcul d’adresse.
Les instructions arithmétiques et logiques, la destination est le registre rd et la valeur imm16 n’est
pas importante ainsi que le contenu de la mémoire de données
Pour les instructions de chargement LW la destination est le registre rt et la valeur imm16 = offset
Pour les instructions de rangement SW, la destination est la mémoire de données et la valeur
imm16 =offset
La mémoire de donnée est seulement accessible pour les deux instructions Load et Store, sinon elle
est déconnectée pour le reste des instructions
1/ (7.5 pts) Dans le tableau ci-dessous, vous devez fournir des valeurs des signaux de A à N pour
exécuter les 4 instructions suivantes, ces valeurs sont marqués par le symbole « ? » dans le
diagramme,
Vous devriez:
• mentionner les valeurs décimales.
• Supposons que le registre $i (rs ou rt) contient initialement le nombre 100+i sauf $0 qui
contient toujours 0.
•Si une valeur ne peut pas être déterminée, marquez-la comme «X».
•Initialement toutes les données de mémoire de données sont de valeurs 99.
•Il est recommandé de suivre les modifications des registres par la colonne mise à jour
instr A=rs B=rt C= D=rd E=imm16 F G=R[rs] H= I J=result K L M=PC N=PC+4 Mise à
destination R[rt] jour
SUB 2 1 8 8 X X 102 101 101 102-101 X 1 400 404 R[$8]=1
$8, $2, =1
$1
OR $5, 2 1 5 5 X X 102 101 101 102 OR X 103 404 408 R[$5]=103
$2,$1 101= 103
LW 8 6 6 X 3 3 1 106 3 1+3=4 99 99 408 412 R[$6]=99
$6,3($8
)
SW 8 5 X X 4 4 1 103 4 1+4=5 X X 412 416 M[5]=103
$5,4($8
)
3/ (1.5 pts) sachant que les latences sont : Mémoire 400 ps, Banc de registres 100ps, UAL :50ps, Le reste est negligeable