2010 Archi IG3 Cours10-Mips

download 2010 Archi IG3 Cours10-Mips

of 30

description

archi

Transcript of 2010 Archi IG3 Cours10-Mips

  • 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