Vous êtes sur la page 1sur 6

TP3 Architecture du processeur MIPS

 Format de l’instruction
 Le code opération
 Les registres

Présentation
MIPS (Microprocessor without Interlocked Pipeline Stages) est un processeur 32 bits
industriel conçu dans les années 80. Son jeu d'instructions est de type RISC (Reduced
instruction set computer) développée par la compagnie MIPS Computer Systems Inc.
Il existe plusieurs réalisations industrielles de cette architecture (SIEMENS, NEC, LSI
LOGIC, SILICON GRAPHICS, etc...)

On les retrouve aussi dans plusieurs systèmes embarqués, comme les ordinateurs de poche,
les routeurs Cisco et les consoles de jeux vidéo (Nintendo 64 et Sony PlayStation, PlayStation
2 et PSP).

Le MIPS R4000 sorti en 1991 serait le premier processeur 64 bits. Il a été supporté par
Microsoft de Windows NT 3.1 jusqu'à Windows NT 4.0

.3 Adressage Mémoire :
 L’unité adressable est l’octet.
 La mémoire est vue comme un tableau d'octets qui contient les données et les
instructions.
 Les adresses sont codées sur 32 bits (CO =32).
 Les instructions sont codées sur 32 bits (RI=32).
 Les échanges de données avec la mémoire se font par mot (4 octets consécutifs), demi-
mot (2 octets consécutifs), ou par octet.

1
 L'adresse d'un mot de donnée ou d'une instruction doit être multiple de 4. L'adresse d'un
demi-mot doit être multiple de 2. (on dit que les adresses doivent être "alignées").

Format de l’instruction

Le processeur possède 57 instructions qui se répartissent en 4 classes :

• 33 instructions arithmétiques/logiques entre registres


• 12 instructions de branchement
• 7 instructions de lecture/écriture mémoire
• 5 instructions systèmes

Les formats d'encodage des instructions : 3 formats d'encodage sont possible dans
MIPS :

Op : Opcode, le code de l'instruction.


rs : registre source.
rt : deuxième registre source.
rd : registre destination.
shamt : shift amount, nombre de bits à décaler dans l'instruction shift.
func : function, le code de la fonction/opération.
address : adresse mémoire sur 26 bits.

Chaque instruction MIPS est contenue sur 32 bits, l'encodage des 3 types
d'instructions possibles est décrit plus haut. Les instructions de type R (R pour Registre)
utilisent 3 registres pour les opérations arithmétiques et logiques, 2 registres sources
comme opérandes et un registre destination pour le résultat, 5 bits sont utilisés pour coder

2
le numéro du registre utilisé. Le type I (I pour immédiate) utilise aussi 2 opérandes et un
registre pour le résultat, la différence avec le type R est que l'un de ces opérandes est une
immédiate sur 16 bits, ils sont utilisés pour différents types d'instructions incluant aussi des
opérations arithmétiques et logiques. Le type J (J pour Jump, ou saut) est réserve pour
quelques instructions de saut.

3
Remarque : On peut observer sur les 3 formats, que seulement 3 manières d'utiliser
l'information dans une instruction MIPS sont possibles, soit l'information est dans un
registre de 32 bits, soit une immédiate de 16 bits, soit une adresse de 26 bits (Les 5 bits
de shampt sont particuliers aux instructions de shift).

Le code opération

Les registres de MIPS : la liste des 32 registres programmables de 32 bits sur MIPS, est
comme suite :

Nom Numéro Description Nom Numéro Description


$zero $0 constante zéro $s0 $16 sauvegardé
$at $1 réserve pour l'assembleur $s1 $17 sauvegardé
$v0 $2 retour de fonction $s2 $18 sauvegardé
$v1 $3 retour de fonction $s3 $19 sauvegardé
$a0 $4 argument de fonction $s4 $20 sauvegardé
$a1 $5 argument de fonction $s5 $21 sauvegardé
$a2 $6 argument de fonction $s6 $22 sauvegardé
$a3 $7 argument de fonction $s7 $23 sauvegardé
$t0 $8 temporaire $t8 $24 temporaire
$t1 $9 temporaire $t9 $25 temporaire
$t2 $10 temporaire $k0 $26 pour noyau système
$t3 $11 temporaire $k1 $27 pour noyau système
$t4 $12 temporaire $gp $28 pointeur global
$t5 $13 temporaire $sp $29 pointeur de pile
$t6 $14 temporaire $fp $30 pointeur de frame
$t7 $15 temporaire $ra $31 registre d'adresse

Remarque 1: Un registre peut être désigné par son nom ou son numéro.

Remarque 2: Un registre doit toujours être précédé par un $ lors de sont utilisation dans
une instruction assembleur.

Remarque 3: il existe aussi 2 autres registres qui ne sont pas listés ici, c'est lo (pour low)
et hi (pour high), il sont exclusivement utilisés par les instructions de multiplication et
division.

1
Dans le langage assembleur MIPS, les registres généraux utilisés pour
contenir les données sont les registres temporaires et les registres sauvegardés, la
différence entre les deux est que les registres temporaires ne doivent pas
être sauvegardés par le programmeur lors d'un appel de fonction. Les registres
a,v et ra sont utilisés pour le mécanisme des appels de fonction, les registres a
doivent contenir les arguments, les registres v la valeur de retour, et ra l'adresse de
retour.
II.2Registres Visibles
Tous les registres visibles du logiciel, c'est à dire ceux dont la valeur peut être lue ou modifiée
par les instructions, sont des registres 32 bits.
Afin de mettre en œuvre les mécanismes de protection nécessaires pour un système
d'exploitation multi-tâches, le processeur possède deux modes de fonctionnement :
utilisateur/superviseur. Ces deux modes de fonctionnement imposent d'avoir deux catégories
de registres.

1) Registres non protégés


2) Registres protégés.

II.2.1 Registres non protégés :


Le processeur possède 35 registres manipulés par les instructions standard (c'est à dire les
instructions qui peuvent s'exécuter aussi bien en mode utilisateur qu'en mode superviseur).

• Ri (0 ≤ i ≤ 31) 32 registres généraux.


Ces registres sont directement adressés par les instructions, et permettent de stocker des
résultats de calculs intermédiaires.
Le registre R0 est un registre particulier:
- la lecture fournit la valeur constante "0x00000000"
- l’écriture ne modifie pas son contenu.
Le registre R31 est utilisé par les instructions d'appel de procédures (instructions BGEZAL,
BLTZAL, JAL et JALR) pour sauvegarder l'adresse de retour.
• PC Registre compteur de programme (Program Counter).

9
Ce registre contient l'adresse de l'instruction en cours d'exécution. Sa valeur est modifiée
par toutes les instructions.
• HI et LO Registres pour la multiplication ou la division. Ces deux registres 32 bits
sont utilisés pour stocker le résultat d'une multiplication ou d'une division, qui est un
mot de 64 bits.
La description des 32 registres est donnée dans le tableau suivant :

II.2.2 Registres protégés


L'architecture MIPS 4 registres qui ne sont accessibles, en lecture comme en écriture, que
par
les instructions privilégiées (c'est à dire les instructions qui ne peuvent être exécutées
qu'en mode superviseur) dédiés pour la gestion des interruptions et des exceptions.

• SR Registre d'état (Status Register).


Il contient en particulier le bit qui définit le mode : superviseur ou utilisateur, ainsi que les
bits de masquage des interruptions. (Ce registre possède le numéro 12)
• CR Registre de cause (Cause Register). En cas d'interruption ou d'exception, son
contenu définit la cause pour laquelle on fait appel au programme de traitement des
interruptions et des exceptions. (Ce registre possède le numéro 13)
• EPC Registre d'exception (Exception Program Counter).
Il contient l'adresse de retour (PC + 4) en cas d'interruption. Il contient l'adresse
de l'instruction fautive en cas d'exception (PC). (Ce registre possède le numéro 14)
• BAR Registre d'adresse illégale (Bad Address Register).
En cas d'exception de type "adresse illégale", il contient la valeur de l'adresse mal formée.
(Ce registre possède le numéro 8)

10

Vous aimerez peut-être aussi