Wie nennt man die Speicherzellen in einem Computer oder einem Mikrocontroller?

Ich weiß nicht, ob dies das richtige Forum ist, um diese Frage zu stellen, aber ich dachte mir, weil dieses Forum für Pädagogen ist und ich ein Trainer bin und meine Frage sich auf Bildung bezieht.

Ich möchte eine Einführung für ein technisches Handbuch über die Grundlagen von Mikrocontrollern machen und bin zum Speicherkapitel gekommen.

Ich begann mit einer Definition für die drei Hauptspeichertypen in einem Mikrocontroller, nämlich:

  1. Programmspeicher (ROM): Dies ist im Grunde ein Flash-Speicher zum Speichern der Programm-HEX-Datei zur Ausführung.
  2. Datenspeicher (RAM): Dieser dient zur Verarbeitung von Daten während des Betriebs des Mikrocontrollers, aber die Daten gehen nach dem Zurücksetzen des Mikrocontrollers verloren.
  3. EEPROM: Das hat den Vorteil, Daten während des Betriebs des Mikrocontrollers zu lesen und zu schreiben und die Daten auch nach dem Zurücksetzen des Geräts zu behalten.

Dann habe ich ein Bild des Blockdiagramms des Mikrocontrollers und wie er mit den internen Einheiten verbunden ist, als Untertitel des Speicherkapitels gepostet.

Der nächste Untertitel ist der Begriff "Register", da sie der Baustein jeder Art von SPEICHER in Computern sind, egal ob es sich um ROM, RAM oder EEPROM handelt. Weil ich diese Informationen auf einer Website gefunden habe und sichergehen möchte.

Dies ist der Link zur Website:

Verknüpfung

Abschnitt 5.1: Register. Wie der vorherige Abschnitt ist 4. Programmspeicher.

Dann erklärt der Autor in Abschnitt 5. Datenspeicher die Unterteile des Datenspeichers, die sind:

  • 5.1 Register
  • 5.2 Bits und Bytes

Meine Frage hier lautet also: Register sind Speicherzellen für jeden Speichertyp, und der Unterschied besteht darin, dass ROM-Speicher nichtflüchtige Register sind, RAM flüchtige Register sind und EEPROM auch nichtflüchtige Register sind? Sie sind also im Grunde alle registriert.

=============================================== ===

Add1: Ich möchte dieses Bild hinzufügen, das ich in einem eBook gefunden habe:

Klassifizierung des Computerspeichers

Der einzige Speicher, der Register genannt wird, ist also, dass die CPU andere Speicher registriert, die nur Speicher genannt werden. Aber wie sieht es mit der Anordnung im Mikrocontroller-Bereich aus?

=============================================== ===

Meine aktualisierte Frage ist, wie sich Register von anderen Speicherzellen in anderen Speichertypen unterscheiden. Wie Flash- und EEPROM-Speicher.

Dies ist wahrscheinlich besser an ComputerScience.StackExchange gerichtet als hier. Es ist wirklich eine eher technische und weniger eine erzieherische Frage. Aber willkommen auf dieser Seite.
@buffy Wir haben die Migration auf die Electrical Engineering SE bekommen. Danke! Es ist wahrscheinlich eine bessere Frage hier, weil Perch nach etwas mit der Hardware fragt. Wir übernehmen es ab hier.
Ich finde den Begriff „Register“ in diesem Zusammenhang ziemlich irreführend. In CPU- und µC-Kontexten unterscheidet sich ein Register deutlich von einem Speicherort im RAM, ROM oder auf der Festplatte. Daher würde ich dringend dazu raten, einen anderen Begriff für das Konzept der Speicherorte für Daten zu finden . - Es sei denn, Sie wollen abstrakt über Theorien von Rechenmaschinen sprechen (Turing,...), aber dann unterscheiden Sie nicht zwischen RAM, ROM, Platten und Bändern.

Antworten (5)

Meiner Meinung nach ist ein Register ein Speicherort, der sich innerhalb der CPU befindet oder direkt von der CPU adressierbar ist - Dinge wie der Akkumulator, Indexregister und ähnliche Dinge. Ich würde nicht sagen, dass EPROM, FLASH und RAM Register haben.

Wenn Sie sich den Befehlssatz in Assemblersprache für einen Mikroprozessor oder Mikrocontroller ansehen, werden Sie feststellen, dass sich einige Befehle mit Registern befassen, während andere sich mit RAM-, EPROM- oder FLASH-Speicherzugriffen befassen, sodass der Prozessor ein Register als etwas anderes als einen Speicher betrachtet Standort.

Das ist sehr logisch und macht viel Sinn. Ich mag Ihre Antwort sehr, stimme Ihnen absolut zu, aber der Link, den ich in diesem speziellen Abschnitt bereitgestellt habe, beschrieb das Register tatsächlich als eine Baueinheit für jeden Speicherort. Da wollte ich sicher sein.
Register sind kleine, schnelle Speicher, auf die die CPU direkt zugreifen kann, und werden oft als Teil der CPU betrachtet. RAM, das Daten und Programmanweisungen enthält und besser als Hauptspeicher bezeichnet wird, wird anders adressiert und verwendet häufig eine andere Technologie.
Ja, das ist ziemlich genau das, was ich denke, also sind die Register in Mikroprozessor- und Mikrocontroller-Konfigurationen gleich. Sie sind für Einschaltvorgänge vorgesehen, bei denen nichtflüchtige Speicher aus Speicherzellen aufgebaut sind und keine Register sind, sondern Speicheradressen oder Speicherorte. Wie sieht es mit meinem Fazit aus?
Um ein wenig Verwirrung zu stiften, werden in Mikrocontrollern die Speicher-„Dinge“, die von Peripheriegeräten wie Timern, Zählern, seriellen Ports usw. verwendet werden, oft als Register bezeichnet, auf die jedoch im Gegensatz zu den „internen“ CPU-Registern mit denselben Anweisungen wie für den RAM-Speicher zugegriffen wird .
Und dann gibt es periphere Register, auf die über spezielle Befehle ( in, out) zugegriffen wird, im Gegensatz zu CPU-Registern oder Speicher :)
@PerchEagle Während Register während des Einschaltvorgangs verwendet werden, sind sie nicht "für Einschaltvorgänge". Sie werden kontinuierlich verwendet, während die CPU läuft. Es wird ein oder mehrere Allzweckregister geben – wenn es nur eines gibt, wird es als Akkumulator bezeichnet – und eine Reihe von Spezialregistern, einschließlich eines Programmzählers, eines Befehlsregisters, Speicheradressen- und Datenregistern und möglicherweise IO-Registern. Hauptspeicher wird anders adressiert als Register. RAM, nichtflüchtiger Speicher und speicherabgebildete IO-Speicherorte werden für unterschiedliche Zwecke verwendet, aber auf die gleiche Weise adressiert.
@Bob Brown Das ist absolut eine sehr gute Beschreibung, ich habe mir auch verschiedene Arten von Registern für Mikroprozessoren angesehen, die schwieriger und detaillierter sind als die Speicherzuordnung von Mikrocontrollern. Ihre Antwort erklärt die allgemeine Funktionalität im Fall von Mikrocontrollern, die ich absolut suche. Die letzten beiden Zeilen klären die wichtigsten Grenzen des Verständnisses, wie der gesamte Speicher in einem Mikrocontroller adressiert wird, wo es bei einem Mikroprozessor anders ist.

Ich denke, Sie werden feststellen, dass die Terminologie nicht in Stein gemeißelt ist und dass verschiedene Autoren unterschiedliche Begriffe verwenden. Wichtig ist natürlich, sich darüber im Klaren zu sein, dass es unterschiedliche Begriffe für dieselbe Sache und ähnliche Begriffe für unterschiedliche Dinge gibt.

Wenn es in dem Buch um Engineering geht, sind die Unterschiede relevanter, da sie auf unterschiedliche Weise implementiert werden. Wie wichtig das sein wird, hängt vom Zweck und der Zielgruppe Ihres Buches ab. „Erinnerung“ kann sich auf viele Dinge beziehen. "Register" wird oft für die wenigen direkt adressierbaren Speicherzellen verwendet, die in der Architektur (Maschinensprache) definiert sind. Vergessen Sie nicht, dass Speicherplatz manchmal als "Speicher" bezeichnet wird, ebenso wie Cache, sofern verfügbar.

Es gibt eine ganze Reihe von Dingen, die in ihrer Volatilität variieren. Einige sind nur stabil, wenn Strom vorhanden ist, andere sind stabil, wenn sie abgeschaltet sind. Eprom ist tatsächlich flüchtig, aber über einen anderen Weg.

Aber im Allgemeinen würde ich es vermeiden, den Schülern eine solide Definition zu geben, da sie später andere Definitionen hören werden und verwirrt sein könnten, wenn Sie endgültig zu sein scheinen.

Ich muss eine solide und auch flexible Definition liefern. Aber wie du schon erwähnt hast; zB Plattenplatz, kann ich bei dieser Art von Speicher jede Zelle "eintragen"? Ich möchte nur die Basis des Begriffs "Register" wissen. Bezieht er sich auf jede Speicherzelle oder nur auf Cache- und RAM-Zellen?

Nein, Register sind im Allgemeinen RAM-Zellen, die einem einzigen Zweck dienen. In aktuellen µC-Designs sind die einzigen Sonderregister der Programmzähler, der (Rückkehr-)Stapelzeiger und verschiedene Status- und Steuerregister.

Es kann mehr Register geben, aber für einen µC mit eingebautem RAM unterscheiden sie sich von gewöhnlichen RAM-Zellen nur durch die verfügbaren Adressierungsmodi. Üblicherweise ist eine indirekte und/oder indizierte Adressierung nur dann möglich, wenn einer oder beide Teile der Adresse aus einer solchen Register-RAM-Zelle entnommen werden. Dies liegt normalerweise an Beschränkungen in der Größe des Operationscodes (z. B. nur 4 Bits zum Auswählen einer RAM-Zelle, die die indirekte Adresse enthält). Außerdem können Operationen, die zwei Operanden erfordern, z. B. Addieren, auch erfordern, dass sich ein Operand in einer Register-RAM-Zelle befindet aus dem gleichen Grund.

Zu Ausbildungszwecken würde ich einen Programmzähler, einen Stapelzeiger und ein Statusregister beiseite legen und die Allzweckregister als Teil des RAM-Blocks zeichnen.

Dies ist ein Zitat aus dem Beitrag, den ich gelesen habe: Registers All information in the microcontroller, from the program memory, the timer information, to the state on any of input or output pins, is stored in registers.Aber ich glaube, ich habe die Syntax in die Irre geführt, weil es in dem Abschnitt um den Datenspeicher geht, der RAM ist.
Das ist ungenau. Da sich der von Ihnen verlinkte Text auf die AVR-Familie bezieht, lesen Sie bitte zB das ATtiny85-Datenblatt. ww1.microchip.com/downloads/en/DeviceDoc/… Es gibt 3 Arten von Registern (Programmzähler/Stapelzeiger/Statusregister; allgemeine Registerdatei; E/A-Register) plus internes RAM.

Ich würde die Unterscheidung zwischen Registern und Erinnerungen wie folgt zusammenfassen:

  1. Ein "Register" ist ein Logikblock mit Hauptfunktion, um einige Daten im Moment einer kommenden Taktflanke zwischenzuspeichern und zu speichern . Daten können entlang vieler Registerelemente fließen, aber nur der ausgewählte Satz hat die Daten, an die er sich erinnern muss, wenn sie "ausgewählt" werden und die Uhr umschaltet. Ein Register hat also normalerweise mehrere weitere Funktionen eingebettet, wie "Zurücksetzen" auf den Anfangszustand, "Setzen" auf den entgegengesetzten Zustand und "Aktivieren / Auswählen" dieser Funktionen. Ohne "Select" ignoriert die Registerzelle die Datenänderung.

  2. Ein Speicher ist normalerweise ein Satz von Registern unterschiedlicher Organisation in Bezug auf die parallele Größe (Anzahl der Bits pro Speicherwort / Register) und die Anzahl der adressierbaren Spalten mit normalerweise vereinfachten Zugriffsfunktionen. Zum Beispiel hat Massenspeicher keine "Reset"- oder "Set"-Funktion, er hat normalerweise einen Adressdecoder, der es ermöglicht, eine Reihe von Bits (Wort) zu aktivieren, wodurch die Daten an einer Taktflanke geschnappt werden können, während andere "Speicherwörter", die mit demselben Datenbus verbunden sind, ignorieren die Daten und "erinnern" sich weiterhin an die letzte Schreiboperation. Diese Art von Speicher wird "statisch" genannt. Eine minimale Hardwareimplementierung erfordert sechs Transistoren pro Bit, die klassische 6T-Architektur .

aus Wikipedia

  1. Die Hauptfunktion des Gedächtnisses besteht darin, sich an ein paar Daten zu erinnern. Bei einer erheblichen Verringerung der Direktzugriffsfunktionalität kann die Speicherfunktion durch nur einen Kondensator mit geringer Leckage und einen Transistor erreicht werden. Mit einigen zusätzlichen Schaltkreisen und einer speziellen Seitenorganisation kann man eine " dynamische Speicherzelle " haben.

Geben Sie hier die Bildbeschreibung ein

Die Funktionalität einer Zelle mit einer Kappe erfordert eine Reihe von Reihen-/Spalten-Gate-Öffnungen, damit die Ladung an die richtige Speicherstelle gelangt, und eine periodische "Auffrischungs"-Funktion, um die Ladungspegel in hohen oder niedrigen Zuständen zu halten. Es heißt DRAM - dynamischer Direktzugriffsspeicher, der in allen modernen Computern als Hauptsystemspeicher verwendet wird.

  1. ROM – Read-Only-Memory, könnte einer der oben genannten sein, mit geschützter Schreibfunktion. Es gibt umprogrammierbare ROMs, wie elektrisch löschbare Speicher, oder es könnten sogenannte "maskenprogrammierte" Speicher sein, bei denen der Inhalt nicht geändert werden kann.
Dies ist falsch, da fast jede MCU gegen die von Ihnen vorgeschlagene Definition des Registers verstößt.
@ChrisStratton, wieso? Könnten Sie das bitte näher erläutern?
Deine Antwort ist sehr nett. Vielen Dank für die Informationen.
CPU-Kernregister passen zu Ihrer Definition von Speicher, und relativ wenige Register (höchstens eine Teilmenge von denen in peripheren Blöcken) passen zu Ihrer Registerdefinition. Daher verwirrt die Unterscheidung, die Sie ziehen, mehr als sie klärt.
@ChrisStratton, ich habe versucht, eine Argumentationslinie zu ziehen, dass sich die Speicherhierarchie durch die verfügbare Zugriffsgranularität und die Set/Reset-Funktionalität sowie andere mögliche integrierte Logik unterscheidet. Natürlich könnte es eine feinere Klassifizierung in diese Richtung geben, wie Caches-> Registerdateien-> Reservierungsstationen usw. Aber danke für die zivilisierte Antwort.
Wie wäre es mit diesem Link: mikroe.com/ebooks/pic-microcontrollers-programming-in-c/… Ich bereite gerade mein Handbuch vor, aber ich bin jetzt nur in der Anordnung des Speicherkapitels stehengeblieben, was die entsprechenden Untertitel dieses Kapitels sind ? Ich gehe dann zum Speicher, SFRs, Register und Speichereinheiten, da sie sich alle auf den Speicher beziehen. Dies ist eine ähnliche Anordnung wie im Link.
@PerchEagle, ich bin mir nicht sicher, wer die Zielgruppe Ihres "Handbuchs" ist. Das gesamte Thema ist ein guter Teil des mehrsemestrigen College-Level-Kurses in Informatik und Prozessorarchitektur. Mein Eindruck war immer, dass Handbücher von erfahrenen Fachleuten aus Industrie und/oder Bildung geschrieben werden, was hier nicht so klingt.
Der überwiegenden Mehrheit der CPU-Register fehlt das Setzen und Zurücksetzen, dies kann nur über die ALU als Schreibvorgang erfolgen - das ist einer der Gründe, warum Ihre Unterscheidung falsch und verwirrend ist.
@ChrisStratton, Sie verwechseln Software/Firmware mit Hardware. Alle CPU-Register in ALLEN CPUs haben eine dedizierte Reset-Funktion, die zumindest beim Einschalten aktiviert wird und ALLE Register in den Standardzustand versetzt, da sonst eine CPU keinen definierten Anfangszustand hat. Speicher (insbesondere DRAM) haben im Gegensatz zu CPU-Registern diese Funktion nicht und müssen initialisiert werden. Also ist "meine Einstufung" vernünftig.
@Ali Chen Meine Zielgruppe sind Diplom-College-Studenten der Elektronik. Und ich bereite ein Handbuch mit den Grundlagen der Mikrocontroller-Programmierung vor. Ich habe gerade das Hardwaremodul erreicht und möchte einen grundlegenden Überblick über die Speicherklassifizierung in Mikrocontrollern erklären, nicht so viele Details. Wenn du willst, kann ich dir die Anleitung zeigen.
@ChrisStratton, ich denke, das Beste ist, "Register" in Bezug auf Mikrocontroller zu definieren und den Schülern einfach zu erwähnen, dass sich dieser Begriff in Bezug auf die Architektur von Computermikroprozessoren unterscheidet.
@AliChen - Sofern das Datenblatt dies nicht besagt, können Sie nicht davon ausgehen, dass die CPU-Register beim Zurücksetzen gelöscht werden. Und es wäre absolut sinnlos, dies zu tun - ein definierter Zustand von Kernregistern für allgemeine Zwecke ist nicht wichtiger als ein definierter Zustand von RAM. Was passiert, ist, dass der Programmzähler und manchmal der Stapelzeiger initialisiert werden, aber dies sind atypische Fälle im Vergleich zu den Allzweckregistern, die im Grunde nur eine Form von eng gekoppeltem Speicher sind.
@PerchEagle Es gibt keine sinnvolle Unterscheidung hinter der von Ihnen vorgeschlagenen Aufteilung, da die meisten Mikrocontroller über normale CPU-Funktionen wie Kernregister sowie zusätzliche Funktionen verfügen. Anstatt zu versuchen, neue Terminologie auf der Grundlage eines unvollständigen Verständnisses zu erfinden, bleiben Sie bitte bei der traditionellen Sprache, die in der jahrzehntelangen Geschichte dieses Bereichs durchdacht und verfeinert wurde.

Meine aktualisierte Frage ist, wie sich Register von anderen Speicherzellen in anderen Speichertypen unterscheiden. Wie Flash- und EEPROM-Speicher.

Nun, Flash und EEPROM sind nichtflüchtig. Das ist der größte Unterschied.

Was den Unterschied zum RAM angeht...

Es gibt CPUs, bei denen Register nur die ersten Bytes des RAM sind. Der Unterschied besteht darin, wie Sie sie in Opcodes adressieren. Register können mit nur wenigen Bits adressiert werden, da es nur einige wenige gibt. RAM hingegen ist groß und Sie verwenden normalerweise ein Register, um sie zu adressieren. Oder an den Opcode sind zusätzliche Bytes für die Adresse angehängt (nur in CISC).

In modernen Computern ist RAM auch anders aufgebaut, sogenannter dynamischer Speicher. Die Speicherzellen sind im Grunde Kondensatoren, die sich mit der Zeit entleeren und ständig aufgeladen werden müssen. RAM wird ebenfalls in einer Matrix adressiert. Einige Bits spezifizieren eine Reihe und andere eine Spalte. Der Zugriff auf Daten in derselben Zeile ist schneller als das Wechseln von Zeilen. Das Lesen von RAM ist destruktiv und Sie müssen die Daten nach einem Lesevorgang zurückschreiben, um sie zu erhalten. All dies wird vom Speichercontroller gehandhabt. Es gibt also etwas zwischen der Kern-CPU und dem Speicher (dort gibt es auch Caches und die MMU).

Die Register hingegen sind (afaik) immer statische Rams oder Straight-Up-Flip-Flops. Sie speichern einen Wert in ihnen und sie behalten diesen Wert bei, solange sie Strom haben. Auf modernen Desktop-/Server-CPUs existieren die Register, die Sie in Assembler verwenden, überhaupt nicht in der CPU. Stattdessen hat die CPU eine größere Registerdatei und Register im Opcode werden dynamisch auf die größere Registerdatei neu abgebildet. Dies löst das Problem, dass Opcodes dasselbe Register lesen und schreiben oder dass spätere Opcodes ein Register eines früheren Opcodes überschreiben, wenn die CPU superskalar ist.

Wenn Sie alle Besonderheiten ihrer Implementierung ignorieren, sind Register und RAM völlig gleich. Es ist nur, wie sie verwendet werden, ihre Geschwindigkeit und ihre Kosten, die sich unterscheiden. Register sind die Haftnotizen, die Sie auf Ihrem Schreibtisch aufbewahren, während Ram die Notizbücher sind, die Sie in einem Regal aufbewahren, wenn Sie den nächsten großen amerikanischen Roman schreiben. Es ist alles nur Papier, außer nicht.