Was ist Hyper-Threading und wie funktioniert es?


Antworten:


38

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.


6
+1 sollte hinzufügen, dass Hyper-Threading spezifisch für die SMT-Implementierung von Intel ist, z. B. hat der SPARC-Prozessor eine andere Form von SMT implementiert, aber mit ähnlichen Zielen.
Sybreon

@Earlz Schlagen Sie vor, dass der Prozessor zwei Threads ausführt, indem Sie die Kerne in zwei teilen? oder sieht es so aus, als würde die in der Realität durchgeführte Parallelität durch Hyperthreading dazu führen, dass der Prozessor von einem Thread zu einem anderen wechselt?
Doopy Doo

4
@DoopyDoo auch nicht. Grundsätzlich verfügt der Prozessor über zwei "Ausführungskerne", die die Pipeline für Anweisungen und dergleichen darstellen, sowie über zwei Sätze von Registern und andere wichtige Dinge. Der Unterschied zwischen Hyper-Threading und regulärem Dual-Core besteht jedoch darin, dass einige Dinge NICHT sind dupliziert. Beispielsweise kann es nur eine ALU geben. Dies würde bedeuten, dass ein Dual-Core-Prozessor zwei separate Sätze von Zahlen gleichzeitig hinzufügen kann, da ein Hyper-Threading-Prozessor einen der virtuellen Kerne warten lassen muss, bis er mit der ALU an der Reihe ist Natürlich ist dies ein vereinfachtes Beispiel
Earlz

12

Beim Hyper-Threading können zwei Threads auf einem einzigen Thread-Kern ausgeführt werden. Wenn ein Thread auf dem betreffenden Core blockiert oder angehalten ist, kann der Core stattdessen mit Hyper-Threading auf einem zweiten Thread arbeiten.

Hyper-Threading lässt das Betriebssystem vermuten, dass der Prozessor die doppelte Anzahl an Kernen hat, und führt häufig zu einer Leistungsverbesserung, jedoch insgesamt nur in der Größenordnung von 15 bis 30%. Unter bestimmten Umständen kann es jedoch tatsächlich zu einem Leistungseinbruch kommen (= <20%).

Derzeit weisen die meisten Atom-Chips und alle i7-Chips (und Xeon-äquivalente Chips) Hyper-Threading auf, ebenso wie einige ältere P4-Chips. Bei den Atomen handelt es sich um einen verzweifelten Versuch, die Leistung zu verbessern, ohne den Stromverbrauch wesentlich zu erhöhen. Im Fall von i7s unterscheidet es sie von der i5-Chipreihe.

Komplexe Verarbeitungen werden von HT nicht viel profitieren, aber bestimmte (einfache, hochgradig multithreadende) Aufgaben, wie beispielsweise die Videokodierung, profitieren von HT. In Wirklichkeit steckt nicht viel drin ...


95% richtig. Wenn ein normaler Kern = A + B ist, entspricht ein Hyper-Threading-Kern eher A + 2 x B. Sie KÖNNEN zwei Threads gleichzeitig ausführen, solange beide Threads nicht A benötigen.
Vincent Vancalbergh

5

Wenn ein Single Core als Dual Core fungieren kann

es ist Hyperthreading

Im Detail

Intels Implementierung von Simultaneous Multi-Threading ist als Hyper-Threading-Technologie oder HT-Technologie bekannt.

Die HT-Technologie lässt einen einzelnen Prozessor aus
Sicht der Software als mehrere logische Prozessoren erscheinen. Auf diese Weise können Betriebssysteme und Anwendungen mehrere Threads für logische Prozessoren wie
auf Multiprozessorsystemen planen .


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 inaktive Ressourcen besser genutzt werden, was bei bestimmten wichtigen Workload-Typen zu einem höheren Durchsatz führt. Eine Anwendung, die auf einem logischen Prozessor eines ausgelasteten Kerns ausgeführt wird, kann etwas mehr als die Hälfte des Durchsatzes erwarten, den sie erzielt, wenn sie alleine auf einem Prozessor ohne Hyperthread ausgeführt wird. Leistungsverbesserungen beim Hyperthreading hängen stark von der jeweiligen Anwendung ab. Bei einigen Anwendungen kann es zu Leistungseinbußen beim Hyperthreading kommen, da viele Prozessorressourcen (z. B. der Cache) von mehreren logischen Prozessoren gemeinsam genutzt werden.

Dank der Intel Hyper-Threading-Technologie kann jeder Kern über zwei logische Prozessoren verfügen, die die meisten Ressourcen des Kerns gemeinsam nutzen, z. B. Speichercaches und Funktionseinheiten

Hauptfunktion

von Hyperthreading ist es, die Anzahl unabhängiger Befehle in der Pipeline zu erhöhen; Es nutzt die superskalare Architektur, bei der mehrere Befehle parallel auf separate Daten angewendet werden

Laut Intel ist das Hyper-Threading sehr effizient, da es Ressourcen verwendet, die sonst inaktiv oder nicht ausgelastet wären.

Links:

Wikipedia
StackOverflow
Multi-Core-Programmierung Digital_Edition S. 8

Bildbeschreibung hier eingeben

Intel Image


3

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

Sie erhalten einen geringen Geschwindigkeitsvorteil für Multithread-Workloads im Vergleich zu einem normalen Einzelkern. Es ist jedoch nicht annähernd der Vorteil, zwei unabhängige Kerne zu haben. In Bezug auf die Leistung ist es am besten, wenn Sie dies als einen kleinen Anstieg der Multithread-Leistung gegenüber einem einzelnen Kern betrachten, anstatt dass sich die Leistung zwei Kernen nähert. Die Größe der Geschwindigkeitssteigerung variiert je nach Arbeitsbelastung - in der Tat ist die Leistungssteigerung bei einigen Arbeitsbelastungen recht anständig.

Der Hyperthread-Kern weist nur eine Hauptausführungseinheit auf, aber bestimmte andere Teile einer CPU, die mit dem Lesen von Anweisungen zum Verarbeiten und Aufrechterhalten eines Ausführungszustands verbunden sind, werden dupliziert.

Prozessorkerne verfügen über eine Anweisungspipeline - eine Warteschlange zukünftiger auszuführender Anweisungen, die ständig aktualisiert wird und bereit ist, damit die CPU die Anweisung am Anfang dieser Warteschlange ausführt. CPUs verwenden diese, um die Ausführungsgeschwindigkeit zu optimieren, indem sie sich diese zukünftigen Anweisungen ansehen und eine einfache Vorverarbeitung auf niedriger Ebene durchführen, wo dies möglich ist (solche Optimierungen umfassen "Out-of-Order-Ausführung" und "Verzweigungsvorhersage").

Hyperthreaded-Kerne verfügen über Pipelines mit zwei Befehlen, und hier erhalten Sie - zusammen mit einem zweiten Registersatz - den Geschwindigkeitsvorteil für Multithreaded-Workloads. Durch das Wechseln zwischen Thread-Kontexten werden die Pipeline oder die Register nicht gelöscht, und die Pipeline und die Register für den anderen Thread bleiben bereit und "heiß", sodass auf sie gewechselt und sie sofort verwendet werden können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.