Was ist der Unterschied zwischen Multithreading und Hyperthreading?

35824
rose

Ich habe die Begriffe Hyper-Threading und Multi-Threading gehört, aber was genau ist der Unterschied zwischen ihnen? Welche Art von Intel-Prozessor verwendet sie?

8
Sie versuchen Dinge zu vergleichen, die nicht direkt vergleichbar sind. nur verwandt. Es ist wie die Frage "Was ist der Unterschied zwischen einem Fuß und einem Schuh?" Abgesehen davon, was hat Ihre Forschung bisher ergeben? Wo genau werden Sie aufgehängt, den Unterschied anhand von Definitionen zu bestimmen, die im Internet leicht zu finden sind? Ƭᴇcʜιᴇ007 vor 10 Jahren 1
Verwandte Themen: [Hyper-Threading und Dual-Core, was ist der Unterschied?] (Http://superuser.com/questions/133082/hyper-threading-und-dual-core-whats-the-difference?rq=1), [Was ist Hyper-Threading und wie funktioniert es?] (Http://superuser.com/questions/122536/what-is-hyper-threading-and-how-does-it-work?lq=1) Ƭᴇcʜιᴇ007 vor 10 Jahren 1
Ich kenne weder Multithreading noch Hyperthreading. Ich werde gebeten, sie zu kennen rose vor 10 Jahren 1
Die Stack-Überlauf-Nazis haben das Thema als "Off-Topic" geschlossen ... Das ist eine sehr gute Frage, ist beliebt und sollte nicht geschlossen werden. Robbo_UK vor 7 Jahren 0
http://superuser.com/questions/133082/hyper-threading-and-dual-core-whats-the-difference?noredirect=1&lq=1 Ciro Santilli 新疆改造中心 六四事件 法轮功 vor 7 Jahren 0

3 Antworten auf die Frage

17
Horn OK Please

Multithreading bezieht sich auf die allgemeine Aufgabe, mehr als einen Ausführungsthread innerhalb eines Betriebssystems auszuführen. Multithreading ist allgemein als „Multiprocessing“ genannt, was mehrere umfassen kann Systemprozesse (ein einfaches Beispiel auf Windows wäre, beispielsweise zur gleichen Zeit Internet Explorer und Microsoft Word ausgeführt wird ), oder es kann aus einem Verfahren bestehen, die mehrere haben Fäden innerhalb es.

Multithreading (oder sollte ich sagen, Multiprocessing) ist ein Softwarekonzept . Praktisch jede Turing-Komplett-CPU kann Multithreading ausführen, selbst wenn der Computer nur einen CPU-Kern hat und dieser Kern kein Hyperthreading unterstützt. Um die Mehrfachverarbeitung zu unterstützen, verschachtelt die CPU die Ausführung verschiedener Ausführungsthreads, indem sie einen, dann einen anderen und dann einen anderen ausführt, wobei das Betriebssystem die zur Verfügung stehende Zeit in "Slices" aufteilt und ungefähr gleich viel Zeit dafür gibt Jeder Thread (die Zeit muss nicht gleich sein, aber dies wird normalerweise ausgeführt, es sei denn, ein Prozess fordert eine höhere Priorität an).

Beachten Sie, dass immer dann, wenn mehr Softwarethreads der Ausführung zu einem bestimmten Zeitpunkt ausgeführt werden sollen als verfügbare (gleichzeitige) Hardwarethreads verfügbar sind, diese Softwarethreads zwischen den verfügbaren Kernen "verschachtelt" werden. Wenn es sich bei einem "Einprozessor" (ein CPU-Kern ohne Hyperthreading) um mehr als einen Softwarethread handelt, ist dies der Fall immerverschachtelt sein. Wenn Sie über eine 4-Kern-CPU mit Hyperthreading verfügen, handelt es sich um 8 "Hardware-Threads". Dies bedeutet, dass die CPU 8 gleichzeitige Ausführungsthreads gleichzeitig ausführen kann. Wenn also 8 Software-Threads ausgeführt werden sollten, könnten sie alle gleichzeitig ausgeführt werden ; Wenn Sie jedoch über 9 Softwarethreads verfügen, müsste einer der Hardwarethreads ein Paar von Threads verschachteln (das genaue Paar von Threads hängt von der Scheduler-Implementierung des Betriebssystems ab).


Hyperthreading hingegen bezieht sich auf eine von Intel entwickelte, sehr spezifische Hardwaretechnologie, die es einem einzelnen Prozessorkern ermöglicht, mehrere Ausführungsthreads effizienter zu verschachteln. Mit anderen Worten, eine CPU mit Hyperthreading bietet etwas mehr Leistung als eine CPU, die ansonsten die gleiche ist, jedoch nicht ohne Hyperthreading, da die Hyperthreading-CPU zwei gleichzeitig abgleichen kann (manchmal mehr, aber Hyperthreading ist in der Regel 2 - 3). Weg) Threads der Ausführung auf einem bestimmten Kern.

Hyperthreading ist jedoch strikt langsamer als vollständig getrennte physische Kerne, da es einige Arten von Operationen gibt, die die Leistungsvorteile von Hyperthreading beeinträchtigen können, während weniger Operationen dazu führen, dass ein solches Ereignis mit vollständig separaten Kernen verursacht wird.

Nehmen Sie das folgende Beispiel, wobei angenommen wird, dass "1 Kern" in allen Beispielen genau das gleiche Ergebnis liefert:

Beispiel 1: 2 Kerne, kein Hyperthreading.
Beispiel 2: 4 Kerne, kein Hyperthreading.
Beispiel 3: 2 Kerne mit Hyperthreading.
Beispiel 4: 4 Kerne mit Hyperthreading.

In diesem Fall ist Beispiel 4 immer am schnellsten. Beispiel 2 ist möglicherweise in etwa so schnell wie Beispiel 4, wenn Workloads extrem schlecht geeignet sind, um die Optimierungen von Hyperthreading zu nutzen.

Beispiel 3 hingegen kann bei Workloads, bei denen Hyperthreading am vorteilhaftesten ist, manchmal so schnell wie Beispiel 2 sein, obwohl es nur halb so viele physische Kerne hat.

Beispiel 1 ist natürlich von allen Beispielen am langsamsten, kann jedoch manchmal so schnell wie in Beispiel 3 sein, wenn ein Workload ausgeführt wird, das für das Hyperthreading schlecht geeignet ist.

In realen Benchmarks mit modernen Intel-CPUs stellen wir normalerweise fest, dass Hyperthreading zu einer Verbesserung der Leistung um 20% bis 40% führt, verglichen mit keinem Hyperthreading (wobei der Fall "Kein Hyperthreading") durch Deaktivieren der Hyperthreading-Funktion im Benchmarking belegt wird BIOS). Gelegentlich wird es Workloads, wo eine Leistung Hyper - Threading zu deaktivieren zeigt Vorteil, aber diese Workloads können in der tatsächlichen Nutzung selten. Wenn ich jedoch zwischen 4 Kernen mit Hyperthreading oder 8 Kernen wählen könnte, vorausgesetzt, jeder Kern selbst hat die gleiche Leistung, würde ich jedes Mal die 8-Kern-CPU wählen.

Um genau zu sein, sind Multithreading und Multiprocessing nicht dasselbe. Threads teilen den Ausführungskontext mit dem Prozess, dem sie zugeordnet sind, während Prozesse eigene Ausführungskontexte haben. Für diese Antwort ist diese Unterscheidung jedoch nicht so wichtig. Tero Kilkanen vor 10 Jahren 2
Hyperthreading-Technologie wurde nicht "von Intel erstellt"; Für mainline x86 ist es nur ein Markenname für simultanes Multithreading. Wenn der Alpha 21464 produziert worden wäre, wäre er einer der ersten prominenten Anwender von SMT gewesen. Intel hat mit einigen Pentium-4-Geräten die erste veröffentlichte Verwendung von SMT (möglicherweise mit Ausnahme weniger bekannter Prozessoren) hergestellt, aber die Grundidee war keine Erfindung von Intel. Paul A. Clayton vor 10 Jahren 1
Quibble: Hyperthreading ist nicht strikt langsamer als separate Kerne. Man kann (künstliche) Fälle entwickeln, in denen die gemeinsame Nutzung von L1-Caches von größerem Nutzen ist als die volle Nutzung der Ressourcen eines Kerns. Ein anderer besonderer Fall könnte der Fall sein, wenn ein Thread permanent aktiv ist und ein anderer kurzzeitig intermittierende Ereignisse behandelt. Das zeitweilige Aufwecken eines Kerns ist teurer als das Aufwachen eines Fadens auf einem aktiven Kern. Wenn für Threads mit extrem niedrigem ILP kein Cache-Konflikt auftritt, kann die höhere Energieeffizienz der Verwendung eines einzelnen Kerns ein größeres Turboboosting (bessere Leistung) ermöglichen. Paul A. Clayton vor 10 Jahren 2
Die Antworten können auf SU bearbeitet werden. Wenn Sie es also verbessern möchten, fühlen Sie sich bitte frei. Beachten Sie auch den scheinbaren Wissensstand des OP. Sogar meine Antwort allein ist wahrscheinlich technischer als sie erwartet oder gewollt haben. Ich habe absichtlich einige Details zugunsten der leichteren Erklärung beschönigt. Ich bezweifle, dass das OP in Kürze Prozessoren entwickeln wird und unbedingt alle diese Details kennen muss. Interessante Kommentare trotzdem. Horn OK Please vor 10 Jahren 1
Änderungsvorschläge, die den Inhalt ändern (dh nicht nur Grammatik- / Tippfehler korrigieren oder aus Gründen der Klarheit umformulieren) werden wahrscheinlich abgelehnt. Paul A. Clayton vor 10 Jahren 1
4
Tero Kilkanen

Multithreading ist ein Begriff für die parallele Verarbeitung auf Betriebssystemebene. Der Prozessor hat nichts mit Multithreading zu tun.

Hyperthreading ist ein Intel-Konzept, das die "gleichzeitige" Verarbeitung mehrerer Threads in einem einzelnen Prozessorkern implementiert. Das Betriebssystem sieht zwei Prozessorkerne, obwohl es nur einen physischen Kern gibt.

-1
mtak

Hyperthreading ist die Implementierung von (simultanem) Multithreading durch Intel.

Anders als etwa Multi-Core oder SMP? ;) Ƭᴇcʜιᴇ007 vor 10 Jahren 1
Falsch: Siehe die Antwort von allquixotic. Tonny vor 10 Jahren 1
Multithreading bezieht sich auch auf ein Computerarchitekturkonzept anstelle von Softwarearchitektur: http://en.m.wikipedia.org/wiki/Multithreading_(computer_architecture) mtak vor 10 Jahren 2
Technisch wurde Hyperthreading auch auf Itanium's Switch-on-Event-MultiThreading angewendet, dh es scheint ein allgemeiner Intel-Name für Hardware-Multithreading zu sein. Bisher hat Intel Fine-Grained MT (Interleaved) oder SoEMT nicht in Mainline x86 implementiert. (Xeon Phi * ist * vielleicht ein Mittelweg zwischen flexibler Verschachtelung und Laufverarbeitung, da Befehle aus demselben Thread nicht in Back-to-Back-Zyklen ausgegeben werden können, aber es gibt 4 Threads. Hyperthreading scheint für Xeon Phi nicht verwendet zu werden. ) Paul A. Clayton vor 10 Jahren 1
Um zu verdeutlichen, scheint der * Begriff * Hyperthreading nicht auf Xeon Phi angewendet zu werden * (obwohl es mehr "Hyper" in der Thread-Wechselrate ist als Itanium-Hyperthreading [jeder Zyklus vs. grobkörnigeres Schalten] und mehr "Hyper". Anzahl der Threads als bei jedem anderen Hyperthreading [4 vs. 2 Threads]). Paul A. Clayton vor 10 Jahren 1