Processeur MIPS R3000. Architecture externe et jeu d`instructions

Ensimag - Filières SLE/ISI
Processeur MIPS R3000.
Architecture externe et jeu d’instructions
MIPS R3000 jeu d’instructions page - 1
Ensimag - Filières SLE/ISI
A) Introduction
Ce document décrit l’architecture externe ainsi que le jeu d’instructions du processeur MIPS R3000. Le MIPS
R3000 est la deuxième génération de processeur de la société MIPS1, et n’est plus commercialisé aujourd’hui.
Son successeur est le R4000 qui lui ressemble fort. Des informations sur cette famille de processeurs, très uti-
lisée dans les applications embarquées et dans les machines parallèle à mémoire partagées, sont disponibles
sur le site www.mips.com.
L’architecture externe est le niveau d’abstraction nécessaire à l’écriture de programmes assembleur, de la
partie génération de code d’un compilateur, et du programmeur de systèmes d’exploitation multi-processus
(et/ou multi-tâches). Sont détaillés :
les registres visibles du logiciel ;
l’adressage de la mémoire ;
le jeu d’instruction ;
les mécanismes de traitement des exceptions, interruptions et appels systèmes.
L’architecture interne sera décrite en détail durant le cours.
B) Notations
Par convention, nous utiliserons les notations du langage C pour la description des constantes, et pour la
terminologie en général.
La description des instructions nécessite également l’introduction de quelques notations :
=test d’égalité
+addition entière en complément à deux
soustraction entière en complément à deux
×multiplication entière en complément à deux
.
.division entière en complément à deux
mod reste de la division entière en complément à deux
and opérateur et bit-à-bit
or opérateur ou bit-à-bit
nor opérateur non-ou bit-à-bit
xor opérateur ou-exclusif bit-à-bit
memb[a]contenu de la mémoire à l’adresse aaccédée sur boctets
assignation
implication
kconcaténation de chaînes de bits
xnréplication du bit xdans une chaîne de nbits. Notons que xest
un unique bit
xp...q sélection des bits pàqde la chaîne de bits x
Certains opérateurs n’étant pas évidents, nous donnons ici quelques exemples.
1MIPS signifie Microprocessor without Interlocked Pipeline Stage.
MIPS R3000 jeu d’instructions page - 2
Ensimag - Filières SLE/ISI
Posons
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0001101101001000 la chaîne de bit x, qui a une longueur de 16 bits, le bit le plus à
droite étant le bit de poids faible et de numéro zéro, et le bit le plus à gauche étant le bit de poids fort et de
numéro 15. x6...3est la chaîne 1001.x16
15 crée une chaîne de 16 bits de long dupliquant le bit 15 de x, zéro
dans le cas présent. x16
15 kx15...0est la valeur 32 bits avec extension de signe d’un immédiat en complément
à deux de 16 bits.
MIPS R3000 jeu d’instructions page - 3
Ensimag - Filières SLE/ISI
C) Architecture externe
Le processeur possède deux modes, le mode utilisateur (ou user) pour exécuter les applications, et le mode
noyau (ou kernel) pour exécuter le système. Ces 2 modes sont nécessaires à l’exécution sure de plusieurs
processus sur un même processeur.
1) Registres visibles du logiciel
Les registres du MIPS R3000 visibles du logiciel, c.-à-d. qui sont manipulés par les instructions implicitement
ou explicitement, ont tous une taille de 32 bits.
Le MIPS R3000 visant par construction l’exécution de multiples processus, des mécanismes de protections
sont mis en œuvre pour l’accès aux registres relatifs au système. Ces derniers registres appartiennent à un
coprocesseur système dit coprocesseur 0 ou cop0. Les accès à ce coprocesseur ne peuvent avoir lieu qu’en
mode noyau.
registres du processeur
hormis $0 et $31, ils sont identiques du point de vue du matériel, et ils peuvent être accèdes dans les
2 modes.
$i ,(0 i31)
ce sont les registres d’usage général. Les opérandes des instructions et leur(s) résultat(s) y sont
placés.
Le registre $0 peut être écrit mais retourne toujours 0x00000000 lors de la lecture.
Le registre $31 est utilisé implicitement (c.-à-d. que le matériel en impose l’utilisation et qu’il
n’apparaît donc pas dans l’instruction) pour sauvegarder l’adresse de retour d’appels de foncions
lors des instructions bgezal,bltzal, et jal ;
pc ,program counter
ce registre contient l’adresse de l’instruction à exécuter. Sa valeur est modifiée par toutes les
instructions ;
ir ,instruction register
ce registre contient l’instruction en cours d’exécution. Il n’est pas directement accessible
hi et lo
ces registres contiennent le résultat de la multiplication sur 64 bits, ou le résultat de la division
euclidienne (quotient dans lo et reste dans hi).
registres du coprocesseur 0
ces registres concernent la gestion des exceptions, interruptions et appels systèmes.
badvaddr ,bad virtual address
ce registre contient l’adresse fautive en cas d’exception de type « adresse illégale » ;
status
c’est le registre d’état. Il contient les masques d’interruption et le mode ;
cause
c’est le registre qui contient la cause de l’exception ;
MIPS R3000 jeu d’instructions page - 4
Ensimag - Filières SLE/ISI
$0
$1
$pc
$ir
$lo
$hi
$31
FIG. 1 – Registres généraux du MIPSR3000.
epc ,exception program counter
ce registre contient l’adresse de retour en cas d’interruption et l’adresse de l’instruction fautive en
cas d’exception ou d’appel système.
Ces registres concernent la gestion de la mémoire virtuelle.
TLB ,Transaltion Lookaside Buffer
c’est la mémoire associative pour la traduction adresse virtuelle vers adresse physique ;
index
registre contenant l’index de la TLB dans lequel faire les accès ;
random
registre contenant un index aléatoire valide pour les accès à la TLB ;
context
registre utilisé partiellement par le logiciel (une partie sert à pointer sur la structure des pages
du système d’exploitation) et par le matériel (l’autre partie contient les poids forts de l’adresse
fautive lors d’une traduction qui échoue) pour faciliter l’écriture en logiciel de la gestion de la
mémoire virtuelle ;
entryhi et entrylo
valeur à comparer aux entrées de la TLB pour savoir s’il y a une erreur de page (page fault).
index 0
1random
context 4
8badvaddr
status 12
cause 13
epc 14
prid 15
entrylo 2entryhi 10
TLB
FIG. 2 – Registres du coprocesseur 0 du MIPSR3000.
MIPS R3000 jeu d’instructions page - 5
1 / 39 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 !