Hyper-Threading: Optimierungen und Fallen

Fazit

Die gezeigten Fallen haben ihre Ursache nicht im Hyper-Threading. Sie gelten für alle Mehrprozessor-Systeme. Doch bislang waren SMP-Systeme eher selten, kaum ein Entwickler testet seine selbst geschriebenen Programme darauf. Da Intel aber jeden zukünftigen Prozessor mit Hyper-Threading ausstatten wird, müssen sich die Entwickler jetzt den neuen Anforderungen stellen.

In erster Linie gilt es, Thread-orientierte Programme MP-sicher zu machen. Hierzu muss jeder Zugriff auf gemeinsame Variablen abgesichert werden, wenn deren Wert auch nur an einer Stelle in einem Thread verändert wird. Erst im zweiten Schritt kann man daran gehen, die Geschwindigkeit zu erhöhen.

Die gezeigten Beispiele sind sicherlich Extrema, da sie ohne einen Workload arbeiten und nur die Synchronisation der Threads testen. In der Praxis fallen die Geschwindigkeitsunterschiede zwischen den verschiedenen Verfahren deutlich geringer aus. Auch liefern Threads mit Workloads auf Hyper-Threading-Systemen weitaus bessere Resultate als auf Single-CPUs - im Gegensatz zu den gezeigten leeren Threads.

Für eigene Experimente bieten wir den kompletten Sourcecode kostenlos als Download an. Den entsprechenden Link finden Sie in der rechten Navigation. Neben allen für diesen Beitrag verwendeten Testroutinen und dem kompilierten Programm finden Sie in dem Zip-File auch ein für Benchmark- und Timing-Zwecke hervorragend geeignetes universelles Timer-Objekt. (ala)