Die Register-Bank (englisch Register File) ist die Registerdatei der CPU: eine kleine, extrem schnelle Ansammlung von Speicherzellen direkt im Prozessorkern. Sie enthält die allgemeinen Register, die der Instruktionssatz (ISA) als architektonische Register definiert — etw 32 Register bei RISC-V oder ARM und 16 bei x86-64. Auf sie greift praktisch jede Rechenoperation zu.

Von der Pipeline angebunden

In der klassischen Pipeline liest die ID-Stufe die Operanden aus der Register-Bank und die WB-Stufe schreibt das Ergebnis zurück. Damit mehrere Stufen gleichzeitig zugreifen können, besitzt die Registerdatei mehrere Ports: Die MIPS-Lehrbuch-Pipeline braucht 2 Lese- und 1 Schreibport, superskalare Kerne deutlich mehr (etwa 8 Lese- und 4 Schreibports bei einer 4-fach-Pipeline). Jeder Port bedeutet zusätzliche Verdrahtung — die Portzahl ist ein Kompromiss zwischen Parallelität und Fläche.

Die schnellste Stufe der Speicherhierarchie

Ein Registerzugriff dauert genau einen Takt und ist damit der schnellste Speicherzugriff der CPU — noch vor dem L1-Cache-Speicher. Die Speicherhierarchie verläuft von den Registern über L1/L2/L3-Cache bis zum Hauptspeicher: je weiter außen, desto größer, aber auch langsamer. Programmcode, der es schafft, Werte in Registern zu halten statt sie in den Speicher zu schreiben, läuft entsprechend schneller — die optimale Verteilung auf die architektonischen Register ist die Aufgabe der Registerallokation im Compiler.

Architektonische und physische Register

Die ISA definiert die architektonischen Register (z.B. RISC-V: x0–x31, wobei x0 fest auf 0 verdrahtet ist; x86-64: RAX–R15). Moderne Out-of-Order-Kerne besitzen jedoch deutlich mehr physische Register (oft 150–250) und benennen die architektonischen Namen zur Laufzeit um (Register-Renaming). Dadurch können mehrere Versionen derselben logischen Variablen gleichzeitig existieren, obwohl die architektonische Register-Bank nur einen Satz vorgibt — die Umbenennung beseitigt Daten-Hazards wie WAR/WAW und ist die Grundlage für die parallele Ausführung in der Mikroarchitektur.

Sonderregister

Neben den allgemeinen Registern verwaltet die CPU Spezialregister: den Program Counter (Befehlszähler), den Stack Pointer und das Status-/Flag-Register (Ergebnis-Bits wie Carry und Zero). Auch sie sind Teil der Registerdatei beziehungsweise eng an sie angebunden.

Abgrenzung: Die Registerallokation ist Software — der Compiler entscheidet, welche Variablen in welche Register wandern. Die Register-Bank ist dagegen die physische Hardware-Struktur, die diese Entscheidung zur Ausführung bringt. Der Opcode einer Instruktion adressiert die Register-Bank über die Registerfelder des Befehls. Ein Registerzugriff der CPU ist Teil der Maschinensprache-Ausführung.