• Aucun résultat trouvé

Td corrigé signaux et systèmes cours n° 1 - E-Eisti pdf

N/A
N/A
Protected

Academic year: 2022

Partager "Td corrigé signaux et systèmes cours n° 1 - E-Eisti pdf"

Copied!
4
0
0

Texte intégral

(1)

ADO Introduction TD 4 Corrigé. Les Processeurs actuels.

Pipelining

TD 4 CORIGE. Les Processeurs actuels.

Pipelining

1. Pipelining

On considère le pipeline d’instructions (P1) représenté ci-dessous :

étage pipeline P1

1 lit cache d’instructions 2 decode instruction 3 lit registres

instruction ≠ LOAD/STORE → 4 execute / calcul adresse ˥ 2 cycles )

5 acces cache de donnees ) 2 cycles ) LOAD/STORE

6 acces cache de donnees ) 2 cycles ) 7 ecrit registre

Le débit théorique maximum de ce pipeline est de 1 instruction/cycle.

On suppose que toutes les instructions, sauf les LOAD/STORE, sont exécutées à l’étage 4. Pour les instructions LOAD/STORE, le calcul d’adresse du/des opérandes du LOAD/STORE se fait à l’étage 4 et l’accès au cache de données est pipeliné sur 2 cycles (étages 5 et 6). Pour les instructions qui ne sont pas des LOAD/STORE, les étages 5 et 6 se comportent comme des étages vides.

On suppose qu’il y a un mécanisme de bypass permettant de transmettre le résultat d’une instruction aux instructions suivantes sans attendre l’écriture registre. Si un opérande source d’une instruction n’est pas disponible au moment où celle-ci va rentrer dans l’étage 4, les étages 1 à 3 sont bloqués jusqu’à ce que l’opérande indisponible soit accessible via le mécanisme de bypass, ce qui conduit à l’insertion de bulles dans le pipeline.

On supposera un prédicteur de branchement parfait. On supposera également que toutes les lectures d’instructions font des hits dans le cache d’instructions et que tous les LOAD/STORE font des hits dans le cache de données (cela signifie qu’il n’y a que des cache-hits et pas de cache-miss, c’est-à-dire que les accès cache sont toujours tels que le cache respectivement d’instructions / données contient les cibles, instructions / données).

1. Q

Lorsqu’un LOAD est immédiatement suivi d’une instruction utilisant le résultat du LOAD, combien de bulles sont insérées dans le pipeline ?

1. R

Appelons X l’instruction après le LOAD. L’instruction X reste bloquée à l’étage 3 tant que l’accès cache du LOAD n’est pas terminé, c’est-à-dire tant que le LOAD n’a pas dépassé l’étage 6.

Juste avant que le LOAD rentre dans l’étage 7, le résultat du LOAD est envoyé sur le réseau de bypass et l’instruction X va pouvoir rentrer dans l’étage 4. A cet instant précis, les étages 4 et 5 ne contiennent aucune instruction. 2 bulles ont donc été introduites.

2. Q

On considère le programme asm ci-dessous, qui calcule la somme des N éléments d’un tableau. Le registre R4 est initialisé avec N, le registre R1 est initialisé avec l’adresse A du 1er élément du tableau et le registre R3 contenant en fin d’exécution le résultat de la somme est initialisé à 0. Les éléments du tableau sont stockés sur 4 octets.

1: boucle: R2 = LOAD R1+0 // lit element du tableau 2: R3 = R3 ADD R2 // ajoute a la somme

3: R1 = R1 ADD 4 // R1 = R1 + 4

4: R4 = R4 SUB 1 // R4 = R4 - 1

5: BNZ R4, boucle // BNZ (Branch Not Zero) : boucle si R4 ≠ 0

TD 4 Corrigé. 1

(2)

ADO Introduction TD 4 Corrigé. Les Processeurs actuels.

Pipelining

En supposant N grand, quel est le débit d’exécution de cette boucle en instructions par cycle ? 2. R

La boucle itère un grand nombre de fois parce que la valeur intiale de R4 est grande. Donc on peut raisonner comme si la boucle itérait un nombre infini de fois et négliger le temps de remplissage du pipeline. Le corps de la boucle comporte 5 instructions. La 2ème instruction dépend de la 1ère, qui est un LOAD. 2 bulles sont donc générées toutes les 5 instructions.

Le débit d’exécution vaut : 0.71 7

5 2 5

5  

 instructions / cycle.

3. Q

Changez l’ordre des instructions dans la boucle afin d’obtenir un débit de 1 instruction/cycle.

TD 4 Corrigé. 2

(3)

ADO Introduction TD 4 Corrigé. Les Processeurs actuels.

Pipelining

3. R

Dans le programme initial, l’instruction 2 qui suit immédiatement un LOAD, utilise le résultat du LOAD, ce qui introduit 2 bulles dans le pipeline, bulles qu’il faut supprimer pour ramener le débit d’exécution à 1 instruction / cycle.

Pour supprimer les 2 bulles, il faut placer 2 instructions indépendantes du LOAD juste après le LOAD, comme ceci :

1: boucle: R2 = LOAD R1+0

2: R1 = R1 ADD 4

3: R4 = R4 SUB 1

4: R3 = R3 ADD R2

5: BNZ R4, boucle

4. Q

On considère le programme ci-dessous qui calcule la somme des éléments du tableau mais en parcourant le tableau dans l’autre sens. R4 est initialisé à 4N, R1 est initialisé à A−4N et R3 toujours initialisé à 0.

1: boucle: R2 = LOAD R1+R4 // lit element du tableau

2: R4 = R4 SUB 4 // R4 = R4 - 4

3: R3 = R3 ADD R2 // ajoute a la somme

4: BNZ R4, boucle // BNZ (Branch Not Zero) : boucle si R4 ≠ 0

a) Toujours en supposant N grand, quel est le débit d’exécution du programme en instructions par cycle ?

b) Ce programme est-il plus performant que le programme de la question 2 ? Est-il plus performant que le programme modifié à la question 3 ?

4. R

a) Pour supprimer les 2 bulles introduites par un LOAD, il faut faire suivre ce LOAD de 2 instructions indépendantes du résultat du LOAD. Ici, le LOAD n’est suivi que d’1 seule instruction indépendante du résultat du LOAD, ce qui introduit 1 bulle dans le pipeline.

Le débit d’exécution du programme, comportant 4 instructions et coûtant 5 cycles, est donc de :

5 4 1 4

4 

 instructions / cycle.

b) Pour comparer 2 programmes différents effectuant le même travail, il ne faut pas regarder le débit en instructions par cycle mais le temps total pour effectuer le travail.

Ici, on peut se contenter de comparer le nombre de cycles par itération, puisque chaque itération traite un élément du tableau.

Avec le programme de la question 2, chaque itération coûte 7 cycles.

Le nouveau programme ne comporte que 4 instructions au lieu de 5. 1 bulle est générée à chaque itération.

Chaque itération coûte donc 5 cycles. Le nouveau programme est plus performant que celui de la question 2 et aussi performant que celui de la question 3 qui compte 5 cycles aussi mais sans bulle.

TD 4 Corrigé. 3

(4)

ADO Introduction TD 4 Corrigé. Les Processeurs actuels.

Pipelining 5. Q

On modifie le pipeline d’instructions comme représenté ci-dessous (P2), c’est-à-dire en déplaçant l’étage d’exécution de l’étage 4 à l’étage 6. Le calcul d’adresse continue à se faire à l’étage 4.

étage pipeline P2

1 lit cache d’instructions 2 decode instruction 3 lit registres 4 calcul adresse

5 Acces cache de donnees

6 execute / acces cache de donnees 7 ecrit registre

La performance du programme de la question 4 sur le nouveau pipeline (P2) est-elle supérieure ou inférieure à celle sur l’ancien pipeline (P1) ?

5. R

Rappel :

étape pipeline P1 étape pipeline P2

1 lit cache d’instructions 1 lit cache d’instructions

2 decode instruction 2 decode instruction

3 lit registres 3 lit registres

4 execute / calcul adresse 4 calcul adresse

5 acces cache de donnees 5 acces cache de donnees

6 acces cache de donnees 6 execute / acces cache de donnees

7 ecrit registre 7 ecrit registre

. Pipeline initial (P1) : 2 bulles sont introduites si le résultat de l’exécution d’une instruction LOAD/STORE dépend de l’instruction précédente.

. Nouveau Pipeline (P2) : 2 bulles sont introduites avec le calcul d’adresse pour chaque opérande d’une

instruction LOAD/STORE dépendant de l’instruction précédente.

Si les 2 instructions précédant un LOAD/STORE sont indépendantes du calcul d’adresse de ou des opérandes de l’instruction LOAD/STORE, aucune bulle n’est introduite.

Dans le cas du programme de la question 4, le calcul d’adresse du LOAD dépend de R1 et de R4. Seul R4 est mis à jour dans la boucle par l’instruction SUB. Comme il y a 2 instructions intercalées entre le SUB et le LOAD, aucune bulle n’est introduite ici. Chaque itération coûte 4 cycles sur le nouveau pipeline (P2), au lieu de 5 cycles sur l’ancien pipeline (P1).

__________

TD 4 Corrigé. 4

Références

Documents relatifs

(Ivanovo, Russia) Solvation and Thermodynamic Characteristics and Intermolecular Interactions in Aqueous Solutions of Amides of Carboxylic Acids.. 9 Аминджанов А.А

83. Le Ministère des finances et du Trésor est autorisé à prendre des règlements régissant le secteur des assurances. Selon la Loi sur les assurances, les compagnies étrangères

En effet, l'indice de Gini n'exprime rien d'autre que le rapport de deux aires déterminées par la courbe de Lorenz : g = (aire OAC)/(aire OAB). On peut donc comparer le

Elle soustrait la source de la destination , qui peut être un octet ou un mot, le résultat n'est pas mis dans la destination. En effet cette instruction touche uniquement les

 Le circuit peut être étendu à un nombre quelconque de bits de la séquence à décoder, en allongeant le registre à décalage et le circuit de

Révision Logique combinatoire & séquentielle.. TD 6R

On nomme signal discret un ensemble de valeurs réelles définies pour une suite d’instants t n = nT multiples d’une période T d’échantillonnage (en anglais sampling )..

Assembleur 80x86. TD 3