Cours No.1

publicité
INF6500 :
Structures des ordinateurs
Sylvain Martel - INF6500
1
Cours 1 : Processeur et unité
centrale de traitement
Sylvain Martel - INF6500
2
Instructions
Pipeline
Longueur pipeline
Type d’instructions
RISC
CISC
(Hybride)
Aléas
Structurels
Données
Contrôle
Répertoire d’instructions
Pile
Accumulateur
Registre-mémoire
Chargement-rangement
Nbre reg.
GPR
Special use
Types
LAE
EAE
EAL
Résoudre
Bulles
Bus Istr/Data
Registres
Ordonnancement
Envoi (forwarding)
Branchement pris
Branchement non-pris
Branchement différé
Format (Nombre d’opérandes)
2
3
Nombre et types de modes d’adressage
Sylvain Martel - INF6500
3
L’ordinateur moderne:
UCT, Mémoire et E/S + Bus
Sylvain Martel - INF6500
4
Carte mère (Motherboard)
Sylvain Martel - INF6500
5
Processeur (UCT)
Sylvain Martel - INF6500
6
Pentium
Mémoire
E/S
Sylvain Martel - INF6500
7
Mémoire (DRAM)
Sylvain Martel - INF6500
8
AGP
Bus
USB (Universal Serial Bus)
PCI
ISA
Sylvain Martel - INF6500
9
LPT
E/S
DIO
A/D
D/A
IDE
Floppy
(HD)
Sylvain Martel - INF6500
10
BIOS (Basic Input/Output System)
Sylvain Martel - INF6500
11
Contrôleurs
Contrôleurs
Sylvain Martel - INF6500
12
Misc.
Drivers
Buffers
Alimentation
Batterie
Sylvain Martel - INF6500
13
IR Transceiver
STM Interface (I/V Amplifier and A/D Converter)
Embedded Computer
64Kx16 SRAM
Central Controller (CPLD)
48 MIPS DSP
48 MHz Oscillator
Piezo-Drive Switching
Circuit (One Leg) Temperature
15 mm
Sensor
Analog Section Power Converters
Power
Amplifiers
STM Scan Tube
Driving Section
High Power Input Voltage Regulation
High Power Rectification Bridge
(Outside Section)
Sylvain Martel - INF6500
IR Emitters
14
Outside Layer
Simple UCT
Adresse SRAM
00
0101
01
0001
Décodeur
EXEC 0
Décodeur
Compteur
Data 0
Data 1
EXEC 15
Oscillateur
Sylvain Martel - INF6500
15
Simple UCT (Codes pour les
instructions)
SRAM
0101
0001
Sylvain Martel - INF6500
16
Pentium
Multiplication
Division
Sylvain Martel - INF6500
17
Pentium
Barrel Shifter
Sylvain Martel - INF6500
18
Pentium
SRAM (Cache)
Sylvain Martel - INF6500
19
Flot de conception VHDL
Sylvain Martel - INF6500
20
Conception VHDL
Sylvain Martel - INF6500
21
VHDL – Exemple: DFF
Sylvain Martel - INF6500
22
L’UCT
Mémoire
Instructions
Opérandes
Horloge (oscillateur)
Pipeline (UCT)
Résultats
Sylvain Martel - INF6500
23
Répertoire d’instructions et
modes d’adressage
Sylvain Martel - INF6500
24
Le jeux ou la liste d’instructions dépend
du type d’applications supporté par le
processeur et le type de processeur
† Applications du type:
„
„
„
„
„
Général (PC)
Communication
Graphique (jeux vidéo)
Traitements de signaux (radar, etc.)
Gadgets, équipements simples, etc.
† Type de processeurs (UCT)
„ Général (Pentium)
„ DSP (Digital Signal Processor)
„ « Micro-controller », etc.
Sylvain Martel - INF6500
25
La classification des jeux d’instructions
†
†
Définition d’un jeu d’instructions: Portion visible de la machine
pour les programmeurs ou les créateurs de compilateurs
La principale différence entre les différents jeux d’instructions
réside dans le type interne de stockage dans l’UCT
„
„
„
Sous forme d’une pile (stack)
Sous forme d’un accumulateur (accumulator)
Sous forme de registres (registers)
†
†
Registre mémoire (register memory)
Chargement rangement ou registre registre (resister register)
Sylvain Martel - INF6500
26
Pile
Pile
PUSH A
PUSH B
A
B
A
ADD
B
C
UCT (ALU)
Sylvain Martel - INF6500
POP C
27
Pile (suite)
Pour une expression du type: (A*B) – (B*C) – (A*D),
le système doit l'évaluer dans un ordre fixe,
donc souvent moins efficace et doit souvent
re-charger la même opérande plusieurs fois.
Sylvain Martel - INF6500
28
Accumulateur
Accumulateur
LOAD A
MEM
A
B
ACC
ADD
ADD
MEM
A
B
Sylvain Martel - INF6500
ACC
29
Registre (registre-mémoire)
1 LOAD A
MEM
3
A
B
C
2
R1
R2
ADD
2
Sylvain Martel - INF6500
30
Registre-registre/Chargementrangement (Load-store)
MEM
1 LOAD R1,A
2 LOAD R2,B
3 ADD R3,R1,R2
R1
R2
R3
R4
ADD
A
B
C
4 STORE C,R3
Sylvain Martel - INF6500
31
Avantages/désavantages
† Pile (stack)
„ Avantage: le plus petit encodage parce
que pas de locations pour opérandes ou
résultat est spécifiées.
„ Désavantage: Généralement les
opérandes doivent être dans le bon
ordre.
Sylvain Martel - INF6500
32
Avantages/désavantages
† Accumulateur
„ Avantage: Petit encodage d‘instructions
parce que seulement une opérande et
location sont spécifiées.
„ Désavantage: Généralement les
opérandes doivent être dans le bon
ordre.
Sylvain Martel - INF6500
33
Avantages/désavantages
† (Registre) Chargement-rangement
„ Avantage: Les opérandes peuvent être
dans un ordre flexible à cause des
registres.
„ Désavantage: Encodage d‘instructions
avec un format plus large.
Sylvain Martel - INF6500
34
La classification des jeux d’instructions
(suite)
† Après les années 80, l’ensemble des systèmes ont été
conçus suivant l’architecture chargement rangement car:
„ Un registre est plus rapide qu’une mémoire.
„ Il est plus facile et plus efficace de manipuler des
registres pour un compilateur.
„ Contrairement au système de pile, une expression
avec l’emplois de registres peut s’évaluer dans
n’importe quel ordre (a*b)-(c*d)-(e*f).
„ Ce système réduit le trafic mémoire vu que les
registres peuvent contenir des variables.
Sylvain Martel - INF6500
35
Example: accès externes –
sans un registre
1
2
UCT
3
4
6
5
C=A+B
C=C+5
A
B
C
6 accès externes
5
Sylvain Martel - INF6500
36
Example: accès externes –
avec un registre
R1
1
2
4
3
C=A+B
C=C+5
A
B
Compilateur
R1 = A + B
C = R1 + 5
C
4 accès externes
5
UCT
Sylvain Martel - INF6500
37
La classification des jeux d’instructions
(suite)
†
Le nombre de registres à utiliser dépend de leur usage par le
compilateur:
„ Evaluer des expressions
„ Passer des paramètres
„ Conserver des variables
†
Types de registres:
„ Utilisation générale (general purpose register (GPR)):
registres utilisés par le compilateur
„ Utilisation spécifique (special use): utilisation spécifique au
processeur
† Compteur de boucles
† Adresse de retour, etc.
Sylvain Martel - INF6500
38
La classification des jeux d’instructions
(suite)
† Autre décision architecturale: Le nombre
d’opérandes pour les instructions:
„ Format 3 opérandes : instr. contient 1
résultat et 2 sources; (ADD R3,R1,R2)
„ Format 2 opérandes : une opérande est la
source et le résultat durant l’opération;
(ADD R1,R2)
….
Sylvain Martel - INF6500
39
Avantages et désavantages des 3
types d‘ordinateurs les plus connus
basés sur les GPR (M: opérandes mémoires,
N: nombre total d'opérandes)
Type
M N Avantages
Désavantages
Registreregistre
0
3
Simple, longueur fixe
d‘encodage d‘instructions
Plus grand nombre d‘instructions
qu‘avec références mémoires donc
programmes plus longs
Registremémoire
1
2
Les opérandes peuvent être
accédées sans une
instruction “load”. les
instructions tendent à être
faciles à encoder et donnent
un bonne densité
Encoder un numéro de registre et
une adresse de mémoire dans
chaque instruction peut restreindre
le nombre de registres. Le nombre
de cycle horloge par instruction
peut varier par location de
l‘opérande
Mémoiremémoire
(pas
utilisé)
2
3
2
3
Plus compacte, ne gaspille
pas de GPR pour les
temporaires
Grande variation de la longueur
des instructions, surtout pour 3
opérandes, aussi grande variation
de travail par instruction, accès
mémoire créer “bottleneck”
Sylvain Martel - INF6500
40
L’adressage mémoire
†
†
La représentation de l’information en informatique se fait sur
une base binaire (0 ou 1). L’unité de stockage est le bit.
Ce stockage de l’information nécessite plusieurs bits que l’on
classe suivant l’échelle suivante (celle-ci peut varier selon
l’architecture).
„
„
„
„
†
1
1
1
1
octet (byte) = 8 bits
demi mot (half word) = 16 bits
mot (word) = 32 bits
double mot (double word) = 64 bits
Il existe deux conventions pour l’ordre des octets:
„
„
Little Endian : le bit le moins significatif se trouve à droite et le
plus significatif à gauche dans un nombre binaire.
Big Endian : le bit le moins significatif se trouve à gauche et le plus
significatif à droite dans un nombre binaire.
Sylvain Martel - INF6500
41
L’adressage mémoire (suite)
†
Modes d’adressage (addressing modes)
„
„
„
„
„
„
„
„
„
„
„
†
Registre (Registers)
Immédiat ou littéral (Immediate) (pour les constantes)
Déplacement (Displacement)(pour les variables)
Indirect par registre (Register referred)
Indexé (Indexed)
Direct ou absolu (Direct or absolute)
Indirect via mémoire (Memory indirect)
Auto-Incrémenté (Autoincrement)
Auto-décrémenté (Autodecrement)
Indexé étendu (Scaled)
(DSP – Circular addressing, FFT, etc.)
Malgré leur grand nombre les plus utilisés sont les modes
déplacement, immédiat et indirect par registre (75% à 99%
des modes utilisés dans les programmes).
Sylvain Martel - INF6500
42
L’adressage mémoire - Mode registre
†
ADD R4,R3: Regs[R4] <- Reg[R4] + Regs[R3]
R3
R4
Fig. 2.6
Sylvain Martel - INF6500
43
Instructions 2 opérandes (Mode
registre)
† Exemple: total 16 instructions (Add =
0101), 4 GPR (R0-R3), dans le
répertoire et processeur de 16 bits
† ADD R1,R2
0101
ADD
01
R1
10
8 bits non utilisés
R1
Sylvain Martel - INF6500
44
Instructions 3 opérandes (Mode
registre)
† Exemple: total 16 instructions (Add =
0101), 4 GPR (R0-R3), dans le
répertoire et processeur de 16 bits
† ADD R3,R1,R2
0101
ADD
11
R3
01
10
R1
R2
Sylvain Martel - INF6500
6 bits non utilisés
45
L’adressage mémoire - Mode immédiat
†
ADD R4,#3: Regs[R4] <- Reg[R4] + 3
R4
CTE
3
Fig. 2.6
Sylvain Martel - INF6500
46
Instructions (Mode immédiat)
† Exemple: total 16 instructions (Add =
0101), 4 GPR (R0-R3), dans le
répertoire et processeur de 16 bits
† ADD R1,#?
0101
01
10 bits disponibles pour une constante
Maximum 210-1 sans signe
ADD
R1
9 bits disponibles pour une constante
Signe (0=+, 1 =-)
Sylvain Martel - INF6500
47
L’adressage mémoire (suite)
†
Pour ce qui est du nombre de bits pour le champ de
déplacement, il convient d’avoir 12 à 16 bits et de 8 à 16 bits
pour la taille du champ immédiat.
†
Pourquoi? Pour diminuer le nombre d’accès à la mémoire mais
ceci complique l’architecture de l’UCT et peut augmenter le CPI
moyen ou rallonger le temps de cycle (diminuer la fréquence
horloge)
Horloge (oscillateur)
Pipeline (UCT)
Sylvain Martel - INF6500
48
Ex. Si pas assez de bits pour constante
ou accès à une variable en mémoire
† Exemple: total 16 instructions (Add =
0101), 4 GPR (R0-R3), dans le
répertoire et processeur de 16 bits
Pas assez
0101
01
10 bits disponibles pour une constante
Maximum 210-1 sans signe
ADD
R1
9 bits disponibles pour une constante
Signe (0=+, 1 =-)
Sylvain Martel - INF6500
49
L’adressage mémoire (suite)
†
†
†
Displacement: ADD R4,100(R1): Regs[R4] <- Regs[R4] +
Mem[100+Regs[R1]]
Register indirect: ADD R4,(R1): Regs[R4] <- Regs[R4] +
Mem[Regs[R1]] : Pointeur en langage C/C++
Indexed: ADD R3,(R1+R2): Regs[R3] <- Regs[R3] +
Mem[Regs[R1]+Regs[R2]]
R3
R1
R2
MEM
GEN. ADDR.
ADDR
DATA
ETC…
DATA
Sylvain Martel - INF6500
50
Instructions (Mode indexé)
† Exemple: total 16 instructions (Add =
0101), 4 GPR (16 bits) (R0-R3), dans
le répertoire et processeur de 16 bits
† ADD R3,(R1+R2) Maximum 2 adresses de mémoire
32
0101
001
11
01
10
Mais plus complexe
OPCODE
VS.
3 bits non utilisés
ADD
Indexé
0101
001
R3
11
R1
R2
Maximum 27 ou 128 adresses
Sylvain Martel - INF6500
51
Data
Simple UCT
Adresse SRAM
00
0101
01
0001
Décodeur
Décodeur
EXEC 0
Type instruction
Décodeur
Compteur
Adresse
Adressage
EXEC 15
Oscillateur
Sylvain Martel - INF6500
52
Longueur de OPCODE
† Nombre de bits dépend du nombre de
differentes instructions et modes
d‘adressage que le processeur
supporte
Instruction
Mode adressage
OPCODE
Sylvain Martel - INF6500
Champ Opérandes
53
Longueur du code (OPCODE) reduit
pour processeurs de type RISC
versus processeurs de type CISC
† Avec RISC
„ Chaque instruction est plus simple donc
exécute plus rapidement (vitesse horloge
augmente)
„ Besoin d‘un plus grand nombre
d‘instructions pour exécuter la même
tâche
„ Plus grand nombre d‘accès à la mémoire
„ Blocs EXEC plus simples mais circuit
décodage plus complexe
Sylvain Martel - INF6500
54
Les opérations dans le jeu d’instructions
(standard)
†
Il existe différents types d’opérateurs:
„
„
„
„
„
„
„
„
Arithmétique et logique (ALU) (addition,soustraction)
Transfert de données (Load and Store) (chargements et
rangements)
Contrôle (Branches and Jumps)(branchement, saut, appel de
procédure)
Système (appel au système d’exploitation)
Flottant (Opérations flottantes : addition, multiplication)
Décimal (Addition décimal, multiplication décimale, conversion
décimal vers caractère)
Chaînes (Transfert de chaînes, comparaison de chaînes, recherche
de chaînes)
Graphique (Opérations sur pixels, opérations de
compression/décompression)
Sylvain Martel - INF6500
55
Les opérations dans le jeu d’instructions
(suite)
†
Les instructions de contrôle
„
„
„
„
†
Le branchement conditionnel (conditionnal branch) (très utilisés)
Les sauts (jumps) (souvent utilisés)
Les appels de procédure (procedure calls) (moins utilisés)
Les retours de procédures (procedure returns) (moins utilisés)
Les instructions les plus utilisées:
„
„
„
„
„
1) Chargement (22% des instructions totales exécutées)
2) Branchements conditionnels (20% des instructions totales
exécutées)
3) Comparaisons (16% des instructions totales exécutées)
4) Rangement (12% des instructions totales exécutées)
5) Additions (8% des instructions totales exécutées)
Sylvain Martel - INF6500
56
Les opérations dans le jeu d’instructions
(suite)
†
Les sauts indirects sont utiles lorsque l’adresse de destination
est inconnue à la compilation. Certaines structures de plus
haut niveaux rencontrent justement ce besoin:
„
„
„
„
†
Les opération de ‘case’ et ‘switch’ dans les langages de haut
niveau.
Les fonctions virtuelles, les méthodes.
Les pointeurs de fonction.
Les librairies dynamiques (DLLs)
Les branchements et les sauts conditionnels, sont souvent
optimisés au niveau des architectures en raison de la grande
fréquence des tests simples (x=0?, x<y?).
Sylvain Martel - INF6500
57
3 variations de base d‘encodage
d‘instructions
Longueur fixe (même nombre d‘opérandes, format du code plus large)
Opération
Addr. Field 1
Addr. Field 2
Addr. Field 3
Longueur variable (nombre d‘opérandes varie)
Opération
Addr. Spec. 1 Addr. Field 1 …
Addr. Spec. n Addr. Field n
(Specifier) Mode d‘adressage
Hybride: plusieurs format dépendant du OPCODE
Sylvain Martel - INF6500
58
Simple exemple
xxxx
Instruction
type ADD
xxxx
0
xx
xx
Mode
R?
R?
1
xx
xx
R?
R?
xx
R?
0: 2 opérandes
1: 3 op érandes
Sylvain Martel - INF6500
59
Type et taille des opérandes
†
Pour connaître le type d’une opérande, on peut regarder son
codage dans le code opération (opcode). Il existe plusieurs
types d’opérandes:
„
„
„
„
„
Entier (Integer)
Simple précision (Single precision)
Flottant (Floating point)
Double précision (Double precision)
Caractère (Char)
Sylvain Martel - INF6500
60
Point flottant (Floating Point)
versus entier (Integer)
Floating Point Unit
Integer
Sylvain Martel - INF6500
61
Avantages/désavantages (plus ou
moins de bits
† Plus de bits - Plus de mémoire (plus
large)
† Plus de bits - Bus plus large (PCB routing,
$)
† Plus de bits - HDW (hardware) plus
complexe
Sylvain Martel - INF6500
62
Le pipeline
Sylvain Martel - INF6500
63
Stratégies pour accélérer
l`exécution d`un programme
P1
M1
P1
Pipeline1 Pipeline2
Sous-tâche
Sous-tâche
P1
P2
Architecture parallèle
Sous-tâche
Sous-tâche
Pipeline
Sylvain Martel - INF6500
« Superscalar »
64
Pentium
Pipeline
Sylvain Martel - INF6500
65
Temps par étage du pipeline
Registre
T1
T2
T3
FREQ = 1 / MAX (T1, T2, T3)
Horloge
Sylvain Martel - INF6500
66
Les obstacles du pipeline :les aléas
†
†
Il existe des situations, appelées aléas (hazards), qui
empêchent l’instruction suivante de flux d’instruction de
s’exécuter au cycle d’horloge prévu.
Il existe trois types d’aléas:
„
Aléas structurels (structural hazards)
†
„
Aléas de données (data hazards)
†
„
Lorsque le matériel ne peut gérer toutes les combinaisons possibles
de recouvrement d’instructions au moment de l’exécution.
Lorsqu’une instruction dépend du résultat d’une instruction
précédente.
Aléas de contrôle (control hazards)
†
Résultent de l’exécution en pipeline des branchements et des
autres instructions qui modifient le compteur de programme (CP)
Sylvain Martel - INF6500
67
Forwarding
„
Illustration de la technique de l’envoi
0/1
0
MUX
1
EX
Sylvain Martel - INF6500
68
Forwarding (suite)
INSTR1: EX 5 cycles
INSTR2: EX 1 cycle
0/1
0
MUX
1
EX
INSTR2 a besoin du
résultat de INSTR1
INSTR1
NOP
NOP
NOP
NOP
INSTR2
NOP (NO Operations) ou bulles sont générées par le compilateur
Sylvain Martel - INF6500
69
Ordonnancement
† L’ordonnancement du compilateur pour
les aléas de données pour augmenter la
performance
INSTR1
NOP
NOP
NOP
NOP
INSTR2
INSTR3
INSTR4
INSTR5
INSTR6
INSTR1
INSTR3
INSTR4
INSTR5
INSTR6
INSTR2
Si INSTR3,4,5,6 sont indépendants
Sylvain Martel - INF6500
70
Branchement
CP (PC-Program Counter)
(Branch)
(Return)
Registre
ADDR
Sylvain Martel - INF6500
71
Branchement (suite)
„
Si un branchement modifie l’adresse du CP pour y mettre
l’adresse destination, il s’agit d’un branchement pris, sinon
il est non pris. Si un branchement est pris, le CP de
l’instruction n’est pas modifié avant la fin de l’étage MEM.
Pour résoudre ce problème, il existe 4 solutions:
INSTR2
INSTR1
Sylvain Martel - INF6500
72
Branchement (suite)
„
„
1) On suspend donc le pipeline jusqu’à l’étage MEM, qui
détermine le nouveau CP. Cette décision doit cependant se
faire après que l’instruction soit décodée est reconnue
comme un branchement. Il faut alors suspendre le pipeline
pendant trois cycle (un cycle est une répétition de LI, et
deux cycles ne font rien).
Cette méthode est coûteuse en nombre de cycle et la
performance du pipeline diminue.
LI
NOP
NOP
NOP
BRANCH?
INSTR2
DI
INSTR1
EX
MEM
Sylvain Martel - INF6500
73
Branchement (suite)
„
2) Une autre méthode un peu plus complexe consiste à
traiter chaque branchement comme non pris. Si il y
effectivement un branchement, on procède comme en 1),
en transformant l’instruction lue en NOP (aucune
instruction).
INSTR4
INSTR3
INSTR1
BRANCH?
Non
INSTR4
INSTR3
INSTR1
BRANCH?
Oui
NOP
NOP
NOP
BRANCH?
LI
DI
BRANCH?
EX
INSTR1
INSTR3
INSTR4
INSTR5
INSTR2
INSTR6
INSTR7
INSTR8
MEM
Sylvain Martel - INF6500
74
Branchement (suite)
„
3) On peut également considérer le branchement comme
toujours pris. Vu qu’il est impossible de connaître
l’adresse de destination du branchement avant le
décodage, cette approche n’offre aucun avantage pour une
architecture qui ne connaît pas l’adresse cible plus tôt.
INSTR7
INSTR6
INSTR2
BRANCH?
Non
NOP
NOP
NOP
BRANCH?
Oui
INSTR7
INSTR6
INSTR2
BRANCH?
LI
DI
BRANCH?
EX
INSTR1
INSTR3
INSTR4
INSTR5
INSTR2
INSTR6
INSTR7
INSTR8
MEM
Sylvain Martel - INF6500
75
Branchement (suite)
„
4) Certaines machines utilisent un schéma appelé le
branchement différé (delayed branch). Dans un tel
concept, on retrouve un certain nombre d’instructions
après l’instruction de branchement qui sont exécutées que
le branchement soit pris ou non. Celles-ci constituent des
délais de branchement. Le compilateur tente alors
d’optimiser ces délais, de plusieurs façons.
† Instruction avant (from before):le délai est rempli par
une instruction indépendante provenant d’avant le
branchement. Les autres solutions sont utilisées
uniquement si celle-ci est impossible.
Sylvain Martel - INF6500
76
Branchement (suite)
†
†
†
Instruction cible (from target):le délai est remplacé par l’instruction
cible du branchement.
Instruction après (from fall-through): le délai est remplacé par une
instruction du chemin non pris.
La prédiction de branchement statique: utiliser la technologie
des compilateurs.
„
Considérons:
LW
R1,0(R2)
DSUB R1,R1,R3
BEQZ R1,L
OR
R4,R5,R6
……… (not taken/or
L : ADD R7,R8,R9
Au lieu de NOP (taken)
taken)
Sylvain Martel - INF6500
77
Branchement (suite)
„
„
La présence d’une instruction de chargement rangement suivi
d’une instruction ALU utilisant le registre R1 nécessite une
suspension. Supposons que le branchement (BEZQ) est presque
toujours pris et que la valeur de R7 ne soit pas critique dans le
chemin en séquence. On pourrait accélérer le code en déplaçant
l’instruction ADD R7,R8,R9 juste derrière LW
Pour effectuer de tel changements, on doit connaître la statistique
de branchement à la compilation. Il existe deux méthodes:
†
†
Examiner la structure du programme
Utiliser des informations collectées sur des exécutions précédentes
du programme (plus précis).
Sylvain Martel - INF6500
78
Sylvain Martel - INF6500
79
Téléchargement