Вы находитесь на странице: 1из 31

Chapitre 2 :MIPS ISA

Organisation dun ordinateur

contrle Mmoire Chemin de donnes Processeur

Entres

Sorties

1
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Architecture densemble dinstructions ISA


Quest ce quon doit spcifier ? Format et codification des instructions Emplacement des arguments rsultats - Mmoire ou autre - Combien darguments explicite

- Quelle argument pouvant tre en mmoire


Type et taille des donnes Oprations Instructions de contrle Saut, conditions, branchements
2
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les tapes du cycle instruction


Lire instruction (Fetch)

Dcoder instruction (Decode)

Lire arguments (Fetch)

Excution (execute)

crire rsultat (Store)

Instruction suivante
3
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Cas de ISA
Cas de ISA, squence A=B+C Machine pile (calculette HP) Accumulateur, 1 seule registre (IBM 701)

Push A
Push B Add Pop C

Load A
Add B Store C

Registre-Mmoire (IBM 360, DEC VAX) Chargement rangement (MIPS, SPARC) Load R1, A Add R1, B Store C, R1 Load R1, A Load R2, B Add R3, R1, R2 Store C, R3
4
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les tapes du cycle instruction


1975 1985 toutes les machines utilisent les registres Les registre sont plus rapide que la mmoire Registre plus facile utiliser pour compilateur (A*B)-(C*D)-(E*F) Registre peuvent contenir des variables Rduction trafic mmoire Densit du code samliore Nouvelles ISA utilisent les registres Pipeline => Registres chargement-rangement

5
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

MIPS ISA
230 octet mmoire

31 * 32 bits R0=0
32 * 32 bits Fregs complmentaire HI, LO, CP R0 R1 R31 CP LO HI
6
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

MIPS ISA
Depuis 1980 toutes les machines utilisent adresses au niveau de loctet (8 bits) Puisque on peut lire un mot de 32 bits comme 4 octets en un seul coup, comment ces octets sont ranger dans le mot ? Big-endian: ladresse de loctet le plus significatif est ladresse du mot
Numro doctet

Motorolla, MIPS, SPARC

Little-endian: ladresse loctet le moins significatif est ladresse du mot


Numro doctet

Intel 8086, VAX, Alpha

Un mot peut tre placer nimporte ou en mmoire? La plupart des instructions de chargement-rangement oprent sur des donnes alignes (son adresse mmoire est multiple de sa taille en octets).
7
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Format des instructions


Variable (multiple dun certain nombre de bits Fixe Hybride Types doprations na pas chang Transfert data : (load, store, move, input, output, push, pop) Arithmtique : entier (binaire, dcimal), Float (add, substract, multiply, divide) Shift left|right, rotate left|right logique not, and or set clear Subroutine linkage call return Interruption trap return MIPS (Taille est fixe : 32 bit)

Graphique word ops


8
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Instructions 8086
Load cond branch compare store add and 22% 20% 16% 12% 8% 6%

sub
Mov reg-reg call

5%
4% 1%

return

1%
96%

Instructions simples domines le code


9
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les oprations-oprandes du matriel


Instructions arithmtiques f = ( g + h ) - (i + j ); Oprations quivalente en MIPS add t0,g,h add t1,i,j sub f,t0,t1 # variable temporaire t0 contient g+h # variable temporaire t1 contient i+j # f reoit t0-t1 , ou (g+h) - (i+j)

Les 32 registres de MIPS seront nots $0.$31

add $8,$17,$18 # registre $8 contient g+h add $9,$19,$20 # registre $9 contient i+j sub $16,$8,$9 #f reoit $8-$9 (c--d (g+h)-(i+j))
Remarque : les registres $8,$9 correspondent aux variables temporaires t0 et t1 de l'exemple prcdent
10
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les oprations-oprandes du matriel

On ne peut stocker qu'une petite quantit de donnes dans les registres, la mmoire d'un ordinateur contient des millions de donnes lmentaires. Et les structures de donnes comme les tableaux sont donc stockes en mmoire

Les oprations arithmtiques ont lieu dans les registres pour cela MIPS dispose d'oprations qui transfrent les donnes entre la mmoire et les registres appeles instructions de transfert de donnes . Pour accder une donne en mmoire l'instruction doit fournir son adresse .

On a deux type d'instructions de transfert de donnes :


Chargement lw : instruction qui dplace un mot de la mmoire vers un registre (LOAD) Rangement sw : instruction qui transfert les donnes d'un registre vers la mmoire (STORE).

11
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les oprations-oprandes du matriel (chargement)


T : un tableau de X lments et que le compilateur ait associ des variables g, h et i aux registres $17,$18 et $19 . Supposons aussi que le tableau dbute l'adresse Tstart. Expression en langage C : g = h + T[i]; Assembleur MIPS : lw $8,Tstart($19) add $17,$18,$8 Processeur Adresse

# le registre temporaire $8 reoit T[i] # g = h+T[i]


104 10 1010 1
12

Mmoire

0
4 8 12
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Les oprations-oprandes du matriel (rangement)


Les adresse des mots sont dcals de 4 dans la mmoire : ($19 devra contenir 4*i). Expression en langage C : T[i] = h + T[i];

Assembleur MIPS :
lw $8,Tsart($19) # le registre temporaire $8 reoit T[i] # le registre $8 reoit h+T[i] # on recopie h+T[i] dans T[i]

add $8,$18,$8 sw $8,Tstart($19)

13
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Arithmtiques Transfert de donnes


Arithmtiques :
add $1, $2, $3
sub $1, $2, $3 addi $1, $2, 100

# $1 = $2 + $3
# $1 = $2 - $3 # $1= $2+100

Transfert de donnes :
lw $1, 100($2) sw $1, 100($2) lui $1, 100 # $1 = Mmoire[$2 + 100] # Mmoire [$2 +100]=$1 # $1= 100*216

14
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Format dune instruction (type R)


Instruction daddition : add $8, $17, $18 # $8 = $17 + $18 Combinaison en nombre dcimaux :
0 17 18 8 0 32

add 32

champ Reprsentation en nombre binaire


000000 10001 6 bits 5 bits 10010 5 bits 01000 5 bits 00000 5 bits 100000 6 bits

sub 34

Instruction type R
31 op 26 rs 21 rt 16 rd 11 decval 6 funct
15
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Format dune instruction (type I)


Instruction de chargement : lw $8, 100($18) # registre temporaire $8 reoit la valeur # existante dans mmoire [$18+100]

Combinaison en nombre dcimaux :


35 19 8 100

lw 35 sw 43 Instruction type I
op 6 bits rs 5 bits rt 5 bits immediate 16 bits

16
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

MIPS compare et branch (dcisions)


Branchement conditionnel : beq reg1,reg2, E1 Aller la squence tiquet par E1 si la valeur contenue dans le reg1 est gale la valeur contenue dans reg2. bne reg1,reg2, E1 Aller la squence tiquet par E1 si la valeur contenue dans le reg1 est non gale la valeur contenue dans reg2. Comparaison : slt $1,$2, $3 slti $1,$2, 100
Chapitre 2 : MIPS ISA

# si $2<$3 alors $1=1 sinon $1=0 # si $2<100 alors $1=1 sinon $1=0
17 Nejib BHA/ENSI/Architecture

MIPS compare et branch (dcisions)


Exemple en C: if (i==j) goto E1; f = g+h

E1: f = f-i;
F,g,h,i,j correspondent aux cinq registres $17 $21

Assembleur MIPS :
beq $20,$21,E1 add $17,$18,$19 E1: sub $17,$17,$20 # aller en E1 si i==j # f = g+h #f = f-i

18
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

MIPS compare et branch (dcisions)


Exemple en C: if (i==j) f = g+h; else f=g-h;

Assembleur MIPS :

bne $20,$21,Else
add $17,$18,$19 j Exit Else : sub $17,$18,$19 Exit :

# aller Else si ij
# f = g+h # aller exit #f = g-h

Nouvelle instruction :
j Exit
19
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Format dune instruction (type J)


Instruction type J
op 6 bits adresse 26 bits

Exemple :

J 2000
2 6 bits 1000 26 bits

Diffrents formats dinstructions MIPS


31 26 21 16 11 6 0

R-type
I-type J-type
Chapitre 2 : MIPS ISA

op
op op

rs
rs

rt
rt

rd

decval immediate

funct

add, sub
ori, lw, sw, beq j, jal
20

Address destination
Nejib BHA/ENSI/Architecture

Exemple
Code en C : switch (k) { Assembleur MIPS : Loop : mult $9,19,$21 lw $8, Tablesaut($9)

case 0: f=i+j; break;


case 1: f=g+h; break; case 2: f=g-h; break;

jr $8
E0 : E1 :

case 3: f=i-j; break;


}

E2 :
E3 : Exit: 4 mots en mmoire partir de table saut contiennent E0,E1,E2,E3 f,g,h,i,j,k $16..$21 $10 4
21

Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Traitement des procdures

Procdure A
Procdure B Procdure C

diteur de liens

0 : procdure A 64 : procdure B 112 procdure C

Les rfrences croises entre les modules Saut de procdure.

Retour linstruction qui suit lappel.


Passage des paramtres Imbrication des procdure
22
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Traitement des procdures au niveau matriel


Instruction jal (saut avec lien)
jal AdresseProcedure Un lien est cre vers le site appelant la procdure. Ce lien est rang dans $31 Adresse de retour Le saut de retour est effectue par linstruction : jr $31 CP: compteur de programme (registre dadresse dinstruction)

$31

Cas plus compliqu lorsque une procdure appelle une autre procdure
Vide les registre $31 dans la mmoire
Chapitre 2 : MIPS ISA

23

Nejib BHA/ENSI/Architecture

Traitement des procdures au niveau matriel


Procdure appelle une autre et
Structure PILE (LIFO) Pointeur vers son sommet indiquant lendroit de lemplacement des registres vider.

$29
Considrons lexemple suivant :
A: Jal B jr $31 B: Jal C jr $31 C:
Chapitre 2 : MIPS ISA

jr $31
24

Nejib BHA/ENSI/Architecture

Appel de procdure
1. Aprs que A est appel B
Mmoire

3. Aprs que B est appel C Mmoire

$31
Adresse retour de B

$31
Adresse retour de C
Adresse retour de B

$29

$29

2. Juste avant que B appelle C

Mmoire

4. Aprs que B est appel C Mmoire

$31
Adresse retour de B Adresse retour de B

$31
Adresse retour de B Adresse retour de B

$29

$29

25
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

Modes dadressage de MIPS


1. Adressage par registre
31 op 26 rs 21 rt 16 rd 11 decval 6 funct 0

registre Oprande est un registre 2. Adressage index


op rs rt adresse

Add $4,$2,$3

registre + lw $1,100($2) Oprande se trouve lemplacement mmoire


26
Chapitre 2 : MIPS ISA

Mmoire

Nejib BHA/ENSI/Architecture

Modes dadressage de MIPS


3. Adressage immdiat
op 6 bits rs 5 bits rt 5 bits immdiat

16 bits

addi $1,100

Oprande constante
4. Adressage relatif CP
op rs rt adresse

CP bne $1,$2,100 +
Mmoire

NB de mots sparent l instruction de branchement de l instruction cible


27
Chapitre 2 : MIPS ISA

Nejib BHA/ENSI/Architecture

MIPS instructions arithmtiques


Instruction add sous add immediate add non sign sous non sign add imm. non sig mul Mul non sign div div non sign Move from Hi Move from Lo Exemple add $1,$2,$3 sub $1,$2,$3 addi $1,$2,100 addu $1,$2,$3 subu $1,$2,$3 addiu $1,$2,100 mult $2,$3 multu$2,$3 div $2,$3 divu $2,$3 mfhi $1 mflo $1 signification $1 = $2 + $3 $1 = $2 $3 $1 = $2 + 100 $1 = $2 + $3 $1 = $2 $3 $1 = $2 + 100 Hi, Lo = $2 x $3 Hi, Lo = $2 x $3 Lo = $2 $3, Hi = $2 mod $3 Lo = $2 $3, Hi = $2 mod $3 $1 = Hi $1 = Lo Commentaire 3 oprandes; exception possible 3 oprandes; exception possible + constante; exception possible 3 oprandes; pas dexception 3 oprandes; pas dexception + constante; pas dexception 64-bit produit sign 64-bit produit non sign Lo = quotient, Hi = reste reste et quotient non sign utils pour avoir une copie de Hi utilis pour avoir une copie de Lo

MIPS instructions logiques


Instruction and or xor nor and immediat or immediat xor immediat shift left logical shift right logical shift right arithm. shift left logical shift right logical shift right arithm. Exemple and $1,$2,$3 or $1,$2,$3 xor $1,$2,$3 nor $1,$2,$3 andi $1,$2,10 ori $1,$2,10 xori $1, $2,10 sll $1,$2,10 srl $1,$2,10 sra $1,$2,10 sllv $1,$2,$3 srlv $1,$2, $3 srav $1,$2, $3 Signification $1 = $2 & $3 $1 = $2 | $3 $1 = $2 ^ $3 $1 = ~($2 |$3) $1 = $2 & 10 $1 = $2 | 10 $1 = ~$2 &~10 $1 = $2 << 10 $1 = $2 >> 10 $1 = $2 >> 10 $1 = $2 << $3 $1 = $2 >> $3 $1 = $2 >> $3 Commentaire 3 reg. oprandes; Logical AND 3 reg. oprandes; Logical OR 3 reg. oprandes; Logical XOR 3 reg. oprandes; Logical NOR Logical AND reg, constante Logical OR reg, constante Logical XOR reg, constante Shift left par constante Shift right par constante Shift right (extention du signe) Shift left par variable Shift right par variable Shift right arith. par variable

MIPS instructions de transfert de donnes


Instruction sw $3, 500($4) sh $3, 502($2) sb $2, 41($3) lw $1, 30($2) lh $1, 40($3) lhu $1, 40($3) lb $1, 40($3) lbu $1, 40($3) lui $1, 40 Comment enreg. Dun mot en mmoire enreg. Dun demi-mot enreg. Dun bit chargement dun mot chargement dun demi mot chargement dun demi-mot non sign chargement dun bit chargement dun bit non sign Load Upper Immediate (16 bits shifted left par 16)
LUI R5 R5 0000 0000

MIPS Comparaison et branchement


Instruction branch on equal branch on not eq. set on less than set less than imm. set less than uns. set l. t. imm. uns. Exemple Signification beq $1,$2,100 Si ($1 == $2) go to CP+4+100 Egale test; CP relative branch bne $1,$2,100 Si ($1!= $2) go to PC+4+100 Non gale test; CP relative slt $1,$2,$3 Si ($2 < $3) $1=1; else $1=0 Compare < 2s comp. slti $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constante; 2s comp. sltu $1,$2,$3 if ($2 < $3) $1=1; else $1=0 Compare<; natural nombres sltiu $1,$2,100 if ($2 < 100) $1=1; else $1=0 Compare < constante; natural nombres j 10000 go to 10000 saut une adresse jr $31 go to $31 retour de procdure jal 10000 $31 = PC + 4; go to 10000 appel de procdure

jump
jump register jump and link

Вам также может понравиться