Vous êtes sur la page 1sur 56

Introduction à l’informatique

Architecture des ordinateurs

Leçon basée sur celle du Prof. NICOLAS VAN ZEEBROECK


Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

2
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

3
Introduction (1/6) – Abstraction fonctionnelle
● L’informatique repose sur le principe de l’abstraction
fonctionnelle (parfois appelé principe en couches) :
– Fonctionnement à différent niveaux d’abstraction.
– Indépendance des différentes niveaux d’abstraction : On
peut travailler à un niveau supérieur sans se soucier du
niveau inférieur.
● Avantage : Écrire un programme dans un langage de
programmation de haut niveau (ex: Python) sans
connaître le fonctionnement de l’ordinateur particulier
qui exécutera finalement le programme.

4
Introduction (2/6) – Niveaux d’abstraction
● L’exécution d’un programme implique un grand nombre
de niveaux d’abstraction.
● On peut identifier cinq niveaux d’abstraction
génériques (de plus haut au plus bas niveau) :
– Symbolique (concepts, algorithmes, etc.).
– Implémentation dans un langage de programmation de
haut niveau (programmes, librairies, etc.).
– Système d’exploitation propose une première couche
d’abstraction logicielle (accès aux périphériques (drivers),
organisation générale des tâches, etc.).
– Instructions en langage machine.
– Circuits physiques (processeur, mémoire, etc.).

5
Introduction (3/6) – Développement
● Pour exécuter des applications, une ordinateur a besoin
dune version binaire des programmes :
7f 45 4c 46 01 01 00 00 00 00 00 00
02 00 03 00 01 00 00 01 c8 16 1a 2f
● Trop compliqué pour programmer.
● Utilisation de langages de programmation (Basic, C/C++,
C#, Java, Python, Perl, Fortran, etc) pour écrire du code
source :
10 PRINT Hello World
20 GOTO 10

6
Introduction (4/6) – Langage machine (1/3)
Principe
● Chaque ligne de code source d’un langage de haut niveau

correspond généralement à une séquence de plusieurs


instructions de base en langage machine.
● Par exemple, la ligne c=a+b correspond à une séquence

d’instructions de base du type :


LOAD A (charger la valeur de A dans le processeur)
ADD B (y ajouter la valeur de B)

STORE C (stocker le résultat dans la variable C)


● Chaque instruction de base est codée sous une forme
binaire :
01001010
● Le langage assembleur est une version symbolique du
langage machine :
LOAD A
7
Introduction (5/6) – Langage machine (2/3)
Dépendance
● Tous les environnements ne sont pas identiques :

– Ordinateurs comprennent parfois des langages machines


différents (cela dépend de leur type de processeur).
– Systèmes d’exploitations différents.
● Programme en langage machine dépend donc de
l’environnement particulier dans lequel il sera exécuté.
● Exemples d’incompatibilité de programmes en langage
machine :
– Ordinateurs de bureau et smartphones.
– Ordinateurs avec même processeur Intel mais fonctionnant
sous Windows ou MacOS.
– Ordinateurs fonctionnant sous GNU/Linux mais avec des
processeurs différents.

8
Introduction (6/6) – Langage machine (3/3)
Compilation & interprétation
● Les compilateurs et interprétateurs sont des programmes

qui transforment le code source d’un langage donné vers


un langage de plus bas niveau.
● Compilation fonctionne en une phase (ex: C++) :

– Compilateur transforme un code source en code machine


pour un environnement particulier.
– Ordinateur compatible avec l’environnement exécute
directement le code machine.
● Interprétation fonctionne en deux phases (ex: Python) :
– Compilateur transforme le programme en bytecode de
plus bas niveau mais indépendant d’un environnement.
– Interprétateur transforme le bytcode en code machine
propre à l’environnement au moment de l’exécution.

9
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

10
Historique (1/17) – Contenu
● Précurseurs
● Machine de Turing
● Architecture de von Neumann

11
Historique (2/17) – Précurseurs (1/2)
● Charles Babbage (1791-1871) :
– Construction de la machine à différences pour automatiser
le calcul de tables mathématiques.
– Travaux non aboutis sur une machine analytique.
● Alan Turing (1912-1954) :
– Conceptualisation d’une machine (dite de Turing) capable
d’effectuer n’importe quel calcul avec un dispositif simple.
– Participation à la conception du décryptage de la machine
Enigma durant la Seconde Guerre mondiale (mais pas
seul).
– Proposition d’un test (dit de Turing) pour définir si un
ordinateur (logiciel) est intelligent.
– Légende veut que le premier logo d’Apple soit un
hommage.
– Prix Turing est l’équivalent du Nobel en informatique.

12
Historique (3/17) – Précurseurs (2/2)
● John von Neumann (1903-1957) :
– Rédaction d’un document décrivant la conception du
EDVAC (Electronic Discrete Variable Automatic
Computer).
– Conceptualisation d’une architecture d’ordinateurs
programmable (à la base de tous les ordinateurs
modernes).
– Connaissance des travaux de Turing sans que ceux-ci
influencèrent la conception du EDVAC.
● Claude Shannon (1916-2001) :
– Établissement d’un théorème montrant comment optimiser
le codage de messages à envoyer sur un canal de
communication.
– Protestation contre l’utilisation de son schéma dans les
sciences humaines (comme en communication).

13
Historique (4/17) – Machine de Turing (1/13)
Principe
● Objet mathématique composé :

– Ruban de longueur infinie divisé en cases consécutives


(tableau) qui contient des symboles parmi un alphabet fini.
– Tête de lecture/écriture qui lit et écrit les symboles sur le
ruban, et se déplace vers la gauche ou vers la droite.
– Registre d’un nombre fini d’états qui mémorise l’état
courant de la machine.
– Table d’actions qui indique quel symbole écrire sur le
ruban, comment déplacer la tête de lecture/écriture, et quel
sera le nouvel état (en fonction de l’état actuel et du
symbole lu).
● Thèse de Church : Tout problème de calcul fondé sur une
procédure algorithmique peut être résolu par une machine
de Turing.

14
Historique (5/17) – Machine de Turing (2/13)
Exemple (1/12) – Étape initiale
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : A

0 1 1 1 0 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = cellule contient Ecrire Se déplacer Nouvel état


A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

15
Historique (6/17) – Machine de Turing (3/13)
Exemple (2/12) – Étape 2
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : A

0 1 1 1 0 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = cellule contient Ecrire Se déplacer Nouvel état


A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

16
Historique (7/17) – Machine de Turing (4/13)
Exemple (3/12) – Étape 3
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : B

0 1 1 1 0 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

17
Historique (8/17) – Machine de Turing (5/13)
Exemple (4/12) – Étape 4
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : B

0 1 1 1 0 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

18
Historique (9/17) – Machine de Turing (6/13)
Exemple (5/12) – Étape 5
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 111=3).

État : B

0 1 1 1 0 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

19
Historique (10/17) – Machine de Turing (7/13)
Exemple (6/12) – Étape 6
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : C

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

20
Historique (11/17) – Machine de Turing (8/13)
Exemple (7/12) – Étape 7
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : C

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

21
Historique (12/17) – Machine de Turing (9/13)
Exemple (8/12) – Étape 8
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : C

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

22
Historique (13/17) – Machine de Turing (10/13)
Exemple (9/12) – Étape 9
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : C

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

23
Historique (14/17) – Machine de Turing (11/13)
Exemple (10/12) – Étape 10
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : C

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

24
Historique (15/17) – Machine de Turing (12/13)
Exemple (11/12) – Étape 11
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : D

0 1 1 1 1 1 1 1 1 0 0 Ruban = mémoire
3 4

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

25
Historique (16/17) – Machine de Turing (13/13)
Exemple (12/12) – Étape finale
● Symbole peut prendre deux valeurs 0 ou 1.

● Une suite de 1 représente un entier (ex: 1110=3).

État : Stop

0 1 1 1 1 1 1 1 1
0 0 0 Ruban = mémoire
7

Si état = Sicellule
cellulecontient
contient Ecrire
Écrire Se déplacer Nouvel état
A 0 D A
PROGRAMME

A 1 D B
B 1 D B
B 0 1 D C
C 1 D C
C 0 G D
D 1 0 D STOP
STOP

26
Historique (17/17) – Architecture de von Neumann
● Une machine est constituée :
– Périphériques d’entrée et de sortie (I/O).
– Unité de contrôle (CU) pour séquencer les instructions.
– Une unité de calcul arithmétique et logique (ALU).
– Une mémoire pour stocker le programme et les données.
● Ordinateurs modernes sont construits suivant cette
architecture.

Source : Wikipedia

27
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

28
Architecture (1/6) – Contenu
● Schéma général
● Processeur
● Mémoire
● Périphériques I/O

29
Architecture (2/6) – Schéma général

Exécution

ENTRÉES

Mémoire
centrale
Processeur (contient
(CPU) données et
programmes)

SORTIES

Source: MIT Open Courseware


30
Architecture (3/6) – Processeur
● Le processeur (CPU) est l’élément central :
– Dialogue avec les périphériques I/O et la mémoire
centrale.
– Exécute les instructions en langage machine.
● Différents éléments :
– L’unité de contrôle (CU) contrôle le flux d’instructions et
maintient le compteur d’instruction à jour.
– L’unité arithmétique et logique (ALU) exécute les
opérations arithmétiques et logiques.
– Un (ou plusieurs) registre(s) sont des mémoires internes du
processeur stockant l’état et les données courants du
programme (ex: l’accumulateur est un registre qui stocke
le résultat courant d’un calcul).
● Capacité de traitement d’un processeur (FLOPS)
intervient dans la puissance d’un ordinateur.

31
Architecture (4/6) – Mémoire
● Stocker les programmes et les données.
● Distinction entre :
– Mémoire ROM (Read-Only Memory) : Contenu non
effaçable et qui reste même si l’ordinateur est hors tension.
– Mémoire RAM (Random access Memory) : Contenu
effaçable mais qui disparaît dès que l’ordinateur est hors
tension.
● Différentes types de mémoire suivant leur taille et la
vitesse de lecture et d’écriture.
● Généralement la vitesse augmente lorsque la taille
diminue et vice versa.
● Taille et vitesse de la mémoire interviennent dans la
puissance d’un ordinateur.

32
Architecture (5/6) – Périphériques I/O
● Historiquement :
– Périphérique d’entrée : Cartes perforées.
– Périphérique de sortie : Imprimante.
● Aujourd’hui :
– Multiples périphériques d’entrée (clavier, souris, disque
dur, etc.)
– Multiples périphériques de sortie (écran, imprimante, carte
son, etc.).
● Certains périphériques sont d’entrée et de sortie (disques
durs et externes, prises réseau, écran tactile, carte son,
etc.).
● Richesse (telle la taille d’un disque dur) et rapidité des
périphériques I/O interviennent dans la puissance d’un
ordinateur.

33
Architecture (6/6) – Synchronisation
● Importance de synchroniser les différents éléments.
● Un ordinateur dispose donc d’une horloge interne définie
en Herz (Hz) :
– Oscillateur dont les cycles donne une cadence de
référence.
– Toute fin d’opération est actée au début du cycle suivant
(certaines opérations demandent plusieurs cycles).
● Fréquence d’horloge intervient dans la puissance d’un
ordinateur.

34
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

35
Programme (1/3) – Principe
● L’ordinateur exécute des programmes.
● Programme est une séquence d’instructions :
– Instructions de calcul.
– Instructions de branchement conditionnel et de boucles.
● Programme s’exécute donc séquentiellement une
instruction après l’autre.
● Attention : L’ordre d’exécution des instructions n’est pas
leur ordre dans le programme.

36
Programme (2/3) – Exécution
● Principe de base de l’architecture de von Neumann :
– Programme séquentiel est chargé et stocké en mémoire.
– Processeur (CU, ALU et registres) lit les instructions de la
mémoire et les exécute.
– Certains instructions impliquent la lecture et/ou l’écriture
de données en mémoire.
● Le processeur effectue 4 opérations à chaque instruction :
1. Il cherche l’adresse de l’instruction à exécuter (indexée
par un compteur spécifique).
2. Il la lit et la décode.
3. Il l’exécute (fetch-execute cycle).
4. Il incrémente le compteur.

37
Programme (3/3) – Cycle fondamental

Mémoire centrale Processeur

Unité de contrôle

2 Décodage

Lecture 1
Cycle d’exécution
3 Exécution

4
Incrémentation IC

Unité logique et arithmétique

38
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

39
Instruction (1/3) – Catégories
● Déplacement de données :
– De mémoire/registre vers mémoire/registre.
– LOAD charge dans un registre une donnée en mémoire.
– STORE stocke en mémoire la donnée d’un registre.
● Opérations d’entrée/sortie :
– GET lit une donnée d’un périphérique d’entrée (ex:
clavier).
– PUT écrit une donnée sur un périphérique de sortie (ex:
écran).
● Opérations arithmétiques et logiques :
– a + b, z > 0 ?, etc.
– Ex: ADD, SUB, MPY, etc.
● Opérations conditionnelles et de branchement :
– Si x < 0 alors aller à l’instruction 95.

40
Instruction (2/3) – Jeu d’instructions
● L’ensemble des instructions élémentaires exécutables par
un processeur est appelé le “jeu d’instructions” et est
codé dans le processeur.
● À chaque instruction est attribué un numéro qui est
ensuite codé en binaire sur un nombre de bits prédéfini (3
bits dans l’exemple de la leçon).
● Ainsi, chaque instruction est simplement représentée par
un petit nombre de bits.

41
Instruction (3/3) – Exemple
Jeu d'instructions simplifié

Codes instruction Description de l'instruction


Symbole Valeur en Valeur en
Assembleur binaire décimal
LOAD 010 2 Copie dans l'accumulateur le contenu de la mémoire
dont l'adresse est donnée dans l'opérande
STORE 011 3 Copie le contenu de l'accumulateur dans la mémoire
à l'adresse donnée dans l'opérande
ADD 100 4 Ajoute à l'accumulateur le contenu de la mémoire
dont l'adresse est donnée dans l'opérande
MPY 101 5 Multiplie l'accumulateur avec le contenu de la
mémoire dont l'adresse est donnée dans l'opérande
BR 001 1 Interrompt inconditionnellement le déroulement
séquentiel du programme par chargement dans le
registre d'instruction de l'adresse donnée dans
l'opérande
BRG 000 0 A condition que le contenu de l'accumulateur soit
plus grand que zéro, interrompt le déroulement
séquentiel du programme par chargement dans le
registre d'instruction de l'adresse donnée dans
l'opérande; dans le cas contraire, passage à
l'instruction suivante.

42
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

43
Mémoire (1/2) – Adressage
● Chaque adresse de la mémoire est associée à un nombre
unique, lui-même représenté en binaire sur un nombre de
bits prédéfini (5 dans l’exemple de la leçon).
● Ce nombre binaire représente un emplacement de la
mémoire où stockée une suite de nombres binaires.
● Ces nombres binaires peuvent correspondre soit à une
(partie d’une) instruction élémentaire, soit à une (partie
de) donnée.

44
Mémoire (2/2) – Exemple

Adresses des données et des instructions

Adresse
Symbole Valeur en Valeur en binaire
décimal 16 8 4 2 1
Données
A 10 0 1 0 1 0
B 11 0 1 0 1 1
C 12 0 1 1 0 0
D 13 0 1 1 0 1
E 14 0 1 1 1 0
F 15 0 1 1 1 1
Z 20 1 0 1 0 0
Instructions
LB (LeBoulot) 04 0 0 1 0 0
SEQ2 27 1 1 0 1 1

45
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

46
Exemple (1/7) – Situation

REGISTER

(ALU)

Adresse Valeur

Source: MIT Open Courseware


47
Exemple (2/7) – Échange avec la mémoire

Source: MIT Open Courseware


48
Exemple (3/7) – Échange avec les dispositifs I/O

Source: MIT Open Courseware


49
Exemple (4/7) – Traitement

Source: MIT Open Courseware


50
Exemple (5/7) – Ensemble des opérations

Source: MIT Open Courseware


51
Exemple (6/7) – Exécution d’un programme

Source: MIT Open Courseware


52
Exemple (7/7) – Branchement

Source: MIT Open Courseware


53
Contenu
● Introduction
● Historique
● Architecture
● Programme
● Instruction
● Mémoire
● Exemple
● Conclusions

54
Conclusions
● Architecture de base d’un ordinateur moderne :
– Processeur.
– Mémoires.
– Périphériques I/O.
● Pour respecter la loi de Moore, les ordinateurs se sont
complexifiés :
– Plusieurs processeurs (cœurs).
– Plusieurs type de mémoire (RAM, mémoire cache, etc.).
– Périphériques I/O ultra-performants (réseau, disques durs,
etc.).

55
Introduction à l’informatique

Architecture des ordinateurs

Leçon basée sur celle du Prof. NICOLAS VAN ZEEBROECK

Vous aimerez peut-être aussi