Hardware Reference
In-Depth Information
Takt 1
Takt 2
Takt 3
Takt 4
Takt 5
Takt 6
Takt 7
F
D
X
M
W
Befehl 1
F
D
X
M
W
Befehl 2
F
D
X
M
W
Befehl 3
F
Befehl 4
Befehl 5
Abbildung 3.5. Pipeline-Stillstand durch zwei gleichzeitig erforderliche Speicherzugriffe.
In den Takten 4 bis 6 behindern die Speicherzugriffe der Befehle 1 bis 3 das Laden der
Folgebefehle ab 4 (durch die graue Schraffur angedeutet)
schra ert, um den Augenblick des Stillstands zu verdeutlichen. Diese Zeiten
des Stillstands weden auch Bubbles genannt (durchlaufende Blasen).
Eine der altesten angewandten Techniken zur Vermeidung dieser Situation
ist das so genannte Prefetching“. Das bedeutet, dass Befehle im Voraus ge-
lesen und in einem Puffer vorgehalten werden, bis sie an der Reihe sind.
Dieser Puffer wird Fetch Buffer genannt. Prefetching ist dann sehr einfach
moglich, wenn mit einem Speicherzugriff mehr als ein Befehl geholt werden
kann. Beispielsweise sind MMIX -Befehle stets vier Bytes lang und aus dem
Speicher werden auf einmal mindestens acht Bytes gleichzeitig gelesen. So-
mit werden in naturlicher Weise mindestens zwei Befehle gleichzeitig geholt.
Ferner konnen zum Laden von Befehlen diejenigen Takte genutzt werden,
in denen solche Befehle die M-Phase durchlaufen, die keinen Speicherzugriff
durchfuhren mussen (z.B. arithmetische Befehle).
Bei Programmen, die sehr viele Speicherzugriffe ausfuhren, werden sich den-
noch die Zugriffe auf Programm und Daten gegenseitig behindern. Siehe dazu
Abschnitt 7.8.
Als weitere Verbesserung hat es sich bei schnellen Prozessoren durchgesetzt,
getrennte Cache-Speicher fur Instruktionen und Daten vorzusehen. Es ist
dann gleichzeitig je ein Zugriff auf jeden dieser Caches moglich. Man spricht
hier von einer Pseudo-Harvard-Architektur. Auch darauf werden wir im Ab-
schnitt 7.8 noch naher eingehen.
Eine weitere Ursache fur strukturelle Hemmnisse sind komplexe Befehle, al-
so solche Befehle, die nicht innerhalb eines Taktes den Durchlauf durch die
Execute-Phase abschließen konnen. Bei MMIX sind das zum Beispiel die Befeh-
le fur ganzzahlige Multiplikation (benotigt 10 Taktzyklen) bzw. Division (60
Taktzyklen). Ferner alle Gleitkomma-Instruktionen, die mehrheitlich 4 Tak-
te in der X-Phase benotigen. Diese Befehle treten in typischen Programmen
allerdings nicht so haufig auf, dass es sich lohnen wurde, den Pipeline-Takt
Search WWH ::




Custom Search