parallélisme des instructions processeurs superscalaires processeurs vliw bus systÈme registres...

24
Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité flottante Unité de contrôle Décodeur PC ALU CPU MÉMOIRE PRINCIPALE DD IO IO Cache de données Cache d'instructions MMU TLB

Upload: zoe-soler

Post on 04-Apr-2015

113 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Parallélisme des instructions Processeurs superscalaires Processeurs VLIW

BUS SYSTÈME

RegistresRegistres

Unité detraitement

Unité detraitement

Unitéflottante

Unité decontrôle

Unité decontrôle

Décodeur

PC

ALU

CPU

MÉMOIREPRINCIPALE

MÉMOIREPRINCIPALE DDDD IOIO IOIO

Cachede données

Cached'instructions

MMUMMU

TLB

Page 2: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Familles des processeurs ILPIl y a deux grandes familles de processeurs ILP (Instruction Level Parallelism), selon que le logiciel (le compilateur) ou le matériel (le processeur) résout la résolution des dépendances et effectue l'allocation des ressources sont effectuées par :

les processeurs superscalaires et les processeurs VLIW (Very Long Instruction Word)

front end etoptimisation

détermination desdépendances

allocation desressources

détermination desdépendances

allocation desressources

exécution

COMPILATEUR PROCESSEUR

superscalaire

VLIW

Page 3: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Processeurs superscalaires

unité de dispatchunité de dispatch

décodagedécodage

unité detraitement 2

unité detraitement 2

décodagedécodage

unité detraitement 1

unité detraitement 1

décodagedécodage

unité detraitement 0

unité detraitement 0

instructioninstruction

Page 4: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Processeurs superscalaires

IRIRIRIR

IRIRIRIR

REGISTRES

REGISTRES

REGISTRES

REGISTRES

REGISTRES

REGISTRES

SHIFTER

SHIFTER

REGISTRESREGISTRESI0

I1

Z

INPORTINPORT

Séquenceur

Séquenceur

Décodeur

Décodeur

PC

AdresseAdresse AdresseAdresse INPORTINPORT OUTPORTOUTPORT

ADDER

ADDER

ADDER XALU OSHIFTER OINPORT XOUTPORT OR0 X...Rn O

ADDER XALU OSHIFTER OINPORT XOUTPORT OR0 X...Rn O

Page 5: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Politiques d'envoi des instructions In-order issue with in-order completion:

les instructions sont cherchées, décodées et envoyées aux unités de traitement dans l’ordre d’écriture du programme. Les résultats sont écrits dans le même ordre.

In-order issue with out-of-order completion:les instructions sont cherchées, décodées et envoyées aux unités de traitement dans l’ordre d’écriture du programme. Les résultats sont écrits dès qu'ils sont prêts.

Out-of-order issue with out-of-order completion:les instructions sont cherchées, décodées et envoyées aux unités de traitement dès que leurs opérandes sont prêts et que les ressources qu'elles demandent sont disponibles. Les résultats sont écrits dès qu'ils sont prêts.

Page 6: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Politiques d'envoi des instructions

I1 I2I3 I4I5 I6

I1 I2I1 I3

I4I5I6 I1

I2I3

I4I5

I6

12345678

I1, I2I3, I4

I4, I5, I6I5

I1 I2I3 I4

I4I5 I6

I6

I1 I2I1 I3

I4I5I6

I1I2

I3I4I5I6

12345678

decode execute writeback cyclewindowI1 I2I3 I4

I4I5 I6

I6

I1 I2I1

I3I4

I5I6

I1 I2I3I4I5

I6

12345678

I1 a besoin de deux cycles d'exécution | I5 dépend du résultat de I4I3 et I4 utilisent la même ressource | I5 et I6 utilisent la même ressource

In-order issue with in-order completion

Out-of-order issue with in-order completion

Out-of-order issue with out-of-order completion

Page 7: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

IRIRIRIR

IRIRIRIR U

nité de

dispatch

Unité de

dispatch

Fenêtre

d'instruction

Fenêtre

d'instruction

Queue d'instructions: quand l'instruction au sommet de la queue est suspendue, d'autres instructions peuvent être exécutées (si elles n'ont pas de dépendances).

Queue d'instructions: quand l'instruction au sommet de la queue est suspendue, d'autres instructions peuvent être exécutées (si elles n'ont pas de dépendances).

Un tableau de marques (scoreboard) est une liste des ressources du processeur: dès qu'une instruction demande une (ou plusieurs) des ressources, cette dernière devient indisponible pour les instructions suivantes.

Un tableau de marques (scoreboard) est une liste des ressources du processeur: dès qu'une instruction demande une (ou plusieurs) des ressources, cette dernière devient indisponible pour les instructions suivantes.

Out-of-order issue - ImplémentationINPORTINPORT

Séquenceur

Séquenceur

Décodeur

Décodeur

PC

AdresseAdresse

ADDER XALU OSHIFTER OINPORT XOUTPORT OR0 X...Rn O

ADDER XALU OSHIFTER OINPORT XOUTPORT OR0 X...Rn O

Fenêtre d'instruction: le décodeur envoie les instructions dans la fenêtre, tant qu'il y a de la place. Les instructions sont envoyées en exécution, sans regarder l'ordre, pour autant qu'il n'y ait pas de conflits de ressources.

Fenêtre d'instruction: le décodeur envoie les instructions dans la fenêtre, tant qu'il y a de la place. Les instructions sont envoyées en exécution, sans regarder l'ordre, pour autant qu'il n'y ait pas de conflits de ressources.

Unité de dispatch: dès leur arrivée dans le processeur, les instructions sont envoyées au décodeur, qui analyse les dépendances.

Unité de dispatch: dès leur arrivée dans le processeur, les instructions sont envoyées au décodeur, qui analyse les dépendances.

Page 8: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601 Architecture 32 bits Instructions à taille fixe (32 bits) Alignement obligatoire des instructions Big-endian ou little-endian Architecture superscalaire à trois unités de traitement (entiers,

virgule flottante et sauts) Cache interne: 32 KB, unifié, 8 voies set-associative, adressé

physiquement Pipelines à différentes longueurs Bus de données à 64 bits Prédiction statique du saut 32 registres entiers et 32 registres virgule flottante Registre de conditions

Page 9: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601

Unité des entiers (IU) Exécute toutes les opérations sur des données entières et tous les

accès à la mémoire (load/store), y compris ceux avec les registres virgule flottante

Contient:une ALUun multiplicateurun diviseurun registre XER (integer exception register)32 registres généraux

Peut recevoir une instruction par coup d’horloge

Page 10: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601

Unité virgule flottante (FPU) Contient:

un multiplicateur/additionneurun diviseurun registre FPSCR (FP status and control register)32 registres généraux à 64 bits

Implémentation complète du standard IEEE 754, en simple ou double précision (bien que l’unité ne fasse directement que la simple précision)

Page 11: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601Unité des instructions Contient deux parties:

une queue d’instructions à 8 niveaux une unité de traitement des sauts (BPU):

» une ALU pour le calcul des adresses» un registre-compteur (CTR)» un registre de lien (LR)» un registre de conditions (CR)

La queue d’instructions peut recevoir jusqu’à 8 instructions de la cache par coup d’horloge. Trois instructions peuvent être envoyées en parallèle aux différentes unités de traitement.

Les instructions sur les entiers sont toujours exécutées dans l’ordre. En conséquence, une seule instruction accédant à la mémoire est retirée de la queue par cycle d’horloge

Page 12: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601

MMUMMU adressephysique

adresse logique

IU(load/store)

unité desinstructions

52 32

MMUMMU cachecache

répertoirede cache

répertoirede cache

adresse logique

adressephysique

busd’adresse

Page 13: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601

Caractéristiques du cache: 32 KBytes unifié adressé physiquement 8 voies, associatif par ensembles ensembles de 64 lignes, 2 secteurs par ligne, 8 mots par secteur algorithme LRU pour le remplacement écriture copy-back ou write-through au choix chaque ligne possède un tag et 4 bits d’état (2 par secteur) les 16 mots d’une ligne sont contigus dans la mémoire et ne peuvent

pas croiser la limite d’une page les opérations du cache se font sur la base d’un secteur

Page 14: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601Modes d’adressage: Adressage des données:

Indirect de registre adresse = (RA) Indirect de registre avec index adresse = (RA) + (RB) Indirect de registre avec index immédiat adresse = (RA) + offset

Adressage des sauts: adressage absolu

adressage relatif

saut au registre de lien (LR) saut au registre compteur (CTR)

opcode adresse31296 30

1 LK

opcode offset31296 30

0 LK

opcode RB offset31116

RA16

Page 15: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur PowerPC 601Prédiction des sauts La BPU a besoin d’un seul cycle d’horloge pour décoder et

exécuter une instruction de saut.

Dans le cas d’un saut conditionnel, la BPU vérifie dans le pipeline si une instruction en cours peut modifier la condition. Si non, l’adresse de saut est calculée. Si oui, la branche est prédite, en fonction d'un bit y spécifié dans l'instruction.

Si la prédiction s’avère fausse, on enlève les instructions de la branche prédite et on prend l’autre branche.

Le writeback est interdit dans les instructions d’une branche tant que la condition n'est pas résolue.

Il existe un seul niveau de prédiction: on ne fait pas de prédiction à l’intérieur d’une branche qui n’est pas encore résolue.

Page 16: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Architecture 64 bits Taille unique des instructions (32 bits) Alignement obligatoire des instructions et des données Little-endian Architecture superscalaire avec des pipelines de longueur différente Adresse virtuelle sur 64 bits, sans segmentation Trois types de données supportés, en 32 (longword) ou 64 (quadword) bits:

entiers virgule flottante IEEE virgule flottante DEC

Il n’y a pas de division pour les entiers Il n’y a pas d’opérations sur les bytes (par contre, il y a des instructions de

manipulation des bytes) Les sauts sont prédits 32 registres entiers (R31 toujours égal à 0) et 32 registres virgule flottante (F31

toujours égal à 0), tous à 64 bits

Exemple: le processeur Alpha

Page 17: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur Alpha Quatre unités de traitement:

unité des entiers unité des réels unité des load/store unité des sauts

Deux instructions peuvent être exécutées en parallèle:

entier réel sautload store op. load store op. ent. réel

load entier X Xstore entier Xopération entière X X X X Xload réel X Xstore réel Xopération réelle X X X X

Xsaut entier Xsaut réel X

Page 18: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur Alpha

réels

load/store

entiers

F

S D I F G H J K W

S D I A

A

B

B

W

W

chemin de bypass

Page 19: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

F (fetch): recherche de deux instructions dans la cache.

S (swap): envoi des deux instructions dans le bon pipeline. Prédiction du saut.

D (decode): identification des opérandes.

I (issue): lecture des opérandes. Analyse des dépendances. Au-delà de cette phase il est impossible de bloquer le pipeline.

A: première phase de l’ALU. Les opérations et les décalages courts sont terminés. L’adresse du load/store est calculée. Le PC est mis à jour.

B: deuxième phase de l’ALU. Les décalages longs sont terminés. La cache de données est lue pour les loads.

W (write): écriture des registres. Le succès/échec de l’accès à la cache est déterminé: lors d’un succès, on écrit dans le tampon d’écriture.

Exemple: le processeur Alpha

Page 20: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Les instructions sont cherchées et envoyées à l'exécution dans l’ordre. Les registres entiers possèdent 4 ports de lecture et 2 d’écriture. Les registres

réels possèdent 3 ports de lecture et 2 d’écriture. Le pipeline des réels utilise 5 phases pour les opérations d’addition et

multiplication. La division utilise 31 ou 61 cycles, selon la précision. Il y a un total de 38 bypasses, pour permettre l’utilisation du résultat d’une

opération comme opérande d’une instruction postérieure.

Prédiction des sauts: La première fois qu’un saut a lieu, la prédiction se fait de façon statique: les

sauts en arrière sont pris. Par la suite, la prédiction se fait dynamiquement: un bit d’histoire est gardé dans la cache pour toutes les instructions de saut.

La pénalité pour une mauvaise prédiction est de 4 cycles.

Exemple: le processeur Alpha

Page 21: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Processeurs VLIW

meta-instr 2

instruction VLIW

meta-instr 1 meta-instr 0

décodagedécodage

unité detraitement 2

unité detraitement 2

décodagedécodage

unité detraitement 1

unité detraitement 1

décodagedécodage

unité detraitement 0

unité detraitement 0

Avantage: la complexité du matériel est inférieure à celle d’un processeur superscalaire: cela permet d’avoir une fréquence d’horloge plus élevée.

Désavantage: la performance dépend énormément de la qualité du compilateur.

Page 22: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Processeurs VLIW

LOAD1 LOAD0 NOP NOP

NOP NOP ADDI MUL

LOAD3 NOP ADD NOP

101 000 111 010 LOAD0ADDI MUL LOAD1

XXX XXX 111 100 ADD…. …. LOAD2

3 2 1 0

VLIW classique

LOAD1

NOP

LOAD3

LOAD0

NOP

NOP

NOP

ADDI

ADD

NOP

MUL

NOP

instructioncompressée

crossbar

instructionétendue

VLIW moderne

séparateur

numéro d’unité

Page 23: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur Itanium EPIC = Explicitly Parallel Instruction Computing

Le parallélisme apparaît de façon explicite dans les instructions: il y a un passage de la complexité du matériel vers le compilateur

Trois instructions groupées dans un bundle de 128 bits

Nombre élevé de registres (128 + 128)

Exécution à prédicats

Exécution directe du code x86

Technologie: 0.18µ 5M

Vitesse: 800 MHz

Performance: SPECint95: 50 SPECfp95: 100

Page 24: Parallélisme des instructions Processeurs superscalaires Processeurs VLIW BUS SYSTÈME Registres Unité de traitement Unité de traitement Unité flottante

Exemple: le processeur Itanium

instruction 2 instruction 1 instruction 0 template

opcoderegistre prédicat (6 bits)source 1 (7 bits)source 2 (7 bits)destination (7 bits)extension de l’opcode / adresse de saut/ divers

information sur le groupementdes instructions

41 41 41 5