Forum: Mikrocontroller und Digitale Elektronik Pipeline mit variabler Länge


von moep (Gast)


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

von Nun (Gast)


Lesenswert?

Ins Blaue .... der specherplatz ist fest, zb 64 byte. Aber nicht alle 
Befehle sind glech lang. Dann haetten eine Variable Anzahl befehle Platz

von (prx) A. K. (prx)


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.

von moep (Gast)


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

von (prx) A. K. (prx)


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.

von Mac G. (macgyver0815)


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.

von (prx) A. K. (prx)


Lesenswert?

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.

von moep (Gast)


Lesenswert?

Vielen Dank für eure Hilfe

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
Noch kein Account? Hier anmelden.