10 Hyperthreading echte Cores identifizieren in MSI Afterburner

Bullz

Vice Admiral Special
Mitglied seit
07.07.2007
Beiträge
986
Renomée
20
Hi,

mir werden 8 CPUs im Afterburner angezeigt. Von dem was ich gegoogelt habe vermute ich 1,3,5,7 echt und 2,4,6,8 nicht echt.

Bzw in Windows lasse ich mir die logischen Prozessoren anzeigen und dort bin ich auch noch am Rätselraten welche echt sind.

danke
 
Das kann man so nicht sagen. Bei einer CPU mit SMT alias HyperThreading ist nicht ein Kern echt und der andere unecht. Es ist einfach so, dass je Kern zwei Threads ausgeführt werden können, daher listet das Betriebssystem zwei virtuelle Kerne je echtem Kern. Beide sind aber gleichberechtigt und teilen sich schlicht die Ressourcen von einem echten Kern.

Wenn Deine Frage darauf hinausläuft, wie Du Last möglichst ideal auf die realen Kerne verteilst und nicht versehentlich Last auf zwei virtuelle Kerne eines realen Kern legst, dann war Deine Vermutung richtig: wenn Du die Kerne 1, 3, 5, 7 nutzt, verteilst Du die Last auf 4 echte Kerne. Wenn Du es mit 2, 4, 6, 8 machst aber genauso, das macht keinen Unterschied. Ungünstig wäre nur, wenn Du Last auf 1, 2, 3, 4 legen würdest, 5, 6, 7, 8 aber brachliegen ließest. Das wäre für die Leistung am schlechtesten.

Der Sinn von HyperThreading ist die bessere Ausnutzung der vorhandenen CPU-Ressourcen. Beispiel:

- eine Aufgabe dauert, sagen wir, 1 Minute. Wenn Du nur einen Kern nutzt, werden pro Stunde also 60 Aufgaben fertig. So weit, so logisch, oder?

- wenn Du alle realen Kerne nutzt - bei einem Core i7 also vier - dauert eine Aufgabe auch 1 Minute. Da allerdings 4 gleichzeitig laufen, werden jede Stunde nicht 60 Aufgaben fertig, sondern 4x 60, also 240 Aufgaben pro Stunde.

- wenn Du alle acht virtuellen Kerne nutzt, werden 8 Aufgaben gleichzeitig bearbeitet. Da sich die virtuellen Kerne so gegenseitig ausbremsen, dauert eine Aufgabe nicht mehr nur 1 Minute, sondern z.B. 1:40 Minuten. Da nun aber 8 gleichzeitig berechnet werden statt 4, ist der Gesamtdurchsatz dennoch höher als mit nur 4 echten Kernen. Die Durchlaufzeit je Aufgabe erhöht sich in unserem Beispiel von 1 Minute auf 1:40 Minuten, der Gesamtdurchsatz jedoch steigt von 240 auf 288 Stück pro Stunde. Das ist der Sinn hinter HyperThreading :)
 
Zuletzt bearbeitet:
Optimal wäre es wohl jeweils möglichst unterschiedliche Aufgaben per HT auf eine CPU zu verteilen. Zum Beispiel:

CPU 0 Thread 0: Integer Berechnungen
CPU 0 Thread 1: Floating Point Berechnungen

Damit könnten alle Recheneinheiten des Kerns optimal ausgelastet werden, weil sie sich nicht gegenseitig behindern würden. In wie weit z.B. der Scheduler von Microsoft das erkennt und berücksichtigt wäre eine Frage deren Antwort ich leider nicht kenne.
 
Bei meinem Core i5 520 UM gehören 2 benachbarte Threads zu 2 verschiedenen Cores, also 1 und 2 liegen auf 2 unterschiedlichen Kernen. 1 und 3 sowie 2 und 4 gehören zum jeweils gleichen Kern. Das habe ich mittels Core2MaxPerf herausgefunden, mit dem man einzelne Threads belasten kann und dann mittels TMonitor die Frequenz ausgelesen. Wenn man z.B. Thread 1 und 2 belastet hat, taktete die CPU mit 1,33 - 1,46 Ghz, dem Turbotakt, mit dem 2 belastete Kerne takten. Wenn man Core 1 und 3 oder 2 und 4 belastete, taktete die CPU mit 1,73 - 1,86 Ghz, dem Turbotakt für 1 belasteten Kern.

Sharpy
 
Zuletzt bearbeitet:
Zurück
Oben Unten