Quelle est la différence entre l'hyper-threading et les cœurs multiples?


42

Lors d'une conversation avec l'administrateur du réseau, j'ai mentionné que ma machine était un processeur double cœur. Il m'a dit que ça ne l'était pas. J'ai évoqué le gestionnaire de tâches, consulté l'onglet Performances et lui avoir montré qu'il existait deux graphiques d'utilisation du processeur distincts. J'ai une machine quad-core à la maison et elle a quatre graphiques. Il a dit qu'il y avait deux graphiques sur cette machine en raison de l'hyper-threading. J'avais un processeur Pentium 4 hyper-thread dans la journée, mais je n'ai jamais compris ce que cela voulait dire. Alors, quelle est la différence entre hyper threading et dual-core? Et comment dites-vous lequel vous avez?

Réponses:


20

L'hyper-threading expose plusieurs cœurs logiques pour un seul cœur de processeur physique . En termes simples, l’hyper-threading rend la commutation de contexte plus efficace pour chaque cœur de processeur.

Les puces double cœur, en revanche, possèdent en réalité deux cœurs de processeur physiques capables d'exécuter simultanément des processus différents.

Il existe également d’autres puces multicœurs qui ont bien plus que deux cœurs et, comme l’a mentionné Svish, les dernières offres multicœurs d’Intel prennent également en charge l’hyper-threading sur tous les cœurs.

Vous pouvez utiliser un utilitaire d'identification de la CPU tel que CPU-Z pour déterminer le nombre de cœurs que vous avez. Comme vous pouvez le voir au bas de la capture d'écran, la CPU dispose de 2 cœurs physiques. Si le nombre de threads est supérieur au nombre de cœurs, l'hyper-threading est activé. À ce jour, tous les CPU orientés consommateur avec Hyper-threading ont 2 threads par cœur. Par conséquent, si HT est activé, le nombre de threads sera égal à 2x le nombre de cœurs.

entrez la description de l'image ici

Si vous avez un processeur Intel, vous pouvez télécharger l'utilitaire Intel CPU ID à la place.


Et des puces multi-cœurs prenant en charge l'hyper-threading pour obtenir deux fois plus de cœurs logiques.
Samedi

Remercier! Comment puis-je savoir (à partir du système d'exploitation) de quel type de processeur je dispose?
Josh Stodola

3
L'UltraSparc T2 + possède 8 cœurs, chacun prenant en charge 8 threads, ce qui en fait 64 processeurs virtuels sur une seule puce: fr.wikipedia.org/wiki/UltraSPARC_T2
jlliagre

Le moyen de connaître votre CPU dépend du système d'exploitation que vous utilisez.
juillet

@ jilliagre: sympa!
rob

16

L’hyper-threading est l’endroit où votre processeur prétend avoir 2 cœurs de processeur physiques, mais qu’il n’en a qu’un et plusieurs fichiers indésirables.

Le point essentiel de l'hyperthreading est que souvent, lorsque vous exécutez du code dans le processeur, certaines parties du processeur sont inactives. En incluant un ensemble supplémentaire de registres de CPU, le processeur peut agir comme s'il avait deux cœurs et utiliser ainsi toutes les parties du processeur en parallèle. Lorsque les deux cœurs doivent utiliser un composant du processeur, un cœur finit par attendre. C'est pourquoi il ne peut pas remplacer les processeurs dual-core et autres.

Voir aussi: Cette question


6

L’hyperthreading est une alternative moins chère et plus lente que le double cœur

Le manuel Intel Volume Volume 3 Guide de programmation - 325384-056FR Septembre 2015 8.7 "ARCHITECTURE DE LA TECHNOLOGIE INTEL HYPER-THREADING" décrit brièvement HT. Il contient le schéma suivant:

entrez la description de l'image ici

TODO, il est plus lent de combien de pour cent en moyenne dans les applications réelles?

L'hyperthreading est possible car les cœurs de processeurs individuels modernes exécutent déjà plusieurs instructions à la fois avec le pipeline d'instructions https://en.wikipedia.org/wiki/Instruction_pipelining

Le pipeline d’instructions est une séparation des fonctions à l’intérieur d’un même cœur pour garantir que chaque partie du circuit est utilisée à un moment donné: lecture de mémoire, instructions de décodage, exécution d’instructions, etc.

L'hyperthreading sépare encore plus les fonctions en utilisant:

  • un seul serveur, qui exécute les instructions avec son pipeline.

    Le double cœur a deux systèmes, ce qui explique les coûts et les performances plus élevés.

  • deux front-end, qui prennent deux trains d'instructions et les commandent de manière à maximiser l'utilisation du pipeline en pipeline du backend unique en évitant les dangers .

    Dual Core aurait également 2 frontaux, un pour chaque backend.

    Il existe des cas extrêmes où la réorganisation des instructions ne produit aucun avantage, rendant l'hyperthreading inutile. Mais cela produit une amélioration significative de la moyenne.

Deux hyperthreads dans un même cœur partagent des niveaux de cache supplémentaires (TODO, combien? L1?) Par rapport à deux cœurs différents, partageant uniquement L3, voir:

L’interface que chaque hyperthread expose au système d’exploitation est similaire à celle d’un cœur réel, et les deux peuvent être contrôlés séparément. Ainsi cat /proc/cpuinfome montre 4 processeurs, même si je n’ai que 2 cœurs avec 2 hyperthreads chacun.

Les systèmes d'exploitation peuvent toutefois tirer parti de la connaissance des hyperthreads situés sur le même noyau pour exécuter plusieurs threads d'un programme donné sur un même cœur, ce qui pourrait améliorer l'utilisation de la mémoire cache.

Cette vidéo LinusTechTips contient une explication légère, non technique: https://www.youtube.com/watch?v=wnS50lJicXc


1
Allez-vous répondre à vos questions "TODO"?
Pacoverflow

1
@pacoverflow si j'apprends un jour la réponse, ou si quelqu'un va modifier la réponse pour moi :-)
Ciro Santilli新疆改造中心法轮功六四事件
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.