Was ist eigentlich ein Schattenregister?

Ich habe den Begriff bemerkt , als Shadow Registerich ein Datenblatt eines TMS320F28335 DSP durchgesehen habe. Was bedeutet es eigentlich? Hat es einen physischen Ort in der CPU, wie es die Allzweckregister haben?

Welcher Mikrocontroller?
@LeonHellersorry für den Fehler ... es ist ein dsp ... TMS320F28335

Antworten (3)

Ich vermute, Sie sind in Bezug auf die PIC-Programmierung darauf gestoßen. PICs hatten ursprünglich E/A-Ports, die auf sehr direkte Weise gehandhabt wurden - Sie konnten lesen, welche Werte sie extern hatten, oder schreiben, welche Werte Sie ausgeben, beides an derselben Adresse. Der Nachteil dabei war, dass der Wert, den Sie ausgeben wollten, möglicherweise nicht mit dem Zustand auf dem Pin übereinstimmt – etwas anderes könnte ihn stärker antreiben oder die Änderung noch nicht abgeschlossen haben. Dies bedeutete, dass eine separate Variable benötigt wurde, um zu verfolgen, welchen Status Sie beabsichtigten, anstatt ihn zu erhalten, wenn Sie nur Teile eines Ports aktualisieren wollten. Soweit ich mich erinnere, wird diese separate Variable normalerweise als Schattenregister bezeichnet, da Sie sie immer zum Speichern einer Kopie des (unsichtbaren) Ausgangsregisters verwendet haben. Neuere PICs vermeiden dies, indem sie die "Latch" -Adressen hinzufügen, wo das Ausgangsregister gelesen werden kann. Dies ist auch bei anderen Mikrocontrollern üblich, z. B. bei den Port- vs. Pin-Adressen auf AVR.

In der PC-Architektur gibt es einen ähnlichen Begriff für Schattenspeicher; In diesem Fall bedeutet dies normalerweise einen Abschnitt des RAM, der zum Speichern einer Kopie eines langsameren ROM verwendet und auf dieselbe Adresse abgebildet wird. Wiederum speichert er eine Kopie eines anderen Speichers, der verborgen ist, weil die Kopie ihn im Adressraum ersetzt.

Bearbeiten: Da es sich um ein TMS320 handelt, bietet das Schattenregister einen doppelten Puffer. Diese Technik wird verwendet, um sicherzustellen, dass Aktualisierungen zum richtigen Zeitpunkt erfolgen. Vergleichen Sie die Verwendung von Frame Buffer Swaps in Grafiken. Das Datenhandbuch zeigt Schatten- und aktive Versionen mehrerer Register. Betrachten Sie zum Beispiel ein Register, das das Ende eines Impulses anzeigt; Wenn Sie ihn auf einen kürzeren Puls ändern würden, könnte dies dazu führen, dass ein Puls überhaupt nicht endet (da er in diesem Zyklus nie gleich dem Endwert war). Wenn Sie jedoch in das Schattenregister schreiben, kann die Hardware es an einem als sicher bekannten Punkt in das aktive Register kopieren - zum Beispiel genau dann, wenn der Timer umläuft. Dies ist nicht im Datenhandbuch beschrieben, das bestimmte Parameter für einen bestimmten Chip abdeckt; Wenn ich TI kenne, gibt es wahrscheinlich aseparates Handbuch , das die Funktion jedes Blocks beschreibt; Dieser hat eine Erwähnung des Schattenmodus in Abschnitt 2.2.

Eine andere Verwendung des Begriffs "Schatten", der insbesondere auf Register angewendet wird, ist das Abbilden architektonischer Registernamen auf verschiedene physikalische Register, um einen schnellen vollständigen oder teilweisen Kontextwechsel zu ermöglichen. ("Banked Register" wird manchmal als Synonym verwendet.) Dies soll normalerweise Interrupts beschleunigen.

Einfach ausgedrückt ist ein Schattenregister ein Register, das innerhalb des Mikrocontrollers entwickelt wurde, um bestimmte Daten zu speichern, die später verwendet werden sollen. Der Name "Shadow" impliziert, einen Wert zu duplizieren und erneut zu verwenden - damit er nicht verloren geht.

Schatten- und Spiegelregister beziehen sich alle auf Register, auf die von mehreren Adressen aus zugegriffen werden kann. Beispielsweise hat in der Hardware ein bestimmtes Register eine Instanz, die sich bei F00h befindet. Wenn es jedoch einen Alias ​​bei 1F00h hat, ist das Lesen oder Schreiben in F00h dasselbe wie das Lesen oder Schreiben in 1F00h und umgekehrt.

Es wäre eine nette Ergänzung, wenn Sie erklären würden, was der Zweck dieser Schattenregister ist.