Différence entre le cœur et le processeur

197

Quelle est la différence entre un cœur et un processeur?

Je l'ai déjà cherché sur Google, mais j'ai juste une définition multicœur et multiprocesseur, mais elle ne correspond pas à ce que je recherche.

Saad Achemlal
la source

Réponses:

197

Un noyau est généralement l'unité de calcul de base du processeur - il peut exécuter un seul contexte de programme (ou plusieurs s'il prend en charge les threads matériels tels que l'hyperthreading sur les processeurs Intel), en maintenant l'état du programme, les registres et l'ordre d'exécution corrects, et effectuer les opérations via les ALU . À des fins d'optimisation, un cœur peut également contenir des caches sur cœur avec des copies de blocs de mémoire fréquemment utilisés.

Un processeur peut avoir un ou plusieurs cœurs pour effectuer des tâches à un moment donné. Ces tâches sont généralement des processus logiciels et des threads que le système d'exploitation planifie. Notez que le système d'exploitation peut avoir de nombreux threads à exécuter, mais le processeur ne peut exécuter X de telles tâches qu'à un moment donné, où X = nombre de cœurs * nombre de threads matériels par cœur. Les autres devront attendre que le système d'exploitation les planifie, que ce soit en préemptant les tâches en cours d'exécution ou tout autre moyen.

En plus du ou des cœurs, le CPU comprendra une certaine interconnexion qui connecte les cœurs au monde extérieur, et généralement également un grand cache partagé de "dernier niveau". Plusieurs autres éléments clés sont nécessaires pour faire fonctionner un processeur, mais leur emplacement exact peut différer selon la conception. Vous aurez besoin d'un contrôleur de mémoire pour communiquer avec la mémoire, des contrôleurs d'E / S (écran, PCIe, USB, etc.). Dans le passé, ces éléments étaient en dehors du CPU, dans le "chipset" complémentaire, mais la plupart des conceptions modernes les ont intégrés dans le CPU.

De plus, le CPU peut avoir un GPU intégré, et à peu près tout le reste que le concepteur voulait garder proche pour des considérations de performances, de puissance et de fabrication. La conception du processeur est principalement orientée vers ce qu'on appelle le système sur puce (SoC).

Il s'agit d'une conception "classique", utilisée par la plupart des appareils polyvalents modernes (PC client, serveurs, mais aussi tablettes et smartphones). Vous pouvez trouver des conceptions plus élaborées, généralement dans l'académie, où les calculs ne sont pas effectués dans des unités de base "de type noyau".

Leeor
la source
@Leeor donc pour une machine à 4 cpu et 2 cœurs, si j'exécute une boucle occupée, ne devrait-elle pas engager seulement 1 cpu et 1 cœur (soit 50%) d'un seul des cpu? Mon observation montre qu'il engage tous les processeurs à 100% ... quelque chose qui manque dans ma compréhension ...
Nrj
2
@Nrj, si vous exécutez une application à un seul thread, elle sera allouée à un seul cœur et activera un seul thread HW dessus. Ce thread pourra utiliser 100% de ce noyau car il n'y a aucun autre thread qui l'accompagne. Si vous activez une autre application, elle sera généralement allouée à un autre cœur, et ainsi de suite jusqu'à saturation du nombre de cœurs. Au-delà, tout thread supplémentaire sera à nouveau planifié sur les mêmes cœurs à l'aide de SMT. À ce stade, l'utilisation du cœur sera répartie entre les 2 threads (et s'ils se comportent de manière symétrique, chacun atteindrait probablement ~ 50%)
Leeor
@Leeor apparemment c'était mon attente mais ce n'est pas ce que j'ai trouvé. J'ai vu que les quatre CPU (dans le gestionnaire de tâches) sautent pour montrer une utilisation à 100%. Le code était simple - pour (int i = 0; i <Integer.MAX_VALUE; i ++) {System.out.println (k); }
Nrj
@Leeor Je pense que j'ai mal fait le test. il ressemble à mon espace de travail en ligne a des processeurs virtuels (4) mais un seul processeur. C'est pourquoi tous s'activent. Lorsque j'ai effectué le test sur une machine physique à 2 processeurs (double cœur), je peux voir que l'utilisation du processeur est d'environ 25%, ce qui est conforme aux attentes.
Nrj
Notez que cette terminologie varie selon la personne à qui vous demandez. Par exemple, sur mon système Debian, en inspectant /proc/cpuinfo, je vois seize processor:lignes, bien que cela soit dit model: AMD Ryzen 7 2700X Eight-Core Processor. Donc, au moins dans ce cas, chacun des 8 "cœurs" a deux "processeurs", ce qui est en contradiction avec d'autres réponses ici.
jwd
130

Une image peut dire plus de mille mots:

Une image peut dire plus de mille mots

* Figure décrivant la complexité d'un système multiprocesseur et multicœur moderne.

La source:

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

JohnTortugo
la source
114
Cela dit probablement plus de mille mots pour les petites créatures comme les fourmis.
Sky
12
Je n'ai rien contre l'utilisation d'images, mais au moins vous pourriez faire une explication supplémentaire, pas seulement copier / coller une image.
Patricio Sard
1
@Sky Attention aux fourmis ... #hunter_x_hunter: 3
Saad Achemlal
Pour ceux qui ont dit qu'il était trop petit pour être lu, essayez de faire un clic droit dessus, Open images in new tabpuis effectuez un zoom avant en utilisant cltr++
Ng Sek Long
28

Clarifions d'abord ce qu'est un CPU et ce qu'est un core, un CPU d'unité centrale de traitement, peut avoir plusieurs unités de base, ces cœurs sont un processeur à lui seul, capable d'exécuter un programme mais il est autonome sur la même puce.

Dans le passé, un processeur était réparti entre plusieurs puces, mais à mesure que la loi de Moore progressait, ils ont créé un processeur complet dans une puce (matrice), depuis les années 90, le fabricant a commencé à installer plus de cœurs dans le même dé, c'est donc le concept de multicœur.

De nos jours, il est possible d'avoir des centaines de cœurs sur le même processeur (puce ou puce) GPU, Intel Xeon. Une autre technique développée dans les années 90 était le multi-threading simultané, fondamentalement, ils ont constaté qu'il était possible d'avoir un autre thread dans le même CPU monocœur, car la plupart des ressources étaient déjà dupliquées comme ALU, plusieurs registres.

Donc, fondamentalement, un processeur peut avoir plusieurs cœurs, chacun d'eux pouvant exécuter un thread ou plus en même temps, nous pouvons nous attendre à avoir plus de cœurs à l'avenir, mais avec plus de difficulté à pouvoir programmer efficacement.

Germán Alfaro
la source
Même " Intel E5-2697 v2 " n'a que 12 cœurs ... Pourquoi dites-vous "des centaines de cœurs sur le même CPU"? Qu'est-ce qui limite le nombre de cœurs possibles sur un seul processeur?
Pacerier
2
Ce sont des microprocesseurs de recherche dans le décompte de +100 cœurs et quelques-uns sur la production se tournent vers: tomshardware.com/forum/318101-28-which-maximum-cores-cores
Germán Alfaro
9

Le CPU est une unité centrale de traitement. Depuis 2002, nous n'avons qu'un seul processeur à cœur, c'est-à-dire que nous n'effectuerons qu'une seule tâche ou un seul programme à la fois.

Pour avoir plusieurs programmes exécutés à la fois, nous devons utiliser le processeur multiple pour exécuter plusieurs processus à la fois, nous avons donc eu besoin d'une autre carte mère pour cela, ce qui est très coûteux.

Ainsi, Intel a introduit le concept d'hyper threading, c'est-à-dire qu'il convertira le processeur unique en deux processeurs virtuels, c'est-à-dire que nous avons deux cœurs pour notre tâche. Maintenant, le CPU est unique, mais il ne fait que prétendre (masqué) qu'il a un CPU double et effectue plusieurs tâches. Mais avoir de vrais cœurs multiples sera mieux que cela, donc les gens développent la fabrication de processeurs multi-cœurs, c'est-à-dire plusieurs processeurs sur une seule boîte, c'est-à-dire la capture d'un processeur multiple sur un seul grand processeur. C'est à dire plusieurs cœurs.

Himanshu Gupta
la source
12
Que s'est-il passé exactement en 2002?
Peter Mortensen
1
Intel n'a pas inventé le concept du multithreading simultané. Wikipedia dit qu'Alpha EV8 a été la première implémentation commerciale majeure .
Peter Cordes
3

Au début ... comme avant les années 90 ... les processeurs n'étaient pas capables de faire des tâches multiples de manière efficace ... car un seul processeur pouvait gérer une seule tâche ... alors quand nous disions que mon antivirus, microsoft word, vlc, etc. les logiciels fonctionnent tous en même temps ... ce n'est pas vrai. Quand j'ai dit qu'un processeur pouvait gérer un seul processus à la fois ... je le pensais. En fait, il traiterait une seule tâche ... puis il avait l'habitude de suspendre cette tâche ... de prendre une autre tâche ... de la terminer si elle était courte ou de la mettre en pause et de l'ajouter à la file d'attente ... puis la suivante. Mais cette «pause» que j'ai mentionnée était si petite (environ 1 ns) que vous ne compreniez pas que la tâche a été interrompue. Par exemple. Sur vlc tout en écoutant de la musique, il y a d'autres applications qui s'exécutent simultanément mais comme je vous l'ai dit ... un programme à la fois ...

Mais il s'agissait des anciens processeurs ...

De nos jours, les processeurs, c'est-à-dire que les ordinateurs de 3e génération ont des processeurs multi-cœurs. Maintenant, les «cœurs» peuvent être comparés à un processeur de 1ère ou de 2e génération lui-même ... intégré sur une seule puce, un seul processeur. Alors maintenant, nous avons compris ce que sont les cœurs, ce sont des mini-processeurs qui se combinent pour devenir un processeur. Et chaque cœur peut gérer un seul processus à la fois ou plusieurs threads comme conçu pour le système d'exploitation. Et ils suivent les mêmes étapes que celles mentionnées ci-dessus à propos du processeur unique.

Par exemple. Un processeur i7 6gen possède 8 cœurs ... soit 8 mini processeurs en 1 i7 ... c'est à dire que sa vitesse est 8 fois plus élevée que les anciens processeurs. Et c'est ainsi que l'on peut effectuer plusieurs tâches.

Il pourrait y avoir des centaines de cœurs dans un seul processeur Par exemple. Intel i128.

J'espère avoir bien expliqué cela.

Hrishikesh Dabir
la source
0

L'image d'Intel est utile, comme le montre la meilleure réponse de Tortuga. Voici une légende pour cela.

Processeur : une puce semi-conductrice, le CPU (unité centrale de traitement) logé dans un socket, vers les années 1950-2010. Au fil du temps, davantage de fonctions ont été intégrées à la puce du processeur. Avant les versions des processeurs monopuce des années 1950, un processeur pouvait s'étendre sur plusieurs puces. Au milieu des années 2010, les puces System-on-a-chip ont rendu un peu plus difficile à assimiler un processeur à une puce, bien que ce soit généralement ce que les gens entendent par processeur, comme dans "cet ordinateur a un processeur i7" ou "ce système informatique". a quatre processeurs. "

Noyau : un bloc d'un CPU, exécutant une instruction à la fois. (Vous verrez des gens dire une instruction par cycle d'horloge, mais certains processeurs utilisent plusieurs cycles d'horloge pour certaines instructions.)

Bennett Brown
la source
1
Un noyau x86 exécute logiquement les instructions une par une, dans l'ordre du programme, mais en réalité, les processeurs modernes dépensent beaucoup de transistors pour préserver l'illusion de le faire tout en étant en fait une exécution hors ordre superscalaire sur 4 larges. realworldtech.com/haswell-cpu . (Ou 5 ou 6 de large, pour Ryzen). Plus de 3 instructions par horloge n'est pas rare en pratique, pour certains codes. Mais bien en dessous de 1 est également courant dans d'autres codes qui goulot d'étranglement sur les échecs de cache et / ou les erreurs de prévision de branche.
Peter Cordes
De plus, les architectures VLIW comme Itanium sont explicitement parallèles et exécutent logiquement et physiquement plusieurs instructions en parallèle. BTW, point historique intéressant qu'un processeur a pris plus d'une puce au début.
Peter Cordes