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?
> "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
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.
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\
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!
> 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
@ 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.
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...
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.
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
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\
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\
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.).
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).
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.
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.
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-ArchitekturOlaf 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
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.
Olaf schrieb:> Buhaa...vermutlich ist der Pruefungsausschussvorsitzende ueber 70 und> glaubt TMS9900 und MCS51 sind noch immer das Mass der Dinge. :-DW.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
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.
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.
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.