Software für Multi-Core-CPUs optimieren

Programmieren für Multi-Core-Prozessoren

Ratespielchen bei der Parallelverarbeitung

In der „Speculative Execution“ werden die Instruktionen bereits im Vorfeld ausgeführt, selbst wenn noch nicht sicher ist, ob die Instruktion tatsächlich benötigt wird. Dies gilt immer dann, wenn Verzweigungen oder Sprünge die lineare Programmausführung unterbrechen.

Bei der „Branch Prediction“ versucht man das Sprungziel bei einer Codeverzeigung vorauszusehen, wie sie etwa bei den Instruktionen eines „If-else“ oder „Switch-case“ auftritt. Dies basiert auf der Analyse der vergangenen Befehle, unterstützt durch eine Berechnung der Wahrscheinlichkeit für den nachfolgenden Code. Ist das Sprungziel bereits im Vorfeld bekannt, so kann die weitere Ausführung des Codes an dieser Stelle auch früher einsetzen. „Branch Prediction“ wird meist in Verbindung mit der „Speculative Execution“ eingesetzt.

SIMD (Single Instruction, Multiple Data) ermöglicht die parallele Bearbeitung von Daten mit äquivalentem Aufbau. Die SIMD-Konzepte wurden ursprünglich bei den Großrechnern und Supercomputern angewandt und fanden dann auch Eingang in die x86-Architektur. SIMD ermöglicht die gleichzeitige Bearbeitung der parallelen Datenströme. Eingesetzt wird SIMD vor allem bei der Bearbeitung von Bild-, Ton- und Videodaten.