Forum: Mikrocontroller und Digitale Elektronik Single Cycle - Mikrocomputer


von Matze (Gast)


Lesenswert?

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. :)

von Karl M. (Gast)


Lesenswert?

Ins Datenblatt der CPU schauen, so würde ich das machen..

von Peter II (Gast)


Lesenswert?

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.

von Karl M. (Gast)


Lesenswert?

Ein Atmel AVR 8bit µC ist auch eine single cycle cpu - aber nicht immer.

von Achim (Gast)


Lesenswert?

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.

von Jim M. (turboj)


Lesenswert?

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.

von S. R. (svenska)


Lesenswert?

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. :-)

von Matze (Gast)


Lesenswert?

hab leider kein cpu-datenblatt..ist für die uni eine aufgabe

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

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.

von Matze (Gast)


Lesenswert?

Habe leider keine Lösungen zu den Übungsaufgaben erhalten.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Ich hab nix von Lösungen gesagt, sondern von Folien und Unterlagen.
Da wird doch wohl was stehen?

von Matze (Gast)


Lesenswert?

nein nicht zu den taktzyklen..

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

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.

von Fitzebutze (Gast)


Lesenswert?

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.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

@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.

von Matze (Gast)


Lesenswert?

das sind anscheinend 15 takte.. habe nen kollegen nach der lösung 
gefragt.. aber wie kommt man darauf?

von (prx) A. K. (prx)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

Matze schrieb:
> das sind anscheinend 15 takte.. habe nen kollegen nach der lösung
> gefragt.. aber wie kommt man darauf?
1
Befehl                          Aktion          Takt
2
----------------------------------------------------
3
       addi $t1, $zero,-4       $t1:=-4         1
4
marker beq $t1, $zero, out      -4!=0           2
5
       addi $t1, $t1, 1         $t1:=-3         3
6
       j marker                                 4
7
marker beq $t1, $zero, out      -3!=0           5
8
       addi $t1, $t1, 1         $t1:=-2         6
9
       j marker                                 7
10
marker beq $t1, $zero, out      -2!=0           8
11
       addi $t1, $t1, 1         $t1:=-1         9
12
       j marker                                 10
13
marker beq $t1, $zero, out      -1!=0           11
14
       addi $t1, $t1, 1         $t1:=0          12
15
       j marker                                 13
16
marker beq $t1, $zero, out      0==0            14
17
out    jr $ra                                   15

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

von Matze (Gast)


Lesenswert?

vielen dank... habs jetzt gepeilt :o)

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.