Vous êtes sur la page 1sur 30

Plan du cours

Histoire de lordinateur

Presentation generale

Representation interne des informations

Circuits logiques

Memoires

Unite centrale de traitement

Assembleur

Introduction au langage MIPS

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, JeanMarc 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 lassembleur des processeurs MIPS (jeux


dinstructions : 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 ?


Code ass. MIPS

Compilateur

Non Utilisation dune machine virtuelle : un programme qui simule de


mani`ere logicielle le fonctionnement
dune machine reelle.

prog. en langage
machine MIPS

Interpreteur

code machine local


+ excution

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

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
add
sub

$t0,$t1,$t2
$t3,$t4,$t5
$v0,$t0,$t3

Clement Jonquet (Polytech Montpellier)

# $t0 := $t1+$t2
# $t3 := $t4+$t5
# $v0 := $t0-$t3

Architecture des ordinateurs

IG3 2010-2011

206 / 238

Registres MIPS
Il existe 32 registres de 32 bits numerotes $0, . . . , $31
Nom
Numero Description
$zero
0
Constante 0
$at
1
Reserve `a lassembleur

Evaluation
dune expression et resultats dune
$v0,$v1
2-3
fonction
$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., syst`eme
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

Acc`es memoire MIPS


Il existe des instructions de
transfert vers/de la memoire
centrale (e.g., lw et sw) ;
La memoire est vue comme un
tableau o`
u ladresse serait
lindice du tableau ;
Mot memoire de 32 bits ;
Memoire adressable de 232
octets (4Go) 235 bits 230
(=1073741824) mots de 32
bits ;
Adresse sur 1 octet Les mots memoires sont adresses par des
multiples 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 une
signification particuli`ere, codant ainsi soit linstruction, soit un
operande numerique, soit une adresse ;
Avoir un nombre fixe doperande est plus simple `a gerer ;
3 types de format dinstruction differentes :
I
I
I

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 decomposes de la mani`ere suivante :
op
6 bits

rs
5 bits

rt
5 bits

rd
5 bits

decval
5bits

fonction
6bits

op : code operation correspondant `a linstruction


rs : premier registre operateur source
rt : deuxi`eme 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 mani`ere suivante :
op
6 bits

rs
5 bits

rt
5 bits

adresse
16 bits

op : code operation correspondant `a linstruction


rs : premier registre operateur source
rt : deuxi`eme 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 mani`ere suivante :
op
6 bits

adresse
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
add

17

18

32

$8,$17,$18 en MIPS

Clement Jonquet (Polytech Montpellier)

Architecture des ordinateurs

IG3 2010-2011

213 / 238

Type dinstructions : arithmetiques


type

instruction
add Rd,Rs,Rt
addu Rd,Rs,Rt
addi Rd,Rs,Imm
addiu Rd,Rs,Imm
sub Rd,Rs,Rt
mult Rs,Rt
multu Rs,Rt
mul Rd,Rs1,Rs2
arithm
etiquesdiv Rs,Rt

addition
addition - sans d
eb.
addition dun imm
ediat
addition - sans d
eb.
soustraction
multiplication
multiplication non sign
ee
multiplication - sans d
eb.
division

div Rd,Rs1,Rs2
divu Rd,Rs1,Rs2
rem Rd,Rs1,Rs2

division
division non sign
ee (sans d
eb.)
reste de la division

abs
neg
rol
ror

valeur absolue
oppos
e dune valeur
rotation vers la gauche
rotation vers la droite

Rd,Rs,Rt
Rd,Rs
Rd,Rs1,Rs2
Rd,Rs1,Rs2

Clement Jonquet (Polytech Montpellier)

Architecture des ordinateurs

commentaire
RdRs+Rt
RdRs+Rt
RdRs+Imm
RdRs+Imm
RdRs-Rt
[hi,lo]RsRt
[hi,lo]RsRt
RdRs1Rs2
loRsRt ;
hiRs mod Rt
RdRs1Rs2
RdRs1Rs2
RdRs1Rs2 si
Rs1 ou Rs2 est n
egatif
Rd Rs

IG3 2010-2011

214 / 238

Type dinstructions : logiques


type

logiques

instruction
and Rd,Rs,Rt
andi Rd,Rs,Imm
or Rd,Rs,Rt
ori Rd,Rs,Rt
nor Rd,Rs,Rt

et logique
et logique imm
ediat
ou logique
ou logique imm
ediat
nor logique

xor Rd,Rs,Rt
xori Rd,Rs,Imm
not Rd,Rs

xor logique
xor logique imm
ediat
non logique

sll Rd,Rs,Sa
sllv Rd,Rt,Rs

d
ecalage logique `
a gauche
d
ecalage logique `
a gauche

srl Rd,Rs,Sa
srlv Rd,Rt,Rs

d
ecalage logique `
a droite
d
ecalage logique `
a droite

sra Rd,Rs,Sa
srav Rd,Rt,Rs

d
ecalage arithm
etique `
a droite
d
ecalage arithm
etique `
a droite

Clement Jonquet (Polytech Montpellier)

Architecture des ordinateurs

commentaire
RdRsRt
RdRsImm
RdRsRt
RdRsImm
le non ou
RdRs Imm
RdRsRt
RdRsImm
RdRs ; n
egation
bit `
a bit
rang du d
ecalage
d
efini par Rs
rang du d
ecalage
d
efini par Rs
rang du d
ecalage
d
efini par Rs

IG3 2010-2011

215 / 238

Type dinstructions : chargement et rangement memoire


type

instruction
lb Rt,@

chargement
et rangement

commentaire

chargement doctet

RtM[@]

lw Rt,@
ld Rt,@

chargement dun mot


chargement dun mot double

Rt(M[@],M[@+1])
(Rt,Rt+1)
(M[@],M[@+1],M[@+2],

lwl Rt,@

la Rt,@

chargt de la partie gauche


dun mot
chargt de la partie droite dun
mot
chargement dun immediat
chargment dun immediat
dans loctet de poids fort
chargement dune adresse

sb Rt,@
sw Rt,@
sd Rt,@

rangement doctet
rangement dun mot
rangement dun mot double

swl Rt,@

rangt de la partie gauche dun


mot
rangt de la partie droite dun
Architecture des ordinateurs
mot

lwt Rt,@
li Rd,Imm
lui Rt,Imm

swt Rt,@
Clement Jonquet (Polytech Montpellier)

RdImm
RtImm21 6

Rt@
(utilisee
avec un label)
M[@]Rt
(M[@],M[@+1])Rt
(M[@],M[@+1],M[@+2],M[
(Rt,Rt+1)

IG3 2010-2011

216 / 238

Type dinstructions : transfert de donnees

type
transfert
de donn
ees

instruction
move Rd,Rs
mfhi Rd
mflo Rd
mfc1.d Rd,Fs

Clement Jonquet (Polytech Montpellier)

transfert
transfert depuis hi
transfert depuis lo
Transfert dun mot double depuis le
coprocesseur 1

Architecture des ordinateurs

commentaire
RdRs
Rdhi
Rdlo
[Rd,Rd+1][Fs,Fs+1]

IG3 2010-2011

217 / 238

Type dinstructions : comparaison

type

instruction
seq Rd,Rs1,Rs2
sne Rd,Rs1,Rs2
sgt Rd,Rs1,Rs2
comparaison sge Rd,Rs1,Rs2
slt Rd,Rs1,Rs2
sle Rd,Rs1,Rs2
slti Rd,Rs,Imm

Clement Jonquet (Polytech Montpellier)

positionner
positionner
positionner
positionner
positionner
positionner
positionner

si
si
si
si
si
si
si

egal
diff
erent
sup
erieur
sup
erieur ou
egal
inf
erieur
inf
erieur ou
egal
inf
erieur `
a limm
ediat

Architecture des ordinateurs

commentaire
Rd=Rs1==Rs2?1:0;
Rd=Rs1!=Rs2?1:0;
Rd=Rs1>=Rs2?1:0;
Rd=Rs1>=Rs2?1:0;
Rd=Rs1<=Rs2?1:0;
Rd=Rs1<=Rs2?1:0;
Rd=Rs<=Imm?1:0;

IG3 2010-2011

218 / 238

Type dinstructions : branchement conditionnel et saut


type

instruction
beq Rs,Rt,label

branchement
conditionnel
bne Rs,Rt,label
et saut

branchement si
egal

branchement si diff
erent

bgt Rs,Rt,label

branchement si sup
erieur

bge Rs,Rt,label

branchement si sup
erieur ou
egal

blt Rs,Rt,label

branchement si inf
erieur

ble Rs,Rt,label

branchement si inf
erieur ou
egal

j label
jal label

saut
saut avec lien

jr Rs

saut par registre

Clement Jonquet (Polytech Montpellier)

Architecture des ordinateurs

commentaire
if(Rs==Rt) goto
label
if(Rs!=Rt) goto
label
if(Rs>Rt) goto
label
if(Rs>=Rt) goto
label
if(Rs<Rt) goto
label
if(Rs<=Rt) goto
label
saut inconditionnel
saut incond. avec
$31@retour
saut inconditionnel
`
a ladresse stock
ee
dans Rs

IG3 2010-2011

219 / 238

Type dinstructions : exception et interruption

type
instruction
exception
rfe
et
interruption
syscall

nop

Clement Jonquet (Polytech Montpellier)

retour dexception

appel syst`
eme

aucune op
eration

Architecture des ordinateurs

commentaire
restitue le registre

Etat
le
registre
$v0
contient le num
ero
de lappel syst`
eme
ne rien faire !

IG3 2010-2011

220 / 238

Type dinstructions : virgule flottante (1/2)


valeur absolue flottante simple

Fd|Fs|

abs.d Fd,Fs
instructions add.s Fd,Fs,Ft
flottantes
add.d Fd,Fs,Ft
bc1t label

valeur absolue flottante double


addition flottante simple
addition flottante double
branchement si drapeau flottant vrai

bc1f

branchement si drapeau flottant faux

Fd|Fs|
RdRs+Rt
RdRs+Rt
branchement conditionnel `
a ladresse
du label
branchement conditionnel `
a ladresse
du label
drapeau flottant `
a1
si Fs==Ft
drapeau flottant `
a1
si Fs==Ft
drapeau flottant `
a1
si Fs<Ft
drapeau flottant `
a1
si Fs<=Ft
drapeau flottant `
a1
si Fs<Ft
drapeau flottant `
a1
si Fs<=Ft

abs.s Fd,Fs

label

c.eq.s Fs,Ft

test si
egalit
e simple

c.eq.d Fs,Ft

test si
egalit
e double

c.lt.s Fs,Ft

test si inf
erieur simple

c.le.s Fs,Ft

test si inf
erieur ou
egal simple

c.lt.d Fs,Ft

test si inf
erieur double

c.le.d Fs,Ft

test si inf
erieur ou
egal double

Clement Jonquet (Polytech Montpellier)

Architecture des ordinateurs

IG3 2010-2011

221 / 238

Type dinstructions : virgule flottante (2/2)


cvt.d.s Fd,Fs

conversion simple en double

cvt.s.d Fd,Fs
instructions
flottantes
cvt.s.w Fd,Fs

conversion double en simple

cvt.d.w Fd,Fs

conversion entier en double

cvt.w.s Fd,Fs

conversion simple en entier

cvt.w.d Fd,Fs

conversion double en entier

mul.s
mul.d
div.s
div.d
neg.s
neg.d
l.s
l.d
mov.s

Fd,Fs,Ft
Fd,Fs,Ft
Fd,Fs,Ft
Fd,Fs,Ft
Fd,Fs,Ft
Fd,Fs,Ft
Fd,@
Fd,@
Fd,Fs

mov.d

Fd,Fs

multiplication flottante simple


multiplication flottante double
division flottante simple
division flottante double
oppos
e dun nombre simple flottant
oppos
e dun nombre simple flottant
chargement flottant simple pr
ecision
chargement flottant double pr
ecision
transfert dun nombre flottant simple
pr
ecision
transfert dun nombre flottant
double pr
ecision

Clement Jonquet (Polytech Montpellier)

conversion entier en simple

Architecture des ordinateurs

simple Fs;
Fd(double)Fs
double Fs;
Fd(simple)Fs
int Fs;
Fd(simple)Fs
int Fs;
Fd(double)Fs
simple Fs;
Fd(int)Fs
double Fs;
Fd:=(int)Fs
FdFsFt
FdFsFt
FdFs/Ft
FdFs/Ft
Fd- Fs
Fd- Fs
FdM[@]
FdM[@]
FdFs
FdFs
IG3 2010-2011

222 / 238

Exemple de branchement
Les instructions de test sappelle, 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 ;

Rs mod Rt

s1 ou Rs2
dpend de

L1 :

beq
add
sub

$19,$20,L1
$16,$16,$18
$16,$16,$19

39/112
Clement Jonquet (Polytech Montpellier)

#aller en L1 si i=j
#f :=f+h

Christophe Fiorio, EPU Montpellier


Architecture des ordinateurs

2008-2009
IG3 2010-2011

223 / 238

Sous-programmes
MIPS ne fournit pas dinstruction permettant de definir des
sous-programmes ou des macros. On doit utiliser des sauts/branchements
qui modifient le CO :
jal saute `a une etiquette et garde un lien sur le lieu dexecution dans
le 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 param`etres ;
$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 param`etre et la sauvegarde
de 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 :

pop :

addi
sw
jal
lw
subi

$29,$29,4
$31,0($29)
procedure
$31,0($29)
$29,$29,4

Clement Jonquet (Polytech Montpellier)

#
#
#
#
#

sommet de pile ajuste


sauvegarde de ladresse de retour
saut `a la procedure
restauration de $31
ajustement du sommet de pile

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