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
:
Bearbeitet durch User
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-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
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. :-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
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.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.