Forum: Mikrocontroller und Digitale Elektronik Program Counter 8Byte vorlauf


von Bernd S. (mms)


Lesenswert?

Hallo,

warum läuft der Program counter bei einem ARM immer 8-Bytes vor der 
ausgeführten Instruktion?

Bernd

von Falk B. (falk)


Lesenswert?

@ Bernd Schuster (mms)

>warum läuft der Program counter bei einem ARM immer 8-Bytes vor der
>ausgeführten Instruktion?

Weil er auf die Adresse des NÄCHSTEN Befehls zeigt?

MFG
Falk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das würde vier, aber nicht acht erklären.

von Falk B. (falk)


Lesenswert?

Pipeline?

von Andreas K. (a-k)


Lesenswert?

Pipeline! Ein typischer Fall. Was im ersten Design mal ganz praktisch 
war und bis ARM7 durchhielt ist nun auf ewig in der ISA festgeschrieben, 
ob's nun zur Pipeline aktueller Implementierungen passt oder nicht.

MIPS erging es mit den diversen delay slots kein Deut besser, auch die 
standen neueren superskalaren Designs eher im Weg als das sie noch etwas 
genützt hätten.

von Bernd S. (mms)


Lesenswert?

arbeitet ein ARM nicht mit einer 5stufigen Pipeline?

1 Stufe: Befehl holen
2 Stufe: Befehl dekodieren
3 Stufe: Operationen ausführen
4 Stufe: Cachezugriff
5 Stufe: Ergebnis zurückschreiben

wie spielt jetzt diese Pipeline mit dem Program-Counter zusammen?

Bernd

von Andreas K. (a-k)


Lesenswert?

Massgeblich ist die 3-stufige Pipeline der ersten Implementierung, die 
bis ARM7 weitgehend überlebt hat. Tiefere Pipelines neuerer 
Implementierungen müssen sich aus Kompatibilitätsgründen daran halten.

von Bernd S. (mms)


Lesenswert?

ok, d.h. Adresse vom PC (bei 32Bit Prozessor) sind damit 4Bytes weg und 
dazu kommen noch die drei Bytes aus der Pipeline. --> macht 8Bytes 
abstand

welche schichten werden bei einer 3stufigen pipeline gegenüber einer 
5stufigen zusammengefasst?

Bernd

von Andreas K. (a-k)


Lesenswert?

> dazu kommen noch die drei Bytes aus der Pipeline

Welche 3 Bytes?

> welche schichten werden bei einer 3stufigen pipeline gegenüber einer
> 5stufigen zusammengefasst?

Google => ARM pipeline

Oder besser noch: Vorher mal über Pipelining allgemein nachlesen. 
Wikipedia de/en müsste was dazu haben und allerlei Uni-Vorträge.

von Bernd S. (mms)


Lesenswert?

mit den 3 bytes meinte ich die drei stufen, die nacheinander in der 
pipeline ausgeführt werden müssen.

von Andreas K. (a-k)


Lesenswert?

Woraus ich den Schluss zog, dass du erst mal die Grundlagen von 
Pipelining nachlesen solltest. Denn mit irgendwelchen Bytes hat das 
nichts zu tun, schon garnicht mit 3 davon.

von Bernd S. (mms)


Lesenswert?

das pipeling besteht aus drei zyklen, die dreimal versetzt gleichzeitig 
ausgefüht werden... das ist wie in einer wäscherei (z.B. 3 waschmasichen 
und 3 trocknern und drei bügeleisen...) - das hab ich schon verstanden 
aber der zusammenhang jetzt zu dem Abstand vom Program Counter mit 
8Bytes, da hängt es noch bei mir (und leider finde ich da auch nichts 
was diese thematik in einem bild oder ähnlichem gut erklärt.

Bernd

von Andreas K. (a-k)


Lesenswert?

http://www.cse.unsw.edu.au/~cs9244/06/seminars/08-leonidr.pdf

PS: Das ist #1 bei Google nach ARM7 pipeline in englisch.

von Falk B. (falk)


Lesenswert?

@ Bernd Schuster (mms)

>das pipeling besteht aus drei zyklen, die dreimal versetzt gleichzeitig
>ausgefüht werden... das ist wie in einer wäscherei (z.B. 3 waschmasichen
>und 3 trocknern und drei bügeleisen...) - das hab ich schon verstanden

Na das vermischt du aber was. Und zwar die Anzahl Stufen mit der Breite 
der Stufen. Eine Wäscherei braucht nur eine Waschmaschine, einen 
Trockner und ein Bügeleisen, um Pipelining zu machen.

>aber der zusammenhang jetzt zu dem Abstand vom Program Counter mit
>8Bytes, da hängt es noch bei mir (und leider finde ich da auch nichts
>was diese thematik in einem bild oder ähnlichem gut erklärt.

Hmm, vielleicht läuft die CPU in Thumb Modus (16 Bit). Da wären 8 Byte = 
4 Worte, das kommt dann schon eher hin.

MFG
Falk

von Andreas K. (a-k)


Lesenswert?

> Hmm, vielleicht läuft die CPU in Thumb Modus (16 Bit). Da wären 8 Byte =
> 4 Worte, das kommt dann schon eher hin.

Seite 8, Fig 2a: Register wird in der dritten Stufe gelesen. Da ist der 
PC 2 Worte weiter. Bei ARM10 passt es zufällig wieder, ARM9 und ARM11 
müssen mogeln.

von Bernd S. (mms)


Lesenswert?

vielen dank für das pdf... ich glaub ich hab mich oben falsch 
ausgedrückt...

ich hatte das so verstanden, dass bei jedem arbeitsschritt 1Byte 
benötigt wird / also der PC 1Byte weiter ist und bei drei 
Arbeitsschritten somit drei Bytes weiter...

aber was in diesem pdf ganz interessant ist, dass man das wie du schon 
sagtest auch stark beeinflussen kann = mogeln muss.


>Na das vermischt du aber was. Und zwar die Anzahl Stufen mit der Breite
>der Stufen. Eine Wäscherei braucht nur eine Waschmaschine, einen
>Trockner und ein Bügeleisen, um Pipelining zu machen.

für eine ganz einfache Wäscherei sicherlich richtig, aber meistens 
befinden sich dort ja mehrere Geräte so dass z.B. von jedem Gerät vier 
laufen mit der Wäsche von Person A, B, C, D und jede Person hat somit 
eine einzelne Pipeline

Bernd

von Andreas K. (a-k)


Lesenswert?

> ich hatte das so verstanden, dass bei jedem arbeitsschritt 1Byte
> benötigt wird / also der PC 1Byte weiter ist und bei drei
> Arbeitsschritten somit drei Bytes weiter...

Wenn ein Befehl 4 Bytes breit ist und pro Takt ein Befehl durchgeht... 
Nö, die Befehle werden am Stück verdaut.

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.