Université de Savoie
Module I621
Travaux Pratiques
Architecture des Ordinateurs
Sylvain MONTAGNY
Bâtiment chablais, bureau 13
04 79 75 86 86
TP1 : Simulation des mémoires caches et du pipeline d’un processeur
TP 2 : Application sur cible à microprocesseurs (1)
TP 3 : Application sur cible à microprocesseurs (2)
Retrouver tous les documents nécessaires au TP sur le site
www.master-electronique.com
Université de Savoie
Module I621
Architecture des Ordinateurs
TP1
Simulation de mémoire cache et pipeline
Objectifs : Comprendre le déroulement d’un logiciel dans une architecture à microprocesseur.
Un compte rendu sera remis avec pour consignes :
Format PDF en un seul fichier.
Le nom du fichier sera : I621-TPx-Nombinome1-Nombinome2.pdf
Envoyé à [email protected]
Votre compte rendu sera bien reçu seulement si vous avez un message de confirmation de
notre part. Les parties recopiées entres binômes ne seront pas corrigées.
1. Présentation
1.1. Objectifs
Nous allons travailler sur une architecture MIPS 32 bits (Microprocessor without Interlocked
Pipeline Stages). L'architecture MIPS est une architecture de processeur de type RISC
(Reduced Instruction Set Computer). Son architecture est une référence. Les processeurs
fabriqués selon cette architecture sont surtout utilisés dans les systèmes embarqués.
L’objectif n’est pas d’étudier cette architecture en particulier, ni d’étudier le jeu d’instruction
de ce processeur. Néanmoins nous allons examiner le déroulement d’un logiciel à l’aide d’un
simulateur d’architecture MIPS32. Ceci nous permettra de mieux comprendre l’organisation
et l’exécution du code pour le microprocesseur.
Vous pouvez parcourir le site web www.mips.com, pour visualiser quelques applications des
microprocesseurs MIPS.
1.2. Présentation du simulateur MARS
“MARS is a software simulator for the MIPS assembly language intended for educational use.
We will explore the capabilities of MARS release 3.2.1. MARS may be downloaded from
www.cs.missouristate.edu/MARS.
2. Prise en main de l’environnement
Remarques : Certaines questions relèvent plus de la culture générale. Vous pourrez à juste
titre chercher des informations sur Internet à ce sujet.
>Lancer Mars.jar, dont l’application est codée en JAVA.
>Ouvrir le code assembleur “row-major.asm
>Assembler le code (Run>Assemble)
L’icone permet de lancer l’exécution du programme jusqu’à la fin. En utilisant
cette fonction vous observez le surlignement jaune qui montre l’adresse du programme
en cours d’exécution. Les valeurs du programme qui sont calculées apparaissent dans
le segment de donnée.
L’icone permet de faire un reset du programme et des valeurs de l’ensemble des
registres du simulateur.
L’icone permet d’exécuter une instruction après l’autre. Autrement dit, de faire de
l’exécution pas à pas. Cette fonction est complété par l’icône , qui permet de
revenir d’un pas : “single-step backwards”.
Le processeur utilise un adressage par octet. Vous pouvez changer le format de
visualisation du contenu des adresses et des adresses en hexadécimal ou en décimal :
.
Dans le logiciel MARS, ajuster le « run speed » : afin d’avoir le temps
de voir l’évolution de l’algorithme en fonction du temps.
Dans la présentation du “segment de code” (Text segment en anglais) vous avez les colonnes
suivantes :
Q1. Précisez ce que chacune des colonnes contiennent. Vous prendrez un exemple en
étudiant la ligne de code 41 du programme. Vous vous aiderez de la documentation en
annexe. Tout doit pouvoir être justifié :
loop: mult $s0, $t1
Q2. Quel est le registre du microprocesseur qui spécifie l’adresse de la prochaine
instruction à exécuter dans le logiciel. Quelle est la valeur de ce registre au Reset? Est-ce
logique par rapport à l’implantation de votre programme en mémoire ?
Q3. Qu’est ce que le « text segment » et le « data segment » ?
Q4. Expliquez les cases :
dans le « data segment ».
Q5. Sachant que le processeur MIPS32 est un processeur 32 bits, quel est la taille d’un
mot mémoire ? Quelle quantité d’information le processeur sera-t-il capable de stocker en un
seul cycle ?
Depuis l’aide, (Help>Help>Basic_Instructions) vous trouverez l’ensemble des instructions
disponibles dans ce microprocesseur.
Les processeurs MIPS et leurs architectures ont beaucoup évolués depuis leur première
version. Le document ci-dessous présente une introduction du jeu d’instruction de ce
processeur.
Q6. Qu’est ce que le jeu d’instruction d’un processeur ?
Q7. Expliquer en une phrase le message que souhaite faire passer le constructeur au sujet
du jeu d’instruction de l’ensemble des processeurs MIPS. (Ceci est aussi vrai pour tous les
processeurs et beaucoup d’autres technologies).
Q8. Expliquer ce que fait le programme en regardant le code C dans les commentaires (au
début du code assembleur). Essayer de retrouver les différentes étapes depuis le code
assembleur. Dans le code suivant, vous écrirez sans rentrer dans le détail, le code C aligné
sur le code assembleur.
CODE ASSEMBLEUR CODE C
.data
data: .word 0 : 256 # storage for 16x16 matrix of words
.text
li $t0, 16 # $t0 = number of rows
li $t1, 16 # $t1 = number of columns
move $s0, $zero # $s0 = row counter
move $s1, $zero # $s1 = column counter
move $t2, $zero # $t2 = the value to be stored
loop: mult $s0, $t1 # $s2 = row * #cols (two-instruction sequence)
mflo $s2 # move multiply result from lo register to $s2
add $s2, $s2, $s1 # $s2 += column counter
sll $s2, $s2, 2 # $s2 *= 4 (shift left 2 bits) for byte offset
sw $t2, data($s2) # store the value in matrix element
addi $t2, $t2, 1 # increment value to be stored
# Loop control:
addi $s1, $s1, 1 # increment column counter
bne $s1, $t1, loop # not at end of row so loop back
move $s1, $zero # reset column counter
addi $s0, $s0, 1 # increment row counter
bne $s0, $t0, loop # not at end of matrix so loop back
# We're finished traversing the matrix.
li $v0, 10 # system service 10 is exit
syscall # we are outta here.
3. Applications
3.1. Statistique d’exécution
Dans le processeur MIPS comme dans tous les processeurs, il existe des instructions :
De calcul arithmétique et logique
De transfert de donnée (µP>Mémoire ou Mémoire>µP)
Instruction de contrôle (saut ou branchement conditionnel)
Q9. Grâce à l’outil « Instruction Statistics », donner le pourcentage des instructions les
plus utilisées. Selon vous, d’un point de vue de la rapidité d’exécution, quel type d’instruction
le processeur sait bien exécuter ? Pour lesquelles il est le plus lent, pourquoi ?
Note : cliquer sur afin de lier l’outil au code que vous avez chargé.
3.2. Le pipeline
Les processeurs MIPS intègrent un pipeline.
Q10. Préciser l’intérêt des pipelines dans un microprocesseur d’après le document suivant
présent dans la documentation du processeur MIPS
Figure 1 : Fonctionnement sans mise en œuvre du pipeline
1 / 21 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 !