Qu'est-ce que l'hyper-threading et comment ça marche?

Réponses:

38

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.

Earlz
la source
6
+1 devrait ajouter que l'hyper-threading est spécifique à la mise en œuvre de SMT par Intel, par exemple le processeur SPARC a une forme différente de SMT mise en œuvre mais avec des objectifs similaires.
sybreon
@ Earlz suggérez-vous que le processeur exécute deux threads en divisant les cœurs en deux? ou semble-t-il que le parallélisme fait en réalité que l'hyperthreading force le processeur à passer d'un thread à un autre?
Doopy Doo
4
@DoopyDoo non plus. Fondamentalement, le processeur a deux "cœurs d'exécution", qui constituent le pipeline d'instructions, etc., ainsi que deux ensembles de registres et d'autres éléments essentiels. La différence entre l'hyper-threading et le dual-core classique est que certaines choses ne sont PAS dupliqué. Par exemple, il ne peut y avoir qu'une seule ALU. Donc, cela voudrait dire qu'un processeur double cœur peut ajouter deux jeux de nombres distincts en même temps, car un processeur hyper-threading devra faire attendre l'un des cœurs virtuels jusqu'à son tour avec l'ALU .. De Bien sûr, ceci est un exemple simplifié
Earlz
12

L'hyper-threading est l'endroit où deux threads peuvent s'exécuter sur un seul noyau. Lorsqu'un thread sur le coeur en question est bloqué ou dans un état d'arrêt, l'hyper-threading permet au core de travailler sur un second thread à la place.

L’hyper-threading laisse penser au système d’exploitation que le processeur a doublé le nombre de cœurs et entraîne souvent une amélioration des performances, mais seulement entre 15 et 30% au total - bien que dans certaines circonstances, il puisse en résulter une baisse des performances (= <20%).

Actuellement, la plupart des puces Atom et toutes les puces i7 (et équivalentes à Xeon) ont un hyper-threading, à l'instar de certains P4 plus anciens. Dans le cas des Atoms, il s'agit d'une tentative désespérée d'améliorer les performances sans augmenter beaucoup la consommation d'énergie. dans le cas des i7, cela les différencie de la gamme de puces i5.

Le traitement complexe ne bénéficie pas beaucoup de la technologie HT, mais certaines tâches (simples, hautement multithreads), telles que le codage vidéo, en bénéficient. En réalité, il n'y a pas grand chose dedans ...

CJM
la source
95% correct. Si un noyau normal = A + B, un noyau hyper-threading s'apparente davantage à A + 2 x B. Ils peuvent exécuter deux threads simultanément tant que les deux threads n'ont pas besoin de A.
Vincent Vancalbergh
5

Quand un seul cœur peut agir comme un double cœur

c'est hyperthreading

En détail

La mise en œuvre par Intel du multitraitement simultané est connue sous le nom de technologie Hyper-Threading, ou technologie HT.

La technologie HT fait apparaître un seul processeur, du
point de vue du logiciel , sous forme de plusieurs processeurs logiques. Cela permet aux systèmes d'exploitation et aux applications de planifier plusieurs threads sur des processeurs logiques comme
ils le feraient sur des systèmes multiprocesseurs.


L'hyperthreading permet à un processeur unique d'exécuter deux threads simultanément, mais pas dans toutes les conditions.

L'hyperthreading ne double pas les performances d'un système, il peut augmenter ces performances en utilisant mieux les ressources inactives, ce qui entraîne un débit plus élevé pour certains types de charges de travail importants. Une application qui s'exécute sur un processeur logique d'un cœur occupé peut attendre un peu plus de la moitié du débit qu'elle obtient en s'exécutant seule sur un processeur non hyperthread. Les améliorations des performances d'hyperthreading dépendent fortement de l'application et certaines applications peuvent voir leur performance se dégrader avec l'hyperthreading car de nombreuses ressources de processeur (telles que le cache) sont partagées entre des processeurs logiques.

La technologie Intel Hyper-Threading permet à chaque cœur de disposer de deux processeurs logiques qui partagent la plupart des ressources du cœur, tels que des caches de mémoire et des unités fonctionnelles.

Fonction principale

Hyperthreading consiste à augmenter le nombre d’instructions indépendantes en cours; il tire parti de l'architecture superscalaire, dans laquelle plusieurs instructions fonctionnent sur des données séparées en parallèle

Intel affirme que l’hyper-threading est très efficace car il utilise des ressources qui seraient autrement inactives ou sous-utilisées.

Liens:

Wikipedia
StackOverflow
multicœur Programmation Digital_Edition pg # 8

entrez la description de l'image ici

Image Intel

Johnny Blaze
la source
3

L'hyperthreading signifie qu'un seul cœur de processeur peut gérer deux contextes d'exécution distincts et basculer rapidement entre eux, en émulant efficacement deux cœurs au niveau matériel.

Vous obtenez un avantage modeste en termes de vitesse pour les charges de travail multithreads par rapport à un simple cœur normal. Cependant, l'avantage d'avoir deux noyaux indépendants est loin d'être avantageux. En termes de performances, il est préférable d’envisager une légère augmentation des performances multithreads sur un seul cœur plutôt que des performances proches de deux cœurs. L'ampleur de la vitesse varie en fonction de la charge de travail. En effet, pour certaines charges de travail, l'accélération des performances est tout à fait décente.

Le noyau hyperthreaded n'a qu'une seule unité d'exécution principale, mais certaines autres parties d'une unité centrale associées aux instructions de préparation pour le traitement et le maintien d'un état d'exécution sont dupliquées.

Les cœurs de processeur ont un pipeline d’instructions - une file d’instructions à exécuter, qui est constamment mise à jour, prête à être exécutée par la CPU en tête de cette file. Les CPU les utilisent pour optimiser la vitesse d'exécution en examinant ces instructions futures et en effectuant si possible un prétraitement simple et de bas niveau (ces optimisations incluent "l'exécution dans le désordre" et la "prédiction de branche").

Les cœurs hyperthreaded ont des pipelines à double instruction, et c'est - avec un second jeu de registres - que vous obtenez l'avantage de la vitesse pour les charges de travail multithread. La commutation entre les contextes de thread ne jette pas le pipeline ou les registres, et le pipeline et les registres de l'autre thread restent prêts et "actifs", ils peuvent donc être basculés et utilisés immédiatement.

thomasrutter
la source