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?
la source
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
la source
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:
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/cpuinfo
me 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
la source