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

42

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

Josh Stodola
quelle

Antworten:

20

Hyper-Threading macht mehrere logische Kerne für einen einzelnen physischen CPU-Kern verfügbar. In einfachen Worten, Hyper-Threading macht kontextSchalt effizienter für jeden CPU - Kern.

Dual-Core-Chips haben dagegen zwei physikalische CPU-Kerne, die gleichzeitig unterschiedliche Prozesse ausführen können.

Es gibt auch andere Multi-Core-Chips mit mehr als zwei Kernen, und - wie Svish bereits erwähnte - Intels neueste Multi-Core-Angebote unterstützen Hyper-Threading auf allen Kernen.

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

Bildbeschreibung hier eingeben

Wenn Sie eine Intel-CPU haben, können Sie stattdessen das Intel-Dienstprogramm für die CPU-ID herunterladen .

rauben
quelle
Und Multi-Core-Chips, die Hyper-Threading unterstützen, sodass Sie doppelt so viele logische Kerne erhalten.
Svish
Danken! Wie kann ich (innerhalb des Betriebssystems) feststellen, welchen CPU-Typ ich habe?
Josh Stodola
3
Der Ultrasparc T2 + hat 8 Cores, von denen jede Stütz 8 Threads ihm einen 64 virtuellen CPUs auf einem einzigen Chip zu machen: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre
Die Art und Weise, wie Sie Ihre CPU ermitteln können, hängt vom Betriebssystem ab, unter dem Sie arbeiten.
Juli
@ jilliagre: schön!
Rob
16

Beim Hyper-Threading gibt Ihr Prozessor vor, 2 physische Prozessorkerne zu haben, verfügt jedoch nur über 1 und etwas zusätzlichen Müll.

Beim Hyperthreading kommt es vor, dass sich beim Ausführen von Code im Prozessor häufig Teile des Prozessors im Leerlauf befinden. Durch das Einfügen eines zusätzlichen Satzes von CPU-Registern kann der Prozessor so wirken, als ob er zwei Kerne hätte, und somit alle Teile des Prozessors parallel verwenden. Wenn die beiden Kerne jeweils eine Komponente des Prozessors benötigen, wartet am Ende natürlich ein Kern. Aus diesem Grund kann es Dual-Core- und solche Prozessoren nicht ersetzen.

Siehe auch: Diese Frage

Earlz
quelle
6

Hyperthreading ist eine billigere und langsamere Alternative zu Dual-Cores

Das Intel Manual Volume 3 Systemprogrammierungshandbuch - 325384-056DE September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" beschreibt HT kurz. Es enthält das folgende Diagramm:

Bildbeschreibung hier eingeben

TODO ist es langsamer, um wie viel Prozent im Durchschnitt in realen Anwendungen?

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

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

Hyperthreading trennt Funktionen weiter, indem Folgendes verwendet wird:

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

    Dual Core hat zwei Backends, was die höheren Kosten und die höhere Leistung erklärt.

  • Zwei Front-Ends, die zwei Anweisungsfolgen aufnehmen und so anordnen, dass die Pipeline-Nutzung des einzelnen Back-Ends maximiert wird, indem Gefahren vermieden werden .

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

    Es gibt Randfälle, in denen die Neuordnung von Befehlen keinen Nutzen bringt und Hyperthreading unbrauchbar macht. Aber es ergibt sich eine deutliche Verbesserung im Durchschnitt.

Zwei Hyperthreads in einem Kern teilen sich weitere Cache-Ebenen (TODO, wie viele? L1?) Als zwei verschiedene Kerne, die nur L3 gemeinsam haben.

Die Schnittstelle, die jeder Hyperthread dem Betriebssystem zur Verfügung stellt, ähnelt der eines tatsächlichen Kerns, und beide können separat gesteuert werden. So cat /proc/cpuinfozeigt mir 4 Prozessoren, obwohl ich nur 2 Kerne mit je 2 Hyperthreads habe.

Betriebssysteme können jedoch den Vorteil nutzen, zu wissen, welche Hyperthreads sich auf demselben Kern befinden, um mehrere Threads eines bestimmten Programms auf einem einzelnen Kern auszuführen, was die Cache-Nutzung verbessern kann.

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

Ciro Santilli ist ein Schauspieler
quelle
1
Wirst du deine "TODO" -Fragen beantworten?
Pacoverflow
1
@pacoverflow , wenn ich eines Tages die Antwort erfahren, oder wenn jemand die Antwort für mich :-) bearbeiten wird
Ciro Santilli新疆改造中心法轮功六四事件