Liens entre les exercices et les sections du livre: Section 6.2: Exercices 6.1; 6.6. Sections 6.4-6.6: Exercices 6.8; 6.10. Section 6.7: Exercices 6.20; 6.22.
6.1)
Utilisez plutôt la Fig. 6.19 à la page 391.
6.6)
Remarque: Pour simplifier encore plus le diagramme, une représentation semblable à celle de la Fig. 6.15 (p. 387) sera utilisée.
6.8)
mov $5, $0
Somme:
lw $10, 1000($20)
addiu $20, $20, -4
nop # Delais pour acces memoire
nop
addu $5, $5, $10
bne $20, $20, Somme
nop # Delais pour branchement
nop
nop
Soit N le nombre d'itérations (nombre de valeurs additionnées).
Le nombre total d'instructions exécutées sera alors 9*N+1.
Le nombre de cycles requis sera donc (9*N+1)+4 = 9*N+5.
6.10)
On suppose l'absence de toute forme d'envois. La valeur lue pour un registre n'est donc pas celle écrite durant le même cycle. (L'effet de addiu n'est donc pas encore visible lors de l'exécution de sw, qui utilise donc l 'ancienne valeur de $20.)
Copie:
lw $10, 1000($20)
addiu $20, $20, -4
nop
nop
sw $10, 2000($20)
bne $20, $0, Copie
nop
nop
nop
Soit N le nombre d'itérations (nombre de valeurs copiées).
Le nombre total d'instructions exécutées sera alors 9*N.
Le nombre de cycles requis sera donc 9*N+4.
6.20)
36: beqd $1, $3, 32
40: sub $10, $4, $8 # Case de delai toujours executee
44: and $12, $2, $5
48: or $13, $2, $6
52: add $14, $4, $2
56: slt $15, $6, $7
...
72: lw $4, 50($7)
6.22)
Si le délai de branchement doit être ramené à un cycle, la décision de branchement doit donc se faire à l'étage DI. Le matériel doit alors être modifié de la façon suivante: