Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de...

460
Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécutio n multiples 4. Méthodes superscalaires et VLIW 5. Structures superscalaires 6. Gestion avancée des branchement s 7. Études de cas 8. Machines " Dataflow " 9. Développements futurs 10. Mémoires caches 11. Multiprocesseurs 12. VHDL 13. Introduction à la synthèse logiq ue

Transcript of Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de...

Page 1: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs IIGEI 431 - Frédéric Mailhot

1. Introduction 2. Concepts de base du pipeline3. Utilisation d'unités d'exécution multiples4. Méthodes superscalaires et VLIW5. Structures superscalaires6. Gestion avancée des branchements7. Études de cas8. Machines "Dataflow"9. Développements futurs10. Mémoires caches11. Multiprocesseurs12. VHDL13. Introduction à la synthèse logique14. BDD et algorithme de buffering

Page 2: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric MailhotArchitecture des ordinateurs II – Frédéric Mailhot

Introduction

Objectifs du cours

Évaluation

Références

Matière du cours:

- Techniques modernes d’architecture

- Les systèmes parallèles

- La synthèse automatisée de circuit

Page 3: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Matière couverte

• Amélioration des derniers 10 ans

• Comprendre ce qui s’en vient d’ici 10 ans

Page 4: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi l’évolution de l’architecture?

• Loi de Moore: 2X plus de transistors / 18 mois Depuis 15 ans: environ 1000X (de 4 à 0.13 microns) En 2008: 0.05 micron, 100M transistors, plusieurs GHz

• Différence croissante entre le délai intra-chip et le délai extra-chip

• Importance croissante des interconnections entre les transistors

• Corrolaire de la loi de Moore: augmentation exponentielle de la puissance dissipée (à voltage constant)

Page 5: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Défis

• Taille et puissance Comment gérer l’augmentation de puissance

consommée? (prédite par Dennart en ’70)

• Performance du système Qu’est-ce qui définit la performance?

Où doit-on miser pour augmenter la performance?

• Complexité Comment gérer le design de systèmes de plus en plus

gros?

Page 6: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Force motrice derrière l’architecture des ordinateurs

• Fin des années ’80, début ’90: Performance des processeurs

• Fin des années ’90, début 2000: Puissance

Accès à la mémoire lent

Fiabilité

Coût de développement, maintenance de logiciel

Désuétude rapide

Performance des processeurs

Page 7: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Qu’allons-nous étudier ici?

• Techniques d’amélioration de la performance des processeurs utilisées depuis 10 ans: Parallélisme (MLP, ILP) Pipelines / superscalaires / VLIW

• Multiprocesseurs Synchronisation

• Techniques modernes de conception de circuits Synthèse de haut niveau, logique HDLs (Hardware Description Languages) Technologies-cibles: ASIC, FPGA

Page 8: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Comment améliorer la performance?

• Matériel Dispositifs

Ensemble d’instructions (RISC vs CISC)

• Conception Techniques de synthèse

Techniques de test

• Parallélisme MLP (Machine Level Parallelism)

ILP (Instruction Level Parallelism)

Page 9: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Matériel: Amélioration des dispositifs

• Plus grande intégration (Moore / Dennart)

• Utilisation nouvelle des composants FPGA: utilisation d’éléments reconfigurables

Protocoles d’entrées/sorties différents• E.g. Rambus

Page 10: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Matériel: Amélioration des dispositifs

• Silicium Sous 0.1 um (IBM prévoit 0.05 um en 2008)

Oxyde trop mince -> effet tunnel

Variations locales du dopage

Transport ballistique

DIBL (Drain-Induced Barrier Lowering)

• Arseniure de Gallium (AsGa), Germanium-Silicium (siGe) ?

• Communications optiques?

Page 11: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Matériel: Amélioration des dispositifs (2)

• Superconducteurs à haute température?

• Systèmes quantiques?

• Nanotechnologie?

Page 12: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Matériel: ensemble d’instructions

• RISC: instructions plus simples à décoder Plus d’instructions pour la même tâche

Chaque instruction s’exécute plus rapidement

• CISC: instructions complexes

• VLIW (Very Large Instruction Word)

Page 13: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Conception: techniques de synthèse

• Langages de haut niveau (VHDL, Verilog)

• Synthèse de haut niveau

• Synthèse logique

• Placement / Routage

Page 14: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Conception: techniques de test

• Vecteurs de test Modèle stuck-at

• JTAG et Full / Partial Scan

• BIST (Built-In Self-Test)

Page 15: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Parallélisme: MLP

• Machines massivement parallèles Thinking machines

Masspar

• NOW (Network of Workstations)

• Multiprocesseurs ASCI White

Beowulf

Page 16: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Intr

od

uctio

n

© 2004 Frédéric Mailhot Université de Sherbrooke

Parallélisme: ILP

• Pipelines

• Méthodes superscalaires Scoreboard, Tomasulo

• Prédiction des branches Méthodes statiques / dynamiques

• Spéculation (EPIC – Explicitely Parallel Instructions Computer)

• Machines « multithreaded »

Page 17: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Systèmes Pipeline

Les systèmes modernes utilisent tous des architectures pipelines – Pourquoi?

Page 18: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Matière couverte

• Principes de base des systèmes pipelines

• Utilisation de pipeline dans un microprocesseur simple

• Problèmes rencontrés

Page 19: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple: le lavage du linge

• Soient 4 étudiants qui désirent faire leur lavage

• Il y a une laveuse, une sécheuse, et une table pour plier le linge

• Le lavage prend 30 minutes

• Le séchage prend 40 minutes

• Le pliage prend 20 minutes

• Si l’opération commence à 6h00 du soir, à quelle heure termineront-ils?

Page 20: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 1ère itération

• L: 30

• S: 40

• P: 20

• 4 * (30 + 40 + 20) = 360 minutes

• On termine à minuit

Page 21: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 2e itération: pipeline

• L:30, S: 40, P: 20

• On superpose le lavage, séchage et pliage:

30

30

40

30

70

20

40

30

110

20

40

30

150

20

40

190

20

210

• On termine à 21h30• Régime permanent:

100 min/pers

Page 22: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 3e itération – sécheuse/plieuse

• L:30, SP: 50 (une sécheuse/plieuse): SP = 50, au lieu de S + P = 40 + 20 = 60

30

30

50

30

80

50

30

130

50

30

180

50

230

• On termine à 21h50• Régime permanent:

100 min/pers

Page 23: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 4e itération: 2 sécheuses

• L:30, S1: 20, S2: 20, P: 20

180

20

30

30

30

20

60

30

20

20

90

20

30

20

20

120

20

20

20

140

20

20

160

• On termine à 21h00• Régime permanent:

110 min/pers

Page 24: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 5e itération: 1 sécheuse « haute température »

• L:30, S1: 15, S2: 20, P: 20

180

20

30

30

30

15

60

20

20

160

30

20

90

15

30

20

20

120

15 20

20

140

15

• On termine à 21h00• Régime permanent:

110 min/pers

Page 25: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Lavage du linge: 6e itération: 2 sécheuses « haute température »

• L:30, S1: 15, S2: 15, P: 20

170

20

30

30

30

60

15 15

30

90

2015 15

30

120

2015 15 20

150

15 15

• On termine à 20h50!• Régime permanent:

80 min/pers

Page 26: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Leçons du pipeline de lavage

• Le pipeline n’améliore pas la latence. Il améliore le temps moyen par tâche (throughput)

• La vitesse du pipeline est limitée par l’étage le plus lent

• Plusieurs tâches se font en parallèle

• Accélération possible: nombre d’étages

• Les durées d’étage inégales limitent l’accélération

• Le temps de remplir et de vider le pipeline réduit l’accélération

Page 27: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Le processeur DLX (De Luxe)

Page 28: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Vue « pipeline » du DLX

Page 29: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

La loi de Amdahl

• N = (performance avec amélioration)

(performance sans amélioration)

= 1

(1 – Fraction améliorée) + Fraction (améliorée)

Accélération (améliorée)

Page 30: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Performance: principe de base

• Comment mesurer et comparer la performance?

• X est N fois plus rapide que Y veut dire: N = (temps d’exécution de Y)

(temps d’exécution de X)

• On doit distinguer le temps de réponse pour une tâche du temps moyen de réponse (throughput)

Page 31: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Équation de la performance d’un CPU

• Temps CPU = coups d’horloge d’un programme multiplié par la période de l’horloge

• Soit IC = Instruction Count

= Nombre d’instructions d’un programme

• Soit CPI = Clock cycle Per Instruction

= coups d’horloge d’un programme

IC

• Alors: temps CPU = IC * CPI * période de l’horloge

Page 32: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Le pipeline – principes de base

• Une instruction par coup d’horloge

• L’information doit être propagée d’un étage à l’autre

• Il ne peut y avoir de conflit de ressources

• L’ajout de registres (ou de latches) a un impact sur la période de l’horloge

Page 33: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Le DLX – pipeline à 5 étages

Page 34: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

L’arrêt temporaire du pipeline (stall)

• Dans certains cas, on doit arrêter temporairement un ou plusieurs étages d’un processeur: « cache miss »

Problème local à une instruction

Page 35: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Impact des « stalls » sur la performance

• Amélioration = CPI(sans) * période (sans)

CPI(avec) période (avec)

• CPI(avec) = 1 + stall / instruction

• Amélioration = CPI(sans)

1 + stall / instruction

Amélioration = profondeur du pipeline

1 + stall / instruction

Page 36: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Les obstacles majeurs au pipeline

• Problèmes structuraux

• Problèmes de dépendances de données

• Problèmes de contrôle

Page 37: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de problème de structure

Page 38: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Effet d’un problème de structure sur les stall

Page 39: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipelines: classification des problèmes de dépendance de données

• RAW (Read after Write): instruction subséquente lit la source avant que l’instruction précédente l’ait écrite. Problème résolu avec « forwarding »

• WAW (Write after Write): instruction subséquente tente d’écrire une destination avant que l’instruction précédente l’ait écrite. Ce type de problème existe dans les pipelines où l’écriture se fait à plus d’un endroit

• WAR (Write after Read): instruction subséquente écrit la destination avant que l’instruction précédente ne l’ait lue. Ce type de problème peut apparaître lorsqu’il y a des écritures hâtives et des lectures tardives

Page 40: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Problème de dépendance de données RAW

Page 41: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Solution au RAW: le « forwarding »

Page 42: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Autre exemple de « forwarding »

Page 43: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: Problèmes de données exigeant des retards (stalls)

• Soit la séquence d’instructions suivante:LW R1, 0 (R2)

SUB R4, R1, R5

AND R6, R1, R7

OR R8, R1, R9

• La 1ère instruction est une lecture de la mémoire. La 2e utilise dans l’ALU la valeur lue en mémoire (MEM1 et ALU2 sont concurrentes)

• Solution: on utilise un dispositif matériel, le « pipeline interlock », pour détecter ce cas et introduire un retard (stall)

Page 44: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Stalls: impact sur la performance

• Supposons que 30% des instructions sont des « load »

• Supposons que 50% des instructions qui suivent un « load » utilisent la valeur lue

• Le CPI de l’instruction qui suit le « load » est de 1.5 (stall ½ du temps)

• Puisque 30% des instructions sont des « load », les CPI moyen devient:

CPI = (0,7 * 1 + 0,3 * 1,5) = 1,15

Page 45: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Certains « stalls » peuvent être évités, mais pas tous

Page 46: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Effet d’un « stall » sur le pipeline

Page 47: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

La nécéssité des « stall » - exemple

LW R1, 0(R1) IF ID EX MEM WB

SUB R4, R1, R5 IF ID EX MEM WB

AND R6, R1, R7 IF ID EX MEM WB

OR R8, R1, R9 IF ID EX MEM WB

LW R1, 0(R1) IF ID EX MEM WB

SUB R4, R1, R5 IF ID stall EX MEM WB

AND R6, R1, R7 IF stall ID EX MEM WB

OR R8, R1, R9 stall IF ID EX MEM WB

Page 48: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: utilisation des compilateurs pour réduire les problèmes de dépendences

• L’instruction de haut niveau suivante:• A = B + C

cause un délai (stall) pour charger la 2e valeur (C)

• Solution: on tente, à l’aide du compilateur, d’éviter de générer du code où un « load » est immédiatement suivi par l’utilisation du registre visé. Cette technique est appellée « pipeline scheduling » ou « instruction scheduling »

Page 49: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de « pipeline scheduling »

• Soient les instructions suivantes:A = B + CD = E – F

• Le code suivant évitera les « stall »:• LW Rb, B• LW Rc, C• LW Re, E• ADD Ra, Rb, Rc• LW Rf, F• SW A, Ra• SUB Rd, Re, Rf• SW D, Rd

Page 50: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Réalisation du contrôle du pipeline du DLX

• Lorsqu’une instruction passe de ID à EX, on dit que l’instruction est émise (issued). Dans le DLX, tous les problèmes de dépendances de données peuvent être détectés durant la phase ID. S’il y a un problème de dépendance, il n’y a qu’à retarder l’émission de l’instruction.

• De même, on peut détecter durant la phase ID quels « forwarding » devront être faits, et à quels moments

• Pour pouvoir contrôler ces 2 opérations, il y a 4 cas à considérer: Pas de dépendance Dépendance qui exige un « stall » Dépendance qui exige un « forward » Dépendance dénouée d’elle-même

Page 51: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: insertion de « stalls »

• Lorsqu’on détecte un problème de dépendance de données exigeant un « stall », il faut simplement faire 3 choses: Émettre un no-op à l’étage EX

Recirculer l’état de ID

Conserver le même IF

Page 52: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: insertion de « forward »

• Pour détecter la nécessité de faire un « forward », il y a un certain nombre de cas qui doivent être détectés dans le pipeline. Dans le DLX, il y a 10 cas à considérer pour les « forward sur les entrées de l’ALU

Note: l’ajout de chemins de « forward » implique que la taille des multiplexeurs des destinations doit augmenter

Page 53: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas à considérer pour le « forwarding » des entrées de l’ALU du DLX

Page 54: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: délais causés par des problèmes de contrôle

• Lorsqu’on exécute un branchement (branch), l’impact sur la performance peut être important. Dans le DLX tel que présenté jusqu’à maintenant, la modification du PC (lorsqu’un branchement est utilisé) ne se fait qu’à la fin de l’étage MEM.

• Le plus simple à faire est de retarder l’exécution jusqu’à ce que le PC soit valide. Dans ce cas, on doit attendre 3 cycles d’horloge. Mais… C’ext très coûteux!

• Pour réduire les délais des branchements, on peut faire 2 choses: Déterminer plus rapidement si le branchement est utilisé ou

non Calculer le PC résultant plus rapidement

Page 55: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: réduction des délais des branchements

• La solution simple est de retarder l’exécution en présence de branchements, mais elle est coûteuse en termes de performance. Peut-on faire mieux?

Page 56: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: réduction des délais de branchement

Page 57: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: réduction des délais de branchement (2)

On peut supposer que le branchement ne sera pas effectué. Dans ce cas, on continue tout simplement de lire des instructions pendant le calcul du branchement

On peut supposer que le branchement sera effectué. On commence à lire les instructions dès que la destination du branchement est connue. Pour le DLX, ceci n’apporte rien, puisqu’on sait simultanément la destination et la décision de branchement

Page 58: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: réduction des délais des branchements (3)

• On peut utiliser le branchement retardé (delayed branch). Dans le DLX, puisqu’il y a au maximum un délai d’une instruction avant de connaître la décision de branchement, on utilise un « branch-delay slot ». C’est-à-dire que l’instruction qui suit immédiatement celle de branchement est une instruction commue aux deux possibilités de branchement.

Page 59: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: branchement retardé

• Il existe trois possibilités pour utiliser le « branch-delay slot »: Intervertir l’instruction de branchement et celle qui la

précède. Ceci ne fonctionne que si cette instruction n’affecte pas le branchement

Utiliser la première instruction du branchement effectué. Ne fonctionne que si cette instruction n’affecte pas le branchement non-effectué

Utiliser la première instruction du branchement non-effectué. Dual de la solution précédente.

• Que choisir? Tout dépend…

Page 60: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

L’utilisation du « branch-delay slot »

Page 61: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: Branchement retardé (2)

• Que faire s’il n’y a pas d’instructions sans impact sur l’autre branche?

• Solution: on peut inclure dans le matériel un système de reconnaissance et d’élimination des mauvaises instructions de « branch-delay slot ».

• Il suffit que le compilateur indique pour quelle branche l’instruction du « branch-delay slot » fonctionne. Le processeur n’a qu’à comparer la prédiction du compilateur avec la décision réelle, et canceller l’instruction si la prédiction est invalide.

Page 62: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: prédiction des branchements

• Comment le compilateur peut-il décider des branchements? Étude du comportement des programmes en général (%

général des branchements utilisés, vers l’avant et vers l’arrière)

Étude des résultats de l’exécution du programme (souvent, système bi-modal)

Page 63: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Performance des « branch-delay slots »

Page 64: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: pourquoi est-ce difficile à réaliser?

• Difficulté majeure: comment gérer les exceptions (interruptions)? Utilisation de périphériques

Utilisation de services du système d’exploitation

Exceptions arithmétiques

Fautes de pages

Fautes de segmentation

Etc.

• Difficulté dérivée: exceptions multiples, exceptions désordonnées

Page 65: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemples d’exceptions

• Requête d’entrée/sortie

• Appel à une fonction de l’OS à partir d’une application

• Debuggage: tracing, breakpoints

• Dépassement arithmétique (overflow, underflow)

• Faute de page

• Mauvais accès à la mémoire

• Instruction non-définie

• Mauvais fonctionnement du matériel

• Problème d’alimentation

Page 66: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Systèmes Pipeline – opérations multicycles

Nous avons vu jusqu’à maintenant comment faire un pipeline simple, avec une seule unité d’exécution.

Comment peut-on ajouter de multiples unités d’exécution, certaines utilisant plus d’un coup d’horloge pour faire leurs calculs?

Page 67: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

DLX plus complet: plus d’unités d’exécution

• Pour améliorer le DLX, nous allons maintenant considérer l’ajout de plusieurs unités d’exécution à l’ALU initial: Unité d’addition point flottant

Unité de multiplication d’entiers

Unité de multiplication point flottant

Unite de division

Page 68: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Le DLX avec des unités d’exécution multiples

Page 69: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: Comment utiliser des opérations multicycles?

• Jusqu’à maintenant, nous n’avons considéré que des opérations sur les entiers dans l’ALU. Qu’arrive-t-il lorsqu’on incorpore des opérations à point flottant? Ou bien on allonge le cycle de l’horloge

Ou bien on augmente la taille du circuit

On bien on permet d’intégrer des opérations multi-cycles dans le pipeline

Page 70: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Le DLX avec des unité d’exécution point flottant

Page 71: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: intégration des opérations multicycles

• But: permettre à un opérateur point flottant d’utiliser plus d’un cycle d’horloge pour effectuer son travail

• Nous supposerons que l’unité point flottant peut utiliser un nombre arbitraire de cycles (le nombre exact dépend du type d’opération). Nous supposerons de plus qu’il peut y avoir plusieurs unités point flottant en parallèle

Page 72: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: intégration des opérations multicycles (2)

• Nous définissons 2 termes: la latence et l’intervalle d’émission Latence: durée de l’opération totale par rapport à la

durée d’une opération ALU sur des entiers

Intervalle d’émission (initiation interval): délai entre l’émission de deux opérations du même type

Page 73: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: unités multicycles

• Soient les 5 opérations suivantes: ALU entier, accès à la mémoire, addition FP, multiplication FP/entier, division FP, avec les paramètres suivants:

Quelles sont les implications de ce tableau?

Latence Intervalle d’émission

ALU entier 0 1

Accès mémoire 1 1

Addition FP 3 1

Multiplication FP 6 1

Division FP 24 24

Page 74: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: implications multicycles

• Toutes les opérations peuvent commencer une instruction par coup d’horloge, excepté la division. Celle-ci peut donc causer des problèmes structuraux (structural hazards). Dans ce cas, la seule solution est de faire des « stalls »

• Puisque les opérations sont de durée variable, il se peut que deux opérations atteignent l’étage d’écriture en même temps

• Il peut y avoir des problèmes de dépendance de données de type WAW

• Les instructions peuvent être complétées dans un ordre différent que l’ordre d’émission

• Puisque la latence est plus longue, il y aura plus de problèmes de type RAW

Page 75: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline multicycle: solution à l’écriture multiple

• Il est possible que deux instructions ou plus se terminent en même temps, et tentent d’écrire leurs résultats simultanément. Quoi faire? On pourrait ajouter des registres à plusieurs ports

d’entrée. On ajouterait beaucoup de matériel pour un cas relativement peu fréquent. Et il faudrait de toutes façons gérer l’écriture simultanée au même registre

Une meilleure solution est de détecter l’utilisation simultanée (on peut le faire dès l’étage ID), et réserver l’utilisation de l’étage d’écriture. Comment? En utilisant un registre à décalage pour réserver l’étage MEM. De cette façon, on peut faire un « stall » de l’opération problématique au niveau du ID.

Page 76: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline multicycles: sommaire du contrôle

1. Vérification de problèmes de structure (seulement avec le diviseur)

2. Vérification de problèmes de type RAW

3. Vérification de problèmes de type WAW

Page 77: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Pipeline: quoi d’autre?

• Que peut-on faire pour augmenter l’efficacité des méthodes de pipeline?

• Dans le MIPS 4000, on a utilisé plus d’étages de pipeline (8 au lieu de 5). En répartissant les opérations sur plus d’étages, il est possible d’augmenter la vitesse de l’horloge.

• Dans le R4000, on a ajouté des étages pour l’accès à la mémoire. On appelle parfois cette technique le « superpipelining »

Page 78: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Le MIPS R4000

• Dans le MIPS R4000, les étages sont les suivants: IF / IS / RF / EX / DF / DS / TC / WB

• IF: première partie du « instruction fetch » (sélection du PC, début d’accès)

• ID: deuxième partie du « instruction fetch » (lecture)

• RF: instruction decode, register fetch, cache hit?

• EX: unité d’exécution

• DF: data fetch

• DS: deuxième partie de l’accès à la mémoire (lecture)

• TC: cache hit?

• WB: write back

Page 79: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Le MIPS R4000 (2)

Page 80: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pip

elin

e m

ultic

ycle

s

© 2004 Frédéric Mailhot Université de Sherbrooke

La suite chez SGI

Page 81: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Systèmes Superscalaires et VLIW

Parallélisme des instructions: quoi d’autre?

Avec le pipeline, nous avons vu une des techniques de parallélisme des instructions (ILP ou Instruction Level Parallelism). Que peut-on faire de plus?

•VLIW (Very Large Instruction Word)•Techniques superscalaires

Page 82: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Limites du pipelining, et comment les dépasser

• Pour une machine pipeline, on peut espérer au mieux l’exécution d’une instruction par coup d’horloge: il n’y a jamais plus d’une instruction lue par coup d’horloge.

• Rappel: temps CPU = IC * CPI * période de l’horloge

• Pour augmenter la performance, on peut donc: Diminuer le nombre d’instructions (IC)

Diminuer le CPI

Diminuer la période de l’horloge

Page 83: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Limites du pipelining, et comment les dépasser (2)

• Une question fondamentale se pose:

1. Est-il préférable de tenter de simplifier le circuit pour augmenter la fréquence de l’horloge?

2. Ou bien, doit-on rendre le circuit plus complexe pour tenter de faire plus durant la même période d’horloge?

• L’architecture RISC, avec le pipeline, procède de la première approche. Les résultats sont probants, mais il semble qu’on ne puisse réduire la période de l’horloge en dessous d’un certain seuil.

• D’où: il faut aussi considérer la deuxième approche (ce que l’on fait avec le VLIW et le superscalaire).

Page 84: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Comment augmenter le ILP: en considérant plus d’une instruction par coup d’horloge

• L’idée de base ici est que la fréquence de l’horloge ne peut être réduite indéfiniment, et donc que pour une certaine durée d’horloge, on doit réussir à faire plus de travail utile.

• Comment faire? Lorsque nous arrivons à traiter tout près d’une instruction par coup d’horloge, la seule chose à faire de plus est de tenter de lire, décoder et exécuter plus d’une instruction par coup d’horloge…

Page 85: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Exécution de multiples instructions par coup d’horloge: difficultés

• Lorsqu’on tente d’exécuter plus d’une instruction par coup d’horloge, cela implique qu’au même moment plusieurs instructions, qui ont été produites selon une certaine séquence par le compilateur et apparaissent séquentiellement en mémoire, doivent être séparées en des chemins d’exécution parallèles

• Deux façons de faire cela: Décider au moment de la compilation des instructions qui

peuvent s’exécuter en parallèle (approche VLIW, EPIC)

Décider au moment de l’exécution des séquences d’instructions qui peuvent se faire en parallèle (approche superscalaire)

Page 86: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

VLIW: qu’est-ce que c’est?

• VLIW: technique pour exécuter plusieurs opérations en parallèle

• Méthode: on définit des groupes de plusieurs instructions, qui sont lues, décodées et exécutées en parallèle. Chaque groupe devient une « super-instruction » destinée à être lue d’un bloc par le processeur VLIW

• Avantage: le compilateur décide des instructions à grouper ensemble. Ceci élimine pour le processeur VLIW le fardeau du scheduling des instructions (détermination des instructions qui peuvent être exécutées en parallèle). Le processeur est donc plus simple à concevoir, et par conséquent peut être plus rapide.

Page 87: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: qu’est-ce que c’est?

• Superscalaire: technique pour exécuter plusieurs opérations en parallèle

• Méthode: lit en même temps des blocs d’instructions séquentielles (compilées de façon traditionnelle), et le processeur décide dynamiquement quelles instructions du bloc peuvent s’exécuter en parallèle

• Avantage: On utilise un compilateur traditionnel pour produire le code

exécutable

Le parallélisme est extrait de façon dynamique par le processeur, donnant une plus grande marge de manœuvre pour le scheduling des instructions

Page 88: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

VLIW vs superscalaire: les enjeux

• Le débat entre VLIW et superscalaire s’apparente au débat CISC/RISC du début des années ’80: simplicité du matériel (et performance améliorée) vs simplicité du compilateur

• Selon vous, lequel devrait gagner la bataille? VLIW?

Superscalaire?

Page 89: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

Le vainqueur apparent: le VLIW

• Comme le RISC a pris le dessus sur le CISC parce que le matériel est plus simple à réaliser et donc plus rapide, le VLIW devrait produire des systèmes plus performants

• Évidemment, les compilateurs devraient être améliorés, mais le type d’améliorations requises (détection de parallélisme au niveau des instructions) est déjà possible.

Page 90: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

VLIW: l’architecture du futur?

• Mais… il y a un problème important avec le VLIW: c’est le compilateur qui prend en charge toutes les dépendances entre les instructions, et qui les résout lors de la compilation. D’où deux constats importants:

1. Le compilateur est lié intimement à l’implémentation de l’architecture. Si celle-ci change, le compilateur (et donc le code) doit changer. Que fait-on avec nos « vieux » logiciels lorsqu’on change de machine?

2. La résolution de conflits se fait lors de la compilation. Elle doit donc être conservatrice. Dans un autre type d’architecture (i.e. le superscalaire) on fait cette résolution de façon dynamique. D’où plus de flexibilité et potentiellement une amélioration de la performance.

• Autre limitation du VLIW: puisque le code doit être libre de dépendances, il est presque impossible de l’écrire en langage assembleur

Page 91: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

et V

LIW

© 2004 Frédéric Mailhot Université de Sherbrooke

La suite: le superscalaire

• Nous couvrirons principalement les techniques superscalaires dans ce qui suit. Pourquoi? Le VLIW est une extension relativement simple du

pipeline (en théorie, on pourrait imaginer qu’on ne fait que mettre un ensemble de machines pipelines indépendantes en parallèle).

Pour ce qui est du superscalaire, la gestion dynamique des dépendances entre instructions est beaucoup plus sophistiquée, et exige qu’on s’y arrête pour comprendre ce qui se passe.

Page 92: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Systèmes Superscalaires

Comment peut-on déterminer de façon dynamique, au niveau du processeur, quelles sont les instructions qui peuvent s’exécuter en parallèles?

Dans ce qui suit nous étudierons l’architecure superscalaire générale, et nous examinerons en particulier deux méthodes utilisées pour extraire dynamiquement le parallélisme des instructions:

•La méthode « scoreboard »•La méthode de Tomasulo

Page 93: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Architecture superscalaire: introduction

• Idée derrière l’architecture superscalaire: émission de plus d’une instruction par coup d’horloge, à partir de code compilé de façon traditionnelle

• Mécanismes sous-jacents: Décodage parallèle Gestion d’instructions multiples

• Émission d’instructions multiples• Exécution parallèle des instructions• Préservation de l’ordre des instructions

Préservation de l’ordre des exceptions

Utilisationdu scoreboard ou de la méthode de Tomasulo

Page 94: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Architecture superscalaire: Gestion d’instructions multiples

• Puisqu’il y a plusieurs instructions émises en même temps, les problèmes de structure, de dépendances de données (RAW, WAW) et de contrôle seront exacerbés

• Il est impératif de gérer efficacement l’émission des instructions (structure, dépendances de données) Scoreboard

Tomasulo

• Il faut minimiser les délais causés par le branchements (contrôle) Techniques de prévision et de spéculation liées aux

branchements

Page 95: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: technique du scoreboard

• Origine: Control Data CDC 6600, en… 1963!

• Technique utilisée au départ pour maintenir un taux d’exécution de une instruction par coup d’horloge, en absence de problèmes de structure Extension: utilisation de multiples instructions par coup

d’horloge

• Idée: si une instruction est arrêtée (« stalled »), on peut utiliser une instruction subséquente si elle ne dépend pas de celle qui est arrêtée

Page 96: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: technique du scoreboard (2)

• Le scoreboard est un tableau interne qui contient toute l’information nécessaire (au sujet des instructions présentes dans le processeur) pour décider quand et où exécuter chacune des instructions

• On y conserve l’état de chacune des unités d’exécution, ainsi que le statut de chacun des registres

Page 97: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: architecture pour la méthode du scoreboard

Page 98: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: technique du scoreboard (3)

• Pour chaque unité d’exécution, on doit connaître: Si elle est en opération L’opération qui y est effectuée Le nom des registres de destination et des opérandes Le nom des unités d’exécution qui doivent produire les

valeurs requises pour les registres des opérandes (si les valeurs courantes ne sont pas prêtes)

L’état des registres des opérandes

• Le scoreboard utilise toutes ces valeurs pour décider à quel moment les instructions peuvent être exécutées

Page 99: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU

Mult1

Mult2

Add

Div

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 100: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F6 R2 non

Mult1 non

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE ALU

Page 101: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F6 R2 non

Mult1 non

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE ALU

Page 102: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 103: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 non

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE ALU

Page 104: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 oui Mul F0 F2 F4 ALU non oui

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 ALU

Page 105: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 oui Mul F0 F2 F4 ALU non oui

Mult2 non

Add oui Sub F8 F6 F2 ALU oui non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 ALU Add

Page 106: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 oui Mul F0 F2 F4 ALU non oui

Mult2 non

Add oui Sub F8 F6 F2 ALU oui non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 ALU Add Div

Page 107: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 oui Mul F0 F2 F4 ALU non oui

Mult2 non

Add oui Sub F8 F6 F2 ALU oui non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 ALU Add Div

RAW: LD-> MULTD, SUBD MULTD-> DIVD SUBD-> ADDDWAR: DIVD-> ADDDStruct: SUBD-> ADDD

Page 108: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU oui Load F2 R3 non

Mult1 oui Mul F0 F2 F4 ALU non oui

Mult2 non

Add oui Sub F8 F6 F2 ALU oui non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

Page 109: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 oui Mul F0 F2 F4 non non

Mult2 non

Add oui Sub F8 F6 F2 non non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

Page 110: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 oui Mul F0 F2 F4 non non

Mult2 non

Add oui Sub F8 F6 F2 non non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

Page 111: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 oui Mul F0 F2 F4 non non

Mult2 non

Add oui Addd F6 F8 F2 non non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

Page 112: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 oui Mul F0 F2 F4 non non

Mult2 non

Add oui Addd F6 F8 F2 non non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

RAW: MULTD-> DIVDWAR: DIVD-> ADDD

Page 113: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 oui Mul F0 F2 F4 non non

Mult2 non

Add oui Addd F6 F8 F2 non non

Div oui Div F10 F0 F6 Mult1 non oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add Div

Page 114: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add oui Addd F6 F8 F2 non non

Div oui Div F10 F0 F6 oui oui

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Add Div

Page 115: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add oui Addd F6 F8 F2 non non

Div oui Div F10 F0 F6 non non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Add Div

Page 116: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add non

Div oui Div F10 F0 F6 non non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Div

Page 117: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add non

Div oui Div F10 F0 F6 non non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Div

Page 118: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de scoreboardStatut des instructions

Instructions Émise Opérandes lus Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Statut des unités d’exécution

Nom Utilisé Op F i F j F k Q j Q k R j R k

ALU non

Mult1 non

Mult2 non

Add non

Div non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 119: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: méthode de Tomasulo

• Origine: IBM System/ 360 modèle 91 en… 1967! Inventée par Robert Tomasulo

• Technique utilisée pour éliminer les « fausses » dépendances qui proviennent de l’utilisation des mêmes registres à des fins différentes. La méthode de Tomasulo est une extension de la méthode du scoreboard

• Idée: Lorsqu’il y a de fausses dépendances de données parce qu’on réutilise les mêmes registres, on n’a qu’à « renommer » les registres (register renaming)

Page 120: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: méthode de Tomasulo (2)

• On utilise des étiquettes sur les données pour indiquer d’où elles doivent provenir lorsque le registre d’origine des opérandes n’est pas encore valide

• On utilise un bus de données commun (Common Data Bus, CDB) qui transporte à la fois les données et l’étiquette de leur unité d’exécution d’origine

• Tous les endroits qui attendent une donnée « écoutent » le CDB et attrapent les données qui leur sont destinées

• On utilise des « stations de réservation » pour conserver les instructions en attente d’exécution. Il peut y avoir une station de réservation par unité d’exécution, ou une par type d’unité d’exécution, ou même une seule pour toutes les unités d’exécution

Page 121: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: architecture pour la méthode de Tomasulo

Page 122: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: différences entre les méthodes de Tomasulo et scoreboard

• Tomasulo: Pas de vérification des cas de WAW et/ou WAR

(l’utilisation d’étiquettes de provenance élimine ces problèmes)

Utilisation du CDB pour obtenir directement les résultats, sans avoir à passer par les registres

Load/Store considérés comme des unités d’exécution au même titre que les additions/multiplications/divisions

Page 123: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 non

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 124: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 non

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load2

Résultat attendu de Load2

Page 125: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 oui MULTD Reg(F4) Load2

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Load2

Page 126: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Load2

Add2 non

Mult1 oui MULTD Reg(F4) Load2

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Load2 Add1

Page 127: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Load2

Add2 non

Mult1 oui MULTD Reg(F4) Load2

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Load2 Add1 Div1

Page 128: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Load2

Add2 oui ADDD Add1 Load2

Mult1 oui MULTD Reg(F4) Load2

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Load2 Add2 Add1 Div1

Page 129: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Load2

Add2 oui ADDD Add1 Load2

Mult1 oui MULTD Reg(F4) Load2

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Load2 Add2 Add1 Div1

Page 130: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Val(F2)

Add2 oui ADDD Val(F2) Add1

Mult1 oui MULTD Val(F2) Reg(F4)

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add2 Add1 Div1

Page 131: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 oui SUBD Reg(F6) Val(F2)

Add2 oui ADDD Val(F2) Add1

Mult1 oui MULTD Val(F2) Reg(F4)

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add2 Add1 Div1

Page 132: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 oui ADDD Val(F8) Val(F2)

Mult1 oui MULTD Val(F2) Reg(F4)

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add2 Div1

Page 133: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 oui ADDD Val(F8) Val(F2)

Mult1 oui MULTD Val(F2) Reg(F4)

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Add2 Div1

Page 134: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 oui MULTD Val(F2) Reg(F4)

Mult2 non

Div1 oui DIVD Reg(F6) Mult1

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult1 Div1

Page 135: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 non

Mult2 non

Div1 oui DIVD Val(F0) Reg(F6)

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Div1

Page 136: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 non

Mult2 non

Div1 oui DIVD Val(F0) Reg(F6)

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Div1

Page 137: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F6,34(R2)

LD F2, 45(R3)

MULTD F0,F2,F4

SUBD F8,F6,F2

DIVD F10,F0,F6

ADDD F6,F8,F2

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Add1 non

Add2 non

Mult1 non

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 138: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Exemple de la puissance de la méthode de Tomasulo

• Soit une portion de code où les éléments d’un tableau doivent tous être multipliés par une certaine constante:

Loop: LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

SUBI R1, R1, #8

BNEZ R1, Loop ; Branchement si R1 != 0

Page 139: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Exemple de la puissance de la méthode de Tomasulo (2)

• Dans la boucle qu’on vient de voir, l’utilisation répétitive de F0, F4 et R1 fait qu’on ne peut exécuter qu’une itération à la fois si rien de spécial n’est fait

• On peut résoudre ce problème au niveau du compilateur, et faire ce qu’on appelle du « loop unrolling », c’est-à-dire utiliser différents registres pour éliminer les dépendances entre les itérations successives

Page 140: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Exemple de la puissance de la méthode de Tomasulo (3)

• Exemple de boucle « déroulée » (unrolled loop):LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

SUBI R1, R1, #8

LD F6, 0(R1)

MULTD F8, F6, F2

SD 0(R1), F8

SUBI R1, R1, #8

LD F10, 0(R1)

MULTD F12, F10, F2

• Cette méthode fonctionne au niveau du compilateur si: On connaît le nombre d’itération au moment de la compilation Il y a assez de registres dans la machine pour contenir toutes

les itérations qu’on désire exécuter en parallèle

Page 141: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Exemple de la puissance de la méthode de Tomasulo (4)

• Au lieu de faire le travail de déroulement des boucles au niveau de la compilation, on peut le faire dynamiquement avec la méthode de Tomasulo! Il n’est plus nécessaire de connaître le nombre d’itérations

lors de la compilation

Le nombre de registres de la machine n’est plus un goulot d’étranglement

• Dans ce qui suit, on fera une simulation de ce qui se passe avec le système de Tomasulo. On supposera que les branchements n’existent pas (i.e., qu’ils sont prédits correctement)

Page 142: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 non

Store2 non

Mult1 non

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load1

Page 143: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 non

Store2 non

Mult1 oui MULTD Reg(F2) Load1

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load1 Mult1

Page 144: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Mult1

Store2 non

Mult1 oui MULTD Reg(F2) Load1

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load1 Mult1

Page 145: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Mult1

Store2 non

Mult1 oui MULTD Reg(F2) Load1

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load2 Mult1

Page 146: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Mult1

Store2 non

Mult1 oui MULTD Reg(F2) Load1

Mult2 oui MULTD Reg(F2) Load2

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load2 Mult2

Page 147: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Mult1

Store2 oui SD Mult2

Mult1 oui MULTD Reg(F2) Load1

Mult2 oui MULTD Reg(F2) Load2

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Load2 Mult2

Page 148: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Mult1

Store2 oui SD Mult2

Mult1 oui MULTD Val(Load1) Reg(F2)

Mult2 oui MULTD Val(Load2) Reg(F2)

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE Mult2

Page 149: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: 2e exemple de TomasuloStatut des instructions

Instructions Émise Exécution Écriture

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

LD F0, 0(R1)

MULTD F4, F0, F2

SD 0(R1), F4

Stations de réservation

Nom Utilisé Op V j V k Q j Q k

Store1 oui SD Val(Mult1)

Store2 oui SD Val(Mult2) = Reg(F4)

Mult1 non

Mult2 non

Div1 non

Statut des registres de résultats

F0 F2 F4 F6 F8 F10 F12 … F30

UE

Page 150: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Tomasulo VS Scoreboard

• Tomasulo: Dénoue automatiquement les problèmes de WAR et WAW

Utilisation du CDB élimine le délai de lecture des registres après qu’un résultat est obtenu (lecture directe sur le bus)

Plus complexe en termes de matériel: bus plus large (multiples données+étiquettes), nécéssité de mémoire associative distribuée

• Scoreboard: Plus simple à réaliser

Ne peut résoudre les problèmes de WAW qu’avec des « stalls »

Page 151: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

Superscalaire: Que choisir – Tomasulo ou Scoreboard?

• Pour une machine assez simple, qui n’émet qu’une instruction par coup d’horloge, la complexité supplémentaire de Tomasulo est probablement trop importante pour en valoir la peine (un bon compilateur peut probablement faire aussi bien)

• Pour une machine complexe, qui supporte plusieurs émissions par coup d’horloge, où il est possible que l’utilisation des registres cause des problèmes de WAW, Tomasulo est probablement le meilleur choix

Page 152: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

La quête de la performance: récapitulation

• Nous avons vu jusqu’ici que pour améliorer la performance des processeurs, on peut: Utiliser le pipeline (instructions découpées en petits éléments

qu’on peut exécuter en parallèle, amélioration de la période de l’horloge)

Utiliser plusieurs unités d’exécution en parallèle, qui ont possiblement des temps de latence différents (permet l’ajout de matériel dédié pour produire plus rapidement des multiplications, divisions et additions point flottant)

Utiliser des méthodes superscalaires pour parvenir à exécuter plus d’une instruction par coup d’horloge

• Scoreboard

• Tomasulo

Page 153: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Sys

tèm

es

sup

ers

cala

ires

© 2004 Frédéric Mailhot Université de Sherbrooke

La quête de la performance: récapitulation (2)

• Nous avons aussi vu qu’il existe d’autres facteurs qui influencent la performance:

1. Les branchements

2. L’accès à la mémoire (lecture/écriture)

• Pour la suite, nous verrons ce qu’on peut faire d’abord pour le premier facteur (les branchements), et ensuite pour l’accès à la mémoire

Page 154: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Gestion des branchements

L’un des goulots d’étranglements des processeurs moderne est ce qui se passe en présence de branchements

Que peut-on faire pour accélérer l’exécution du code en présence de branchements conditionnels?

Page 155: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi la gestion des branchements est de première importance dans les architectures superscalaires?

• Nous savons déjà que dans une simple machine pipeline comme le DLX, chaque branchement causera possiblement un délai de 2 coups d’horloge. En conséquence, il y aura dans ce cas deux instructions qui

devront être éliminées, et le CPI augmentera en conséquence

• Dans une machine superscalaire, le problème est encore plus aigu: à chaque coup d’horloge, on lit maintenant plusieurs instructions (de 2 à 8 instructions simultanées) Un délai de 2 coups d’horloge peut donc maintenant

représenter plus d’une dizaine d’instructions

L’impact sur le CPI est donc encore plus important pour une machine superscalaire que pour un simple pipeline

Page 156: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction des branchements

• Nous avons vu déjà qu’il est possible d’utiliser des prédictions statiques (décidées au niveau du compilateur) pour améliorer la performance des branchements

• Pourquoi ne pas tenter de faire des prévisions dynamiques (i.e. basée sur l’éxécution actuelle du code)?

Page 157: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Accélérer les branchements: les choix possibles

• Déterminer plus tôt si le branchement sera pris ou non (branch resolution) Utiliser des prédictions de branchement et l’exécution

spéculative

Pouvoir revenir en arrière si la prédiction s’avère fausse

• Déterminer plus tôt la destination du branchement Garder dans un tampon l’adresse de destination du

branchement, pour utilisation future

• Permettre de gérer plusieurs branchements imbriqués Il peut arriver qu’un branchement ne soit toujours pas résolu

lorsqu’un 2e branchement doit être traité

Page 158: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction 1-bit

• 1ère idée (simple): on utilise un registre à 1 bit pour capturer la décision du dernier branchement. Lors du traitement de toute instruction de branchement, on met le registre à 1 si le branchement a été effectué, et à 0 si le branchement n’a pas été effectué.

• Chaque fois qu’on rencontre une instruction de branchement, on utilise le registre de prédiction pour tenter de deviner la décision de branchement. Évidemment, la prédiction doit être validée plus tard par la vraie décision de branchement! (Et si la prédiction était mauvaise, on doit pouvoir éliminer les instructions inappropriées et commencer à lire et exécuter les bonnes instructions)

Page 159: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction 1-bit (2)

• Le système simple qu’on vient de présenter va bien fonctionner tant qu’on a affaires au même branchement, mais la prévision n’aura pas de sens dès qu’on passera à une autre instruction de branchement…

• Que peut-on faire?

• On peut utiliser une petite mémoire de 2^k bits, et pour chaque instruction de branchement, on utilise les k bits d’adresse les plus petits de cette instruction pour accéder à la mémoire prédictive. (Idée connexe: hash de l’adresse sur k bits)

• On utilise maintenant 2^k bits au lieu d’un seul bit, mais la prévision est valable pour un ensemble plus grand de branchements (on appelle tout de même cette technique « prédiction à 1-bit »)

Page 160: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: problèmes avec la prédiction 1-bit

• Supposons une boucle qui s’exécute 10 fois, et qui est elle-même ré-exécutée répétitivement. Quel sera le pourcentage de succès de notre prédicteur à 1 bit en régime permanent?

• Évidemment, le dernier branchement de la boucle (lorsqu’on sort après 10 itérations) est toujours mal prédit. De plus, le branchement de sortie de la boucle va modifier la valeur de notre prédicteur à 1-bit (il va maintenant prédire qu’on sort de la boucle), et donc la prochaine fois qu’on exécutera cette boucle, le premier branchement sera aussi mal prédit.

• Donc, on se trompe 2 fois sur dix (20% d’erreur)! Comment faire mieux?

Page 161: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction 2-bits

• Pour diminuer le pourcentage d’erreur de notre prédiction, on peut utiliser 2 bits au lieu de 1.

• Avec 2 bits, on peut représenter 4 états, ce qui nous permet de définir une petite machine à états finis. Par exemple, on peut définir un compteur avec saturation:

(11)branche

(10)branche

(01)ne branche pas

(00)ne branche pas

branche

ne branche pas ne branche pas ne branche pas

branche branche

branche

ne branche pasNote: en blanc, prédiction en orange, valeur calculée (réelle)

Page 162: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction 2-bits

• La machine à états finis précédente va doucement évoluer vers l’un des deux pôles, et ensuite va tendre à rester dans cet état pendant longtemps. Chez SUN, pour le Ultra-SPARC-I, on a utilisé une version légèrement modifiée de cette machine à états finis:

Note: en blanc, prédiction en orange, valeur calculée (réelle)

(11)branche

(10)branche

(01)ne branche pas

(00)ne branche pas

branche

ne branche pas

ne branche pas

ne branche pas

branchebranche

branche

ne branche pas

Page 163: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Efficacité de la prédiction 2-bits

Page 164: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction n-bits?

• On vient de voir qu’en passant d’un prédicteur à 1-bit à un prédicteur à 2-bits, on diminue le pourcentage d’erreur. On peut continuer dans le même sens, et passer à un prédicteur a k-bit… Est-ce une bonne idée?

Page 165: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Prédiction n-bits?

• Réponse: non, les résultats sont essentiellement les mêmes qu’avec un prédicteur à 2-bits

Page 166: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: problèmes avec la prédiction 2-bits

• La prédiction à 2-bits est plus efficace que la prédiction à 1-bit, mais elle n’est tout de même pas si bonne. Avec les benchmarks entiers, ce type de prédiction se trompe plus de 11% du temps.

• Quoi faire? Augmenter la taille de la mémoire? Pas très efficace

Tenir compte de la corrélation entre les branchements? Oui! (Idée de Pan, So et Rameh, 1992)

Page 167: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: problèmes de corrélation

• Soit le code suivant:

if (d == 0) d = 1;

if (d == 1) …

• Ceci devient:BNEZ R1, L1 branche b1 (d != 0)

ADDI R1, R0, 1

L1: SUBI R3, R1, 1

BNEZ R3, L2 branche b2 (d != 1)

L2: …

• Supposons que le code est exécuté avec les valeurs d = 2,0,2,0. Qu’est-ce qui arrive à nos prédictions?

Page 168: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: utilisation de la corrélation

• Puisque les branchements sont souvent dépendants les uns des autres, comment peut-on faire pour en tenir compte lors de notre prédiction?

• Nous utiliserons un registre à décalage de « m » bits pour conserver les valeurs des « m » derniers branchements. Ces « m » bits seront ensuite utilisés en partie pour adresser notre tampon de prédiction (le lire, et lorsque la décision définitive de branchement est prise, l’écrire)

• Le reste de l’adresse utilisée pour lire le tampon proviendra des k bits les plus faibles de l’adresse de l’instruction de branchement que nous sommes à prédire

Page 169: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: utilisation de la corrélation (2)

• Si on utilise les « m » derniers branchements (leurs valeurs, 1 ou 0, étant conservées dans un registre à décalage de « m » bits)

• Si on utilise un prédicteur à n-bits dans notre tampon de prédiction

• On dit que le prédicteur basé sur la corrélation est un prédicteur (m,n) Notre prédicteur 2-bits vu auparavant est donc un (0,2),

puisqu’il n’utilisait aucune historique Les prédicteurs (2,2) donnent habituellement de bons

résultats

Page 170: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: utilisation de la corrélation (3)

Branch history register (BHR)

Pattern History Table (PHT)

Page 171: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: utilisation de la corrélation (4)

• Le prédicteur (2,2) donne des résultats supérieurs ou égaux à ceux de prédicteurs 2-bits utilisant beaucoup plus de mémoire

Page 172: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: corrélation différente

• (Yeh et Patt, en 1992, 1993): Lorsqu’on parle de corrélation (m,n) (m choix de branchements, n bits de prédiction), doit-on considérer les « m » choix de branchements globalement ou localement?

• De même, la mémoires des « n » bits de prédiction doit-elle être globale ou locale?

• En d’autres mots, aurait-on intérêt à produire localement ou globalement l’information dans le BHR (Branch History Register)? Même question pour le PHT (Pattern History Table)?

Page 173: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: corrélation différente (2)

• On appellera prédicteur XAy des systèmes de prédiction de branchement Adaptifs (le A du milieu) où le type de BHR (Branch History Register) est « X », et le type de PHT (Pattern History Table) est « y ».

Page 174: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: corrélation différente (3)

• On définit les types de prédicteurs XAy suivants: G: BHR global (unique) g: PHT global (unique) P: BHR local, lu/écrit par adresse complète p: PHT local, lu/écrit par adresse complète S: BHR utilisant un sous-ensemble des bits d’adresse s: PHT utilisant un sous-ensemble des bits d’adresse

• On peut donc avoir des prédicteurs de 9 types différents: GAg, GAp, GAs, PAg, PAp, PAs, SAg, SAp et SAs

Page 175: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: corrélation différente (4)

• Exemple: GAg Un seul BHR (Branch History Register), un seul PHT

(Pattern History Table)

On appelle GAg(4) un tel système qui utilise 4 bits pour le BHR (Branch History Register)

Page 176: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

0 0

0 1

1 0

1 1

0 1

1 1

1 0

0 0

1 1

0 0

0 1

1 1

1 0

1 1

0 0

0 1

Prédiction dynamique des branchements: Système de Yeh et Patt

• Exemple: GAg(4)

1 1 0 0

shift

BHR

PHT1111111011011100101110101001100001110110010101000011001000010000

1 1

Prédiction: on branche!

Page 177: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

0 0

1 1

1 0

1 1

1 1

0 1

1 0

0 0

1 1

0 0

0 1

1 1

1 0

1 1

0 0

0 1

Prédiction dynamique des branchements: Système de Yeh et Patt (2)

• Exemple: GAp(4)• GAs(4): comme GAp(4),

mais avec un sous-ensemble

de l’adresse de l’instruction

de branchement

1 1 0 0

shift

BHR

PHT

0 1

0 1

1 1

1 1

0 1

1 1

0 0

1 0

1 0

1 0

0 0

1 0

1 1

1 0

1 0

0 0

1 0

0 0

0 0

1 0

0 0

1 0

1 1

0 1

0 1

0 1

1 1

0 1

0 0

0 0

0 1

1 1

Adresse de l’instruction de branchement

1111111011011100101110101001100001110110010101000011001000010000

1 1

Prédiction: on branche!

Page 178: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

0 0

0 1

1 0

0 0

0 1

1 1

1 0

0 0

1 1

0 0

0 1

1 1

1 0

1 1

0 0

0 1

Prédiction dynamique des branchements: Système de Yeh et Patt (3)

• Exemple: PAg(4)

Semblable: SAg(4)

PHT1111111011011100101110101001100001110110010101000011001000010000

shift

BHR1 1 1 1

0 0 0 0

1 1 1 0

1 1 0 0

1 0 1 0

1 1 1 0

0 0 0 0

1 0 0 1

Adresse de l’instructionde branchement 1 1 0 0

0 0

Prédiction: on ne branche pas!

Page 179: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Système de Yeh et Patt (4)

• Exemple: PAp(4)

Semblable: SAs(4)

PHTshift

BHR1 1 1 1

0 0 0 0

1 1 1 0

1 1 0 0

1 0 1 0

1 1 1 0

0 0 0 0

1 0 0 1

Adresse de l’instructionde branchement 1 1 0 0

0 0

1 1

1 0

1 1

1 1

0 1

1 0

0 0

1 1

0 0

0 1

1 1

1 0

1 1

0 0

0 1

0 1

0 1

1 1

1 1

0 1

1 1

0 0

1 0

1 0

1 0

0 0

1 0

1 1

1 0

1 0

0 0

1 0

0 0

0 0

1 0

0 0

1 0

1 1

0 1

0 1

0 1

1 1

0 1

0 0

0 0

0 1

1 1

Adresse de l’instruction de branchement

1111111011011100101110101001100001110110010101000011001000010000

1 1

Prédiction: on branche!

Page 180: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Système de Yeh et Patt (5)

• Coût en matériel des différents systèmes de prédiction adaptive:

• Meilleur système avec un budget de 128k bits:

GAs(13,32), qui obtient 97,2% de succès avec les SPEC89

Type de prédicteur

Longueur du BHR

Nombre de PHT

Coût (nombre de bits à emmagasiner)

GAg(k) k 1 k + 2^k * 2

GAs(k,p) k p k + p * 2^k * 2

SAg(k,s) k 1 s * k + 2^k * 2

SAs(k,s,p) k p s * k + p * 2^k * 2

Page 181: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Prédiction dynamique des branchements: Système de Yeh et Patt (6)

• Fait intéressant: Les systèmes utilisant de l’information globale semblent

donner de meilleurs résultats pour des programmes qui utilisent des opérations sur des entiers

(ces applications utilisent habituellement beaucoup de conditions)

Les systèmes utilisant de l’information locale semblent donner de meilleurs résultats pour des programmes qui utilisent des opérations sur des nombres à point flottant

(ces applications utilisent souvent des boucles)

• GAs(13,32) est probablement un bon compromis entre ces deux types d’applications

Page 182: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: manque-t-il quelque chose?

• Nous avons maintenant une technique intéressante pour prédire si un branchement sera accepté ou non. Est-ce qu’il nous manque encore quelque chose pour que le tout fonctionne vraiment?

• Oui! C’est bien de savoir si le branchement sera pris ou non, mais il faut encore savoir où va nous mener ce branchement pour aller chercher l’instruction suivante en cas de branchement…

Page 183: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: Branch target Buffer

• Pour savoir où aller dès que le prédicteur a produit son estimé, on utilise une mémoire tampon qui contient l’adresse de destination du branchement en question. On appelle ce dispositif un Branch Target Buffer (BTB)

• Ce tampon associe l’adresse d’un branchement avec l’adresse de destination utilisée précédemment

• Dans les processeurs qui contiennent des mémoires caches pour les instructions directement sur le circuit (I-cache), on peut immédiatement aller chercher l’instruction de destination

• Dans les processeurs qui n’ont pas de I-cache (vieux), on a considéré mettre directement l’instruction dans le tampon. On appelle alors le tampon un Branch Target Address cache (BTAC)

Page 184: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: Branch Target Buffer

Page 185: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: utilisation du BTB

Page 186: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion de branchements: quoi d’autre?

• Jusqu’ici, nous avons parlé de: Techniques de prédiction statiques (au niveau du

compilateur)

Techniques de prédictions dynamiques (prédiction à 2-bits, prédiction adaptive)

Techniques pour conserver l’adresse de destination des branchements

• Qu’est-ce qui manque à notre arsenal? L’exécution spéculative

Page 187: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: spéculation

• Soit le code suivant:

if (x == 0) { /* branche b1 */

a = b + c ;

d = e – f ; }

g = h * i ; /* instruction indépendante de b1 */

• En supposant que la condition b1 soit faussement prédite prise, l’instruction « g = h * i » sera retranchée du processeur alors qu’elle doit être exécutée de toutes façons

Page 188: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements: spéculation (2)

• Si le processeur le supporte, le compilateur pourrait réécrire la portion de code précédente comme suit:

Pred = (x == 0) ; /* branche b1 */

if Pred then a = b + c ; /* Opération effectuée seulement si */

if Pred then d = e – f ; /* Pred est vrai */

g = h * i ;

• Cette technique est utilisée dans le processeur Itanium (aka Merced, IA64) de Intel / HP

Page 189: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchement: spéculation (3)

• Certains processeurs font aussi ce qu’on appelle du « eager » ou « multipath » execution: Le processeur exécute en parallèle les 2 branches d’une

condition, et élimine celle qui est mauvaise lorsqu’on connaît le résultat de la condition

Fonctionne bien pour des conditions qui ont peu d’instruction à l’intérieur

En théorie, avec un nombre infini d’unités d’exécution, on peut paralléliser toutes les branches. En pratique, le nombre d’unités d’exécution du processeur limite le nombre de branches effectivement exécutées en parallèle

Page 190: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchement: spéculation (4)

• Puisque la spéculation est limitée par le matériel disponible, il faut choisir judicieusement les branches qu’on exécute de façon spéculative

• Comment? En intégrant un système de prédiction des branches!

Page 191: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion des branchements – effets des langages orientés-objet

• Lorsqu’on examine le code exécutable de programmes écrits dans des langages de programmation orientés-objet (e.g. C++, Java), on s’aperçoit qu’il existe un bon nombre de branchements dont la destination n’est pas une constante Cela vient du fait que certaines méthodes sont décidées de

façon dynamique, au cours de l’exécution du programme

• La destination des branchements étant variable, il devient intéressant d’utiliser un Branch Target Buffer (BTB), ou même de l’intégrer au Pattern History Table (PHT) pour pouvoir prédire rapidement la destination du branchement

Page 192: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Ge

stio

n d

es

bra

nch

em

en

ts

© 2004 Frédéric Mailhot Université de Sherbrooke

Processeurs réels et gestion des branchements

Technique Processeur

Pas de prédiction Intel 8086

Prédiction statique

non-prise

prise

prise (vers l’arrière) /

non-prise (avant)

Intel i486

Sun SuperSPARC

HP-PA-7x00

Prédiction dynamique

1-bit

2-bits

Adaptive

DEC Alpha 21064, AMD-K5

PowerPC 604, MIPS R10000

Intel Pentium Pro, Pentium II, AMD K-6

Spéculation Intel / HP Itanium

Page 193: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Étude de cas

Maintenant qu’on a vu les pipelines, le superscalaire, le VLIW, la gestion des branchements… Nous verrons comment le tout est intégré dans quelques processeurs connus:

1. La famille Pentium, Pentium Pro, Pentium II, Pentium MMX, Pentium III, (Pentium 4)

2. Le processeur Itanium de Intel / HP3. Le processeur Crusoë de Transmeta

Page 194: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Note de départ

• Nous parlerons ici de processeurs pour lesquels tous les détails techniques ne sont pas disponibles. Ce qui suit est donc incomplet, et peut contenir des erreurs.

Page 195: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Famille Pentium

• L’ensemble d’instructions (ISA – Instruction Set Architecture) x86 débute avec le processeur CISC 8086, suivi par la suite des processeurs scalaires 8088, 80286, Intel386, Intel486, suivi des processeurs superscalaires des familles P5 et P6

• Le premier Pentium fait partie de la famille P5 C’est une machine superscalaire qui peut émettre 2 instructions

par coup d’horloge

• La famille P6 apparaît en 1995, avec le Pentium Pro, suivi du Pentium MMX (P5) et du Pentium II (P6) en 1997

• En 1999, on introduit les instructions « Internet Streaming SIMD extension » (ISSE), avec le Pentium III

• Fin 2000, apparaît le Pentium 4, avec ISSE 2, et le « hyper pipelining » (pipeline de 20 étages)

Page 196: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Famille Pentium

Année Type Transistors

(x 1000)

m MHz Émission

(Ops)

1993 Pentium 3 100 0,8 66 2

1996 Pentium 3 300 0,35 150 - 166 2

1997 Pentium MMX 4 500 0,35 200 - 233 2

1995 PentiumPro 5 500 0,35 200 3

1998 Celeron 7 500 – 19 000 0,25 266 - 333 3

1997 Pentium II 7 500 0,25 233 – 450 3

1998 Pentium II Xeon 7 500 0,25 400 – 450 3

1999 Pentium III 9 500 0,25 450 – 500 3

1999 Pentium III Xeon 9 500 0,25 500 - 550 3

2000 Pentium 4 ? 0,18 1,3 – 2 GHz 3 (?)

Page 197: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Famille Pentium

• Pentium II: Exécution d’instructions dans le désordre, utilisation du

« register renaming » Utilisation de la méthode de Tomasulo

Mémoire cache séparée pour les instructions et les données

ISA: IA-32, instructions x86 transformées en instructions pseudo-RISC (ops) envoyées dans une station de réservation centralisée (appelée « instruction window »)

Les ops peuvent être exécutées dans le désordre, mais avant (et après) leur exécution elles sont envoyées à un tampon qui écrit les résultats dans le bon ordre (« reorder buffer »)

Page 198: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II

L2 Cache

Bus Interface Unit

Microcode Instruction Sequencer

Instruction Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table

Instruction

Decode

Unit

External Bus

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it Memory Interface Unit

Functional Units

Reorder Buffer and

Retirement Register File

Page 199: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

L2 Cache

Bus Interface Unit

Microcode Instruction Sequencer

Instruction Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table

Instruction

Decode

Unit

External Bus

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it Memory Interface Unit

Functional Units

Reorder Buffer and

Retirement Register File

Cas 1: Microprocesseur Pentium II (Décodage)

Microcode Instruction Sequencer

Instruction

Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table

Instruction

Decode

Unit

I-Cache Next IP

Page 200: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Décodage)

Microcode Instruction Sequencer

Instruction

Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table

Instruction

Decode

Unit

I-Cache Next IP

• L’unité « Next IP » génère l’adresse pour le I-Cache Basé sur l’information provenant du

BTB, qui utilise un prédicteur adaptif 2 niveaux (type Yeh et Patt)

Le BTB a 512 entrées

Les branches mal prédites causent un délai moyen de 15 cycles (minimum: 11 cycles)

Page 201: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Décodeur)

Microcode Instruction Sequencer

Instruction

Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table

Instruction

Decode

Unit

I-Cache Next IP

Alignement

Instruction IA-32

Ge

ne

al

De

co

de

r

Sim

ple

De

co

de

r

Sim

ple

De

co

de

r

op1 op2 op3

Page 202: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Décodeur)

• Le Décodeur lit 16 octets, et aligne les octets des instructions (jusqu’à 7 octets / instruction), qui sont de taille variable

• Il y a 3 unités de décodage: Le décodeur général (traite les

instructions complexes, et génère de 1 à 4 ops)

2 décodeurs simples (traitent les instructions de LOAD et registre-à-registre, générant 1 op)

Le décodeur peut générer jusqu’à 6 ops par cycle

La station de réservation peut accepter jusqu’à 3 ops par cycle

Alignement

Instruction IA-32

Ge

ne

al

De

co

de

r

Sim

ple

De

co

de

r

Sim

ple

De

co

de

r

op1 op2 op3

Page 203: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Décodeur)

Les ops sont des instructions pseudo-RISC, de taille fixe, qui contiennent un code d’opération, deux opérandes pour les sources, et un opérande pour la destination

Les instructions x86 les plus complexes (celles qui requièrent plus de 4 ops) sont décodées à l’aide du « Microcode Instruction Sequencer »

Instructions registres-à-registres: 1 op Instructions Load: 1 op Instructions Store, Read / Modify: 2 ops Instructions registres-mémoire: 2- 3 ops Instructions Read / Modify / Write: 4 ops

RAT: Conversion de registres en étiquettes liées au matériel

Ensuite, les ops sont envoyées au ROB et au RSU

Microcode Instruction Sequencer

Instruction

Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table (RAT)

Instruction

Decode

Unit

I-Cache Next IP

Page 204: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

L2 Cache

Bus Interface Unit

Microcode Instruction Sequencer

Instruction Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table (RAT)

Instruction

Decode

Unit

External Bus

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Memory Interface Unit

Functional Units

Reorder Buffer (ROB) and

Retirement Register File

Cas 1: Microprocesseur Pentium II (ROB et RSU)

Page 205: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (ROB et RSU)

• Le ROB garde en mémoire l’ordre des ops, pour qu’à la fin de leur exécution elles puissent être « retirées » (retired) dans le bon ordre (écriture dans les registres ou en mémoire)

• Le RSU contient une fenêtre de 20 ops, qui peuvent être exécutées dans le désordre

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Memory Interface Unit

Functional Units

Reorder Buffer (ROB) and

Retirement Register File

Page 206: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Reorder Buffer - ROB)

Le ROB est utilisé à deux reprises dans le processeur:1. Entre le décodage des instructions et l’exécution des ops:

• On indique alors l’ordre relatif des ops dans une instruction et des ops appartenant à des instructions distinctes

2. Après l’exécution, pour les retirer dans le bon ordre:• Retirer une instruction, c’est écrire de façon permanente (commit)

les changements de valeurs de registres et de la mémoire, dans une mémoire tampon temporaire, le Retirement Register File (RRF)

• Le processeur peut retirer 3 ops par coup d’horloge• Une op peut être retirée si:

Son exécution est terminée Toutes les autres ops de la même instruction sont terminées (?) Toutes les autres instructions qui précèdent sont terminées (et leurs ops

respectives) Il n’y a pas eu d’interruption, d’exception ou d’erreur de prédiction de

branchement

Page 207: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

L2 Cache

Bus Interface Unit

Microcode Instruction Sequencer

Instruction Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table (RAT)

Instruction

Decode

Unit

External Bus

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Memory Interface Unit

Functional Units

Reorder Buffer (ROB) and

Retirement Register File

Cas 1: Microprocesseur Pentium II (Exécution)

Page 208: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

L2 Cache

Bus Interface Unit

Microcode Instruction Sequencer

Instruction Fetch Unit (I-cache)

Branch Target Buffer

Register Alias Table (RAT)

Instruction

Decode

Unit

External Bus

Memory Reorder Buffer

D-Cache Unit

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Memory Interface Unit

Functional Units

Reorder Buffer (ROB) and

Retirement Register File

Cas 1: Microprocesseur Pentium II (Exécution)

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Port0

Port1

Port2

Port3

Port4Store

Functional Unit

Store Functional Unit

Load Functional Unit

MMX FU

Jump FU

Integer Functional Unit

MMX FU

Floating Pt FU

Integer Functional Unit

Page 209: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Exécution)

Res

erva

tio

n S

tati

on

Un

it

(RS

U)

Port0

Port1

Port2

Port3

Port4Store

Functional Unit

Store Functional Unit

Load Functional Unit

MMX FU

Jump FU

Integer Functional Unit

MMX FU

Floating Pt FU

Integer Functional Unit

• Si une op a les valeurs de ses opérandes d’entrées, et que le FU requis est libre, le RSU peut faire l’émission

• Le RSU peut émettre jusqu’à 5 ops par cycle (une par port), mais en moyenne c’est 3 ops

Page 210: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Exécution)

Port du RSU FU Latence Intervalle d’émission

0

Integer Arithmetic / logical / Shift 1 1Integer multiplication 4 1Floating Point Add 3 1Floating Point Multiplication 5 2Floating Point Division Long LongMMX Arithmetic / logical / Shift 1 1MMX Multiplication 3 1

1 Integer Arithmetic / logical / Shift 1 1MMX Arithmetic / logical / Shift 1 1

2 Load 3 1

3 Store Address 3 1

4 Store Data 1 1

Page 211: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium II (Pipeline)

BTB0

BTB1

IFU0

IFU1

IFU2

IDU0

IDU1

RAT

ROB read

Acc

ès

BT

BA

ccè

s I-

cach

eD

eco

de

Fe

tch

et

pre

-de

cod

e

Register renaming

Reorder Buffer read

Port 0

Port 1

Port 2

Port 3

Port 4

ROB read

RSU

Exé

cutio

mis

sio

nReorder Buffer read

Reservation Station

ROB write

RRF Re

tra

iteReorder Buffer Write

Retirement

Opérations dans l’ordre Opérations dans le désordre Opérations dans l’ordre

Page 212: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium 4 (Diagramme)

Page 213: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 1: Microprocesseur Pentium 4 (Pipeline)

• Le pipeline du Pentium 4 a 20 étages ( environ 2 fois plus que le Pentium III):

• Avantage: il est plus facile d’augmenter la fréquence de l’horloge

• Inconvénient: remplir / vider le pipeline prend du temps…

Page 214: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium

• Développé conjointement par HP et Intel: ISA mis au point chez HP

Design matériel principalement chez Intel

• But: mettre au point la prochaine génération de processeurs haute performance 64 bits

• Principes de base: éliminer les goulots d’étranglements connus des systèmes superscalaires existants

Page 215: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium (2)

• Ce qui limite la performance dans les systèmes superscalaires « standard »: Les branchements

• Les mauvaises prédictions limitent la performance

• Les petites branches (peu de code) ont peu de code à exécuter, ce qui limite le parallélisme

L’accès à la mémoire• Utilise plus d’un coup d’horloge

• Souvent, on doit faire un load juste après un branchement

L’extraction du parallélisme des instructions• Le compilateur « sérialise » le code, dont le parallélisme

intrinsèque doit être redécouvert dynamiquement par le processeur

Page 216: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Les limites de la performance: Branchements

• Erreurs de prédiction limitent la performance

• Les petits blocs de destination limitent le parallélisme Mauvaise utilisation des machines ayant beaucoup d’unités

d’exécutionLd R1

Use R1

St R2

Ld R4

Use R4

IF

THEN ELSE

Tranchesd’exécutioninutilisées

Page 217: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Les limites de la performance (2): Latence de la mémoire

• Temps d’accès à la mémoire augmente continuellement par rapport à la vitesse des processeurs

• Délais de chargement exacerbés par les machines qui exécutent plus d’une instruction par coup d’horloge

branchement

load

utilisation

Le branchement est une barrière

branchement

load

utilisation

Machine scalaire Machine 4 X superscalaire

Page 218: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Les limites de la performance (3): Extraction du parallélisme

• Modèle d’exécution séquentiel

• Le compilateur a une vue limitée, indirecte du matériel

Code sourceoriginal

Code parallèle

Compilateur Code machineséquentiel

Code parallèle

…Unités d’exécution multiples

Matériel

Page 219: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Compilateur

« Expose »

Cas 2: Itanium – Meilleure stratégie: parallélisme explicite

• Le compilateur expose, améliore et exploite le parallélisme du programme source et le rend explicite dans le code machine

Code sourceoriginal

« Améliore »

Code machineparallèle

« Exploite »

Page 220: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Format des instructions

• Les instructions sont regroupées en paquets de 128 bits Chaque instruction fait 40 bits

• Il y a un gabarit (template) de 8 bits qui indique quelles instructions peuvent s’exécuter en parallèle Permet au compilateur d’extraire plus de parallélisme

Simplifie le matériel en éliminant les mécanismes de détection dynamiques

Augmentation modeste de la taille du code

• Instructions EPIC: Explicitely Parallel Instruction Computing (parallélisme explicite grâce aux gabarits)

Instruction 1 Instruction 0 GabaritInstruction 2

Groupe de 128 bits

127 0

Page 221: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Branchements traditionnels

• Architecture traditionnelle: 4 blocs de base

• Les conditions introduisent des branchements

Instr 1Instr 2..

p1, p2 <- cmp(a == b)Jump p2

Instr 3Instr 4..

Jump

Instr 5Instr 6..

Instr 7Instr 8..

if

then

else

Page 222: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Utilisation de « prédicats »

Instr 1Instr 2..

p1, p2 <- cmp(a == b)Jump p2

Instr 3Instr 4..

Jump

Instr 5Instr 6..

Instr 7Instr 8..

if

then

else

(p1)(p1)

(p2)(p2)

Page 223: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Utilisation de « prédicats »

Instr 1Instr 2..

p1, p2 <- cmp(a == b)Jump p2

Instr 3Instr 4..

Jump

Instr 5Instr 6..

Instr 7Instr 8..

if

then

else

Architecture traditionnelle: 4 blocs

Instr 1Instr 2..

p1, p2 <- cmp(a == b)

Instr 7Instr 8..

if

then elseInstr 3Instr 4..

(p1)(p1)

Instr 5Instr 6..

(p2)(p2)

Architecture EPIC: 1 seul bloc

• Les prédicats permettent une meilleure utilisation du matériel parallèle

Page 224: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Utilisation de « prédicats »

• Le compilateur a une plus grande marge de manœuvre pour faire le « scheduling » des instructions La plupart des instructions peuvent inclure des prédicats L’état de la machine (les registres et la mémoire) ne sont mis à jour que

si le prédicat est vrai. Sinon, l’instruction devient effectivement un NOP Le compilateur assigne des prédicats aux instructions, qui sont

déterminés par les instructions de comparaison EPIC définit 64 registres de prédicats à 1-bit

• L’utilisation de prédicats élimine les branchements Convertit une dépendance de contrôle en dépendance de données Réduit les pénalités pour les mauvaises prédictions

• Exécution parallèle de plus d’instructions Utilisation plus efficace du matériel parallèle

• Sur les SPEC89, près de ½ des branchements sont éliminés

Page 225: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Délais d’accès à la mémoire avec les machines traditionnelles

• La lecture de la mémoire affecte la performance de façon majeure Souvent le LOAD est la 1ère instruction d’une chaîne

d’instructions dépendantes

Il peut y avoir une grande latence

Les LOAD peuvent causer des exceptions

Instr 1Instr 2..

Jump p2

LoadUtilisation..

Barrière

Architecture traditionnelle

Page 226: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Spéculation

• On sépare la lecture du traitement des exceptions L’instruction de lecture spéculative (ld.s) démarre un

Load et détecte les exceptions

Les exceptions sont propagées (à l’aide d’un jeton attaché au registre de destination) de ls.s à chk.s

La vérification spéculative (chk.s) « rend publiques » les exceptions détectées par ld.s

Détection des exceptions

Livraison des exceptions

Architecture EPIC

ld.sInstr 1Instr 2… .

Jump p2

chk.sUtilisation..

Propagation desExceptions

Page 227: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium – Spéculation

• Donne plus de liberté au compilateur pour le scheduling Permet aux instructions ld.s d’apparaître avant les

branchements

Chk.s demeure à sa position initiale, et initie une correction si une exception est détectée

Instr 1Instr 2..

Jump p2

LoadUtilisation..

Barrière

Architecture traditionnelle Architecture EPICld.sInstr 1Instr 2… .

Jump p2

chk.sUtilisation..

Propagation desExceptions

Détection des exceptions

Livraison des exceptions

Page 228: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium: Exemple - La boucle des 8 Reines

if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true))

Vrai Mauvaise préd38% 43%

72% 33%

47% 39%

Code original

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]P1, P2 <- cmp(R2 == true)<P2> br exit

Ld R4 = [R3]P3, P4 <- cmp(R4 == true)<P4> br exit

Ld R6 = [R5]P5, P6 <- cmp(R6 == true)<P5> br thenelse

11

224455

6688

99

10101212

1313

13 cycles, 13 cycles, 3 mauvaises prédictions possibles3 mauvaises prédictions possibles

Page 229: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium: Exemple - La boucle des 8 Reines

if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true))

Code original

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]P1, P2 <- cmp(R2 == true)<P2> br exit

Ld R4 = [R3]P3, P4 <- cmp(R4 == true)<P4> br exit

Ld R6 = [R5]P5, P6 <- cmp(R6 == true)<P5> br thenelse

11

224455

6688

99

10101212

1313

13 cycles, 13 cycles, 3 mauvaises prédictions possibles3 mauvaises prédictions possibles

9 cycles, 9 cycles, 3 mauvaises prédictions possibles3 mauvaises prédictions possibles

77

4455

Spéculation

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]Ld.s R4 = [R3]Ld.s R6 = [R5]P1, P2 <- cmp(R2 == true)<P2> br exit

11

22

Chk.s R4P3, P4 <- cmp(R4 == true)<P4> br exit

66

Chk.s R6P5, P6 <- cmp(R6 == true)<P5> br thenelse

88

99

Page 230: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium: Exemple - La boucle des 8 Reines

if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true))

9 cycles, 9 cycles, 3 mauvaises prédictions possibles3 mauvaises prédictions possibles

77

4455

Spéculation

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]Ld.s R4 = [R3]Ld.s R6 = [R5]P1, P2 <- cmp(R2 == true)<P2> br exit

11

22

Chk.s R4P3, P4 <- cmp(R4 == true)<P4> br exit

66

Chk.s R6P5, P6 <- cmp(R6 == true)<P5> br thenelse

88

99 7 cycles, 7 cycles, 1 mauvaise prédiction possible1 mauvaise prédiction possible

22

Usage de prédicats

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]Ld.s R4 = [R3]Ld.s R6 = [R5]P1, P2 <- cmp(R2 == true)<P2> br exit<P1> Chk.s R4<P1> P3, P4 <- cmp(R4 == true)<P4> br exit<P3> Chk.s R6<P3> P5, P6 <- cmp(R6 == true)<P5> br thenelse

11

44

55

77

66

Page 231: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium: Exemple - La boucle des 8 Reines

if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true))

7 cycles, 7 cycles, 1 mauvaise prédiction possible1 mauvaise prédiction possible

22

Usage de prédicats

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]Ld.s R4 = [R3]Ld.s R6 = [R5]P1, P2 <- cmp(R2 == true)<P2> br exit<P1> Chk.s R4<P1> P3, P4 <- cmp(R4 == true)<P4> br exit<P3> Chk.s R6<P3> P5, P6 <- cmp(R6 == true)<P5> br thenelse

11

44

55

77

66

Code original

R1 = &b[ j ]R3 = &a [i+j]R5 = &c [i-j+7]Ld R2 = [R1]P1, P2 <- cmp(R2 == true)<P2> br exit

Ld R4 = [R3]P3, P4 <- cmp(R4 == true)<P4> br exit

Ld R6 = [R5]P5, P6 <- cmp(R6 == true)<P5> br thenelse

11

224455

6688

99

10101212

1313

13 cycles, 13 cycles, 3 mauvaises prédictions possibles3 mauvaises prédictions possibles

Résultat: réduction de prèsde la moitié du nombre de cycles

2/3 des erreurs possiblesde prédictions sont éliminées

Page 232: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 2: Itanium - Conclusion

• EPIC (Explicitely Parallel Instruction Computing) Utilise du code assembleur où le parallélisme est

indiqué explicitement avec des gabarits (templates)

Utilise la prédication pour éliminer les branchements (utilisation de 64 registres de statut qui permettent l’exécution conditionnelle d’instructions)

Utilise la spéculation pour diminuer l’impact des Loads (on sépare le chargement du traitement des exceptions)

• Architecture des instructions faite pour que les processeurs soient facilement améliorés par des ajouts de matériel parallèle supplémentaire

Page 233: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë de Transmeta

• Processeur destiné au marché des machines portables Requiert très peu de puissance électrique comparé à

d’autres processeurs ayant des performances semblables

• Attrait intéressant: utilise un noyau VLIW sur lequel un émulateur logiciel peut interpréter des instructions destinées à un autre processeur Transmeta a démontré l’utilisation d’une application

hybride Java / x86, où l’ensemble des instructions sont exécutées (interprétées et traduites) sur le VLIW sous-jacent

Page 234: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë de Transmeta

• Pour contrôler ses besoins de puissance électrique, Crusoe détecte si le système est peu utilisé, et à la fois réduit la fréquence de l’horloge (de 700 MHz à 200MHz) et le potentiel d’alimentation (de 1,65 V à 1,1 V)

• Puisque P = ½ f * C V^2, La puissance est diminuée de (700 / 200) * (1,65 / 1,1)^2

et P’ = (1 / 7,88) * P (près de 8 fois moins de puissance)

Page 235: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë – CMS (Code Morphing Software)

• Le processeur Crusoe est un VLIW sur lequel s’exécute un logiciel d’interprétation d’instructions x86

Page 236: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë - CMS

• Le CMS (Code Morphing System)

• Interprétation des instructions x86 en instructions VLIW

• Mise en mémoire des séquences d’instructions fréquentes

• Réutilisation des instructions déjà traduites

Page 237: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë: Diagramme

• Diagramme du 5400:

Page 238: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Étu

de

s d

e ca

s

© 2004 Frédéric Mailhot Université de Sherbrooke

Cas 3: Crusoë

• Le 5400:

Page 239: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Digression: «Control flow »  et « Data flow »

Jusqu’ici, les processeurs que nous avons étudié ont tous été du type « Von Neumann », c’est-à-dire des machines où un « program counter » indique où aller chercher la prochaine instruction. C’est ce qu’on appelle le modèle « control flow », et c’est le type de machine principal qui existe de nos jours

Mais… on peut imaginer un autre paradigme pour l’exécution des instructions!

Page 240: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Comment faire un processeur autrement qu’en utilisant le « control flow » de Von Neumann?

• Rappelons-nous notre étude du Itanium: nous avons vu que les programmes peuvent être représentés par des graphes:

• Ces graphes représentent le fait que les instructions ont des dépendances entre elles à cause des données

Page 241: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

L’idée derrière les processeurs « Data flow »

• Sachant que ce qui va empêcher une instruction de s’exécuter, ce sont les valeurs inconnues des opérandes, on peut changer le mode d’opération de la machine: Au lieu d’indiquer où se trouve la prochaine instruction,

on indique quelles sont les dépendances entre les instructions

Lorsque toutes les valeurs d’entrées d’une instruction sont connues, on peut alors l’exécuter

Page 242: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Processeur VS matériel dédié

• En fait, le mode d’opération « Data Flow » est la méthode utilisée lors de la génération de circuits matériels, par exemple dans les ASICs (Application Specific Integrated Circuits)

• Lorsqu’on fait la synthèse de circuits à partir de langages HDL (VHDL ou Verilog), c’est aussi le modèle « Data Flow » qui est utilisé On verra cela avec un peu plus de détail plus tard durant la

session

• De cette façon, l’ordre d’exécution des opérations est décidé de façon dynamique, pendant que le système est à évaluer les données

Page 243: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Processeurs « Data Flow »

• Depuis le début des années ’70, il y a eu plusieurs processeurs « Data Flow » étudié par diverses équipes de recherche MIT Static Dataflow Machine (1975) Manchester Dataflow Machine (1979) Hughes Dataflow Multiprocessor (1985) Stateless Data-Flow Architecture (1993) Et beaucoup d’autres…

• Plusieurs types de machines Dataflow ont été étudiées, mais nous nous contenterons d’un bref aperçu de la plus simple, la méthode « statique »

Page 244: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Approche simple: Static dataflow

• On utilise des jetons (tokens) pour indiquer la validité des données

*

SQRT

x y

z

2 3

ni

nj

Jeton de données

Jeton de retour

Arc de données

Arc de retour(acknowlege)

*

2

3

n j

x

y

sqrt

z

n i

xy

z

nj

ni

Page 245: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Approche simple: Static dataflow

• On peut utiliser deux façons différentes d’initier les calculs: Push ou Pull:

• Push: on fait le calcul de la sortie lorsque tous les opérandes sont connus (le contrôle des calculs va des entrées vers les sorties)

• Pull: on initie le calcul d’une valeur que lorsqu’elle est nécessaire (le contrôle des calculs va des sorties vers les entrées)

Page 246: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple: la MIT Static Dataflow Machine

OperationUnit(s)

InstructionQueue

ActivityStore

SendUnit

ReceiveUnit

UpdateUnit

FetchUnit

Processing Element

Vers le CommunicationNetwork

Page 247: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple: la MIT Static Dataflow Machine

OperationUnit(s)

InstructionQueue

ActivityStore

SendUnit

ReceiveUnit

UpdateUnit

FetchUnit

Processing Element

Vers le CommunicationNetwork

PE

PECommunication

Network…

Page 248: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Pro

cess

eu

rs ‘D

ata

Flo

w’

© 2004 Frédéric Mailhot Université de Sherbrooke

Machines Dataflow – Remarques et conclusion

• Certaines idées des machines Dataflow ont été reprises dans les processeurs de type Von Neumann « traditionnels »: Le « renaming », avec utilisation du Common Data Bus,

est assez proche des idées dataflow: une instruction ne s’exécute que lorsque tous ses opérandes sont prêts

L’exécution des instructions dans le « désordre » respecte toujours la disponibilité des opérandes, comme dans les systèmes Dataflow

Page 249: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Et maintenant, où allons-nous?

Après toutes les techniques vues jusqu’ici:Que peut-on faire de plus?

Question plus fondamentale (et importante):Lorsque toutes les techniques vues jusqu’ici sont en place, d’où viennent les limites de performance?

Page 250: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Quelles sont les limites de performance qui n’ont pas été abordées jusqu’ici?

• Dans les années ’50, lorsqu’on s’est aperçu que les ordinateurs passaient le plus clair de leur temps à faire des entrées/sorties, on a découplé les E/S (I/O) du processeur central.

• Plus tard, on a même introduit les systèmes « batch », pour augmenter le niveau d’utilisation du CPU central.

• En quoi ces deux problèmes des années ’50 sont-ils semblables à ce qui limite maintenant la performance?

Page 251: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Le temps d’accès à la mémoire est grand!

• Maintenant, dans les années 2000, qu’est-ce qui limite la performance des processeurs? Le temps d’accès à la mémoire est de plus en plus

grand par rapport au temps d’exécution du processeur.

Lorsqu’un accès à la mémoire est fait, on observe les temps d’accès suivants (valeurs provenant d’un processeur Alpha 21164 à 300 MHz):

• Pas de délai pour le cache L1

• 7 cycles pour un accès manqué dans L1, réussi dans L2

• 21 cycles pour un accès manqué dans L2, réussi dans L3

• 80 cycles pour un accès à la mémoire

Page 252: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Les implications des grands temps d’accès

• Les délais impliqués lorsque les données ne sont pas dans les mémoires caches sont très grands. Donc, lorsqu’il y a un « cache miss », le processeur va s’arrêter

pendant un long moment (en supposant qu’on ne peut exécuter d’autres instructions qui sont déjà dans le processeur):

• Ceci va se passer assez souvent lorsqu’on vient de faire un saut dans une nouvelle partie de code

• Si le délai d’accès à la mémoire est trop grand, éventuellement l’instruction en attente va arrêter toutes les autres à causes de dépendances de données

• D’une certain façon, on revient au problème vécu dans les années ’50: le processeur passe trop de temps à faire des entrées/sorties, et le CPU (les unités d’exécution dans notre cas) sont trop souvent inactives en attendant que les données soient disponibles)

Page 253: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Une solution possible aux grands temps d’accès à la mémoire

• Dans les années ’50, on a tout fait pour garder le CPU occupé autant que possible

• Dans les années 2000, on doit aussi tenter de garder (toutes) les unités d’exécution occupées, même pendant un accès à la mémoire… Au niveau du système d’exploitation, on sait qu’il y a

souvent beaucoup de threads qui existent au niveau du répartiteur.

Et si on faisait le context switch entre les threads au niveau du processeur?…

Page 254: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Les processeurs multithreaded: l’avenir?

• Puisque le processeur est souvent inactif (en tout ou en partie, i.e. toutes/certaines unités d’exécution sont inutilisées), une idée intéressante est de faire exécuter plusieurs threads parallèles par le processeur

• En ayant plus d’instructions parmi lesquelles choisir, le taux d’occupation des unités d’exécution devrait augmenter

Page 255: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Les processeurs multithreaded: Qu’est-ce que c’est?

• On définit une machine « multithreaded » ainsi: Processeur dans lequel les instructions à exécuter

proviennent potentiellement de différents threads

• Quel est l’avantage de ces machines? Lorsqu’un thread est immobilisé (par une instruction en

attente de quelque donnée ou unité d’exécution), d’autres instructions provenant de d’autres threads peuvent s’exécuter

Les threads partagent la même mémoire, donc l’accès à la mémoire (le tableau des pages) n’a pas besoin d’être modifié

Page 256: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine single-thread scalaire:

1

1

1

1

Tem

ps

Page 257: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread scalaire par bloc:

1 2 3 4

Tem

ps

1

2

1

Cha

ngem

ent

de c

onte

xte

(Con

text

Sw

itch)

1

2

Page 258: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread scalaire cycle-par-cycle:

1 2 3 4

Tem

ps

1

2

3

4

1

2

Cha

ngem

ent

de c

onte

xte

(Con

text

Sw

itch)

Page 259: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine single-thread superscalaire:

1

Tem

ps

1 1

1

1 1 1 1

111

Page 260: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine single-thread VLIW:

1

Tem

ps

1 1

1

1 1 1 1

111

N N

NNN

N

Page 261: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread superscalaire cycle-par-cycle:

1 2 3 4

1

2

3

4Tem

ps

Cha

ngem

ent

de c

onte

xte

(Con

text

Sw

itch)

1

11

2 2

2

4 4 4

Page 262: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread VLIW cycle-par-cycle:

1 2 3 4

1

2

3

4Tem

ps

Cha

ngem

ent

de c

onte

xte

(Con

text

Sw

itch)

1

11

2 2

2

4 4 4

N N

N

N

N

NNN

N

NN

Page 263: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread superscalaire par émission (Simultaneous multithreading, SMT): Université de Washington (1995), Karlsruhe (1996)

1 2 3 4

Tem

ps

1

2

3

4

1

1

1

2 2

2

4 4

4

3 3

2

3

2 1

3 4 4

2 4

Page 264: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de machines « multithread »

• Machine multi-thread scalaire par émission (chip multiprocessor, CMP):

1 2 3 4

Tem

ps 4

44

4

4

4 4

2

2

2

2

2

2

2

2

3

3

3

3

3 3

1

1

1

1

1

1

1

Page 265: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

Le futur: quoi d’autre?

• On a remarqué que dans de nombreux programmes, les mêmes variables sont lues de façon répétitive avec les mêmes valeurs.

• Idée: on va commencer l’exécution d’une instruction avant de connaître la valeur de ses opérandes, en utilisant des valeurs « prédites » à partir des valeurs précédentes

• On appelle cette technique la « superspéculation »

Page 266: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Qu

e n

ou

s ré

serv

e le

futu

r?

© 2004 Frédéric Mailhot Université de Sherbrooke

La superspéculation

• Les processeurs utilisant cette technique utilisent deux sous-systèmes: Un système « front end » qui spécule de façon

agressive, allant jusqu’à prédire les valeurs manquantes

Un système « back end » qui valide les prédictions de valeurs et qui peut corriger le tir lorsque nécessaire

Page 267: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Hiérarchie de la mémoire

Les processeurs modernes requièrent beaucoup de mémoire rapide. Or, plus la mémoire est rapide, plus elle est chère. Que faire pour obtenir à coût raisonnable une machine performante?

On utilise une hiérarchie de mémoires cache

Page 268: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi les mémoires caches fonctionnent-elles?

• Les mémoires caches fonctionnent parce que les mêmes instructions sont réutilisées de multiples fois (évidemment si chaque instruction n’était utilisée qu’une seule fois, l’utilisation de la mémoire cache ne serait pas très en vogue…)

• On parle de localité des références: Localité temporelle

• Les instructions utilisées récemment sont souvent réutilisées

Localité spatiale• Les instructions voisines sont souvent exécutées de concert

Localité séquentielle• Les branchements constituent de 20 à 30% des instructions. Donc,

de 70 à 80% des instructions s’exécutent toujours en séquence• Les branchements vont souvent prendre les mêmes chemins pendant

un certain temps (les branchements sont corrélés)

Page 269: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi une hiérarchie de mémoire?

• Plus la mémoire a un temps d’accès petit, plus elle coûte cher. Il vaut donc la peine d’utiliser le moins possible de mémoire rapide tout en conservant une performance acceptable: Touchant le processeur, on a la mémoire la plus rapide (et

aussi la plus chère)

En bout de ligne, on a la mémoire principale, suivie du disque

• De nos jours, le premier niveau de mémoire cache se trouve souvent sur le même chip que le processseur (le 2e niveau peut aussi s’y retrouver)

Page 270: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Coût de la mémoire et temps d’accès

Coût VS temps d'accès de la mémoire

Temps d'accès

Co

ût

Page 271: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Taille de la mémoire cache et probabilité de « hit »

Probabilité VS Taille des mémoires caches

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

Taille de la mémoire cache

Pro

bab

ilité

de

pré

sen

ce

Page 272: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire cache: comment ça marche?

• L’idée de la mémoire cache, c’est de conserver dans une mémoire rapide les données dont on aura besoin bientôt

• Il existe plusieurs techniques pour distinguer les données emmagasinées dans la mémoire cache: Mapping associatif

Mapping direct

Mapping par ensemble associatif (set-associative)

Page 273: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire associative: comment ça marche

• Chaque entrée dans ce type de mémoire contient une clé et une valeur. Pour accéder à la valeur, il suffit de présenter la bonne clé (c’est la même idée que pour un tableau de hachage)

• Lorsqu’on présente une clé à ce type de mémoire, toutes les clés de toutes les entrées de la mémoire sont comparées en parallèle. Celle qui est identique (si elle existe) détermine quelle valeur est présentée à la sortie

Page 274: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire associative: comment ça marche

0x00CCBB50 2220

0xCC0011B0 155277

0x000011B0 5823

0x00000000

5823

0x00CCBB50

0xCC0011B0

2220

0xFFFFFFFF

155277

0x000011B0

Mémoire cache

Page 275: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire associative: pour ou contre?

• Avantages: Très flexible

Peut être très rapide

• Inconvénients: Système coûteux (chaque élément de mémoire doit

contenir un comparateur!)

Page 276: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mapping direct

Match?

0x000011B0 5823

…Mémoire

Taille de la mémoire:64K X taille (données)

Comparateur Données

0x00CCBB50

Addresse (index)

Étiquettes Données

Étiquettes

Page 277: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mapping direct: pour ou contre?

• Avantages: Utilise de la mémoire rapide mais « standard » (sans

comparateur intégré)

Moins coûteux que la mémoire associative

• Désavantages: Requiert un peu de circuiterie additionnelle

Si 2 addresses utilisées dans la même période de temps ont le même index, il y aura continuellement des collisions…

Page 278: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mapping set-associative

Données

0x00CCBB50Addresse (index)

Match?

Système àMappingdirect

321

Système àMappingdirect

321

Système àMappingdirect

321

Étiquette

Page 279: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mapping set-associative: bilan

• Bon compromis entre mapping direct et mapping associatif: Moins coûteux que la mémoire associative

Permet d’avoir des addresses dont les index sont les mêmes

Page 280: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire cache: que fait-on lorsque la mémoire est pleine?

• Lorsque la mémoire cache est remplie et une nouvelle valeur doit y être écrite, on doit faire de la place…

• Les méthodes utilisées sont variables: Remplacement aléatoire

Remplacement « Least Frequently Used », LFU• Un compteur comptabilise le nombre de fois qu’une valeur est

utilisée

Remplacement « Least Recently Used », LRU

• Avec une mémoire cache assez grande, les méthodes LRU et aléatoires donnent des résultats comparables (sachant que la méthode aléatoire est beaucoup plus simple à mettre en place, que choisiriez-vous?)

Page 281: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire cache: que fait-on lors d’écritures?

• Il existe deux méthodes de gérer les écritures en mémoire par le biais de la mémoire cache: Write-through: Dès qu’une nouvelle valeur est écrite, on fait

l’écriture en mémoire principale, et on garde (ou pas) cette valeur dans la mémoire cache.

Write-back: On conserve la nouvelle valeur dans la mémoire cache, et éventuellement on écrit cette valeur dans la mémoire principale

• Avantage du write-back: Une série de lectures/écritures à la même adresse n’implique pas de délai pour les écritures intermédiaires

• Avantages du write-through: lorsqu’on manque de place dans la mémoire cache (à cause d’un read miss), il n’y a jamais d’écriture requise

Page 282: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire cache: write-back, write-through

• Lorsque l’adresse de destination de l’écriture n’est pas en mémoire (write miss), on peut soit garder une copie dans la mémoire cache (write allocate), soit ne rien faire (no write allocate)

• Le write allocate est habituellement associé au write-back, où on espère qu’une prochaine écriture pourra se faire directement dans la mémoire cache

• Le no-write allocate est habituellement associé au write-through, puisque les écritures subséquentes vont de toutes façons aller jusqu’à la mémoire principale

Page 283: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Hié

rarc

hie

de

la m

ém

oire

© 2004 Frédéric Mailhot Université de Sherbrooke

La performance des mémoires cache

• La performance des mémoires cache dépend évidemment de la quantité de « misses ». On peut séparer ceux-ci en trois catégories: Obligatoires – lorsqu’on accède à une adresse pour la

première fois De capacité – lorsque la mémoire cache était pleine et qu’on a

dû laisser aller certaines des valeurs lues précédemment De conflit – lorsque deux adresses distinctes correspondent à

la même entrée dans la mémoire cache

• La performance du système dépend aussi du délai encouru lors d’un « miss ».

• Pour optimiser la performance d’un système, il faut donc à la fois réduire le nombre de misses, et réduire les délais encourus lors de « misses »

Page 284: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Les multiprocesseurs

Jusqu’à maintenant, nous avons parlé longuement des microprocesseurs.

Nous allons maintenant étudier les multiprocesseurs, comment ils fonctionnent, quels sont les problèmes particuliers qui apparaissent.

Page 285: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Les multiprocesseurs

• Périodiquement, depuis les années ’60, on a prédit la fin des uniprocesseurs, au profit des multiprocesseurs

• On parle souvent de la vitesse de la lumière comme d’une limite proche d’être atteinte: C = 3 X 10 ^ 8 m/s – » 15 cm / 0,5 ns (2 GHz)

On dit que des architectures nouvelles (multiprocesseurs) devront être utilisées pour continuer d’améliorer la performance

• Mais… depuis 1985, l’augmentation de performance des processeurs est la plus importante depuis la fin des années ’50!

Page 286: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Les multiprocesseurs – pourquoi

• En supposant que les microprocesseurs demeurent la technologie dominante pour les uniprocesseurs, il semble naturel d’imaginer en connecter plusieurs ensemble pour augmenter la performance

• Il n’est pas clair que le taux d’innovation au niveau de l’architecture pourra se continuer longtemps

• Il semble qu’il y ait des progrès constants dans les 2 domaines où les machines parallèles ont le plus de difficulté: le logiciel et les interconnexions

Page 287: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Les types de multiprocesseurs

• Taxonomie proposée par Flynn dans les années ’60: SISD (Single Instruction Single Data): uniprocesseur

SIMD (Single Instruction Multiple Data): plusieurs processeurs, qui exécutent en parallèle les mêmes instructions sur plusieurs données

MISD (Multiple Instruction Single Data): pas d’exemple connu

MIMD (Multiple Instruction Multiple Data): plusieurs processeurs qui opèrent de façon indépendantes ou semi-indépendantes sur leurs données

Page 288: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Types de multiprocesseurs utilisés

• Les premiers multiprocesseurs étaient du type SIMD, et cette architecture est encore utilisée pour certaines machines spécialisées

• Le type MIMD semble être la cible de choix de nos jours pour des ordinateurs d’application courante: Les MIMD sont flexibles: on peut les utiliser comme

machines à un seul utilisateur, ou comme machines multi-programmées

Les MIMD peuvent être bâties à partir de processeurs existants

Page 289: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Au centre des processeurs MIMD: la mémoire

• On peut classifier les processeurs MIMD en deux classes, dépendant du nombre de processeurs dans la machine. Ultimement, c’est l’organisation de la mémoire qui est affectée: Mémoire partagée centralisée (centralized shared

memory)

Mémoire distribuée

Page 290: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Cohérencede lamémoirecache

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Mémoire distribuée

Basée surl’espionnage

(bus)

Espace d’adressageunique (NUMA)

Espace d’adressageprivé (multi-ordinateurs)

Write invalidateprotocol

Write updateprotocol

Write-through(mémoire centrale)

Write-back(mémoire centrale)

Basée surun répertoire

Page 291: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire partagée centralisée

Page 292: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire partagée centralisée

• La mémoire partagée centralisée (centralized shared memory) est utilisée par des machines d’au plus une douzaine de processeurs en 1995

• On utilise un bus qui connecte les processeurs et la mémoire, avec l’aide de mémoire cache locale.

• On appelle ce type de structure de mémoire le Uniform Memory Access (UMA).

Page 293: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire distribuée

Page 294: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Mémoire distribuée

Page 295: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire distribuée

• La mémoire distribuée est utilisée dans des machines utilisant « beaucoup » de processeurs, qui requièrent une bande passante trop grande pour une mémoire unique

• « Beaucoup » tend à diminuer avec le temps, puisque la performance des processeurs continue d’augmenter plus rapidement que celle de la mémoire

• Avantages de la mémoire distribuée: il est plus facile d’augmenter la bande passante de la mémoire si la plupart des accès mémoire sont locaux. La latence est aussi améliorée lorsqu’on utilise la mémoire locale

Page 296: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Modèles de mémoire distribuée

• Il existe deux modèles de mémoire distribuée: Espace d’adressage unique, accessible par tous les processeurs,

mais distribué parmi les processeurs. On dit de ce système qu’il est Non-Uniform Memory Access (NUMA), parce que le temps d’accès à la mémoire dépend de l’endroit où se trouve la région qui est adressée (locale ou distante)

Espace d’adressage privé, où chaque processeur a un accès exclusif à la mémoire locale. On appelle parfois ces systèmes des systèmes multi-ordinateurs (multi-computers)

• Pour ces deux modèles, le mode de communication diffère: Pour la mémoire partagée, la communication se fait de façon

implicite, en écrivant/lisant la mémoire. Pour la mémoire privée, on doit utiliser des messages explicites

entre les processeurs pour passer l’information de l’un à l’autre, d’où leur nom de machines à passage de message (Message Passing Machines)

Page 297: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Mémoire distribuée

Espace d’adressageunique (NUMA)

Espace d’adressageprivé (multi-ordinateurs)

Page 298: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Avantages et inconvénients des mécanismes de communication

• Mémoire partagée: Mécanisme bien connu Facile à programmer (et facile de bâtir des compilateurs) Meilleure utilisation de la bande passante (protection de

la mémoire au niveau du matériel, et non au niveau du système d’exploitation

Possibilité d’utiliser des techniques de caching

• Message-passing: Matériel simplifié Communication explicite, exigeant l’intervention du

programmeur

Page 299: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Paramètres de communication

• Bande passante: Limitée par l’interconnection ou par les processeurs eux-

mêmes?

• Temps de latence Temps de préparation de l’envoyeur + temps de vol + (taille du

message) / (bande passante) + temps de réception.

• Élimination apparente de la latence (latency hiding) Comment minimiser l’impact de la latence?

Impact au niveau du logiciel

Page 300: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Limites de la programmation parallèle

• Loi de Amdahl:

Speedup = 1_____________

Fraction(améliorée) + (1 - Fraction(améliorée)

Speedup(amélioré)

• Soit un speedup désiré de 80 avec 100 processeurs. Quelle portion de l’application peut être séquentielle? Fraction(parallèle) = 0.9975 --> 0,25% maximum peut être

séquentielle

Page 301: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Limites de la programmation parallèle (II)

• Importance de la latence: Dans les machines parallèles d’aujourd’hui, l’accès à de

l’information sur un autre processeur peut prendre entre 50 et 10,000 coups d’horloge.

• Soit une machine qui prend 2,000 ns pour un accès mémoire à distance, une horloge de 10 ns, et un CPI de base de 1.0. Quelle est l’impact sur le CPI si 0,5% des instructions font un accès mémoire à distance? Accès à distance = 2,000 / 10 = 200 coups d’horloge

CPI = 1.0 + 0,5% X 200 = 2.0

Page 302: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Les systèmes à mémoire partagée centralisée

• Dans ce qui suit, nous allons maintenant étudier comment faire un système parallèle MIMD qui utilise de la mémoire partagée centralisée

Page 303: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

La cohérence de la mémoire – qu’est-ce que c’est?

• Comme pour les uniprocesseurs, il est essentiel pour la performance des multiprocesseurs que le temps d’accès à la mémoire soit raisonnable

• L’utilisation de mémoire cache est donc encore de première importance

• Puisqu’on est en présence de plusieurs machines, il se peut qu’une adresse mémoire utilisée par une machine « A » soit modifiée par une machine « B ». Il faut s’assurer que les données gardées dans les mémoires caches soient les mêmes pour tous les processeurs. C’est ce qu’on appelle la « cohérence » de la mémoire

Page 304: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple du problème de cohérence de cache

Temps Événement Cache du CPU A

Cache du CPU B

Contenu de la mémoire, adresse « X »

0 1

1 CPU A lit X 1 1

2 CPU B lit X 1 1 1

3 CPU A écrit 0 dans X

0 1 0

Page 305: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Définition de la cohérence de la mémoire

• Définition 1: Chaque lecture de la mémoire retourne la valeur écrite le plus récemment Cette définition traite de 2 concepts:

• La cohérence (est-ce que la lecture retourne la bonne valeur)

• La consistence (quand est-ce qu’une valeur écrite devient visible?)

Page 306: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Définition de la cohérence

• La mémoire est cohérente si: Un read par le processeur P à l’adresse X qui suit un

write à l’adresse X par le processeur P, sans qu’il n’y ait eu d’écriture par d’autres processeurs, retourne toujours la valeur écrite par P

Un read par P à l’adresse X qui suit un write par Q à l’adresse X retourne la valeur écrite par Q si les 2 événements sont assez distants dans le temps

Les écritures au même endroit sont sérialisées• Les écritures par deux processeurs P et Q à l’adresse X

sont vues dans le même ordre par tout processeur du système

Page 307: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Fonction de la mémoire cache

• La mémoire cache a deux fonctions: La migration: On transporte les valeurs dans la mémoire

cache locale pour diminuer le temps d’accès

La réplication: Lorsqu’une donnée est modifiée, toutes les caches qui la détiennent doivent être infformées

Page 308: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Dans un système à multiprocesseur, comment connaître l’état des différentes caches?

• Il existe deux classes de protocoles de cohérence de cache: Basé sur un répertoire (directory based): l’état de

partage des adresses de la mémoire est conservé dans un endroit unique, le directory

Basé sur l’espionnage (snooping): chaque mémoire cache est branchée sur un bus de mémoire commun, et écoute continuellement ce qui se passe

Page 309: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Cohérencede lamémoirecache

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Mémoire distribuée

Basée surl’espionnage

(bus)

Espace d’adressageunique (NUMA)

Basée surun répertoire

Page 310: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Méthodes de maintient de la cohérence

• Il y a deux façons de s’assurer de la cohérence des caches: Obtenir l’accès exclusif de l’adresse mémoire visée Mettre à jour les autres copies 

• L’usage exclusif de la mémoire est appelé le protocole d’écriture invalidante (write invalidate protocol). Le principe est le suivant: suivant l’écriture d’une donnée, toutes les autres copies de cette donnée sont marquées comme étant invalides.

• La mise à jour des autres copies est appelée le protocole d’écriture et mise à jour (write update protocol, aussi appellé write broadcast protocol). Ici, chaque écriture est suivie de messages de mises à jour pour les autres versions de la même donnée.

Page 311: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Cohérencede lamémoirecache

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Basée surl’espionnage

(bus)

Write invalidateprotocol

Write updateprotocol

Page 312: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Méthodes de maintient de la cohérence (II)

• Les deux protocoles d’opération ont des caractéristiques différentes qui infuencent leur performance: Dans le cas d’écritures multiples au même espace mémoire,

sans lecture intermédiaire:• Le protocole de mise à jour utilisera de multiples appels aux

autres machines• Le protocole d’usage exclusif n’utilisera qu’un seul accès

d’invalidation.

Il est possible de regrouper les mots mémoire pour le protocole d’usage exclusif, et ainsi diminuer le nombre d’invalidations nécessaires lors d’écriture à des adresses adjacentes (on invalide toute un bloc de mémoire)

Cette possibilités n’existe pas pour le protocole de mise à jour.

Page 313: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Méthodes de maintient de la cohérence (III)

• Le délai nécessaire entre l’écriture d’une donnée et sa lecture sur une autre machine est habituellement plus petit avec un protocole de mise à jour

• Le protocole d’usage exclusif est maintenant le plus utilisé dans les machines multiprocesseurs

Page 314: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Implémentation du protocole d’usage exclusif

• Comment réaliser ce protocole? Sur un multiprocesseur à petite échelle, on utilise le bus comme moyen privilégié de synchronisation. Pour pouvoir écrire dans la mémoire, un processeur

doit d’abord obtenir le contrôle du bus.

Ensuite, l’adresse de la mémoire modifiée est envoyée sur le bus.

Tous les autres processeurs sont continuellement à l’écoute. Si une écriture est faite à une adresse mémoire qui est dans leur cache, cette adresse est invalidée.

Page 315: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Implémentation du protocole d’usage exclusif (II)

• Pour la lecture, s’il y a un “cache miss”, le processeur va demander la donnée sur le bus. Ici, il y a 2 possibilités: Si la mémoire centrale est continuellement mise à jour

(write-through), alors elle peut fournir la valeur demandée.

Si au contraire on utilise l’écriture avec délai (write-back), il se peut que ce soit un processeur qui détienne la valeur la plus récente. Pour ce type de machine, les processeurs doivent écouter le bus pour la lecture aussi, et fournir la valeur demandée en interrompant la lecture de la mémoire centrale.

Page 316: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Cohérencede lamémoirecache

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Basée surl’espionnage

(bus)

Write invalidateprotocol

Write updateprotocol

Write-through(mémoire centrale)

Write-back(mémoire centrale)

Page 317: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Implémentation du protocole d’usage exclusif (III)

• On peut ajouter de l’information dans la mémoire cache locale pour améliorer le rendement du système (write-back). On utilise alors un bit de partage: Lors de l’écriture d’une adresse mémoire, on met le bit de

partage à 0. Lors d’écritures subséquentes, on n’informe personne de

l’écriture si le bit de partage est toujours à 0. Si un autre processeur lit cette adresse mémoire, le bit de

partage est mis à 1, et une écriture subséquente va donc générer une invalidation.

• Note: comment permettre l’accès efficace de la mémoire cache à la fois par le processeur et par le système de surveillance du bus? On peut tout simplement dédoubler l’information de partage. Une façon de faire est d’utiliser des caches multi-niveaux.

Page 318: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole « write-invalidate »

Page 319: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole « write – invalidate » unifié

Page 320: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Cohérencede lamémoirecache

Architecture possible des multiprocesseurs

Multiprocesseur

Mémoire partagée centralisée(UMA)

Mémoire distribuée

Basée surl’espionnage

(bus)

Espace d’adressageunique (NUMA)

Espace d’adressageprivé (multi-ordinateurs)

Write invalidateprotocol

Write updateprotocol

Write-through(mémoire centrale)

Write-back(mémoire centrale)

Basée surun répertoire

Page 321: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Gestion de la mémoire pour des machines à beaucoup de processeurs

• Lorsqu’on désire utiliser beaucoup de processeurs, la méthode de mémoire partagée centralisée ne fonctionne plus: les délais deviennent trop importants Solution: utiliser de la mémoire partagée distribuée

• Problème (toujours le même): cohérence des mémoires cache. Solution possible: on défend d’utiliser de la mémoire

cache pour les données partagées!• C’est la solution adoptée entres autres par le Cray T3D.

Chaque nœud possède une mémoire cache uniquement pour ses données privées (locales).

Page 322: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Problème de cohérence de cache pour des machines à beaucoup de processeurs

• Solution possible: gestion logicielle (simplifie le matériel), mais… Pas de mécanismes efficaces pour « passer » le

problème au compilateur, et faire gérer le problème de cohérence sans l’intervention du programmeur

On ne peut accéder à des adresses adjacentes de façon efficace.

• Meilleure solution: utiliser un système matériel qui assure la cohérence des caches

Page 323: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire partagée distribuée: le répertoire, un protocole plus efficace que l’espionnage

• Au lieu de faire de l’espionnage (snooping), du bus de connexion des processeurs, on peut utiliser un répertoire qui indique l’état de la mémoire.

• En particulier, le répertoire peut indiquer l’état de chaque bloc de mémoire qui peut se retrouver dans la mémoire cache. On y indique par exemple quelles mémoires cache ont

des copies de quels blocs de mémoire, et si la mémoire a été modifiée (dirty bit) ou non.

Page 324: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Mémoire partagée distribuée: le répertoire

• Problème avec le répertoire: La quantité d’information à emmagasiner est

proportionnelle au nombre de blocs de mémoire multiplié par le nombre de processeurs. Pour plus de 100 processeurs, on peut avoir un problème d’espace requis pour le répertoire…

• Autre problème: le répertoire lui-même peut devenir le goulot d’étranglement (trop de requêtes).

• Solution: Le répertoire lui-même peut être distribué de concert avec la mémoire

Page 325: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Système multiprocesseur à répertoire distribué

Page 326: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole de répertoire simple

• Pour fonctionner correctement, le système doit pouvoir gérer 2 types d’opérations: Les lectures manquées (« read miss ») Les écritures dans un bloc de mémoire partagée

• Pour ce faire, le répertoire doit contenir l’information suivante pour chaque bloc de mémoire: Mémoire partagée (un ou plusieurs processeurs utilisent ce bloc

mémoire, qui est à jour) Mémoire non en cache (aucun processeur n’utilise une copie de ce

bloc mémoire) Mémoire exclusive ( un et un seul processeur utilise ce bloc, qui a été

écrit et donc qui n’est plus à jour)

• Il faut savoir quels processeurs utilisent le bloc mémoire s’il est partagé. On peut utiliser un vecteur de bits par bloc mémoire pour gérer cette information

Page 327: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole de répertoire simple (2)

• On suppose que la machine contient un grand nombre de processeurs.

• Il n’est plus possible d’utiliser le bus pour résoudre les problèmes d’accès simultanés.

• De plus, on suppose que la communication se fait de point à point (pourquoi?)

Page 328: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole d’utilisation de répertoire

Page 329: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Les

mu

ltip

roce

sse

urs

© 2004 Frédéric Mailhot Université de Sherbrooke

Protocole d’utilisation de répertoire

Page 330: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Le VHDL

De nos jours, les circuits numériques de haute performance sont habituellement créés à partir de descriptions en langages de haut niveau.

Nous allons maintenant parler de l’un de ces langages, le VHDL

Page 331: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Le VHDL: Qu’est-ce que c’est, et à quoi cela sert-il?

• VHDL: VHSIC Hardware Description Language

• VHSIC: Very High Speed Integrated Circuit (projet de grande envergure du DoD (Departement of Defense) Américain, mis en place dans les années ’80

• Principe de base: Définir un langage de description de matériel qui puisse être utilisé pour simuler du matériel numérique

• Extension: Utilisation du même langage pour la synthèse automatique de circuits

Page 332: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

VHDL: Est-ce le seul HDL?

• Il existe plusieurs autres langages de description de matériel, entre autres: Verilog (Très populaire aux États-Unis, utilisé aussi en

Europe, au Japon et au Canada)

UDL/1 (Utilisé à un certain moment au Japon)

Estérel (langage académique – Français)

HardwareC (langage académique – Stanford)

• Verilog est plus simple que le VHDL, mais est un peu moins utilisé

Page 333: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

« Design Flow » moderne

Design fonctionnel

Design « Register Transfer Level »

Design Logique

Design « Physique »

Simulation comportermentale

Simulation RTLValidation

Simulation logiqueVérificationSimulation de fautes

Analyse des délaisAnalyse du circuit« Design Rule Checking »

Page 334: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Concepts de base

• Description du système: Structurale Comportementale (behavioral)

• Événements

• Délais de propagation

• Concurrence

• Timing: Synchrone Asynchrone

• Signaux: Forme Valeur Partage

• Simulation d’événements discrets

Page 335: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi utiliser des langages HDL?

• Pour accélérer la conception de circuits (raison économique)

• Pour permettre la conception de circuits très complexes (150 millions de portes logiques d’ici 5 ans)

• Pour pouvoir représenter les systèmes numériques selon les différents axes d’abstraction

Page 336: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi mettre en marché plus rapidement?

Temps

Rev

enus

Délai

Aug

men

tatio

n du

mar

ché

Déclin du m

arché

Revenus maximum

Pertes de revenus

Page 337: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Le « Y » de Gadjsky

Comportemental Structural

Physique

Transistors

Portes

Registres

Processeurs

Cellules

Modules

Circuits

Printed Circuit Board

Algorithmes

Register transfer

Expressions Booléennes

Fonctions de transfert

Page 338: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Valeur des signaux

• À la base, tout système numérique est constitué de signaux binaires. VHDL supporte le ‘bit’ au plus bas niveau.

• Valeur possible du bit: 0 ou 1

• Est-ce suffisant?

Page 339: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Valeur des signaux

Valeur Interprétation

0 0 - Forcé

1 1 - Forcé

U Uninitialized (non-initialisé)

X Inconnu - Forcé

Z Haute impédance

W Inconnu - Faible

L 0 - Faible

H 1 - Faible

- Don’t Care

Standard IEEE 1164:

Page 340: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Premier concept de base: les entités (entity)

• Première étape de définition de matériel: définir l’interface

• Comment: à l’aide de la déclaration « entity »

Page 341: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les « entity »

• L’interface externe du circuit ci-haut est spécifiée par la déclaration « entity » suivante:

entity half_adder is

port(a, b: in bit;

sum, carry: out bit);

end half_adder;

ab

sum

carry

Page 342: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple d’entity: multiplexeur de bus

entity mux is

port (I0, I1 : in std_ulogic_vector (7 downto 0);

I2, I3: in std_ulogic_vector (7 downto 0);

Sel: in std_ulogic_vector (1 downto 0);

z : out std_ulogic_vector (7 downto 0));

end mux;

Page 343: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple d’entity: Flip-flop

entity D_ff is

port (D,Clk, S, R: in std_ulogic;

Q, Qbar: out std_ulogic);

end D_ff;

Page 344: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Deuxième concept de base: les énoncés concurrents

• Il faut être capable de définir la fonctionnalité de notre système, qui représente ce que le matériel devra effectuer

• Puisqu’on parle de matériel, tout ce qui est décrit va « s’exécuter » en parallèle

• Pour décrire la fonctionnalité d’un système, on utilise la déclaration « architecture », qui implicitement contient des énoncés concurrents

Page 345: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple d’architecture: un demi-additionneur

library IEEE;

use IEEE.std_logic_1164.all;

entity half_adder is

port(a, b: in bit;

sum, carry: out bit);

end half_adder;

architecture comportement_concurrent of half_adder is

begin

sum <= (a xor b) after 5 ns;

carry <= (a and b) after 5 ns;

end comportement_concurrent;

Page 346: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Signaux à source multiples

• Qu’arrive-t-il si un signal est produit par plus d’une source (e.g. élément d’un bus)?

• Qu’arrive-t-il si les différentes sources ne déterminent pas la même valeur?

• On utilise une fonction de « résolution » pour traiter ces cas

• Dans la librairie IEEE, le type « std_logic » du standard 1164 est résolu

Page 347: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Assignations conditionnelles

• On peut utiliser une assignation conditionnelle pour définir la valeur d’un signal:

library IEEE;

use IEEE.std_logic_1164.all;

entity mux4 is

port (In0, In1, In2, In3: in std_logic_vector (7 downto 0);

S0, S1: in std_logic;

z: out std_logic_vector (7 downto 0));

end mux4;

architecture comportemental of mux4 is

begin

z <= In0 after 5 ns when S0 = ‘0’ and S1 = ‘0’ else

In1 after 5 ns when S0 = ‘0’ and S1 = ‘1’ else

In2 after 5 ns when S0 = ‘1’ and S1 = ‘0’ else

In3 after 5 ns when S0 = ‘1’ and S1 = ‘1’ else

‘00000000’ after 5 ns;

end comportemental;

Page 348: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Utilisation de sélecteurs

• Lorsqu’il y a un grand nombre de possibilités qui sont toutes énumérées, on peut utiliser un sélecteur

Page 349: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Utilisation de sélecteurs – exemple

library IEEE;

use IEEE.std_logic_1164.all;

entity memoire is

port (addr1,addr2: in std_logic_vector (2 downto 0);

mem1: out std_logic_vector (31 downto 0));

end memoire;

architecture comportemental of memoire is

signal reg0, reg1, reg2, reg3: std_logic_vector (31 downto 0):= to_stdlogicvector(x’’1234AB’’);

signal reg4, reg5, reg6, reg7: std_logic_vector (31 downto 0):= to_stdlogicvector(x’’5678FF’’);

begin

with addr1 select

mem1 <= reg0 after 5 ns when ‘‘000’’;

reg1 after 5 ns when ‘‘001’’;

reg2 after 5 ns when ‘‘010’’;

reg3 after 5 ns when ‘‘011’’;

reg4 after 5 ns when others;

end comportemental;

Page 350: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les délais

• VHDL permet de modéliser différents types de délais, qui sont utiles lors des simulations: Délais d’inertie (inertial delay): représentent la durée minimum

d’une entrée pour que son effet puisse être observé à la sortie. Utile pour tenir compte du temps de montée/descente

• E.g.: sum <= reject 2 ns inertial (a xor b) after 5 ns;

Délais de transport: représentent le délai encouru par les interconnections. Utile pour tenir compte des délais RC dans les longs fils

• E.g.: sum <= transport (a xor b) after 5 ns;

Délais « delta »: utilisés à l’interne par les simulateurs pour ordonner l’arrivée des signaux

Page 351: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les délais: exemple

library IEEE;

use IEEE.std_logic_1164.all;

entity half_adder is

port(a, b: in std_logic;

sum, carry: out std_logic);

end half_adder;

architecture delai_transport of half_adder is

signal s1, s2: std_logic := ‘0’;

begin

s1 <= (a xor b) after 2 ns;

s2 <= (a and b) after 2 ns;

sum <= transport s1 after 4 ns;

carry <= transport s2 after 4 ns;

end delai_transport;

ab

sum

carrys2

s1

sum

carry

b

a

s1

s2

2 4 6 8 10 12Temps (ns)

inertie

transport

Page 352: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les délais: exemple

library IEEE;

use IEEE.std_logic_1164.all;

entity circuit is

port(a, b: in std_logic;

z: out std_logic);

end circuit;

architecture circ of circuit is

signal s1, s2, s3, s4: std_logic;

begin

s1 <= not a;

s2 <= not b;

s3 <= not ( s1 and b);

s4 <= not (s2 and a);

z <= not (s3 and s4);

end circ;

s1

s2

b

a

s3

z

2 4 6 8 10 12Temps (ns)

a

b

z

s2

s1 s3

s4

s4

Page 353: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les délais: exemple a

b

z

s2

s1 s3

s4

s1

s2

b

a

s3

z

2 4 6 8 10 12Temps (ns)

s4

b

s2

s3

z

2 2 3 4 Temps (ns)

Page 354: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Modélisation de comportement

• Pour décrire des systèmes plus complexes qu’un petit groupe de simples portes logiques, nous devons ajouter un nouveau concept: le processus (process)

• Le «process » a une liste de dépendance (dependency list). Lorsqu’un ou plusieurs signaux de la liste sont modifiés, le process est enclenché

Page 355: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les processus: exemple

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

entity mem is

port(addr: in std_logic_vector (31 downto 0);

wr_data: in std_logic_vector (31 downto 0);

Mem_wr, Mem_rd: in std_logic;

rd_data: out std_logic_vector (31 downto 0);

end mem;

architecture comport of mem istype memo_arr is array(0 to 3) of std_logic_vector

(31 downto 0);

begin memo_proc: process ( addr, wr_data)

variable data_memo: memo_arr := (to_stdlogicvector(X’’00000000’’),

to_stdlogicvector(X’’00000000’’),

to_stdlogicvector(X’’00000000’’),

to_stdlogicvector(X’’00000000’’));

variable addr_int: integer;

begin

addr_int := to_integer(addr (1 downto 0));

if (Mem_wr = ‘1’ then

data_memo(addr_int) := wr_data;

elsif Mem_rd = ‘1’ then

rd_data <= data_memo(addr_int);

end if;

end process memo_proc;

end comport;

Page 356: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

If, Case, For et While

• À l’intérieur d’un « process », on peut utiliser des « if » et/ou des « case ». L’exécution est alors séquentielle

• De même, on peut utiliser des boucles pour contrôler l’exécution. Les « for » sont à bornes fixes, alors que les « while » ne le sont pas.

Page 357: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

If, case: exemple

library IEEE;

use IEEE.std_logic_1164.all;

entity half_adder is

port(a, b: in bit;

sum, carry: out bit);

end half_adder;

architecture proc_add of half_adder is

begin

sum_proc: process (a, b)

begin

if (a = b) then

sum <= ‘0’ after 5 ns;

else

sum <= (a or b) after 5 ns;

end if;

end process sum_proc;

carry_proc: process (a, b)

begin

case a is

when ‘0’ =>

carry <= a after 5 ns;

when ‘1’ =>

carry <= b after 5 ns;

when others =>

carry <= ‘X’ after 5 ns;

end case;

end process carry_proc;

end proc_add;

Page 358: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

For loop: exemple

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

entity mult32 is

port(mult1: in std_logic_vector (31 downto 0);

mult2: in std_logic_vector (31 downto 0);

prod: out std_logic_vector (63 downto 0));

end mult32;

architecture comp_mult of mult32 is

constant delai_module: Time:= 10 ns;

begin

mult_proc: process (mult1, mult2)

variable prod_reg : std_logic_vector (63 downto 0) := to_stdlogicvector(X’’0000000000000000’’);

variable mult_reg : std_logic_vector (31 downto 0) := to_stdlogicvector(X’’00000000’’);

begin

mult_reg := mult1;

prod_reg (63 downto 0) :=

to_ stdlogicvector(X’’00000000’’) & mult2;

for index in 1 to 32 loop

if prod_reg(0) = ‘1’ then

prod_reg(63 downto 32) :=

prod_reg(63 downto 32)

+ mult_reg(31 downto 0);

end if;

prod_reg(63 downto 0) :=

‘0’ & prod_reg (63 downto 1);

end loop;

prod <= prod_reg after delai_module;

end process mult_proc;

end comp_mult;

Page 359: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Communication entre processus

• Les signaux sont globaux: il est possible à un processus d’accéder (lire et/ou écrire) un signal d’un autre processus

• La communication entre processus se fait donc à l’aide de signaux

• Note: on parle ici de processus qui font partie d’une même architecture…

• Exemple: additionneur 1-bit

Page 360: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de communication entre processus: additionneur 1-bit

Demi-additionneurHA1

Demi-additionneurHA2

Somme

C_out

In1

In2

C_in

Demi-additionneur

s1

s3

s2

OR1

Page 361: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de communication entre processus: additionneur 1-bit

library IEEE;

use IEEE.std_logic_1164.all;

entity add_1_bit is

port(In1, In2, C_in: in std_logic;

Somme, C_out: out std_logic);

end add_1_bit;

architecture comp_add of add_1_bit is

signal s1, s2, s3: std_logic;

constant delai: Time:= 5 ns;

begin

HA1: process(In1, In2)

begin

s1 <= (In1 xor In2) after delai;

s3 <= (In1 and In2) after delai;

end process HA1;

HA2: process(s1, C_in)

begin

Somme <= (s1 xor C_in) after delai;

s2 <= (s1 and C_in) after delai;

end process HA2;

OR1: process(s2, s3)

begin

C_out <= (s2 or s3) after delai;

end process OR1;

end comp_add;

Page 362: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

L’instruction « wait »

• Il est possible de définir un « process » sans liste de dépendance. Chaque « process » est toujours exécuté au moins une fois, au début

• En ajoutant des énoncés « wait », il devient possible d’indiquer que le « process » sera réveillé à un certain endroit, selon une certaine condition: wait for time

wait on signal

wait until condition

Page 363: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les attributs dans VHDL

• Il existe un certain nombre d’attributs avec le VHDL, qui permettent d’utiliser de l’information sur l’état des signaux ou sur leur définition: Var’event : Changement sur Var

Var’active : Assignation sur Var (peut être la même valeur

Var’last_event : Retourne le temps depuis le dernier

événement

Var’last_value : Retourne la valeur précédente de Var

Page 364: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de wait et d’attributs: flip-flop

library IEEE;

use IEEE.std_logic_1164.all;

entity dff is

port(D, Clk: in std_logic;

Q, QN: out std_logic);

end dff;

architecture comp_dff of dff is

constant delai: Time:= 5 ns;

begin

One_ff: process

begin

wait until (Clk’event and Clk = ‘1’);

Q <= D after delai;

QN <= not D after delai;

end process One_ff;

end comp_dff;

Page 365: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de wait et d’attributs: flip-flop asynchrone

library IEEE;

use IEEE.std_logic_1164.all;

entity async_dff is

port(D, Clk, S, R: in std_logic;

Q, QN: out std_logic);

end async_dff;

architecture comp_adff of async_dff is

constant delai: Time:= 5 ns;

begin

One_aff: process(R, S, Clk)

begin

if (R = ‘1’) then

Q <= ‘0’ after delai;

QN <= ‘1’ after delai;

elsif (S = ‘1’) then

Q <= ‘1’ after delai;

QN <= ‘0’ after delai;

elsif (Clk’event and Clk = ‘1’) then

Q <= D after delai;

QN <= not D after delai;

end if;

end process One_aff;

end comp_adff;

Page 366: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de registre

library IEEE;

use IEEE.std_logic_1164.all;

entity registre is

port(D: in std_logic_vector (31 downto 0);

Cl, enable, Clk : in std_logic;

Q : out std_logic_vector (31 downto 0));

end registre;

architecture comp_reg of registre is

constant delai: Time:= 5 ns;

begin

Reg_proc: process(Cl, Clk)

begin

if (Cl = ‘1’) then

Q <= X’’00000000’’ after delai;

elsif (Clk’event and Clk = ‘1’) then

if (enable = ‘1’) then

Q <= D after delai;

end if;

end if;

end process Reg_proc;

end comp_reg;

Page 367: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Génération d’une horloge

• À l’aide du VHDL, il est facile de générer un signal d’horloge périodique:

library IEEE;

use IEEE.std_logic_1164.all;

entity horloge is

port(Clk : out std_logic);

end horloge;

architeture comp_horloge of horloge is

begin

proc_horloge: process

Clk <= ‘0’, ‘1’ after 5 ns;

wait for 10 ns;

end process proc_horloge;

end comp_horloge;

Page 368: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les process: ils peuvent ne pas faire ce que vous pensez…

library IEEE;

use IEEE.std_logic_1164.all;

entity circuit is

port(a, b: in std_logic;

z: out std_logic);

end circuit;

architecture circ of circuit is

signal s1, s2, s3, s4: std_logic;

begin

process(a, b)

begin

s1 <= not a;

s2 <= not b;

s3 <= not ( s1 and b);

s4 <= not (s2 and a);

z <= not (s3 and s4);

end process;

end circ;

a

b

z

s2

s1 s3

s4

library IEEE;

use IEEE.std_logic_1164.all;

entity circuit is

port(a, b: in std_logic;

z: out std_logic);

end circuit;

architecture circ of circuit is

signal s1, s2, s3, s4: std_logic;

begin

s1 <= not a;

s2 <= not b;

s3 <= not ( s1 and b);

s4 <= not (s2 and a);

z <= not (s3 and s4);

end circ;

Page 369: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Les process: ils peuvent ne pas faire ce que vous pensez…

a

b

z

s2

s1 s3

s4

s1

s2

b

a

s3

z

2 4 6 8 10 12Temps (ns)

s4

s1

s2

b

a

s3

z

2 4 6 8 10 12Temps (ns)

s4

Page 370: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Représentation hiérarchique

• On peut utiliser VHDL de façon hiérarchique et ainsi simplifier la description d’une machine complexe.

Page 371: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de représentation hiérarchique: un additionneur: portes XOR et AND

library IEEE;

use IEEE.std_logic_1164.all;

entity one_xor is

port(In1, In2 : in std_logic;

Z: out std_logic);

end one_xor;

architecture comp_xor of one_xor is

constant delai: Time:= 5 ns;

begin

z <= (In1 xor In2) after delai;

end comp_xor;

library IEEE;

use IEEE.std_logic_1164.all;

entity one_and is

port(In1, In2 : in std_logic;

Z: out std_logic);

end one_and;

architecture comp_and of one_and is

constant delai: Time:= 5 ns;

begin

z <= (In1 and In2) after delai;

end comp_and;

Page 372: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de représentation hiérarchique: un additionneur: porte OU

library IEEE;

use IEEE.std_logic_1164.all;

entity one_or is

port(In1, In2 : in std_logic;

Z: out std_logic);

end one_or;

architecture comp_or of one_or is

constant delai: Time:= 5 ns;

begin

z <= (In1 or In2) after delai;

end comp_or;

Page 373: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de représentation hiérarchique: un additionneur: demi-additionneur

library IEEE;

use IEEE.std_logic_1164.all;

entity one_half_adder is

port(In1, In2 : in std_logic;

sum, c_out: out std_logic);

end one_half_adder;

architecture comp_ha of one_half_adder is

component xor_gate

port (In_1, In2: in std_logic;

z: out std_logic);

end component;

component and_gate

port (In_1, In2: in std_logic;

z: out std_logic);

end component;

for XOR1: xor_gate use entity work.one_xor(comp_xor);

for AND1: and_gate use entity work.one_and(comp_and);

begin

XOR1:xor_gate port map(In1, In2, sum);

AND1:and_gate port map(In1, In2, c_out);

end comp_ha;

Page 374: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Le

VH

DL

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de représentation hiérarchique: un additionneur: l’ensemble

library IEEE;

use IEEE.std_logic_1164.all;

entity one_adder is

port(In1, In2, C_in : in std_logic;

sum, c_out: out std_logic);

end one_adder;

architecture comp_add of one_adder is

component half_addr

port (In_1, In2: in std_logic;

sum, c_out: out std_logic);

end component;

component or_gate

port (In_1, In2: in std_logic;

z: out std_logic);

end component;

for HA1: half_addr use entity work.one_half_adder(comp_ha);

for HA2: half_addr use entity work.one_half_adder(comp_ha);

for OR1: or_gate use entity work.one_or(comp_or);

signal s1, s2, s3: std_logic;

begin

HA1:half_addr port map(In1, In2, s1, s3);

HA2:half_addr port map(s1, C_in, sum, s2);

OR1:or_gate port map(s2, s3, c_out);

end comp_add;

Page 375: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

La synthèse automatique de circuits

Comment fait-on pour faire le design des processeurs et des circuits numériques en général?

Ce qui suit donne un aperçu des différentes techniques utilisées à cette fin.

Page 376: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Qu’est-ce que la synthèse?

• Depuis maintenant plus de 15 ans, le design de circuit numériques complexes passe presque toujours par la synthèse automatisée: Les circuits sont trop complexes pour pouvoir en faire

le design sans aide Le temps requis pour parvenir à la mise en marché

(« time to market ») est capital, d’où l’importance d’utiliser des méthodes rapides et qui garantissent l’atteinte des résultats escomptés de performance

La méthodologie actuelle de synthèse de circuit permet de produire plus rapidement des circuits plus performants

Page 377: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 378: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 379: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse de haut niveau

• À partir d’un langage de description de matériel (VHDL, Verilog), on extrait un graphe qui représente la fonctionalité: Graphe de dépendance de données (data flow graph)

Graphe de séquencement (sequencing graph)

Page 380: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Graphe de dépendance de données (data flow graph)

• Représente les liens entre les différents composants qui produisent un certain comportement. Ici, les nœuds représentent les opérations, et les arcs représentent les dépendances entre les opérations

• Exemple: Soit la portion de code suivante:

xl = x + dx

ul = u – ( 3 * x * u * dx) – ( 3 * y * dx)

yl = y + u * dx

c = xl < a

Page 381: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Graphe de dépendance de données (2)

-

+*** *

<+**

-

3 x u dx 3 y u dx x dx

axl

u

dx y

ul

yl c

xl = x + dx

ul = u – ( 3 * x * u * dx)

– ( 3 * y * dx)

yl = y + u * dx

c = xl < a

Page 382: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Graphe de dépendance de données (2)

-

+** *

<+**

-

3 x u dx 3 y x dx

axl

u

dx y

ul

yl c

xl = x + dx

ul = u – ( 3 * x * u * dx)

– ( 3 * y * dx)

yl = y + u * dx

c = xl < a

Optimisation possible

Page 383: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Graphe de sequencement (sequencing graph)

• Extension du graphe de dépendance de données

• Utile pour représenter à la fois la partie opérative et la partie contrôle d’un circuit (data-path et control path)

• Ajouts au graphe de dépendance de données: Hiérarchie

Commandes de contrôle de données (boucles et branchements)

Graphe polaire, avec une source et un puit (source et sink)

Page 384: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Graphe de séquencement

-

+*** *

<+**

-

NOP

NOP

xl = x + dx

ul = u – ( 3 * x * u * dx)

– ( 3 * y * dx)

yl = y + u * dx

c = xl < a

Page 385: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Utilisation du graphe de séquencement

• Chaque nœud est soit: En attente d’exécution En exécution Après l’exécution

• On suppose qu’un nœud est exécuté lorsque tous ses fanins ont complété leur exécution

• On annote les nœuds avec des informations supplémentaires: Délai Surface

Page 386: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Transformation du HDL

• On lit d’abord le HDL, et à l’aide d’un analyseur syntaxique (parser), on crée le graphe correspondant

• Le graphe initial est transformé: Réduction de la hauteur des arbres

Propagation des constantes

Élimination de sous-expressions communes

Élimination de code mort

Réduction de la complexité des opérateurs

Déplacement de code

Expansion des boucles

Expansion des conditions

Page 387: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Transformations:

• Réduction de la hauteur des arbres:

x = a + b * c + d

Devient x = (a + d) + (b * c)

• Propagation de constantes:

a = 0; b = a + 1; c = 2 * b;

devient a = 0; b = 1; c = 2;

Page 388: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Transformations: (2)

• Élimination de sous-expressions communes:

a = x + y; b = a + 1; c = x + y;

Devient a = x + y; b = a + 1; c = a;

• Élimination de code mort:

a = x; b = x + 1; c = 2 * x;

devient b = x + 1; c = 2 * x;

Page 389: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Transformations: (3)

• Réduction de la complexité d’un opérateur:

a = x^2; b = 3 * x;

Devient a = x * x; t = x << 1; b = x + t;

• Déplacement de code :

for (i = 1; i < a * b) {}

devient t = a * b; for ( i = 1; i < t) {}

Page 390: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Transformations: (4)

• Expansion des boucles:

x = 0; for (i = 1; i < 3; i++) {x = x + i;}

Devient x = 0; x = x + 1; x = x + 2; x = x + 3;

• Expansion des conditions (variables logiques):

y = a b; if (a) {x = b + d;} else {x = b d;}

devient y = a b; x = y + d ( a + b);

Page 391: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les ressources

• On peut séparer les ressources d’un circuit en 3 classes: Les ressources fonctionnelles, qui transforment les

données (e.g. additionneur, multiplieur)

Les ressources de mémoires, qu’on utilise pour conserver les données (e.g. mémoire vive, registres)

Les ressources d’interface (e.g. bus et ports d’entrées/sorties)

Page 392: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les contraintes

• Pour un circuit donné, il y aura typiquement des contraintes de surface et de délai

• Les contraintes de surface (et de délai, les 2 sont souvent corrélées) ont un impact sur le choix des ressources

• Les contraintes de délai proviennent souvent de la période de l’horloge projetée, ainsi que des temps d’arrivée des entrées et des temps requis des sorties. Elles ont un impact sur le séquencement des opérations dans le temps (scheduling)

Page 393: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Scheduling

• Étant donné un graphe de

séquencement et un

ensemble de contraintes,

on doit:

- décider quelle ressource

utiliser pour chaque

nœud

- décider quand effectuer

l’opération (scheduling)

-

+*** *

<+**

-NOP

NOP

Page 394: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Scheduling (2)

• On peut procéder de 2 façons pour résoudre le problème de l’allocation de ressource et du scheduling: Commencer par le scheduling, et enchaîner avec

l’allocation de données

Procéder à l’inverse

• Puisque le facteur important est habituellement le délai, on commence souvent par le scheduling

Page 395: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Scheduling (3)

• On va établir les deux solutions extrêmes: Dès que possible

Aussi tard que possible

- +*

*

* *

<+

*

*

-NOP

NOP

-

+*** *

<+**

-NOP

NOP

T = 1

T = 2

T = 3

T = 4

Page 396: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Scheduling (4)

• À l’aide des 2 extrêmes de scheduling, on établit la « mobilité », i.e. l’ensemble des positions (dans le temps) possibles pour les nœuds

• Il s’agit ensuite de trouver une des ces positions qui satisfait les contraintes de délai du système On utilise l’algorithme de Bellman-Ford pour établir la

faisabilité du système (détecte les boucles dans le graphe)

On utilise l’algorithme de Liao-Wong pour trouver une solution valable.

Page 397: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Allocation de ressources

• Soit à la suite du scheduling, ou de concert avec le scheduling, on doit décider des ressources (e.g. additionneurs, multiplieurs) qui sont requis On peut toujours réutiliser la même ressource pour

toutes les opérations, à condition d’introduire des délais dans l’exécution des opérations et d’utiliser des multiplexeurs…

• Lorsque scheduling et allocation de ressources sont terminés, on produit une description logique du système, qui prend la forme d’un ensemble d’équations booléennes interreliées

Page 398: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Réseau Booléen

• On appelle « réseau Booléen » le système d’équation produit:

x = a + b;

t = a b’ + a’b;

y = t c

z = x + t;

w = z’ + y;

Page 399: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 400: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse logique: 1ère étape: synthèse à 2 niveaux

• Les équations logiques produites par la synthèse de haut niveau sont souvent beaucoup plus complexes que nécessaires.

• La première étape est de simplifier chaque équation, qui apparaît à ce stade sous forme de somme de produits: On tente de limiter le nombre de « litéraux », i.e. le

nombre de fois que les variables ou leur complément apparaissent dans les équations

Page 401: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux

• On représente le circuit par un ensemble de fonctions à n entrées et m sorties

• Par exemple: f: B3 -> {0, 1, *} 2

f1 = a’ b’ c’ + a’ b’ c + a b’ c + a b c + a b c’

f2 = a’ b’ c + a b’ c

cba f1 f2

a b c

a b c’

a’ b’ c’ a b’ c’

a b c’

a b’ ca’ b’ ca’ b c

Diagramme de Hasse

Page 402: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: minterms

• Minterms de f1: a’ b’ c’, a’ b’ c, a b’ c, a b c, a b c’

• Minterms de f2: a’ b’ c, a b’ c

cba f1 f2

Page 403: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

• Cubes de f1: Tous les minterms de f1 +

a’ b’, b’ c, a c, a b

• Cubes de f2: Tous les minterms de f2 + b’ c

Synthèse à 2 niveaux: cubes

cba f1 f2

Page 404: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

• En utilisant l’encodage suivant:

{0,1,*} pour les entrées inversées (0), directes (1) ou qui

n’aparaissent pas (*)

{0,1} pour les sorties qui ont une valeur VRAI ou DON’T CARE (1) ou INDÉFINIES (0)

• On obtient les codes suivants pour l’exemple ci-haut:

: 00* 10 : 1*1 10

: *01 11 : 11* 10

Synthèse à 2 niveaux: implicants multi-sorties

cba f1 f2

Page 405: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

• Une couverture est un ensemble d’implicants qui couvrent tous les minterms d’une fonction, sans intersecter les zéros (off-set) de celle-ci

• La couverture minimum est celle qui a la plus petite cardinalité (plus petit nombre d’implicants)

• Exemple: 3 couvertures possibles pour f1 et f2:

C1 = 00* 10 C2 = 00* 10 C3 = 00* 10

*01 11 *01 11 *01 01

1*1 10 11* 10 1*1 10

11* 10 11* 10

Synthèse à 2 niveaux: couverture

cba f1 f2

Page 406: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

• Couverture qui est non-redondante, et minimum

• Note: la couverture minimum n’est pas nécessairement celle qui a le coût le plus bas (tout dépend du coût associé à chacun des implicants). Toutefois, pour les besoins de l’optimisation à 2 niveaux, il est habituel de confondre les deux (dit autrement, on suppose que le coût de chaque implicant est le même)

Synthèse à 2 niveaux: couverture non-redondante

cba f1 f2

Page 407: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Couverture qui n’est PAS non-redondante, et PAS minimum

Synthèse à 2 niveaux: couverture non-redondante

cba f1 f2

cba f1 f2

Couverture qui est non-redondante, mais PAS minimum

Page 408: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

• Un implicant est premier s’il n’est pas strictement contenu dans aucun autre implicant de la fonction considérée

• Dans l’exemple plus haut, a’b’ est premier, mais a’b’c’ n’est pas premier (a’b’ a’b’c’)

Synthèse à 2 niveaux: couverture première

cba f1 f2

Page 409: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Couverture première, mais PAS non-redondante ( n’est pas nécessaire)

Synthèse à 2 niveaux: couverture première, non-redondante

cba f1 f2

cba f1 f2

Couverture qui n’est PAS première, mais qui EST non-redondante

(’, ’ et ’ ne sont pas premiers)

Page 410: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: définitions

• Couverture non-redondante: couverture dont on ne peut enlever aucun implicant sans modifier la fonction couverte

• Implicant premier: implicant qui n’est contenu en entier dans aucun autre implicant

• Couverture première: couverture dont tous les implicants sont premiers

• Couverture minimale: couverture dont le nombre d’implicants est minimal

Page 411: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: implicants essentiels

• Un implicant premier est essentiel s’il couvre un minterm qui n’est couvert par aucun autre implicant de la couverture de la fonction

cba f1 f2

: 00* 10 est essentiel pour 000 1-

: *01 11 est essentiel pour *01 -1

: 1*1 10

: 11* 10 est essentiel pour 110 1-

Page 412: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: but

• Idéalement: obtenir une couverture minimum Méthodes standard: Quine-McCluskey, Espresso exact:

• Génèrent tous les implicants premiers

• Établissent la couverture minimum

Problème: Exigences de calcul trop grandes (NP-complet)

• But plus réalisable: obtenir une couverture première et non-redondante (peut être fait en utilisant des méthodes heuristiques rapides)

Page 413: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: quelques méthodes courantes

• Expansion (expand): rend une couverture première et élimine chaque implicant directement contenu dans un autre implicant

cba

Page 414: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: quelques méthodes courantes (2)

• Réduction (reduce): rend une couverture non première, en réduisant la taille d’implicants individuels

cba

Page 415: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: quelques méthodes courantes (3)

• Déformation (reshape): modifie une couverture en opérant sur une paire d’implicants, l’un étant changé par expansion, l’autre par réduction

cba

Page 416: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse à 2 niveaux: quelques méthodes courantes (4)

• Non-redondant (irredundant): rend une couverture non-redondante

cba

Page 417: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse 2 niveaux: sommaire

• Pour la synthèse à 2 niveaux, on utilise un ensemble de méthodes heuristiques (par exemple expansion, réduction, déformation et non-rédondant)

• Les méthodes heuristiques sont utilisées de façon itérative sur une réprésentation compacte des équations logiques, jusqu’à ce la taille de celles-ci soit minimisée

• Espresso, mis au point chez IBM (Yorktown) et ensuite à Berkeley, est l’outil de choix pour la synthèse 2 niveaux depuis près de 20 ans.

Page 418: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 419: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse multi-niveaux - Introduction

• La synthèse à 2 niveaux permet d’optimiser l’expression de chaque expression logique individuelle, mais on doit aussi souvent restructurer le réseau Booléen, i.e. modifier les fonctions des équations logiques et leur interdépendance.

• Pour ce faire, on doit faire des opérations qui vont ajouter/modifier/enlever des nœuds du réseau Booléen

Page 420: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse multi-niveaux – Introduction (2)

• Le problème de restructuration optimum d’un réseau de portes logiques est extrêmement complexe. Encore une fois, il n’est pas possible d’obtenir de solution exacte, et on doit recourir à des approches heuristiques

• Il existe 2 écoles de pensées pour faire la synthèse multi-niveaux: Utilisation de règles (rule base)

Utilisation d’algorithmes

• De nos jours, la majorité des outils de synthèse utilisent des algorithmes, que nous allons maintenant étudier brièvement

Page 421: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse multi-niveaux

• Le but de cette étape est de modifier les équations logiques et leurs relations, en vue d’obtenir un « meilleur » circuit

• À ce stade de la synthèse, on utilise des équations logiques comme base de représentation. Il est donc difficile de savoir précisément le délai et/ou la surface des portes logiques qu’on modifie

• Il apparaît qu’il y a une assez bonne corrélation entre le nombre total de litéraux dans les équations et le délai et la taille du circuit final. On utilise donc souvent le nombre de litéraux comme métrique pour mesurer si une opération donne de bons résultats ou non.

Page 422: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse multi-niveaux – Les transformations

• De nombreuses techniques heuristiques existent pour changer la structure des équations logiques. Typiquement, on utilise des opérations locales qui font évoluer progressivement le réseau Booléen vers un circuit de meilleure qualité

• Techniques utilisées: Élimination Extraction Décomposition Simplification Substitution Factorisation

Page 423: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Synthèse multi-niveaux – les transformations (2)

• Soit le réseau Booléen suivant. Les exemples qui suivent démontrent les différentes transformation du circuit

Page 424: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Synthèse multi-niveaux – les transformations (3)

• Élimination (un nœud interne est enlevé, et la variable correspondante est remplacée par son équation)

r = p + a’ + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Page 425: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Synthèse multi-niveaux – les transformations (4)

• Extraction (une sous-expression commune à deux nœuds ou plus est extraite et devient un nouveau noeud

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = k e

k = c + d

q = a + b u = q’ c + q c’ + q c

w

x

y

z

t = k a + k b + e

Page 426: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Synthèse multi-niveaux – les transformations (5)

• Décomposition (Séparation d’un nœud complexe en un ensemble d nœuds plus simples

r = p + a’ s = r + b’

a

b

c

d

e

j = a’ + b + c

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

v = j d + a e’

Page 427: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Synthèse multi-niveaux – les transformations (6)

• Simplification: utilisation de techniques 2 niveaux

• Substitution (Ajout d’entrées pour simplifier un nœud)

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = q c + q d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Page 428: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

r = p + a’ s = r + b’

a

b

c

d

e

v = a’d + b d + c’d + a e’

p = c e + d e

t = a c + a d + b c + b d + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

r = p + a’ s = r + b’

a

b

c

d

e

v = (a’ + b + c’) d + a e’

p = (c + d) e

t = (a + b) (c + d) + e

q = a + b u = q’ c + q c’ + q c

w

x

y

z

Synthèse multi-niveaux – les transformations (7)

• Factorisation (Identification de facteurs dans les équations)

Page 429: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 430: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Le technology mapping

• De l’étape d’optimisation multi-niveaux on obtient un circuit qui est « meilleur » qu’auparavant, mais qui est toujours sous forme d’équations logiques inter-reliées. Pour la suite, il faut maintenant remplacer les équations logiques par des portes logiques provenant de la bibliothèque de cellules cible.

• Le but du technology mapping est de produire un circuit qui ne contiennent que des portes logiques « réelles », et qui évidemment soit un circuit avec la même fonctionnalité que le circuit initial

Page 431: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Le technology mapping – les étapes

• On procède en 4 étapes pour faire cette opération:

1. Partitionnement

2. Décomposition

3. Matching

4. Couverture

Page 432: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

1. Le partitionnement

• La première étape consiste à identifier les sous-circuits qui contiennent un ensemble de portes interconnectées qui convergent vers une porte unique. Cette dernière produit la seule sortie du sous-circuit dont elle fait partie. Cette porte est soit connectée à une sortie du circuit, soit connectée à plus d’une porte.

Page 433: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

2. La décomposition

• Pour chaque partition du circuit, on doit s’assurer que les équations qui y sont incluses ont un maximum de 2 entrées. Lorsque les équations utilisent plus de 2 entrées, on effectue une décomposition simple en portes à 2 entrées (portes OU, ET et dans certains cas OU-EXCLUSIF)

Page 434: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

3. Le matching

• Pour une certaine partition et sa décomposition en portes à 2 entrées, on énumère tous les « cutsets », et pour chacun de ces « cutsets », on détermine si la fonction sous-tendue est équivalente à une ou plusieurs portes logiques de la bibliothèque

Page 435: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

3. Le matching: comment établir l’équivalence

• On utilise des BDDs (Binary Decision Diagram) pour comparer la fonction logique sous-tendue par un certain cutset et les portes logiques disponibles dans la bibliothèque

Bibliothèque

Portion de la partition

Page 436: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

4. Couverture

• Lorsque tous les éléments de bibliothèque qui correspondent à une partie d’une partition sont connus, on doit déterminer quels éléments choisir pour couvrir le sous-circuit

• On utilise la « programmation dynamique » (dynamic programming) pour déterminer l’assemblage optimal d’éléments de bibliothèque

Page 437: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

La

syn

thè

se a

uto

ma

tisé

e d

e c

ircu

its

© 2004 Frédéric Mailhot Université de Sherbrooke

Les étapes de la synthèse de circuits

Synthèse de haut niveau

Synthèse logique

Synthèse physique

Analyse syntaxique

Scheduling

Allocation des ressources

Synthèse 2 niveaux

Synthèse multi-niveaux

Lien avec la technologie

Placement

Routage

Restructuring

Retiming

Extraction de noyaux

Technology mapping

Buffering

Global: floorplan

Local

Global – Vdd, Vss, Bus

Local

Page 438: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Gei

431

Architecture des ordinateurs II – Frédéric Mailhot

Synthèse logique:Quelques algorithmes et techniques

La synthèse logique consiste en un très grand nombre d’opérations diverses, qui doivent produire un circuit performant (délai, puissance, taille, etc).

Dans ce qui suit, nous examinerons les Binary Decision Diagrams (BDD), leur utilisation dans un problème de couverture, et nous inventerons un algorithme de création d’arbres de buffers.

Page 439: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Les BDD

• Les Binary Decision Diagrams (BDD) ont été proposés en 1986 par Randy Bryant, pour représenter efficacement les fonctions booléennes.

• Problème: soit une fonction booléenne de N variables. Sa représentation par un tableau de vérité (ou un tableau de Karnaugh, qui est équivalent) requière 2^N bits. Lorsque N est grand (N>30), cette taille devient prohibitive.

Page 440: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Les BDD (suite)

• Idée: Représenter les fonctions logiques à l’aide d’un graphe qui

permet de réutiliser des parties communes. Plus spécifiquement, utiliser la décomposition de Boole (aussi

appelée décomposition de Shannon), ce qui produit tout simplement un réseau de multiplexeurs contrôlés par les variables d’entrée de la fonction:

• F(…, x, …) = x * Fx + x’ * Fx’

• Exemple: f = a + b cF = a * fa + a’ * fa’

F = a * 1 + a’ * (b c)F = a + a’ * (b c)

Page 441: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple simple de BDD

• Exemple: f = a + b cF = a * fa + a’ * fa’

F = a * 1 + a’ * (b c)

F = a * 1 + a’ * ( b * (c) + b’ * 0)

F = a * 1 + a’ * (b * (c * 1 + c’ * 0) + b’ * 0)

a

b

c0

0 1

1

0 1

0 1

0 1

F

Page 442: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Les BDD – autres règles de création

• Autres règles: La décomposition de Boole doit se faire avec le même

ordre de variables dans tous les chemins entre les entrées et les sorties. On dit dans ce cas que le BDD est ordonné (Ordered Binary Decision Diagram, ou OBDD)

Les sous-circuits identiques doivent être partagés. On dit alors que le BDD est réduit

Page 443: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de BDD ordonné, et non-ordonné

• Exemple: f = a (b + c) + a’ b’ c

a

c

b0

1 0

0 1

0 1

0 1

F

0 1 b

0 1

0 1

1c

Non-ordonné (mauvais)

a

b

c

0 1

0 1

0 1

0 1

F

0 1 b

0 1

0 1

1c

Ordonné (bon)

0

Page 444: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Exemple de BDD simutanément ordonné et réduit

• Exemple: f = a (b + c) + a’ b’ c

Ordonné et réduit

a

b

c

0 1

0 1

0 1

0 1

F

0 1 b

10

a

b

c

0 1

0 1

0 1

0 1

F

0 1 b

0 1

0 1

1c

Ordonné

0

Page 445: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Représentation du ROBDD

• Exemple: f = a (b + c) + a’ b’ c

F

a

bb

c

10

a

b

c

0 1

0 1

0 1

0 1

F

0 1 b

10

1

1

1

1

0

0

0

0

Page 446: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi les BDD sont-ils intéressants?

• Pour un ordre de variables donné, les BDD sont canoniques, c’est-à-dire que leur représentation est unique pour une fonction booléenne donnée.

• Exemple: Est-ce que F = a (b + c) + a’ b’ c

et G = a b + b’ c

sont des fonctions équivalentes?

Difficile à dire sans établir la table de vérité… mais leurs BDD respectifs sont identiques.

Page 447: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Pourquoi les BDD sont-ils intéressants? (2)

• Pour la plupart des fonctions logiques intéressantes, les BDD correspondants sont petits, même pour des fonctions ayant un très grand nombre de variables.

• Parmi les quelques ombres au tableau: Multiplicateurs

• Pour plus de renseignements et le code source d’un gestionnaire de BDD, voir CUDD de Fabio Somenzi (University of Colorado, Boulder)

Page 448: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering

• Problème: l’extraction de noyaux, qui est très efficace pour réduire la taille des circuits lors de la synthèse logique, crée des portes avec de très grands « fanouts », ce qui ralentit beaucoup le circuit.

Page 449: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Délais

• Nous utiliserons un modèle simple de délai: Chaque porte logique aura:

• Un délai intrinsèque, • Une résistance interne, • Une capacité à l’entrée,

Pour une porte donnée « P », qui est connectée à une capacité à la sortie S, alors le délai DP est:

DP = P + P * S

Page 450: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering

• Dans un problème réel, si une porte a un très grand fanout, il est probable que les charges des différentes portes de son fanout soient inégales.

• Ce problème est complexe, alors nous le simplifierons: Nous supposerons que toutes les charges sont

identiques. Nous supposerons de plus que les charges peuvent être divisées autant que l’on veut.

Page 451: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (2)

T

1

1

0

1

D = 0 * 1 + 1 + 1 * T

Page 452: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (3)

T

1

1

0

1

D = 0 1 n1 + 1 + 1 n2 2 + 2 + 2 T

2

22

2

22

n1

n2

n1 n2

Page 453: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (4)

D = 0 1 n1 + 1 + 1 n2 2 + 2 + 2 T

n1 n2

Nous cherchons le minimum pour D.D’ou:

d D = 0 1 - 2 T 0

n12

n2d n1

d D = 1 2 - 2 T 0

n22

n1d n2

Page 454: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (5)

Dopt = 3 ( 0 1 2 1 2 T)1/3 + 1 + 2

Des équations précédentes, on tire:

n1 = 1 2 2 T

0 2 1

2

3

n2 = 0 2 1 T

1 2 2

2

3

Page 455: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (6)

Dopt = (k + 1) ( 0 1 … k 1 2 … k T)1/(k+1) + i

Les résultats obtenus étaient pour 2 niveaux de buffers,mais nous ignorons combien il devrait y en avoir idéalement:

Soit k la quantité idéale de niveaux, alors:

D = 0 1 n1 + 1 + 1 n2 2 + … + k T

n1 n2 … nk-1

Page 456: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (7)

Dopt = (k + 1) ( b b )k 0 T)1/(k+1) + k b

Puisque Dopt doit être aussi petit que possible, et que les et les vont de pair, alors il doit y avoir un buffer idéal b pour lequel le produit ( ) est minimum. Si on utilise ce buffer b, on obtient:

Mais… on ne connaît toujours pas k…

Page 457: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Buffering (8)

Dmin = ln 0 T - b

Il s’agit donc tout simplement de dériver par rapport à k…Puis il ne reste qu’à solutionner pour k en égalant la dérivée à zéro. On obtient alors:

b b

Avec = b b exp( 1 + b / )

Page 458: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Algorithme de buffering

• Nous avons maintenant une formule qui nous donne le délai minimum qu’on peut espérer pour un problème de buffering donné. En quoi cela nous est-il utile?

Page 459: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Algorithme de buffering – branch and bound

• On peut utiliser cette formule dans un algorithme « branch and bound »: On commence avec la porte de départ, et sa charge

totale. On calcule le délai total entre la porte et les charges. On utilise cette valeur comme notre meilleur délai pour le moment

On ajoute les buffers de notre bibliothèque de cellules, un type à la fois, pour tenter d’ajouter un étage de buffer. Il doit y avoir au minimum un buffer, et au maximum le fanout de départ.

Pour chaque cas, on calcule le délai entre la porte de départ et le nouvel étage de buffers, puis on calcule le délai entre le nouvel étage de buffers et la charge totale en utilisant notre formule. Il est certain qu’on ne peut faire mieux avec les vrais buffers.

Page 460: Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

BD

Ds

et b

uffe

rin

g

© 2004 Frédéric Mailhot Université de Sherbrooke

Branch and bound (2)

On élimine les solutions qui donnent des résultats moindre que le meilleur résultat jusqu’à présent, et on tente d’ajouter un nouvel étage pour les solutions qui sont bonnes jusqu’à maintenant

En début de chaque nouvelle exploration, on tente de brancher la charge totale directement à l’étage de buffer courant. Si le délai obtenu est plus petit que le meilleur résultat en mémoire, on met celui-ci à jour.

On continue ce manège jusqu’à ce qu’il ne reste aucune solution avec un bon potentiel.

La meilleure solution est utilisée lorsque l’algorithme se termine.