Bei den ersten CPUs mit HT hat es tatsächlich nichts gebracht, HT zu nutzen, zumindest nicht für smp. Heute ist das etwas anders. Programme, wo Ergebnisse der einzelnen Threads/Tasks völlig unabhängig sind, profitieren von HT indem sie die Recheneinheiten stärker auslasten. Ein typisches Beispiel ist Cinebench 15, da kann man das licht testen. Tatsächlich steigt auch der Energieverbrauch an - so um ca. 20% bei Rechnern, wo die CPU der hauptsächliche Verbraucher ist. Das Problem beim Schach ist, dass die Mehrleistung an Rechenleistung vermindert wird durch die Tatsache, dass die Ergebnisse teilweise voneinander abhängig sind. Bei weing Cores scheint die Mehrleistung zu überwiegen, bei vielen Cores die Verluste. Und dann gibt es noch den Effekt, dass bei einigen CPUs bei Nutzung aller Threads die TDP überschritten wird und deshalb der Turbo nicht komplett ausgeschöpft werden kann. Dies ist aber bei neueren CPUs eher nicht mehr der Fall - allerdings nur beim Schach, weil da viele sehr einfache instruktionen verwendet werden.
@jdl
Bei Windows kann ein Programm selbst seine eigenen Threads definierten Cores zuordnen - der Befehl ist in C++ setthreadaffinitymask. Von extern kann man das nicht - da kann man nur dem ganzen Programm eine Maske zuordnen, was auch sehr gut funktioniert. Falls ein Programm allerdings keine Threads, sondern Tasks verwendet (einziges mir bekanntes Beispiel beim Schach ist Rybka), kann man von extern jeden Task einem Core zuordnen, was tatsächlich eine gewisse Steigerung der Performance (lt. meinen Messungen 1-2%) bringt.