Software für Multi-Core-CPUs optimieren

Programmieren für Multi-Core-Prozessoren

Der nächste Schritt: Hyper-Threading

Einen Schritt weiter als Instruction Level Parallelism gehen die Techniken des Hyper-Threading (Hyper-Threading-Technology - HTT), wie es Intel in seinen CPUs der Xeon und Pentium-4-Reihe implementierte. Hierbei wird durch Hardware-Unterstützung in der CPU eine bedingte Parallelverarbeitung realisiert.

Der Leistungsgewinn wird dadurch erzielt, dass CPU-Bestandteile wie der Decoder dupliziert werden. Zu diesen duplizierten Einheiten der CPU zählen all jene, die den Status der CPU und ihrer Ausführung speichern, damit also auch CPU-Register. Dies sind unter anderem die Control Register mit den Flags und die allgemeinen Arbeitsregister.

Nicht dupliziert werden die Ausführeinheit und die ALU. Die Duplizierung soll dafür sorgen, dass die Ausführungseinheit (Execution Unit) der CPU besser ausgelastet wird. Ohne Hyper-Threading würde beispielsweise bei einem Cache-Fehler (Cache-Miss) die Execution Unit untätig (idle) sein, bis der Cache gefüllt ist.

Begleitend dazu sind beim Hyper-Threading die Registersätze in den CPUs verdoppelt. Somit ist eine parallele Ausführung der Operationen möglich. Nach Angaben von Intel wird beim Pentium 4 durch Hyper-Threading eine Leitungssteigerung von bis zu 30 Prozent gegenüber ansonsten identischen Pentium 4 ohne Hyper-Threading erreicht.

Gegenüber dem Betriebssystem erscheint ein Pentium-4 mit Hyper-Threading als zwei Prozessoren. Hyper-Threading dient aber auch wie ILP der parallelen Abarbeitung eines Programms auf einer CPU. Trotz der Einführung des Multi-Core-Designs wird Hyper-Threading auch in Zukunft existieren. In dem für dieses Jahr angekündigten Nehalem-Design wird Hyper-Threading erneut enthalten sein und soll in bis zu 8 Kernen mindestens 16 Threads parallel ausführen.