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 Hyper-Thread Pentium 4 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?
Hyper-threading expose plusieurs noyaux logiques pour un seul physique cœur du processeur. En termes simples, l’hyper-threading rend 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 de 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 processeurs grand public 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.
Si vous avez un processeur Intel, vous pouvez télécharger tilitaire d’ID du processeur d’Intel .
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
L'hyperthreading est une alternative moins chère et plus lente que d'avoir un double cœur
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 flux d'instructions et les ordonnent de manière à maximiser l'utilisation du pipeline en pipeline du backend unique en évitant dangers .
Dual Core aurait également 2 front-end, un pour chaque backend.
Il existe des cas extrêmes dans lesquels 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 du fait de savoir quels hyperthreads sont 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
Le Guide de programmation du système Intel Manual Volume 3 - 325384-056FR Septembre 2015 8.7 "ARCHITECTURE DE LA TECHNOLOGIE INTEL HYPER-FILETAGE" décrit brièvement HT. Il contient le schéma suivant: