Architecture des ordinateurs

publicité
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, 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 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
Compilateur
Non ⇒ Utilisation d’une machine virtuelle : un programme qui simule de
manière logicielle le fonctionnement
d’une machine réelle.
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 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 opérations arithmétiques 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 numérotés $0, . . . , $31
Nom
Numéro Description
$zero
0
Constante 0
$at
1
Réservé à l’assembleur
Évaluation d’une expression et résultats d’une
$v0,$v1
2-3
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 232
octets (4Go) ⇒ 235 bits ⇒ 230
(=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 :
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 décomposés de la manière suivante :
op
6 bits
rs
5 bits
rt
5 bits
rd
5 bits
decval
5bits
fonction
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
6 bits
rs
5 bits
rt
5 bits
adresse
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
6 bits
adresse
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
⇒ add
17
18
8
0
32
$8,$17,$18 en MIPS
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
213 / 238
Type d’instructions : arithmétiques
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étiquesdiv Rs,Rt
addition
addition - sans déb.
addition d’un immédiat
addition - sans déb.
soustraction
multiplication
multiplication non signée
multiplication - sans déb.
division
div Rd,Rs1,Rs2
divu Rd,Rs1,Rs2
rem Rd,Rs1,Rs2
division
division non signée (sans déb.)
reste de la division
abs
neg
rol
ror
valeur absolue
opposé d’une 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
Rd←Rs+Rt
Rd←Rs+Rt
Rd←Rs+Imm
Rd←Rs+Imm
Rd←Rs-Rt
[hi,lo]←Rs×Rt
[hi,lo]←Rs×Rt
Rd←Rs1×Rs2
lo←Rs÷Rt ;
hi←Rs mod Rt
Rd←Rs1÷Rs2
Rd←Rs1÷Rs2
Rd←Rs1÷Rs2 – si
Rs1 ou Rs2 est négatif
Rd←– Rs
IG3 2010-2011
214 / 238
Type d’instructions : 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édiat
ou logique
ou logique immédiat
nor logique
xor Rd,Rs,Rt
xori Rd,Rs,Imm
not Rd,Rs
xor logique
xor logique immédiat
non logique
sll Rd,Rs,Sa
sllv Rd,Rt,Rs
décalage logique à gauche
décalage logique à gauche
srl Rd,Rs,Sa
srlv Rd,Rt,Rs
décalage logique à droite
décalage logique à droite
sra Rd,Rs,Sa
srav Rd,Rt,Rs
décalage arithmétique à droite
décalage arithmétique à droite
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
commentaire
Rd←Rs∧Rt
Rd←Rs∧Imm
Rd←Rs∨Rt
Rd←Rs∨Imm
le non ou →
Rd←Rs ∨ Imm
Rd←Rs⊕Rt
Rd←Rs⊕Imm
Rd←Rs ; négation
bit à bit
rang du décalage
défini par Rs
rang du décalage
défini par Rs
rang du décalage
défini par Rs
IG3 2010-2011
215 / 238
Type d’instructions : chargement et rangement mémoire
type
instruction
lb Rt,@
chargement
et rangement
commentaire
chargement d’octet
Rt←M[@]
lw Rt,@
ld Rt,@
chargement d’un mot
chargement d’un mot double
Rt←(M[@],M[@+1])
(Rt,Rt+1)
←(M[@],M[@+1],M[@+2],
lwl Rt,@
la Rt,@
chargt de la partie gauche
d’un mot
chargt de la partie droite d’un
mot
chargement d’un immédiat
chargment d’un immédiat
dans l’octet de poids fort
chargement d’une adresse
sb Rt,@
sw Rt,@
sd Rt,@
rangement d’octet
rangement d’un mot
rangement d’un mot double
swl Rt,@
rangt de la partie gauche d’un
mot
rangt de la partie droite d’un
Architecture des ordinateurs
mot
lwt Rt,@
li Rd,Imm
lui Rt,Imm
swt Rt,@
Clement Jonquet (Polytech’ Montpellier)
Rd←Imm
Rt←Imm×21 6
Rt←@
(utilisée
avec un label)
M[@]←Rt
(M[@],M[@+1])←Rt
(M[@],M[@+1],M[@+2],M[
←(Rt,Rt+1)
IG3 2010-2011
216 / 238
Type d’instructions : transfert de données
type
transfert
de données
instruction
move Rd,Rs
mfhi Rd
mflo Rd
mfc1.d Rd,Fs
Clement Jonquet (Polytech’ Montpellier)
transfert
transfert depuis hi
transfert depuis lo
Transfert d’un mot double depuis le
coprocesseur 1
Architecture des ordinateurs
commentaire
Rd←Rs
Rd←hi
Rd←lo
[Rd,Rd+1]←[Fs,Fs+1]
IG3 2010-2011
217 / 238
Type d’instructions : 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
égal
différent
supérieur
supérieur ou égal
inférieur
inférieur ou égal
inférieur à l’immédiat
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 d’instructions : branchement conditionnel et saut
type
instruction
beq Rs,Rt,label
branchement
conditionnel
bne Rs,Rt,label
et saut
branchement si égal
branchement si différent
bgt Rs,Rt,label
branchement si supérieur
bge Rs,Rt,label
branchement si supérieur ou égal
blt Rs,Rt,label
branchement si inférieur
ble Rs,Rt,label
branchement si inférieur ou égal
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
à l’adresse stockée
dans Rs
IG3 2010-2011
219 / 238
Type d’instructions : exception et interruption
type
instruction
exception
rfe
et
interruption
syscall
nop
Clement Jonquet (Polytech’ Montpellier)
retour d’exception
appel système
aucune opération
Architecture des ordinateurs
commentaire
restitue le registre
État
le
registre
$v0
contient le numéro
de l’appel système
ne rien faire !
IG3 2010-2011
220 / 238
Type d’instructions : 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|
Rd←Rs+Rt
Rd←Rs+Rt
branchement conditionnel à l’adresse
du label
branchement conditionnel à l’adresse
du label
drapeau flottant à 1
si Fs==Ft
drapeau flottant à 1
si Fs==Ft
drapeau flottant à 1
si Fs<Ft
drapeau flottant à 1
si Fs<=Ft
drapeau flottant à 1
si Fs<Ft
drapeau flottant à 1
si Fs<=Ft
abs.s Fd,Fs
label
c.eq.s Fs,Ft
test si égalité simple
c.eq.d Fs,Ft
test si égalité double
c.lt.s Fs,Ft
test si inférieur simple
c.le.s Fs,Ft
test si inférieur ou égal simple
c.lt.d Fs,Ft
test si inférieur double
c.le.d Fs,Ft
test si inférieur ou égal double
Clement Jonquet (Polytech’ Montpellier)
Architecture des ordinateurs
IG3 2010-2011
221 / 238
Type d’instructions : 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é d’un nombre simple flottant
opposé d’un nombre simple flottant
chargement flottant simple précision
chargement flottant double précision
transfert d’un nombre flottant simple
précision
transfert d’un nombre flottant
double précision
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
Fd←Fs×Ft
Fd←Fs×Ft
Fd←Fs/Ft
Fd←Fs/Ft
Fd←- Fs
Fd←- Fs
Fd←M[@]
Fd←M[@]
Fd←Fs
Fd←Fs
IG3 2010-2011
222 / 238
e
Exemple de branchement
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 ;
Rs mod Rt
s1 ou Rs2
dépend 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 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 :
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 ajusté
sauvegarde de l’adresse de retour
saut à la procédure
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 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
Téléchargement