Ich habe die Begriffe Hyper-Threading und Multithreading gehört, aber was genau ist der Unterschied zwischen ihnen? Welche Art von Intel-Prozessor verwendet sie?
Ich habe die Begriffe Hyper-Threading und Multithreading gehört, aber was genau ist der Unterschied zwischen ihnen? Welche Art von Intel-Prozessor verwendet sie?
Antworten:
Multithreading bezieht sich auf die allgemeine Aufgabe, mehr als einen Ausführungsthread innerhalb eines Betriebssystems auszuführen. Multithreading ist allgemeiner als „Multiprocessing“, das 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-vollständige 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 verfügbare Zeit in "Slices" aufteilt und ungefähr die gleiche Zeit dafür bereitstellt Jeder Thread (die Zeit muss nicht gleich sein, aber normalerweise wird dies so gemacht, es sei denn, ein Prozess fordert eine höhere Priorität an).
Beachten Sie, dass diese Software-Threads zwischen den verfügbaren Kernen "verschachtelt" werden , wenn zu einem bestimmten Zeitpunkt mehr Software- Threads ausgeführt werden, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen, als verfügbare Hardware- Threads (gleichzeitig) verfügbar sind. Wenn Sie bei einem "Uniprozessor" (einem CPU-Kern ohne Hyperthreading) mehr als einen Software-Thread haben, werden diese immer angezeigtverschachtelt sein. Wenn Sie eine 4-Kern-CPU mit Hyperthreading haben, sind das 8 "Hardware-Threads", was bedeutet, dass die CPU 8 gleichzeitige Ausführungsthreads gleichzeitig ausführen kann. Wenn also 8 Software-Threads versucht haben, ausgeführt zu werden, können alle gleichzeitig ausgeführt werden ;; Wenn Sie jedoch 9 Software-Threads hätten, müsste einer der Hardware-Threads ein Thread-Paar verschachteln (das genaue ausgewählte Thread-Paar würde von der Scheduler-Implementierung des Betriebssystems abhängen).
Hyperthreading hingegen bezieht sich auf eine sehr spezielle Hardwaretechnologie , die von Intel entwickelt wurde und die es einem einzelnen Prozessorkern ermöglicht, mehrere Ausführungsthreads effizienter zu verschachteln. Mit anderen Worten, eine CPU mit Hyperthreading bietet eine Leistung, die etwas höher ist als eine CPU, die ansonsten dieselbe ist, jedoch ohne Hyperthreading, da die Hyperthread-CPU zwei gleichzeitig ausgleichen kann (manchmal mehr, aber Hyperthreading ist normalerweise 2-) Weg) Threads der Ausführung auf einem bestimmten Kern.
Hyperthreading ist jedoch streng langsamer als vollständig getrennte physische Kerne, da es einige Arten von Vorgängen gibt, die die Leistungsvorteile von Hyperthreading stören können, während es weniger Vorgänge gibt, die ein solches Ereignis mit vollständig getrennten Kernen verursachen können.
Nehmen Sie das folgende Beispiel, in dem angenommen wird, dass "1 Kern" in allen Beispielen genau die gleiche Leistung erbringt:
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 manchmal ungefähr so schnell wie Beispiel 4 bei Workloads, die äußerst schlecht geeignet sind, die Optimierungen von Hyperthreading zu nutzen.
Beispiel 3 hingegen kann bei Workloads, bei denen Hyperthreading am vorteilhaftesten ist, manchmal fast so schnell sein wie Beispiel 2, obwohl es halb so viele physische Kerne aufweist.
Beispiel 1 ist natürlich das langsamste aller Beispiele, aber manchmal ist es ungefähr so schnell wie Beispiel 3, wenn eine Workload ausgeführt wird, die für Hyperthreading schlecht geeignet ist.
In realen Benchmarks mit modernen Intel-CPUs stellen wir normalerweise fest, dass Hyperthreading im Allgemeinen zu einer Leistungsverbesserung von 20% bis 40% im Vergleich zu keinem Hyperthreading führt (wobei der Fall "kein Hyperthreading" durch Deaktivieren der Hyperthreading-Funktion in der Tabelle verglichen 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 die Wahl zwischen 4 Kernen mit Hyperthreading oder 8 Kernen hätte, vorausgesetzt, jeder Kern selbst hat die gleiche Leistung, würde ich jedes Mal die 8-Kern-CPU wählen.
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.