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 ?
i++ ist kein Maschinenbefehl und somit vergleichst du Äpfel mit Birnen.
@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
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.