Was ist Hyper-Threading und wie funktioniert es?

24722
Gordon Gustafson

Ich habe gehört, dass der Begriff Hyper-Threading in letzter Zeit etwas herumgeworfen wurde. Was genau ist Hyper-Threading und warum ist es wichtig?

30
vs multi core: http://superuser.com/questions/133082/hyper-threading-und-dual-core-whats-the-differenz?rq=1 Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 7 Jahren 0

4 Antworten auf die Frage

23
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.

+1 sollte hinzufügen, dass Hyper-Threading spezifisch für Intels SMT-Implementierung ist, z. B. hat der SPARC-Prozessor eine andere Form von SMT, die jedoch ähnliche Ziele verfolgt. sybreon vor 14 Jahren 5
@Earlz Schlägst du vor, dass der Prozessor zwei Threads ausführt, indem die Kerne in zwei geteilt werden? oder sieht es so aus, als ob Parallelität in der Realität durch Hyperthreading verursacht wird, dass der Prozessor von einem Thread zu einem anderen wechselt? Doopy Doo vor 11 Jahren 0
@DoopyDoo auch nicht. Grundsätzlich hat der Prozessor zwei "Ausführungskerne", die Pipeline für Anweisungen und dergleichen, und er hat auch zwei Registersätze und andere wichtige Dinge. Der Unterschied zwischen Hyper-Threading und regulärem Dual-Core besteht jedoch darin, dass einige Dinge NICHT sind dupliziert. Zum Beispiel kann es nur eine ALU geben. Dies würde also bedeuten, dass ein Dual-Core-Prozessor gleichzeitig zwei getrennte Zahlengruppen hinzufügen kann, da ein Hyper-Threading-Prozessor einen der virtuellen Kerne warten lassen muss, bis er mit der ALU an der Reihe ist Dies ist natürlich ein vereinfachtes Beispiel Earlz vor 11 Jahren 4
9
CJM

Beim Hyper-Threading können zwei Threads auf einem Single-Threaded-Core laufen. Wenn ein Thread auf dem betreffenden Core blockiert oder in einem angehaltenen Zustand ist, ermöglicht Hyper-Threading, dass der Core stattdessen mit einem zweiten Thread arbeitet.

Durch Hyper-Threading glaubt das Betriebssystem, dass der Prozessor die doppelte Anzahl von Prozessorkernen hat und oft zu einer Leistungsverbesserung führt, jedoch nur im Bereich von insgesamt 15-30% - obwohl es in einigen Fällen tatsächlich zu einem Leistungsabfall kommen kann (= <20%).

Derzeit verfügen die meisten Atom-Chips und alle i7-Chips (und Xeon-äquivalente Chips) sowie einige ältere P4s über Hyper-Threading. Bei den Atoms ist es ein verzweifelter Versuch, die Leistung zu verbessern, ohne den Stromverbrauch stark zu erhöhen. Bei i7 unterscheidet es sich von den Chips der i5-Reihe.

Komplexe Verarbeitungsaufgaben profitieren nicht viel von HT, aber bestimmte Aufgaben (einfache Aufgaben mit hohem Multithreading), z. B. Videocodierung, profitieren von HT. In Wirklichkeit ist nicht viel dabei ...

95% korrekt. 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 kein A benötigen. Vincent Vancalbergh vor 10 Jahren 0
2
thomasrutter

Hyperthreading bedeutet, dass ein einzelner CPU-Kern zwei getrennte Ausführungskontexte aufrechterhalten und schnell zwischen diesen wechseln kann, wodurch zwei Kerne auf Hardwareebene effektiv emuliert werden.

Im Vergleich zu einem normalen Single-Core haben Sie bei Multi-Threaded-Workloads einen bescheidenen Geschwindigkeitsvorteil. Es hat jedoch bei weitem nicht den Vorteil, zwei unabhängige Kerne zu haben. In Bezug auf die Leistung sollten Sie es als eine kleine Steigerung der Multithread-Leistung über einen einzelnen Kern betrachten, anstatt sich auf zwei Kerne zu konzentrieren. Die Größe der Geschwindigkeitssteigerung hängt von der Arbeitslast ab - für einige Workloads ist die Leistungssteigerung durchaus anständig.

Der Hyper-Threaded-Core hat nur eine Hauptausführungseinheit, aber bestimmte andere Teile einer CPU, die zum Lesen von Anweisungen zum Verarbeiten und Aufrechterhalten eines Ausführungszustands gehören, sind doppelt vorhanden.

Prozessorkerne haben eine Befehlspipeline - eine Warteschlange zukünftiger auszuführender Befehle, die ständig aktualisiert wird und bereit ist, damit die CPU den Befehl am Kopf dieser Warteschlange ausführen kann. CPUs verwenden diese, um die Ausführungsgeschwindigkeit zu optimieren, indem sie diese zukünftigen Anweisungen betrachten und, wenn möglich, eine einfache Vorverarbeitung auf niedriger Ebene durchführen (solche Optimierungen umfassen "Ausführung außerhalb der Reihenfolge" und "Verzweigungsvorhersage").

Hyperthreaded-Cores verfügen über duale Instruktions-Pipelines. Hier erhalten Sie - zusammen mit einem zweiten Satz von Registern - den Geschwindigkeitsvorteil für Multithread-Workloads. Beim Wechseln zwischen Thread-Kontexten werden weder die Pipeline noch die Register ausgeworfen, und die Pipeline und die Register für den anderen Thread bleiben bereit und "heiß", sodass sie sofort umgestellt und verwendet werden können.

2
Johnny Blaze

Wenn ein Single Core als Dual Core fungieren kann

es ist Hyperthreading

Im Detail

Die Implementierung von Simultaneous Multi-Threading durch Intel 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. Dadurch können Betriebssysteme und Anwendungen mehrere Threads für logische Prozessoren planen, wie
dies bei Multiprozessorsystemen der Fall wäre.


Durch Hyperthreading kann ein einzelner Prozessor zwei Threads gleichzeitig ausführen, jedoch nicht unter allen Bedingungen.

Hyperthreading verdoppelt die Leistung eines Systems nicht, es kann die Leistung erhöhen, 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 stark ausgelasteten Kerns ausgeführt wird, kann etwas mehr als die Hälfte des Durchsatzes erwarten, den sie erzielt, während sie auf einem Prozessor ohne Hyperthreading ausgeführt wird. Hyperthreading-Leistungsverbesserungen sind stark von der Anwendung abhängig. Bei einigen Anwendungen kann es zu Performance-Einbußen bei Hyperthreading kommen, da viele Prozessorressourcen (z. B. der Cache) von logischen Prozessoren gemeinsam genutzt werden.

Die Intel Hyper-Threading-Technologie sorgt dafür, dass jeder Kern über zwei logische Prozessoren verfügen kann, die die meisten Ressourcen des Kerns wie Speichercaches und Funktionseinheiten gemeinsam nutzen

Hauptfunktion

von Hyperthreading besteht darin, die Anzahl unabhängiger Anweisungen in der Pipeline zu erhöhen; Es nutzt die superskalare Architektur, bei der mehrere Befehle parallel mit separaten Daten arbeiten

Intel sagt, dass Hyper-Threading sehr effizient ist, da Ressourcen verwendet werden, die ansonsten im Leerlauf wären oder nicht ausgelastet wären.

Links:

Wikipedia
StackOverflow
Multi-Core-Programmierung Digital_Edition S. 8

Intel Image