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