INF6500 : Structures des ordinateurs Sylvain Martel - INF6500 1
Cours 1 : Processeur et unité centrale de traitement Sylvain Martel - INF6500 2
Instructions Pipeline Type d instructions RISC CISC (Hybride) Répertoire d instructions Pile Accumulateur Registre-mémoire Chargement-rangement Nbre reg. GPR Special use Longueur pipeline Aléas Structurels Données Contrôle 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
Bus AGP USB (Universal Serial Bus) PCI ISA Sylvain Martel - INF6500 9
E/S LPT 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 64Kx16 SRAM 48 MIPS DSP 48 MHz Oscillator STM Interface (I/V Amplifier and A/D Converter) Embedded Computer Central Controller (CPLD) Piezo-Drive Switching Circuit (One Leg) Temperature Sensor 15 mm Power Amplifiers STM Scan Tube Driving Section Analog Section Power Converters High Power Input Voltage Regulation High Power Rectification Bridge (Outside Section) Outside Layer Sylvain Martel - INF6500 14 IR Emitters
Simple UCT Adresse 00 01 Décodeur SRAM 0101 0001 Décodeur EXEC 0 Compteur Oscillateur Data 0 Data 1 EXEC 15 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 Horloge (oscillateur) Instructions Opérandes Mémoire 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 A PUSH B B A ADD B C UCT (ALU) POP C Sylvain Martel - INF6500 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 MEM A B ACC ADD Sylvain Martel - INF6500 29
Registre (registre-mémoire) 3 1 LOAD A 2 MEM A B C 2 R1 R2 ADD Sylvain Martel - INF6500 30
Registre-registre/Chargementrangement (Load-store) 3 1 LOAD R1,A 2 LOAD R2,B ADD R3,R1,R2 R1 R2 R3 R4 ADD 4 MEM A B C 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 A C = A + B C = C + 5 UCT 2 B 3 4 6 5 C 5 6 accès externes Sylvain Martel - INF6500 36
Example: accès externes avec un registre R1 1 A Compilateur C = A + B C = C + 5 2 B R1 = A + B C = R1 + 5 4 C 3 5 4 accès externes 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 octet (byte) = 8 bits 1 demi mot (half word) = 16 bits 1 mot (word) = 32 bits 1 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 01 10 8 bits non utilisés ADD R1 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 11 01 10 6 bits non utilisés ADD R3 R1 R2 Sylvain Martel - INF6500 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 2 10-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 2 10-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 ADDR MEM DATA DATA GEN. ADDR. ETC 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 32 adresses de mémoire 0101 001 11 01 10 3 bits non utilisés OPCODE Mais plus complexe ADD Indexé R3 R1 R2 VS. 0101 001 11 Maximum 2 7 ou 128 adresses Sylvain Martel - INF6500 51
Simple UCT Data Adresse 00 SRAM 0101 Décodeur EXEC 0 01 0001 Décodeur 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 Champ Opérandes Sylvain Martel - INF6500 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 0 xx xx Instruction type ADD Mode R? R? xxxx 1 xx xx xx R? R? 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 M1 P1 Sous-tâche Sous-tâche Pipeline1 P1 Pipeline2 P1 P2 Sous-tâche Architecture parallèle Sous-tâche Pipeline «Superscalar» Sylvain Martel - INF6500 64
Pentium Pipeline Sylvain Martel - INF6500 65
Temps par étage du pipeline Registre T1 T2 T3 Horloge FREQ = 1 / MAX (T1, T2, T3) 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) 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 67
Forwarding Illustration de la technique de l envoi 0/1 0 1 MUX EX Sylvain Martel - INF6500 68
Forwarding (suite) INSTR1: EX 5 cycles INSTR2: EX 1 cycle 0/1 0 1 MUX INSTR2 a besoin du résultat de INSTR1 EX 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) ADDR Registre 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: INSTR1 INSTR2 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? DI EX INSTR1 INSTR2 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). Non INSTR4 INSTR3 INSTR1 BRANCH? INSTR4 INSTR3 INSTR1 BRANCH? Oui NOP NOP NOP BRANCH? LI DI EX MEM BRANCH? INSTR1 INSTR3 INSTR4 INSTR5 INSTR2 INSTR6 INSTR7 INSTR8 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. Non INSTR7 INSTR6 INSTR2 BRANCH? NOP NOP NOP BRANCH? Oui INSTR7 INSTR6 INSTR2 BRANCH? LI DI EX MEM BRANCH? INSTR1 INSTR3 INSTR4 INSTR5 INSTR2 INSTR6 INSTR7 INSTR8 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 L : ADD R7,R8,R9 Au lieu de NOP (taken) (not taken/or 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