TP 2 (Hiver 2005)

 

IFT3380/IFT6380

 

Par groupe de 2 étudiants

 

 

En utilisant le logiciel LISATek Processor Designer, vous devrez modifier le projet SimpleMIPS (qui implémente le pipeline MIPS 5 étages décrit dans le livre du cours aux pages 947-957) en transférant le test à zéro et le calcul de l'adresse du branchement dans la phase DI du pipeline, comme expliqué aux pages 958-959.  Vous devrez également ajouter quelques instructions au modèle fourni.

 

 

Première partie: à remettre mardi 15 mars à 23h59

 

Les instructions à ajouter sont les suivantes:

 

1.    L'instruction DMUL (Multiplication de deux entiers).  Syntaxe: DMUL rd, rs, rt

2.    L'instruction LUI (les 16 bits de poids fort du registre destination sont écrasés par la valeur immédiate codée dans l'instruction tandis que les 16 bits de poids faible du registre destination sont remis à 0).  Syntaxe: LUI rd, imm

 

Deuxième partie: à remettre mardi 22 mars à 23h59

 

La résolution du branchement se faisant en DI, il vous faudra modifier la façon dont l'envoi est effectué pour les instructions de branchement (l'instruction BEQZ).  Aussi, un nouveau cas nécessitant une suspension du pipeline surviendra: par exemple, si une instruction ALU et un branchement se suivent, il faudra suspendre le pipeline durant 1 cycle si la résolution du branchement dépend du résultat de l'instruction ALU.  Même chose dans le cas d'une instruction de branchement dépendant du résultat d'un chargement (2 cycles de suspension).  Pour les branchements inconditionnels (l'instruction J), le calcul de l'adresse effective doit également se faire dans l'étage DI.

 

 

Avant de commencer:

 

1.    Télécharger le projet fourni à l'adresse http://www.iro.umontreal.ca/~gagnevi/lisatek/tp2.tar

2.    Décompresser tp2.tar (tar xvf tp2.tar)

3.    Ouvrir le logiciel ldesigner en tapant /u/gagnevi/ldesigner &

4.    Cliquer sur File, Open Project, puis aller chercher le fichier SimpleMIPS.lpf

 

Pour compiler:

 

1.    Cliquer sur Build, Build All

 

Pour compiler un programme assembleur:

 

1.    Dans une console, aller dans [chemin où tp2.tar a été décompressé]/app

2.    Taper make example (le fichier contenant le code source, example.asm, sera compilé)

 

Pour simuler un programme assembleur:

 

1.    Cliquer sur Tools, Processor Debugger

2.    Cliquer sur Files, Load Executable

3.    Ouvrez l'exécutable app/votreProgramme.out

4.    Simuler (F5 pour single step)

 

Pour lire la documentation:

 

1.    Toute la documentation se trouve sur http://www.iro.umontreal.ca/~gagnevi/lisatek

 

Pour tester la version fournie:

 

1. Compiler le projet fourni

2.    Compiler le programme example.asm (make example)

3.    Ouvrir le Processor Debugger et charger example.out

4.    Cliquer sur View, Memories

5.    Placer les valeurs 1, 2 et 7 dans les cases mémoires 0, 3 et 6 respectivement

6.    Simuler le programme en entier

7.    Vérifier que les valeurs des registres et des cases mémoire soient conformes aux tableaux ci-dessous

 

 

Case mémoire

Valeur initiale

Valeur finale

0

1

16

3

2

2

6

7

7

14

0

-14

15

0

-38

 

R0

2

R1

7

R2

9

R3

16

R4

2

R5

-14

R6

0

R7

-12

R8

-26

R9

-14

R10

14

R11

-38

R12

9

R13

0

R14

0

R15

0

 

 

Pour tester la version modifiée:

 

1.    Une fois les modifications apportées, compiler le projet.

2.    Compiler le programme example2.asm (make example2)

3.    Ouvrir le Processor Debugger

4.    Cliquer sur View, Memories

5.    Placer les valeurs 1, 2 et 7 dans les cases mémoires 0, 3 et 6 respectivement

6.    Simuler le programme en entier

7.    Vérifier que les valeurs des registres et des cases mémoire soient conformes au tableau ci-dessous

 

 

Case mémoire

Valeur initiale

Valeur finale

0

1

16

3

2

2

6

7

7

14

0

1176

15

0

-70

 

R0

2

R1

7

R2

9

R3

16

R4

2

R5

-14

R6

0

R7

-28

R8

-42

R9

1176

R10

14

R11

-70

R12

9

R13

0

R14

0

R15

-1412628482