2010 Archi IG3 Cours10-Mips
Post on 21-Mar-2016
24 Views
Preview:
DESCRIPTION
Transcript
Plan du cours
1 Histoire de lordinateur
2 Presentation generale
3 Representation interne des informations
4 Circuits logiques
5 Memoires
6 Unite centrale de traitement
7 Assembleur
8 Introduction au langage MIPS
9 Entrees / sorties
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 201 / 238
Ressources
Sur la base des notes de cours de Christophe Fiorio, Jean-Marc Talbot.
Computer organization and design : the hard-ware/software interface, David A. Patterson & JohnL. Hennessy, Morgan Kaufmann, 4th edition, 2008.
Assemblers, Linkers, and the SPIM Simulator, JamesR. Larus.
Documentation on the MIPS32 architecture , MIPSTechnologies, 2010.
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 202 / 238
Les machines MIPS
Le langage MIPS est lassembleur des processeurs MIPS (jeuxdinstructions : MIPS I a` V, MIPS32, MIPS64) ;
Introduit au debut des annees 1980 ;
Developpe par MIPS Technologies ;
Processeur RISC ;
Existe en 32 et 64 bits ;
Souvent utilise comme support dans le milieu academique ;
Processeur des machines NEC, SGI (supercalculateurs), Sony PS,PS2,PSP, Nintendo (console), FreeBox, NeufBox (routeur) ;
Nous allons nous interesser a` la norme du langage MIPS32.
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 203 / 238
A-t-on des machines MIPS sous la main ?
Non Utilisation dune machine vir-tuelle : un programme qui simule demanie`re logicielle le fonctionnementdune machine reelle.
Code ass. MIPS
Compilateur
prog. en langagemachine MIPS
Interpreteur
code machine local+ excution
Il existe plusieurs logiciels qui sont des simulateurs de machine MIPSe.g., SPIM, MIPSter, MARS, OVPsim, GXemul.
Nous utiliserons SPIM(http://pages.cs.wisc.edu/~larus/spim.html)
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 204 / 238
Generalites MIPS
Instructions de 32 bits, 3 types dinstructions differentes ;
Memoire adressable de 232 octets ;
CO et RI de 32 bits ;
32 registres de 32 bits ;
Toujours une seule instruction par ligne ;
# prefixe un commentaire ;
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 205 / 238
Exemple
Le operations arithmetiques MIPS
OPA a,b,c # a := b OPA c avec OPA ={add, sub, ...}
f := (g + h) (i + j)add $t0,$t1,$t2 # $t0 := $t1+$t2add $t3,$t4,$t5 # $t3 := $t4+$t5sub $v0,$t0,$t3 # $v0 := $t0-$t3
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 206 / 238
Registres MIPS
Il existe 32 registres de 32 bits numerotes $0, . . . , $31Nom Numero Description
$zero 0 Constante 0$at 1 Reserve a` lassembleur
$v0,$v1 2-3 Evaluation dune expression et resultats dunefonction
$a0,. . .,$a3 4-7 Arguments de sous-programmes$t0,. . .,$t7 8-15 Valeurs temporaires (non preservees)$s0,. . .,$s7 16-23 Valeurs temporaires (preservees)
$t8,$t9 24-25 Valeurs temporaires (non preservees)$k0,$k1 26-27 Reserve pour les interruptions (i.e., syste`me
dexploitation)$gp 28 Pointeur global$sp 29 Pointeur de pile$fp 30 Pointeur de bloc$ra 31 Adresse de retour
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 207 / 238
Acce`s memoire MIPS
Il existe des instructions detransfert vers/de la memoirecentrale (e.g., lw et sw) ;
La memoire est vue comme untableau ou` ladresse seraitlindice du tableau ;
Mot memoire de 32 bits ;
Memoire adressable de 232
octets (4Go) 235 bits 230(=1073741824) mots de 32bits ;
Adresse sur 1 octet Les mots memoires sont adresses par desmultiples de 4 (i.e., le CO est incremente de 4 a` chaque cycle).
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 208 / 238
Instructions MIPS
Une instruction MIPS est codee en binaire par un mot de 32 bits ;
Les 32 bits sont decomposes en champs, chaque partie ayant unesignification particulie`re, codant ainsi soit linstruction, soit unoperande numerique, soit une adresse ;
Avoir un nombre fixe doperande est plus simple a` gerer ;
3 types de format dinstruction differentes :I Instruction de type R (registre) ;I Instruction de type I (transfert) ;I Instruction de type J (saut) ;
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 209 / 238
Format des instructions MIPS (1/3)
Instruction de type R (registre)
Les 32 bits sont decomposes de la manie`re suivante :
op rs rt rd decval fonction
6 bits 5 bits 5 bits 5 bits 5bits 6bits
op : code operation correspondant a` linstruction
rs : premier registre operateur source
rt : deuxie`me registre operateur source
rd : registre operation destination (recoit le resultat de loperation)
decval : valeur du decalage
fonction : variante de loperation decrite par op
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 210 / 238
Format des instructions MIPS (2/3)
Instruction de type I (transfert)
Les 32 bits sont decomposes de la manie`re suivante :
op rs rt adresse
6 bits 5 bits 5 bits 16 bits
op : code operation correspondant a` linstruction
rs : premier registre operateur source
rt : deuxie`me registre operateur source
adresse : adresse memoire
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 211 / 238
Format des instructions MIPS (3/3)
Instruction de type J (saut)
Les 32 bits sont decomposes de la manie`re suivante :
op adresse
6 bits 26 bits
op : code operation correspondant a` linstruction
adresse : adresse memoire
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 212 / 238
Exemples dinstructions MIPS
Exemple dinstruction de type R
000000 10001 10010 01000 00000 100000
0 17 18 8 0 32
add $8,$17,$18 en MIPS
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 213 / 238
Type dinstructions : arithmetiques
type instruction commentaire
arithmetiques
add Rd,Rs,Rt addition RdRs+Rtaddu Rd,Rs,Rt addition - sans deb. RdRs+Rtaddi Rd,Rs,Imm addition dun immediat RdRs+Immaddiu Rd,Rs,Imm addition - sans deb. RdRs+Immsub Rd,Rs,Rt soustraction RdRs-Rtmult Rs,Rt multiplication [hi,lo]RsRtmultu Rs,Rt multiplication non signee [hi,lo]RsRtmul Rd,Rs1,Rs2 multiplication - sans deb. RdRs1Rs2div Rs,Rt division loRsRt ;
hiRs mod Rtdiv Rd,Rs1,Rs2 division RdRs1Rs2divu Rd,Rs1,Rs2 division non signee (sans deb.) RdRs1Rs2rem Rd,Rs1,Rs2 reste de la division RdRs1Rs2 si
Rs1 ou Rs2 est ne-gatif
abs Rd,Rs,Rt valeur absolueneg Rd,Rs oppose dune valeur Rd Rsrol Rd,Rs1,Rs2 rotation vers la gaucheror Rd,Rs1,Rs2 rotation vers la droite
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 214 / 238
Type dinstructions : logiques
type instruction commentaire
logiques
and Rd,Rs,Rt et logique RdRsRtandi Rd,Rs,Imm et logique immediat RdRsImmor Rd,Rs,Rt ou logique RdRsRtori Rd,Rs,Rt ou logique immediat RdRsImmnor Rd,Rs,Rt nor logique le non ou
RdRs Immxor Rd,Rs,Rt xor logique RdRsRtxori Rd,Rs,Imm xor logique immediat RdRsImmnot Rd,Rs non logique RdRs ; negation
bit a` bitsll Rd,Rs,Sa decalage logique a` gauchesllv Rd,Rt,Rs decalage logique a` gauche rang du decalage
defini par Rssrl Rd,Rs,Sa decalage logique a` droitesrlv Rd,Rt,Rs decalage logique a` droite rang du decalage
defini par Rssra Rd,Rs,Sa decalage arithmetique a` droitesrav Rd,Rt,Rs decalage arithmetique a` droite rang du decalage
defini par Rs
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 215 / 238
Type dinstructions : chargement et rangement memoire
type instruction commentaire
chargementet rangement
lb Rt,@ chargement doctet RtM[@]lw Rt,@ chargement dun mot Rt(M[@],M[@+1])ld Rt,@ chargement dun mot double (Rt,Rt+1)
(M[@],M[@+1],M[@+2],M[@+3])lwl Rt,@ chargt de la partie gauche
dun motlwt Rt,@ chargt de la partie droite dun
motli Rd,Imm chargement dun immediat RdImmlui Rt,Imm chargment dun immediat
dans loctet de poids fortRtImm216
la Rt,@ chargement dune adresse Rt@ (utiliseeavec un label)
sb Rt,@ rangement doctet M[@]Rtsw Rt,@ rangement dun mot (M[@],M[@+1])Rtsd Rt,@ rangement dun mot double (M[@],M[@+1],M[@+2],M[@+3])
(Rt,Rt+1)swl Rt,@ rangt de la partie gauche dun
motswt Rt,@ rangt de la partie droite dun
motClement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 216 / 238
Type dinstructions : transfert de donnees
type instruction commentaire
transfertde donnees
move Rd,Rs transfert RdRs
mfhi Rd transfert depuis hi Rdhimflo Rd transfert depuis lo Rdlomfc1.d Rd,Fs Transfert dun mot double depuis le
coprocesseur 1[Rd,Rd+1][Fs,Fs+1]
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 217 / 238
Type dinstructions : comparaison
type instruction commentaire
comparaison
seq Rd,Rs1,Rs2 positionner si egal Rd=Rs1==Rs2?1:0;sne Rd,Rs1,Rs2 positionner si different Rd=Rs1!=Rs2?1:0;sgt Rd,Rs1,Rs2 positionner si superieur Rd=Rs1>=Rs2?1:0;sge Rd,Rs1,Rs2 positionner si superieur ou egal Rd=Rs1>=Rs2?1:0;slt Rd,Rs1,Rs2 positionner si inferieur Rd=Rs1
Type dinstructions : branchement conditionnel et saut
type instruction commentaire
branchementconditionnelet saut
beq Rs,Rt,label branchement si egal if(Rs==Rt) gotolabel
bne Rs,Rt,label branchement si different if(Rs!=Rt) gotolabel
bgt Rs,Rt,label branchement si superieur if(Rs>Rt) gotolabel
bge Rs,Rt,label branchement si superieur ou egal if(Rs>=Rt) gotolabel
blt Rs,Rt,label branchement si inferieur if(Rs
Type dinstructions : exception et interruption
type instruction commentaire
exceptionetinterruption
rfe retour dexception restitue le registreEtat
syscall appel syste`me le registre $v0contient le numerode lappel syste`me
nop aucune operation ne rien faire !
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 220 / 238
Type dinstructions : virgule flottante (1/2)
instructionsflottantes
abs.s Fd,Fs valeur absolue flottante simple Fd|Fs|
abs.d Fd,Fs valeur absolue flottante double Fd|Fs|add.s Fd,Fs,Ft addition flottante simple RdRs+Rtadd.d Fd,Fs,Ft addition flottante double RdRs+Rtbc1t label branchement si drapeau flottant vrai branchement condi-
tionnel a` ladressedu label
bc1f label branchement si drapeau flottant faux branchement condi-tionnel a` ladressedu label
c.eq.s Fs,Ft test si egalite simple drapeau flottant a` 1si Fs==Ft
c.eq.d Fs,Ft test si egalite double drapeau flottant a` 1si Fs==Ft
c.lt.s Fs,Ft test si inferieur simple drapeau flottant a` 1si Fs
Type dinstructions : virgule flottante (2/2)
instructionsflottantes
cvt.d.s Fd,Fs conversion simple en double simple Fs;Fd(double)Fs
cvt.s.d Fd,Fs conversion double en simple double Fs;Fd(simple)Fs
cvt.s.w Fd,Fs conversion entier en simple int Fs;Fd(simple)Fs
cvt.d.w Fd,Fs conversion entier en double int Fs;Fd(double)Fs
cvt.w.s Fd,Fs conversion simple en entier simple Fs;Fd(int)Fs
cvt.w.d Fd,Fs conversion double en entier double Fs;Fd:=(int)Fs
mul.s Fd,Fs,Ft multiplication flottante simple FdFsFtmul.d Fd,Fs,Ft multiplication flottante double FdFsFtdiv.s Fd,Fs,Ft division flottante simple FdFs/Ftdiv.d Fd,Fs,Ft division flottante double FdFs/Ftneg.s Fd,Fs,Ft oppose dun nombre simple flottant Fd- Fsneg.d Fd,Fs,Ft oppose dun nombre simple flottant Fd- Fsl.s Fd,@ chargement flottant simple precision FdM[@]l.d Fd,@ chargement flottant double precision FdM[@]mov.s Fd,Fs transfert dun nombre flottant simple
precisionFdFs
mov.d Fd,Fs transfert dun nombre flottantdouble precision
FdFsClement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 222 / 238
Exemple de branchement
Le langage machine : les instructions>Codage des instructions
Codage des instructions
Une instruction MIPS est code en binaire par un seul mot de 32 bits.
0000 0010 0011 0010 0100 0000 0010 0000
se dcompose en ralit en
000000 10001 10010 01000 00000 100000
soit0 17 18 8 0 32
cest dire :
add $8,$17,$18
Christophe Fiorio, EPU Montpellier 2008-2009 37/112
Le langage machine : les instructions>Codage des instructions
Codage des instructionsType R
op rs rt rd decval fonct6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
o op : code opration correspondant linstructionrs : 1er registre oprande sourcert : 2e`me registre oprande sourcerd : registre oprande destination : reoit le rsultat de lopration
decval : valeur du dcalagefonct : fonction : variante de lopration dcrite par op
Christophe Fiorio, EPU Montpellier 2008-2009 38/112
Le langage machine : les instructions>Langage MIPS
Langage MIPS : instruction arithmtiques de base
type instruction commentaire
arithmtiques
add Rd,Rs,Rt addition (avec dbordement) RdRs+Rtaddu Rd,Rs,Rt addition (sans dbordement) RdRs+Rtaddi Rd,Rs,Imm addition dun immdiat (dbordt) RdRs+Immaddiu Rd,Rs,Imm addition dun immdiat (ss dbordt) RdRs+Immsub Rd,Rs,Rt soustraction (dbordt) RdRs-Rtmult Rs,Rt multiplication [hi,lo]RsRtmult Rs,Rt multiplication non signe [hi,lo]RsRtmul Rd,Rs1,Rs2 multiplication (ss dbordement) RdRs1Rs2div Rs,Rt division (dbordt) loRsRt ; hiRs mod Rtdiv Rd,Rs1,Rs2 division (dbordt) RdRs1Rs2divu Rd,Rs1,Rs2 division non signe (ss dbordt) RdRs1Rs2rem Rd,Rs1,Rs2 reste de la division RdRs1Rs2 si Rs1 ou Rs2
est ngatif, le reste dpend delarchitecture
abs Rd,Rs,Rt valeur absolueneg Rd,Rs oppos dune valeur (dbordt) Rd Rsrol Rd,Rs1,Rs2 rotation vers la gaucheror Rd,Rs1,Rs2 rotation vers la droite
Christophe Fiorio, EPU Montpellier 2008-2009 39/112
Le langage machine : les instructions>Langage MIPS
tests et bouclestests (instructions ifthenelse)
Les instructions de test sappelle, en langage dassemblage, des branchementsconditionnels : beq, bne, bgt, bge, blt, ble.
exercice : coder le programme suivant en langage MIPS
if i/=j thenf :=f+h ;
end iff :=f-i ;
Christophe Fiorio, EPU Montpellier 2008-2009 40/112
beq $19,$20,L1 #aller en L1 si i=jadd $16,$16,$18 #f :=f+h
L1 : sub $16,$16,$19
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 223 / 238
Sous-programmes
MIPS ne fournit pas dinstruction permettant de definir dessous-programmes ou des macros. On doit utiliser des sauts/branchementsqui modifient le CO :
jal saute a` une etiquette et garde un lien sur le lieu dexecution dansle registre $31 ;
j saute sans sauvegarder ladresse de retour ;
jr saute a` une adresse stockee dans un registre.
Lors de lappel de sous-programmes :
On utilise les registres 4 a` 7 pour le passage de parame`tres ;
$t0-$t9 sont sauves par lappelant ;
$s0-$s7 sont sauves par lappele.
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 224 / 238
Appels de sous-programmes imbriques
Utilisation dune pile (LIFO) pour le passage de parame`tre et la sauvegardede ladresse de retour.
On utilise le registre $29 comme sommet de pile (registre SP) ;
Il ny a pas dinstruction PUSH et POP ;
Equivalent de PUSH et POP en MIPS
push : addi $29,$29,4 # sommet de pile ajustesw $31,0($29) # sauvegarde de ladresse de retourjal procedure # saut a` la procedure
pop : lw $31,0($29) # restauration de $31subi $29,$29,4 # ajustement du sommet de pile
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 225 / 238
Appels de sous-programmes : exemple [Talbot] (1/2)
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 226 / 238
Appels de sous-programmes : exemple [Talbot] (2/2)
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 227 / 238
Adressage des operandes en MIPS
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 228 / 238
Exemple de boucle [Talbot] (1/2)
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 229 / 238
Exemple de boucle [Talbot] (2/2)
Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 230 / 238
top related