Ansätze der Optimierung per
Hardware (Fortsetzung)
Simultaneous Multi-Threading
(Fortsetzung)
Register Renaming
Das sog. Register Renaming befindet sich seit einiger Zeit in allen Mikroprozessoren.
Die RR-Logik benennt die acht GPRs (General Purpose Registers) auf physikalisch
endlich vorhandene Register um. Dadurch wird die Verwendung des Stack optimiert,
auf dem nicht mehr der Inhalt aller Register sondern lediglich deren physikalische
Adresse gespeichert werden muss. Der Pentium III hatte hier jedoch einen schweren
Bug, der dieses Feature manchmal unnütz machte und den Prozessor enorm
ausbremste, der sog. "Partial Register Stall".
Die eigentliche Umwandlung der somit nur noch virtuell vorhandenen
GPRs erfolgt mit Hilfe einer sog. RAT (Register Allocation Table, zu deutsch
etwa Register Belegungstabelle). Da jeder logische Mikroprozessor seine eigenen
Register hat, benötigt er auch seine eigene RAT, die daher doppelt vorhanden
ist.
Instruction Scheduling
Hier liegt das eigentliche Herz der Out-of-Order Execution Engine. Diese
sorgt dafür, dass die Instruktionen, sobald die entsprechenden Recheneinheiten
verfügbar sind, weitergeleitet werden, unabhängig vom eigentlichen
Programmfluss. Die einzige Einschränkung sind voneinander abhängige
Instruktionen. Rechnet beispielsweise Instruktion A mit dem Ergebnis aus Instruktion
B, so kann A logischerweise nicht vor B ausgeführt werden.
Der Instruction Scheduler
empfängt alle Instruktionen und kümmert sich um die zeitgerechte Zuteilung
an die Recheneinheiten. Genau genommen sind es fünf Instruction Scheduler,
die zusammen pro Taktzyklus bis zu sechs µOps durchreichen können.
Jeder Scheduler verfügt über eine eigene Scheduler Queue, welche sich
die beide logischen Prozessoren teilen müssen. Hierbei wird nicht zwischen
µOps des einen oder anderen Prozessors bei der Zuteilung entschieden,
lediglich der Status der Instruktionen sowie die Verfügbarkeit der Recheneinheiten
spielen eine Rolle. Um jedoch Gleichheit zu wahren, sind die Queues partitioniert,
jeder Prozessor kann also nur eine bestimmte Anzahl an Einträgen belegen.
Diesen Artikel bookmarken oder senden an ...