15 Jahre TecChannel - der beliebteste Artikel 1999

So funktioniert ein Prozessor

Sprungvorhersage

Die Abhängigkeiten der Befehle untereinander sowie Sprungbefehle machen den Pipelines und superskalaren Architekturen zu schaffen. Je mehr parallel vorweggreifend erledigt wird, desto mehr Arbeit ist beispielsweise bei einem Sprungbefehl in ein anderes Programmsegment nachzuholen. Die ALUs müssen dann warten, bis sich die neuen Befehle durch die lange Pipeline gequält haben.

Eine Möglichkeit das Problem zu mindern, ist das Stoppen der Pipeline (Stalling) bis die Ausführungseinheit weiß, wie es weitergeht. Sinnvoller ist der Versuch einer Sprungvorhersage, bei der die Hardware den Programmcode auf Verzweigungen prüft und das wahrscheinlichste Ziel anvisiert. Geht die Sache schief, kommt es eben trotzdem zur Wartepause.

Dynamische Sprungvorhersage

Die Sprungvorhersage kann auf einfachen Regeln basieren: Beispielsweise ist es bei einem Sprungbefehl gegen den Befehlsstrom sehr wahrscheinlich, dass er mehrheitlich tatsächlich ausgeführt wird. Diese Annahme basiert auf der Feststellung, dass Rückwärtssprünge im Programmcode oft am Ende von Schleifen stehen. Und Programmschleifen werden in der Regel mehr als nur einmal durchlaufen. Bei Vorwärtssprüngen ist eine derart einfache Vorhersage kaum noch zu treffen. Hier kann man nur von der statistischen Erkenntnis ausgehen, dass die meisten bedingten Vorwärtssprünge nicht ausgeführt werden.

Sinnvoller ist deshalb eine dynamische Sprungvorhersage ohne feste Regel. Mittels einer BHT versucht die Hardware, eine begrenzte Zahl von bedingten Sprungbefehlen zu protokollieren. Kommt es zur Sprungausführung, werden dem Befehl in der BHT entsprechende Hinweis-Bits zugeordnet. Diese Bits wertet die Hardware bei späteren bedingten Sprungbefehlen aus, um auf dieser Basis eine Vorhersage zu treffen. Ähnlich wie beim Cache gilt es hier Probleme mit der Assoziativ ität des Inhalts zu berücksichtigen. Deshalb ist auch bei BHTs eine Mehrweg-Struktur üblich. Bei einer ausreichend großen Tabellengröße und Assoziation erzielt man mit BHTs sehr gute Ergebnisse.