Forum: Mikrocontroller und Digitale Elektronik Architektur: Pipelining -> Frage


von Prof. X (Gast)


Lesenswert?

Hi

Ich frage mich grad, wie viel Takte ein Befehl in meinem Controller 
braucht. Meiner hat eine 5 Stage Instruction Pipeline:
IF - ID - EX - MA - WB

und parallel:
WB
MA - WB
EX - MA - WB
ID - EX - MA - WB
IF - ID - EX - MA - WB

D.h. jeder Befehl braucht immer 5 Takte aber: die Befehle unternander 
sind nur 1 Takt auseinander (bei voller Auslastung).

Hab ich das jetzt richtig verstanden??

Dann würde der Befehl
i++
so - wie jeder andere Befehl - 5 Takte beanspruchen. Bei 100MHz also 
50ns ?

von ARM-Fan (Gast)


Lesenswert?

i++ ist kein Maschinenbefehl und somit vergleichst du Äpfel mit Birnen.

von Falk (Gast)


Lesenswert?

@Prof. X

>Ich frage mich grad, wie viel Takte ein Befehl in meinem Controller
>braucht. Meiner hat eine 5 Stage Instruction Pipeline:

Das steht im Datenblatt.

>D.h. jeder Befehl braucht immer 5 Takte aber: die Befehle unternander
>sind nur 1 Takt auseinander (bei voller Auslastung).

>Hab ich das jetzt richtig verstanden??

Nein.

>Dann würde der Befehl
>i++
>so - wie jeder andere Befehl - 5 Takte beanspruchen. Bei 100MHz also
>50ns ?

Nein. Du verwechselst Latenz (Durchlaufzeit des Befehls durch die 
gesamte Verarbeitungskette) mit Durchsatz (Wieviel Befehle werden pro 
Takt beendet). Deine Latenz ist 5 Takte, dein Durchsatz 1 Befehl/Takt. 
Das bezieht sich aber auf Assembler.
Was ein C Compiler an Befehlen braucht, um "i++" in Assembler umzusetzen 
ist verschieden, aber wenn der Compilr was taugt und Optimierungen aktiv 
sind wird meistens ein einziger Assemblerbefehl draus.

MFG
Falk

von Prof. Y (Gast)


Lesenswert?

Möglicherweise......

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.