Architecture des ordinateurs ARO2
Profs : C. Andrés Pena, R. Mosqueron
Assistants : Flavio Capitao, Anthony Convers, Alexandre Malki, Gaëtan Matthey
Laboratoire Microarchitecture EXECUTE
20/03/2017 – V1.8
- 1 -
Informations générales
Le laboratoire Microarchitecture dure 16 périodes et comprend 4 parties de 4 périodes chacune. Le
travail s’effectue par groupe de deux.
Le rapport à rendre portera sur deux labos (8 périodes au total) :
1) le laboratoire Microarchitecture EXECUTE (4 périodes).
2) le laboratoire Microarchitecture MEMORY (4 périodes).
Le rendu s’effectue sous forme de dossier compressé contenant le workspace complet (projets
Logisim, codes assembleur), et le rapport (.pdf) envoyé à l’assistant de votre groupe.
Code partie EXECUTE et partie MEMORY avec rapport à rendre avant :
o ARO2-1-A : le 03.05.2017, 23h59 à [email protected]
o ARO2-1-B : le 04.05.2017, 23h59 à [email protected]
o ARO2-1-C : le 25.04.2017, 23h59 à [email protected]
o ARO2-1-D : le 25.04.2017, 23h59 à [email protected]
N’oubliez pas de sauvegarder et d’archiver votre projet à chaque séance de laboratoire
Objectif du laboratoire
L’objectif principale est la réalisation simplifiée de la partie EXECUTE d’un processeur en ajoutant les
opérations arithmétiques et logiques, ainsi que les shifts. Vous recevrez les blocs FETCH et
DECODE du processeur PRODIS et un programme à exécuter.
Ce laboratoire est noté. Vous devez rendre les projets Logisim, les codes assembleur et un rapport.
Le rapport doit montrer votre compréhension de l’architecture du bloc EXECUTE et de la technique
de décodage des instructions.
Outils
Pour ce laboratoire, vous devez utiliser les outils disponibles sur les machines de laboratoire
(A07/A09) ou votre ordinateur personnel avec la machine virtuelle fournie au premier labo.
ARO2 – Architecture des Ordinateurs 2 - Laboratoire Microarchitecture EXECUTE
- 2 -
Fichiers
Vous devez télécharger à partir du site REDS un .zip contenant un répertoire « workspace_lab3 »
avec :
Le fichier de travail Logisim Labo_execute.circ (contenant le bloc FETCH, la banque de
registre et le bloc DECODE de PRODIS)
Le fichier source du code assembleur main.S (contenant un programme)
Le fichier Makefile (ne doit pas être modifié) contenant les directives d’assemblage
Attention : Vous ne devez pas utiliser les fichiers du précédent laboratoire. Créez un nouveau
répertoire.
PRODIS, processeur didactique :
Architecture ARM9 modifiée
Bus adresses et bus données 16 bits
8 registres
Quatre interruptions matérielles
Pas de modes, pas d’exceptions
Jeu d’instruction (réduit) 16 bits ARM Thumb
Donnée : 4 périodes en laboratoire + travail personnel
Créez un répertoire de travail ARO2_Ma_Execute à partir du répertoire « workspace_lab3 »
fourni. Ce répertoire doit contenir les fichiers Labo_execute.circ et WinArm (main.S, Makefile).
N’oubliez pas de relire votre cours ARO2 « Micro-architecture d’un processeur - La partie
EXECUTE » qui contient toutes les informations et exemples de circuit nécessaires pour
réaliser ce laboratoire.
Etape 1 : Le bloc FETCH, la banque de registre, et le bloc DECODE sont fournis (dans le bloc
PRODIS).
Le programme assembleur suivant est fourni :
MOV r0, #3
MOV r2, r0
ADD r3, r2, #7
ADD r5, r3, r0
AND r3, r5
LSL r1, r5, #2 @shift logique à gauche (infos ci-dessous)
SUB r0, r3, r1
ARO2 – Architecture des Ordinateurs 2 - Laboratoire Microarchitecture EXECUTE
- 3 -
En exécutant pas à pas le programme, relevez un chronogramme des signaux suivants en sortie du
bloc DECODE :
adr_reg_n, adr_reg_m, adr_reg_d numéros des registres
reg_dat_out_n, reg_data_out_m contenus des registres(0 avant initialisation des registres)
sel_op_alu: code indiquant l’opération de l’alu (voir ci-dessous)
sel_operand1 indique sur quel bus est placé l’opérande 1(voir ci-dessous)
sel_operand2 indique sur quel bus est placé l’opérande 2 (voir ci-dessous)
immed_3, immed_5, immed_8 valeurs immédiates
Etudiez la façon dont sont générés ces signaux dans le bloc DECODE fourni.
Expliquez les valeurs relevées dans le chronogramme pour les instructions :
ADD r3, r2, #7
ADD r5, r3, r0
Information: Le bloc DECODE fournit au bloc EXECUTE avec le bus « Execute_control_bus » les
informations suivantes : les numéros de registres, les types d’opérations à faire, les opérandes à
utiliser. Le format des informations de ce bus est donné ci-dessous :
Execute_control_bus[0..22]=>
[0..2]=sel_op_shift
000: Bypassdubloc
001: Operand1shiftarithmétiqueàdroiteavecOperand2
010: Operand1shiftlogiqueàgaucheavecOperand2
011: Operand1shiftlogiqueàdroiteavecOperand2
100: Operand1shiftrotatifàdroiteavecOperand2
[3..6]=sel_op_alu
0000: Bypassdubloc(Operand1ensortie)
0001: Operand1+Operand2
0010: Operand1‐Operand2
0011: Operand1ANDOperand2
0100: Operand1OROperand2
0101: Operand1XOROperand2
0110: NOTOperand1
0111: Operand1AND(NOTOperand2)
1000: Operand1*Operand2
[7..8]=sel_operand_2
00:reg_data_out_m
01:immediate3
10:notused
11:immediate8
[9..10]=sel_operand_1
00:reg_data_out_n
01:0x0000
10:Branchwithlink
11:notused
[20]=sel_shift
0:immediate5
1:reg_data_out_m
ARO2 – Architecture des Ordinateurs 2 - Laboratoire Microarchitecture EXECUTE
- 4 -
Etape 2 : Réalisez le circuit nécessaire pour traiter toutes les instructions du programme assembleur
fourni. Ce circuit doit être placé dans un bloc EXECUTE à l’intérieur du bloc Prodis. Relevez un
chronogramme qui prouve la bonne exécution de ces instructions.
Etape 3 : Modifiez votre circuit pour qu’il puisse traiter les instructions :
Logical Shift Left (nombre de shift en immédiat) LSL(1)
Logical Shift Left (nombre de shift dans un registre) LSL(2)
Logical Shift Right (nombre de shift en immédiat) LSR(1)
Logical Shift Right (nombre de shift dans un registre) LSR(2)
Opération logique AND AND
Opération logique OR ORR
Opération logique XOR EOR
Opération logique NOT MVN
Addition (valeur immediate) ADD(1)
Addition (registres) ADD(3)
Soustraction (valeur immediate) SUB(1)
Soustraction (registres) SUB(3)
Note : Le document décrivant toutes les instructions ARM Thumb est disponible sur le site.
Modifiez votre programme assembleur afin de tester toutes les instructions ci-dessus. Relevez un
chronogramme qui prouve la bonne exécution de ces instructions.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !