Was sind Threads und was machen sie im Prozessor?


27

Ich habe mir die Statistiken für die Intel Pentium e5700- CPU angesehen.

Es hat zwei Kerne und zwei Threads. Was tun die Threads für den Prozessor? Gibt es einen Zusammenhang zwischen der Anzahl der Kerne und der Anzahl der Threads? Welchen Zweck erfüllen Threads für das System insgesamt?


Es ist entweder die Anzahl der Threads, die die CPU gleichzeitig verarbeiten kann, oder eine falsche Statistik, die Intel erfunden hat.
digitxp

3
Abgestimmt als IMO zu schließen, ist dies zu allgemein - während ich immer sehr zögerlich bin, "nur Google it" zu sagen, besteht der Zweck von Super User (und ähnlichen Websites) darin, echte Fragen zu beantworten, und nicht, ein Wörterbuch für Fachbegriffe zu sein, das sind leicht in angemesseneren Ressourcen nachzuschlagen.
Shinrai

3
@ Shinrai Ich habe dies bearbeitet, um es weniger allgemein zu machen
Simon Sheehan

Antworten:


21

Die Anzahl der Kerne ist die physische Anzahl der Kerne auf dem CPU-Chip selbst, während die Anzahl der Threads die Anzahl der einzelnen Anwendungsthreads ist, die gleichzeitig auf der CPU selbst ausgeführt werden können. Ohne zusätzliche oder spezielle Hardware entspricht dies der Kernanzahl. Einige Prozessoren haben jedoch mehr Threads als Kerne.

Einige Intel-CPUs verfügen über eine Funktion namens Hyperthreading , mit der ein Betriebssystem die doppelte Anzahl logischer Kerne pro physischem Kern erkennen kann. Auf diese Weise kann das Betriebssystem die doppelte Anzahl von Threads gleichzeitig planen und ausführen. Bei der oben verknüpften CPU gibt es also vier physische Kerne, aber acht logische (Sie können also acht Threads gleichzeitig ausführen).

Jede einzelne Anwendung, die im Betriebssystem ausgeführt wird, ist entweder ein oder mehrere Threads (stellen Sie sich jeden Thread als "Unteranwendung" vor). Single-Threaded-Anwendungen benötigen nur einen Thread, um auf der CPU ausgeführt zu werden, wohingegen bei Multi-Threaded-Anwendungen viele Sub-Threads gleichzeitig ausgeführt werden. Durch zusätzliche Kerne oder Hyper-Threading können mehrere Anwendungsthreads gleichzeitig ausgeführt werden.

Auf diese Weise können Anwendungen mit mehreren Threads ( nicht mit einem einzigen Thread) viel schneller ausgeführt werden, da auf der CPU mehrere Threads gleichzeitig ausgeführt werden können.


Nur eine letzte Anmerkung: Hyperthreading verbessert die Leistung einiger speziell dafür optimierter Multithread-Anwendungen (da logisch immer noch nur die Hälfte der physischen Kerne vorhanden ist). In einigen verschiedenen Fällen können Anwendungen schneller laufen mit Hyperthreading deaktiviert (obwohl viele Anwendungen nicht von ihnen profitieren). Unabhängig vom Hyperthreading kommt eine Erhöhung der Anzahl der physischen Kerne immer Multithread-Anwendungen zugute.


1
Könnten Sie vielleicht erklären, was Threads für den Prozessor tun? +1 für die Erwähnung von Hyperthreading, wie es derzeit üblich ist (scheint in allen i3 zu sein)
Simon Sheehan

Jeder Prozess hat mindestens einen Thread. Wenn der Prozess die CPU einschaltet, wird der Hauptthread ausgeführt, bis die CPU eingeschaltet ist. Ein Prozess kann einen anderen Thread erzeugen, und jetzt werden zwei Teile desselben Prozesses ausgeführt und fragen nach CPU-Turns. Alle Prozesse sind Programme, und mit diesem Mechanismus können zwei Dinge in demselben Programm gleichzeitig ausgeführt werden. Es ist schneller als das Erstellen eines neuen Prozesses (z. B. Forken oder Laden eines neuen Programms), aber weniger sicher. Prozesse sind voneinander isoliert, Threads eines Prozesses nicht.
LawrenceC

Was ist, wenn ich ein Multithread-Java-Programm mit 50 gleichzeitig ausgeführten Threads erstellt habe und es auf dem Intel i7-4790K mit 4 Kernen und 8 Threads ausführe? Bedeutet dies, dass nur 8 dieser 50 Threads in der Java-Anwendung gleichzeitig ausgeführt werden und der Rest sich in einer Warteschlange befindet? Wie funktioniert das
Donato

@Donato Das Betriebssystem unterbricht alle laufenden Threads, damit die anderen einige Zeit Zeit haben, ihre Arbeit abzuschließen. Zu einem bestimmten Zeitpunkt laufen nur 8 Threads auf der CPU, und jeder Core wechselt ständig zwischen verschiedenen Threads. Es ist hilfreich, sie als "Jobs" zu betrachten (wobei Jobs auch eine Priorität zugewiesen werden können). Jeder Kern tun einige Arbeit für einen bestimmten Thread, und dann wird durch das Betriebssystem des Task - Scheduler unterbrochen auf einen anderen Job zu bewegen, tun einige Arbeit an diesem Job, und so weiter und so vierten, bis der Auftrag abgeschlossen ist.
Durchbruch

@Breakthrough, Re " damit Sie acht Threads gleichzeitig ausführen können ", Was sind die Einschränkungen einer solchen Gleichzeitigkeit im Vergleich zur wahren Gleichzeitigkeit, die einzelne reale Kerne bieten? Wie ist es auch möglich, dass " Anwendungen bei deaktiviertem Hyperthreading möglicherweise schneller ausgeführt werden "?
Pacerier

9

Ein "Kern" stellt eine tatsächliche physische Teilmenge eines Prozessors dar, der die Verarbeitung selbst erledigen kann, wohingegen ein "Thread" angibt, wie viele tatsächliche Prozesse der Prozessor auf einmal erledigen kann. Intel hat eine Technologie entwickelt, die als "Hyper-Threading" bezeichnet wird. Diese Technik ermöglicht, dass ein physischer Kern (der normalerweise nur einen Thread gleichzeitig verarbeiten kann) jetzt zwei Threads gleichzeitig verarbeiten kann.

Ein Thread ist eine Aufgabe, die der Prozessor erledigen muss. Für eine einfache Erklärung können Sie davon ausgehen, dass jede Anwendung, die Sie öffnen (z. B. Paint, Editor, Media Player), einen eigenen Thread hat. Dies bedeutet jedoch nicht, dass Sie nur öffnen können 2 Anwendungen auf einmal, einfach weil der Prozessor und das Betriebssystem beim "Wechseln von Threads" so schnell arbeiten, um die Anforderungen jeder Anwendung zu erfüllen, die Sie geöffnet haben. Sie werden einfach eine bessere Leistung mit mehr Kernen erzielen, da Sie jetzt die gesamte Arbeit auf mehr Kernprozessoren verteilen können.

Auf meinem Arbeitscomputer befindet sich beispielsweise ein i7. Der i7 verfügt über 4 physische Kerne, aber jeder Kern kann Hyper-Threading ausführen, wodurch dieser Prozessor 8 Threads gleichzeitig verarbeiten kann. Wenn ich den Task-Manager öffne, werden 8 Felder für die Prozessorleistungsskala angezeigt.

Eine allgemeine Faustregel lautet, dass mehr physische Kerne besser sind als mehr Threads. Wenn Sie also einen Prozessor mit 4 Kernen und 4 Threads vergleichen, wären 4 Threads besser als 2 Kerne. Je mehr Threads Ihr Prozessor verarbeiten kann, desto besser ist die Leistung beim Multitasking. Bei einigen sehr intensiven Anwendungen (Videobearbeitung, CAD, CAM, Komprimierung, Verschlüsselung usw.) wird jeweils mehr als ein Kern gleichzeitig verwendet.


Was meinst du mit "Boxen"?
Pacerier


-1

Klicken auf Links in einem Artikel in IE oder Chrome, jedes Mal, wenn Sie klicken, erstellen Sie einen Thread. Je mehr Sie auf Links klicken, desto mehr Threads. Bei einer 4-Kern-CPU haben Sie bis zu 8 Threads. Sie können 8 Links öffnen, bevor Sie ein Problem haben. Missachtung Ihrer Internetverbindung. Jeder Kern deckt also zwei der von Ihnen geöffneten Links (Threads) ab. Das ist die Idee, IMO. ob dies für irgendjemanden einen Sinn ergibt.


Nein, dies ist nicht das, was Threads im Kontext von CPUs oder der gestellten Frage sind.
music2myear
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.