Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Intel - Automatische Lastverteilung beim Core i7?


=Floi=
2009-02-18, 09:36:39
Hallo
nutzt der core i7 mit seinen 8 virtuellen cores eigentlich zuerst alle 4 echten core aus und dann erst den zweiten jeden kerns? Geschieht das automatisch, oder nutzt er einfach die ersten cores nacheinander ohne irgendwie die last zu verteilen?

san.salvador
2009-02-18, 09:47:04
Du hast da was falsch verstanden.
Jeder Core besteht aus zwei völlig gleichwertigen Threads, nicht aus einem hübschen und einem buckligen.

[fu]121Ah
2009-02-18, 09:49:39
Hallo
nutzt der core i7 mit seinen 8 virtuellen cores eigentlich zuerst alle 4 echten core aus und dann erst den zweiten jeden kerns? Geschieht das automatisch, oder nutzt er einfach die ersten cores nacheinander ohne irgendwie die last zu verteilen?
er hat eine intelligente logik im hintergrund, die die aufgaben verteilt. allerdings spielt der scheduler vom OS ebenso eine Rolle, daher kann es vorkommen, dass statt 2 "physischer" Cores 2 logische Threads verwendet werden.

eine hardwarenahe erklärung kann ich dir nicht bieten, dafür wird sich aber sicher noch ein wissender finden ;)

Botcruscher
2009-02-18, 10:50:29
Du hast da was falsch verstanden.
Jeder Core besteht aus zwei völlig gleichwertigen Threads, nicht aus einem hübschen und einem buckligen.

Bei 4 Threads ist 1 Thread pro Kern aber hübscher als 2 Threads auf zwei Kernen. Somit sollte man theoretisch HT aussschalten sollte wenn die Anwendung weniger als 4 Kerne nutzt.

Die Idee dahinter ist einfach das sich zwei Threads auf einem Kern ausbremsen.

Trap
2009-02-18, 11:00:48
Für die Zuordnung von Threads auf CPUs ist ausschließlich das Betriebssystem zuständig.

BlackBirdSR
2009-02-18, 11:43:21
Bei 4 Threads ist 1 Thread pro Kern aber hübscher als 2 Threads auf zwei Kernen. Somit sollte man theoretisch HT aussschalten sollte wenn die Anwendung weniger als 4 Kerne nutzt.

Die Idee dahinter ist einfach das sich zwei Threads auf einem Kern ausbremsen.

Dein System hat aber leider nicht nur 4 Threads und Schluss ist. Daher wird das Betriebsystem immer alle 8 Threads nutzen.

Man könnte im Task-Manager das Spiel auf CPU 0-3 begrenzen, das wird aber nichts daran ändern, dass die anderen 4 Kerne weiter mit Aufgaben belegt werden.

Botcruscher
2009-02-18, 12:25:28
Ja. Wobei da noch entscheidend ist wieviel Last ein Thread erzeugt. Bis zu einem gewissen Punkt dürfte man nichts merken und/oder sogar eine Verbesserung feststellen.

Bleibt eben der Schritt vom theoretischen Konstrukt zum Test.

Gast
2009-02-18, 15:27:06
Oh mann, das ist doch Hypertreading, welches es seit 2002 auf pentium 4 Prozessoren gibt, und aktuell auf Atom und Core i7 Prozessoren. So lange ist das noch nicht her, habt ihr alles schon vergessen?
Ganz einfach erklärt: register sind einfach 2x pro core vorhanden, und dem OS werden auch 2 cores für jeden physikalischen core vorgegaukelt. Somit werden einen core gleichzeitig 2 threads zugewiesen (was normalerweise nicht passieren könnte), und die CPU interne logik versucht die 2 threads so effizient wie möglich auf die internen ausführungseinheiten zu verteilen. Dies hat vorteile wenn die zwei laufenden threads möglichst unterschiedliche ausführungseinheiten beanspruchen, weil dann die ausführungseinheiten welche vom ersten thread nicht genutzt werden vom zweiten thread genutzt werden können anstatt zu idlen; wenn die zwei threads aber die gleichen (oder sehr ähnliche) operationen ausführen und somit die gleichen ausführungseinheiten beanspruchen, bringt Hyperthreading gar nichts, oder wird im worst-case sogar langsamer, da zwei threads auf einer CPU verzweifelt um dieselben ressourcen kämpfen.

BlackBirdSR
2009-02-18, 15:32:23
wenn die zwei threads aber die gleichen (oder sehr ähnliche) operationen ausführen und somit die gleichen ausführungseinheiten beanspruchen, bringt Hyperthreading gar nichts, oder wird im worst-case sogar langsamer, da zwei threads auf einer CPU verzweifelt um dieselben ressourcen kämpfen.

Ideal gesehen ja, aber ein großer Vorteil vom SMT ist ja gerade, dass ein 2-. Thread in der Pipeline sitzt. Muss der erste Thread warten, stallt oder gibt es ein falsches Sprungergebnis, so muss nicht erst lange ein 2. Thread geladen werden bevor es weiter geht.
Also selbst wenn beide Threads ähnliche Funktionseinheiten nutzen wollen (und das kommt logischerweise sehr oft vor), so bleibt oft genug einer davon stehen und der andere kann die freien Resource gewinnbringend nutzen.

BSP Atom, oder der P4 :)

Gast
2009-02-18, 15:47:36
Das stimmt natürlich - ich sagte aber worst-case, nicht dass Hyperthreading in der situation grundsätzlich nichts bringen würde.
Ausserdem sind das sowieso schon zu viele details - CPUs mit Hyperthreading waren gerade mal 2 jahre lang weg vom fenster, und schon scheinen die leutchen hier alles vergessen zu haben und halten den Core i7 mit seinem geheimnisumwobenen multi-multi-core für schwarze magie ;)

BlackBirdSR
2009-02-18, 15:53:16
Das stimmt natürlich - ich sagte aber worst-case, nicht dass Hyperthreading in der situation grundsätzlich nichts bringen würde.
Ausserdem sind das sowieso schon zu viele details - CPUs mit Hyperthreading waren gerade mal 2 jahre lang weg vom fenster, und schon scheinen die leutchen hier alles vergessen zu haben und halten den Core i7 mit seinem geheimnisumwobenen multi-multi-core für schwarze magie ;)

:biggrin:
Dabei war es ja eigentlich klar, dass wir SMT bald wieder sehen würden. Die möglichen Performancegewinne sind einfach zu hoch, um sich die dazu relativ geringen Kosten einzusparen.

an Alle: Sicherlich bringt SMT Nachteile für Anwendungen wie Spiele, die noch relativ wenige Threads besitzen. Wenn es aber um Probleme geht, die man grandios in mehrere Threads zerlegen kann, dann ist SMT schon fast ein Segen. Bis Spiele so weit sind (wenn überhaupt): SMT abschalten ist für Spiele und einem native Quad-Core wohl keine schlechte Lösung.

Interessant wird es, wenn Intel die 2-Core + SMT CPUs bringt. Da sehen wir dann, ob das bei den heutigen Spielen mit minimal Support für 4+ Threads ausreicht, um die Quadcore Core2 zu schlagen.

Gast
2009-02-18, 16:07:34
Mehr als 2 cores (physikalische) halte ich für zu schade zum spielen, das wird mMn eh nur zum angeben gemacht ohne wirklich etwas zu bringen, und durch die absoluten tiefpreise der letzten jahre ermöglicht (was aber selbstverständlich gut für uns verbraucher ist - mehr für weniger ist immer gut). Ein Core 2 Duo nördlich der 3GHz getaktet sollte eigentlich immer ausreichen für spiele. 4 cores und mehr sind was für leute die richtig was mit multitasking machen, oder halt anwendungen mit sehr gut parallelisierbaren workloads einsetzen.
Welche spiele gibt es denn von 4 cores profitieren? Und damit meine ich keine mageren <25% zuwachs bei unrealistisch niedrigen grafiksettings trotz 100% mehr CPU rechenpower.

Botcruscher
2009-02-18, 16:09:58
Oh mann, das ist doch Hypertreading, welches es seit 2002 auf pentium 4 Prozessoren gibt, und aktuell auf Atom und Core i7 Prozessoren. So lange ist das noch nicht her, habt ihr alles schon vergessen?


Wir haben es eben nicht vergessen, auch nicht die Nachteile.

Damals:

"Laut Aussage von Intel kann Hyper-Threading im Multitasking-Betrieb normale Programme um 10 bis 20 %, optimierte Programme um bis zu 33 % beschleunigen.

Heute???

Und ja wir wissen das HT eine günstige Methode für mehr Auslastung ist. Wir wissen auch das HT eben kein ganzer Kern ist und somit nicht die Leistung eines ganzen Kernes bringen kann.

san.salvador
2009-02-18, 16:19:09
Wobei auch die CPU-Architektur maßgebend für die Effizienz von HTT ist. Beim Atom (in-order) bringt HTT oft gewaltig viel.

Gast
2009-02-18, 16:24:33
Nichts für ungut, ich bezog mich hauptsächlich auf den Threadersteller, dessen theorie zur auslastung der cores schon sehr... aussergewöhnlich war :D, und war ein wenig überrascht dass ihm niemand sonst die eigentlich bekannte funktionsweise dieser technologie erklärt hatte, weshalb ich das getan habe.

FlashBFE
2009-02-18, 16:42:19
Nichts für ungut, ich bezog mich hauptsächlich auf den Threadersteller, dessen theorie zur auslastung der cores schon sehr... aussergewöhnlich war :D, und war ein wenig überrascht dass ihm niemand sonst die eigentlich bekannte funktionsweise dieser technologie erklärt hatte, weshalb ich das getan habe.

Seine Frage war berechtigt, aber falsch gestellt. Es hat nämlich nicht viel mit der Prozessortechnologie zu tun. Wie hier auch einige schon erklärt haben, liegt es am OS, welcher der acht virtuellen Kerne nun die Threads abbekommt. Welches OS aber nun virtuelle Kerne von echten unterscheiden kann, weiß ich nicht genau. Win2000 konnte es noch nicht. Da hätte es tatsächlich passieren können, dass die zwei Hauptthreads auf einem Kern lagen und der Rest sich gelangweilt hat.

Wuge
2009-02-18, 18:13:36
Ist doch ganz einfach - wie damals bei den Netburst Dualcore mit HT:

Easytoolz hier aus dem Forum in den Autostart und bei Spielen einmal ein Profil erstellt, mit dem die Last auf 2-4 logische CPUs auf unterschiedlichen Kerner gelegt wird. Dann gibts keine Nachteile mehr.

Gast
2009-02-18, 18:14:00
Hallo,

XP ab SP1 kann zwischen echten und virtuellen Kernen (CPUs) unterscheiden.

Die CPU hat einfach entsprechende Flags, aus denen das OS auslesen kann ob es echte oder virtuelle CPUs sind.

Ansonsten ist der Scheduler von Windows eh etwas eigen, was das Problem zugrundliegende Problem zumindest kaschiert.

mfg

san.salvador
2009-02-18, 18:17:10
Das ist nicht so wichtig, wichtiger wäre es, dass das OS wüsste, welche zwei "virtuellen" zu einem "echten" Kern gehören.

Gast
2009-02-18, 18:57:23
Das ist nicht so wichtig, wichtiger wäre es, dass das OS wüsste, welche zwei "virtuellen" zu einem "echten" Kern gehören.

Das weiß es doch aufgrund der Flags, darin steht welche 2 SMTs zu einer "physichen" Einheit gehören.

Bsp. (aus der Praxis)

"Kern" 1 logische CPU 0 + 1
"Kern" 2 logische CPU 2 + 3
"Kern" 3 logische CPU 4 + 5
"Kern" 4 logische CPU 6 + 7

san.salvador
2009-02-18, 20:44:35
Ich weiß, aber der andere Gast bzw. du hast/hat sich vorhin leicht unscharf ausgedrückt. ;)

Gast
2009-02-19, 00:11:13
Blackbird ich denke die Frage des Erstellers war klarer als er sie ausdrücken konnte. Ich präzisiere das leicht.

Hat der i7 im Speziellen oder Intels SMT-Modelle im Allgemeinen irgendwelche skils on board, welche eine effiziente Verwaltung unterstützen?

Es war nämlich beim w2k der Fall, daß SMT beim P4 bei den Programmen garnichts brachte oder sie sogar ausbremste, bei welchen mit XP wenigstens ein leichter Zuwachs zu verzeichnen war. MS hat ja festgelegt, daß w2k SMt nicht kennen wird. So sah das Ergebnis auch meistens aus.

Wieviel vom SMT eines i7 muß MS/Linux kennen, um es brauchbar zu nutzen? Oder reichen die gleichen Erweiterungen des Kernels beim XP für i7 genauso wie bei Vista für den P4? usw. usw. Müßen die Kernels mit jeder neuen SMT-CPU-Generation angepasst werden oder lernt man das nur einmal als OS-Hersteller (in dem Fall Microsoft für x86) und gut ist?

Daß der Kernel wissen sollte, daß es im System zb. 4 logische aber nur 2 physikalische Kerne gibt, haben wir eben spätestens mit w2k erfahren.

Das wäre meine Interpretation ;)

san.salvador
2009-02-19, 00:24:48
Jemand mit einem i7 sollte sowas doch mal ausprobieren können. Wenn man einen beliebigen Benchmark, der die Threadzahl einstellen lässt (7zip. zB), hernimmt und auf vier Threads begrenzt, sollte man im Taskmanager zumindest eine Idee bekommen, was Windows hier veranstaltet. Natürlich nur, wenn der Taskmanager nicht vollkommen Quargel anzeigt. ;)

Coda
2009-02-19, 07:30:39
Die Antwort ist, dass der Scheduler des Betriebssystems wissen muss, dass die CPU SMT hat. Dann kann es die Threads entsprechend zuerst auf die physikalischen Cores verteilen.

Dies ist ab Windows XP der Fall.

Wuge
2009-02-19, 18:16:49
@ san.salvador

Wenn mann ein Programm mit 4 Threads hat, werden die mehr oder weniger gleichmäßig schwankend auf alle logischen CPUs verteilt.

Gast
2009-02-19, 20:12:32
Es war nämlich beim w2k der Fall, daß SMT beim P4 bei den Programmen garnichts brachte oder sie sogar ausbremste, bei welchen mit XP wenigstens ein leichter Zuwachs zu verzeichnen war. MS hat ja festgelegt, daß w2k SMt nicht kennen wird. So sah das Ergebnis auch meistens aus.


Hallo, das ist so nicht richtig.

SMT bei Desktop CPUs gab es zu Lebzeiten von W2K eigentlich nicht.

Windows XP kam ja schon Ende 2001.

Ansonsten unterstützt W2K SMT der XEON CPUs, welches das selbe war wie im "normalen" P4.

Nur da sich ein P4 nicht als XEON meldet, wußte W2K davon nichts.

Zum Erscheinungszeitpunkt der 3.06 GHz HT CPU (Ende 2002), wurde die entsprechende Ressourcen in XP SP1 gesteckt und nicht (mehr) in W2K.

Dennoch läuft HT (SMT) in W2K mit XEONs.

Ansosnten bringt HT selten deutlich mehr Performance eines Programmes, nur der Rechner arbeitet deutlich flüssiger.

Der Umstieg von HT auf DC war für am Anfang fast ein Nullsummenspiel und nur bei wenigen speziellen Anwendungen sinnvoll.

Von einer AMD CPU die nur einen Thread konnte, war es natürlich ein gewaltiger Fortschritt, aber auch nur weil sie damals beim Multithreading (weit) zurück waren.

mfg

EvilTechno
2009-02-19, 20:56:04
Auf die HT-ungünstigen Spiele bezogen ... ist es möglich, oder auch nur theoretisch denkbar, einem thread Prioritäten zuzuweisen?

Könnte ein Spiel beim OS anfragen wie viele reale und HT-Kerne vorhanden sein und ihm dann (z.B. bei 2 realen Kernen) erklären: Sound und Grafik bitte mit Priorität behandeln und KI und Physik kannst du jeweils reinschieben, wenns dir passt.

Ziel des ganzen, bei 2 threads praktisch keine Nachteile aus HT zu haben und trotzdem optimal auszulasten und noch mehr berechnen zu können.

san.salvador
2009-02-19, 21:11:37
Es gibt keine reale und HT-Kerne. Mein C2D hat fürs OS 2 reale Kerne, ein Nehalem 8 HT-Kerne und 0 reale Kerne.

Gast
2009-02-19, 22:19:40
Es gibt keine reale und HT-Kerne. Mein C2D hat fürs OS 2 reale Kerne, ein Nehalem 8 HT-Kerne und 0 reale Kerne.

Das ist richtig, aber das OS weiß, welche Rechenwerke sich von 2 HT-Kernen geteilt werden. Daher kann es die entsprechenden Aufgaben entsprechende verteilen um alle "physichen" Recheneinheiten optimal auszulasten.

san.salvador
2009-02-19, 22:20:47
Und genau deshalb braucht sich ein Spiel darum nicht zu kümmern. :)

Gast
2009-02-19, 23:14:46
SMT bei Desktop CPUs gab es zu Lebzeiten von W2K eigentlich nicht.Wann kam denn der erste HT P4?

Ansosnten bringt HT selten deutlich mehr Performance eines Programmes, nur der Rechner arbeitet deutlich flüssiger.

Von einer AMD CPU die nur einen Thread konnte, war es natürlich ein gewaltiger Fortschritt, aber auch nur weil sie damals beim Multithreading (weit) zurück waren.Was für ein Krampf. Geh mal woanders werben. Das hier ist ein Thread ohne Werbeunterbrechungen.

san.salvador
2009-02-19, 23:17:55
Du hattest damals offenichtlich kein HTT...

Geh wo anders jammern.

iDiot
2009-02-20, 08:18:01
Ich finde auch HTT hat damals ordentlich was gebracht! Beim "SMT- Feeling" war HT und DualCore nahezu gleichwertig.

Skinner
2009-02-20, 11:17:47
Habe gestern mal Team Fortress 2 angetestet. Beim alten C2D wars so, das laut G15 Display nur eine Kern zu 100% ausgelastet wurde. Beim i7 scheint die Lastverteileung nun gleichmässig zu sein laut Display. Und überhaupt ist mir bei der Auslastung noch nichts negatives ausgefallen. Alles ist bisher schön gleichmässig.

Coda
2009-02-20, 11:50:26
Habe gestern mal Team Fortress 2 angetestet. Beim alten C2D wars so, das laut G15 Display nur eine Kern zu 100% ausgelastet wurde.
Das muss dann aber Team Fortress 2 selber veranlasst haben. Normalerweise werden beide Kerne mit einem Thread zu 50% ausgelastet.

san.salvador
2009-02-20, 14:34:51
TF2 unterstützt Multicore aber auch noch nicht allzu lange, wird wohl mit diesem gewissen Patch zu tun haben. ;)

Gast
2009-02-21, 16:56:16
Wann kam denn der erste HT P4?

Was für ein Krampf. Geh mal woanders werben. Das hier ist ein Thread ohne Werbeunterbrechungen.


Der P4 mit 3.06 GHz kam ende 2002 auf den Markt, ein Jahr nach dem Start von Windows XP.

http://www.heise.de/newsticker/Pentium-4-3-06-GHz-mit-Hyper-Threading--/meldung/32288

mfg