Weiß Windows, wie Threads einem Quad-Core-Prozessor mit Hyper-Threading zugeordnet werden können?

364
ConfusedHyperThreader

Ich habe also versucht, nach dieser Antwort zu googeln, finde aber keine direkte technische Antwort auf die Frage. (Oder wenn es tat, war es auf verwirrende Weise)

Angenommen, Sie haben ein Programm / Spiel, das 2 Threads und nur 2 Threads verwendet. Wird es bei einer Quad-Core-CPU und Hyper-Threading wissen, dass immer noch zwei PHYSICAL-Kerne anstelle von nur zwei Threads verwendet werden und 50% der CPU anstelle von 25% der CPU verwendet werden? Führt das Hyper-Threading zu Problemen dieser Art, indem es die Hälfte von dem verwendet, was es wirklich tun könnte / sollte? Wie kann Windows mit all dem umgehen?

Vielen Dank! Tut mir leid, wenn die Art und Weise, in der ich die Frage stellte, seltsam war.

0
Sie haben ein Konto mit dem Namen _ConfusedHyperThreader_ erstellt. `: D` ADTC vor 10 Jahren 1
Es gab mir die Möglichkeit, mich als anonymer Gast anzumelden, und fragte dann nach einem Namen ... also gab ich ihm ein Lol ConfusedHyperThreader vor 10 Jahren 1
Jemand kennt die Antwort darauf ... niemand? ConfusedHyperThreader vor 10 Jahren 0
Sorry, dass noch niemand eine Antwort hat. Vielleicht können Sie Ihre Frage damit erweitern, wie weit Sie gegangen sind, was Sie bisher gelernt haben und was nicht genau klar ist. _Ich habe ein bisschen gegoogelt, aber ich habe auch kein Glück:) _ ADTC vor 10 Jahren 0
Ich habe keine Quelle, aber ich glaube, Vista und mehr sind "Hyperthreading Awareness" und kennen den Unterschied zwischen echten und Hyperthreaded Cores. LawrenceC vor 9 Jahren 0

1 Antwort auf die Frage

1
Jamie Hanrahan

Ja, es macht was du willst. Windows weiß, welcher logische Prozessor in welchem ​​Kern ist. Es verwendet nur einen "logischen Prozessor" pro Kern, bis Sie mehr Threads haben, die gleichzeitig ausgeführt werden sollen, als Sie über Cores verfügen.

("Logischer Prozessor" ist ein Name, den Windows intern für "etwas verwendet, das einen Thread ausführen kann". Wenn HT nicht aktiviert ist, gibt es einen LP pro Kern. Wenn HT aktiviert ist, gibt es zwei LPs pro Kern. Dies ermöglicht es uns, immer nur über "logische Prozessoren" zu sprechen, anstatt ständig Dinge qualifizieren zu müssen.)

Der genaue Algorithmus für die Auswahl "Wo soll ein Thread laufen" wird in Windows Internals von Solomon, Russinovich und Ionescu beschrieben. Es ist eine ausführliche Beschreibung, die viele "Randfälle" umfasst, wie z. B. geparkte Kerne, NUMA-Maschinen (mit zwei oder mehr physischen CPU-Paketen mit jeweils einer eigenen RAM-Bank) usw.

Aber ja: Windows versucht, eine LP in jedem Core-Leerlauf aufzubewahren, bis mehr Threads vorhanden sind als Cores.