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:
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:
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:
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:
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.
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.
in
, out
) zugegriffen wird, im Gegensatz zu CPU-Registern oder Speicher :)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.
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.
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.Ich würde die Unterscheidung zwischen Registern und Erinnerungen wie folgt zusammenfassen:
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.
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 .
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.
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.
Buffy
Benutzer103380
JimmyB