Hardware Reference
In-Depth Information
1
2
3
4
5
6
7
8
9
10
11
F
D
X
M
W
STO
y,A,j
F
D
X
M
W
SET
j,k
F
D
X
M
W
BNP
j,@+20
F
D
SUBU k,j,8
F
LDO
y,A,k
F
D
X
M
W
STO
x,A,j
F
D
X
M
W
ADDU i,i,8
Abbildung 3.11. Pipeline-Stillstand durch falsch vorhergesagten Sprung
worfen und der tatsachliche Folgebefehl geholt werden. Dadurch entsteht ein
Stillstand der Pipeline von zwei Taktzyklen.
Als Beispiel betrachten wir einen Programmausschnitt aus dem Programm
zum Sortieren durch Einfugen, das einen Teil von Quicksort bildet (vgl. An-
hang A.3.2):
21 5H
y,A,j yruckt eine Position weiter vor
STO
22
SET
j,k
23 3H
BNP
j,4F
24
SUBU
k,j,8
25
LDO
y,A,k
26
CMP
tmp,y,x
27
PBP
tmp,5B
28
29 4H STO x,A,j Element x hat seinen Platz gefunden
30 ADDU i,i,8
Wir gehen zunachst davon aus, dass der Sprung in Zeile 23 ausgefuhrt wird.
Da der Sprung nicht als wahrscheinlich auszufuhrender Sprung gekennzeich-
net ist (kein PBNP ), ladt der Mechanismus des Prefetching zunachst den un-
mittelbaren Folgebefehl aus Zeile 24. Erst nachdem sich in der Execute-Phase
herausgestellt hat, dass der Sprung doch auszufuhren ist, wird der Befehl aus
Zeile 29 geladen. Das entsprechende Pipeline-Diagramm ist in Abbildung 3.11
dargestellt.
Wir beobachten, dass wahrend der zwei Takte 8 und 9 kein fertig abgearbei-
teter Befehl die Pipeline verlasst. Die Ausfuhrung des Sprungbefehls benotigt
also drei Taktzyklen. Wurde demgegenuber das Sprungziel korrekt im Voraus
geladen, so benotigt ein Sprungbefehl nur einen Takt. Abbildung 3.12 zeigt
den Ablauf, wenn der Sprungbefehl in Zeile 23 nicht verzweigt.
Search WWH ::




Custom Search