J'ai entendu le terme hyper-threading projeté un peu récemment, qu'est-ce que l'hyper-threading et pourquoi est-ce important?
L'hyper-threading est l'endroit où votre processeur prétend avoir 2 cœurs physiques, mais n'a que 1 et quelques indéscriptions supplémentaires.
Le point d'hyperthreading est que plusieurs fois lorsque vous exécutez du code dans le processeur, il existe des parties du processeur qui est inactif. En incluant un ensemble supplémentaire de registres de la CPU, le processeur peut agir comme il a deux noyaux et utiliser ainsi toutes les parties du processeur en parallèle. Lorsque les 2 noyaux doivent tous les deux utiliser un composant du processeur, un noyau finit par attendre bien sûr. C'est pourquoi il ne peut pas remplacer le double noyau et ces processeurs.
hyper-threading est l'endroit où deux threads sont capables de fonctionner sur un noyau à un seul fileté. Lorsqu'un filetage sur le noyau en question est en train de caler ou d'un état d'arrêt, l'hyper-threading permet au noyau de fonctionner sur un deuxième fil à la place.
L'hyper-threading fait que le système d'exploitation pense que le processeur a double du nombre de cœurs et donne souvent une amélioration de la performance, mais uniquement dans la région de 15 à 30% dans l'ensemble, mais dans certaines circonstances, il peut y avoir une performance touchée (= <20%).
Actuellement, la plupart Atom Chips et tous les puces I7 (et Xeon-Equivalent) ont des hyper-threading, de même que des P4 plus âgés. Dans le cas des atomes, c'est une tentative désespérée d'améliorer la performance sans Augmentation de la consommation d'énergie beaucoup; dans le cas des I7, il les différencie de la gamme de puces i5.
Les travaux de traitement complexes ne bénéficieront pas beaucoup de HT, mais certaines tâches (simples, hautement filetées), telles que le codage vidéo, bénéficieront de HT. En réalité, il n'y en a pas beaucoup ...
Lorsqu'un noyau unique peut agir comme un double noyau
c'est hyperthreading
La mise en œuvre d'Intel de la multi-threading simultanée est appelée technologie hyper-threading ou technologie HT.
La technologie HT fait apparaître un seul processeur, des logiciels
perspective, comme plusieurs processeurs logiques. Cela permet aux systèmes d'exploitation et aux applications de planifier plusieurs threads aux processeurs logiques comme
[.____] Ils seraient sur des systèmes multiprocesseurs.
L'hyperthreading permet à un seul processeur d'exécuter deux threads simultanément, mais pas sur toutes les conditions.
L'hyperthreading ne double pas les performances d'un système, il peut augmenter les performances en utilisant une meilleure utilisation des ressources inactives entraînant un débit plus important pour certains types importants de la charge de travail. Une application exécutée sur un processeur logique d'un noyau occupé peut s'attendre à un peu plus de la moitié du débit qu'il obtient tout en courant seul sur un processeur non hyperthread. L'hyperthreading Les améliorations des performances sont fortement dépendantes de l'application et certaines applications peuvent voir la dégradation des performances avec hyperthreading car de nombreuses ressources du processeur (telles que le cache) sont partagées entre les processeurs logiques.
La technologie d'hyper-threading Intel rend chaque noyau peut avoir deux processeurs logiques qui partagent la plupart des ressources du noyau, telles que des caches de mémoire et des unités fonctionnelles.
d'hyperthreading consiste à augmenter le nombre d'instructions indépendantes dans le pipeline; Il tire parti de l'architecture Superscalar, dans laquelle plusieurs instructions fonctionnent sur des données distinctes en parallèle
Intel dit que l'hyper-threading est très efficace car il utilise des ressources qui seraient autrement inactives ou sous-utilisées.
Liens:
Wikipedia
Stackoverflow
- (( programmation multi-core numérique_edition pg # 8
Pour développer ce qui a déjà été dit, HyperThreading signifie qu'un seul noyau de la CPU peut conserver deux contextes d'exécution distincts et passer rapidement entre eux, émulant efficacement deux noyaux à un niveau matériel.
Vous obtenez une prestation de vitesse modeste pour les charges de travail multi-filetées par rapport à un noyau unique normal. Cependant, il n'est nulle part au profit d'avoir deux cœurs indépendants. En termes de performance, vous êtes préférable de penser à cela comme un petit coup de pouce dans des performances multi-filetées sur un seul noyau plutôt que d'avoir une performance approche de deux noyaux. La taille de la vitesse de boost varie en fonction de la charge de travail - en effet, pour certaines charges de travail, le boost de performance est assez décent.
Le noyau hyperthratifié n'a qu'une seule unité d'exécution principale, mais certaines autres parties d'une CPU associées à des instructions de contrôle du traitement et de maintien d'un état d'exécution sont dupliquées.
Les cœurs de processeur ont un pipeline d'instructions - une file d'attente d'instructions futures à exécuter, qui est constamment mise à jour, prête pour la CPU d'exécuter l'instruction à la tête de cette file d'attente. Les processeurs utilisent celles-ci pour optimiser la vitesse d'exécution en examinant ces instructions futures et en faisant un pré-traitement simple et de faible niveau sur eux, dans la mesure du possible (ces optimisations incluent "l'exécution hors ordre" et "prévision de la branche").
Les noyaux hyperthraires ont des pipelines à double instruction, et cela - avec un deuxième ensemble de registres - est l'endroit où vous obtenez la prestation de vitesse pour les charges de travail multithreadées.
Disons que votre système exécute un certain nombre de threads différents à la fois. Votre système attribue chaque thread à un processeur virtuel et ce fil partagera le processeur virtuel avec d'autres threads, mais chaque fois que le processeur virtuel passe entre ces threads, il doit essuyer le contexte d'exécution complet de ce fil et charger un autre fil d'exécution.
Mais avec hyper-threading, au lieu de votre noyau ne pouvant conserver l'état d'un thread à tout moment, vous obtenez la capacité de ce noyau de conserver des états d'exécution de deux threads à la fois, afin que vous puissiez basculer entre ces deux avec beaucoup moins Pénalité Parce qu'il ne jette pas le pipeline ni les registres, et le pipeline et les registres de l'autre thread restent prêts et "chauds" afin qu'ils puissent être basculés et utilisés immédiatement. Si vous exécutez plus de threads que les processeurs virtuels, vous devez toujours faire une commutation acharnée, mais moins souvent, car vous avez un plus grand nombre de threads à un moment donné dont l'état d'exécution est préservé.