Ja, das stimmt, was mich aber hier permanent so massiv ankotzt, das wurde auch nirgends behauptet! Weder in die eine noch die andere Richtung. Warum muss hier immer irgendwas interpretiert werden, was da nicht steht?? Es nervt einfach tierisch immer diese Erklärungen so möglichst wasserdicht abzugeben, dass man es nicht missinterpretieren KANN.
Du hast doch behauptet, dass man Pipelining implementiert um eine art Parallelität zu bekommen und das ist halt quatsch.
Ist ungefähr genauso wie zu behaupten, man hat den Otto-Motor erfunden um Benzin zu verbrennen. Das ist beides nur Mittel zum Zweck aber nicht der Grund.
Gegenfrage, woraus interpretierst du nun bitte raus, dass ich irgendwas gegen sequenzielle Abarbeitung der Befehle geschrieben hätte? Oder hängst du dich hier nur am Wörtchen "um" auf, weil du unbedingt den Grund der Nutzung von Pipelining hören willst?
Wenn man das Wort "um" nutzt dann beschreibt man nun mal den Grund, das hab ich nicht erfunden, nennt sich Grammatik.
Nur kurz soviel, die Ausführung hatte keinen Anspruch auf Vollständigkeit. Das Pipelines nur zu Taktsteigerung genutzt werden, halte ich zudem für ein Gerücht. Denn dir ist sicher durchaus bekannt, dass Pipelines den Durchsatz steigern können auch ohne den Takt anzuheben. Mal ganz davon ab, sollte die Ausführung auch gar nicht das Warum vollends beleuchten.
Wenn im ersten Takt ein IF(1), im Zweiten ein ID(1) und IF(2), im Dritten ein EX(1), ein ID(2) und ein IF(3) und im Vierten ein WB(1), EX(2), ID(3) und IF(4) verarbeitet werden, benötigt dieses fiktive Beispiel einer vierstufigen Pipeline vier Takte für die erste Anweisung, im fünften Takt (WB(2), EX(3), ID(4) und ggf. IF(5)) wäre die zweite Anweisung fertig usw... Ohne Pipelining hättest du aber im 1:1 Vergleich acht Takte benötigt.
Nein das wären dann 2 Takte, warum sollte ich denn Zwischenergebnisse puffern/die Ausführungseinheit unterteilen, wenn ich nicht pipelining nutzen will? Dann kann ich IF, ID, EX und WB auch in einem Takt ausführen.
Das erzeugt einen höheren Durchsatz ganz ohne Taktsteigerung... problematisch sind Sprünge oder Abhängigkeiten. Aber wollen wir gerade mal ausklammern.
Nein der Durchsatz bleibt gleich, bzw. sinkt sogar, wenn man die Pipeline-Flushs mit rein rechnet.
Erst durch den Höheren Takt, der durch die Teilschritte möglich ist, wird das ganze schneller.
Für mich ist das klar ein Mittel um eine gewisse Art Parallelisierung in den Prozessor zu bekommen. Oder was ist an idealerweise gleichzeitigem IF, ID, EX und WB im fiktiven Beispiel NICHT parallel? Und was hätte Leerlauf ohne Pipelining für einen Vorteil?
Ist im Prinzip halt immer noch seriell, nur wartest du halt nicht, bis hinten ein Ergebnis rausgeflogen ist, wenn du es nicht brauchst. Sieht zwar parallel aus, ist es aber nicht, ist ähnlich einem Scheduler mehrere Tasks auf einer Singlecore CPU ausführt.
Ich habe nämlich immer noch nicht verstanden, womit du genau nun nicht konform gehst?
Deine Aussage war halt einfach falsch.
..., aber im Endeffekt bleibt es weiterhin dabei, dass Pipelining keine Eigenart vom Bulldozer ist, sowohl bei Intel als auch AMD ewig schon benutzt wird und wir hier eigentlich genau gar nix erreicht haben...
Da stimme ich dir zu, das ist noch größerer Schwachsinn als deine Erklärung von Pipelining.