Hallo,
es geht ja nun nicht direkt darum, ob Du mir zustimmst oder nicht, sondern um die Funktionsweise einer Pipeline in modernen CPUs. Da ich mir nicht ganz sicher bin, ob wir die selbe Sichtweise haben, hier eine kleine Erklärung, wie eine Pipeline überhaupt funktioniert (auch wenn es etwas OT wird):
Gehen wir von einer einfachen CPU aus, bei der die einzelnen Befehle in fünf Schritten abgearbeitet werden:
1: Befehl holen ("Fetch")
2: Operanden holen ("Register Fetch")
3: Befehl ausführen ("Execute")
4: Speicherzugriff ("Memory Access")
5: Ergebnisse in Register schreiben ("Write Register")
Gehen wir weiter davon aus, dass fünf Befehle (OP1-OP5) ausgeführt werden sollen. Jeder Schritt benötigt dabei einen Takt. Ohne Pipeline benötigst Du 5*5=25 Takte, um diese fünf Befehle auszuführen.
Mit Pipeline sieht das ganze deutlich (!) besser aus. Die fünf Stufen der Pipeline entsprechen dabei den fünf Schritte, die oben aufgeführt sind. Im ersten Takt wird der erste Befehl in die Pipeline geladen:
Fetch(OP1)
im zweiten Schritt werden für den ersten Befehl die Operanden geholt und der zweite Befehl wird in die Pipeline geladen:
Fetch(OP2)
RegFetch(OP1)
Im dritten Schritt wird der erste Befehl ausgeführt, für den zweiten Befehl die Register geholt und der dritte Befehl in die Pipeline geladen:
Fetch(OP3)
RegFetch(OP2)
Execute(OP1)
usw. usf.
D.h. nach fünf Zyklen ist die erste Operation komplett ausgeführt worden. Im sechten Zyklus liegt das Ergebnis der zweiten Operation vor, usw.usf. Das Abarbeiten der fünf Befehle benötigt also nur 9 Takte (im Gegensatz zu 25 ohne Pipeline).
Pipeline-Stalls werden bei aktuellen CPUs durch ein Instruction Reordering, dynamische und statische Branchprediction sowie Delay-Slots und ähnliche Mechanismen so weit wie möglich vermieden.
In Wirklichkeit ist das ganze wesentlich komplexer, da zum einen die Pipelines länger sind und zum anderen mehrere Befehler parallel abgearbeitet und auf die verschiedenen Execution Units verteilt werden.
Falls Du Dich näher für Prozessorarchitekturen und die Funktionsweise moderner CPUs interessierst, solltest Du Dir ein Hardwaremanual einer aktuelle CPU besorgen.
Gute Bücher zum Einstieg gibt es leider nicht. Empfehlenswert ist das "Sparc Architecture Manual", da die Architektur von SUN sehr einfach ist und über alle wichtigen Merkmale verfügt (Drei-Register-Befehle, ein einfaches Instruktionsformat, Delay Slots, Pipelines, mehrere Execution Units, etc; etwas ungewöhnlich sind vielleicht die Register-Windows zur Vermeidung von Stacks).
Nic