Nicolas Louvet – Architecture des ordinateurs : introduction.

Transcription

Nicolas Louvet – Architecture des ordinateurs : introduction.
Architecture des ordinateurs : introduction.
1
2
3
Organisation de l'ordinateur par niveaux
Repères historiques
La préhistoire. . .
1945-1955 : les tubes électroniques
1955-1980 : miniaturisation
1980 : le VLSI
Conclusion
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
1 / 20
Un ordinateur ne peut exécuter qu'un nombre resteint d'instructions :
additionner deux nombres,
tester l'égalité d'un nombre à zéro,
copier des données d'une zone de la mémoire à une autre, . . .
L'ensemble de ces instructions de base forme un langage appelé langage
machine, qui permet de programmer l'ordinateur : on appelle programme la
séquence d'instructions décrivant la réalisation d'un certain traitement.
Le langage machine est si élémentaire qu'il est fastidieux de programmer ainsi.
Pour faciliter la tâche du programmeur, des niveaux d'abstraction s'empilent
donc au dessus du matériel : on parle d'organisation par niveaux de l'ordinateur.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
2 / 20
Niveaux 0 et 1
Niveau 0, porte logiques : ces portes permettent à l'ordinateur d'eectuer des
traitements de données élémentaires.
Chaque porte présente des entrées prenant comme valeur 0 ou 1, et applique à
ces entrées une fonction logique simple : NOT, AND, OR. . . Les ordinateurs
manipulent donc de façon privilégiée des informations codées en binaire.
Vcc
Vs
V1
V2
Vs = V1 + V2
V1
V2
Vs
Niveau 1, micro-architecture : avec les portes logiques, on peut concevoir des
unités de traitement évoluées. Le niveau micro-architecture comprend tout le
matériel chargé de l'exécution eective des instructions du langage machine.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
3 / 20
Ex :
diagramme repésentant la micro-architecture du processeur Intel 8080 :
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
4 / 20
Niveau 2, architecture
L'architecture décrit le principe général de fonctionnement de l'ordinateur, pour
permettre à un programmeur de l'utiliser au travers du langage machine.
Dénir une architecture, c'est dénir tous les attributs d'un ordinateur qui sont
visibles au programmeur lorsqu'il programme en langage machine.
Citons quatre attributs dénissant une architecture :
le jeu d'instructions qui compose le langage machine,
les registres que le programmeur peut utiliser,
la manière dont la mémoire de l'ordinateur est organisée,
les types de données élémentaires (entiers, nombres ottants).
On parle aussi d'ISA pour Instruction Set Architecture.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
5 / 20
Ex :
jeu d'instructions de l'architecture LC3 :
instruction
action
NOT DR,SR
ADD DR,SR1,SR2
ADD DR,SR1,Imm5
AND DR,SR1,SR2
AND DR,SR1,Imm5
LEA DR,label
LD DR,label
ST SR,label
LDR DR,BaseR,Oset6
STR SR,BaseR,Oset6
LDI DR,label
STI SR,label
BR[n][z][p] label
NOP
JMP BaseR
RET (JMP R7)
JSR label
JSRR BaseR
RTI
TRAP Trapvect8
Réservé
DR <- not SR
DR <- SR1 + SR2
DR <- SR1 + SEXT(Imm5)
DR <- SR1 and SR2
DR <- SR1 and SEXT(Imm5)
DR <- PC + SEXT(PCoset9)
DR <- mem[PC + SEXT(PCoset9)]
mem[PC + SEXT(PCoset9)] <- SR
DR <- mem[BaseR + SEXT(Oset6)]
mem[BaseR + SEXT(Oset6)] <- SR
DR <- mem[mem[PC + SEXT(PCoset9)]]
mem[mem[PC + SEXT(PCoset9)]] <- SR
Si (cond) PC <- PC + SEXT(PCoset9)
No Operation
PC <- BaseR
PC <- R7
R7 <- PC ; PC <- PC + SEXT(PCoset11)
R7 <- PC ; PC <- BaseR
cf. interruptions
R7 <- PC ; PC <- mem[Trapvect8]
nzp
*
*
*
*
*
*
*
*
*
codage en langage machine
opcode
arguments
F E D C B A 9 8 7 6 5 4 3 2 1 0
1001
DR
SR
111111
0001
DR
SR1
0 00
SR2
0001
DR
SR1
1
Imm5
0101
DR
SR1
0 00
SR2
0101
DR
SR1
1
Imm5
1110
DR
PCoset9
0010
DR
PCoset9
0011
SR
PCoset9
0110
DR
BaseR
Oset6
0111
SR
BaseR
Oset6
1010
DR
PCoset9
1011
SR
PCoset9
0000
n z p
PCoset9
0000
0 0 0
000000000
1100
000
BaseR
000000
1100
000
111
000000
0100
1
PCoset11
0100
0 00
BaseR
000000
1000
000000000000
1111
0000
Trapvect8
1101
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
6 / 20
Niveau 3, système d'exploitation
Le système d'exploitation est un programme qui introduit un niveau
d'abstraction entre le programmeur (ou plus généralement l'utilisateur d'une
machine), et le matériel.
Il fournit au programmeur une interface de gestion du matériel (mémoire,
périphériques, exécution des programmes. . . ) identique sur de nombreuses
architectures diérentes.
Ex :
Linux
a été adapté à de nombreuses architectures : ARM, x86, Power. . .
Si un programmeur écrit un programme qui réalise des accès au disque dur en
utilisant les primitives fournies par Linux, ce programme fonctionnera
correctement sur ARM, x86 ou PowerPC.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
7 / 20
Niveaux 4 et 5
Niveau 4, langage d'assemblage : langage intermédiaire permettant au
programmeur de coder plus facilement qu'en langage machine.
Les programmes écrits en langage d'assemblage sont traduits en langages de
niveaux 2 et 3 à l'aide d'un programme appelé assembleur.
Niveau 5, langage de programmation : langages tel le C, le C++ ou le Caml, qui
fournissent un haut niveau d'abstraction, pour réaliser des logiciels complexes.
Les programmes codés dans ces langages sont traduits en langage d'assemblage
par des compilateurs (par exemple GCC, ICC ou CLANG pour le C/C++).
Ex :
compiler/assembler un petit programme C avec gcc
Nicolas Louvet Architecture des ordinateurs : introduction.
-O0 -Wa,-alh
6 octobre 2016
8 / 20
niveau 5
langages de haut niveau
niveau 4
langage d’assemblage
niveau 3
systeme d’exploitation
niveau 2
architecture
niveau 1
micro−architecture
niveau 0
circuits logiques
compilateur
assembleur
primitives
La compréhension de chacun de ces niveaux permet de
maîtriser la complexité de l'ordinateur :D
On partira des circuits logiques pour remonter jusqu'au langage
d'assemblage en enjambant allégrement le système d'exploitation. Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
9 / 20
Plan
1
2
3
Organisation de l'ordinateur par niveaux
Repères historiques
La préhistoire. . .
1945-1955 : les tubes électroniques
1955-1980 : miniaturisation
1980 : le VLSI
Conclusion
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
10 / 20
La préhistoire. . .
Premiers moyens de calcul purement manuels : systèmes de numération.
Moyen de calcul mécaniques :
La machine de Pascal (1623-1662) : additions et soustractions en décimal.
La machine de Liebniz (1646-1716) : multiplications et divisions en décimal.
La machine analytique de Babbage
(1792-1871) : première machine capable de
lire des instructions sur des cartes
perforées, et disposant d'une mémoire.
Considérée comme le premier ordinateur.
Le développement de calculateurs mécaniques se poursuivra jusqu'au XXe siècle.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
11 / 20
Au début du XXe siècle, se développent des calculateurs basés sur l'utilisation
de relais électromécaniques.
Citons par exemple :
Les machines construites en Allemagne par Konrad Zuse entre 1930 et
1944 : apparition du calcul binaire.
Le Mark I, utilisé à Harvard à partir de 1944, possédait 72 mots de 23
chires décimaux, et le temps d'exécution d'une instruction était de 6 s.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
12 / 20
1945-1955 : les tubes électroniques
Principe du tube triode : l'intensité du courant circulant entre l'anode et la
cathode dépend de la tension de la grille.
lampe triode
vide
anode +
grille
cathode −
e−
Citons les machines suivantes :
Le COLOSSUS, développé par les Britanniques, et opérationnel dès 1943.
L'ENIAC, à Philadelphie, achevé en 1946 :
I
I
I
utilisait 18000 tubes à vides, 1500 relais,
pesait 30 T, et consommait 140 kW,
comportait 20 registres de 10 chires décimaux.
L'ENIAC restait un gros calculateur électronique : le programme était entré
manuellement en utilisant 6000 commutateurs multipositions. . .
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
13 / 20
En 1936, Alan Turing propose un modèle de machine abstraite universelle, an
de préciser le concept d'algorithme.
En 1945, John von Neumann propose le premier modèle d'ordinateur au sens
moderne du terme :
une mémoire, qui contient à la fois les données et les programmes,
un processeur, qui comporte
I
I
l'unité arithmétique et logique qui eectue les opérations en binaire,
l'unité de contrôle qui interprète les instructions des programmes, et
provoque leur exécution.
les entrées/sorties pour l'interaction avec l'environnement extérieur.
Mémoire centrale
Unité de contrôle
Unité Arithmétique
et Logique
Unité
d’Entrées/Sorties
Unité centrale de traitement
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
14 / 20
Parmi les première implantations du modèle de von Neumann, on trouve :
•
Le Manchester Mark I, opérationnel en 1949 :
Mémoire composée de mots de 40 bits,
chacun codant soit deux instructions de
20 bits, soit un entier signé de 40 bits.
Chaque instruction compte 10 bits indiquant son type, et 10 bits d'adresse.
• l'IAS computer
à Princeton, opérationnel en 1952.
Mémoire de 4096 mots de 40 bits. Une
instruction comporte 8 bits pour son
type, et 12 bits spéciant une adresse.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
15 / 20
1955-1980 : miniaturisation
Le transistor a été inventé en 1948 dans les laboratoires Bell par Bardeen, Brattain et Shockley (prix
Nobel en 1956).
Par exemple, IBM lance en 1964 le 7094, comportant environ 50000 transistors :
il possédait 32536 mots de 36 bits, et exécutait ses instructions en 2 µs.
Programmation en FORTRAN ou COBOL.
En 1958, Jack Kilby propose un procédé permettant de graver
de nombreux transistors sur un même plaque de silicium, et
crée le premier circuit intégré (prix Nobel en 2000).
En 1971, le 4004 d'Intel est le premier microprocesseur commercialisé :
processeur 4 bits, cycle de 10.6 µs, 2300 transistors sur 10 mm2 .
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
16 / 20
1980 : Very Large Scale Integration (VLSI)
En 1965, Gordon Moore observait que le nombre de transistors que l'on pouvait
intégrer sur puce avec une technologie économiquement viable doublait environ
tous les 18 mois : loi de Moore.
nombre de transistors par puce
11
10
x2 tous les 18 mois
10
10
9
progression effective
10
Itanium 2
Itanium 2
8
10
Pentium 4 HT
Pentium 4
Itanium
Pentium 3
7
10
Pentium 2
Pentium Pro
Pentium
6
10
80486
80386
5
10
80286
8080
4
10
3
4004
10
1970
1975
1980
1985
1990
1995
2000
2005
2010
A partir de 1980, la technologie dite CMOS (Complementary Metal Oxyde
Semiconductor) se généralise : il devient possible d'intégrer des centaines de
milliers de transistors par puce. On parle de Very Large Scale Integration.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
17 / 20
Quelques mots sur l'amélioration des performances
On se place dans un modèle très simple :
programme séquentiel de N instructions,
f la fréquence du processeur,
IPC nombre d'instructions exécutées par cycle.
Temps d'éxécution du programme :
T=
N
IPC × f
.
Augmenter IPC : améliorations architecturales, comme l'exécution superscalaire.
,→ augmentation du nombre de transistors.
Augmenter f : nécessite des transistors plus rapides.
,→ diminution de la nesse de gravure.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
18 / 20
Par contre,
en augmentant la fréquence, on augmente la puissance totale à dissiper,
en diminuant la nesse, on augmente la puissance par unité de surface.
On se situe déjà depuis le début des années 2000 aux environs de 100 W/cm2 .
les contructeurs ne pouvaient pas
continuer à améliorer les performances
dans ce modèle très séquentiel. . .
,→
,→
généralisation des multic÷urs.
Egalement : le calcul n'est plus ce qui est coûteux. Par exemple, en 45 nm :
0,05 pJ pour faire une addition 32 bits,
8 pJ pour transmettre une donnée de 32 bits d'1 mm sur la puce,
320 pJ pour sortir le même mot de la puce.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
19 / 20
Conclusion
Les ordinateurs permettent de couvrir un très large spectre d'applications, et
certains orent une puissance de calcul considérable.
Des interfaces ont été développées pour faciliter l'utilisation des ordinateurs.
D'autre part, le modèle par niveaux permet au programmeur d'eectuer son
travail sans se préoccuper des détails architecturaux de sa machine. . .
Pourquoi donc étudier l'architecture des ordinateurs ?
Au delà de l'augmentation du nombre de transistors intégrés par processeur, et
celle de leur fréquence, de nombreuses innovations continent à être developpées
an d'améliorer la performance des machines.
Le programmeur doit être capable de comprendre les caractéristiques de sa
machine an de concevoir des programmes plus performants.
Nicolas Louvet Architecture des ordinateurs : introduction.
6 octobre 2016
20 / 20