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