Register: Aufbau, Funktion und Registerarten
Ein Register ist ein kleiner Speicherbaustein für ein Binärwort. Register liegen häufig im Prozessor und halten dort Daten, Adressen, Befehle oder Zustände besonders schnell bereit. Auch andere Hardwarekomponenten können eigene Register besitzen.
Auf dieser Seite lernst du, wie ein Register aufgebaut und beschrieben wird, welche Aufgaben verschiedene Registerarten erfüllen und wie Register einen Befehlsablauf unterstützen.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Wie speichert ein Register Daten?
Stell dir vor, eine Rechnung der CPU benötigt zwei Zahlen. Diese Zahlen müssen für das Rechenwerk schnell erreichbar sein. Dafür können sie vorübergehend in Registern liegen.
Register
Ein Register ist eine Speichereinheit für ein Binärwort mit einer festgelegten Anzahl von Bits. Es hält seinen gespeicherten Wert, bis ein Steuersignal eine Änderung auslöst.
Die Registerbreite gibt an, wie viele Bits ein Register speichern kann. Ein 8-Bit-Register besitzt acht Speicherzellen und speichert ein Byte. Werden die Bits als natürliche Zahl ohne Vorzeichen gedeutet, ergeben sich 256 mögliche Bitmuster und damit die Werte von 0 bis 255.
| Registerbreite | Speicherkapazität |
|---|---|
| 8 Bit | 1 Byte |
| 16 Bit | 2 Byte |
| 32 Bit | 4 Byte |
| 64 Bit | 8 Byte |
Technisch kann jede Speicherzelle durch ein Flipflop verwirklicht werden. Ein Flipflop speichert genau ein Bit. Ein Register mit einer Breite von $n$ Bit besteht daher aus $n$ solchen Ein-Bit-Speichern.
Im 8-Bit-Muster 00101101 steht jede Stelle für den Zustand einer Speicherzelle. Beim Schreiben übernimmt das Register alle acht Bits gemeinsam. Danach bleibt dieses Muster gespeichert, auch wenn sich die Daten am Eingang ändern.
Die Registerbreite legt die Zahl der speicherbaren Bits fest. Welche Bedeutung das Bitmuster hat, hängt von seiner Verwendung ab: Es kann zum Beispiel eine natürliche Zahl, eine Adresse oder einen Teil eines Befehls darstellen.
Wie wird ein neuer Wert übernommen?
Eine Änderung am Dateneingang verändert den Registerinhalt nicht sofort. Bei einem flankengesteuerten Register wird der Eingang erst an einer festgelegten Taktflanke übernommen.
Eine Taktleitung kann stabil 0 oder stabil 1 sein. Außerdem gibt es zwei Wechsel:
- Vorderflanke: Wechsel von
0auf1 - Rückflanke: Wechsel von
1auf0
Bei einem vorderflankengesteuerten Register ist der Wechsel von 0 auf 1 das aktive Ereignis. Mehrere Register erhalten üblicherweise denselben Takt. Ein zusätzliches Steuersignal namens Write Enable, auf Deutsch Schreibfreigabe, bestimmt, welches Register beim Taktereignis einen neuen Wert übernimmt.
Ein 8-Bit-Register enthält 00000101. Am Dateneingang liegt 00001001 an.
- Vor der aktiven Taktflanke bleibt der gespeicherte Wert
00000101. - An der Taktflanke ist Write Enable aktiv. Das Register übernimmt deshalb
00001001. - Nach einer kurzen Signallaufzeit erscheint
00001001am Ausgang.
Ist Write Enable nicht aktiv, behält das Register bei derselben Taktflanke seinen alten Wert.
Ein Reset setzt das Register auf einen fest vorgegebenen Wert zurück. Welcher Signalzustand den Reset auslöst und welcher Rücksetzwert verwendet wird, hängt von der Hardware ab.
Warum muss der Eingang kurz stabil bleiben?
Ein Register arbeitet nicht unendlich schnell. Die Eingangsdaten müssen bereits vor der aktiven Taktflanke für die Voreinstellzeit stabil sein. Nach der Flanke müssen sie während der Haltezeit noch stabil bleiben. Erst nach einer Signallaufzeit ist der neue Wert sicher am Ausgang sichtbar.
Takt und Write Enable erfüllen verschiedene Aufgaben: Der Takt legt den Zeitpunkt einer möglichen Übernahme fest. Write Enable entscheidet, ob das Register zu diesem Zeitpunkt tatsächlich geschrieben wird.
Welche Register braucht ein Prozessor?
Register erfüllen im Prozessor unterschiedliche Aufgaben. Nicht jedes Register ist für jedes Programm direkt zugänglich.
- Datenregister halten Operanden und Ergebnisse der arithmetisch-logischen Einheit, kurz ALU.
- Ein Akkumulator ist ein Datenregister, das in manchen Architekturen besonders häufig als Operand und Ergebnisspeicher dient.
- Adressregister enthalten Adressen oder Bestandteile einer Adressberechnung.
- Der Programmzähler oder Befehlszeiger enthält die Adresse des aktuellen oder nächsten Befehls. Ein Sprung verändert diesen Wert.
- Das Befehlsregister hält den gerade bearbeiteten Maschinenbefehl.
- Das Statusregister speichert einzelne Zustandsbits, sogenannte Flags. Ein Zero-Flag zeigt beispielsweise an, dass das letzte Ergebnis null war.
- Der Stapelzeiger verwaltet die Adresse des Stapelspeichers. Dort können unter anderem Rücksprungadressen und lokale Daten liegen.
Architekturregister
Ein Architekturregister ist für Software sichtbar und kann durch Maschinenbefehle angesprochen werden. Moderne Prozessoren können zusätzlich interne physische Hardware-Register besitzen, die nicht unmittelbar als eigene Register im Befehlssatz erscheinen.
Eine ALU berechnet eine Subtraktion und erhält das Ergebnis 0. Das Ergebnis kann in einem Datenregister landen. Gleichzeitig wird im Statusregister das Zero-Flag gesetzt. Ein anschließender bedingter Sprung kann dieses Flag prüfen und den Programmzähler auf eine andere Befehlsadresse setzen.
Die Wirkungskette lautet:
ALU-Ergebnis → Statusregister → Sprungentscheidung → Programmzähler
Gibt es Register außerhalb der CPU?
Ja. Ein Register ist ein allgemeiner Hardwarebaustein und nicht auf den Hauptprozessor beschränkt. Angeschlossene oder integrierte Ein-/Ausgabe-Komponenten können eigene Register besitzen.
Typische Aufgaben solcher E/A-Register sind:
- Ein Datenregister hält Daten, die gesendet oder empfangen werden.
- Ein Statusregister meldet den Zustand einer Komponente.
- Ein Steuerregister legt eine Betriebsart oder ein Verhalten fest.
- Ein Data Direction Register bestimmt bei einer programmierbaren Schnittstelle, welche Leitungen als Eingang und welche als Ausgang arbeiten.
Solche Register können über besondere Portnummern erreichbar sein. Beim Memory-Mapped I/O liegen ihre Adressen dagegen im Adressraum, den der Prozessor auch für Speicherzugriffe verwendet. Trotzdem gehören sie funktional zur jeweiligen Hardwarekomponente.
Ausgänge gewöhnlicher Register dürfen nicht einfach elektrisch miteinander verbunden werden. Würden zwei Register gleichzeitig unterschiedliche Spannungspegel auf dieselbe Leitung legen, könnte die Hardware beschädigt werden. Eine Schaltung benötigt daher eine geregelte Auswahl oder geeignete Bustreiber.
Worin unterscheidet sich die Registermaschine?
In der theoretischen Informatik bezeichnet Registermaschine ein abstraktes Rechnermodell. Seine Register sind nicht mit einer konkreten Sammlung physischer CPU-Register gleichzusetzen.
Eine Variante dieses Modells besitzt:
- ein endliches, nummeriertes Programm,
- einen Befehlszähler $b$,
- einen Akkumulator $c(0)$,
- unendlich viele nummerierte Register $c(1), c(2), c(3), \ldots$.
Diese Modellregister können beliebig große natürliche Zahlen enthalten. Reale Register haben dagegen eine feste Bitbreite und somit nur endlich viele Bitmuster. Auch ein Simulator bleibt durch seinen endlichen Speicher und seine festgelegten Wertebereiche begrenzt.
Ein reales 8-Bit-Register kann ohne Vorzeichen Werte von 0 bis 255 darstellen. Die Zahl 256 passt nicht in dieses Format. Ein Register der abstrakten Registermaschine kann dagegen auch 256 und beliebig größere natürliche Zahlen enthalten.
Der gleiche Begriff beschreibt zwei verschiedene Ebenen: Ein Hardware-Register ist ein realer Speicherbaustein. Ein Register der Registermaschine ist ein Bestandteil eines mathematischen Modells.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Register
- Aufbau und Speicherung
- Flipflops, Bitmuster und Registerbreite
- Steuerung
- Takt, Write Enable und Reset
- CPU-Aufgaben
- Daten, Adressen, Befehle und Flags
- Ablaufsteuerung
- Statusregister und Programmzähler
- Weitere Hardware
- Daten-, Status- und Steuerregister für Ein-/Ausgabe
- Theoretisches Modell
- Registermaschine ohne feste Hardwarebreite
- Aufbau und Speicherung
Mit Google fortfahren