Hallo, warum läuft der Program counter bei einem ARM immer 8-Bytes vor der ausgeführten Instruktion? Bernd
@ 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
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.
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
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.
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
> 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.
mit den 3 bytes meinte ich die drei stufen, die nacheinander in der pipeline ausgeführt werden müssen.
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.
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
http://www.cse.unsw.edu.au/~cs9244/06/seminars/08-leonidr.pdf PS: Das ist #1 bei Google nach ARM7 pipeline in englisch.
@ 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
> 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.
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.