Quelle Est La Différence Entre Un “Cœur” Et Un “Thread” CPU

Si vous êtes à la recherche d’un nouveau PC, que ça soit pour jouer ou faire de la bureautique, vous avez probablement déjà entendu parler de CPU core (ou coeur en français) et de thread.

Et donc, vous voulez savoir quelle est la différence entre un cœur et un thread sur un CPU.

Dans cet article je vais vous donner une réponse définitive à cette question.

La différence entre un cœur et un thread, est que un cœur CPU est physiquement présent sur le processeur alors qu’un thread correspond à une séquence d’instructions qu’un cœur va exécuter. Grâce aux technologies de multi-threading (Hyperthreading pour Intel et SMT pour AMD), un cœur peut exécuter 2 threads à la fois. Mais ce n’est pas équivalent à l’exécution de deux threads sur deux cœurs différent. Le multi-threading permet d’optimiser l’exécution de 2 threads par un même coeur, mais n’est pas aussi performant que l’utilisation de plusieurs cœurs physiques. 

La principale différence entre un Core et un Thread

La différence numéro entre un core et un thread est qu’un core est physiquement présent sur la puce électronique qui constitue le processeur.

C’est-à-dire que vous pouvez distinguer physiquement chaque core de processeur sur le circuit électronique du processeur.

Comme vous pouvez le voir sur l’image ci-dessous, on retrouve les CPU cores en vert de part et d’autre de la mémoire cache.

Il s’agit du photo du circuit imprimé d’un CCX sur un processeur AMD Zen 2.

Les Threads sont uniquement logiques. C’est une séquence d’instruction que doit exécuter le processeur. Avec le multi-threading le processeur prend en charge 2 threads à la fois. Cela dit les CPUs core doivent être conçus pour supporter plusieurs threads aussi appelé le Multi-threading.

Un core qui n’est pas conçu et fabriqué pour supporter le multi-threading ne peut pas les activer avec une mise à jour logiciel.

Cela dit certains processeurs peuvent supporter plusieurs threads, c’est juste que le fabricant à décider de désactiver cette fonctionnalité pour segmenter sa gamme de produit.

Aujourd’hui avec la technologie du multi-threading un processeur gérer 2 threads à fois. On les appelle alors des « cœurs logiques » par opposition au « cœurs physiques ».

Maintenant que vous savez grossièrement ce qu’est un cœur et un thread, il est temps de voir ce que cette différence implique.

Cœur avec Multithreading et Cœur sans Multi-threading

Avant l’arrivée des technologies de multi-threading (Hyperthreading pour Intel et SMT pour AMD), un cœur était attaché à un thread.

Concrètement cela veut dire qu’un core ne peut s’occuper que d’une « tâche » à la fois.

Le multi-threading est une forme de parallélisation qui permet à un core de s’occuper de 2 « tâches » en même temps.

C’est une technologie d’optimisation du travail de chaque core ce qui lui permet de gérer ces 2 « tâches » à la fois.

Cette optimisation du travail génère dans la grande majorité des cas un gain en performance, le core « travail » plus efficacement pour gérer deux tâches à la fois.

Et donc le cœur de votre CPU n’est pas divisé en deux pour créer deux cœurs logiques, ce n’est pas comme ça qu’il faut le voir.

Il faut voir le multi-threading comme étant un assistant qui aide le travail du processeur à géré plus efficacement 2 tâches en même temps.

Un cœur sans multi-threading est un donc dépourvu de cet assistant, il n’est pas capable de gérer deux tâches aussi efficacement.  Cela se traduit, en général, par une perte de performance par rapport à un cœur avec le multi-threading.

Cœur physique vs Cœur logique

Si vous avez compris ce que je vous raconte depuis le début, alors vous devriez deviner assez rapidement qu’avoir plus de cœurs physiques est largement supérieur en termes de performance que d’avoir des cœurs logiques.

En effet alors que le multithreading permet à un cœur de mieux gérer 2 taches à la fois par rapport à un cœur qui n’est pas multi-threadé, avoir 2 cœurs séparé permet de réellement traiter deux tâches en parallèle.

Le gain de performance est alors beaucoup plus important en ajoutant des cœurs physiques qu’avec des cœurs logiques (à supposer que les tâches sont parallélisables, mais c’est un problème pour les développeurs).

De manière générale, il est donc bien plus intéressant d’avoir plus de cœurs physiques.

Avoir des cœurs logiques en plus par exemple un CPU qui 4 cœurs et 8 Threads, sera plus performant qu’un CPU avec 4 cœurs et 4 threads.

C’était la distinction que faisait Intel entre les i7 et les i5. De ce fait grâce à l’Hyperthreading les i7 étaient plus performant que les i5.

Mais cela n’en faisait pas de véritable 8 cœurs pour autant…

En effet un processeur 6 cœurs sera en général plus performant que notre i7 à 8 threads (à supposer qu’il s’agit de la même architecture CPU).

Les performances qu’apporte l’Hyperthreading par rapport à plus de coeur physique

Comme je vous l’ai dit précédemment l’Hyperthreading permet de mieux utiliser le cœur d’un CPU pour s’occuper de deux tâches à la fois.

Pour mesurer ce gain de performance, j’ai décidé de lancer sur mon ordinateur le logiciel de tester de performance CPU le plus connus : Cinebench R20.

Il permet de tester les performances de son processeur en attribuant un score par rapport à la vitesse que va prendre votre CPU pour finir le rendu de la scène 3D.

Plus le score est élevé plus votre processeur est performant.

Voici le score de mon i9 9900K sans l’Hyperthreading dans cette configuration le CPU à 8 cœurs et 8 Threads. Il fait un score de 3255.

Et voici maintenant son score avec L’Hyperthreading activé : 4750 points. Dans cette configuration le processeur à toujours 8 cœurs mais 16 Threads.

Il y a une différence de 32% entre ces deux scores.

30% c’est le gain maximal que l’on peut obtenir avec de l’Hyperthreading, cela concorde avec les propos d’Intel, et sur ce que l’on trouve un peu partout sur le net.

Cela veut dire que concrètement un cœur avec l’Hyperthreading sera 30% plus rapide qu’un cœur sans.

Si l’on compare ça avec l’ajout de cœurs physique sur le CPU, on comprend bien que l’Hyperthreading n’est pas aussi efficace.

Si vous doubler le nombre de cœur de votre CPU, vous pouvez vous attendre à doubler les performances en théorie.

En pratique toutes les tâches ne sont pas parallélisables par conséquent, le gain de performance qu’ajoute l’Hyperthreading est moindre.

On est plutôt autour des 10 à 15% ce qui est beaucoup moins intéressant.

Tout comme l’ajout de cœur sur un processeur, si les tâches ne sont pas exécutables en parallèles, le gain sera alors beaucoup moins important.

C’est particulièrement vrai pour du gaming ou l’utilisation des cœurs du processeur n’est toujours évidente pour les développeurs et donc le gaming favorise des cœurs rapide plutôt que la répartition de la charge sur beaucoup cœurs et threads.

Conclusion

Les technologies de Multi-Threading sont devenues incontournables sur les processeurs PC modernes. Si vous achetez une machine récente c’est quasiment sûr quelle sera équipé d’un processeur avec l’Hyperthreading pour Intel et le SMT pour AMD.

Après avoir lu l’article vous avez bien compris qu’il s’agit de performance en plus gratuite sans ajouter de hardware.

La segmentation dans la gamme des CPU se fait aujourd’hui avec le nombre de cœurs et de threads présent sur le processeur.

Plus vous voulez de cœurs et de threads plus le CPU sera cher. Mais il sera aussi plus performant. J’ai fait un guide sur les meilleurs processeur pour le streaming, il s’applique aussi bien si vous voulez faire uniquement du gaming.

Pour faire simple si « C » désigne « cœurs » et « T » veut dire « thread » vous n’avez qu’à retenir :

2C/2T < 2C/4T < 4C/4T < 4C/8T < 6C/6T < 6C/12T < 8C/8T < 8C/16T etc.

Bien sûr c’est uniquement vrai pour des processeurs d’une même architecture/génération…

1 réflexion au sujet de « Quelle Est La Différence Entre Un “Cœur” Et Un “Thread” CPU »

  1. cela est il due au registre de mémoire?
    comment peut on expliquer ces résultats au niveau de la architecture physique.

    Répondre

Laisser un commentaire