Interface Matériel Logiciel: Introduction Aux Systèmes Informatiques
Interface Matériel Logiciel: Introduction Aux Systèmes Informatiques
Interface Matériel Logiciel: Introduction Aux Systèmes Informatiques
Léon Mugwaneza
Polytech’ Marseille/Dépt. Informatique
(bureau A118)
leon.mugwaneza@univ-amu.fr
I. Le Langage Machine
Exemple : le MIPS R2000 (Architecture MIPS-I)
MIPS R2000
• MIPS : Microprocessor without Interlocked Pipeline Stages
– Issu d’un projet de l’université de Stanford
! Architecture MIPS-I (1985)
• Machine 32 bits
– registres de 32 bits (mots de 32 bits)
– little endian ou big endian par configuration
– les instructions sont codées sur un mot et s’exécutent (en moyenne)
en 1 cycle ==> machine RISC
• Architecture load/store
– machine à registres adressables où seules 2 «instructions» (load et
store) accèdent à la mémoire
» le mot du MIPS est suffisamment large (et le codage suffisamment
«bien fait») pour pouvoir spécifier 3 registres dans certaines
instructions
2
Les registres (1/2)
• 32 registres généraux, mais convention de programmation
– $0 ($zero) vaut toujours 0 (donc 31 registres généraux !)
– $1 ($at - assembler temporary) est réservé à l’assembleur
– $2 ($v0) et $3 ($v1) sont destinés à contenir les résultats des fonctions
– $4 à $7 ($a0 à $a3) sont destinés au passage des paramètres
– $8 à $15, $24 et $25 ($t0 à $t9) : temporaires non sauvegardés par les appels de
procédures
– $16 à $23, ($s0 à $s7) : temporaires sauvegardés
– $26 et $27 ($k0 et $k1) sont réservés au noyau du SE (Kernel)
– $28 ($gp) : pointeur sur les données globales (Global Pointer)
– $29 ($sp) : pointeur de pile (Stack Pointer)
– $30 ($fp) : pointeur sur l’environnement d’une fonction (Frame Pointer)
– $31 ($ra) est utilisé à l’appel d’une fonction pour sauvegarder l’adresse de
retour (Return Address)
4
Formats des instructions
31 26 25 21 20 16 15 11 10 6 5 0
31 26 25 21 20 16 15 0
– I op (6) rs (5) rt (5) Immediate (16)
31 26 25 0
– J Op (6) target address (26 bits)
5
s
nu
Bo
Format R (1/2)
31 26 25 21 20 16 15 11 10 6 5 0
op (6) rs(5) rt(5) rd(5) shamt(5) funct(6)
– op est l’opcode : est une partie du code de l’instruction (toutes les instructions
CPU au format R ont op = 0 - pas vrai pour les instructions des coprocesseurs)
– …
6
s
nu
Bo
Format R (2/2)
31 26 25 21 20 16 15 11 10 6 5 0
op (6) rs(5) rt(5) rd(5) shamt(5) funct(6)
7
Format R - exemple (1/2)
Ab
RG us d
U t [8 ] ¬ e n o
i
d ’ lis é R G t a t io
am à c [ n
b ig h a 9 ] + ( n o
u ït q u e R G r m
é f o i [ 1 0 a le m
add $8, $9, $10 # $8 ¬ $9 + $10 s q ]) en
u’ t:
il n
’y
– op = 0 (lu dans la table des codes des instructions) ap
as
– funct = 32 (lu dans table des codes des instructions)
– rs = 9 (1er opérande source)
– rt = 10 (2ème opérande source)
– rd = 8 (destination)
– shamt = 0 (ce n’est pas une instruction de décalage)
8
Format R - exemple (2/2)
add $8, $9, $10 # $8 ¬ $9 + $10
• Langage Machine :
- en binaire : 00000001001010100100000000100000
- en hexadécimal : 012A4020
- en décimal : 19 546 144
9
s
nu
Bo
Format I
31 26 25 21 20 16 15 0
10
Format I - exemple (1/2)
11
Format I - exemple (2/2)
addi $21, $22, -50 # $21 ¬ $22 + (-50)
• Langage Machine
- en hexadécimal : 22D5FFCE
- en décimal : 584 449 998
!Problème : Et les constantes qui ne tiennent
pas sur 16 bits?
" Voir instructions lui et ori plus loin
12
Format J (1/2)
• Utilisé dans les instructions j et jal qui modifient PC en lui
affectant une adresse absolue (PC ¬ adresse cible)
31 26 25 0
14
Modes d’adressage (1/4)
• Le MIPS a 5 modes d’adressage
op rs rt rd
1. Direct registre (register)
Registre rs
15
Modes d’adressage (2/4)
op rs rt immediate
Mémoire
Registre rs +
16
Modes d’adressage (3/4)
4. Relatif PC (PC-relative)
op rs rt immediate
Mémoire
PC +
le déplacement est en
nombre de mots
17
Modes d’adressage (4/4)
5. Pseudo direct Mémoire
op target address
Mémoire
PC &
8 bi ts
Su r 2
Ex : j 1000 # PC ¬ PC[31..28] & (1000 * 4)
• instructions de transfert
• instructions arithmétiques et logiques
• instructions de comparaison et branchement
• instructions d’appel de procédure
• instructions du coprocesseur flottants
• instructions d’appel système
• l’instruction nop (no operation)
19
Instructions de transfert (1/2)
• Transfert reg. généraux - mémoire : Load et Store
– lw, sw : Load Word, Store Word
31 26 25 21 20 16 15 0
43 29 31 -4 = 0xFFFC
22
s
nu
Load et store «non alignées»(1/5)
Bo
23
s Load et store «non alignées» (2/5)
nu
Bo
A B C D $24
avant
8 9 10 11
@4 4 5 6 7 $24
1 2 3 D après
@0 0 1 2 3
A B C D $24
avant
8 9 10 11
lwr $24, 4($0)
4 5 6 7 $24
A B C 4 après
0 1 2 3
Mémoire big-endian
avant A B C D $24
8 9 10 11
@4 4 5 6 7
@0 0 1 2 3
@0 0 1 A B
26
Load et store «non alignées» (5/5)
s
nu
Bo
avant A B C D $24
8 9 10 11
@4 4 5 6 7
@0 0 1 2 3
@0 0 1 2 3
28
Autres inst. de transfert (2/2)
29
Inst. arithmétiques (1/5)
30
Inst. arithmétiques (2/5)
31
Inst. arithmétiques (3/5)
sub Rd, Rs, Rt # substract
subu Rd, Rs, Rt # substract unsigned
32
Inst. arithmétiques (4/5)
mult Rs, Rt
multu Rs, Rt # multiply unsigned
div Rs, Rt
divu Rs, Rt # divide unsigned (opérandes non signées)
ex : div $2, $3 # Lo ¬ quotient ($2 / $3); High ¬ reste ($2 / $3)
31 26 25 21 20 16 15 11 10 6 5 0
0 2 3 0 0 0x1A=26
34
Instructions logiques
and Rd, Rs, Rt
andi Rs, Rt, immediate # and immediate
ex : and $2, $3, $4 # $2 ¬ $3 & $4 (Et bit à bit - Et logique sur vecteur)
31 26 25 21 20 16 15 11 10 6 5 0
0 3 4 2 0 0x24 = 36
octets
mémoire adressée par
d’instructions,
Déplacement en nb
beq Rs, Rt, offset # Branch on EQual
bne Rs, Rt, offset # Branch on Not Equal
Ex : beq $2, $3, -20 # si $2=$3 alors PC ¬ PC + (-20)*4
Où pointe PC ?
– Sur l’instruction en cours d’interprétation ?
– Sur l’instruction suivante ?
$ Pour le MIPS : instruction suivante
$ Pour le simulateur que nous utiliserons : instruction en cours
• Comment réaliser un saut relatif inconditionnel?
Prendre Rs = Rt (ex : Beq $0, $0, offset)
• Autres instructions de saut relatif :
bgtz (>0), bgez (>= 0), bltz (< 0), blez (<=0)
(ici z signifie zéro et non numéro de coprocesseur comme dans mfcz, mtcz, ...)
38
Instructions de branchement (2/2)
j target # Jump
jr Rs # Jump Register (PC ¬ Rs)
39
Instructions de comparaison
• Comparaison signée
slt Rd, Rs, Rt # Set on Less Than
slti Rt, Rs, immediate # slt Immediate
Ex : slt $2, $3, $4 # si $3 < $4 alors $2 ¬ 1 sinon $2 ¬ 0
41
Inst. d’appel de procédure (1/2)
• Branchements vs. appels de procédure
BR appel
BR Retour à
l’appelant
42
Inst. d’appel de procédure (2/2)
• Appel avec saut absolu inconditionnel
jal target # Jump And Link ($ra ¬ PC ; PC ¬ target)
jalr Rs # JAL Register ($ra ¬ PC ; PC ¬ Rs)
jalr Rd, Rs # Rd ¬ PC ; PC ¬ Rs
43
Inst. coprocesseur flottants (1/2)
• Instructions de « Format R »
31 26 25 21 20 16 15 11 10 6 5 0
cop1 (6) fmt(5) ft(5) fs(5) fd(5) funct(6)
Architecture MIPS32
– valeur absolue
– comparaison (positionnent un code condition)
– test du code condition et branchement
– multiplication, division
– conversion
– arrondis (floor, ceil, round, truncate, …)
– ...
45
Instructions relatives aux exceptions
(cf 2ème partie du cours)
! Architecture MIPS-I
• Appel système «sans paramètre dans l’inst.» : syscall
31 26 25 21 20 16 15 11 10 6 5 0
0 0 0 0 0 0xC
• Pipelining ?
– Technique d’implantation matériel du processeur (du chemin de
données et du chemin de contrôle)
– Cf Cours d’Architecture
47
Fin du chapitre I
48