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.