Forum: Mikrocontroller und Digitale Elektronik Eine grundlegende Frage zu µC


von IO (Gast)


Lesenswert?

Ich kenne mich mit µC nich so gut aus.
Ich habe zwar schon ein LED zum Blinken gebracht, ADC ausgelesen und 
UART Kommunikation benutzt. (alles mit PIC).
Was die eigentliche Hardwarearchitektur angeht, kenne ich mich da nicht 
aus.

Nun habe ich folgendes gehört:
Auf einen 8-Bit µC  nimmt ein Befehl  genau 1 Byte  Speicher im Flash 
RAM.
d.h. ein µC mit 1 kByte Flash RAM kann ein Programm aus maximal 1024 
Befehlen enthalten.
Daraus folgt, dass auf einem 32-Bit µC  ist ein Befehl 4 Byte lang. Dies 
bedeutet, dass 1 kByte Flash Speicher  nur Platz für 256 Befehle 
enthält.

Inwieweit ist das alles Richtig?

von rava (Gast)


Lesenswert?

ein Befehl besteht nicht nur aus einem Byte. Oft werden in Maschinencode 
auch noch register angegeben, auf die sich der Befehl bezieht.

Wirklich hilfreich hierfür ist das Assembler-Tutorial hier auf der Seite

von Eumel (Gast)


Lesenswert?

IO schrieb:
> Inwieweit ist das alles Richtig?

Ist alles falsch.

von Sven P. (Gast)


Lesenswert?

IO schrieb:
> Inwieweit ist das alles Richtig?
Leider garnicht :-/

- Flash ist etwas Anderes als RAM.
- Bereits auf deinem PIC könnte es sein, dass der Befehl nicht genau ein 
Byte i.S.v. 'Oktett' einnimmt, weil es PIC mit krummen Befehlslängen 
gibt.
- Bei den AVR beispielsweise nimmt ein Befehl immer zwei Bytes, also ein 
Wort, ein. Einige Befehle belegen sogar ein Doppelwort, also vier Bytes.

von Walter T. (nicolas)


Lesenswert?

IO schrieb:
> 8-Bit µC  nimmt ein Befehl  genau 1 Byte  Speicher im Flash
> RAM.

Erster Satz schonmal falsch. 8 Bit ist nicht zwangsläufig die 
Befehlsgröße.

von Falk B. (falk)


Lesenswert?

@ IO (Gast)

>Auf einen 8-Bit µC  nimmt ein Befehl  genau 1 Byte  Speicher im Flash
>RAM.

Es gibt kein Flash RAM, nur Flash ROM, siehe Speicher.
Und die Längr der Befehle hat mit der Registerbreite der CPU kaum was zu 
tun.

>d.h. ein µC mit 1 kByte Flash RAM kann ein Programm aus maximal 1024
>Befehlen enthalten.

Nein.
Der AVR hat 16 Bit Befehle, einige wenige sind sogar 32 Bit lang (2 
Worte a 16 Bit).

>Daraus folgt, dass auf einem 32-Bit µC  ist ein Befehl 4 Byte lang.

Nein. Das kommt auf die CPU an. Auch dort ist vieles möglich, sogar 1 
Byte Befehle! Ausserdem gibt es CPUs, wo ALLE Befehle gleich langs sind, 
bei anderen sind sie eher unterschiedlich (Z80 & Co).

von IO (Gast)


Lesenswert?

Ja, ich meinte ROM, nicht RAM...

So habe ich auch gedacht, dass verschiedene Befehle verschieden lang 
sind.
Stimmt es dass 1 Byte befehle schneller ausgeführt werden, als n-Byte?



PS.

Die Frage basiert sich auf einem Gespräch zwischen den Studenten.

von Eumel (Gast)


Lesenswert?

IO schrieb:
> Stimmt es dass 1 Byte befehle schneller ausgeführt werden, als n-Byte?

Nö, kann so sein muss aber nicht so sein.

von Blinky (Gast)


Lesenswert?

Wie lange ein Befehl benötigt und wie viel Speicher der Befehl belegt 
kommt auf den Aufbau des µC und den Befehl an. Eine generelle Aussage 
kann man da nicht treffen, das ist von Hersteller zu Hersteller und auch 
schon z.T. von µC zu µC verscheiden. Auch die Dauer der Ausführung ist 
unterschiedlich.
Beim AVR ist z.B. der ADD und der RET Befehl gleich lang (2Byte) aber 
ADD braucht nur 1 Cycle wärend der RET 4-5 Cycles benötigt (Je nach 
Prozessor).

von Martin V. (oldmax)


Lesenswert?

Hi
Eigentlich ist die Frage ja beantwortet, aber trotzdem verwirrt mich 
diese Aussage:
>Die Frage basiert sich auf einem Gespräch zwischen den Studenten.
Hier muss ich erst mal tief Luft holen, denn: Wenn die Befehle in einem 
µC nur ein Byte belegen, würde es automatisch den Befehlsumfang auf 256 
verschiedene Befehle eingrenzen. Das mag ja bei einigen speziellen 
Bausteinen auch der Fall sein.. im letzten Jahrtausend vielleicht, aber 
nur mal so als Beispiel:
Befehl: Lade, vergleiche, speichere, addiere ... gut das sind vier, die 
kann man mit 2 Bit auflösen. Aber was? .. und nun weiter
Register mit Register und da Register letztlich auch über Adressen 
erreicht werden, sollte hier spätestens klar sein, wenn 8Bit Befehle, 
dann höchstens 4 verschiedene Arten und höchstens 8 verschiedene Quellen 
und Ziele. (2*3 Bit)
Ein ziemlich lausiger µC. Das sollte jedem Studenten klar sein, auch 
wenn er noch im ersten Semester ist.
Es gab zur Zeit der Z80 die Datenbreite von 8 Bit, und das war ein 
Engpass auch für Befehle. So konnte nur der erste Teil eines Befehls in 
einem Byte aus dem Speicher geladen werden. Die Codierung ließ dann den 
2. 3. oder 4. Teil folgen. Bis alles intern in den Registern verstaut 
und zur Bearbeitung vorlag. Vielleicht haben sich die Studenten darüber 
unterhalten, das ergäbe noch etwas Sinn.
gruß oldmax

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

IO schrieb:

> Die Frage basiert sich auf einem Gespräch zwischen den Studenten.

Ich tippe mal auf Bachelors. Wahrscheinlich auch noch FH. Passt.

Die obigen Fragen lassen sich zumindest für eine spezielle Architektur 
schnell beantworten wenn man einen Blick ins Datenblatt eines beliebigen 
Controllers wirft. Vorzugsweise eines einfachen wie AVR oder 8-Bit PIC. 
Da gibt es sogar Tabellen mit allen Befehlen wo sofort klar wird, wie 
lange diese Befehle sind und auch wie sie aufgebaut sind. Da muss man 
nicht wild spekulieren und unsäglich falsche Annahmen treffen.

gruß cyblord

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.