Académique Documents
Professionnel Documents
Culture Documents
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.
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 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
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.
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
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 :
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
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
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
Vidage du pipeline
Amorçage du
pipeline Pipeline
plein
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 :
21
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards
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
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
25
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards
I4 IF ID IE WB
Conséquence ? I5 IF ID IE WB
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
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
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
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
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
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
Représentation graphique
33
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards
Temps
34
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards
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
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
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
37
Architecture Pipeline
Obstacles au pipelining : Pipelining Hazards
Temps
LOAD R3, 20
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. 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
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