Unterschied zwischen Kern und Prozessor


197

Was ist der Unterschied zwischen einem Kern und einem Prozessor?

Ich habe bereits bei Google danach gesucht, aber ich habe nur eine Multi-Core- und Multi-Prozessor-Definition, aber es stimmt nicht mit dem überein, was ich suche.

Antworten:


196

Ein Kern ist normalerweise die grundlegende Recheneinheit der CPU - er kann einen einzelnen Programmkontext ausführen (oder mehrere, wenn er Hardwarethreads wie Hyperthreading auf Intel-CPUs unterstützt), wobei der richtige Programmstatus, die richtigen Register und die richtige Ausführungsreihenfolge beibehalten werden Ausführen der Operationen über ALUs . Zu Optimierungszwecken kann ein Core auch On-Core-Caches mit Kopien häufig verwendeter Speicherblöcke enthalten.

Eine CPU kann einen oder mehrere Kerne haben, um Aufgaben zu einem bestimmten Zeitpunkt auszuführen. Diese Aufgaben sind normalerweise Softwareprozesse und Threads, die vom Betriebssystem geplant werden. Beachten Sie, dass auf dem Betriebssystem möglicherweise viele Threads ausgeführt werden müssen, die CPU jedoch nur X solcher Aufgaben zu einem bestimmten Zeitpunkt ausführen kann, wobei X = Anzahl der Kerne * Anzahl der Hardware-Threads pro Kern. Der Rest müsste warten, bis das Betriebssystem sie geplant hat, indem er aktuell ausgeführte Aufgaben oder andere Mittel verhindert.

Zusätzlich zu dem einen oder den mehreren Kernen enthält die CPU eine Verbindung, die die Kerne mit der Außenwelt verbindet, und normalerweise auch einen großen gemeinsam genutzten Cache der letzten Ebene. Es sind mehrere andere Schlüsselelemente erforderlich, damit eine CPU funktioniert, aber ihre genauen Positionen können je nach Design unterschiedlich sein. Sie benötigen einen Speichercontroller, um mit dem Speicher zu kommunizieren, E / A-Controller (Display, PCIe, USB usw.). In der Vergangenheit befanden sich diese Elemente außerhalb der CPU im komplementären "Chipsatz", aber das modernste Design hat sie in die CPU integriert.

Darüber hinaus verfügt die CPU möglicherweise über eine integrierte GPU und so ziemlich alles, was der Entwickler aus Gründen der Leistung, Leistung und Herstellung in der Nähe halten wollte. Das CPU-Design tendiert hauptsächlich zu dem, was als System on Chip (SoC) bezeichnet wird.

Dies ist ein "klassisches" Design, das von den meisten modernen Allzweckgeräten (Client-PC, Server sowie Tablet und Smartphone) verwendet wird. Aufwändigere Entwürfe finden Sie normalerweise in der Akademie, wo die Berechnungen nicht in grundlegenden "kernartigen" Einheiten durchgeführt werden.


@Leeor also für eine 4-CPU- und 2-Kern-Maschine, wenn ich eine Besetzt-Schleife laufen lasse, sollte sie nicht nur 1 CPU und 1 Kern (dh 50%) von nur einer der CPUs aktivieren? Meine Beobachtung zeigt, dass die gesamte CPU zu 100%
aktiviert ist

2
@Nrj, wenn Sie eine Single-Thread-Anwendung ausführen, wird sie einem einzelnen Core zugewiesen und aktiviert nur einen einzelnen HW-Thread. Dieser Thread kann 100% dieses Kerns nutzen, da kein anderer Thread mitläuft. Wenn Sie eine andere Anwendung aktivieren, wird diese normalerweise einem anderen Kern zugewiesen usw., bis Sie die Anzahl der Kerne gesättigt haben. Darüber hinaus wird jeder zusätzliche Thread mithilfe von SMT erneut auf denselben Kernen geplant. Zu diesem Zeitpunkt wird die
Kernauslastung auf die

@ Leeor anscheinend war dies meine Erwartung, aber es ist nicht das, was ich gefunden habe. Ich habe gesehen, dass alle vier CPUs (im Task-Manager) springen, um eine 100% ige Auslastung anzuzeigen. Der Code war einfach - für (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj

@Leeor Ich glaube, ich habe den Test falsch gemacht. Es sieht so aus, als hätte mein Online-Arbeitsbereich virtuelle CPUs (4), aber einen einzigen Prozessor. Deshalb sind alle beschäftigt. Wenn ich den Test auf einer physischen 2-CPU-Maschine (Dual Core) durchgeführt habe, kann ich feststellen, dass die CPU-Auslastung etwa 25% beträgt, was den Erwartungen entspricht.
Nrj

Beachten Sie, dass diese Terminologie je nach Fragesteller unterschiedlich ist. Zum Beispiel /proc/cpuinfosehe ich auf meinem Debian-System beim Inspizieren sechzehn processor:Zeilen, obwohl es heißt model: AMD Ryzen 7 2700X Eight-Core Processor. Zumindest in diesem Fall hat jeder der 8 "Kerne" zwei "Prozessoren", was hier im Widerspruch zu einigen anderen Antworten steht.
JWD

130

Ein Bild kann mehr als tausend Worte sagen:

Ein Bild kann mehr als tausend Wörter sagen

* Abbildung zur Beschreibung der Komplexität eines modernen Multi-Prozessor-Multi-Core-Systems.

Quelle:

https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization


114
Es sagt wahrscheinlich mehr als tausend Worte für kleine Kreaturen wie Ameisen.
Himmel

12
Ich habe nichts gegen die Verwendung von Bildern, aber zumindest könnten Sie eine weitere Erklärung abgeben, nicht nur ein Bild kopieren / einfügen.
Patricio Sard

1
@ Sky Seien Sie vorsichtig mit Ameisen ... #hunter_x_hunter: 3
Saad Achemlal

Für diejenigen, die sagten, es sei zu klein zum Lesen, klicken Sie mit der rechten Maustaste darauf und Open images in new tabzoomen Sie dann mit cltr++
Ng Sek Long

28

Lassen Sie uns zunächst klären, was eine CPU und was ein Kern ist, eine Zentraleinheit. Die CPU kann mehrere Kerneinheiten haben. Diese Kerne sind ein Prozessor für sich, der ein Programm ausführen kann, aber auf demselben Chip in sich geschlossen ist.

In der Vergangenheit wurde eine CPU auf einige Chips verteilt, jedoch nach Moores Gesetz fortschritt, wurde eine vollständige CPU in einem Chip (Chip) installiert, seit den 90er Jahren begann der Hersteller, mehr Kerne in denselben Chip einzubauen Konzept des Multi-Core.

In diesen Tagen ist es möglich, Hunderte von Kernen auf derselben CPU-GPU (Chip oder Die), Intel Xeon, zu haben. Eine andere in den 90er Jahren entwickelte Technik war das gleichzeitige Multithreading. Grundsätzlich stellten sie fest, dass es möglich war, einen anderen Thread in derselben Single-Core-CPU zu haben, da die meisten Ressourcen bereits wie ALU, mehrere Register, dupliziert wurden.

Grundsätzlich kann eine CPU mehrere Kerne haben, von denen jeder einen oder mehrere Threads gleichzeitig ausführen kann. Wir können davon ausgehen, dass in Zukunft mehr Kerne vorhanden sind, jedoch mit größerer Schwierigkeit, effizient programmieren zu können.


Sogar " Intel E5-2697 v2 " hat nur 12 Kerne ... Warum sagen Sie "Hunderte von Kernen auf derselben CPU"? Was begrenzt die Anzahl der Kerne, die auf einer einzelnen CPU möglich sind?
Pacerier

2
Sie sind Forschungsmikroprozessoren mit einer Anzahl von +100 Kernen und einige in der Produktion finden Sie unter: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro

9

Die CPU ist eine Zentraleinheit. Seit 2002 haben wir nur einen einzelnen Kernprozessor, dh wir führen jeweils nur eine einzelne Aufgabe oder ein Programm aus.

Um mehrere Programme gleichzeitig ausführen zu können, müssen wir mehrere Prozesse gleichzeitig ausführen, um mehrere Prozesse auszuführen. Daher haben wir dafür ein anderes Motherboard benötigt, und das ist sehr teuer.

Daher hat Intel das Konzept des Hyper-Threading eingeführt, dh es wird die einzelne CPU in zwei virtuelle CPUs konvertieren, dh wir haben zwei Kerne für unsere Aufgabe. Jetzt ist die CPU einzeln, aber sie gibt nur vor (maskiert), dass sie eine doppelte CPU hat und mehrere Aufgaben ausführt. Es ist jedoch besser, echte mehrere Kerne zu haben, sodass die Leute einen Multi-Core-Prozessor entwickeln, dh mehrere Prozessoren auf einer einzigen Box, dh mehrere CPUs auf einer großen CPU. Dh mehrere Kerne.


12
Was genau ist im Jahr 2002 passiert?
Peter Mortensen

1
Intel hat das Konzept des simultanen Multithreading nicht erfunden. Laut Wikipedia war Alpha EV8 die erste große kommerzielle Implementierung .
Peter Cordes

3

In den frühen Tagen ... wie vor den 90ern ... waren die Prozessoren nicht in der Lage, mehrere Aufgaben so effizient auszuführen ... weil ein einzelner Prozessor nur eine einzige Aufgabe erledigen konnte ... also, als wir sagten, dass meine Antivirus, Microsoft Word, VLC usw. Software läuft alle gleichzeitig ... das stimmt eigentlich nicht. Als ich sagte, ein Prozessor könne jeweils einen Prozess verarbeiten ... meinte ich es auch so. Es würde tatsächlich eine einzelne Aufgabe verarbeiten ... dann pausierte es diese Aufgabe ... nahm eine andere Aufgabe an ... erledigte sie, wenn es eine kurze war, oder pausierte sie erneut und fügte sie der Warteschlange hinzu ... dann die nächste. Aber diese 'Pause', die ich erwähnte, war so klein (ca. 1 ns), dass Sie nicht verstanden haben, dass die Aufgabe angehalten wurde. Z.B. Auf vlc laufen während des Musikhörens andere Apps gleichzeitig, aber wie ich Ihnen bereits sagte ... ein Programm nach dem anderen ...

Aber hier ging es um die alten Prozessoren ...

Heutzutage haben Prozessoren, dh PCs der 3. Generation, Prozessoren mit mehreren Kernen. Jetzt können die 'Kerne' mit einem Prozessor der 1. oder 2. Generation selbst verglichen werden ... eingebettet in einen einzelnen Chip, einen einzelnen Prozessor. Jetzt haben wir verstanden, was Kerne sind, dh sie sind Miniprozessoren, die sich zu einem Prozessor verbinden. Und jeder Kern kann jeweils einen Prozess oder mehrere Threads verarbeiten, wie für das Betriebssystem vorgesehen. Und sie folgen den gleichen Schritten wie oben für den einzelnen Prozessor.

Z.B. Ein i7 6gen Prozessor hat 8 Kerne ... dh 8 Miniprozessoren in 1 i7 ... dh seine Geschwindigkeit ist 8x mal so hoch wie die der alten Prozessoren. Und so kann Multitasking durchgeführt werden.

Es könnten Hunderte von Kernen in einem einzelnen Prozessor sein, z. Intel i128.

Ich hoffe ich habe das gut erklärt.


0

Intels Bild ist hilfreich, wie Tortugas beste Antwort zeigt. Hier ist eine Bildunterschrift dafür.

Prozessor : Ein Halbleiterchip, die CPU (Zentraleinheit) in einem Sockel, ca. 1950er-2010er Jahre. Im Laufe der Zeit wurden mehr Funktionen auf den CPU-Chip gepackt. Vor den 1950er-Versionen von Single-Chip-Prozessoren war ein Prozessor möglicherweise auf mehrere Chips verteilt. Mitte der 2010er Jahre machten es die System-on-a-Chip-Chips etwas skizzenhafter, einen Prozessor einem Chip gleichzusetzen, obwohl dies im Allgemeinen unter Prozessor zu verstehen ist, wie in "Dieser Computer hat einen i7-Prozessor" oder "Dieses Computersystem" hat vier Prozessoren. "

Kern : Ein Block einer CPU, der jeweils einen Befehl ausführt. (Sie werden sehen, dass Leute einen Befehl pro Taktzyklus sagen, aber einige CPUs verwenden für einige Befehle mehrere Taktzyklen.)


1
Ein x86-Kern führt Befehle logisch einzeln in Programmreihenfolge aus, aber in Wirklichkeit geben moderne CPUs eine Menge Transistoren aus, um die Illusion zu bewahren, dies zu tun, während sie tatsächlich eine 4-breite superskalare Ausführung außerhalb der Reihenfolge sind. realworldtech.com/haswell-cpu . (Oder 5 oder 6 breit für Ryzen). Mehr als 3 Anweisungen pro Uhr sind in der Praxis für einige Codes nicht selten. Weit unter 1 ist jedoch auch in anderen Codes häufig, die Engpässe bei Cache-Fehlern und / oder Verzweigungsfehlvorhersagen aufweisen.
Peter Cordes

Außerdem sind VLIW-Architekturen wie Itanium explizit parallel und führen sowohl logisch als auch physisch mehrere Anweisungen parallel aus. Übrigens, interessanter historischer Punkt, dass eine CPU in den frühen Tagen mehr als einen Chip benötigt hat.
Peter Cordes
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.