Ich habe kürzlich den Begriff Hyper-Threading gehört, was genau ist Hyper-Threading und warum ist es wichtig?
cpu
architecture
hyper-threading
Gordon Gustafson
quelle
quelle
Antworten:
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.
quelle
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 ...
quelle
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
quelle
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.
quelle