Vous êtes sur la page 1sur 43

Distributed Architecture &

Intensive Computing
Presented by Dr. A. Djenadi

1
Distributed Architecture & Intensive Computing
CHAPITRE 4: CHAPITRE 2 : ILP DANS LES
ARCHITECTURES CPU - PIPELINING, SUPERSCALAIRE,
VLIW ET COMPARAISON RISC VS CISC
2
Chapter 3: Memory hierarchy
PARTIE 1: PIPELINING

3
Introduction
Qu'est-ce que le Instruction-Level Parallelism (ILP)?

L’ILP se réfère à la capacité d'un processeur d'exécuter plusieurs instructions en parallèle. Il s'agit d'une
technique visant à améliorer les performances des processeurs en augmentant le nombre d'opérations qu'ils
peuvent exécuter simultanément.

Il existe plusieurs formes d'ILP, dont les deux principales sont :


• Pipeline
• Exécution superscalaire

4
Introduction
Cycle d'instruction (processus)
Remarques:
• La tâche fondamentale effectuée par un processeur est l'exécution d'un programme, qui est un ensemble
d'instructions stockées en mémoire.
• Le traitement fondamental des instructions implique deux étapes : le processeur lit (récupère) les instructions en
mémoire une par une (de manière séquentielle) et exécute chaque instruction.
• L'exécution du programme consiste à répéter le processus de récupération des instructions et d'exécution des
instructions.
• Le traitement nécessaire pour une seule instruction est appelé : un cycle d'instruction (instruction cycle).
• Un cycle d’instruction b deux étapes (stages) qui sont:
• Cycle de lecture (Récupération, Fetch)
• Cycle d’éxecution

5
Introduction
Cycle d'instruction (processus)

Start

Cycle de lecture (Fetch cycle) : le processeur lit l'instruction en mémoire.

Cycle de récupération le registre « Program Counter » (PC) contient l'adresse de l'instruction à lire, le
(Fetch cycle) processeur incrémente ensuite le registre PC pour préparer l'adresse de
l'instruction suivante.
L'instruction lue est chargée dans le « instruction registere » (IR).
Cycle d’exécution L'instruction est une série de bits qui décrivent l'action que le processeur doit
(Execution cycle) effectuer.

Stop

Cycle d’instruction basic


6
Introduction
Cycle d'instruction (processus)

Start Cycle d'exécution (Execution cycle): le processeur exécute l'action décrite dans
l'instruction. Ces actions peuvent être une ou une combinaison des quatre
catégories suivantes :
Cycle de récupération
(Fetch cycle)
• Processeur-mémoire : transfert de données du processeur à la mémoire ou de
la mémoire au processeur.

Cycle d’exécution • Processeur-E/S : transfert de données depuis un périphérique en transférant


(Execution cycle) entre le processeur et un module E/S.
• Traitement des données : effectue des opérations arithmétiques ou logiques
sur des données.
Stop
• Contrôle : modification d'une séquence d'exécution.
Cycle d’instruction basic
7
Introduction
Cycle d'instruction (processus)
Exemple :

Supposons l'instruction : ADD B, A

L'instruction consiste à ajouter A à B et à sauvegarder le résultat dans A.

Le cycle d'instruction suit ces étapes :

1. Récupérer (lire) l'instruction ADD dans le processeur.


2. Lire le contenu de la mémoire A dans le registre du processeur.
3. Lire le contenu de la mémoire B dans un autre registre du processeur.
4. Le processeur exécute l'instruction ADD.
5. Le processeur écrit le résultat dans l'emplacement mémoire A.

8
Introduction
Cycle d'instruction (processus)
Remarque: Le cycle d'exécution pour une instruction particulière peut impliquer plus d'une référence à la mémoire.
Ainsi, un processus détaillé du cycle d'instruction est décrit dans le diagramme d'état suivant.

9
Introduction
Echange
Cycle d'instruction (processus)
Processeur et
Indirect Indirect
mémoire ou
E/S
Récupération Récupération Ecriture
d’instruction d’opérande d’opérande
Opérations
Opérandes interne aux
Résultats
multiple multiple processeur

Calcule de Décodage de Calcule de Opération Calcule de


Interruption
l’adresse de l’opération de l’adresse de sur les l’adresse de Interruption
check
l’instruction l’instruction l’opérande données l’opérande

Instruction terminer, Retour pour: Sans


récupérer la suivante sting ou vector interruption

Diagramme des états du cycle d’instruction 10


Introduction
Cycle d'instruction (processus)
Remarque : Certains états peuvent être nuls, et d'autres peuvent être visités plus d'une fois.

• Calcul de l'adresse de l'instruction (iac) : Déterminer l'adresse de la prochaine instruction à exécuter.


• Récupération de l'instruction (if) : Lire l'instruction depuis son emplacement mémoire (Registre PC) jusqu'au
processeur.
• Décodage de l'opération d'instruction (iod) : Analyser l'instruction pour déterminer le type d'opération à
effectuer et les opérandes à utiliser.
• Calcul de l'adresse de l'opérande (oac) : Si l'opération implique une référence à un opérande en mémoire ou
disponible via E/S, déterminer l'adresse de l'opérande.
• Récupération de l'opérande (of) : Récupérer l'opérande depuis la mémoire ou le lire depuis l'E/S.

11
Introduction
Cycle d'instruction (processus)
• Opération de données (do) : Effectuer l'opération indiquée dans l'instruction.
• Stockage de l'opérande (os) : Écrire le résultat en mémoire ou l'envoyer vers l'E/S.
• Interruption : Si les interruptions sont activées (ou se produisent), l'état actuel du processus est sauvegardé et
l'interruption est traitée.

Indirecte : Si l'adressage indirect est utilisé, des accès mémoire supplémentaires sont nécessaires. Par exemple,
l'exécution d'une instruction peut impliquer un ou plusieurs opérandes en mémoire, chacun nécessitant un accès
mémoire.

12
Pipelining
Objectif : Accélérer les opérations.

Solution : Augmenter la fréquence d'horloge. Plus précisément, nous voulons augmenter le rendement du système,
où le rendement est défini comme la quantité de travail effectuée par unité de temps.

Comment : Utiliser les ressources disponibles / Exécuter les étapes indépendantes en parallèle.

13
Pipelining
Exemple motivant :

• L'exécution du programme consiste à répéter le processus de cycle d'instruction (récupération et exécution).


• Supposons un ensemble d'instructions avec 3 étapes (stages) chacune exécutée dans un CPU conventionnel,
Instruction 1 Instruction 2 Instruction 3

Etape 1 Etape 2 Etape 3 Etape 1 Etape 2 Etape 3


𝑀: Nombre d’étape par instruction

Unité de temps 1 2 3 4 5 6
𝐼𝐶: Nombre Instruction 1 Etape 1 Etape 2 Etape 3
d’instruction
Instruction 2 Etape 1 Etape 2 Etape 3

𝑇𝑆𝑡𝑒𝑝
𝑇ℏ𝑛𝑠𝑡 = 𝑀 × 𝑇𝑠𝑡𝑒𝑝 6 unité de temps
𝑇ℏ𝑛𝑠𝑡
𝑇𝑁ℏ𝑛𝑠𝑡 = 𝐼𝐶 × 𝑇ℏ𝑛𝑠𝑡
𝑇𝑁ℏ𝑛𝑠𝑡
14
Pipelining
Exemple motivant :

Supposons que les ressources disponibles sont utilisées en parallèle pour compléter une étape (stade).

Comment ?
Exécution avec pipeline
Unité de temps 1 2 3 4 5 6
Instruction 1 Etape 1 Etape 2 Etape 3
Instruction 2 Etape 1 Etape 2 Etape 3

𝑇𝑁ℏ𝑛𝑠𝑡 = 𝑇ℏ𝑛𝑠𝑡 + 𝐼𝐶 , 1 × 𝑇𝑠𝑡𝑒𝑝 = 𝑀 + 𝐼𝐶 , 1 × 𝑇𝑠𝑡𝑒𝑝

15
Pipelining
Exemple motivant :
Exécution sans pipeline

Unité de temps 1 2 3 4 5 6
Instruction 1 Etape 1 Etape 2 Etape 3
Instruction 2 Etape 1 Etape 2 Etape 3

Exécution avec pipeline

Unité de temps 1 2 3 4 5 6
Instruction 1 Etape 1 Etape 2 Etape 3
Instruction 2 Etape 1 Etape 2 Etape 3

Exécution sans pipeline: 6 unité de temps

Exécution avec pipeline: 4 unité de temps


16
Architecture Pipeline
Le pipelining est une technique d'implémentation dans laquelle plusieurs instructions se chevauchent dans
l'exécution. Architecture en pipeline
• Fetch instruction (FI): Lire l'instruction attendue
suivante dans un buffer.
• Decode instruction (DI): Déterminer le code opération
(opcode) et les spécificateurs d'opérande.
• Calculate operands (CO): Calculer l'adresse effective
de chaque opérande source. Cela peut impliquer un
déplacement, un adressage indirect par registre,
indirect, ou d'autres formes de calcul d'adresse.
• Fetch operands (FO): Récupérer chaque opérande
depuis la mémoire. Les opérandes dans les registres
n'ont pas besoin d'être récupérés.
• Execute instruction (EI): Effectuer l'opération indiquée
et stocker le résultat, le cas échéant, à l'emplacement
Diagramme temporel pour des instruction en pipeline
de l'opérande de destination spécifié.
• Write operand (WO): Stocker le résultat en mémoire.
17
Architecture Pipeline

Vidage du pipeline
Amorçage du
pipeline Pipeline
plein

Diagramme temporel pour des instruction en pipeline


18
Architecture Pipeline
Pipeline performance

On suppose un pipeline de 𝒌 étapes (stages) exécutant 𝒏 instructions.


On assume que le clock cycle time est 𝑡𝑝 : chaque étape nécessite un temps 𝑡𝑝 pour être complétée.
On a :
• La premiêre instruction a besoin d’ un temps : 𝒌 × 𝒕𝒑
• Le 𝒏 , 𝟏 instructions restantes sortent du pipeline à chaque cycle.
Donc :
• Les 𝒏 , 𝟏 instructions nécessitent un temps de 𝒏 , 𝟏 × 𝒕𝒑 .

𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒 𝑓𝑜𝑟 𝑛 𝑖𝑛𝑠𝑡𝑟𝑢𝑐𝑡𝑖𝑜𝑛 = 𝑘 × 𝑡𝑝 + 𝑛 , 1 × 𝑡𝑝 = 𝑘 + 𝑛 , 1 × 𝑡𝑝


= 𝑘 + 𝑛 , 1 𝑐𝑙𝑜𝑐𝑘 𝑐𝑦𝑐𝑙𝑒𝑠

19
Architecture Pipeline
Pipeline Speedup

Nous savons que, sans un pipeline, le temps nécessaire pour compléter n instructions est :
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑤ℏ𝑡ℎ𝑜𝑢𝑡 𝑝ℏ𝑝𝑒𝑙ℏ𝑛𝑒 = 𝑛 × 𝑘 × 𝑡𝑝
Donc, le Speedup est donné :
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑤ℏ𝑡ℎ𝑜𝑢𝑡 𝑝ℏ𝑝𝑒𝑙ℏ𝑛𝑒 𝑛 × 𝑘 × 𝑡𝑝
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 = =
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑝ℏ𝑝𝑒𝑙ℏ𝑛𝑒 𝑘 + 𝑛 , 1 × 𝑡𝑃
Si on suppose le cas théorique 𝑛 → ∞, nous avons :
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑤ℏ𝑡ℎ𝑜𝑢𝑡 𝑝ℏ𝑝𝑒𝑙ℏ𝑛𝑒 𝑘 × 𝑡𝑝
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 = = =𝑘
𝐸𝑥𝑒𝑐𝑢𝑡𝑖𝑜𝑛 𝑡𝑖𝑚𝑒𝑝ℏ𝑝𝑒𝑙ℏ𝑛𝑒 𝑡𝑝
Le gain de vitesse théorique, k, est le nombre d'étapes dans le pipeline.

Supposition : Dans des conditions idéales et avec un grand nombre d'instructions, le Speedup provenant
du pipelining est approximativement égal au nombre d'étapes du pipeline ; un pipeline à cinq étapes est
presque cinq fois plus rapide.
20
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

Dans le pipelining, parfois l'instruction suivante ne peut pas être exécutée dans le cycle d'horloge suivant.
Ceux-ci sont appelés des Hazards, et il en existe trois types :

Structural hazard Data hazard Control hazard

21
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):

Les conflits de ressources se produit lorsque deux (ou plus) instructions dans le pipeline nécessitent la
même ressource.

Dans cette situation, le matériel ne peut pas prendre en charge la combinaison d'instructions que nous
voulons exécuter dans le même cycle d'horloge.

Par conséquent, pour une partie du pipeline, les instructions doivent être exécutées en série plutôt qu'en
parallèle.

22
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):

Exemple : Si une instruction stocke une valeur en mémoire tandis qu'une autre est récupérée depuis la
mémoire, les deux ont besoin d'accéder à la mémoire.

On suppose l’exemple d'organisation d'un pipeline en quatre étapes avec les étapes suivantes :
• IF : récupération de l'instruction
• ID : décodage de l'instruction
• IE : exécution de l'instruction
• RW : écriture du résultat (WB: write back: cette étape assure que le résultat est correctement stocké à
l'emplacement approprié avant de passer à l'instruction suivante. )

23
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):


Conflits de ressource
Exemple :
Unité de temps 1 2 3 4 5 6 7 8
Instruction 1 IF ID IE RW
Instruction 2 IF ID IE RW
Instruction 3 IF ID IE RW
Instruction 4 IF ID IE RW
Instruction 5 IF ID IE RW

Questions : Comment est-il possible d'accéder à la


mémoire avec deux commandes du même processeur ? Accès mémoire requis
Impossible ! Accès mémoire peut être requis
Quelle serait la solution ? 24
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):

Solution possible : Introduire un mécanisme de blocage (stalling) dans le pipeline (bulles).


• À t4, Instruction 4 n'est pas autorisé à avancer, il doit être retardé.
• Il aurait pu être autorisé à t5, mais encore une fois, il y a un conflit avec le RW de Instruction 2.
• Pour la même raison, Instruction 4 n'est pas autorisé à t6 non plus.
• Enfin, I4 pourrait être autorisé à avancer (bloqué) dans le pipeline seulement à t7.

25
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):


Solution possible :
Accès mémoire requis
1 2 3 4 5 6 7 8
I1 IF ID IE WB Accès mémoire peut être requis
I2 IF ID IE WB
Blocage (stall)
I3 IF ID IE WB
I4 IF ID IE WB 1 2 3 4 5 6 7 8 9 10 11
I5 IF ID IE WB I1 IF ID IE WB
I2 IF ID IE WB
Exécution sans pipeline stall
I3 IF ID IE WB

I4 IF ID IE WB

Conséquence ? I5 IF ID IE WB

Exécution avec pipeline stall


26
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):


Solution possible :
Conséquence :

Ce retard se propage à toutes les instructions suivantes également. Ainsi, alors que le système idéal à 4
étages aurait pris 8 états d'horloge pour exécuter 5 instructions, maintenant en raison de la dépendance
structurelle, il a fallu 11 états d'horloge.

Ce Hazard structurel se produira à chaque 4e instruction. Ce n'est pas une bonne solution pour un CPU
à charge lourde.

27
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):


Autres possible solutions :

1. Le pipeline peut être augmenté à 5 étages ou plus et redéfinir de manière appropriée la


fonctionnalité des étapes et ajuster la fréquence d'horloge. Cela élimine le problème du danger à
chaque 4e instruction dans le pipeline à 4 étages.

2. La mémoire peut être physiquement séparée en mémoire d'instructions et mémoire de données.

Un meilleur choix serait de concevoir une mémoire cache dans le CPU, plutôt que de manipuler la
mémoire principale. L'étape de récupération des instructions utilise la mémoire d'instructions et
l'écriture des résultats utilise la mémoire de données. Ceux-ci deviennent deux ressources
distinctes évitant les dépendances.
28
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

1. Conflits de ressources : Structural hazard (resource conflicts):


Autres possible solutions :

3. Il est possible d'avoir plusieurs niveaux de cache dans le CPU également.

4. La dépendance concernant la ressource ALU. La solution serait soit de faire des pauses, soit d'avoir
une ALU exclusive pour le calcul des adresses.

5. Register files sont utilisés à la place des GPR. Les fichiers de registres ont un accès multiport avec
des ports de lecture et d'écriture exclusifs. Cela permet un accès simultané sur un registre d'écriture
et un registre de lecture.

29
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies)


Les dépendances de données se produisent lorsque le résultat d'une instruction, qui n'est pas encore
disponible, doit être utilisé comme opérande pour une instruction suivante.
Cela se produit lorsque le pipeline doit être arrêté car une étape doit attendre qu'une autre se termine.

Exemple : On suppose un pipeline de 5 étape er la séquence d'instructions suivante :


Add R3, R6, R5 (Le résultats de l’addition est écrit dans R3, l’instruction accède à T5 )
SUB R4, R3, R5 (L’instruction SUB a besoin du résultat dans R3, l’instruction à besoin à T3)

Unité de temps 1 2 3 4 5 6
Add R3, R6, R5 IF ID IE MEM WB (R3)
SUB R4, R3, R5 IF ID (R3) IE MEM WB

30
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies)

Solution possible : Le compilateur peut jouer un rôle dans la détection de la dépendance de données et
réorganiser les instructions de manière appropriée lors de la génération du code exécutable.

Cependant : Ces dépendances se produisent trop souvent et le retard est tout simplement trop long pour
s'attendre à ce que le compilateur nous sauve de ce dilemme.

31
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 1 : Data Forwarding


Le Data Forwarding : est le transfert de données qui consiste à transmettre directement le résultat à l'unité
fonctionnelle qui en a besoin.
Un résultat est transmis depuis la sortie d'une unité vers l'entrée d'une autre. L'objectif est de rendre la
solution disponible tôt pour l'instruction suivante.

Unité de temps 1 2 3 4 5 6
Add R3, R6, R5 IF ID IE MEM (R3) WB
SUB R4, R3, R5 IF ID (R3) IE MEM WB

32
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 1 : Data Forwarding


On suppose la représentation graphique suivante de l’évolution d’un pipeline à 5 étapes exécutant
l’instruction ADD.
Temps

Add R3, R6, R5

Représentation graphique

33
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 1 : Data Forwarding


On supposant une seconde instruction SUB, nous avons le Forwarding suivant :

Temps

Add R3, R6, R5

SUB R4, R3, R5

34
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 1 : Data Forwarding


Remarques :
Les chemins du Forwarding ne sont valides que si l'étape de destination intervient plus tard dans le temps
que l'étape source.

Par exemple:
Il ne peut pas y avoir de chemin de transfert valide depuis la sortie de l'étape d'accès à la mémoire dans la
première instruction vers l'entrée de l'étape d'exécution de l'instruction suivante, car cela signifierait revenir
en arrière dans le temps.

35
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 2 : Blocage (stalling) nécessaire du pipeline :


On suppose un pipeline de 5 étape er la séquence d'instructions suivante :
LOAD R3, 20 (Ecrire la valeur 20 dans R3, l’instruction accède à T4 )
SUB R4, R3, R5 (L’instruction SUB a besoin du résultat dans R3, l’instruction à besoin à T3)

Unité de temps 1 2 3 4 5 6
LOAD R3, 20 IF ID IE MEM(R3) WB
SUB R4, R3, R5 IF ID (R3) IE MEM WB

Problème : Les données désirées ne seraient disponibles qu'après la quatrième étape de la première
instruction dans la dépendance, ce qui est trop tard pour l'entrée de la troisième étape de soustraction.
36
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 2 : Blocage (stalling) nécessaire du pipeline :


Par conséquent, même avec le Forwarding, nous devrions bloquer (stall) une étape.

Unité de temps 1 2 3 4 5 6
LOAD R3, 20 IF ID IE MEM (R3) WB
SUB R4, R3, R5 IF ID (R3) IE MEM WB

Blocage d’une étape

37
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Solution 2 : Blocage (stalling) nécessaire du pipeline :


On suppose la représentation graphique suivante de l’évolution d’un pipeline

Temps

LOAD R3, 20

SUB R4, R3, R5


38
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Classification des Data Hazards (Classification des dépendances de données):


Les Hazards de données sont classés en trois catégories en fonction de l'ordre des opérations de READ ou
WRITE sur le registre, comme suit :

1. RAW (Lecture après Ecriture): Il s'agit d'un cas où une instruction utilise des données produites par
une précédente.
Exemple :
ADD R0, R1, R2
SUB R4, R3, R0

39
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Classification des Data Hazards (Classification des dépendances de données):

2. WAR (Écriture après Lecture) : Il s'agit d'un cas où la deuxième instruction écrit sur un registre avant
que la première instruction ne lise. Cela est rare dans une structure de pipeline simple. Cependant,
dans certaines machines avec des instructions complexes et spéciales, WAR peut se produire.
Exemple :
ADD R2, R1, R0
SUB R0, R3, R4

40
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

2. Data hazard (data dependencies): Meilleure solution

Classification des Data Hazards (Classification des dépendances de données):

3. WAW (Écriture après Écriture) : Il s'agit d'un cas où deux instructions parallèles écrivent sur le même
registre et doivent le faire dans l'ordre où elles ont été émises.
Exemple :
ADD R0, R1, R2
SUB R0, R4, R5

41
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards

3. Control Hazard :

42
43

Vous aimerez peut-être aussi