Was ist der Unterschied zwischen Hyper-Threading und mehreren Kernen?

24569
Josh Stodola

In einem Gespräch mit dem Netzwerkadministrator erwähnte ich, dass mein Computer ein Dual-Core-Gerät war. Er hat mir gesagt, dass es nicht so ist. Ich habe den Task-Manager aufgerufen, bin zur Registerkarte Leistung gegangen und habe ihm gezeigt, dass es zwei separate CPU-Auslastungsdiagramme gibt. Ich habe eine Quad-Core-Maschine zu Hause und vier Diagramme. Er erzählte, dass es auf dieser speziellen Maschine zwei Grafiken gab, weil Hyper-Threading durchgeführt wurde. Ich hatte früher einen Hyper-Thread-Pentium-4-Prozessor, aber ich habe nie ganz verstanden, was es bedeutet. Was ist also der Unterschied zwischen Hyper-Threading und Dual-Core? Und wie sagst du, welche du hast?

38

3 Antworten auf die Frage

19
rob

Durch Hyper-Threading werden mehrere logische Kerne für einen einzelnen physischen CPU-Kern verfügbar gemacht. In einfachen Worten: Durch Hyper-Threading wird der Kontextwechsel für jeden CPU-Kern effizienter.

Dual-Core-Chips hingegen haben tatsächlich zwei physische CPU-Kerne, die verschiedene Prozesse gleichzeitig ausführen können.

Es gibt auch andere Multi-Core-Chips, die über mehr als zwei Kerne verfügen, und - wie Svish erwähnt hat - Intels neueste Multi-Core-Angebote unterstützen auch Hyper-Threading auf allen Kernen.

Sie können ein CPU-Identifikationsdienstprogramm wie CPU-Z verwenden, um festzustellen, wie viele Kerne Sie haben. Wie Sie am unteren Rand des Screenshots sehen können, verfügt die CPU in diesem Fall über zwei physische Kerne. Wenn die Anzahl der Threads höher als die Anzahl der Kerne ist, ist Hyper-Threading aktiviert. Bisher verfügen alle verbraucherorientierten CPUs mit Hyper-Threading über 2 Threads pro Kern. Wenn HT aktiviert ist, beträgt die Anzahl der Threads das Doppelte der Anzahl der Cores.

Wenn Sie über eine Intel-CPU verfügen, können Sie stattdessen das Intel-ID-Dienstprogramm herunterladen .

Und Multi-Core-Chips, die Hyper-Threading unterstützen, sodass Sie doppelt so viele logische Kerne wie möglich erhalten. Svish vor 14 Jahren 0
Thank! How do I tell (from within the OS) which type of CPU I have? Josh Stodola vor 14 Jahren 0
Der UltraSparc T2 + verfügt über 8 Kerne, von denen jeder 8 Threads unterstützt, wodurch er auf einem einzigen Chip zu 64 virtuellen CPUs wird: http://en.wikipedia.org/wiki/UltraSPARC_T2 jlliagre vor 14 Jahren 2
Wie Sie die CPU kennen, hängt von Ihrem Betriebssystem ab. jlliagre vor 14 Jahren 0
@jilliagre: schön! rob vor 14 Jahren 0
@JoshStodola: Yikes! Entschuldigung, ich habe Ihren Kommentar zuvor nicht gesehen. Ich habe Informationen zum Identifizieren der CPU-Funktionen hinzugefügt. rob vor 12 Jahren 0
15
Earlz

Beim Hyperthreading gibt Ihr Prozessor vor, zwei physische Prozessorkerne zu haben, jedoch nur einen und etwas mehr Junk.

Der Punkt des Hyperthreading ist, dass oft, wenn Sie Code im Prozessor ausführen, sich Teile des Prozessors im Leerlauf befinden. Durch das Hinzufügen eines zusätzlichen Satzes von CPU-Registern kann der Prozessor so arbeiten, als hätte er zwei Kerne und kann somit alle Teile des Prozessors parallel verwenden. Wenn beide Kerne eine Komponente des Prozessors verwenden müssen, wartet natürlich ein Kern. Deshalb können Dual-Core-Prozessoren und solche Prozessoren nicht ersetzt werden.

Siehe auch: Diese Frage

4
Ciro Santilli 新疆改造中心 六四事件 法轮功

Hyperthreading ist eine billigere und langsamere Alternative zu Doppelkernen

TODO ist in realen Anwendungen durchschnittlich um wie viel Prozent langsamer?

Hyperthreading ist möglich, da moderne Einzel-CPU-Kerne bereits mehrere Anweisungen gleichzeitig mit der Befehlspipeline https://en.wikipedia.org/wiki/Instruction_pipelining ausführen

Die Befehlspipeline ist eine Trennung von Funktionen innerhalb eines einzelnen Kerns, um sicherzustellen, dass jeder Teil der Schaltung zu einem bestimmten Zeitpunkt verwendet wird: Lesen von Speicher, Dekodieren von Anweisungen, Ausführen von Anweisungen usw.

Hyperthreading trennt Funktionen weiter durch die Verwendung von:

  • ein einzelnes Backend, das die Anweisungen mit seiner Pipeline ausführt.

    Dual Core verfügt über zwei Backends, was die höheren Kosten und Leistungen erklärt.

  • zwei Frontends, die zwei Befehlsströme enthalten und sie so anordnen, dass die maximale Auslastung des einzelnen Backends durch Vermeiden von Gefahren maximiert wird .

    Dual Core hätte auch 2 Frontends, eines für jedes Backend.

    Es gibt Randfälle, in denen das Umordnen von Anweisungen keinen Nutzen bringt und Hyperthreading unbrauchbar macht. Im Durchschnitt führt dies jedoch zu einer deutlichen Verbesserung.

Zwei Hyperthreads in einem einzigen Kern teilen sich weitere Cache-Ebenen (TODO wie viele? L1?) Als zwei verschiedene Kerne, die nur L3 gemeinsam nutzen: https://stackoverflow.com/questions/944966/cache-memories-in-multicore-cpus

Die Schnittstelle, die jeder Hyperthread für das Betriebssystem verfügbar macht, ist der eines tatsächlichen Kerns ähnlich, und beide können separat gesteuert werden. Also cat /proc/cpuinfozeigt mir 4 Prozessoren, obwohl ich nur 2 Kerne mit je 2 Hyperthreads habe.

Betriebssysteme können jedoch wissen, welche Hyperthreads sich im selben Kern befinden, um mehrere Threads eines bestimmten Programms in einem einzigen Kern auszuführen, was die Cacheverwendung verbessern kann.

Dieses LinusTechTips-Video enthält eine unkomplizierte, nichttechnische Erklärung: https://www.youtube.com/watch?v=wnS50lJicXc

Das Handbuch zu System 3 für Intel Manual Volume 3 - 325384-056DE September 2015 8.7 "INTEL-HYPER-THREADING-TECHNOLOGIE-ARCHITEKTUR" beschreibt HT kurz. Es enthält das folgende Diagramm:

enter image description here

Beantworten Sie Ihre "TODO" -Fragen? pacoverflow vor 7 Jahren 1
@pacoverflow wenn ich irgendwann die Antwort lerne oder wenn jemand die Antwort für mich bearbeitet :-) Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 7 Jahren 1