bekomme ich die halbe CPU-Geschwindigkeit für einen einzelnen Thread, wenn HT eingeschaltet ist?

1593
Jas

Wenn ich zum Beispiel einen einzelnen 2,6-GHz-Kern habe, würde das bedeuten, dass ich mit Hyperthreading nur 1,3 GHz für einen einzelnen Thread habe, den meine App hat, oder ist es nur auf Abruf, wenn ich es verwenden möchte (sagen wir, meine App ist das einzige, was läuft auf dem Computer ... der Sache halber läuft kein Betriebssystem)

Single Thread Single Core kein HT: Thread läuft auf 2,6 GHz Single Thread Single Core mit HT: Thread läuft auf 1,3 GHz?

Wenn es nicht die halbe Geschwindigkeit ist, vorausgesetzt, ich habe nur einen einzigen Thread ausgeführt. Wie stark ist die Beeinträchtigung bei HT? 10% sonst?

1
Nein; Alles Hyperthreading ist die Fähigkeit eines einzelnen Kerns, zwei separate Threads gleichzeitig zu verarbeiten. Bitte recherchieren Sie das Thema bevor Sie weitere Fragen stellen. Ramhound vor 10 Jahren 2
Mögliches Duplikat von [Hyperthreading Calcuting Load] (http://superuser.com/questions/612477/hyperthreading-calculating-load), [Wie funktioniert die Windows-Prozessoraffinität mit Hyperthread-CPUs?] (http://superuser.com/questions) / 347982 / how-do-windows-processor-affinity-work-with-hyperthreaded-cpus) oder [Was sind Threads und was machen sie im Prozessor?] (Http://superuser.com/questions/329904) / was sind Threads und was tun sie im Prozessor? Breakthrough vor 10 Jahren 0

2 Antworten auf die Frage

3
David Schwartz

Nein, die Taktraten funktionieren einfach nicht so. Die Ausführungseinheiten im Core laufen mit der gleichen Geschwindigkeit, unabhängig davon, für welchen Thread sie im Namen arbeiten, oder ob der physische Core HT aktiviert oder deaktiviert hat.

1
Hennes

Nein, das heißt nicht. Jede Task kann mit voller Geschwindigkeit auf einem einzigen Thread ausgeführt werden. Wenn einer davon blockiert wird (z. B. beim Warten auf relativ langsame E / A aus dem Hauptspeicher), kann ein anderer Thread mit voller Kerngeschwindigkeit ausgeführt werden.

Beachten Sie, dass bei einem Core-Setup mit zwei Threads nur einige Ressourcen gleichzeitig in einem Thread verwendet werden können. Wenn Sie zum Beispiel zwei Threads ausführen möchten und beide Daten aus dem Hauptspeicher lesen müssen, kann dies nur ein Thread tun. Der andere muss warten. Wenn Sie zwei Threads haben und einer einen reinen On-Die (z. B. mit der ALU) ausführt, während der andere aus dem Hauptspeicher liest, können beide gleichzeitig ausgeführt werden.

Stellen Sie sich vor, Sie haben einen Laden mit zwei Mitarbeitern, aber nur einer Registrierkasse. Wenn beide auf die Registrierkasse zugreifen müssen, muss man warten (nichts tun). Oder mit etwas Glück muss nur einer auf die Registrierkasse zugreifen, während der andere mit dem nächsten Kunden spricht, während die erste Person die Registrierkasse betreibt. (Also zwei Sachen gleichzeitig machen).

Wenn es nicht die halbe Geschwindigkeit ist, vorausgesetzt, ich habe nur einen einzigen Thread ausgeführt. Wie stark ist die Beeinträchtigung bei HT? 10% sonst?

Das hängt von jedem Programm ab. Der schlimmste Live-Fall, den ich gehört habe, ist eine Gesamtabschwächung von 30% * 2 (wie bei tatsächlich langsamerem Einschalten von HT). Der beste theoretische Fall ist fast 100% Gewinn. In der Praxis scheint der Geschwindigkeitsgewinn im Vergleich zu keiner HT im Durchschnitt um 30% zu liegen.


* 2 : Die Verlangsamung um 30% betraf den tatsächlichen Produktionscode eines Web-Spiders. Aber schlimmeres ist möglich. Eine Datenbank erlaubte beispielsweise nur zwei Threads auf einer 2-Kern-, 4-Thread-CPU und einen Scheduler, der beide Threads dauerhaft auf demselben physischen Kern plant.

09.10.2014: Zwei Links mit relevanten Informationen hinzugefügt:
Wikipedia's: Hyper-Threading
Wikipedia: Simultaneous Multithreading

Ich verstehe, dass Sie versuchen, die Dinge zu vereinfachen, aber Vereinfachungen, die tatsächlich falsche Anweisungen enthalten, sind IMO nicht akzeptabel. Zum Beispiel impliziert die Mautstellenanalogie stark, dass entweder der eine oder der andere Thread vorwärts geht, was nicht stimmt. Die beiden Threads verwenden im Kern unterschiedliche Ausführungseinheiten, sodass beide gleichzeitig vorankommen. David Schwartz vor 10 Jahren 0
Wahr. Ich sollte mir eine bessere Analogie ausdenken. * Denkt nach * Vielleicht die erste Person, die Geld zählt (z. B. eine ALU), während die zweite Person mit einem zweiten Auto beschäftigt ist. Immer noch nicht so toll. Vielleicht sollte ich diesen Teil entweder zerkratzen oder erheblich erweitern. Hennes vor 10 Jahren 0
Vielleicht ein Geschäft mit zwei Mitarbeitern, aber nur einer Kasse? David Schwartz vor 10 Jahren 0