Upload
vokhanh
View
217
Download
0
Embed Size (px)
Citation preview
Sylvain Martel - INF6500 3
Répertoire d’instructionsPileAccumulateur
Registre-mémoireChargement-rangement
Nbre reg.GPRSpecial use
Type d’instructionsRISCCISC(Hybride)
Format (Nombre d’opérandes)23
Nombre et types de modes d’adressage
InstructionsLongueur pipeline
Pipeline
AléasStructurelsDonnéesContrôle
RésoudreBullesBus Istr/DataRegistresOrdonnancementEnvoi (forwarding)Branchement prisBranchement non-prisBranchement différé
TypesLAEEAEEAL
Sylvain Martel - INF6500 14
Embedded ComputerIR Transceiver
64Kx16 SRAM
48 MIPS DSP48 MHz Oscillator
Outside Layer
Central Controller (CPLD)
STM Scan TubeDriving Section
PowerAmplifiers
High Power Rectification Bridge(Outside Section)
High Power Input Voltage Regulation
STM Interface (I/V Amplifier and A/D Converter)
Analog Section Power Converters
TemperatureSensor
Piezo-Drive SwitchingCircuit (One Leg)
IR Emitters
15 mm
Sylvain Martel - INF6500 15
Simple UCT
0101
0001
SRAMAdresse
00
01
Compteur
Décodeur EXEC 0
EXEC 15Data 0Data 1
Oscillateur
Décodeur
Sylvain Martel - INF6500 23
L’UCT
Horloge (oscillateur)
Pipeline (UCT)
Mémoire
Instructions
Résultats
Opérandes
Sylvain Martel - INF6500 25
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)CommunicationGraphique (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 26
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 compilateursLa 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 28
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 souventre-charger la même opérande plusieurs fois.
Sylvain Martel - INF6500 31
Registre-registre/Chargement-rangement (Load-store)
R2ADDLOAD R1,A
MEM
R11
R4R3
LOAD R2,B 2
ADD R3,R1,R2 3C
AB
STORE C,R3 4
Sylvain Martel - INF6500 32
Avantages/désavantages
Pile (stack)Avantage: le plus petit encodage parce que pas de locations pour opérandes ourésultat est spécifiées.Désavantage: Généralement les opérandes doivent être dans le bon ordre.
Sylvain Martel - INF6500 33
Avantages/désavantages
AccumulateurAvantage: 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 34
Avantages/désavantages
(Registre) Chargement-rangementAvantage: Les opérandes peuvent êtredans un ordre flexible à cause des registres.Désavantage: Encodage d‘instructions avec un format plus large.
Sylvain Martel - INF6500 35
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 36
Example: accès externes –sans un registre
UCT
A
B
C = A + BC = C + 5
C
1
2
3
5
4
5
6
6 accès externes
Sylvain Martel - INF6500 37
Example: accès externes –avec un registre
UCT
A
B
C = A + BC = C + 5
C
1
2
53
4
R1 = A + BC = R1 + 5
CompilateurR1
4 accès externes
Sylvain Martel - INF6500 38
La classification des jeux d’instructions (suite)
Le nombre de registres à utiliser dépend de leur usage par le compilateur:
Evaluer des expressionsPasser des paramètres Conserver des variables
Types de registres:Utilisation générale (general purpose register (GPR)): registres utilisés par le compilateurUtilisation spécifique (special use): utilisation spécifique au processeur
Compteur de bouclesAdresse de retour, etc.
Sylvain Martel - INF6500 39
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 40
Avantages et désavantages des 3 types d‘ordinateurs les plus connusbasés sur les GPR (M: opérandes mémoires,N: nombre total d'opérandes)
Grande variation de la longueur des instructions, surtout pour 3 opérandes, aussi grande variation de travail par instruction, accèsmémoire créer “bottleneck”
Plus compacte, ne gaspille pas de GPR pour les temporaires
23
23
Mémoire-mémoire(pas utilisé)
Encoder un numéro de registre et une adresse de mémoire danschaque instruction peut restreindre le nombre de registres. Le nombre de cycle horloge par instruction peut varier par location de l‘opérande
Les opérandes peuvent êtreaccédées sans uneinstruction “load”. les instructions tendent à êtrefaciles à encoder et donnentun bonne densité
21Registre-mémoire
Plus grand nombre d‘instructionsqu‘avec références mémoires doncprogrammes plus longs
Simple, longueur fixe d‘encodage d‘instructions
30Registre-registre
DésavantagesAvantagesNMType
Sylvain Martel - INF6500 41
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 octet (byte) = 8 bits1 demi mot (half word) = 16 bits1 mot (word) = 32 bits1 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 42
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 43
L’adressage mémoire - Mode registre
ADD R4,R3: Regs[R4] <- Reg[R4] + Regs[R3]
R3 R4
Fig. 2.6
Sylvain Martel - INF6500 44
Instructions 2 opérandes (Mode registre)
Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R1,R2
0101 01 10 8 bits non utilisés
ADD R1 R1
Sylvain Martel - INF6500 45
Instructions 3 opérandes (Mode registre)
Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R3,R1,R2
0101 11 01 6 bits non utilisés
ADD R3 R1
10
R2
Sylvain Martel - INF6500 46
L’adressage mémoire - Mode immédiat
ADD R4,#3: Regs[R4] <- Reg[R4] + 3
R4
Fig. 2.6
3
CTE
Sylvain Martel - INF6500 47
Instructions (Mode immédiat)
Exemple: total 16 instructions (Add = 0101), 4 GPR (R0-R3), dans le répertoire et processeur de 16 bitsADD R1,#?
0101 01 10 bits disponibles pour une constante
ADD R1
Maximum 210-1 sans signe
Signe (0=+, 1 =-)
9 bits disponibles pour une constante
Sylvain Martel - INF6500 48
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 maisceci complique l’architecture de l’UCT et peut augmenter le CPI moyen ou rallonger le temps de cycle (diminuer la fréquencehorloge)
Horloge (oscillateur)
Pipeline (UCT)
Sylvain Martel - INF6500 49
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
0101 01 10 bits disponibles pour une constante
ADD R1
Maximum 210-1 sans signe
Signe (0=+, 1 =-)
9 bits disponibles pour une constante
Pas assez
Sylvain Martel - INF6500 50
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]]
ETC…
R3
DATA
MEM
DATA
R2R1
GEN. ADDR.
ADDR
Sylvain Martel - INF6500 51
Instructions (Mode indexé)
Exemple: total 16 instructions (Add = 0101), 4 GPR (16 bits) (R0-R3), dans le répertoire et processeur de 16 bitsADD R3,(R1+R2)
0101 11 01 3 bits non utilisés
ADD R3 R1
10
R2
001
Indexé
0101 11001 Maximum 27 ou 128 adresses
Maximum 232 adresses de mémoire
VS.
Mais plus complexeOPCODE
Sylvain Martel - INF6500 52
Simple UCT
0101
0001
SRAMAdresse
00
01
Compteur
Décodeur EXEC 0
EXEC 15Adresse
Oscillateur
Décodeur
Décodeur
Type instruction
Adressage
Data
Sylvain Martel - INF6500 53
Longueur de OPCODE
Nombre de bits dépend du nombre de differentes instructions et modes d‘adressage que le processeursupporte
Instruction
OPCODE
Mode adressage
Champ Opérandes
Sylvain Martel - INF6500 54
Longueur du code (OPCODE) reduitpour processeurs de type RISC versus processeurs de type CISC
Avec RISCChaque instruction est plus simple donc exécute plus rapidement (vitesse horlogeaugmente)Besoin d‘un plus grand nombred‘instructions pour exécuter la mêmetâchePlus grand nombre d‘accès à la mémoireBlocs EXEC plus simples mais circuit décodage plus complexe
Sylvain Martel - INF6500 55
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 56
Les opérations dans le jeu d’instructions (suite)
Les instructions de contrôleLe 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 57
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 58
3 variations de base d‘encodaged‘instructions
Opération
Longueur fixe (même nombre d‘opérandes, format du code plus large)
Addr. Field 1 Addr. Field 2 Addr. Field 3
Opération
Longueur variable (nombre d‘opérandes varie)
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 59
Simple exemple
xxxx 0 xx
Instructiontype ADD
Mode R?
xx
R?
xxxx 1 xx xx xx
R? R? R?
0: 2 opérandes1: 3 op érandes
Sylvain Martel - INF6500 60
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 61
Point flottant (Floating Point) versus entier (Integer)
Floating Point Unit
Integer
Sylvain Martel - INF6500 62
Avantages/désavantages (plus oumoins 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 64
Stratégies pour accélérer l`exécution d`un programme
P1 P2
M1
Architecture parallèle
Sous-tâche
Sous-tâche
Sous-tâche
Sous-tâche
Pipeline
Pipeline1
P1Pipeline2
« Superscalar »
P1
Sylvain Martel - INF6500 66
Temps par étage du pipeline
T1 T2 T3
Horloge
FREQ = 1 / MAX (T1, T2, T3)
Registre
Sylvain Martel - INF6500 67
Les obstacles du pipeline :les aléasIl 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)Lorsque le matériel ne peut gérer toutes les combinaisons possibles de recouvrement d’instructions au moment de l’exécution.
Aléas de données (data hazards)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 69
Forwarding (suite)
MUX
EX
0/1 0 1
INSTR1: EX 5 cyclesINSTR2: EX 1 cycle
INSTR2 a besoin durésultat de INSTR1
INSTR1NOPNOPNOPNOPINSTR2
NOP (NO Operations) ou bulles sont générées par le compilateur
Sylvain Martel - INF6500 70
Ordonnancement
L’ordonnancement du compilateur pour les aléas de données pour augmenter la performance
INSTR1NOPNOPNOPNOPINSTR2INSTR3INSTR4INSTR5INSTR6
INSTR1INSTR3INSTR4INSTR5INSTR6INSTR2
Si INSTR3,4,5,6 sont indépendants
Sylvain Martel - INF6500 72
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:
INSTR1
INSTR2
Sylvain Martel - INF6500 73
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
DI
EX
INSTR1
INSTR2
MEM
NOPNOPNOPBRANCH?
Sylvain Martel - INF6500 74
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).
LI
DI
EX
INSTR1
INSTR2INSTR6INSTR7INSTR8
MEM
INSTR4INSTR3INSTR1BRANCH? INSTR3
INSTR4INSTR5
BRANCH?
Non Oui
INSTR4INSTR3INSTR1BRANCH?
NOPNOPNOPBRANCH?
Sylvain Martel - INF6500 75
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.
LI
DI
EX
INSTR1
INSTR2INSTR6INSTR7INSTR8
MEM
INSTR7INSTR6INSTR2BRANCH? INSTR3
INSTR4INSTR5
BRANCH?
Non Oui
INSTR7INSTR6INSTR2BRANCH?
NOPNOPNOPBRANCH?
Sylvain Martel - INF6500 76
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 77
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,R3BEQZ R1,LOR R4,R5,R6………
L : ADD R7,R8,R9
Au lieu de NOP (taken)(not taken/or taken)
Sylvain Martel - INF6500 78
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 LWPour 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).