Als Registersatz (englisch Register Set) bezeichnet man die Menge aller Register eines Mikroprozessors. Die Menge derjenigen Register, welche durch Programme direkt angesprochen werden können, bezeichnet man auch als das Programmiermodell eines Prozessors. Über die Register des Programmiermodells hinaus kann es weitere Register geben, die nur prozessorintern verwendet werden. Diese werden auch als Hilfsregister bezeichnet.
Man unterscheidet innerhalb eines Registersatzes drei Typen von Registern:
- Datenregister zur Zwischenspeicherung von Operanden und Rechenergebnissen
- Adressregister zur Adressierung von Operanden und Befehlen
- Spezialregister für unterschiedliche Anwendungen, z. B. Programmzähler oder Stackpointer
Gründe für die geringe Anzahl von Registern in einem Mikroprozessor
Die Zahl der Register in einem Prozessor ist – verglichen mit der heutigen Größe des Hauptspeichers, selbst verglichen mit der Größe heute üblicher Cache-Speicher – ausgesprochen gering. Der Grund für diese geringe Anzahl hat im Wesentlichen mit Adressierungsproblemen bei größeren Registeranzahlen zu tun. Erhöht man die Anzahl der Register, so benötigt man früher oder später einen Adressdecoder für den Zugriff auf einzelne Zellen. Damit aber verliert man bereits – verglichen mit dem Zugriff über direkte Steuerleitungen, der zudem parallel auf mehrere Register erfolgen kann – extrem viel Zeit. Darüber hinaus werden Registeradressen in sogenannten Opcodes verwendet. Die Breite von Opcodes ist limitiert, so dass sich auch eine Begrenzung der codierbaren Registeradressen ergibt.
Beispiele
Diese Tabelle zeigt die Anzahl der Register verschiedener, häufig verwendeter Rechnerarchitekturen. Bei der x86-Architektur werden die Stack- und Indexregister zu den allgemeinen Registern gezählt, obwohl nur eine begrenzte Zahl von Operationen darauf zulässig ist. Andere Architekturen kennen teilweise auch Einschränkungen auf der Verwendbarkeit einzelner Register.
Architektur | Ganzzahlregister (Integer-ALU) | Gleitkommaregister (FPU) |
---|---|---|
x86 | 8 | 8 |
x86-64 | 16 | 16 |
Itanium | 128 | 128 |
UltraSPARC | 32 | 32 |
POWER | 32 | 32 |
Alpha | 32 | 32 |
6502 | 3 | 0 |
PICmicro | 1 | 0 |
ARM | 16 | 16 |