Introduction. Structure d`un ordinateur

publicité
Chapitre 1
Introduction à
l’organisation des ordinateurs
et à l’assembleur
Jean Privat
Université du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleur
Automne 2013
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
1 / 33
Organisation des ordinateurs et
assembleur
Objectifs du cours
Comprendre comment un ordinateur fonctionne (en
vrai)
Apprendre à programmer directement un ordinateur
(en vrai)
Difficultés du cours
C’est un cours de programmation
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
2 / 33
Plan
1
Programmer en assembleur
2
Structure et fonctionnement d’un ordinateur
3
Le processeur Pep/8
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
3 / 33
Plan
1
Programmer en assembleur
2
Structure et fonctionnement d’un ordinateur
3
Le processeur Pep/8
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
4 / 33
Programmer en assembleur
Qui programme en assembleur ?
Développeurs de systèmes d’exploitation
Développeurs de pilotes
Développeurs de compilateurs et machines virtuelles
Développeurs de logiciels haute performance
Et les autres programmeurs ?
Ne veulent pas entendre parler d’assembleur
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
5 / 33
Pourquoi ce cours alors ?
Organisation des ordinateurs
Comprendre l’organisation des ordinateurs du point
de vue du programmeur
Car tout ce que fait l’ordinateur passe forcément par
le langage machine
Bonus
Apprendre à programmer autrement
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
6 / 33
Domaine d’étude
Structure typique d’un ordinateur
Applications
Langages de haut niveau (dits évolués)
Système d’exploitation
Assembleur et langage machine
Micro-architecture
Circuits logiques
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
7 / 33
Domaine d’étude
Structure typique d’un ordinateur
Applications
Langages de haut niveau (dits évolués)
Système d’exploitation
Assembleur et langage machine
Micro-architecture
Circuits logiques
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
7 / 33
Assembleur
Langage de programmation impératif
Séquences d’instructions
Boucles
Structures conditionnelles
Appels de sous-programmes
... Bref, rien de nouveau
Langage sans petites roues
pas de contrôle automatique
pas d’aide
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
8 / 33
Assembleur
Entités en œuvre
Le programmeur
Le langage (assembleur)
Le compilateur (assembleur)
Le moteur d’exécution (processeur ou simulateur)
Principes du génie logiciel fondamentaux
Discipline
Méthode
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
9 / 33
Assembleur
Définition
Forme symbolique des instructions du langage
machine
Exemple
x = a + b - c;
sera codé
OBT
AJT
SOU
RAN
A
B
C
X
Jean Privat (UQAM)
;
;
;
;
obtenir la
ajouter la
soustraire
ranger la
v a l e u r de A
v a l e u r de B
l a v a l e u r de C
v a l e u r da ns X
01 — Introduction
INF2170 — Automne 2013
10 / 33
Plan
1
Programmer en assembleur
2
Structure et fonctionnement d’un ordinateur
3
Le processeur Pep/8
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
11 / 33
Structure et fonctionnement
d’un ordinateur
Principes de base
Un ordinateur est une machine
Tout n’est que bits
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
12 / 33
Historique
Cailloux et abaques (-5000)
« Calcul » et « caillou » ont la même étymologie
Abaques = outils (bouliers, tablettes, etc.)
Machines mécaniques
Pascaline (1642) : une calculatrice
Machine analytique (1830) : programmable
Premiers vrais ordinateurs
MARK I (1937–1944) : électromécanique
ENIAC (1943–1946) : électronique
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
13 / 33
Machine de von Neumann
Principes
Un médium d’entrée
→ quantité virtuellement illimité de données
Une unité d’emmagasinage
→ même représentation interne (bits)
pour les instruction et les données
Une unité de calcul
→ arithmétique et logique
Un médium de sortie
→ quantité virtuellement illimité de résultats
Une unité de contrôle
→ interpréter les instructions
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
14 / 33
Machine de von Neumann
Entrée
(clavier)
Mémoire
Sortie
(écran)
Bus
Unité arithmétique
et logique
Registres
Unité de
contrôle
UCT
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
15 / 33
Mémoire
Élément central
Tout passe par là (programmes et données)
Ensemble fini de cellules
Chaque cellule
A une adresse
A un nombre fixe de bits
A une seule valeur à la fois
Est accessible très rapidement (nano seconde)
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
16 / 33
Mémoire
Tout n’est que bits
Un cellule mémoire de contient que des bits (des
nombres)
Toute information traitée par un ordinateur doit être
codée sous forme numérique
... Y compris les instructions machines
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
17 / 33
Mémoire : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
18 / 33
Mémoire : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
Jean Privat (UQAM)
Une interprétation possible
193 0 10 ; Obtenir mot en 10
113 0 12 ; Ajouter mot en 12
225 0 14 ; Ranger mot en 14
0 ; Terminer l’exécution
0 3 ; Entier 3 (Première opérande)
0 5 ; Entier 5 (Seconde opérande)
0 0 ; Entier 0
01 — Introduction
INF2170 — Automne 2013
18 / 33
Mémoire : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
Jean Privat (UQAM)
Une interprétation possible
193 0 10 ; Obtenir mot en 10
113 0 12 ; Ajouter mot en 12
225 0 14 ; Ranger mot en 14
0 ; Terminer l’exécution
0 3 ; Entier 3 (Première opérande)
0 5 ; Entier 5 (Seconde opérande)
0 8 ; Entier 8 (résultat)
01 — Introduction
INF2170 — Automne 2013
18 / 33
RAM/ROM
Mémoire vive ou RAM (random access memory)
Stocke les programmes et les données
Accessible en lecture et écriture
Mémoire morte ou ROM (read-only memory)
Contient de quoi amorcer l’ordinateur
Contient le code des primitives basiques
d’entrées-sorties (BIOS)
Accessible en lecture seulement
(voire en écriture par des moyens détournés)
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
19 / 33
Unités d’entrée-sortie
Communiquer avec l’extérieur
Humains et environnement
On parle communément de périphériques
Exemples
Clavier
Écran
Disque dur
Haut-parleur
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
20 / 33
Unité centrale de traitement (UCT)
Unité de calcul
Exécute les opérations logiques et arithmétiques
Unité de contrôle
Lit les instructions en mémoire
Fournit les opérandes à l’unité de calcul
Récupère les résultats de l’unité de calcul
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
21 / 33
Horloge
Synchronise les activités
Engendre un signal régulier (GHz)
Les activités de l’ordinateur sont synchronisées
Cycle d’horloge
La plus petite unité de temps
Une instruction peut nécessiter plusieurs cycles
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
22 / 33
Bus
Définition
Medium de communication entre les composantes
Ensemble de lignes de communication
Les bus sont spécialisés
Données → bus de donnée
Adresses → bus d’adresse
Signaux → bus de contrôle
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
23 / 33
Registres
Mémoire
Cellules mémoire de l’UCT
Accès plus rapide que la mémoire principale
(pas besoin de prendre le bus)
Contient
Stocke les opérandes, résultats, etc.
Sert au contrôle de l’ordinateur
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
24 / 33
Plan
1
Programmer en assembleur
2
Structure et fonctionnement d’un ordinateur
3
Le processeur Pep/8
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
25 / 33
Pep/8
Une machine de von Neumann très simple
Caractères US-ASCII (7 bits)
Mots de 16 bits (2 octets)
Mémoire de 216 octets (64 ko)
16 bits d’adresse
38 instructions (1 ou 3 octets)
6 registres
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
26 / 33
Pep/8
Registres
Accumulateur (A) : 1 mot (2 octets)
Index (X) : 1 mot
Compteur ordinal (PC) : 1 mot
Pointeur de pile (SP) : 1 mot
Mot d’état : 4 bits
Instruction : 1 ou 3 octets
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
27 / 33
Mot d’état Pep/8
4 bits de statut (NZVC)
N = 1 si négatif
Z = 1 si zéro
V = 1 si débordement (overflow)
C = 1 si retenu (carry)
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
28 / 33
Boucle d’exécution de l’UCT
L’UCT ne s’arrête jamais
Exécute continuellement les instructions
1 pas d’exécution = 4 étapes
Extraire le contenu de la cellule mémoire dont
l’adresse se trouve dans le compteur ordinal
Décoder l’instruction obtenue : extraire le code de
l’opération et les opérandes
Augmenter le compteur ordinal
Exécuter les opérations indiquées par l’instruction
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
29 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
A
PC
Instr
=
Jean Privat (UQAM)
0
0
0
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
0
A
0
PC
Instr 193 0 10
=
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
0
A
0
PC
Instr 193 0 10
= Ranger dans A le mot en 10
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
0
A
3
PC
Instr 193 0 10
= Ranger dans A le mot en 10
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
3
A
3
PC
Instr 193 0 10
= Ranger dans A le mot en 10
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
3
A
3
PC
Instr 113 0 12
=
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
3
A
3
PC
Instr 113 0 12
= Ajouter à A le mot en 12
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
3
A
6
PC
Instr 113 0 12
= Ajouter à A le mot en 12
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
8
A
6
PC
Instr 113 0 12
= Ajouter à A le mot en 12
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
8
A
6
PC
Instr 225 0 14
=
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
8
A
6
PC
Instr 225 0 14
= Ranger en 14 le mot de A
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
0
8
A
9
PC
Instr 225 0 14
= Ranger en 14 le mot de A
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
8
A
9
PC
Instr 225 0 14
= Ranger en 14 le mot de A
Jean Privat (UQAM)
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
A
PC
Instr
=
Jean Privat (UQAM)
8
9
0
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
A
PC
Instr
=
Jean Privat (UQAM)
8
9
0
Terminer l’exécution
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
A
PC
Instr
=
Jean Privat (UQAM)
8
10
0
Terminer l’exécution
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Cycle d’exécution : Exemple
0
5
10
15
193
0
10
113
0
12
225
0
14
0
0
3
0
5
0
8
A
PC
Instr
=
Jean Privat (UQAM)
8
10
0
Terminer l’exécution
Exécution d’une instruction
Obtenir l’instruction à partir du
compteur ordinal (PC)
Décoder l’instruction
Incrémenter PC
Exécuter l’instruction
01 — Introduction
INF2170 — Automne 2013
30 / 33
Instructions et données
Attention : pas de distinction pour l’UCT
L’UCT travaille en aveugle (tout n’est que des bits)
Le programmeur en assembleur est responsable
Erreur habituelle
Faire exécuter des trucs en mémoire qui ne sont pas
des instructions du programme
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
31 / 33
La semaine prochaine
Codage de l’information
Tout est des bits
... mais pas forcément rangés pareils
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
32 / 33
Bibliographie
Notes de cours
Chapitre 1 : Introduction
Chapitre 2 : Structure et fonctionnement d’un
ordinateur
Livre
Sections 1.1, 1.2, 1.3, 4.1 et 4.3
Programmes
01-exemple.pep
01-exemple.pepo
Jean Privat (UQAM)
01 — Introduction
INF2170 — Automne 2013
33 / 33
Téléchargement