Wikipedia · einfach zusammengefasst · Stand
Control Register
Diese Register dienen zur Steuerung und Konfiguration des Prozessors (englisch Central Processing Unit, CPU) sowie bei der Verwaltung von Systemressourcen …
Inhalt6 Abschnitte
Grundidee und Aufgaben
Ein Control Register (Steuerregister) ist ein spezielles Register in der Zentraleinheit eines Computersystems. Es dient zur Steuerung und Konfiguration des Prozessors (Central Processing Unit, CPU) sowie zur Verwaltung von Systemressourcen und Schutzmechanismen.
Control Register stellen Steuerungs- und Konfigurationsinformationen bereit und verwalten sie. Dadurch unterstützen sie die korrekte Ausführung von Programmen und die Verwaltung des Gesamtsystems. Zu ihren wichtigsten Aufgaben gehören:
- Schutzmodus: Er unterscheidet privilegierte Aufgaben im Kernelmodus von Benutzeranwendungen im Benutzermodus und trennt beziehungsweise schützt Systemressourcen.
- Speicherverwaltung: Control Register können Informationen über Speicherseiten, Speichersegmente, Paging-Tabellen und Speicherberechtigungen enthalten.
- Interrupt-Steuerung: Sie können Interrupts konfigurieren und steuern, damit die CPU auf externe Ereignisse reagiert.
- Systemsegmente: Sie können Basisadressen und Informationen zu Systemsegmenten speichern, etwa zur Global Descriptor Table (GDT) und zur Interrupt Descriptor Table (IDT).
Anzahl und Art der speziellen Control Register unterscheiden sich je nach CPU-Architektur.
Program Counter und Instruction Pointer
Der Program Counter (PC) enthält grundsätzlich die Speicheradresse der nächsten auszuführenden Instruktion im Hauptspeicher (RAM). Bei der x86-Architektur ist dies abweichend: Der PC, dort Instruction Pointer (IP) genannt, verweist auf die Adresse des nächsten in der Warteschlange einzureihenden Befehls.
Der PC wird normalerweise zu Beginn eines Programms auf dessen Startadresse, also auf die Adresse der ersten auszuführenden Instruktion, gesetzt. Während der Ausführung inkrementiert die CPU ihn automatisch, in der Regel um die Größe einer Instruktion. Die CPU liest die Instruktion an der angezeigten Adresse, führt sie aus und wiederholt diesen Ablauf.
Bei Verzweigungen, beispielsweise Schleifen oder bedingten Anweisungen, wird der Wert des PC geändert, sodass die CPU an einer anderen Speicheradresse fortfährt. Nach dem Programmende kann der PC auf eine spezielle Endadresse gesetzt oder auf Null zurückgesetzt werden.
Der Instruction Pointer (IP) erfüllt in einigen Architekturen dieselbe grundlegende Funktion. Sein Wert wird während der Programmausführung fortlaufend aktualisiert. Bei Sprüngen wird er an den richtigen Speicherort für die nächste Anweisung angepasst; damit steuert er den Programmfluss und die Abfolge der Befehle.
Control Register der x86-Architektur
In der x86-Architektur gibt es mehrere Control Register, darunter CR0, CR2, CR3 und CR4. Sie steuern den Betriebsmodus des Prozessors, die Speicherverwaltung, erweiterte Prozessorfunktionen und Sicherheitsmechanismen.
CR0 enthält unter anderem folgende Bits:
- Bit 0 PE: Protected Mode Enable
- Bit 1 MP: Monitor co-processor
- Bit 2 EM: x87 FPU Emulation
- Bit 3 TS: Task switched
- Bit 4 ET: Extension type
- Bit 5 NE: Numeric error
- Bit 16 WP: Write protect
- Bit 18 AM: Alignment mask
- Bit 29 NW: Not-write through
- Bit 30 CD: Cache disable
- Bit 31 PG: Paging
CR2 speichert normalerweise die lineare Adresse des letzten Seitenfehlers (Page Fault) im Paging-Modus. Im Register wird sie als PFLA (Page Fault Linear Address) in den Bits 0–31 (63) angegeben. Dadurch kann das Betriebssystem auf fehlerhafte Speicherzugriffe reagieren.
CR3 ist für Paging und Seitenverzeichnisse zuständig. Es enthält die Basisadresse des Verzeichnisses des aktuellen Prozesses und unterstützt die Übersetzung virtueller in physische Adressen. Genannt werden unter anderem PWT (Bit 3, Page-level Write-Through), PCD (Bit 4, Page-level Cache Disable) und PDBR (Bits 12–31 (63), Page Directory Base Register). Im Long Modus basiert die Angabe auf PDPT beziehungsweise auf der Base of PML4T/PML5T. Die als „Nicht verwendet“ markierten Felder sind nicht verwendbar, wenn Bit 17 von CR4 gesetzt ist.
CR4 enthält Steuerungsbits für erweiterte Funktionen und Schutzmechanismen. Dazu gehören:
- Bit 4 PSE: Page Size Extension
- Bit 5 PAE: Physical Address Extension
- Bit 6 MCE: Machine Check Exception
- Bit 7 PGE: Page Global Enabled
- Bit 8 PCE: Performance-Monitoring Counter enable
- Bit 9 OSFXSR und Bit 10 OSXMMEXCPT für Betriebssystemunterstützung von FXSAVE/FXRSTOR beziehungsweise nicht maskierten SIMD-Gleitkommaausnahmen
- Bit 11 UMIP: User-Mode Instruction Prevention
- Bit 13 VMXE und Bit 14 SMXE für Virtual Machine Extensions beziehungsweise Safer Mode Extensions
- Bit 16 FSGSBASE für RDFSBASE, RDGSBASE, WRFSBASE und WRGSBASE
- Bit 17 PCIDE: PCID Enable
- Bit 18 OSXSAVE: XSAVE and Processor Extended States Enable
- Bit 20 SMEP und Bit 21 SMAP zum Schutz der Ausführung beziehungsweise des Speicherzugriffs im Supervisor-Modus
- Bit 22 PKE, Bit 23 CET und Bit 24 PKS für Protection Keys, Control-flow Enforcement Technology beziehungsweise Protection Keys für Supervisor-Mode-Pages
CR1, CR5–CR7 und CR9–CR15 sind reserviert. Greift Software dennoch auf sie zu, löst die CPU eine #UD-Exception aus.
Model-Specific Registers (MSR) speichern und konfigurieren prozessorspezifische Informationen. Sie können für Leistungsoptimierungen und erweiterte Funktionen verwendet werden. Debug Control Register (DR) dienen dem CPU-Debugging und enthalten beispielsweise Hardware-Breakpoints und Trigger-Bedingungen. Segmentregister wie CS (Code Segment) und DS (Data Segment) speichern Informationen zum Zugriff auf Speichersegmente. Das Task State Segment (TSS) wird für Task-Switching verwendet und speichert Informationen über den Zustand eines Prozesses. GDTR und IDTR enthalten die Basisadressen der GDT beziehungsweise IDT und sind für Systemsegmente wichtig.
Extended Control Register und XCR0
Extended Control Register erweitern die Steuerungsmöglichkeiten der x86-Architektur. Das Register XCR0 legt fest, für welche Prozessorzustände Unterstützung durch XSAVE aktiviert ist. Die im Artikel genannten Bits sind:
- Bit 0 X87: x87-FPU/MMX-Unterstützung; dieses Bit muss 1 sein.
- Bit 1 SSE: XSAVE-Unterstützung für MXCSR und XMM-Register.
- Bit 2 AVX: AVX aktiviert und XSAVE-Unterstützung für die obere Hälfte des YMM-Registers.
- Bit 3 BNDREG: MPX aktiviert und XSAVE-Unterstützung für BND0–BND3-Register.
- Bit 4 BNDCSR: MPX aktiviert und XSAVE-Unterstützung für BNDCFGU und BNDSTATUS.
- Bit 5 opmask: AVX-512 aktiviert und XSAVE-Unterstützung für die Opmask-Register k0–k7.
- Bit 6 ZMM_Hi256: AVX-512 aktiviert und XSAVE-Unterstützung für die obere Hälfte der unteren ZMM-Register.
- Bit 7 Hi16_ZMM: AVX-512 aktiviert und XSAVE-Unterstützung für die obere Hälfte der ZMM-Register.
- Bit 9 PKRU: XSAVE-Unterstützung für das PKRU-Register.
Control Register ermöglichen dem Betriebssystem damit, die Prozessorfunktion, den Schutz des Systems, die Verwaltung des Speichersystems und die Ausführung von Anwendungen im richtigen Kontext zu steuern.
Control Register in der ARM-Architektur
Die ARM-Architektur wird in Mobilgeräten, Embedded-Systemen und Servern eingesetzt. Ihre Control Register übernehmen spezielle Aufgaben bei der Steuerung und Konfiguration des Prozessors und des Systems.
- CPSR (Current Program Status Register): Das aktuelle Programmstatusregister enthält Informationen über den Zustand des Prozessors. Dazu gehören Statusbits des letzten Befehls, beispielsweise Überlauf-, Null- oder Negativitätsflag. Das CPSR ist für bedingte Anweisungen und den Programmfluss wichtig.
- SPSR (Saved Program Status Register): In Unterbrechungssituationen speichert das SPSR den Prozessorstatus vor der Unterbrechung. Nach deren Ende kann der vorherige Zustand wiederhergestellt und der unterbrochene Code fortgesetzt werden.
- FPSR (Floating-Point Status Register) und FPEXC (Floating-Point Exception Control Register): Diese Register dienen der Gleitkommazahlenverarbeitung. Das FPSR speichert Statusinformationen von Gleitkommaberechnungen; das FPEXC steuert Gleitkommaausnahmen.
- SCR (System Control Register): Das SCR enthält Steuerungsbits für Funktionen und Verhaltensweisen des ARM-Systems, etwa zur Aktivierung von TrustZone-Sicherheitsfunktionen oder zur Cache-Konfiguration.
- TTBR (Translation Lookaside Buffer Register) und DACR (Domain Access Control Register): Diese Register unterstützen die Speicherübersetzung und Speicherverwaltung. Sie ermöglichen die Übersetzung virtueller in physische Adressen und steuern Speicherzugriffe auf Domänenebene.
Weitere Registerarten
Neben Control Registern gibt es Register mit anderen Schwerpunkten. General Purpose Register (GPR) speichern vor allem Daten, führen arithmetische und logische Berechnungen aus und nehmen Zwischenergebnisse auf. Control Register steuern dagegen die CPU, den Betriebsmodus, den Speicherschutz, Paging und ähnliche Systemfunktionen.
Arithmetik- und Logik-Register (ALU-Register) speichern in der arithmetischen und logischen Einheit (ALU) Operanden und Zwischenergebnisse. Indexregister erleichtern den Zugriff auf Elemente von Datenstrukturen wie Arrays oder Listen. Statusregister speichern den CPU-Zustand und Flags, etwa für Überlauf, Null oder Tragen; sie beeinflussen Kontrollfluss und Bedingungsanweisungen.
Der Stackpointer (SP) zeigt auf den aktuellen obersten Speicherplatz des Stapels und unterstützt Unterprogrammaufrufe sowie die Speicherverwaltung. Basisadressenregister speichern Basisadressen für Speicheroperationen oder Segmentadressen und helfen bei der Adressberechnung. Zeigerregister speichern und verändern Speicheradressen, um auf Datenstrukturen und Speicherbereiche zuzugreifen.
Counter-Register verfolgen Ereignisse oder Zählungen, beispielsweise für Hardware-Interrupts oder Timer-Funktionen. Segmentregister verwalten in x86-Architekturen Speichersegmente und deren Zugriffsrechte. Floating-Point-Register sind für Gleitkommazahlen und Dezimalbruchberechnungen vorgesehen. Multimedia-Register sind für Multimedia-Anwendungen wie Videokompression und -dekodierung optimiert und verbessern die Verarbeitung von Audio- und Videoinhalten. Welche Registerarten vorhanden sind, hängt von CPU-Architektur und Anwendungsanforderungen ab.