Hallo. Ich habe mir das Technical Reference Manual zum ARM Cortex A9 angesehen. Da wird beschrieben, dass der A9 eine variable-length-pipeline hat. Ich kenne bisher nur pipelinig mit Pipelines fester Länge. Wie funktioniert eine variable length Pipeline und was ist der Vorteil davon? Google konnte mir leider keine Antwort liefern. Viele Grüße, moep
Ins Blaue .... der specherplatz ist fest, zb 64 byte. Aber nicht alle Befehle sind glech lang. Dann haetten eine Variable Anzahl befehle Platz
@Nun: Eine Prozessorpipeline hat nichts mit Befehlslänge und Speicherkapazität zu tun. @moep: Damit ist gemeint, dass einfache Befehle eine kürzere Pipeline haben als komplexere. Ohne dass die komplexeren Befehle mehrere Takte in der gleichen Pipeline-Stufe verbringen. Eine beispielhafte Integer-Execution-Unit kann bei einer Addition nach einem Takt fertig sein, bei einer Multiplikation erst nach 3. Trotzdem kann diese Unit pro Takt eine Multiplikation ausführen, weil voll gepipelined. Diese Teil-Pipeline hat also 3 Stufen, wobei bereits die erste Stufe ein Ergebnis auf den Result-Bus geben kann, wenn der grad frei ist.
@prx Vielen Dank für deine Erklärung! Das bedeutet also, dass es mehrere parallele Pipelines gibt und nicht die Länge der Pipeline an den jeweiligen Befehl angepasst wird, indem z.B. Stufen übersprungen werden? Kennst du vielleicht Quellen, bei denen ich weitere Infos dazu finde? Nochmal Danke, moep
moep schrieb: > Das bedeutet also, dass es mehrere parallele Pipelines gibt > und nicht die Länge der Pipeline an den jeweiligen Befehl angepasst wird, > indem z.B. Stufen übersprungen werden? Wie das genau implementiert ist weiss wohl nur ARM und mit Details geizen die etwas. Spekulationen auf Basis der offiziellen Info wäre Kaffeesatzlesen. Ich hatte oben illustriert, wie in diesem Zusammenhang der Begriff verstanden werden kann. Das war ein Beispiel und bezog sich nicht auf den konkreten Einzelfall A9. Bei einer superskalaren out-of-order Implementierung wie dem A9 muss man beim Begriff "Pipeline" ausserdem etwas aufpassen. Denn es gibt da keine einzelne simple Pipeline, sondern stets diverse separate Pipelines unterschiedlicher Länge, die teils hintereinander und teils parallel arbeiten. Beispielsweise ein in-order Frontend (fetch, decode, rename, dispatch) auf das ein Sammelsurium unabhängiger Execution Units mit individuellen Pipelines folgt.
A. K. schrieb: > Wie das genau implementiert ist weiss wohl nur ARM und mit Details > geizen die etwas. Hier zumindest für den A7: http://www.wired.com/insights/wp-content/uploads/2011/10/arma7-a7pipeline.png und A8: http://i.stack.imgur.com/9dQt4.png Und hier der A15: http://regmedia.co.uk/2011/10/20/arm_a15_pipeline_large.jpg A9 hab ich interessanterweise auch nichts direkt entdecken können. Düfte aber beim A9 ja ähnlich sein.
A9 dürfte prinzipiell dem A15 ähnlich sein, aber möglicherweise etwas kleiner entwickelt. Die Vorgänger bis A8 sind in-order Implementierungen und daher schlecht vergleichbar.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.