Pipeline - REDS - HEIG-VD

publicité
Cours ARO2-2017
HEIG-VD ~ CPN/RMQ - Exercices groupe 3
1.
Un processeur ARM avec pipeline à 5 niveaux exécute le programme
assembleur suivant:
1
2
3
4
5
6
7
8
9
10
LDR
ADD
LDR
ADD
SUB
SUB
ADD
LDR
ORR
SUB
r1,[r5]
r5,r1,1
r1,[r6]
r3,r5,r6
r2,r6,#1
r4,r3,#5
r3,r2,r4
r2,[r7]
r4,r2,r1
r7,r3,#9
a) Indiquez les dépendances de type RAW présentes dans le programme.
b) Représentez schématiquement, cycle d’horloge par cycle d’horloge,
l’exécution du programme dans le temps si la seule solution aux aléas du
pipeline est l’arrêt de ce dernier (sans forwarding).
c) Représentez de la même façon l’exécution du programme si le pipeline est
doté de forwarding.
Exercices pipeline
1
ARO2
2.
Un processeur ARM avec pipeline à 5 niveaux exécute le programme
assembleur suivant:
1
2
3
4
5
6
7
LDRH
LDRH
ADD
STRH
LDRH
ADD
STRH
r1,[r0]
r2,[r0,#1*2]
r3,r1,r2
r3,[r0,#6*2]
r4,[r0,#4*2]
r5,r1,r4
r5,[r0,#8*2]
a) Indiquez les dépendances de type RAW présentes dans le programme.
b) Représentez schématiquement, cycle d’horloge par cycle d’horloge,
l’exécution du programme dans le temps si la seule solution aux aléas du
pipeline est l’arrêt de ce dernier (sans forwarding).
c) Représentez de la même façon l’exécution du programme si le pipeline est
doté de forwarding.
d) Réordonnez les instructions du programme de façon à supprimer tous les
arrêts du pipeline avec le forwarding.
e) Supposons maintenant que le processeur ne puisse pas arrêter son pipeline
et ne comporte pas un mécanisme de forwarding. Le compilateur résout les
aléas en réordonnant les instructions et en introduisant des NOP. Donnez le
code optimisé (minimum d’instructions) généré par le compilateur.
Exercices pipeline
2
ARO2
3.
Soit un processeur ARM avec pipeline à 5 niveaux ayant l’architecture
suivante :
Celui-ci exécute le programme suivant :
0x00
0x02
0x04
0x06
0x08
0x0A
0x0C
0x0E
0x10
0x12
0x14
……
MOV
MOV
ADD
MOV
STRH
ADD
MOV
B
MOV
ADD
LDRH
r0,#0x05
r1,#0x13
r3,r0,r1
r4,#0x20
r3,[r4]
r3,r3,r0
r0,#0x01
0x50
r3,#00
r1,r2,r3
r1,[r4]
0x50
0x52
LDRH
ADD
r3,[r4]
r1,r3,r0
a) Indiquez les dépendances de type RAW présentes dans le programme.
b) Indiquez les aléas de contrôle.
c) Représentez schématiquement, cycle d’horloge par cycle d’horloge,
l’exécution du programme dans le temps si la seule solution aux aléas du
pipeline (de données ou de contrôle) est l’arrêt de ce dernier.
Exercices pipeline
3
ARO2
4.
Un processeur ARM avec pipeline à 5 niveaux exécute le programme
assembleur suivant:
0x00
0x02
0x04
0x06
0x08
MOV
MOV
MOV
ADD
ADD
r0,#0x05
r1,#0x13
r2,#0xA0
r3,r2,r1
r4,r1,r3
d) Représentez schématiquement, cycle d’horloge par cycle d’horloge,
l’exécution du programme dans le temps dans le cas d’un pipeline avec
forwarding (voir ci-dessous)
Vous devez indiquer l’état des registres E, F1 et F2 du forwarding en
indiquant les situations où l’un de ces registres est utilisé.
Voici la structure du forwarding dans l’étage Execute :
CK
Execution
(arithmetic & logic)
Instruction Decode
EX
ID
CK
F2
0
1
2
3
Banque
de
registres
F1
A
c
Alu
0
1
2
3
Exercices pipeline
4
E
B
ARO2
5.
Cet exercice est une suite de l’exercice 1 (même programme).
Un processeur ARM avec pipeline à 5 niveaux exécute le programme
assembleur suivant:
1
2
3
4
5
6
7
8
9
10
LDR
ADD
LDR
ADD
SUB
SUB
ADD
LDR
ORR
SUB
r1,[r5]
r5,r1,1
r1,[r6]
r3,r5,r6
r2,r6,#1
r4,r3,#5
r3,r2,r4
r2,[r7]
r4,r2,r1
r7,r3,#9
Voici le schéma de l’architecture du processeur avec les registres de forwarding pour
l’étage Execute:
CK
CK
Execution
(arithmetic & logic)
Instruction Decode
EX
ID
F2
0
1
2
3
Banque
de
registres
F1
A
c
Alu
0
1
2
3
E
B
e) Lors de l’exercice 1, point c) vous avez représenté l’évolution, cycle
d’horloge par cycle d’horloge, de l’exécution du programme dans le pipeline
avec forwarding
Vous devez maintenant indiquer l’état des registres E, F1 et F2 du
forwarding pour le programme donné dans l’exercice 1 en indiquant les cas
où l’un de ces registres est utilisé.
Exercices pipeline
5
ARO2
Téléchargement