Unterschied RAM und Register?

Gast #4975628
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?
Gast #4975635
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
Gast #4975643
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.
Gast #4975650
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\
#4975655
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.
Gast #4975657
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...
Gast #4975658
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.
#4975663
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
Gast #4975665
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\
Gast #4975670
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\
(Firma: Q3) #4975678
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).
#4975686
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.
Gast #4975710
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
Gast #4975720
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.
Gast #4975777
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
#4977186
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.
#4977228
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren