Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Mögliche Hebel zum Zweck der Leistungssteigerung (Pipelining)

Pipe­lining
Eine wei­te­re Eigen­schaft, ohne die moder­ne Pro­zes­so­ren nur einen Bruch­teil ihrer Leis­tung ent­fal­ten könn­ten, ist das sog. Pipe­lining. Es basiert auf dem Prin­zip der gegen­sei­ti­gen Unab­hän­gig­keit der ein­zel­nen Abar­bei­tungs­schrit­te eines von-Neu­mann Pro­zes­sors. Die­ser arbei­tet die Zyklen des Ins­truc­tion-Fetch, Ins­truc­tion-Decode, Ins­truc­tion-Exe­cu­te und Ins­truc­tion-Reti­re­ment strikt seri­ell ab, wohin­ge­gen ein moder­ner Pro­zes­sor die­se drei Din­ge theo­re­tisch gleich­zei­tig erle­di­gen kann, selbst­ver­ständ­lich für drei unter­schied­li­che Instruktionen.

In der Pra­xis sieht dies bei einem moder­nen Mikro­pro­zes­sor fol­gen­der­ma­ßen aus: Wäh­rend der aktu­el­le Befehl aus­ge­führt wird (Ins­truc­tion Exe­cu­te), wird gleich­zei­tig die vor­her­ge­hen­de Instruk­ti­on in den L1 Data Cache geschrie­ben (Ins­truc­tion Reti­re­ment), die nach­fol­gen­de Instruk­ti­on deco­diert (Ins­truc­tion-Decode) und die über­nächs­te Instruk­ti­on bereits aus dem Pro­gramm­fluss aus­ge­le­sen (Ins­truc­tion-Fetch). Somit müs­sen die Befehls­ein­hei­ten im Opti­mal­fall nie­mals auf Daten war­ten: Sobald sie mit der Berech­nung einer Instruk­ti­on fer­tig sind, steht bereits die nächs­te an.

Branch Pre­dic­tion
Die letz­te erwäh­nens­wer­te Opti­mie­rung moder­ner Pro­zes­so­ren ist die Branch Pre­dic­tion, zu Deutsch: Sprungvorhersage.
Sprün­ge stel­len für Mikro­pro­zes­so­ren mit Pipe­line ein ernst­haf­tes Pro­blem dar und beschäf­ti­gen welt­weit hun­der­te von Infor­ma­ti­kern und Inge­nieu­ren. Bei Sprün­gen im Pro­gramm­fluss wird unter­schie­den zwi­schen “con­di­tio­nal jump” und “uncon­di­tio­nal jump”, zu Deutsch “Beding­ter Sprung” und “Unbe­ding­ter Sprung”. Letz­te­re sind leich­ter zu erken­nen als Ers­te­re, schließ­lich gibt es beim Beding­ten Sprung eine Bedin­gung, deren Erfül­lung oder Nicht­er­fül­lung über den wei­te­ren Pro­gramm­fluss entscheidet.
Tritt solch ein unver­her­ge­se­he­ner Sprung im Pro­gramm­fluss auf, so muss bei einem moder­nen Mikro­pro­zes­sor die gesam­te Pipe­line gelöscht und neu gefüllt wer­den, ein Vor­gang den man “Pipe­line-Flush” oder auch “Flus­hing the Pipe­line” nennt, zu Deutsch etwa “Aus­spü­len der Pipe­line”. Je län­ger die Pipe­line ist, des­to län­ger dau­ert logi­scher­wei­se die­ser Vor­gang, daher kommt der Sprung­vor­her­sa­ge bei moder­nen und zukünf­ti­gen Pro­zes­so­ren mit 20- und mehr-stu­fi­gen Pipe­lines eine enor­me Bedeu­tung zu, deren Unter­schät­zung für einen Mikro­pro­zes­sor den frü­hen Tod bedeu­ten kann.

Eine Sprung­vor­her­sa­ge (Eigent­lich ist dies eine fal­sche Über­set­zung, “branch pre­dic­tion” lau­tet kor­rekt über­setzt “Abzwei­gungs­vor­her­sa­ge” oder “Ver­zwei­gungs­vor­her­sa­ge”) ver­sucht zu erra­ten, wel­che Rich­tung der Pro­gramm­fluss bei einem beding­ten Sprung ein­le­gen wird. Hier­bei wer­den die ver­schie­de­nen Ver­zwei­gungs­mög­lich­kei­ten des Pro­gramm­flus­ses genau­es­tens geprüft (der IBM Power4 nimmt hier gar drei Prü­fun­gen par­al­lel vor) und nach Wahr­schein­lich­kei­ten gewich­tet. Die Ver­zwei­gung mit der höchs­ten Wahr­schein­lich­keit wird anschlie­ßend als wei­ter Ver­lauf des Pro­gramms defi­niert und die Pipe­line mit den ent­spre­chen­den Instruk­tio­nen gefüllt.
Doch wie das Wort “Wahr­schein­lich­keit” schon sagt, gibt es kei­ne Garan­tie, dass der Pro­gramm­fluss die vor­her­ge­sag­te Rich­tung auch wirk­lich ein­schlägt. Somit wird es immer den Fall geben, dass auf­grund Ver­sa­gens der Sprung­vor­her­sa­ge-Logik, die Pipe­line aus­ge­spült und neu gefüllt wer­den muss.
Die per­fek­te Sprung­vor­her­sa­ge, mit 99% Treff­si­cher­heit (oder gar mehr), hat bis­her noch nie­mand kon­stru­ie­ren kön­nen, Infor­ma­ti­ker und Inge­nieu­re rund um den Glo­bus beschäf­ti­gen sich mit dem Modell der “Sprung­vor­her­sa­ge”. In ange­se­he­nen wis­sen­schaft­li­chen Maga­zi­nen wie dem Dr. Dobbs Jour­nal oder dem ACM Com­pu­ting Sur­vey erschei­nen regel­mä­ßig wis­sen­schaft­li­che Publi­ka­tio­nen, die sich dem The­ma anneh­men und mög­li­che Lösungs­an­sät­ze vorschlagen.