3 Le fonctionnement d’un ordinateur
Peter Schlagheck Universit ´e de Li `ege
Ces notes ont pour seule vocation d’ ˆetre utilis ´ees par les ´etudiants dans le cadre de leur cursus au sein de l’Universit ´e de Li `ege. Aucun autre usage ni diffusion n’est autoris ´e, sous peine de constituer une violation de la Loi du 30 juin 1994
relative au droit d’auteur.
3 Le fonctionnement d’un ordinateur
3.1 La machine de Turing
3.2 Le fonctionnement d’un processeur 3.3 La r ´ealisation en pratique
3.1 La machine de Turing
Alan Turing (1912 - 1954), math ´ematicien
−→ grande contribution au d ´echiffrement des codes allemands
“Enigma” pendant la deuxi `eme guerre mondiale (ordinateur ´electrom ´ecanique “bombe”, 1940)
−→ conception de la machine de Turing (1936)
= une machine de calcul universelle qui sait effectuer tous les algorithmes num ´eriques possibles
. . . afin de d ´emontrer qu’il n’est pas possible de d ´eterminer si de tels algorithmes s’arr ˆetent ou non
La machine de Turing
La machine de Turing consiste
d’un ruban de m ´emoire binaire infini et d’une unit ´e de commande
charg ´ee d’un programme
La machine de Turing
L’unit ´e de commande peut
lire le contenu (0ou1) de la cellule actuelle du ruban
´ecrire0ou1dans la cellule actuelle du ruban se d ´eplacer `a gauche ou `a droite par une cellule
La machine de Turing
Le programme definit plusieurs “ ´etats” de l’unit ´e de commande.
Chaque ´etat se compose
d’une lecture et ´ecriture dans la cellule actuelle d’un d ´eplacement `a gauche ou `a droite
d’un lien/saut `a un autre ´etat `a executer `a la suite . . . tout d ´ependant du contenu de la cellule actuelle
La machine de Turing
Exemple d’un programme (additions) pour la machine de Turing:
cellule actuelle ´etape prochaine
´etat actuel lecture ´ecriture d ´eplacement ´etat suivant
0 0 droite ´etat 0
´etat 0
1 1 droite ´etat 1
0 1 droite ´etat 2
´etat 1
1 1 droite ´etat 1
0 0 gauche ´etat 3
´etat 2
1 1 droite ´etat 2
0 0 droite STOP
´etat 3
1 0 droite STOP
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
La machine de Turing
Additions avec la machine de Turing:
0 0 → 0
0 1 1 → 1
0 1 → 2
1 1 1 → 1
0 0 ← 3 2
1 1 → 2 0 0 → ST 3
1 0 → ST
−→tous les algorithmes num ´eriques peuvent ˆetre repr ´esent ´es
−→sur une telle machine (th `ese de Church-Turing)
(ce n’est pas forc ´ement la meilleure fac¸on de les ex ´ecuter . . . )
Comment est-ce qu’on pourrait faire mieux
. . . apr `es tout ce qu’on a d ´ej `a appris ?
−→remplacer tous les bits par des octets
−→d ´eplacement arbitraire de l’unit ´e de commande
−→→n ´ecessite l’adressage global des cellules du ruban
Comment est-ce qu’on pourrait faire mieux
. . . apr `es tout ce qu’on a d ´ej `a appris ?
−→remplacer tous les bits par des octets
−→d ´eplacement arbitraire de l’unit ´e de commande
−→effectuer des calculs ´elementaires (additions des octets)
−→ `a l’interieur de l’unit ´e de commande
−→encoder le programme dans la m ´emoire
3.2 Le fonctionnement d’un processeur
John von Neumann (1903 - 1957), math ´ematicien Contributions:
th ´eorie de logique physique quantique th ´eorie des jeux Manhattan project informatique
→“l’architecture de von Neumann”
3.2 Le fonctionnement d’un processeur
Le principe de von Neumann:
Un ordinateur se compose d’une unit ´e de commande,
d’une unit ´e arithm ´etique et logique, d’une m ´emoire centrale et
des unit ´es d’entr ´ee et de sortie
(clavier, souris, ´ecran, imprimante, . . . )
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
ACC: accumulateur (1 octet)
−→sauvegarde d’une donn ´ee pour des op ´erations
−→arithm ´etiques et logiques
Le fonctionnement d’un processeur primitif
ACC: accumulateur (1 octet)
CI: compteur d’instructions (1 octet)
−→contient l’adresse de l’instruction actuelle
Le fonctionnement d’un processeur primitif
ACC: accumulateur (1 octet)
CI: compteur d’instructions (1 octet) RI: registre d’instruction (1 octet)
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration2:
copier le contenu `a l’adresse indiqu ´ee dans l’accumulateur
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration4:
ajouter `a l’accumulateur le contenu dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration3:
´ecrire le contenu de l’accumulateur dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Les instructions ´el ´ementaires:
2 010 LOAD copier la valeur de la m ´emoire dans l’accumulateur
3 011 STORE copier la valeur de l’accumulateur dans la m ´emoire
4 100 ADD ajouter la valeur de la m ´emoire
`a l’accumulateur
5 101 MPY multiplier la valeur dans l’accumulateur avec la valeur de la m ´emoire
Le fonctionnement d’un processeur primitif
Les instructions ´el ´ementaires:
2 010 LOAD copier la valeur de la m ´emoire dans l’accumulateur
3 011 STORE copier la valeur de l’accumulateur dans la m ´emoire
4 100 ADD ajouter la valeur de la m ´emoire
`a l’accumulateur
5 101 MPY multiplier la valeur dans l’accumulateur avec la valeur de la m ´emoire
1 001 BR copier l’adresse indique ´ee dans lecompteur d’instructions
−→interromption de la s ´equence,
−→ continuation avec une autre partie du programme
Le fonctionnement d’un processeur primitif
Les instructions ´el ´ementaires:
2 010 LOAD copier la valeur de la m ´emoire dans l’accumulateur
3 011 STORE copier la valeur de l’accumulateur dans la m ´emoire
4 100 ADD ajouter la valeur de la m ´emoire
`a l’accumulateur
5 101 MPY multiplier la valeur dans l’accumulateur avec la valeur de la m ´emoire
1 001 BR copier l’adresse indique ´ee dans le compteur d’instructions 0 000 BRG copier l’adresse indique ´ee
dans le compteur d’instructions si l’accumulateur ne vaut pas z ´ero
Le fonctionnement d’un processeur primitif
Les instructions ´el ´ementaires:
2 010 LOAD copier la valeur de la m ´emoire dans l’accumulateur
3 011 STORE copier la valeur de l’accumulateur dans la m ´emoire
4 100 ADD ajouter la valeur de la m ´emoire
`a l’accumulateur
5 101 MPY multiplier la valeur dans l’accumulateur avec la valeur de la m ´emoire
1 001 BR copier l’adresse indique ´ee
branchement dans le compteur d’instructions 0 000 BRG copier l’adresse indique ´ee
branchement dans le compteur d’instructions
conditionnel si l’accumulateur ne vaut pas z ´ero
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration0:
continuer avec l’instruction dans l’adresse indiqu ´ee si le contenu de l’accumulateur ne vaut pas z ´ero
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration4:
ajouter `a l’accumulateur le contenu dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration3:
´ecrire le contenu de l’accumulateur dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration0:
continuer avec l’instruction dans l’adresse indiqu ´ee si le contenu de l’accumulateur ne vaut pas z ´ero
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration4:
ajouter `a l’accumulateur le contenu dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration3:
´ecrire le contenu de l’accumulateur dans l’adresse indiqu ´ee
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
Op ´eration0:
continuer avec l’instruction dans l’adresse indiqu ´ee si le contenu de l’accumulateur ne vaut pas z ´ero
Le fonctionnement d’un processeur primitif
Le fonctionnement d’un processeur primitif
−→r ´ealisation d’une boucle
Le fonctionnement d’un processeur primitif
Le programme exprim ´e dans un langage symbolique (assembleur):
16: LOAD *10 17: ADD *15 18: STORE *4
19: IF (ACC NOT 0) GOTO17 20: . . .
*10 = la valeur encod ´ee `a l’adresse 10
Le fonctionnement d’un processeur primitif
Le programme exprim ´e dans un langage symbolique (assembleur):
16: LOAD *10 17: ADD *15 18: STORE *4
19: IF (ACC NOT 0) GOTO17 20: . . .
−→toute complexit ´e de la fonctionnalit ´e des ordinateurs
−→peut ˆetre introduite par la programmation (software)
“hardware” et “software”
programmation Motorola Motorola Motorola
transistors
hardware
processeurs Intel DEC Motorola
compilateurs langages de
programmation Fortran C Java
software
utilisateur
3.3 R ´ealisation en pratique
Installations suppl ´ementaires:
−→s ´equenceur (cabl ´e ou microprogramm ´e)
−→→contr ˆole le d ´eroulement de toutes les actions
Comment d ´ecoder des codes d’instructions ?
. . . pour deux bits: a b
Comment d ´ecoder des codes d’instructions ?
. . . pour deux bits: a b
3.3 R ´ealisation en pratique
Installations suppl ´ementaires:
−→s ´equenceur (cabl ´e ou microprogramm ´e)
−→→contr ˆole le d ´eroulement de toutes les actions
3.3 R ´ealisation en pratique
Installations suppl ´ementaires:
−→s ´equenceur
−→horloge (oscillateur de quartz)
−→→donne des signaux de cadence r ´eguliers (GHz)
−→ → pour lancer des actions
3.3 R ´ealisation en pratique
Installations suppl ´ementaires:
−→s ´equenceur
−→horloge
−→“bus” de transfert entre m ´emoire et processeur
−→. . . pour des adresses et des donn ´ees
3.3 R ´ealisation en pratique
Optimisations:
3.3 R ´ealisation en pratique
Optimisations:
−→execution parall `ele des op ´erations ind ´ependantes
−→m ´emoire “cache” et m ´emoire centrale
−→(r ´ealisation avec SRAM et DRAM)
3.3 R ´ealisation en pratique
Optimisations:
−→execution parall `ele des op ´erations ind ´ependantes
−→m ´emoire “cache” et m ´emoire centrale
−→op ´eration parall `ele de plusieurs processeurs