Es geht um das folgende Programm:
1: mov $7,50
2: loop: addi $1,$1,2
3: addi $2,$1,0
4: subi $7,$7,1
5: bnz $7,loop
Die Aufgabe lautete "How many additional cycles are needed due to stalling (RAW conflicts)?"; es wurde also nur nach den zusätzlichen Schritten gefragt, die durch RAW-Konflikte verursacht werden. Aber natürlich müssen auch hinter dem Sprungbefehl nop-Befehle eingefügt werden, damit der Sprung richtig gemacht wird. Wenn Sie das Programm im Simulator laufen lassen, so werden Sie folgende Ausführung sehen:
mov $7,50
loop: addi $1,$1,2
nop
nop
addi $2,$1,0
subi $7,$7,1
nop
nop
bnz $7,loop
nop
nop
nop
loop: addi $1,$1,2
Zur zweiten Frage zu Seite 136: Die Laufzeit n(p) des Programms mit p Pipelinestufen wurde hier als linear Funktion angenommen, so dass man hier n(p) = alpha*p+beta angenommen hat (mit irgendwelchen Konstanten alpha und beta, die diese linear Funktion bestimmen). Die weitere Analyse zeigt dann, dass mit wachsendem p, die Zahl der Schritte so stark zunimmt, dass auch die Reduktion der Zykluszeit dies nicht wieder wett machen kann. Also führen längere Pipelines nach einer optimalen Pipelinelänge wieder zu reduzierter Performance.