Was ist hyper-threading und wie funktioniert es?

Ich habe kürzlich den Begriff Hyper-Threading ein wenig herumgeworfen gehört, was genau ist Hyper-Threading und warum ist es wichtig?

Author: quack quixote, 2010-03-22

5 answers

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

Der Punkt des Hyperthreading ist, dass bei der Ausführung von Code im Prozessor häufig Teile des Prozessors im Leerlauf sind. Durch die Einbeziehung eines zusätzlichen Satzes von CPU-Registern kann der Prozessor so handeln, als hätte er zwei Kerne und verwendet somit alle Teile des Prozessors parallel. Wenn die 2 Kerne beide eine Komponente des Prozessors verwenden müssen, dann eine kern wartet natürlich. Deshalb kann es Dual-Core und solche Prozessoren nicht ersetzen.

 47
Author: Earlz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-22 01:01:39

Hyper-Threading ist, wo zwei Threads auf einem Single-Threaded-Kern laufen können. Wenn ein Thread auf dem betreffenden Kern zum Stillstand kommt oder sich in einem Stoppzustand befindet, ermöglicht Hyper-Threading, dass der Kern stattdessen an einem zweiten Thread arbeitet.

Hyper-Threading lässt das Betriebssystem glauben, dass der Prozessor die doppelte Anzahl von Kernen hat und oft zu einer Leistungsverbesserung führt, jedoch nur im Bereich von 15-30% insgesamt - obwohl es unter bestimmten Umständen tatsächlich zu einem Leistungseinbruch kommen kann (=

Derzeit haben die meisten Atom-Chips und alle i7 (und Xeon-äquivalente Chips) Hyper-Threading, wie auch einige ältere P4s. Im Fall der Atome ist es ein verzweifelter Versuch, die Leistung zu verbessern, ohne den Stromverbrauch stark zu erhöhen; im Fall von i7s unterscheidet es sie von der i5-Reihe von Chips.

Komplexe Verarbeitungsarbeiten profitieren nicht viel von HT, aber bestimmte (einfache, hochgradig Multithread -) Aufgaben wie die Videokodierung profitieren von HT. In Wirklichkeit gibt es ist nicht viel drin...

 16
Author: CJM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-03-22 02:28:52

Um das bereits Gesagte zu erweitern, bedeutet Hyperthreading, dass ein einzelner CPU-Kern zwei separate Ausführungskontexte verwalten und schnell zwischen ihnen wechseln kann, wodurch zwei Kerne auf Hardwareebene effektiv emuliert werden.

Sie erhalten einen bescheidenen Geschwindigkeitsvorteil für Multithread-Workloads im Vergleich zu einem normalen Single-Core. Es ist jedoch bei weitem nicht der Vorteil von zwei unabhängigen Kernen. In Bezug auf die Leistung ist es am besten, es als einen kleinen Schub in Multithread zu betrachten leistung über einen einzelnen Kern und nicht als Leistung über zwei Kerne. Die Größe des Geschwindigkeitsanstiegs variiert je nach Arbeitsbelastung - in der Tat ist der Leistungsanstieg bei einigen Workloads recht anständig.

Der Hyperthread-Kern hat nur eine Hauptausführungseinheit, aber bestimmte andere Teile einer CPU, die Readying-Anweisungen für die Verarbeitung und Aufrechterhaltung eines Ausführungsstatus zugeordnet sind, werden dupliziert.

Prozessorkerne haben eine Befehlspipeline - eine Warteschlange der Zukunft anweisungen, die ausgeführt werden sollen, die ständig aktualisiert werden, bereit für die CPU, um die Anweisung an der Spitze dieser Warteschlange auszuführen. CPUs verwenden diese, um die Ausführungsgeschwindigkeit zu optimieren, indem sie sich diese zukünftigen Anweisungen ansehen und nach Möglichkeit eine einfache Vorverarbeitung auf niedriger Ebene durchführen (solche Optimierungen umfassen "Out of order execution" und "Branch Prediction").

Hyperthreaded Kerne haben Dual-Instruction-Pipelines, und dies-zusammen mit einem zweiten Satz von Registern-ist, wo Sie bekommen der Geschwindigkeitsvorteil für Multithread-Workloads.

Angenommen, Ihr System führt eine Reihe verschiedener Threads gleichzeitig aus. Ihr System weist jeden Thread einem virtuellen Prozessor zu, und dieser Thread teilt den virtuellen Prozessor mit anderen Threads, aber jedes Mal, wenn der virtuelle Prozessor zwischen diesen Threads wechselt, muss er im Grunde den gesamten Ausführungskontext dieses Threads verwerfen und den eines anderen Threads laden.

Aber mit Hyper-Threading, anstatt dass Ihr Kern nur in der Lage ist behalten Sie den Status eines Threads zu einem bestimmten Zeitpunkt bei, Sie erhalten die Möglichkeit, dass dieser Kern die Ausführungszustände zweier Threads gleichzeitig beibehält, sodass Sie mit viel weniger Strafe zwischen diesen beiden wechseln können, da die Pipeline oder Register nicht weggeworfen werden und die Pipeline und Register für den anderen Thread bleiben bereit und "heiß", sodass sie sofort umgeschaltet und verwendet werden können. Wenn Sie mehr Threads als virtuelle Prozessoren ausführen, müssen Sie immer noch hart umschalten, aber seltener, da Sie eine größere Anzahl von Threads zu einem bestimmten Zeitpunkt, deren Ausführungsstatus erhalten bleibt.

 9
Author: thomasrutter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-15 01:12:33

Wenn ein einzelner Kern als Dual Core fungieren kann

Es ist Hyperthreading

Im Detail

Intels Implementierung von simultanem Multithreading ist bekannt als Hyper-Threading-Technologie oder HT-Technologie.

HT-Technologie macht einen einzelnen Prozessor erscheinen, von Software
Perspektive, als mehrere logische Prozessoren. Dies ermöglicht Betriebssysteme und Anwendungen, um mehrere zu planen threads zu logisch prozessoren als
sie würden auf Multiprozessorsystemen.


Hyperthreading ermöglicht es einem einzelnen Prozessor, zwei Threads gleichzeitig auszuführen, jedoch nicht unter allen Bedingungen.

Hyperthreading verdoppelt nicht die Leistung eines Systems, sondern kann die Leistung steigern, indem Leerlaufressourcen besser genutzt werden, was zu einem höheren Durchsatz für bestimmte wichtige Workload-Typen führt. Eine Anwendung, die auf einem logischen Prozessor eines ausgelasteten Kerns ausgeführt wird, kann etwas mehr als die Hälfte des durchsatz, den es erhält, während es alleine auf einem Nicht Hyperthread-Prozessor läuft. Hyperthreading Leistungsverbesserungen sind stark anwendungsabhängig, und einige Anwendungen können Leistungseinbußen mit Hyperthreading sehen, weil viele Prozessorressourcen (wie der Cache) zwischen logischen Prozessoren gemeinsam genutzt werden.

Intel Hyper-Threading-Technologie macht jeder Kern zwei logische Prozessoren haben kann, die die meisten Ressourcen des Kerns teilen, wie Speicher-Caches und funktionale Einheiten

Hauptfunktion

Von Hyperthreading ist es, die Anzahl der unabhängigen Anweisungen in der Pipeline zu erhöhen; es nutzt die superskalare Architektur, in der mehrere Anweisungen parallel mit separaten Daten arbeiten

Intel sagt, dass Hyper-Threading sehr effizient ist, weil es Ressourcen verwendet, die sonst inaktiv oder unzureichend ausgelastet wären.

Links:

Wikipedia
StackOverflow -
Multi-Core-Programmierung Digital_Edition pg #8

geben Sie hier die Bildbeschreibung ein

Intel Bild

 5
Author: Johnny Blaze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

So wie ich es verstehe, schauen wir uns ein kleines Beispiel an, das nicht wirklich dem Leben entspricht, aber den Punkt betont...

Angenommen, wir haben eine CPU, die von nun an als Oder bezeichnet wird.

Todd hat auch mehrere Arme, sagen wir vier (ähnlich wie Tom Woodruff Jr. Goro). Dies sind Todds Version der Logikgatter einer CPU.

Schließlich hat Todd nur ein Ohr, kann also immer nur einen Befehl hören. Dies ist Todds Leben ohne Hyperthreading, also ist ein Kern immer noch nur ein Kern.

Todd, der Kluge, der er ist, kann vier unabhängige Aufgaben gleichzeitig ausführen, eine Aufgabe mit jedem seiner vier Arme, aber da er nur ein Ohr hat, kann er jeweils nur eine Anweisung hören.

Nun, einige Anweisungen könnten verlangen, dass er alle seine Gliedmaßen benutzt, um die Aufgabe zu erledigen, aber eine ganze Reihe von Anweisungen könnte ihn nur brauchen, um seinen linken oberen Arm zu benutzen. Das ist ziemlich ineffizient! Die anderen Arme sitzen die meiste Zeit nur untätig.

Wenn wir gib Todd ein zweites Ohr (damit er jetzt gut und symmetrisch aussieht), er kann zwei Anweisungen gleichzeitig erhalten.

Das ist großartig, denn wenn eine Anweisung nur will, dass er seinen linken Oberarm benutzt, aber eine andere Anweisung braucht, dass er beide rechten Arme benutzt, dann kann er beide Operationen gleichzeitig ausführen! Das hat seine Effizienz bei der Erledigung von Aufgaben verdoppelt! Genial!

Jetzt... Ich weiß, was du vielleicht denkst; Was ist, wenn eine Anweisung möchte, dass er alle seine Arme benutzt, und eine zweite Anweisung will, dass er beide linken Arme benutzt?

Nun, leider wurde Todd ein zusätzliches Ohr geschenkt, aber keine zusätzlichen Arme, so dass in diesem Fall die zweite Anweisung warten muss, und er ist nicht mehr (oder weniger) effizient als wenn er nur ein Ohr hatte.

Also da haben Sie es, die Geschichte, wie Todd, unser mutierter CPU-Imitator, die Effizienz (dh die Leistung) künstlich verbessern kann, ohne zusätzliche Waffen zu erhalten.

 -1
Author: Jack_Hu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-12 21:16:09