Jeu d`Instructions - Inria Sophia Antipolis

publicité
Jeu d’Instructions
Introduction (1)
• A et B étant des entiers, on veut
mettre dans C la différence entre A
et B.
• Algorithme:
– Lire A, lire B
– Calculer A-B
– Ecrire le résultat dans C
Charles André - Université Nice-Sophia Antipolis
Représenter/Mémoriser
Vous avez déjà étudié les représentations binaires
1972
Charles André - Université Nice-Sophia Antipolis
Calculer
•
•
•
•
Doigts
Boulier
Calculette
Unité Arithmétique
il manque la notion de programme enregistré
Charles André - Université Nice-Sophia Antipolis
Introduction (2)
• La machine vue par l’utilisateur
(programmeur)
Algorithme
Programme
optimisation
Matériel
Tests
OK / KO
• Langage de haut-niveau + compilateur
• Langage assembleur
Charles André - Université Nice-Sophia Antipolis
Instruction
•
Informations associées à une
instruction :
1.
2.
3.
4.
Opération à effectuer
Opérandes données (entrée)
Opérandes résultats (sortie)
Continuation (instruction suivante)
Problème :
Certaines info implicites ou inexistantes
Charles André - Université Nice-Sophia Antipolis
Cycle Instruction
Accès mémoire
ou E/S
Opérations
internes à
l’UC
Instruction
fetch
Calcul
adresse de l’
instruction
Operand
fetch
décodage
de l’
instruction
instruction
suivante
Calcul
adresse d’
opérande
Operand
store
Opération
sur
données
Calcul
adresse d’
opérande
vecteur ou
chaîne
Charles André - Université Nice-Sophia Antipolis
Classification des J.I
• Où sont les opérandes ?
1. Mémoire
•
•
•
Principale
Virtuelle
Pile
2. UC
•
•
Registres généraux
Accumulateur
3. Dispositif d’E/S
Charles André - Université Nice-Sophia Antipolis
Machine à Pile
// C ← A - B
[1]
[2]
[3]
[4]
A
PUSH
PUSH
SUB
POP
A
B
C
B
PUSH A
PUSH B
v(A)
C
v(B)
v(A)
SUB
POP C
v(A)-v(B)
Charles André - Université Nice-Sophia Antipolis
Machine à Accumulateur
v(A)
Accumulateur
A
[1]
UAL
v(A)-v(B)
Op
B
[1]
[2]
[3]
[2]
LOAD A
SUB
B
STORE C
v(A)-v(B)
C
[3]
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-mémoire
[1]
LOAD
R1,A
[2]
SUB
R1,B
[3]
STORE C,R1
[1]
A:
v(A)
B:
v(B)
v(A)
R1
C:
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-mémoire
[1]
LOAD
R1,A
[2]
SUB
R1,B
[3]
STORE C,R1
A:
v(A)
B:
v(B)
[2]
v(A)-v(B)
R1
C:
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-mémoire
[1]
LOAD
R1,A
[2]
SUB
R1,B
[3]
STORE C,R1
A:
v(A)
B:
v(B)
v(A)-v(B)
R1
C: v(A)-v(B)
[3]
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-registre
[1]
LOAD
R1,A
[2]
LOAD
R2,B
[3]
SUB
R3,R1,R2
[4]
STORE C,R3
A:
v(A)
R1
B:
v(B)
R2
C:
R3
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-registre
[1]
LOAD
R1,A
[2]
LOAD
R2,B
[3]
SUB
R3,R1,R2
[4]
STORE C,R3
[1]
A:
v(A)
B:
v(B)
C:
v(A)
R1
R2
R3
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-registre
[1]
LOAD
R1,A
[2]
LOAD
R2,B
[3]
SUB
R3,R1,R2
[4]
STORE C,R3
A:
v(A)
B:
v(B)
C:
[2]
v(A)
R1
v(B)
R2
R3
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-registre
[1]
LOAD
R1,A
[2]
LOAD
R2,B
[3]
SUB
R3,R1,R2
[4]
STORE C,R3
[3]
A:
v(A)
v(A)
R1
B:
v(B)
v(B)
R2
v(A)-v(B)
R3
C:
Charles André - Université Nice-Sophia Antipolis
Machine à registres
généraux
Registre-registre
[1]
LOAD
R1,A
[2]
LOAD
R2,B
[3]
SUB
R3,R1,R2
[4]
STORE C,R3
A:
v(A)
v(A)
R1
B:
v(B)
v(B)
R2
v(A)-v(B)
R3
C: v(A)-v(B)
[4]
Charles André - Université Nice-Sophia Antipolis
Machines à registres
généraux
Nb max d’
opérandes
Nb d’adr.
mémoire
Exemples
3
0
2
1
SPARC,
MIPS,
PowerPC
Intel86,
MC68k
2/3
2/3
Vax
Charles André - Université Nice-Sophia Antipolis
Types d’instructions
• Traitement de données (Data
Processing)
– Arithmétique
– Logique
• Transfert de données (Data transfer)
– Mémoire / registre
– Registre / registre
• Contrôle (Control)
– Tests, branchements, …
• Transfert E/S (I/O Transfer)
Charles André - Université Nice-Sophia Antipolis
Types d’opérandes
A ce bas niveau : nb réduit de types
• Adresses (voir plus loin)
• Scalaires
– Entiers
– « réels » virgule fixe
– « réels » virgule flottante
• Caractères
– ASCII, unicode, …
• Tableaux de bits
– Words, longs, …
Charles André - Université Nice-Sophia Antipolis
Adressage mémoire
• Deux problèmes:
– Comment interpréter les adresses
mémoire ?
– Comment les spécifier ?
Charles André - Université Nice-Sophia Antipolis
Interprétation
Quel est l’objet sélectionné en fonction d’une
adresse et d’une longueur ?
• Endianness (Big-endian / little-endian)
– Big-Endian: MSB à la plus petite adresse
– Little-endian: LSB à la plus petite adresse
• Alignement : l’accès à un objet de taille s octets
à l’adresse A est aligné si A mod s = 0
• Ordre des bits ( bit 0 à droite ou à gauche)
Charles André - Université Nice-Sophia Antipolis
Exemple Little-Endian
Charles André - Université Nice-Sophia Antipolis
Modes d’adressage
Compromis entre
– Souplesse du mode d’adressage
– Complexité de calcul de l’adresse
• « Adressage » immédiat ( # valeur )
– L’instruction contient la valeur
• Adressage avec déplacement ( d(R) )
– L’instruction contient une référence à un
registre (R)
– Un déplacement (d)
EA = contenu( R ) + d
(EA=Effective Address)
Charles André - Université Nice-Sophia Antipolis
Autres modes de base
• Adressage absolu : EA = d
• Adressage indirect : ( R )
EA = contenu(R)
• Adressage registre : R
• Exercice : expliquer les modes
d’adressage du Pentium :
EA=contenu(Base)+(contenu(Index)*Facteur)+Déplacement
Charles André - Université Nice-Sophia Antipolis
Type des opérations
• Architectures CISC (Complex Instruction Set
Computer)
• Architectures RISC (Restricted Instruction
Set Computer)
• Grandes catégories :
–
–
–
–
–
–
–
Transfert de données
Opérations arithmétiques
Opérations logiques
Conversions
Entrées/Sorties
Commande système
Transfert de contrôle
Charles André - Université Nice-Sophia Antipolis
Types des opérations (2)
• Pour préciser la taille des opérandes (ex
MC68k: .B, .W, .L; Pentium: byte ptr, word ptr,
dword ptr)
• Commande système : instructions
privilégiées
• Transfert de contrôle :
–
–
–
–
Branchements conditionnels (branch)
Sauts (skip)
Appels de procédures (subroutine calls)
Retours de procédures (subroutine return)
Charles André - Université Nice-Sophia Antipolis
Taille des opérandes Pentium
Charles André - Université Nice-Sophia Antipolis
Codage
• RISC : très peu de formats ⇒ facile à
décoder
• CISC : codage compact et formats
très variables ⇒ complexes à décoder
• Format fixe
• Format variable
• Format hybride
Charles André - Université Nice-Sophia Antipolis
Format Instruction Pentium
Charles André - Université Nice-Sophia Antipolis
Format Instruction MIPS
32 bits pour toute instruction
Reg source
Reg Dest
6
5
5
5
5
6
op
rs
rt
rd
shamt
funct
add rd, rs, rt = 0 rs rt rd 0 0x20
operation
R-type
Reg src 2
function
Shift
amount
6
5
5
16
op
rs
rt
funct
Charles André - Université Nice-Sophia Antipolis
Téléchargement