Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Ansätze der Optimierung per Hardware (SMT Fortsetzung)

Simul­ta­neous Mul­ti-Thre­a­ding (Fort­set­zung)

Regis­ter Renaming
Das sog. Regis­ter Ren­aming befin­det sich seit eini­ger Zeit in allen Mikro­pro­zes­so­ren. Die RR-Logik benennt die acht GPRs (Gene­ral Pur­po­se Regis­ters) auf phy­si­ka­lisch end­lich vor­han­de­ne Regis­ter um. Dadurch wird die Ver­wen­dung des Stack opti­miert, auf dem nicht mehr der Inhalt aller Regis­ter son­dern ledig­lich deren phy­si­ka­li­sche Adres­se gespei­chert wer­den muss. Der Pen­ti­um III hat­te hier jedoch einen schwe­ren Bug, der die­ses Fea­ture manch­mal unnütz mach­te und den Pro­zes­sor enorm aus­brems­te, der sog. “Par­ti­al Regis­ter Stall”.
Die eigent­li­che Umwand­lung der somit nur noch vir­tu­ell vor­han­de­nen GPRs erfolgt mit Hil­fe einer sog. RAT (Regis­ter Allo­ca­ti­on Table, zu deutsch etwa Regis­ter Bele­gungs­ta­bel­le). Da jeder logi­sche Mikro­pro­zes­sor sei­ne eige­nen Regis­ter hat, benö­tigt er auch sei­ne eige­ne RAT, die daher dop­pelt vor­han­den ist.

Ins­truc­tion Scheduling
Hier liegt das eigent­li­che Herz der Out-of-Order Exe­cu­ti­on Engi­ne. Die­se sorgt dafür, dass die Instruk­tio­nen, sobald die ent­spre­chen­den Rechen­ein­hei­ten ver­füg­bar sind, wei­ter­ge­lei­tet wer­den, unab­hän­gig vom eigent­li­chen Pro­gramm­fluss. Die ein­zi­ge Ein­schrän­kung sind von­ein­an­der abhän­gi­ge Instruk­tio­nen. Rech­net bei­spiels­wei­se Instruk­ti­on A mit dem Ergeb­nis aus Instruk­ti­on B, so kann A logi­scher­wei­se nicht vor B aus­ge­führt werden.

Der Ins­truc­tion Sche­du­ler emp­fängt alle Instruk­tio­nen und küm­mert sich um die zeit­ge­rech­te Zutei­lung an die Rechen­ein­hei­ten. Genau genom­men sind es fünf Ins­truc­tion Sche­du­ler, die zusam­men pro Takt­zy­klus bis zu sechs µOps durch­rei­chen kön­nen. Jeder Sche­du­ler ver­fügt über eine eige­ne Sche­du­ler Queue, wel­che sich die bei­de logi­schen Pro­zes­so­ren tei­len müs­sen. Hier­bei wird nicht zwi­schen µOps des einen oder ande­ren Pro­zes­sors bei der Zutei­lung ent­schie­den, ledig­lich der Sta­tus der Instruk­tio­nen sowie die Ver­füg­bar­keit der Rechen­ein­hei­ten spie­len eine Rol­le. Um jedoch Gleich­heit zu wah­ren, sind die Queu­es par­ti­tio­niert, jeder Pro­zes­sor kann also nur eine bestimm­te Anzahl an Ein­trä­gen belegen.