2010-07-09 5 views
14

Sagen Sie, wenn ich einen Prozessor wie this habe, der # cores = 4, # threads = 4 und ohne Hyper-threading-Unterstützung sagt.Threads vs Kerne

Bedeutet das, dass ich 4 gleichzeitige Programme/Prozesse ausführen kann (da ein Kern nur einen Thread ausführen kann)? Oder bedeutet das, ich kann 4 x 4 = 16 Programm/Prozess gleichzeitig ausführen?

Von meinem Graben, wenn kein Hyper-Threading, wird es nur 1 Thread (Prozess) pro Kern geben. Korrigiere mich, wenn ich falsch liege.

Antwort

10

Das ist grundsätzlich richtig, mit dem offensichtlichen Qualifizierer, dass die meisten Betriebssysteme Sie viel mehr Aufgaben gleichzeitig ausführen können, als es Kerne oder Threads gibt, die sie durch Interleaving der Ausführung von Anweisungen erreichen.

Ein System mit Hyperthreading hat in der Regel doppelt so viele Hardware-Threads wie physikalische Kerne.

+0

Sie möchten vielleicht mit der Verwendung von "gleichzeitig" vorsichtig sein. Für einen Benutzer scheint es, dass einige Aufgaben gleichzeitig ausgeführt werden, aber die tatsächliche Hardware führt möglicherweise nicht alle Aufgaben gleichzeitig aus. Ich denke @mikaelbrandin post mit Infos zu parallel vs. gleichzeitig ist nützlich. – user3731622

+1

@ user3731622 Ich habe diesen genauen Punkt in meiner Antwort gemacht, indem ich erklärt habe, dass CPUs Befehle verschachteln können. Wie könnte ich es klarer machen? –

+0

Ihre Antwort ist wahrscheinlich für erfahrene Leute ziemlich klar. Eine Möglichkeit, wie Sie es für unerfahrene Menschen etwas klarer machen können, ist, wenn Sie eine Form des Wortes simultan oder parallel erscheinen und beschreiben, wie etwas gleichzeitig erscheint, wenn es nicht gleichzeitig ist. – user3731622

5

Der Begriff Thread wird in der Regel als Beschreibung eines Betriebssystemkonzepts verwendet, das Potential unabhängig von anderen Threads ausführen kann. Ob dies der Fall ist, hängt davon ab, ob es auf ein Ereignis wartet (Festplatte oder Bildschirm-E/A, Nachrichtenwarteschlange) oder ob es genug physische CPUs gibt (Hyperthreaded oder nicht), um es anderen Nicht-Wartenden zu ermöglichen Fäden.

Hyperthreading ist ein Begriff aus der CPU-Hersteller, die einen einzelnen Kern bedeutet, der seine Aufmerksamkeit zwischen zwei Berechnungen multiplexen kann. Der einfache Weg, über einen Hyperthread-Kern nachzudenken, ist, als ob Sie zwei echte CPUs hätten, die beide etwas langsamer sind, als die Hersteller sagen, dass der Core das eigentlich kann.

12

Ein Thread unterscheidet sich von einem Prozess. Ein Prozess kann viele Threads haben. Ein Thread ist eine Folge von Befehlen, die eine bestimmte Reihenfolge haben. Ein logischer Kern kann eine Folge von Befehlen ausführen. Das Betriebssystem verteilt alle Threads auf alle verfügbaren logischen Cores. Wenn es mehr Threads als Cores gibt, werden Threads in einem schnellen Cue verarbeitet und der Core wechselt sehr schnell von einem zum anderen.

Es sieht so aus, als würden alle Threads gleichzeitig ausgeführt, wenn das Betriebssystem tatsächlich CPU-Zeit unter ihnen verteilt.

Mehrere Kerne haben den Vorteil, dass weniger gleichzeitige Threads auf einem einzelnen Kern platziert werden, weniger Switching zwischen Threads = höhere Geschwindigkeit.

Hyper-Threading erstellt zwei logische Kerne auf einem physikalischen Kern und ermöglicht ein schnelleres Wechseln zwischen Threads.

2

Grundsätzlich ist dies das Betriebssystem. Ein Thread ist ein High-Level-Konstrukt, das einen Befehlszeiger enthält, und wobei das OS eine Thread-Ausführung auf einem geeigneten logischen Prozessor ablegt. Also mit 4 Kernen können Sie grundsätzlich 4 Anweisungen parallel ausführen. Wo als Thread enthält einfach Informationen darüber, welche Anweisungen ausgeführt werden und die Anweisungen Platzierung im Speicher.

Eine Anwendung verwendet normalerweise einen einzelnen Prozess während der Ausführung und das Betriebssystem wechselt zwischen Prozessen, um allen Prozessen eine "gleiche" Prozesszeit zu geben. Wenn eine Anwendung mehrere Threads bereitstellt, weist der Prozess mehr als einen Slot zur Ausführung zu, teilt jedoch Speicher zwischen Threads.

Normalerweise unterscheiden Sie zwischen gleichzeitiger und paralleler Ausführung. Wenn parallele Ausführung tatsächlich Anweisungen von mehr als einem logischen Prozessor physikalisch ausführt, und gleichzeitige Ausführung ist das häufige Umschalten eines einzelnen logischen Prozessors, was die parallele Ausführung bewirkt.