Hey Folks,
ich bin gerade am Lernen für eine Prüfung und habe folgenden
Programmausschnitt vorliegen :
addi $t1, $zero,-4
marker beq $t1, $zero, out
addi $t1, $t1, 1
j marker
out jr $ra
Was das Programm einigermaßen leistet ist mir klar. Doch wie kann ich
bestimmen wieviele Takte die Ausführung in einem Single Cycle benötigt?
Vielen Dank für jegliche Hilfe. :)
Karl M. schrieb:> Ins Datenblatt der CPU schauen, so würde ich das machen..
wozu, was willst du doch rauslesen.
"Single Cycle" bedeutet doch vermutlich, jeder OpCode eine Takt.
> Doch wie kann ich> bestimmen wieviele Takte die Ausführung in einem Single Cycle benötigt?
einfach zusammenzählen.
Indem Du das Programm im Kopf durchspielst und zählst, weiviele
Programmzeilen Du durchlaufen hast.
Eventuell musst Du schauen, ob ein Branch 2 Cylen bedeuted, dann bitte
für jeden Branch noch einen dazuzählen.
Peter II schrieb:> "Single Cycle" bedeutet doch vermutlich, jeder OpCode eine Takt.
Da würde ich dringend nochmal in die Definition schauen. Oftmals gilt
das nur für ALU Befehle, Sprünge dauern bei realen µProzessoren oft
länger.
Jim M. schrieb:> Oftmals gilt das nur für ALU Befehle, Sprünge dauern bei /realen/> µProzessoren oft länger.
Um reale Prozessoren geht es hier aber eher nicht. :-)
Dann guck in den Unterlagen und Folien der Vorlesung nach!
Da wird das dann stehen.
Das sieht nämlich nach MIPS Assembler aus, den MIPS gibts in der realen
Welt aber nicht als SingeCycle, also muss der Prof dazu was gesagt
haben.
das sieht dann wohl nach dem Fall für eine Sprechsstunde
beim Prof/WiMi/Tutor aus.
Da es, wie oben geschrieben, den Single Cycle MIPS nicht gibt, kann der
Prof da sonstwas definiert haben wie 3 oder 2 Takte für nen Sprung.
Mw E. schrieb:>> Das sieht nämlich nach MIPS Assembler aus, den MIPS gibts in der realen> Welt aber nicht als SingeCycle, also muss der Prof dazu was gesagt> haben.
MIPS ist sehr wohl single cycle. Ist ja der Gag an RISC bzw. dem branch
delay slot des MIPS.
@Fitzebutze
Wer keine Ahnung hat sollte die Klappe halten!
MIPS ist Pipelined.
Daher sieht die execution Time aus wie Single Cycle, da meist jeden Takt
ein Befehl fertig wird.
Im AVR Datenblatt steht nämlich auch was von "Most Single-clock Cycle
Execution" und unter der CPU Core Beschreibung sieht man dann, dass die
Kiste Pipelined ist.
Wenn eine CPU Single Cycle ist dann ist auch immer nur ein Befehl auf
der CPU.
Matze schrieb:> das sind anscheinend 15 takte.. habe nen kollegen nach der lösung> gefragt.. aber wie kommt man darauf?
Indem man die Schritte nachvollzieht.
einfach im Kopf durchsteppen.
Wobei dieser Code in der Realität nie laufen würde, weil MIPS nach jedem
Sprung noch einen Delay Slot hat. Wenn hinter jeden Sprung (beq, j, jr)
noch ein nop kommt, würde es funktionieren. Dabei kommen natürlich noch
Zyklen dazu.
fchk