Architecture des ordinateurs

publicité
STRUCTURE ET
FONCTIONNEMENT D‘UN SYSTÈME
INFORMATIQUE
Architecture des ordinateurs V1.1
Page 2
CONTRIBUTIONS D’ALLAN TURING
Architecture des ordinateurs V1.1
Architecture de von Neumann
3
Architecture des ordinateurs V1.1
Architecture de von Neumann
4
Architecture des ordinateurs V1.1
Architecture de von Neumann
5
Architecture des ordinateurs V1.1
Architectures actuelles
6
Mémoire des ordinateurs
Architecture des ordinateurs V1.1
Introduction
8
Architecture des ordinateurs V1.1
Introduction
9
Architecture des ordinateurs V1.1
10
Caractéristiques
kibi
Ki
210 = 1 024
mébi
Mi
220 = 1 048 576
gibi
Gi
230 = 1 073 741 824
Architecture des ordinateurs V1.1
Autres caractéristiques
11
Architecture des ordinateurs V1.1
Méthodes d'accès
12
Architecture des ordinateurs V1.1
Mémoires volatiles
13
Architecture des ordinateurs V1.1
Mémoires volatiles
14
Architecture des ordinateurs V1.1
Mémoires cache : principe
15
Architecture des ordinateurs V1.1
Mémoires cache : principe
16
Architecture des ordinateurs V1.1
Mémoires cache :
mémoire associative
17
Architecture des ordinateurs V1.1
Mémoires cache : efficacité
18
Architecture des ordinateurs V1.1
Mémoires non volatiles
19
Architecture des ordinateurs V1.1
Mémoires non volatiles
20
Architecture des ordinateurs V1.1
Fonctionnement d’une ROM
21
Architecture des ordinateurs V1.1
Fonctionnement d’une RAM
22
Architecture des ordinateurs V1.1
Disques magnétiques
23
Architecture des ordinateurs V1.1
Différent types et
différentes utilisations
24
Architecture des ordinateurs V1.1
Hiérarchie des mémoires
25
Architecture des ordinateurs V1.1
Organisation de l'information
26
Architecture des ordinateurs V1.1
Organisation de l'information
27
Architecture des ordinateurs V1.11
Organisation de l'information
Organisation mémoire des données de plus de 8 bits
 Little endian : l’octet de poids faible est en tête (processeurs
Intel, HP Alpha)
 Big endian : l’octet de poids fort est en tête (processeurs
Motorola et Sun)
28
Le Processeur
Architecture des ordinateurs V1.1
Structure d’un processeur
30
Architecture des ordinateurs V1.1
Structure d’un processeur : i8080
31
Architecture des ordinateurs V1.1
Unité de contrôle et de
commande
32
Architecture des ordinateurs V1.1
Détail de l’unité de commande
33
Architecture des ordinateurs V1.1
L’horloge
34
Architecture des ordinateurs V1.1
L’unité de traitement
35
Architecture des ordinateurs V1.1
L’unité de traitement : l’ALU
36
Architecture des ordinateurs V1.1
L’unité de traitement : l’ALU
37
Architecture des ordinateurs V1.1
L’unité de traitement : l’ALU
38
Architecture des ordinateurs V1.1
L’unité logique et arithmétique
39
Architecture des ordinateurs V1.1
L’unité logique et arithmétique
40
Architecture des ordinateurs V1.1
Les registres
41
Architecture des ordinateurs V1.1
Les registres
42
Architecture des ordinateurs V1.1
Les registres
43
Architecture des ordinateurs V1.1
Les registres
44
Architecture des ordinateurs V1.1
Les registres
45
Architecture des ordinateurs V1.1
Les registres
46
Gestion de la mémoire
Architecture des ordinateurs V1.1
L’unité de gestion mémoire

Deux type de gestion mémoire


Gestion par segmentation
Gestion par pagination
48
Gestion de la mémoire par
segmentation

L’adresse mémoire absolue est précisée
à l’aide de deux registres :



Un registre appelé registre de segment précisant
l’adresse de base du segment divisé par 16
Un registre contenant un déplacement dans le
segment
L’adresse mémoire absolue est calculée
en faisant la somme du registre de
segment multiplié par 16 additionné au
contenu du registre de déplacement.
Architecture des ordinateurs V1.1
49
Gestion de la mémoire par
segmentation

Exemple registres de segments du
processeur i8086:




CS : Code Segment (travaille avec le registre IP)
SS : Stack Segment (travaille avec le registre SP)
DS : Data Segment (travaille avec les autre registres)
ES : Exta Segment
Adresse =
segment * 16 + déplacement fourni par un registre
Architecture des ordinateurs V1.1
50
Gestion de la mémoire par
segmentation : exemple
CS
1
2
3
4
CS x 16
1
2
3
4
0
5
6
7
8
7
9
B
8
+ IP
1
IP
5
6
7
Architecture des ordinateurs V1.1
8
51
Gestion de la mémoire par
pagination



La mémoire est gérée par un dispositif matériel appelée Unité de
Gestion de la Mémoire (UGM).
L'UGM de la famille i386 inspirée de l’architecture mémoire de
l’IBM 370 implémente à la fois la pagination et la segmentation.
Principe de la pagination

La pagination consiste à traduire les adresses linéaires fournies par
l'unité de segmentation en adresses physiques, la traduction
affectant une page de taille fixe de 4K octets.
Architecture des ordinateurs V1.1
52
Architecture des ordinateurs V1.1
Principe de la pagination


D'un point de vue fonctionnel, l'unité de
pagination apparaît donc comme une table
de traduction contenant 1 méga entrées
(1 M x 4K = 4 Go).
Une adresse linéaire doit être alors
interprétée comme deux composantes :


Les 20 bits de poids forts représentent le
numéro logique de la page, utilisé comme
index pour pointer sur l'entrée dans la table
de page qui contient le numéro physique de
cette page. On trouvera aussi dans cette
entrée, les attributs de la page, pour la
protection et la gestion de mémoire
virtuelle.
Les 12 bits de poids faible représentent
l'offset de l'objet à accéder à l'intérieur de la
page ; cette composante ne subira aucune
transformation
53
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86

Un des inconvénients de la table unique de
traduction est sa taille car elle doit résider en
totalité dans la mémoire.


Chaque entrée occupant 32 bits, il faudrait dans
ce cas réserver 4M octets de mémoire centrale,
seulement pour gérer la pagination... ceci par
tâche, chaque tâche pouvant disposer d'une
structure propre !
Elle ne permet pas à plusieurs tâches de
partager certaines entrées de page.
54
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86


La structure retenue
dans les processeurs
x86 est une
structure à deux
niveaux qui consiste
à paginer la table de
pagination !
Le découpage de
l’adresse linéaire est
faite de façon
suivante :

Les bits 0-11 de
l'adresse linéaire
constituent
toujours l'offset
dans la page
physique et ne
subiront donc pas
de modification.
55
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86

Les bits 22-31 constituent un
premier index sélectionnant une
entrée dans le répertoire de
pagination (directory),
première table à 1 K entrées,
occupant donc 4K octets.
Chaque entrée dans ce
répertoire décrit une table de
page (adresse physique et
attributs), c'est-à-dire une
fraction de 4K de la table
unique précédente.
56
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86


Les bits 12-21 constituent
un deuxième index cette
fois dans la table de page
précédemment
sélectionnée, indiquant
maintenant l'entrée de la
page définitive contenant
l'objet accédé par le
programme.
Chaque table de page
contient 1 K entrées,
occupe donc aussi 4K octets
et décrit un espace
physique de 1 K x pages,
c'est-à-dire 4M octets.
57
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86


Il faut remarquer que pour
une entrée de catalogue,
une adresse linéaire ne fait
correspondre qu’une seule
adresse physique.
La page contenant le
répertoire est pointée par le
registre CR3 du x86 (en
adresse physique !).


Ce registre est local et
peut être modifié lors
d'une commutation de
tâche.
Cela permet à deux tâches
indépendantes d'utiliser
des espaces linéaires
communs sans
interférence.
58
Architecture des ordinateurs V1.1
Unité de pagination des
processeurs x86


Il faut remarquer que pour
une entrée de catalogue,
une adresse linéaire ne fait
correspondre qu’une seule
adresse physique.
La page contenant le
répertoire est pointée par le
registre CR3 du x86 (en
adresse physique !).


Ce registre est local et
peut être modifié lors
d'une commutation de
tâche.
Cela permet à deux tâches
indépendantes d'utiliser
des espaces linéaires
communs sans
interférence.
59
Architecture des ordinateurs V1.1
60
Conséquence du mécanisme de
pagination






La mémoire physique n’a pas besoin d’être contiguë.
Les programmes sont édités tous avec la même adresse linéaire
de base (0x400 000 pour Windows) et sont tous chargés en
mémoire linéaire à cette adresse.
Permet de partager du code commun entre plusieurs processus.
Permet de séparer les données statiques de deux processus
identiques.
Évite la fragmentation de la mémoire en récupérant des blocs
de 4K disséminés sans perte de performance.
Permet d’échanger les pages non utilisées sur le disque et ce de
façon transparente pour les programmes (mémoire virtuelle)
Architecture des ordinateurs V1.1
Les bus
61
Architecture des ordinateurs V1.1
Le bus d’adresse
62
Architecture des ordinateurs V1.1
Le bus de données
63
Architecture des ordinateurs V1.1
Le bus de commande
64
Architecture des ordinateurs V1.1
Exécution d’une instruction
65
Introduction au langage machine
Architecture des ordinateurs V1.1
Le code machine
67
Architecture des ordinateurs V1.1
Fonctionnement en couche
68
Architecture des ordinateurs V1.1
Langage assembleur
69
Architecture des ordinateurs V1.1
Langage assembleur
70
Architecture des ordinateurs V1.1
71
Langages évolués



Langage indépendant de l’architecture
du processeur
Le processus de traduction fait appel un
logiciel appelé compilateur. Celui-ci
génère du langage assembleur.
Le compilateur est spécifique à chaque
processeur.
Architecture des ordinateurs V1.1
Principaux langages non
objets





Fortran
C
Pascal
Lisp
…
72
Architecture des ordinateurs V1.1
Principaux langages orientés
objets




C++
Java
C#
Python
Page 73
Architecture des ordinateurs V1.1
Page 74
Exécution native ou interprétée

Exécution native :


Le code généré par le compilateur est celui du
processeur
Exécution interprétée:


Le code généré par le compilateur est un code
intermédiaire incompréhensible par le
processeur physique.
Ce code est interprété à la volée par un logiciel
spécifique pour chaque processeur réel.
Architecture des ordinateurs V1.1
Page 75
Améliorations dans l’exécution de
codes intermédiaire

Compilation JIT (Just In Time)


Compilation à la volée : le code intermédiaire
est compilé à la volée avant l’exécution de
chaque fonction. Utilisé dans les machines Java
et les machines Dalvik (Android jusqu’à 4.4)
Compilation AOT (Ahead-Of-Time)

Le code est compilé avant l’exécution du
programme. Permet de générer un code plus
efficace. Utilisé dans les machines .net et les
machines ART (Android à partir de 5.0)
Architecture des ordinateurs V1.1
Processeur 8086
Page 76
Architecture des ordinateurs V1.1
Page 77
Processeur Intel 8086 et x586




Processeur 16 bits (1978)
Toujours présent dans les architectures
x586 actuelles
Mode 8086 activé à la mise sous
tension d’un processeur x86
Mode 8086 activé lors de l’exécution
des programmes 16 bit (8086 virtuel)
Architecture des ordinateurs V1.1
Processeur 8086



Bus d’adresse 20bits
Bus de données 16 bits
Registres internes 16 bits
Page 78
Architecture des ordinateurs V1.1
Processeur 8086 : registres
Page 79
Architecture des ordinateurs V1.1
Modèle mémoire segmenté
Page 80
Architecture des ordinateurs V1.1
Page 81
Instructions 8086







Instructions arithmétiques
Instructions logiques
Instructions déplacement des données
Instructions de manipulation des
chaines de caractères
Instructions de test
Instructions de contrôle du processeur
Instructions entrées/sorties
Architecture des ordinateurs V1.1
Instructions arithmétiques


ADD, SUB, MUL, IMUL, DIV, IDIV
Syntaxe


ADD op1, op2 => op1 <- op1 + op2
Exemple


Add al, 12H
Al = AL + 12H
Add ax, [1000H] Ax = AX + [1000H]
Page 82
Architecture des ordinateurs V1.1
Instructions logiques

AND, OR, XOR, NOT

Syntaxe

AND op1, op2 => op1 <- op1 AND op2
Page 83
Architecture des ordinateurs V1.1
Instructions de déplacement des
données

Mov, Movs, Xchg,

Syntaxe

Mov op1, op2 => op1 <- op2
Page 84
Architecture des ordinateurs V1.1
Page 85
Instructions de test et de comparaison


Jmp, Jcond, Loop
Syntaxe







Jmp adr
Ja adr: saut si >, Jb : saut si <
Jae adr : saut si ≥, Jbe : saut si ≤
Jne adr : saut si différent
Je adr : saut si =
Jg adr : saut si plus grand, Jl saut si plus petit
Jz, Jnz adr : saut si le résultat de l’opération
précédente ==0 ou !=0
Architecture des ordinateurs V1.1
Page 86
Exemple de programme


Utilisation d’un outil de bas niveau pour
l’écriture du code : debug
Principales commandes de debug :





A : assemble
D: affiche le contenu d’une zone mémoire
Tn : exécute n instructions
U: désassemble
R : affiche ou modifie le contenu d’un
registre
Architecture des ordinateurs V1.1
Page 87
Exemple de code
Effectuer l’opération V3 = V2 + V1
(données 16bits)
1. Définir l’emplacement de V1, V2 et V3
2. Initialiser V1 et V2
3. Définir les instructions 8086 pour
effectuer l’opération

Architecture des ordinateurs V1.1
Page 88
Définir l’emplacement de V1,
V2 et V3 et initialiser V1 et V2

Les données sont placées à partir de
l’adresse 1000H




V1 sera placé à [1000H] et sera initialisé à
1234H
V2 sera placé à [1002H] et sera initialisé à
4567H
V3 sera placé à [1004H]
Le code sera placé à partir de l’adresse 100H
Architecture des ordinateurs V1.1
Page 89
Instructions d’additions

Le code sera placé à l’adresse CS:100H
Architecture des ordinateurs V1.1
Tests


Fixer le compteur ordinal au départ du programme
(100H)
Tracer 3 instructions
V1
V2
V3
Page 90
Architecture des ordinateurs V1.1
Deuxième exemple


Faire la somme du
tableau situé à l’adresse
DS:0 d’une taille de 10
éléments et mémoriser le
résultat à l’adresse
DS:20
LA zone de mémoire
peut être initialisée parla
commande debug :
FDS:0,20,1
Page 91
Architecture des ordinateurs V1.1
Deuxième exemple

Programme à l’adresse cs:200
Page 92
Architecture des ordinateurs V1.1
Troisième exemple

Recopier le tableau de caractères
ASCIIZ situé à l’adresse DS:0, à
l’adresse DS:20
Page 93
Architecture des ordinateurs V1.1
Unités E/S
94
Architecture des ordinateurs V1.1
Unités E/S
95
Architecture des ordinateurs V1.1
Câblage des E/S
Les E/S peuvent être mappées en mémoire
-> Une partie de la mémoire est réservée pour les E/S
Les E/S peuvent être mappées dans l’espace E/S (processeurs x86)
-> Pas de pertes d’espace mémoire
96
Architecture des ordinateurs V1.1
E/S par scrutation
97
Architecture des ordinateurs V1.1
E/S par interruption
98
Architecture des ordinateurs V1.1
E/S par accès direct à la
mémoire
99
Architecture des ordinateurs V1.1
Bus E/S
100
Architecture des ordinateurs V1.1
Protocole des bus
101
Architecture des ordinateurs V1.1
Protocole maitre-esclave
102
Architecture des ordinateurs V1.1
Caractéristique d’un bus :
cadencement synchrone
103
Architecture des ordinateurs V1.1
Caractéristique d’un bus :
cadencement asynchrone
104
Architecture des ordinateurs V1.1
Caractéristique d’un bus :
arbitrage
105
Les Interruptions
Architecture des ordinateurs V1.1
Utilité des interruptions
107
Architecture des ordinateurs V1.1
Fonctionnement
108
Architecture des ordinateurs V1.1
Traitement des interruptions
109
Architecture des ordinateurs V1.1
Sauvegarde du contexte
110
Architecture des ordinateurs V1.1
Pile système
111
Architecture des ordinateurs V1.1
Vecteur d’interruption
112
Architecture des ordinateurs V1.1
Signaux d’interruption
matériels
113
Architecture des ordinateurs V1.1
Indicateur d’interruption
114
Architecture des ordinateurs V1.1
Problème posé par le traitement
des interruptions périodiques


Le traitement des interruptions
périodiques occasionnent un
ralentissement des programmes hors
interruption.
Si le programme d’interruption est trop
long il peut bloquer tout le système.
115
Architecture des ordinateurs V1.1
116
Cas d’une seule interruption périodique
Code
exécuté
P0
Boucle de
scrutation
P1
I1
I1
code
d'interruption
ty1
T1

t
Pour ne pas perdre des signaux d'interruptions ou
pour éviter une récursion infinie ont doit avoir :
ty1 < T1
Architecture des ordinateurs V1.1
117
Cas d’une seule interruption
périodique
P0
Code
exécuté
Boucle de
scrutation
P1
I1
I1
code
d'interruption
ty1
T1

t
La durée de traitement de P0 se trouve multiplié par un
facteur K égal environ à :
T1
K
T1  ty1
Architecture des ordinateurs V1.1
118
Cas de plusieurs interruptions traitées
de façon séquentielles
P0
Code
exécuté
I1
I2
I1
I2
Boucle de
scrutation
P1
code
d'interruption
ty1
P2
ty2
code
d'interruption
T2
T1
retard dans le
traitement de P2
du au mécanisme
d'it non emboîté
t

Pour ne pas perdre des signaux d'interruptions ou
pour éviter une récursion infinie ont doit avoir :
ty1 +ty2 < T2
( T2 < T1 )
Architecture des ordinateurs V1.1
119
Cas de plusieurs interruptions traitées
de façon séquentielles
P0
Code
exécuté
I1
I2
I1
I2
Boucle de
scrutation
P1
code
d'interruption
ty1
P2
ty2
code
d'interruption
T2
T1
retard dans le
traitement de P2
du au mécanisme
d'it non emboîté
t

Pour ne pas perdre des signaux d'interruptions ou
pour éviter une récursion infinie ont doit avoir :
ty1 +ty2 < T2
( T2 < T1 )
Architecture des ordinateurs V1.1
120
Cas de plusieurs interruptions traitées
de façon emboitées
Code
exécuté
I2
I2
I1 I2
I2
I2
I2
I1
P0
P1
P2
ty2
T2
t
T1

Pour ne pas perdre des signaux d'interruptions ou
pour éviter une récursion infinie ont doit avoir :
ty2 < T2 ET ty1 < T1 ( T2 < T1 )
Architecture des ordinateurs V1.1
121
Cas de plusieurs interruptions
traitées de façon séquentielles
Code
exécuté
I2
I2
I1 I2
I2
I2
I2
I1
P0
P1
P2
ty2
T2
t
T1

La durée de traitement de P1 se trouve multiplié par un
facteur K2 égal environ à : K2  T2
T2 -ty2

La durée de traitement de P0 se trouve multiplié par un
T1
facteur K1égal environ à : K1 
T1 -  ty1  K 2 
Architecture des ordinateurs V1.1
Interruption spéciale
122
Architecture des ordinateurs V1.1
123
Mise sous tension d’un
ordinateur à processeur x86



A la mise sous tension le processeur est en mode 16 bits
(mode réel) et peut adresser 1Mi octets mémoire
(1024*1024).
Le compteur ordinal effectue une recherche d’instruction dans
les 16 derniers octets de la mémoire soit FFFF016.
A cet emplacement se trouve de la mémoire ROM : le BIOS de
la machine.


Le BIOS prend le contrôle cherche un disque comportant une partition
active.

Le chargeur du BIOS charge en mémoire le contenu du secteur de
démarrage du disque (Master Boot Record) à l’adresse 102410 = 40016 .
Cet emplacement contient l’adresse du chargeur système.
Le BIOS effectue ensuite un saut à l’adresse 40016
Architecture des ordinateurs V1.1
Chargement du système
d’exploitation de type Windows




A l’adresse 40016 est placé le code permettant de déterminer
l’emplacement sur le disque (piste, secteur, cylindre) de
l’amorce du système d’exploitation.
Le processeur exécute cette portion de code ce qui provoque le
chargement en mémoire du code d’amorce du S.E. Puis un saut
est effectué à adresse de code d’amorce.
Le code d’amorce fait passer le processeur en mode protégé
(adressage sur 32bit) puis un mini système d’exploitation est
chargé en mémoire (WindowsPE). A ce niveau (par appui sur
F8) il est possible d’effectuer une maintenance système.
WindowsPE charge ensuite en mémoire le système
d’exploitation complet et le lance.
124
Téléchargement