Forum: Mikrocontroller und Digitale Elektronik Unterschied RAM und Register?


von Schmitt-Triggerin (Gast)


Lesenswert?

Hallo,

zur Zeit befinde ich mich mitten in der Prüfungsvorbereitung zur 
Elektronikerin. Die Überschrift sagt bereits alles und nachdem ich die 
Suchfunktion des Forums verwendet habe, ist mir der grundsätzliche 
Unterschied zwischen RAM und Registern innerhalb der 
Mikrocontrollertechnik auch relativ klar geworden:

Register sind unmittelbar mit der Recheneinheit verbunden und 
ermöglichen somit einen weitaus schnelleren Datenaustausch innerhalb der 
CPU, als wenn ständig auf den RAM zugegriffen werden müsste.

Laut Prüfungsausschuss gibt es aber eine korrekte Lösung zu einer der 
gebundenen Aufgaben, die ich nicht so ganz nachvollziehen kann.
Der Prüfungsausschuss gibt innerhalb dieser Aufgabe als korrekte Lösung 
zu verstehen:

"Ein Register ist ein Speicherplatz im RAM-Bereich."

Wie soll ich das nun verstehen? Hat der Prüfungsausschuss da wieder 
nicht lange genug überlegt und ist diese Aussage einfach schlichtweg 
inkorrekt?
Ich meine, wenn Register im RAM-Bereich liegen, dann kann ich mir die 
Sache mit den schnellen Zugriffszeiten ja komplett schenken... oder 
nicht?

von Olaf (Gast)


Lesenswert?

> "Ein Register ist ein Speicherplatz im RAM-Bereich."

> Wie soll ich das nun verstehen? Hat der Prüfungsausschuss da wieder
> nicht lange genug überlegt und ist diese Aussage einfach schlichtweg
> inkorrekt?

Buhaa...vermutlich ist der Pruefungsausschussvorsitzende ueber 70 und 
glaubt TMS9900 und MCS51 sind noch immer das Mass der Dinge. :-D


Letztlich gibt auf so eine Frage keine eindeutige Antwort weil es 
implementationsabhaengig ist.

Olaf

von Alf (Gast)


Lesenswert?

Im Grunde ist die Aussage

> Register sind unmittelbar mit der Recheneinheit verbunden und
> ermöglichen somit einen weitaus schnelleren Datenaustausch innerhalb der
> CPU, als wenn ständig auf den RAM zugegriffen werden müsste.

vollkommen richtig.

Die Aussage
> Ein Register ist ein Speicherplatz im RAM-Bereich

Trifft wohl nur bei seltenen Spezialfällen zu. Also mir ist kein Fall 
bekannt wo das so wäre oder wo das sinnvoll wäre.

von Schmitt-Triggerin (Gast)


Lesenswert?

Mit implementationsabhängig meinst du also so etwas wie ,,Kann sein, 
muss aber nicht?" :-) Klingt ja doch wie ein richtiger 
Prüfungsausschuss! ;-)

Hast du eventuelle Beispiele für Register, die direkt im RAM-Bereich 
liegen? Ich kenne lediglich die Art Register, die beispielsweise direkt 
im Steuerwerk integriert sind, wie z.B. das Befehls- und Statusregister 
oder der Programmschrittzähler.

Unter Registern IM RAM kann ich mir irgendwie gar nichts vorstellen /o\

von Schmitt-Triggerin (Gast)


Lesenswert?

Alf schrieb:
> Trifft wohl nur bei seltenen Spezialfällen zu. Also mir ist kein Fall
> bekannt wo das so wäre oder wo das sinnvoll wäre.

Mir nämlich momentan auch nicht. :-D Danke!

von Olaf (Gast)


Lesenswert?

> Trifft wohl nur bei seltenen Spezialfällen zu. Also mir ist kein Fall
> bekannt wo das so wäre oder wo das sinnvoll wäre.

https://de.wikipedia.org/wiki/Texas_Instruments_TMS9900

Der Grund warum sowas aus der Mode gekommen ist, es ist langsam.

Olaf

von Falk B. (falk)


Lesenswert?

@ Schmitt-Triggerin (Gast)

>"Ein Register ist ein Speicherplatz im RAM-Bereich."

Das ist falsch.

>Wie soll ich das nun verstehen? Hat der Prüfungsausschuss da wieder
>nicht lange genug überlegt

Wahrscheinlich.

> und ist diese Aussage einfach schlichtweg inkorrekt?

Fast. Es gibt SFRs.

https://www.mikrocontroller.net/articles/Speicher#Register

Bei manchen Controllern liegen die SFRs so wie RAM im Adressraum, nennt 
sich dann memory mapped IO.

>Ich meine, wenn Register im RAM-Bereich liegen, dann kann ich mir die
>Sache mit den schnellen Zugriffszeiten ja komplett schenken...

Richtig.

von Schmitt-Triggerin (Gast)


Lesenswert?

Falk B. schrieb:
>> und ist diese Aussage einfach schlichtweg inkorrekt?
>
> Fast. Es gibt SFRs.
>
> https://www.mikrocontroller.net/articles/Speicher#Register
>
> Bei manchen Controllern liegen die SFRs so wie RAM im Adressraum, nennt
> sich dann memory mapped IO.

Meinen allerherzlichsten Dank! :-)

Man muss allerdings auch zugeben, dass die restlichen Antworten á la "Es 
ist das Tastenfeld des Bedienungspults" oder "Es ist ein Teil einer 
Festplatte" zum Glück völliger Rotz sind. Und die "korrekte" Lösung kann 
ich nun auch nachvollziehen... hätten sie doch nur Mal das Wort "SFR" 
statt nur "Register" verwendet...

von Dr. Sommer (Gast)


Lesenswert?

Vielleicht ist das ja so gemeint, dass Register und (S)RAM die gleiche 
Speichertechnologie nutzen und daher (fast) austauschbar genutzt werden, 
während die eigentlichen Unterschiede in der Anbindung/Adressierung 
liegen.

von Jobst M. (jobstens-de)


Lesenswert?

Schmitt-Triggerin schrieb:
> Der Prüfungsausschuss gibt innerhalb dieser Aufgabe als korrekte Lösung
> zu verstehen:
>
> "Ein Register ist ein Speicherplatz im RAM-Bereich."

Sowas kommt dabei heraus, wenn sich diese Leute nicht weiter mit dem 
Fach beschäftigen und ihre alten Fragen aus alten Vorstellungen stellen.

Ich weiß von einem Prof an einer Uni, der den Studenten in den 80ern 
noch erzählt hat, dass er nicht glaubt, dass der Transistor sich 
durchsetzen würde (aber dafür kannte er sich mit Röhren aus ...)

Solche Leute gehören dort einfach nicht (mehr) hin ...

Also, Du hast das richtig verstanden. Kreuz einfach das an, was sie 
haben möchten ...

Ach ja: Beim 8051 ist das tatsächlich so. R0 ist auch RAM Adresse 0.

Gruß
Jobst

: Bearbeitet durch User
von Schmitt-Triggerin (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Vielleicht ist das ja so gemeint, dass Register und (S)RAM die
> gleiche
> Speichertechnologie nutzen und daher (fast) austauschbar genutzt werden,
> während die eigentlichen Unterschiede in der Anbindung/Adressierung
> liegen.

Sehr guter Hinweis, danke.
Die Frage wurde jedoch mit den Worten "Welche Behauptung über ein 
Register in einem Mikrocomputersystem ist richtig?" leider viel zu 
Allgemein gehalten, als dass man es durch deine Aussage genauer 
differenzieren könnte. Prüfungsausschüsse halt. /o\

von Schmitt-Triggerin (Gast)


Lesenswert?

8051 merke ich mir in diesem Zusammenhang mal - Dankeschön!

Jobst M. schrieb:
> Solche Leute gehören dort einfach nicht (mehr) hin ...
>
> Also, Du hast das richtig verstanden. Kreuz einfach das an, was sie
> haben möchten ...

Sehe ich genau so. Ganz, gaaaanz besonders schlimm benehmen die sich 
hinsichtlich der Definition von passiven und aktiven Sensoren. Beim 
Prüfungsausschuss benötigt ein passiver Sensor stets Hilfsenergie... 
zwei Jahre später ist es plötzlich der aktive Sensor, der diese Energie 
benötigt... und nochmal zwei Jahre später dann wieder andersherum... zum 
verzweifeln /o\

von Peter D. (peda)


Lesenswert?

Schmitt-Triggerin schrieb:
> "Ein Register ist ein Speicherplatz im RAM-Bereich."

Vermutlich beziehen sich die Fragen nur auf eine ganz bestimmte 
Architektur und sind nicht allgemein gefaßt.
Z.B. haben beim Z80 die CPU-Register keine RAM-Adresse.
Im Gegensatz zum RAM haben Register oft eine ganz spezielle Funktion 
(Akku, Stackpointer usw.).

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich möchte noch einen Variante einwerfen:

Auf Register wird (meist) direkt durch Ausführung eines speziellen 
Maschinenbefehles zugegriffen, z.B.

- LD A,33 (lade Register A mit 33) oder
- MOV B,C (verschiebe den Inhalt von Register C nach Register B)

Es gibt dann ebensolche/ähnliche Befehle für alle anderen vorhandenen 
Register, die sich direkt auf deren "Namen" oder Nummer beziehen.

Auf RAM wird üblicherweise indirekt und mit einem komplexen Handshake 
per Adress-, Daten- und Steuerbus zugeriffen. Z.B. zuerst die Adresse 
auf den Adressbus gelgt, dann Lesebefehl auf Steuerbus legen und auf die 
Daten auf dem Datenbus warten (evtl. per RDY-Signal auf Steuerbus).

- LD D,(B) (lade das Register D mit dem Inhalt des Speicherplatzes, 
dessen Adresse im Register B steht).

von (prx) A. K. (prx)


Lesenswert?

Schmitt-Triggerin schrieb:
> "Ein Register ist ein Speicherplatz im RAM-Bereich."

Wer nur AVRs kennt, der könnte glatte denken, das wäre immer so.

Es gab früher auch sonst ein paar Typen, da war das so. Ist aber 
überwiegend aus der Mode gekommen, auch die AvrX haben das nicht mehr.

> Ich meine, wenn Register im RAM-Bereich liegen, dann kann ich mir die
> Sache mit den schnellen Zugriffszeiten ja komplett schenken... oder
> nicht?

Nein. Auch wenn man sich entschieden hat, Register ebenfalls über eine 
RAM-Adresse verfügbar zu machen, dann muss das nicht bedeuten, dass sie 
in der gleichen Hardware-Struktur zu liegen kommen.

Beim TMS9900 Mikroprozessore von TI war das aber wirklich so. Weshalb 
der, ein Zeitgenosse der ersten 8-Bit Mikroprozessoren zwar der Breite 
nach brillierte, aber nicht dem Tempo nach. Vorteils gibts indes auch: 
Interrupts sind brandschnell, weils wenig zu sichern gibt, und die 
Umschaltung zwischen Prozessen ist es auch.

von (prx) A. K. (prx)


Lesenswert?

Schmitt-Triggerin schrieb:
>> Speichertechnologie nutzen und daher (fast) austauschbar genutzt werden,
>
> Sehr guter Hinweis, danke.

Dummerweise stimmt das auch nicht immer. Viele Mikroprozessoren 
verwenden oder verwendeten dynamische Speichertechnik für interne 
Speicherstellen. Wenn man den Takt einer 6800 CPU länger angehalten hat, 
dann gabs Demenz.

von Lothar (Gast)


Lesenswert?

Schmitt-Triggerin schrieb:
> Ein Register ist ein Speicherplatz im RAM-Bereich

Sag Deinem Prüfungsausschuss auch beim 8051 uC wäre nur richtig:

Ein Register ist ein Speicherplatz im unmittelbar mit der Recheneinheit 
verbunden RAM-Bereich (genannt internes RAM)

Ein 8051 kennt nämlich keinen Unterschied zwischen einem Register und 
einem solchen Speicherplatz. Zum Beispiel kann man eine Schleife 
runterzählen mit einem Register oder jedem anderen Speicherplatz im 
internen RAM:

DJNZ R0, LABEL

DJNZ 70H, LABEL

Externes RAM dagegen kann nur über Register geladen werden.

Beim ARM uC hingegen sind die Register kein RAM und alles RAM ist 
externes RAM das nur über Register geladen werden kann:

https://de.wikipedia.org/wiki/Load/Store-Architektur

Olaf schrieb:
> MCS51 sind noch immer das Mass der Dinge

Bei 8-Bit sind im Vergleich zu AVR die EFM8 8051 auf jeden Fall das Mass 
der Dinge

von W.S. (Gast)


Lesenswert?

Schmitt-Triggerin schrieb:
> Register sind unmittelbar mit der Recheneinheit verbunden und
> ermöglichen somit einen weitaus schnelleren Datenaustausch innerhalb der
> CPU, als wenn ständig auf den RAM zugegriffen werden müsste.

Nun ja, um durch eine Prüfung zu kommen, mußt du das dort Erwartete 
ankreuzen. Aber sachlich richtig ist dein Satz nicht.

Also:
Eine einzelne Speicherzelle ist ein Flipflop oder etwas ähnliches. Klar.
Ein Register ist eine Zusammenfassung von derartigen Speicherzellen. 
Zumeist 8 oder 16 oder 32 Bit breit - aus praktischen Gründen. Ist aber 
nicht zwingend. Register können RAM sein, muß aber nicht. Sie kommen 
sowohl in einer CPU als Arbeitsregister vor, als auch an ganz anderen 
Stellen, z.B. mitten in der Hardware. Auch klar.
RAM ist eine Menge von Registern, die an einen Adressdekoder 
angeschlossen sind, so daß man mittels einer Adresse auf ein bestimmtes 
Register zugreifen kann.
ROM (auch Flashrom) besteht auch aus Registern, aber die sind keine 
Flipflops, sondern was anderes, weswegen sie auch nur lesbar sind.

Beispiele zum Nachdenken: Cache-RAM im PC auf der einen Seite, 
Funktionsprinzip in den kleinen PIC16Fxxx von Microchip auf der anderen. 
Bei letzteren arbeitet die CPU nämlich direkt im RAM, aber da das eine 
Harvard-Architektur ist, kann man genauso sagen, daß der RAM in Form von 
vielen Registern in der CPU liegt. Begreif bitte anhand dieser Beispiele 
den (Un)Sinn deiner obigen Darstellung.

W.S.

von Rainer V. (Gast)


Lesenswert?

Olaf schrieb:
> Buhaa...vermutlich ist der Pruefungsausschussvorsitzende ueber 70 und
> glaubt TMS9900 und MCS51 sind noch immer das Mass der Dinge. :-D

W.S. schrieb:
> ROM (auch Flashrom) besteht auch aus Registern, aber die sind keine
> Flipflops, sondern was anderes, weswegen sie auch nur lesbar sind.

Hallo, entscheidend ist hier wohl, dass ein Register beschrieben und 
gelesen werden muß, also RAM. ROM kann nur gelesen gelesen werden und 
enthielt zu Zeiten des Pruefungsausschussvorsitzenden den Programmcode. 
Aber wie du schon sagst, solltest du ankreuzen, was der Prüfung 
dient...nach der Prüfung könntest du ja mal vorsichtig nachfragen, wer 
die Prüfung ausgearbeitet hat :-)
Viel Glück, Rainer

von Route_66 H. (route_66)


Lesenswert?

Jobst M. schrieb:
> Ach ja: Beim 8051 ist das tatsächlich so. R0 ist auch RAM Adresse 0.

Das ist nicht korrekt. Rß *könnte auf Adresse 0 liegen, aber auch auf 
08H, 10H oder 18H.

Der Zilog Z8 macht es ähnlich: über einen Registerpointer können die 16 
Arbeitsregister im internen RAM fast beliebig angeordnet werden. Fast 
beliebig bedeutet: nur dort wo RAM vorhanden ist, können auch ein 
Register sein. Außerdem befinden sich auch die Port-Register, die 
Steuer- und Statusregister im RAM-Adressraum.

von (prx) A. K. (prx)


Lesenswert?

Route 6. schrieb:
> Der Zilog Z8 macht es ähnlich: über einen Registerpointer können die 16
> Arbeitsregister im internen RAM fast beliebig angeordnet werden.

Bei solchen Architekturen muss man erst einmal klären, was man unter 
einem "Register" überhaupt versteht. Da gibts nämlich mehrere Modelle.

(1) Bezogen auf den Hardware-Aufbau sind Register bestimmte 
prozessornahe Speicherstrukturen. Im Unterschied zu RAM sind sie ein 
untrennbarer Teil des Cores, schneller ansprechbar als RAM und das ggf. 
gleichzeitig über mehrere Busse.

(2) Aus der Sicht des Programmierers sind es einfach nur kurz und oft 
implizit im Befehlssatz adressierte Speicherstellen für Daten und 
Adressen, mindestens vom Platz im Befehl her effizienter ansprechbar als 
RAM.

In CPUs wie 8051, Z8 oder 9900 sind die dort als "Register" bezeichneten 
Elemente nur im Sinn von (2) ebensolche. Im Sinn von (1) ist das bloss 
eine andere Art, RAM zu adressieren. Ein 9900 hat dann genau 3 sichtbare 
Register: PC, Statusregister und Workspace-Pointer. Beim 8051 ist im 
Sinn von (1) zwar der Akku ein Register, R0 aber nicht.

: Bearbeitet durch User
von randbedingung (Gast)


Lesenswert?

und noch einmal zur eingangsfrage:
es ist der kotext zu beachten. sicherlich wird mit einer bestimmten cpu 
gearbeitet und genau daruf beziehr sich die frage. und alle weiteren 
fragen.

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.