Pipeline mit variabler Länge

Gast #2944723
Lesenswert?

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
#2944775
Lesenswert?

@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.
Gast #2945111
Lesenswert?

@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
#2945131
Lesenswert?

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.
#2945143
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren