INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1



Documents pareils
Exécution des instructions machine

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Conception de circuits numériques et architecture des ordinateurs

Rappels d architecture

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

IV- Comment fonctionne un ordinateur?

Fonctionnement et performance des processeurs

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Architecture des ordinateurs

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Cours Informatique 1. Monsieur SADOUNI Salheddine

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

CM2 L architecture MIPS32

Architecture des Ordinateurs. Partie II:

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

LOGICIEL DC4D MONITOR

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

GPA770 Microélectronique appliquée Exercices série A

Compilation (INF 564)

Architecture matérielle des systèmes informatiques

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Partie 1. Professeur : Haouati Abdelali. CPGE Lycée Omar Ibn Lkhattab - Meknès haouaticpge@gmail.com

Microprocesseur + Logiciel

Représentation des Nombres

Programmation assembleur : aperçu

Matériel & Logiciels (Hardware & Software)

Architecture des calculateurs

ASR1 TD7 : Un microprocesseur RISC 16 bits

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

UE Programmation Impérative Licence 2ème Année

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Informatique Générale

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Programmation C. Apprendre à développer des programmes simples dans le langage C

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Jeu d instructions NIOS II

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Architecture des ordinateurs Introduction à l informatique

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

La mémoire. Un ordinateur. L'octet. Le bit

PIC : COURS ASSEMBLEUR

TD Architecture des ordinateurs. Jean-Luc Dekeyser

Conversion d un entier. Méthode par soustraction

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Métriques de performance pour les algorithmes et programmes parallèles

ELP 304 : Électronique Numérique. Cours 1 Introduction

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Licence Sciences et Technologies Examen janvier 2010

Bases de programmation. Cours 5. Structurer les données

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Codage d information. Codage d information : -Définition-

Logiciel de Base. I. Représentation des nombres

Introduction à l informatique temps réel Pierre-Yves Duval (cppm)

Une version javascript sera disponible directement dans le cours prochainement.

Structure d un programme

Fiche technique CPU 314SC/DPM (314-6CG13)

Architecture des Ordinateurs Première partie. Licence d Informatique - IUP Miage - FIIFO

Partie 7 : Gestion de la mémoire

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Algorithmique et Programmation, IMA

Spécifications détaillées

CONFIGURATION DE L AUTOMATE SIEMENS

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

QUESTION 1 {2 points}

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours 1 : Qu est-ce que la programmation?

1 Introduction au codage

Tout savoir sur le matériel informatique

Les opérations binaires

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Manipulations du laboratoire

Éléments d'architecture des ordinateurs

ROYAUME DU MAROC RESUME THEORIQUE & GUIDE DE TRAVAUX PRATIQUES : TERTIAIRE ET NTIC : SYSTÈME ET RÉSEAUX INFORMATIQUES

Ordinateurs, Structure et Applications

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

Ordinateurs, Structure et Applications

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Architecture des ordinateurs

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE

IFT1215 Introduction aux systèmes informatiques

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Leçon 1 : Les principaux composants d un ordinateur

Chapitre 4 : Les mémoires

Un ordinateur, c est quoi?

Information. BASES LITTERAIRES Etre capable de répondre à une question du type «la valeur trouvée respecte t-elle le cahier des charges?

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Plan du cours Cours théoriques. 29 septembre 2014

Introduction aux systèmes temps réel. Iulian Ober IRIT


Organisation des Ordinateurs

Transcription:

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