Wikipedia · einfach zusammengefasst · Stand
Registersatz
Als Registersatz (englisch Register Set) bezeichnet man die Menge aller Register eines Mikroprozessors. Die Menge derjenigen Register, welche durch …
Inhalt3 Abschnitte
Begriff und Aufbau
Ein Registersatz (englisch „Register Set“) ist die Menge aller Register eines Mikroprozessors. Register sind kleine, prozessorinterne Speicherplätze, die während der Verarbeitung von Befehlen genutzt werden. Diejenigen Register, die Programme direkt ansprechen können, bilden das Programmiermodell eines Prozessors. Zusätzlich kann es weitere Register geben, die ausschließlich innerhalb des Prozessors verwendet werden. Diese heißen Hilfsregister.
Innerhalb eines Registersatzes werden drei Typen unterschieden:
- Datenregister speichern vorübergehend Operanden, also die von einer Operation verwendeten Werte, sowie Rechenergebnisse.
- Adressregister dienen zur Adressierung von Operanden und Befehlen. Sie enthalten damit Angaben, über die der Prozessor die benötigten Daten oder Anweisungen findet.
- Spezialregister erfüllen unterschiedliche besondere Aufgaben. Beispiele sind der Programmzähler und der Stackpointer.
Der Registersatz legt somit wesentlich fest, welche Register ein Programm verwenden kann und welche Aufgaben diese Register bei der Verarbeitung von Daten, Adressen und Befehlen übernehmen.
Warum es nur wenige Register gibt
Die Zahl der Register in einem Prozessor ist im Vergleich zur Größe des Hauptspeichers sehr gering; das gilt selbst im Vergleich mit heute üblichen Cache-Speichern. Der wesentliche Grund liegt in den Problemen bei der Adressierung größerer Registermengen.
Wird die Anzahl der Register erhöht, wird früher oder später ein Adressdecoder benötigt, um auf einzelne Speicherzellen beziehungsweise Register zugreifen zu können. Gegenüber einem Zugriff über direkte Steuerleitungen ist dies sehr viel langsamer. Direkte Steuerleitungen ermöglichen außerdem den parallelen Zugriff auf mehrere Register.
Zusätzlich werden Registeradressen in sogenannten Opcodes codiert. Ein Opcode ist der Teil eines Maschinenbefehls, der unter anderem festlegt, welche Operation ausgeführt wird und welche Register beteiligt sind. Da die Breite von Opcodes begrenzt ist, ist auch die Zahl der Registeradressen begrenzt, die darin codiert werden können. Mehr Register würden daher nicht nur die technische Adressierung erschweren, sondern auch mehr Bits in den Befehlen erfordern.
Beispiele verschiedener Architekturen
Die im Artikel aufgeführte Tabelle vergleicht die Anzahl der Ganzzahlregister für die Integer-ALU und der Gleitkommaregister für die FPU verschiedener häufig verwendeter Rechnerarchitekturen:
- x86: 8 Ganzzahlregister und 8 Gleitkommaregister
- x86-64: 16 Ganzzahlregister und 16 Gleitkommaregister
- Itanium: 128 Ganzzahlregister und 128 Gleitkommaregister
- UltraSPARC: 32 Ganzzahlregister und 32 Gleitkommaregister
- MIPS: 32 Ganzzahlregister und 32 Gleitkommaregister
- POWER: 32 Ganzzahlregister und 32 Gleitkommaregister
- Alpha: 32 Ganzzahlregister und 32 Gleitkommaregister
- 6502: 3 Ganzzahlregister und 0 Gleitkommaregister
- PICmicro: 1 Ganzzahlregister und 0 Gleitkommaregister
- ARM: 16 Ganzzahlregister und 16 Gleitkommaregister
Bei der x86-Architektur werden Stack- und Indexregister zu den allgemeinen Registern gezählt, obwohl nur eine begrenzte Zahl von Operationen mit ihnen zulässig ist. Auch andere Architekturen können die Verwendbarkeit einzelner Register einschränken.