Chapitre 2
Chapitre 2
Chapitre 2
Architecture de l’ensemble
d’instructions MIPS.
20
2.1 Objectifs
L’ interface clé entre les différents niveaux d’abstraction c’est l’architecture de l’ensemble
d’instructions (ISA) comme le montre la figure 18.
Cette interface suit une hiérarchie de traduction entre la conception logicielle et la conception
matérielle donnée par la figure 20
21
Figure 20. Hiérarchie entre le SW et HW
Il est évident que tout ordinateur doit être capable d’effectuer des opérations
arithmétiques, logiques, de transfert des données et de branchement suite à une
décision prise par l’unité de contrôle, à titre d’exemple, en notation MIPS, l’instruction
add permet d’additionner deux opérandes (a et b ) et mettre le résultat dans une autre
opérande (c) suivant la forme suivante (Figure 21).
22
Les autres instructions arithmétiques, logiques et de branchement seront présentées
explicitement à la fin de ce chapitre.
Les opérandes des instructions arithmétiques et logiques ne peuvent pas être des
variables quelconques ; ils doivent provenir d’un nombre limité d’emplacements
particuliers appelés registres. La taille d’un registre dans l’architecture MIPS est de 32
bits possède 32 registres, notés $0, $1, ...,$31 Les registres sont plus rapide que la
mémoire. Les registres sont plus facile à utiliser pour le compilateur. Les registres
peuvent contenir des variables. Donc cela permet de réduire le trafic au niveau de la
mémoire. Ces 32 registres sont intégrés dans un banc de registres dont le schéma
synoptique est donné par la figure 13 du premier chapitre. Ces registres généraux sont
interchangeables, sauf :
• le registre $0 qui vaut toujours 0, même après une écriture.
• Le registre $31, utilisé implicitement par certaines instructions pour
récupérer l'adresse de retour avant un saut.
Les autres registres ont des utilisations préférentielles, mais cela n'est strict que pour
communiquer avec d'autres programmes (exemple: utiliser des programmes en
librairies). Le tableau suivant illustre le nom et utilité de chaque registre.
Numéro
Nom Usage
de $
zero 0 Zéro (toujours)
at 1 Réservé par l'assembleur
v0 .. v1 2 .. 3 Retour de valeurs
a0 .. a3 4 .. 7 Passage d'arguments
t0 .. t7 8 .. 15 Temporaires non sauvegardés
s0.. s7 16 .. 23 Temporaires sauvegardés
t8.. t9 24 .. 25 Temporaires non sauvegardés
k0.. k1 26 .. 27 Réservés par le système
gp 28 Global Pointer
sp 29 Stack Pointer
fp 30 Frame Pointeur
ra 31 Return Address
Tableau 3. Les registres de l’architecture MIPS
23
Beaucoup de programmes ont plus de variables que les machines. Par conséquent, le
compilateur cherche à conserver dans les registres les variables les plus souvent
utilisées et place le reste en mémoire. On ne peut stocker qu'une petite quantité de
données dans les registres, la mémoire d'un ordinateur contient des millions de données
élémentaires. Et les structures de données comme les tableaux qui sont stockées en
mémoire. Les opérations arithmétiques n’ont lieu que dans les registres. MIPS doit donc
disposer d’instructions qui transfèrent les données entre la mémoire et les registres.
Depuis 1980 toutes les machines utilisent des adresses au niveau de l’octet (8 bits).
Avec l’architecture MIPS, on peut lire un mot de 32 bits comme 4 octets en un seul coup,
Pour le MIPS, le transfert des données se fait suivant la notion Big endian alors que pour
le 8086, il se fait en little endian comme le montre la figure 24.
Pour l’architecture MIPS, les instructions de transfert des mots à 32 bits sont LW et SW
(Figures 25 et 26).
24
Figure 25. Chargement : instruction et niveau RTL
Alors que les instructions de branchement conditionnel sont représentées par BEQ et
BNE. Les instructions et leurs niveaux RTL sont donnés par les figures 27 et 28.
Pour l’architecture MIPS, une instruction est représentée par un format binaire codé sur
32 bits stocké dans la mémoire, ce format est constitué de plusieurs champs incluant le
code opératoire de l’instruction, les numéros de registres source, transfert et
destination, une valeur constante, le nombre d’instructions à sauter …. Ce format va être
décodé par le séquenceur afin d’envoyer au chemin de données les signaux de contrôle
adéquats pour exécuter cette ladite instruction. Pour l’architecture MIPS, il existe 3
types de format d’instructions
• Type R
• Type I
• Type J
Le format R est constitué de 6 champs. Les instructions de format R ont toutes un code-
op de 0. Ces instructions ont trois registres opérandes : rs, rt, rd. Les champs rs (registre
source) et rt (registre transfert) sont les sources et rd (registre destination) est la
25
destination. La fonction UAL se trouve dans le champ fonct et est décodée par le modèle
de contrôle de l'UAL de la section précédente. Les instructions de cette forme que nous
réalisons sont les instructions add, sub,or et slt (set on less than, positionner
lorsqu’inférieur). Le champ decval sera utilisé pour les décalages. Le format de type R
est donné par la figure suivante
A tire d’exemples, l’instruction add ait une fonction 32 et l’instruction sub admet une
fonction 34.
Un exemple est donné pour une instruction de chargement du registre 1 par le contenu
de la mémoire d’adresse (100 plus la valeur du registre 2).
26
Figure 32. Format I avec LW et SW
Le format de type J est constitué de deux champs (Figure …), un champs pour adresse
sur 26 bits de bit 0 au bit 25 et le reste pour le code opératoire par exemple le code
opératoire de l’instruction J est 2.
27
Figure 35. Instructions arithmétiques MIPS
28
Figure 37. Instructions de transfert MIPS
29