Académique Documents
Professionnel Documents
Culture Documents
COMPILATION
Organisation de base
d'une machine de von Neumann
Eduardo Sanchez
EPFL
Le logiciel
variables
int data = 0x123456;
int result = 0;
int mask = 1;
int count = 0;
int temp; data: 0x123456
result: 0
while (count < 32) {
temp = data & mask; mask: 1
result = result + temp;
data = data >> 1; count: 0
count = count + 1;
}; temp: undef
/* result = 9 */
opérations et affectations
contrôle
Eduardo Sanchez 2
opérations et affectations
9 fin:
variables
contrôle
Eduardo Sanchez 3
Eduardo Sanchez 4
processeur
unité de traitement
unité mémoire
de bus
contrôle
ALU registres
Eduardo Sanchez 5
Eduardo Sanchez 6
A
W Registres ALU
B Op
AW Wr AA AB
$r1 $r1
+
'1' $r4
Eduardo Sanchez 7
$r1 $r1
+
'1' $r4
logique de contrôle
add $r1, $r1, $r4
5 Dout
compteur de
D programme (PC) Q A
mémoire
d'instruction
6
+
1
Eduardo Sanchez 8
undef $r3
!=
'0' 32
logique de contrôle
bne $r3, 32, loop
4 (= loop)
8 Dout
compteur de
D programme (PC) Q A
mémoire
9 d'instruction
+
1
Eduardo Sanchez 9
Eduardo Sanchez 10
architecture de Harvard architecture de von Neumann
mémoire mémoire
d'instruction de données mémoire unifiée
processeur processeur
Eduardo Sanchez 11
Langage machine
• Les processeurs doivent reconnaître des instructions codifiées sous la
forme de groupes de bits
• L'ensemble des instructions reconnues par un processeur et son
système de codage forment ce qu'on appelle le langage machine du
processeur
• Il y a deux grandes familles de processeurs, selon la complexité de son
langage machine:
• processeurs CISC (Complex Instruction Set Computer). Exemple: Pentium
• processeurs RISC (Reduced Instruction Set Computer). Exemples: Sparc, PowerPC,
MIPS
• Il y a trois grands types d'instruction:
• transfert de données
• opérations arithmétiques/logiques
• contrôle
Eduardo Sanchez 12
registre
opcode source1
DIV 0011
registre registre
destination source2
opcode
STOP 0100
Eduardo Sanchez 13
Eduardo Sanchez 14
Exécution du programme
Eduardo Sanchez 15
Exercice
Eduardo Sanchez 16
• Le processeur possède 8 registres (R0...R7). Le registre R0
contient toujours la valeur 0
• Les instructions du langage machine du processeur sont:
• LOAD Rd, M[adr] Rd M[adr]
• STORE M[adr], Rs M[adr] Rs
• ADD Rd, Rs1, Rs2 Rd Rs1 + Rs2
• SUB Rd, Rs1, Rs2 Rd Rs1 – Rs2
• DEC R R R - 1
• JUMP zero, adr si zero alors sauter à adr
• Avant d'écrire le programme, nous devons trouver un algorithme
réalisant la tâche voulue
• Un algorithme possible serait:
Eduardo Sanchez 17
lecture de a et b
résultat = 0
a=0
b=0
résultat = résultat+a
Eduardo Sanchez 18
AE 7
Un modèle d’exécution
-
Von Neumann
Introduction
compute = calculer
Ø
Informatique = Information + Automatique
Ø
John Von Neumann 1943-45
Ø
Lignes essentielles pour construire une
machine électronique. (Projet ENIAC)
Ø
Appliqués jusqu'à nos jours
Ø
Quatre blocs fonctionnels:
Ø
Le processeur (ALU + Control Unit)
Ø
La mémoire
Ø
Le bus
Ø
Les I/O
Du câblé au programmé..
Ø
Premiers ordinateurs les pas d’exécution du programme
étaient directement câblés dans le circuit
Ø
Aujourd'hui on parlerait d’accélérateur matériel
Ø
On invente le programme vu comme des données
stockées dans la mémoire principale
Ø
l’architecture de Von Neumann
Ø
La fonction de l’unité de contrôle est de
Ø
lire le programme de la mémoire
Ø
décoder les instructions
Ø
commander leur exécution
Ø
Un changement de programme se fait par une simple
réécriture de la mémoire
Du calcul sur des données…
Notion d’instruction
Mémoire banalisée
Quels échanges dans la machine?
Zoom inside
Bascule
mémoire
Décodeur
Fonction
logique
9
Un ordinateur simplifié…
IP ~
CO~
CP~
PC
Lecture de l’instruction
L’instruction arrive
on prépare la suite…
Les opérandes arrivent!
Prêt pour le calcul!!!
On range le résultat
et on recommence …
Et si on en exécute plusieurs?
Ø
Le processeur exécute (interprète) les
instructions élémentaires à la suite
Ø
Une séquence d'opérations peut décrire
tous les problèmes
notion de Programme
Déroulement du programme
Ø
Le déroulement du programme est
contrôlé par le Compteur Ordinal qui
pointe vers la prochaine instruction à
exécuter.
Ø
La séquentialité est intrinsèque au
modèle VN
Ø
Les instructions sont exécutées en
séquence sauf en cas de saut. (Jump)
Les données
Ø
La mémoire conserve les données et les
instructions, on parle de mémoire
banalisée.
Ø
Les instructions sont amenées une à une
vers le processeur
Ø
Les échanges entre mémoire /
processeur se font via le système de
communication : souvent le bus
Von Neumann vs. Harvard
Ø
Von Neumann MÉMOIRE CPU
IO IO IO
•••••
BUS SYSTÈME
BUS INSTRUCTIONS
Ø
Harvard
MÉMOIRE MÉMOIRE
CPU IO IO IO
DONNÉES INSTR •••••
BUS DONNÉES
Séquencement des instructions
Ø
L'exécution d'une instruction passe par
plusieurs étapes successives, chacune
étant considérée comme une micro-
opération.
Ø
Certaines de ces actions correspondent à
une activité mémoire, d'autres à une
activité processeur.
Ø
Pour effectuer une instruction, il faut
toujours effectuer les actions suivantes:
Séquencement des instructions
Ø
1: Lit instruction suivante
Ø
Bus Adresse PC
Ø
Bus Commande « Lire instruction »
Ø
RI Bus Donnée
Ø
2: Incrémente compteur ordinal
Ø
PC PC + taille(instruction)
Ø
3 :Décode Instruction ex: Add A,(123)
Ø
A A + contenu @123.
Phases 4 5
Ø
4 et 5 : Lit données (facultatif)
Ø
Bus A 123
Ø
Bus C « lire donnée »
Ø
tmp Bus D
Ø
Transfert données UAL
Ø
UAL.E1 A
Ø
UAL.E2 tmp
Ø
UAL.Inst « addition »
Phases 6 7 8
Ø
6: UAL calcule opération
Ø
Activation de l’additionneur intégral
Ø
tmp’
Ø
7 et 8 : UC range résultat
Ø
A tmp’
Ø
Recommence
Ø
Lit & Exécute instruction suivante
Ø
Pas de repos pour un processeur…
Activités Activités
Processeur Mémoire
(1)
(2) Fetch instr
Incrément
Phase de
(3) chargement
Decode instr
Cycle
(4) (5) instruction
Calcul adr Op Fetch operand
Opérandes multiples
(7) (8)
Calcul adr res Store résultat
Résultats multiples
Ø
L'exécution d'une instruction peut être
découpée en plusieurs phases
successives.
Ø
Deux phases au moins sont définies:
Ø
la phase de chargement 'Fetch' et
Ø
phase d'exécution 'Execute''
Différentes classes
d’instruction