Plan du cours 1 Histoire de l ordinateur 2 Présentation générale 3 Représentation interne des informations 4 Circuits logiques 5 Mémoires 6 Unité centrale de traitement 7 Assembleur 8 Introduction au langage MIPS 9 Entrées / 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 hardware/software interface, David A. Patterson & John L. Hennessy, Morgan Kaufmann, 4th edition, 2008. Assemblers, Linkers, and the SPIM Simulator, James R. Larus. Documentation on the MIPS32 architecture, MIPS Technologies, 2010. Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 202 / 238
Les machines MIPS Le langage MIPS est l assembleur des processeurs MIPS (jeux d instructions : MIPS I à V, MIPS32, MIPS64) ; Introduit au début des années 1980 ; Développé par MIPS Technologies ; Processeur RISC ; Existe en 32 et 64 bits ; Souvent utilisé comme support dans le milieu académique ; Processeur des machines NEC, SGI (supercalculateurs), Sony PS,PS2, PSP, Nintendo (console), FreeBox, NeufBox (routeur) ; Nous allons nous intéresser à 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? Code ass. MIPS Non Utilisation d une machine virtuelle : un programme qui simule de manière logicielle le fonctionnement d une machine réelle. Compilateur prog. en langage machine MIPS Interpreteur code machine local + exécution Il existe plusieurs logiciels qui sont des simulateurs de machine MIPS e.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
Généralités MIPS Instructions de 32 bits, 3 types d instructions différentes ; Mémoire adressable de 2 32 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 opérations arithmétiques MIPS OPA a,b,c # a := b OPA c avec OPA ={add, sub,...} f := (g + h) (i + j) add $t0,$t1,$t2 # $t0 := $t1+$t2 add $t3,$t4,$t5 # $t3 := $t4+$t5 sub $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 numérotés $0,..., $31 Nom Numéro Description $zero 0 Constante 0 $at 1 Réservé à l assembleur $v0,$v1 2-3 Évaluation d une expression et résultats d une fonction $a0,...,$a3 4-7 Arguments de sous-programmes $t0,...,$t7 8-15 Valeurs temporaires (non préservées) $s0,...,$s7 16-23 Valeurs temporaires (préservées) $t8,$t9 24-25 Valeurs temporaires (non préservées) $k0,$k1 26-27 Réservé pour les interruptions (i.e., système d exploitation) $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
Accès mémoire MIPS Il existe des instructions de transfert vers/de la mémoire centrale (e.g., lw et sw) ; La mémoire est vue comme un tableau où l adresse serait l indice du tableau ; Mot mémoire de 32 bits ; Mémoire adressable de 2 32 octets (4Go) 2 35 bits 2 30 (=1073741824) mots de 32 bits ; Adresse sur 1 octet Les mots mémoires sont adressés par des multiples de 4 (i.e., le CO est incrémenté de 4 à chaque cycle). Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 208 / 238
Instructions MIPS Une instruction MIPS est codée en binaire par un mot de 32 bits ; Les 32 bits sont décomposés en champs, chaque partie ayant une signification particulière, codant ainsi soit l instruction, soit un opérande numérique, soit une adresse ; Avoir un nombre fixe d opérande est plus simple à gérer ; 3 types de format d instruction différentes : Instruction de type R (registre) ; Instruction de type I (transfert) ; 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 décomposés de la manière suivante : op rs rt rd decval fonction 6 bits 5 bits 5 bits 5 bits 5bits 6bits op : code opération correspondant à l instruction rs : premier registre opérateur source rt : deuxième registre opérateur source rd : registre opération destination (reçoit le résultat de l opération) decval : valeur du décalage fonction : variante de l opération décrite 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 décomposés de la manière suivante : op rs rt adresse 6 bits 5 bits 5 bits 16 bits op : code opération correspondant à l instruction rs : premier registre opérateur source rt : deuxième registre opérateur source adresse : adresse mémoire 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 décomposés de la manière suivante : op adresse 6 bits 26 bits op : code opération correspondant à l instruction adresse : adresse mémoire Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 212 / 238
Exemples d instructions MIPS Exemple d instruction 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 d instructions : arithmétiques type instruction commentaire add Rd,Rs,Rt addition Rd Rs+Rt addu Rd,Rs,Rt addition - sans déb. Rd Rs+Rt addi Rd,Rs,Imm addition d un immédiat Rd Rs+Imm addiu Rd,Rs,Imm addition - sans déb. Rd Rs+Imm sub Rd,Rs,Rt soustraction Rd Rs-Rt mult Rs,Rt multiplication [hi,lo] Rs Rt multu Rs,Rt multiplication non signée [hi,lo] Rs Rt mul Rd,Rs1,Rs2 multiplication - sans déb. Rd Rs1 Rs2 arithmétiquesdiv Rs,Rt division lo Rs Rt ; hi Rs mod Rt div Rd,Rs1,Rs2 division Rd Rs1 Rs2 divu Rd,Rs1,Rs2 division non signée (sans déb.) Rd Rs1 Rs2 rem Rd,Rs1,Rs2 reste de la division Rd Rs1 Rs2 si Rs1 ou Rs2 est négatif abs Rd,Rs,Rt valeur absolue neg Rd,Rs opposé d une valeur Rd Rs rol Rd,Rs1,Rs2 rotation vers la gauche ror Rd,Rs1,Rs2 rotation vers la droite Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 214 / 238
Type d instructions : logiques type instruction commentaire and Rd,Rs,Rt et logique Rd Rs Rt andi Rd,Rs,Imm et logique immédiat Rd Rs Imm or Rd,Rs,Rt ou logique Rd Rs Rt ori Rd,Rs,Rt ou logique immédiat Rd Rs Imm nor Rd,Rs,Rt nor logique le non ou Rd Rs Imm logiques xor Rd,Rs,Rt xor logique Rd Rs Rt xori Rd,Rs,Imm xor logique immédiat Rd Rs Imm not Rd,Rs non logique Rd Rs ; négation bit à bit sll Rd,Rs,Sa décalage logique à gauche sllv Rd,Rt,Rs décalage logique à gauche rang du décalage défini par Rs srl Rd,Rs,Sa décalage logique à droite srlv Rd,Rt,Rs décalage logique à droite rang du décalage défini par Rs sra Rd,Rs,Sa décalage arithmétique à droite srav Rd,Rt,Rs décalage arithmétique à droite rang du décalage défini par Rs Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 215 / 238
Type d instructions : chargement et rangement mémoire type instruction commentaire lb Rt,@ chargement d octet Rt M[@] chargement et rangement lw Rt,@ chargement d un mot Rt (M[@],M[@+1]) ld Rt,@ chargement d un mot double (Rt,Rt+1) lwl Rt,@ chargt de la partie gauche (M[@],M[@+1],M[@+2], d un mot lwt Rt,@ chargt de la partie droite d un mot li Rd,Imm chargement d un immédiat Rd Imm lui Rt,Imm chargment d un immédiat Rt Imm 2 1 6 dans l octet de poids fort la Rt,@ chargement d une adresse Rt @ (utilisée avec un label) sb Rt,@ rangement d octet M[@] Rt sw Rt,@ rangement d un mot (M[@],M[@+1]) Rt sd Rt,@ rangement d un mot double (M[@],M[@+1],M[@+2],M[ (Rt,Rt+1) swl Rt,@ swt Rt,@ rangt de la partie gauche d un mot rangt de la partie droite d un mot Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 216 / 238
Type d instructions : transfert de données type instruction commentaire transfert move Rd,Rs transfert Rd Rs de données mfhi Rd transfert depuis hi Rd hi mflo Rd transfert depuis lo Rd lo mfc1.d Rd,Fs Transfert d un 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 d instructions : comparaison type instruction commentaire seq Rd,Rs1,Rs2 positionner si égal Rd=Rs1==Rs2?1:0; sne Rd,Rs1,Rs2 positionner si différent Rd=Rs1!=Rs2?1:0; sgt Rd,Rs1,Rs2 positionner si supérieur Rd=Rs1>=Rs2?1:0; comparaison sge Rd,Rs1,Rs2 positionner si supérieur ou égal Rd=Rs1>=Rs2?1:0; slt Rd,Rs1,Rs2 positionner si inférieur Rd=Rs1<=Rs2?1:0; sle Rd,Rs1,Rs2 positionner si inférieur ou égal Rd=Rs1<=Rs2?1:0; slti Rd,Rs,Imm positionner si inférieur à l immédiat Rd=Rs<=Imm?1:0; Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 218 / 238
Type d instructions : branchement conditionnel et saut type instruction commentaire branchement conditionnel et saut beq Rs,Rt,label branchement si égal if(rs==rt) goto label bne Rs,Rt,label branchement si différent if(rs!=rt) goto label bgt Rs,Rt,label branchement si supérieur if(rs>rt) goto label bge Rs,Rt,label branchement si supérieur ou égal if(rs>=rt) goto label blt Rs,Rt,label branchement si inférieur if(rs<rt) goto label ble Rs,Rt,label branchement si inférieur ou égal if(rs<=rt) goto label j label saut saut inconditionnel jal label saut avec lien saut incond. avec $31 @retour jr Rs saut par registre saut inconditionnel à l adresse stockée dans Rs Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 219 / 238
Type d instructions : exception et interruption type instruction commentaire exception et interruption rfe retour d exception restitue le registre État syscall appel système le registre $v0 contient le numéro de l appel système nop aucune opération ne rien faire! Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 220 / 238
Type d instructions : virgule flottante (1/2) instructions flottantes 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 Rd Rs+Rt add.d Fd,Fs,Ft addition flottante double Rd Rs+Rt bc1t label branchement si drapeau flottant vrai branchement conditionnel à l adresse du label bc1f label branchement si drapeau flottant faux branchement conditionnel à l adresse du label c.eq.s Fs,Ft test si égalité simple drapeau flottant à 1 si Fs==Ft c.eq.d Fs,Ft test si égalité double drapeau flottant à 1 si Fs==Ft c.lt.s Fs,Ft test si inférieur simple drapeau flottant à 1 si Fs<Ft c.le.s Fs,Ft test si inférieur ou égal simple drapeau flottant à 1 si Fs<=Ft c.lt.d Fs,Ft test si inférieur double drapeau flottant à 1 si Fs<Ft c.le.d Fs,Ft test si inférieur ou égal double drapeau flottant à 1 si Fs<=Ft Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 221 / 238
Type d instructions : virgule flottante (2/2) instructions flottantes 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 Fd Fs Ft mul.d Fd,Fs,Ft multiplication flottante double Fd Fs Ft div.s Fd,Fs,Ft division flottante simple Fd Fs/Ft div.d Fd,Fs,Ft division flottante double Fd Fs/Ft neg.s Fd,Fs,Ft opposé d un nombre simple flottant Fd - Fs neg.d Fd,Fs,Ft opposé d un nombre simple flottant Fd - Fs l.s Fd,@ chargement flottant simple précision Fd M[@] l.d Fd,@ chargement flottant double précision Fd M[@] mov.s Fd,Fs transfert d un nombre flottant simple précision Fd Fs mov.d Fd,Fs transfert d un nombre flottant Fd Fs double précision Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 222 / 238
Exemple de branchement s mod Rt 1 ou Rs2 épend de Les instructions de test s appelle, en langage conditionnels : beq, bne, bgt, bge, blt, ble exercice : coder le programme suivant en la if i/=j then f :=f+h ; end if f :=f-i ; beq $19,$20,L1 #aller en L1 si i=j add $16,$16,$18 #f :=f+h L1 : sub $16,$16,$19 39/112 Christophe Fiorio, EPU Montpellier 2008-2009 Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 223 / 238
Sous-programmes MIPS ne fournit pas d instruction permettant de définir des sous-programmes ou des macros. On doit utiliser des sauts/branchements qui modifient le CO : jal saute à une étiquette et garde un lien sur le lieu d exécution dans le registre $31 ; j saute sans sauvegarder l adresse de retour ; jr saute à une adresse stockée dans un registre. Lors de l appel de sous-programmes : On utilise les registres 4 à 7 pour le passage de paramètres ; $t0-$t9 sont sauvés par l appelant ; $s0-$s7 sont sauvés par l appelé. Clement Jonquet (Polytech Montpellier) Architecture des ordinateurs IG3 2010-2011 224 / 238
Appels de sous-programmes imbriqués Utilisation d une pile (LIFO) pour le passage de paramètre et la sauvegarde de l adresse de retour. On utilise le registre $29 comme sommet de pile (registre SP) ; Il n y a pas d instruction PUSH et POP ; Équivalent de PUSH et POP en MIPS push : addi $29,$29,4 # sommet de pile ajusté sw $31,0($29) # sauvegarde de l adresse de retour jal procedure # saut à la procédure pop : lw $31,0($29) # restauration de $31 subi $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 opérandes 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