mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Program Counter 8Byte vorlauf


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Bernd

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pipeline?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Schuster (mms)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.cse.unsw.edu.au/~cs9244/06/seminars/08-...

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.