Forum: Mikrocontroller und Digitale Elektronik Frage zu AVRs und RISC-Architektur


von MC (Gast)


Lesenswert?

Tag an alle,
habe mich mal ein bisschen über die RISC-Architektur in Verbindung mit 
AVRs schlau gemacht.
Wenn ich es richtig verstanden habe, sind (einige) Merkmale einer 
RISC-Architektur:
- alle Maschinenbefehle sind gleich strukturiert u. vom Speicherbedarf
  gleich groß, um das Pipelining zu beschleunigen
- da alle Befehle den gleichen Speicherbedarf und Struktur haben, 
sollten
  alle in der gleichen Anzahl an Takten ausgeführt werden.

Warum benötigen dann manche Maschinenbefehle der AVRs 1, 2 und sogar 3 
Takte zur vollständigen abarbeitung?

Víelleicht sehe ich das etwas falsch oder habe was falsch verstanden, 
aber AVRs sollten somit doch keine 10%igen RISC Prozessoren sein, oder?

MC

von Andreas K. (a-k)


Lesenswert?

MC wrote:

> Warum benötigen dann manche Maschinenbefehle der AVRs 1, 2 und sogar 3
> Takte zur vollständigen abarbeitung?

Bei Sprungbefehlen findet das Pipelining seine Grenzen. Dieses Problem 
haben praktisch alle halbwegs modernen Prozessoren.

Manche Befehle sind 2 Worte lang (z.B. LDS). Da brauchts allein schon 2 
Takte um sie zu laden. Analog 2-3 Worte/Takte für die Skip-Befehle (z.B. 
SBIC).

Manche Befehle verarbeiten 16 Bits (z.B. ADIW). Die ALU kann aber nur 8.

Read-modify-write Befehle (z.B. SBI) beanspruchen den Datenbus zweimal.

CALL/RET (4-5 Takte) schreibt/liest 2-3 Bytes vom Stack (Datenbus).

> aber AVRs sollten somit doch keine 10%igen RISC Prozessoren sein, oder?

Streng genommen korrekt. Echte RISCs haben keine read-modify-write 
Befehle, legen Rückkehradressen nicht auf den Stack usw. Aber wer nimmt 
das schon so genau, in einer Zeit in der Freescale ein 68000-Derivat 
(CISC in Reinkultur) wie Coldfire allen Ernstes als "variable length 
RISC" bezeichnet.

von Diego (Gast)


Lesenswert?

Víelleicht sehe ich das etwas falsch oder habe was falsch verstanden,
aber AVRs sollten somit doch keine 10%igen RISC Prozessoren sein, oder?

Nein, eher 11% .....

RISC = Reduced Instruction Set Computing. Das hätte dir aber auch Wiki 
erklären können. Statt dessen lässt du uns hier deine Hausaufgaben 
machen. Nicht nett .....

von MC (Gast)


Lesenswert?

@Andreas Kaiser
danke für deine Antwort. Wollte jetzt nicht AVRs in Frage stellen, nur 
überprüfen, ob ich alles richtig verstanden habe.

@Diego
meinte eigentlich "100%igen", aber du warst ja mit deiner Verbesserung 
auch nahe dran. Übrigens (nur nebenbei) ist dieser Eintrag mit den 
Hintergrund der Wissensüberprüfung von aufgenommenem und verarbeitetem 
Informationen entstanden (Teil der Wissensrepräsentation (ist sehr 
wichtig für "Intelligenz")). Die Schule hatte in diesem Ding gar nichts 
mitzumischen.
Weiter weis ich ja nicht, wie alt du bist, aber nicht jeder 
Dahergelaufene in diesem Forum ist 13, besucht eine Realschule und 
versucht gleichzeitig in seiner Freizeit sich mit "Hello world!" 
Programmen etwas Selbstachtung zu erarbeiten.

von Diego (Gast)


Lesenswert?

Die Redewendung "Hausaufgaben machen" hat aber auch garnichts mit Schule 
zu tun. Sollte man wissen, sorry.

Ich wundere mich immer wieder, wieviele mehr oder weniger sinnvolle 
Fragen gestellt werden mit der Erwartung "lass die Jungs mal für mich 
alles raussuchen und erklären", wo doch ein einziger Klick auf z.B. 
Google oder Wiki oder auch die Suchfunktion im Forum alles geklärt 
hätte. Wenn dann noch Fragen sind, ok- Wiki ist ja auch nicht unfehlbar.

Die Anspielung auf's Alter ist ein Eigentor- denk mal drüber nach....
Grins, grins...

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

RISC heisst in erster Linie, dass es keine komplexen Befehle gibt und 
als Operanden entweder Register ODER Adressen zum Einsatz kommen. Dies 
vereinfacht die Mikroarchitektur. Dass deswegen alle Befehle die gleiche 
Ausfuehrungszeit benoetigen ist nicht gesagt. Ich bin mir auch nicht 
sicher (und glaube nicht) dass eine einfache Architektur wie AVR 
superskalar ist.

Michael

von let (Gast)


Lesenswert?

@Diego: Hast du dir mal die Frage des Ops durchgelesen?
A-k hat sie eigentlich beantwortet.

Aber das der AVR eine Pipeline hat ist mir neu. Dann dürfte die
Ausführungszeit der Befehle nicht konstant sein, sondern von
vorrausgegangenen (bedingten) Sprüngen abhängen.
Gibt es kein Whitepaper von den Dingern?

von Rolf Magnus (Gast)


Lesenswert?

> Aber das der AVR eine Pipeline hat ist mir neu.

Naja, sie ist auch nur 2 Stufen lang. Befehl holen - Befehl ausführen.

> Dann dürfte die Ausführungszeit der Befehle nicht konstant sein,
> sondern von vorrausgegangenen (bedingten) Sprüngen abhängen.

Das ist bei der Angabe der Taktzyklen des Sprungbefehls schon mit drin. 
Deshalb braucht ein RJMP 2 Zyklen, und die branch-Befehle wenn sie 
springen (und nur dann) auch.

von let (Gast)


Lesenswert?

Aha, so habe ich das noch nicht gesehen. Ich bin bei einem
bedingten Sprung davon ausgegangen das ein Takt für den Vergleich
und ein zweiter für den Sprung gebraucht wird.
Wenn ein unbedingter Sprung jetzt auch noch zwei Takte braucht,
paßt es. Die Tabelle habe ich aber gerade nicht zu Hand.

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

Diego wrote:
> Die Redewendung "Hausaufgaben machen" hat aber auch garnichts mit Schule
> zu tun. Sollte man wissen, sorry.
>
> Ich wundere mich immer wieder, wieviele mehr oder weniger sinnvolle
> Fragen gestellt werden mit der Erwartung "lass die Jungs mal für mich
> alles raussuchen und erklären", wo doch ein einziger Klick auf z.B.
> Google oder Wiki oder auch die Suchfunktion im Forum alles geklärt
> hätte. Wenn dann noch Fragen sind, ok- Wiki ist ja auch nicht unfehlbar.
>
> Die Anspielung auf's Alter ist ein Eigentor- denk mal drüber nach....
> Grins, grins...

Diego seh ich hier aber öfter irgendwo müll posten, an dem man merkt, 
dass er nix richtig liest, und trotzdem denkt er hat recht...
zu sehen zB auch hier: Beitrag "mega 8, TQFP, ADC6 als Ausgang?"

von MC (Gast)


Lesenswert?

Das die AVRs nur zwei Pipeline-Stufen haben, wusste ich gar nicht.
Das erklärt natürlich, warum man AVRs wie CISC-Prozessoren in Assembler 
programmieren kann (soll nur heißen, dass man keine Rücksicht auf 
vorhergehende Befehle in Bezug auf die Abarbeitung nehemen muss). 
Daten-Hazards können bei zwei Stufen ja nicht auftreten.

@Diego
deine Reaktion auf meinen Angriff finde ich doch sehr gut. Du kannst gut 
unterscheiden, wo Spaß und wo Ernst ist (oder du hast meinen Angriff 
nicht verstanden).
Dein sog. "Eigentor" erkenne ich nicht. Ich arbeite mit µCs zu ca. 10% 
(diesmal wirklich 10%) in meiner Freizeit.
P.S.: Vielleicht solltest du nächstes mal einfach genauer lesen. Ich 
wollte nicht die RISC-Architektur erklärt haben, die kenne ich gut 
genug.

MC

von Bensch (Gast)


Lesenswert?

Wer im Glashaus sitzt.....

Damit sind ALLE gemeint, die hier unsachlich sich gegenseitig 
zerfleischen inclusive dem OP.

Wenn man vom Begriff RISC ausgeht (Reduced Instruction Set usw.), 
erfüllen die AVRs ganz klar dieses Kriterium. Punkt. Aus.

von roboterheld (Gast)


Lesenswert?

....dieses Kriterium. Punkt. Aus.....

fertig, befehl und gehorsam. ab heute gilt dieses hier, es ersetzt das 
grundgesetz. wer es nicht einhält wird mit gefängnis nicht unter 3 
jahren bestraft weil die todestrafe abgeschafft wurde.

von Bensch (Gast)


Lesenswert?

Ja klar, für MICH ist das das Ende der "Diskussion". Wenn dir das nicht 
passt- dein Problem. Der Kommentar ist wirklich lächerlich und kindisch.

von I_ H. (i_h)


Lesenswert?

Die Zuordnung RISC/CISC ist eh nie so 100%ig eindeutig. HP hat beim 
PA-RISC zB. einige Instruktionen dabei, die nicht wirklich RISC sind 
(kein reines load/store, mehrere Rechnungen in einem Befehl etc.) - 
trotzdem läuft die Architektur als RISC.
Desswegen ist es sinnvoller von RISC-artig und CISC-artig zu reden. Und 
alles abdecken tut das auch nicht, VLIW könnte man mit etwas Phantasie 
zB. auch als RISC-artig einstufen, in keinem Fall jedoch als CISC-artig.

Das alle Befehle gleich lang brauchen ist ein absoluter Irrglaube. Die 
Frage ist auch wie lange die Befehle in den einzelnen Pipelinestufen 
sitzen, 'ne Division ist zB. nie und nimmer in einem Takt gerechnet... 
zumindest nicht auf CPUs die auch 'ne gewisse Taktrate erreichen.
NOPs werden dagegen teilweise sogar in effektiv 0 Takten berechnet, 
wobei natürlich noch zwischen Latenz und Durchsatz unterschieden werden 
muss.

von MC (Gast)


Lesenswert?

Eigentlich wollte ich nur eine Bestätigung, dass ich den Inhalt mehrerer 
Bücher und Internetseiten richtig aufgefasst und verstanden habe.
Das war mit der ersten Antwort schon geschehen!!!

Ich weis nicht, was ihr jetzt noch für ein Drama draus macht (gebe zu, 
bei der Geschichte mit Diego bin ich auch schuldig). Trotzdem waren 
viele Antworten überflüssig.

MC

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.