Telechargé par mariemhajjem10

Architecture des Ordinateurs I-01

publicité
Architecture des
ordinateurs
Première année ingénieur
Mehrez ESSAFI
[email protected]
Année Universitaire 2018-2019
« Computer is everywhere »
© Mehrez Essafi
AU 2018-2019
2
Positionnement
Electronique
Mathématiques
Traitement
Communication
Fonctions logiques
Codage
Technologies
Systèmes
Périphériques
Connectiques
Standards
OS
Algorithmique
Modèles de programmation
© Mehrez Essafi
AU 2018-2019
3
Objectifs du cours
• Exposer le principe de fonctionnement des ordinateurs et
comment exécute le processeur les programmes en
interaction avec les autres composantes du système
• Comprendre à bas niveau, l’organisation de ces machines
et l‘impact de ses composants sur les performances.
• Développer les aptitudes requises pour la programmation
en assembleur.
© Mehrez Essafi
AU 2018-2019
4
Plan du cours
• Historique
• Représentation des données
• Architecture de base d’un ordinateur
• Amélioration des performances
• Les architecteurs multi-processeurs
© Mehrez Essafi
AU 2018-2019
5
Historique
Naissance du traitement automatique de l’information
© Mehrez Essafi
AU 2018-2019
6
Définitions
• Ordinateur : une machine de traitement de l’information.
Il est capable d’acquérir de l’information, de la stocker,
de la transformer en effectuant des traitements
quelconques, puis de la restituer sous une autre forme.
• Informatique = information et automatique.
• Information : ensemble de données. Il y a différents
types d’informations : textes, nombres, sons, images,
etc., mais aussi les instructions composant un
programme.
© Mehrez Essafi
AU 2018-2019
7
Le calcul par tables (logarithmes,
trigonométrie, …)
Problème des erreurs (calcul et saisie)
© Mehrez Essafi
AU 2018-2019
8
Histoire : Epoque mécanique
• 500 av. J.C : Premiers outils mécanique de calcul :
l’abaque et le boulier.
• 1580 : John NAPIER (Neper) invente les logarithmes
• 1642 : Pascal met au point la Pascaline (additions et
soustractions).
L’abaque
© Mehrez Essafi
La pascaline
AU 2018-2019
9
Histoire : Epoque mécanique
• 1673 : Gottfried Wilhelm Von Leibniz
améliore la Pascaline (multiplier et diviser).
• 1679 : Francis Bacon invente la base du
langage binaire
• 1725 : La première machine programmable
fût inventée : métier à tisser (à un ruban
troué puis à cartes perforées).
Métier à tisser
Leibniz
© Mehrez Essafi
AU 2018-2019
10
Histoire : Epoque mécanique
• 1820: Arith-méto-mètre de Thomas de Colmar : première
machine à calculer
Colmar
© Mehrez Essafi
AU 2018-2019
11
Histoire : Epoque mécanique
• 1832 : La Machine à différences
Charles Babbage
1791-1871
Le principe : Nème différence d’un polynôme de degré N est constante.
Exemple la suite des cubes : 0 - 1 - 8 - 27 - 64 - 125 - 216 - 343
les différences sont 1 - 7 - 19 - 37 - 61 - 91 - 127
puis 6 - 12 -18 - 24 - 30 - 36
puis 6 - 6 - 6 - 6 – 6
 calculer les valeurs de n’importe quel polynôme  de n’importe quelle fonction (grâce aux développements limités) uniquement
avec des additions, opérations faciles à mécaniser.
© Mehrez Essafi
AU 2018-2019
12
La machine analytique
1833 : "The engine eating its own tail"
1834 - 36 :
– Séparation entre le "store" (magasin des
nombres) et le "mill" (moulin, pour le calcul)
– La circulation de l'information et la répétition
des calculs est contrôlée par des "barrels"
(cylindres à picot)
– Contrôle de l'exécution (programme) par des
cartes perforées (Jacquard)
© Mehrez Essafi
AU 2018-2019
13
La machine analytique 1838
Design général finalisé
© Mehrez Essafi
AU 2018-2019
14
Machine Analytique de Charles
Babbage,
Exposée au « Science Museum » de Londres
© Mehrez Essafi
AU 2018-2019
15
Premier programme au monde
• Résolution d'un système d'équations du
premier degré à 2 inconnues
© Mehrez Essafi
AU 2018-2019
16
Cartes de variables et d'opérations
l'activité de la machine est
cadencée par l'unité de contrôle
© Mehrez Essafi
AU 2018-2019
17
Cycle d'exécution
1) le prisme porteur de carte pousse des biellettes pour sélectionner le(s)
cylindre(s) concerné(s) par l'opération (les cartes de variables agissent
directement)
2) En tournant sur lui-même, le cylindre provoque (par ses picots) le
déplacement de biellettes qui dirigent les échanges entres les axes
verticaux (du magasin et/ou du moulin)
3) la rotation du cylindre est autocontrôlée, sauf si le levier de retenue a été
levé par le moulin. Le cylindre peut revenir en arrière (traitement itératif).
4) Quand le tour est terminé, la carte suivante est lue Unité : temps du
déplacement pour une valeur sur une roue (0.16 s. env.)
15 u. pour un transfert mémoire/mémoire
20 u. (3 s.) pour une addition avec report retenue
4 min pour une multiplication (au pire)
© Mehrez Essafi
AU 2018-2019
18
Jeu d'instructions
• L'association cartes/cylindres permet de faire
exécuter à la machine toutes sortes d'instructions
- dans les limites du nombre de picots/tour de cylindre (80?)
- à partir des capacités élémentaires du moulin
• C'est toujours une question essentielle pour le
concepteur d'ordinateur
© Mehrez Essafi
AU 2018-2019
19
Babbage voulais faire un
"calculateur universel", mais
• Sa machine est inadaptée au calcul symbolique, comme
le traitement du texte. Elle entrerait aujourd'hui dans la
gamme des machines "scientifiques", dédiées au calcul
intensif
• Il ne savait pas ce qu'est un nombre calculable (ou non
calculable)
• Le jeu d'instructions de Babagge est assez complexe, et
nulle part décrit complètement.
Un émulateur (applet Java) écrit par J. Walker :
http://www.fourmilab.ch/babbage/
© Mehrez Essafi
AU 2018-2019
20
Codage des instructions
• Il y a 16 instructions différentes : 20 trous pour les différencier
• Les nombres sont sur 40 chiffres et un signe : 41 trous pour coder
une valeur
• Si on veut attribuer la même taille de carte aux différents types
Il faut coder les numéros de cases sur 20 trous
Soit on permet une machine à 10^20 cases, soit on reste avec 1000 cases et
on gaspille 76% des trous pour les cartes du premier type
=> carte de 2 + 60 = 62 trous de long et 10 (ou 9) de large
© Mehrez Essafi
AU 2018-2019
21
Carte IBM 80 colonnes
© Mehrez Essafi
AU 2018-2019
22
Histoire – Epoque électromécanique
• 1890: Hollerith construisit une machine électromécanique pour
faciliter les opérations de recensement (essentiellement des tris et
des comptages).
• 1904 : Invention du premier tube à vide, la diode par John Fleming.
tube à vide
Hollerith
© Mehrez Essafi
AU 2018-2019
23
Histoire – Epoque électromécanique
• 1937 : George Stibitz crée le premier circuit binaire, un
additionneur (Model K)
• 1937 : Alan M. Turing publie un document sur les
nombres calculables.
• 1938 : Claude Shannon fait le lien entre les circuits
électriques et l’algèbre Booléenne. Il définit le chiffre
binaire : bit (BInary digiT).
© Mehrez Essafi
AU 2018-2019
24
Histoire – Epoque électromécanique
• 1941 : Konrad Zuse, met au point le Z3, le premier
calculateur avec programme enregistré , il pouvait
stocker 64 nombres de 22 bits et réaliser 4 additions par
seconde et une multiplication en 4 secondes.
Konrad Zuse, Z1
© Mehrez Essafi
AU 2018-2019
25
Les projets militaires 1945
© Mehrez Essafi
AU 2018-2019
26
Les projets militaires
© Mehrez Essafi
AU 2018-2019
27
L’arrivée de l’électronique
© Mehrez Essafi
AU 2018-2019
28
Performance machine 
•
•
•
•
•
•
•
Cadencé par une horloge à 0.1 MHz
Addition : 0.2 ms
Multiplication : 3 ms
Division : 30 ms
20 cases mémoires de 10 chiffres
18000 tubes
70000 résistances, 10000 condensateurs, 6000
interupteurs
• Consommation de 140 KW
• 35 m de long, 3 m de haut, 12 cm de profondeur, 30
tonnes
© Mehrez Essafi
AU 2018-2019
29
EDVAC : von Neuman (et al.)
•
Juin 1945 : "First draft of a report on the EDVAC" par John von Neuman
•
1946 : "Preliminary discussion of the logical design of an electronic
computing instrument" par Burks, Goldstine et von Neuman
•
Une machine binaire (calculs et mémorisation)
•
•
4000 cases de 40 bits (2^40 = 10^12 bits)
Horloge de base 1MHz
•
Le programme est conservé dans la même mémoire que les données : il
devient lui aussi susceptible de modifications
 définition de l'ordinateur : calculateur automatique à programme enregistré
© Mehrez Essafi
AU 2018-2019
30
Machine de von Neuman 1952
Von Neumann with the first Institute computer
© Mehrez Essafi
AU 2018-2019
31
Le temps partagé (time sharing) :
MIT, 1959-1964
© Mehrez Essafi
AU 2018-2019
32
Douglas Engelbart : augmenting
human intellect"(1963)
© Mehrez Essafi
AU 2018-2019
33
L'ordinateur de bureau Alto 1973
Laboratoire d'informatique du XEROX
PARC
B. LAMPSON, Ch. THACKER, R. TAYLOR
• OS temps partagé + interface graphique
multi-fenêtres
• Ecran N&B 606 x 808 pixels (80 ppi)
• Clavier séparé, reconfigurable, mesure
de force et durée
• Souris 3 boutons
• 2 disques durs de 3 Mo pour le stockage
local
• Ethernet
• Imprimante laser
© Mehrez Essafi
AU 2018-2019
34
Représentation des
données
Le chiffre binaire
• Toute information traitée par un ordinateur, quelque soit
son types (texte, nombres, etc.) est représentée et
manipulée sous forme binaire (0 ou 1).
• L’unité d’information est le chiffre binaire (0 ou 1), appelé
bit (binary digit).
• Le codage : établir une correspondance entre la
représentation externe (habituelle) de l’information et sa
représentation interne dans la machine, qui est une suite
de bits.
• La représentation binaire est simple, facile à réaliser
techniquement à l’aide de bistables (système à deux
états réalisés à l’aide de transistors).
• Les opérations arithmétiques de base sont faciles à
exprimer en base 2.
© Mehrez Essafi
AU 2018-2019
36
Changements de bases
• Habituellement, on utilise la base 10
• En base b, on utilise b chiffres.
• Notons ai la suite des chiffres utilisés pour écrire un
nombre
x = an an-1…a1a0
• a0 est le chiffre des unités.
– En décimal, b = 10, ai  {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
– En binaire, b = 2, ai {0, 1} 2 chiffres binaires, ou bits ;
• – En hexadécimal, b = 16, ai {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
A, B, C, D, E, F} (on utilise les 6 premières lettres
comme des chiffres).
© Mehrez Essafi
AU 2018-2019
37
Représentation des nombres
entiers
• En base 10, le nombre
1996 = 1*103 + 9*102 + 9*101 + 6*100
• Dans le cas général, en base b, le nombre représenté
par une suite de chiffres
anan-1…a1a0 est donné par :
a0 est le chiffre de poids faible, et an le chiffre de poids fort.
• Exemple en base 2 :
(101)2 = 1*22 + 0*21 + 1*20 = 4 + 0 + 1 = 5
• La notation ( )b indique que le nombre est écrit en base
b.
© Mehrez Essafi
AU 2018-2019
38
Représentation des nombres
fractionnaires
• Les nombres qui comportent des chiffres
après la virgule.
(12,346)10= 1*101 + 2*100 + 3*10-1 + 4*10-2 + 6*10-3
(anan-1…a1a0,a-1a-2…a-p)b= anbn+an-1bn-1+…+a0b0+a-1b-1+…+a-pb-p
© Mehrez Essafi
AU 2018-2019
39
Passage d’une base quelconque
à la base 10
Exemple en hexadécimal :
(AB)16=10*161 + 11*160 = 160 + 11 =(171)10
© Mehrez Essafi
AU 2018-2019
40
Passage de la base 10 vers une
base quelconque
• Nombres entiers
Par divisions successives.
Divise le nombre par la base, puis le quotient
obtenu par la base, et ainsi de suite jusqu’a
obtention d’un quotient nul.
La suite des restes obtenus correspond aux
chiffres dans la base visée, a0a1…an.
© Mehrez Essafi
AU 2018-2019
41
Passage de la base 10 vers une
base quelconque
• Nombres fractionnaires
Multiplier la partie fractionnaire par la base
en répétant l’opération sur la partie
fractionnaire du produit jusqu’a ce qu’elle
soit nulle (ou que la précision voulue soit
atteinte).
Pour la partie entière, procéder par divisions
comme pour un entier.
© Mehrez Essafi
AU 2018-2019
42
Cas des bases 2, 8 et 16
• Ces bases correspondent à des
puissances de 2 (21; 23 et 24), d’où des
passages de l’une à l’autre très simples.
• Les bases 8 et 16 sont très utilisées en
informatique, elles permettent de
représenter rapidement et de manière
compacte des configurations binaires.
• La base 8 est appelée notation octale, et
la base 16 notation hexadécimale.
© Mehrez Essafi
AU 2018-2019
43
Opérations arithmétiques
Les opérations arithmétiques s’effectuent
en base quelconque b avec les mêmes
méthodes qu’en base 10. Une retenue ou
un report apparait lorsque l’on atteint ou
dépasse la valeur b de la base.
© Mehrez Essafi
AU 2018-2019
44
Codification des nombres entiers
• Problème
– un nombre mathématique peut prendre des valeurs
arbitrairement grandes, tandis que le codage dans
l’ordinateur doit s’effectuer sur un nombre de bits fixé.
• Entiers naturels
– Les entiers naturels (positifs ou nuls) sont codés sur
un nombre d’octets fixé (un octet est un groupe de 8
bits). On rencontre habituellement des codages sur 1,
2 ou 4 octets, plus rarement sur 64 bits
– Un codage sur n bits permet de représenter tous les
nombres naturels compris entre 0 et 2n-1. Par
exemple sur 1 octet, on pourra coder les nombres de
0 à 255 = 28-1.
© Mehrez Essafi
AU 2018-2019
45
Codification des nombres entiers
• Entiers relatifs
– Il faut coder le signe du nombre. Utiliser le codage en
complément à deux, qui permet d’effectuer ensuite
les opérations arithmétiques entre nombres relatifs de
la même façon qu’entre nombres naturels
• Entiers positifs ou nuls : Représenter le nombre en base 2
et ranger les bits comme pour les entiers naturels.
Cependant, la cellule de poids fort est toujours à 0 : on utilise
donc n-1 bits.
– Le plus grand entier positif représentable sur n bits en relatif est
donc 2n-1-1.
© Mehrez Essafi
AU 2018-2019
46
Codification des nombres entiers
– Entiers négatifs : Soit x un entier positif ou nul
représenté en base 2 sur n-1 bits
et soit
On constate facilement que
Or sur n bits, 2n-1 est représenté par n-1 zéros, donc on à x + y = 0
modulo 2n-1, ou encore y = -x.
y peut être considéré comme l’opposé de x.
La représentation de -x est obtenue par complémentation à 2n-1 de x. On
dit complément à deux.
© Mehrez Essafi
AU 2018-2019
47
Représentation des caractères
Les caractères, appelés symboles alphanumériques, incluent :
– les lettres
• majuscules
• minuscules
– les symboles de ponctuation (& ~ , . ; # " - etc...),
– les chiffres
Un texte, ou chaîne de caractères, sera représenté comme une suite
de caractères.
Le codage des caractères est fait par une table de correspondance
indiquant la configuration binaire représentant chaque caractère.
Les deux codes les plus connus sont :
– l’EBCDIC (en voie de disparition)
– le code ASCII (American Standard Code for Information Interchange)
© Mehrez Essafi
AU 2018-2019
48
Représentation des nombres
réels (norme IEEE)
Soit le nombre (3,25)10 = (11,01)2
Normaliser la représentation en base 2 
1,…* 2n
 (11,01)2 = 1,101*21
La représentation IEEE code (sur 32 bits) séparément :
– le signe du nombre (ici +)
– l’exposant n (ici 1)
– la mantisse (la suite de bits après la virgule)
Le codage a la forme :
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
– s=0  +
– s=1  -
© Mehrez Essafi
AU 2018-2019
49
Représentation des nombres
réels (norme IEEE)
• Les exposants 00000000 et 11111111
sont interdits :
– 00000000  que le nombre est dé-normalisé
– 11111111 indique Not A Number, sert a
signaler des erreurs de calculs, eg. division
par 0).
• Le plus petit exposant est ?
• Le plus grand exposant est ?
© Mehrez Essafi
AU 2018-2019
50
Téléchargement