Hyperthreading - Leistung bei Single Core halbiert?

eXtrYme

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
392
Hallo liebe Computerbase Community,

ich habe eine Frage zum Hyperthreading bei den Intel i7-2 Prozessoren.
Ich habe mir nun ein neues Notebook zugelegt, dass einen i7 verbaut hat. Dieser zeigt mir im Taskmanager an, dass ich 8 Kerne besitze. Ich weiß natürlich, dass das totaler Quatsch ist... Aber ich habe mich mal darüber informiert, was dieses Hyperthreading ist... Und dann habe ich herausgefunden, dass das Hyperthreading einfach nichts anderes macht als in den Pausen, die zwangsweise entstehen wenn die verarbeiteten Daten auf den Speicher warten, etwas anderes weiter zu rechnen...
Das ganze wird wohl funktionieren, wenn man Programme hat die Multicore-Anwendungen sind oder wenn der PC komplett ausgelastet ist und noch mehr gestartet werden soll, weil das dann einfach in den Pausen mitläuft.

Allerdings habe ich eine essentielle Frage... ich habe ein Computerspiel, dass nur einen einzigen Kern auslastet. Und zwar nur einen einzigen von den 8 Stück die mir angezeigt werden. Im Taskmanager wird mir dann als Vollast bei dem Kern 12% Gesamtlast angezeigt.

Wenn ich mir da jetzt Gedanken drum mache frage ich mich, ob die Leistung der Kerne halbiert wird? Also wenn jetzt einer meiner Kerne mit 3 Ghz laufen würde und jeder Kern wird in 2 Kerne aufgeteilt, dann dürfte ja der richtige Kern nur 1,5Ghz zum rechnen haben und der virtuelle Kern auch nur 1,5Ghz. Was ist jetzt mit dem Programm, dass nur auf einem Kern läuft? Rechnet das dann auch nur mit der halben Kern-Leistung? Oder ist das Hyperthreading so schlau und gibt dann dem einen ausgelasteten Kern die vollen 3 Ghz? Und somit ist das nur ein Berechnungsfehler des Taskmanagers, weil er denkt es gibt 8 Kerne, einer wird voll ausgelastet 100% / 8 = 12% Auslastung...

Also meine Frage ist einfach, läuft ein SingleCore Programm, dass einen Kern vollkommen auslastet langsamer auf einem Prozessorkern mit 3Ghz wo Hyperthreading aktiv ist, als auf einem wo Hyperthreading deaktiviert ist?


Vielen Dank!
 
eXtrYme schrieb:
Also meine Frage ist einfach, läuft ein SingleCore Programm, dass einen Kern vollkommen auslastet langsamer auf einem Prozessorkern mit 3Ghz wo Hyperthreading aktiv ist, als auf einem wo Hyperthreading deaktiviert ist?

Kurz und knapp: Nein!
 
wenn nur auf einem logischen kern last anliegt bekommt dieser natürlich nahezu die volle rechenzeit und nicht nur die hälfte.
die doppelten register dienen der besseren auslastung der langen pipeline wie du schon richtig beschrieben hast und es wird keine wartezeit für nen leeren kern benötigt.

idealerweise hast du keinen leistungsnachteil durch hyperthreading, es kann jedoch mal passieren wenn durch was anderes last erzeugt wird und dein os es nicht gebacken bekommt die auf nen völlig freien kern zu packen.
sowas ähnliches ist dem bulldozer zum verhängnis geworden in den tests, der auch keine vollständigen physischen kerne mehr hat, sondern nur manche einheiten doppelt und andere teilen sich mehrere logische kerne.
 
Und was passiert wenn ich im Taskmanager dann das Programm z.B. CPU 7 zuweise? Kann es dann sein, dass CPU6 der logische Kern ist und CPU7 der virtuelle Bruder und ich das Programm dann dem virtuellen Kern zuweise, und damit das Programm weniger Leistung bekommt? Oder merkt der Prozessor das und definiert dann einfach CPU 7 als logischen Kern und das Programm bekommt wieder die volle Leistung?
 
wertewandel schrieb:
sowas ähnliches ist dem bulldozer zum verhängnis geworden in den tests, der auch keine vollständigen physischen kerne mehr hat, sondern nur manche einheiten doppelt und andere teilen sich mehrere logische kerne.

Is so nicht richtig, die BD haben nur 4 Floatingpoint Kerne, aba 8 Integer Kerne, dh. im Server bereich rocken die recht gut, da dieser mehr mit Integer Werten arbeitet, bei Spielen stinken sie jedoch den starken Sandybridges vor allem unter sicht auf den Stromvebrauch ab.

So zum TE:
Der Prozessor "merkt" wenn eine Anwendung nur einen Kern benötigt, und gibt diesem dann auch die volle Power. Dieser Ansatz wird mit der Turboboost Technologie verfolg, diese Taktet automatisch einen Kern höher und die anderen (weniger/nicht genutzten) Kerne runter, somit hast du noch mehr Power für deinen Thread auf dem "aktiven" Kern.

LG nailos
Ergänzung ()

eXtrYme schrieb:
Und was passiert wenn ich im Taskmanager dann das Programm z.B. CPU 7 zuweise? Kann es dann sein, dass CPU6 der logische Kern ist und CPU7 der virtuelle Bruder und ich das Programm dann dem virtuellen Kern zuweise, und damit das Programm weniger Leistung bekommt? Oder merkt der Prozessor das und definiert dann einfach CPU 7 als logischen Kern und das Programm bekommt wieder die volle Leistung?

Es gibt keinen "virtuellen" Kern wie du dir das vorstellst, das is eigentlich nur marketing.
Im endeffekt wird nur in der Wartezeit eine Rechnung eingeschoben, das wirkt dann so als wäre die Zwischenrechnung von nem anderen Kern gemacht worden.
Beispiel: Kern 1 von 4 physischen hat was zu tun, muss auf ein Ergebnis warten, die anderen 3 Kerne sind auch grad beschäftigt (zB mit der Berechnung des Ergebnisses auf das Kern 1 gerade wartet), also wird ein Thread aus der Liste der wartenden Threads geholt, schnell berechnet und wenn der Hauptthread vom Kern 1 dann sein Ergebnis hat auf das er gewartet hat macht er weiter.
Da sind keine 8 Kerne, das steht nur im Taskmanager, damits cool aussieht ;)

Achso, am besten stellst du da gar nix rum mit zuweisungen und so, im schlimmste Fall nimmst du damit dem Betriebssystem die Rechnezeit oder die Kerne weg und du hast weniger Leistung als du ohne hin schon hast.
 
Zuletzt bearbeitet:
trenn dich von der ansicht, dass core0 eine physische und core1 der dazugehörige virtuelle ist...
core0 und 1 sind im endeffekt einer, stellen halt 2 inputs/leitungen zum core dar.

egal welche leitung grad power braucht, sie bekommt das maximale was möglich ist von dem echten kern. wenn beide leitungen volllast schieben, ist der (eine echte) kern zum maximum ausgelastet. logisch ist auch, dass du dann keine 100% leistung hast (im vergleich zu einem einfachen kern ohne HT), aber auch keine 200%. durch ht bekommt man theoretische 20-25% mehrleistung durch die verkürzten pausen.
 
Zurück
Oben