Flagregister
Übersicht
- Zweck: Das Flagregister ist ein Spezialregister, das Statusbits (Flags) speichert, die das Ergebnis arithmetischer oder logischer Operationen widerspiegeln. Jedes Bit entspricht einer bestimmten Bedingung, etwa ob ein Ergebnis null oder negativ war, einen Übertrag erzeugt hat oder einen Überlauf verursachte.
- Symbol: Wird als rechteckiger Registerblock mit 7 Eingängen (4 Flag-Datenbus-Eingänge + CLK + LD + Flag-Eingang) und 4 Flag-Ausgängen (Z, C, N, V) dargestellt.
- DigiSim.io-Rolle: Dient als wesentliche Komponente in der Computerarchitektursimulation und ermöglicht bedingte Operationen sowie Entscheidungsfindung anhand der Ergebnisse vorhergehender Berechnungen.

Funktionsbeschreibung
Logikverhalten
Das Flagregister erfasst und speichert die von der ALU oder anderen Recheneinheiten erzeugten Statusinformationen. Jedes Bit im Register repräsentiert eine bestimmte Bedingung oder einen Zustand.
Flags:
| Flag | Setzbedingung | Löschbedingung |
|---|---|---|
| Null (Z) | Operationsergebnis ist null | Ergebnis ist ungleich null |
| Carry (C) | Vorzeichenloser Additionsüberlauf / Subtraktions-Borrow | Kein vorzeichenloser Überlauf / kein Borrow |
| Negativ (N) | Höchstwertiges Bit (MSB) des Ergebnisses ist 1 | MSB des Ergebnisses ist 0 |
| Überlauf (V) | Vorzeichenbehaftete Arithmetikoperation hat überlaufen | Kein vorzeichenbehafteter Überlauf |
Eingänge und Ausgänge
Eingänge (7 insgesamt):
- Zero (Z): Pin 0. Null-Flag-Eingang von der ALU (Bus-Eingang).
- Carry (C): Pin 1. Carry-Flag-Eingang von der ALU (Bus-Eingang).
- Negative (N): Pin 2. Negativ-Flag-Eingang von der ALU (Bus-Eingang).
- Overflow (V): Pin 3. Überlauf-Flag-Eingang von der ALU (Bus-Eingang).
- Flag In: Pin 4. Zusätzlicher Flag-Eingang (Bus-Eingang).
- CLK: Pin 5. Takteingang – Flags werden an der steigenden Flanke übernommen.
- LD (Load): Pin 6. Ladefreigabe – Flags werden nur aktualisiert, wenn LD an der steigenden Taktflanke HIGH ist.
Ausgänge (4 insgesamt):
- Z: Pin 0. Null-Flag-Ausgang.
- C: Pin 1. Carry-Flag-Ausgang.
- N: Pin 2. Negativ-Flag-Ausgang.
- V: Pin 3. Überlauf-Flag-Ausgang.
Konfigurierbare Parameter
- Enthaltene Flags: Welche spezifischen Statusflags implementiert sind (architekturabhängig).
- Flag-Verhalten: Wie jedes Flag auf bestimmte Operationen reagiert.
- Taktflankenempfindlichkeit: Ob das Register an steigenden oder fallenden Taktflanken aktualisiert wird.
- Ladesteuerung: Ob Flags einzeln oder als Gruppe aktualisiert werden.
- Signallaufzeit: Die Zeit, die die Flag-Ausgänge benötigen, um Eingangsänderungen widerzuspiegeln.
Visuelle Darstellung in DigiSim.io
Das Flagregister wird als rechteckiger Block mit beschrifteten Eingängen auf der linken Seite (Statusbits, CLK, Load) und einzelnen Flag-Ausgängen auf der rechten Seite (Z, C, N, V usw.) dargestellt. In einer Schaltung visualisiert die Komponente den Zustand jedes Flags durch Ausgangswerte und Farbänderungen auf den verbundenen Leitungen.
Pädagogischer Wert
Schlüsselkonzepte
- Bedingte Ausführung: Zeigt, wie Computer Entscheidungen auf Grundlage von Operationsergebnissen treffen.
- Statusverfolgung: Zeigt, wie digitale Systeme die Ergebnisse von Berechnungen festhalten.
- Computerarchitektur: Veranschaulicht eine grundlegende Komponente des CPU-Designs.
- Zustandsinformationen: Vermittelt das Konzept, Zustandsinformationen für nachfolgende Operationen aufzubewahren.
- Digitale Rückkopplung: Zeigt, wie die Ergebnisse von Operationen zukünftige Verarbeitungspfade beeinflussen.
Lernziele
- Verstehen, wie Statusflags die Ergebnisse arithmetischer und logischer Operationen erfassen.
- Lernen, wie Flags bedingte Verzweigungen und Entscheidungsfindung in Computerprogrammen ermöglichen.
- Die Rolle des Flagregisters in der CPU-Architektur und bei der Befehlsausführung erkennen.
- Wissen über Flags anwenden, um den Programmablauf bei bedingten Operationen vorherzusagen.
- Verstehen, wie sich Mehrfach-Präzisionsarithmetik auf Carry- und Überlauf-Flags stützt.
Anwendungsbeispiele/Szenarien
- Bedingte Verzweigung: Befehle wie Jump if Zero (JZ), Jump if Carry (JC) oder Jump if Not Zero (JNZ) verwenden Flags, um den Programmablauf zu ändern.
- Mehrfach-Präzisionsarithmetik: Verwendung des Carry-Flags, um Operationen über mehrere Wörter zu verbinden (z. B. Addition von 64-Bit-Zahlen auf einer 32-Bit-ALU).
- Fehlererkennung: Überwachung des Überlauf-Flags zur Erkennung arithmetischer Fehler bei vorzeichenbehafteten Operationen.
- Schleifensteuerung: Prüfen des Null-Flags, um zu erkennen, wann Schleifenzähler ihre Endwerte erreichen.
- Interrupt-Verwaltung: Setzen oder Löschen des Interrupt-Flags zur Steuerung der Reaktionsfähigkeit des Systems auf externe Ereignisse.
- Statusmeldungen: Verwendung von Flags zur Übermittlung von Operationsergebnissen an höherwertige Software.
Technische Hinweise
- Das Flagregister wird typischerweise als Sammlung von Flip-Flops realisiert, jeweils eines pro Flag-Bit.
- Verschiedene CPU-Architekturen enthalten unterschiedliche Flag-Sätze und können sie unterschiedlich interpretieren.
- Das Flag-Verhalten kann je nach Befehl variieren; einige Befehle beeinflussen alle Flags, andere nur bestimmte.
- In vielen CPU-Designs ist das Flagregister Teil eines größeren Programmstatuswortes (PSW) oder Statusregisters.
- Das Speichern und Wiederherstellen des Flagregisters ist häufig bei Kontextwechseln, Interrupts und Unterprogrammaufrufen erforderlich.
- In DigiSim.io modelliert das Flagregister-Verhalten gängige CPU-Architekturen mit korrekter Setzung und Löschung der Flags basierend auf den Eingangsbedingungen.