Architecture des Ordinateurs

publicité
!
INSA-3IF
Architecture des
Ordinateurs!
Séance 2!
Christian Wolf,!
INSA-Lyon, Dép. IF!
# 1 C. Wolf
Au Menu!
CM1! ISA : Introduction. Jeux d’instructions,
assembleur.!
TD!
La « Micromachine » : réalisation d’un processeur
simple sur papier!
CM2! ISA : Encodage; Histoire!
TP!
Réalisation de la micromachine sous Logicworks!
CM3! Approfondissements, typologie, comparaisons!
CM4! Parallélisme : pipeline, processeurs superscalaires !
CM5! Hiérarchie mémoire!
TP!
Prise en main du controleur MSP 430
CM6! Les GPU !
TD!
Micromachine sur papier : les interruptions
TP!
MSP 430 : pile, timer, interruptions
# 2 C. Wolf
Sommaire de la séance!
!
!
Encodage!
!
!
!
Histoire; familles d’architectures
proposées par l’industrie!
!
!
!
# 3 C. Wolf
Encodage!
mov r3, r7
1110 0001 1010 0000 0011 0000 0000 0111
# 4
C. Wolf
Que doit on encoder?!
-  Le type d’instruction (mov, cmp, b, ldr)
-  Les modes d’adressage (direct, immédiat, indexé,
indirect etc.)!
-  Le choix des registres, le cas échéant!
-  La valeur immédiate, le cas échéant!
-  Les conditions éventuelles (égale, inférieur, carry etc.)!
-  Le plus compact que possible !
–  32 bit pour ARM!
–  16 bit pour ARM en mode « THUMB »!
–  Variable pour x86 (jusqu’à 120 bit)!
# 5 C. Wolf
Adressage … revisité!
mov
mov
cmp
ble
r2, #3
r3, #5
r2, r3
.L1:
mov r4, #2
b .L2
L’assembleur calculera
l’adresse de la destination du
branchement.!
Quelle est la taille de cette
adresse et combien de place
prend-elle dans l’instruction?!
L’encodage de l’instruction
est importante.!
.L1:
mov r4, #3
.L2:
!
# 6 C. Wolf
Encodage des instructions!
-  Objectifs : minimiser la taille des instructions!
-  Problème des tailles des adresses et des valeurs immédiates!
-  Philosophie « RISC » :!
–  instructions à tailles fixes, e.g. 32 bit!
–  Problème :!
•  les adresses sont plus longues que les instructions (ou longueur égale)!
•  les valeurs immédiates sont parfois plus longues que les instructions
(ou longueur égale)!
-  Solution ARM : !
–  12 bits disponibles pour encoder une valeur immédiate!
–  Construction d’une valeur par rotation binaire à droite :!
• 
• 
• 
• 
N=8 bit pour une valeur de base!
R=4 bit pour un décalage!
V= ROR (N, 2*R)!
Toutes les valeurs ne peuvent pas être représentées!!
# 7
C. Wolf
Taille des adresses!
Les restrictions sur les adresses ne posent pas forcement
de problèmes majeurs :!
-  Utilisation du mode PC-relative (surtout pour les sauts)!
-  Utilisation du mode indexé relatif au SP (variables
locales)!
-  Données complexes : utilisation de pointeurs (mode
registre indirect)!
# 8 C. Wolf
Encodage : types de données!
Les types ne sont pas encodés en mémoire.!
Les types sont désignés par l’instruction.!
–  Octet!
–  Entiers : demi-mot, mot, entier 64bit (complément à deux: IEEE
754) !
–  Float simple et double précision.!
–  Chaines de caractères (certaines architectures, comme x86)!
-  ARM : toute opération A/L est sur 32 bit; les types sont
gérés par les transferts entre registres et mémoire.!
# 9 C. Wolf
L’encodage des instructions ARM!
Reproduit de : Mark McDermott, U. Texas
# 10
C. Wolf
Instructions
pour le
traitement
de données!
# 11
C. Wolf
Encodage des conditions!
# 12
C. Wolf
Démo : assemblage d’une
instruction ARM!
mov r3, r7!
mov r3, #0x80000001!
(Décomposition en 4bit ROR (*2) + 8bit valeur)!
mov r3, r7 à e1a03007
1110 0001 1010 0000 0011 0000 0000 0111
mov r3, #0x80000001 à e3a03106
1110 0011 1010 0000 0011 0001 0000 0110
Value field = 0000 0110!
ROR field = 1 ==> rotation par 2 bits => !
1000 0000 …. 0001 = 0x80000001!
# 13
C. Wolf
Sommaire de la séance!
!
!
Encodage!
!
!
!
Histoire; familles d’architectures
proposées par l’industrie!
!
!
!
# 14
C. Wolf
C’est l’heure de l’histoire (1/7)!
-  Premier micro-processeur intégré : 4bit!
–  Intel 4004 (introduit en 1971) !
–  740khz, 2300 transistors, adresses de 12bit!
-  Ère 8 bit (Z80, MOS 6510 (Apple II, Commodore 64))!
!
–  Développé en 1982 sans CAO avec des cutters « Stanley » sur
sur une grande table (circuit en 6 couches)!
–  ~ 1 Mhz, !
–  Accumulateur + deux registres d’indexation!
–  Adresses 16bit (64kb mémoire max)!
–  56 instructions. Pas de multiplications, pas de flottants!
# 15
C. Wolf
C’est l’heure de l’histoire (2/7)!
-  Ère 16bit : Intel 8086!
–  Fondateur de l’architecture x86 !
–  Introduit en 1978, développé
« rapidement sous pression »!
–  La variante 8088 est adoptée par IBM
pour son premier PC!
–  5 Mhz à 10 Mhz, 20 000 transistors!
–  Registres 16 bit, bus externe de 20 bit
(8bit pour le 8088)!
–  Mémoire segmentée en segments de
64ko (adresses de 16 bit)!
–  4 registres générales + 4 registres pour
l’indexation!
–  Modèle registre-mémoire!
–  Multiplexage entre bus d’adresses et
bus de données!
!
# 16
C. Wolf
C’est l’heure de l’histoire (3/7)!
-  Ère 32bit : Motorola 68000 !
– 
– 
– 
– 
– 
– 
– 
Commodore Amiga, Apple Macintosh, Atari ST etc.!
Stations UNIX (Sun, Apollo) !
Registres et opérations en 32 bit!
Bus externe de 16 bit, adresses de 24 bit!
8 registres de données, 8 registres « d’adresses »!
56 instructions!
Instructions à deux opérandes, une source est modifiée!
# 17
C. Wolf
C’est l’heure de l’histoire (4/7)!
-  Ère 32bit : Intel 80386!
–  Introduit en 1987!
–  Ce jeu d’instruction (« i386 ») est
toujours le dénominateur le plus
commun de nos PC!
–  Registres 32 bit, max 40 Mhz.!
–  Possibilité d’avoir une mémoire
« flat » (segmentation)!
–  Support de mémoire virtuelle (paging)!
–  Protection accès mémoire (depuis le
80286)!
# 18
C. Wolf
C’est l’heure de l’histoire (5/7)!
-  Ère 32bit : ARM!
–  En 1987, Acorn Computers (UK)
introduit l’Acorn Archimedes, un home
computer basé sur une nouvelle
architecture ARM (« Acorn RISC
Machine »).!
–  En 1987 : 8Mhz, 512Kb-16MB RAM!
–  32 bit, 16 registres, j’en passe car
vous le connaissez bien l’ISA …!
# 19
C. Wolf
C’est l’heure de l’histoire (6/7)!
-  Ère 64bit : x86-64!
–  Intel ne souhaite pas étendre x86 à 64 bit, privilégiant une
nouvelle architecture « IA64 »!
–  En 2003, AMD saute sur le créneau et propose une extension,
proposée avec le processeur « Opteron »!
–  Intel cède sur la pression du marché et adopte la solution AMD
pour ses propres processeurs!
–  Registres de 64bit, adresses virtuelles de 64 bit!
–  16 registres au lieu de 8!
!
# 20
C. Wolf
C’est l’heure de l’histoire (6/7)!
-  Ère 64bit : ARM 64 bit!
–  Introduit en 2011, nommée ARM-v8-A!
–  Premier produit : iPhone!
–  Nouveau jeu d’instruction dans un mode
différent!
–  Mode compatibilité pour les applications
32 bit!
–  31 registres de 64 bit!
–  Instructions de taille 32 toujours,
quasiment identiques!
–  Toutes les instructions ne sont pas
conditionnelles!
–  Pas d’accès direct au PC!
# 21
C. Wolf
Intel x86
Intel IA64
IBM Power
ARM
Sun/Oracle SPARC
TI MSP430
# 22
C. Wolf
Intel x86!
-  Intel x86 : nos chers PC avec processeurs Intel ou AMD.!
-  Usine à gaz !
-  Plusieurs couches de registres issues de plusieurs
évolutions, à taille variables (16bit, 32bit, 64bit)!
-  Instructions à taille variable!
-  Une opérande des instructions arithmétiques peut se
trouver en mémoire !
-  Modèle registre-mémoire pour les entiers!
-  Modèle pile pour les flottants!
# 23
C. Wolf
Intel IA64!
- 
- 
- 
- 
- 
- 
Architecture 64 bit à ne pas confondre avec x86-64!
Conçu pour le calcul de haute performance!
VLIW (« Very long Instruction Word »)"
Paquets de 128 bits pour 3 instructions!
Indications claires sur le parallélisme!
Beaucoup d’informations passées du compilateur au
processeur de manière explicite!
-  La performance est au rendez-vous!
-  Pas de succès sur le marché!
# 24
C. Wolf
IBM Power!
-  Jeu d’instruction 32 bits dédiés pour les serveurs!
-  Aussi utilisé pour le processeur Cell utilisé dans la Sony
playstation 3 (la PS4 reprend une architecture x86)!
-  Jusqu’à 2006 utilisé par les ordinateurs Apple!
-  Possibilités d’avoir 4 opérandes :!
–  Fused multiply and add (FMA)"
–  Rd := Rx * Ry + Rz!
# 25
C. Wolf
Sun/Oracle SPARC!
-  Jeu d’instruction conçu pour les serveurs!
-  32 bits à trois opérandes!
-  Originalité : une fenêtre glissante de registres (idée
reprise plus tard par IA64)!
# 26
C. Wolf
ARM!
-  Utilisé pour le calcul embarqué : téléphones portables, tablettes!
-  Des cartes embarquées de performance assez élevée existent
avec des processeurs ARM associées à des GPU Nvidia (Nvidia
Jetson)!
-  RISC 32bit (un mode 16bit est disponible)!
-  Pas d’opérations arithmétique/logique directement sur la mémoire!
-  Pas de division!
-  Toutes les instructions peuvent être conditionnelles!
-  Barrel shifter : Toutes les valeurs peuvent être décalées sans cout!
!
# 27
C. Wolf
MSP 430!
-  Processeur traité en TP!
-  Jeu d’instructions pour micro-contrôleurs de très basse
consommation!
-  Un MC embarque processeur, mémoire, quelques
périphériques (timers), et interfaces E/S sur la même
puce!
-  Jeu d’instruction RISC 16 bit avec 16 registres. !
-  1 ou 2 opérandes. !
-  Les adresses sont stockées dans un mot
supplémentaire.!
# 28
C. Wolf
MSP 430!
# 29
C. Wolf
MSP 430!
# 30
C. Wolf
# 31
C. Wolf
Téléchargement