Quelle est la différence entre le multithreading et l'hyperthreading? [fermé]

10

J'ai entendu les termes hyper-threading et multi-threading, mais quelle est exactement la différence entre eux? Quel type de processeur Intel les utilise?

Rose
la source
2
Vous essayez de comparer des choses qui ne sont pas directement comparables; juste lié. C'est comme demander "Quelle est la différence entre un pied et une chaussure?" Cela mis à part, qu'a révélé votre recherche jusqu'à présent? Où vous bloquez-vous exactement en déterminant la différence sur la base de définitions facilement glanées sur Internet?
Ƭᴇcʜιᴇ007
1
je ne connais ni le multithreading ni l'hyperthreading, on me demande de les connaitre
rose
1
les nazis de débordement de pile ont fermé le sujet comme son «hors sujet» ... C'est une très bonne question, est populaire et ne devrait pas être fermé ..
Robbo_UK
superuser.com/questions/133082/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Réponses:

19

Le multithreading fait référence à la tâche générale d'exécuter plusieurs threads d'exécution dans un système d'exploitation. Le multithreading est plus généralement appelé «multiprocessing», qui peut inclure plusieurs processus système (un exemple simple sur Windows serait, par exemple, d'exécuter Internet Explorer et Microsoft Word en même temps), ou il peut consister en un processus qui a plusieurs threads à l' intérieur il.

Le multithreading (ou devrais-je dire, le multitraitement) est un concept logiciel . Pratiquement n'importe quel CPU complet de Turing peut effectuer le multithreading, même si l'ordinateur n'a qu'un seul cœur de processeur et que ce cœur ne prend pas en charge l'hyperthreading. Afin de prendre en charge le multitraitement, le CPU entrelacera l' exécution de différents threads d'exécution, en exécutant un, puis un autre, puis un autre, où le système d'exploitation divisera le temps disponible en "tranches" et donnera un temps à peu près égal à chaque thread (le temps ne doit pas nécessairement être égal, mais c'est généralement ainsi que cela se fait, sauf si un processus demande une priorité plus élevée).

Notez que, chaque fois qu'il y a plus de threads d'exécution de logiciel essayant de s'exécuter à un moment donné qu'il y a de threads d'exécution (simultanés) matériels disponibles , alors ces threads de logiciel seront "entrelacés" parmi les cœurs disponibles. Dans le cas d'un "uniprocesseur" (un cœur de processeur sans hyperthreading), si vous avez plus d'un thread logiciel, ils seront toujoursêtre entrelacé. Si vous avez un processeur 4 cœurs avec hyperthreading, c'est 8 "threads matériels", ce qui signifie que le processeur peut exécuter 8 threads d'exécution simultanés au même instant, donc si vous aviez 8 threads logiciels essayant de s'exécuter, ils pourraient tous s'exécuter en même temps ; mais si vous aviez 9 threads logiciels, l'un des threads matériels devrait entrelacer une paire de threads (la paire exacte de threads choisie dépendrait de l'implémentation du planificateur du système d'exploitation).


L'hyperthreading, quant à lui, fait référence à une technologie matérielle très spécifique créée par Intel, qui permet à un cœur de processeur unique d'entrelacer plusieurs threads d'exécution plus efficacement. En d'autres termes, un CPU avec hyperthreading va fournir des performances légèrement supérieures à un CPU qui est par ailleurs le même mais sans hyperthreading, car le CPU hyperthreadé pourra équilibrer simultanément deux (parfois plus, mais l'hyperthreading est généralement de 2 à 2). façon) threads d'exécution sur un noyau donné.

Cependant, l'hyperthreading est strictement plus lent que d'avoir des cœurs physiques complètement séparés, car il existe certains types d'opérations qui peuvent perturber les avantages de performance de l'hyperthreading, tandis qu'il y a moins d'opérations qui peuvent provoquer un tel événement avec des cœurs complètement séparés.

Prenons l'exemple suivant, où "1 cœur" est supposé effectuer exactement la même chose dans tous les exemples:

Exemple 1: 2 cœurs, pas d'hyperthreading.
Exemple 2: 4 cœurs, pas d'hyperthreading.
Exemple 3: 2 cœurs avec hyperthreading.
Exemple 4: 4 cœurs avec hyperthreading.

Dans ce cas, l'exemple 4 sera toujours le plus rapide. L'exemple 2 peut parfois être à peu près aussi rapide que l'exemple 4, sur des charges de travail extrêmement mal adaptées pour tirer parti des optimisations de l'hyperthreading.

L'exemple 3, en revanche, peut parfois, sur des charges de travail où l'hyperthreading est le plus avantageux, être presque aussi rapide que l'exemple 2, même s'il a la moitié du nombre de cœurs physiques.

L'exemple 1, bien sûr, sera le plus lent de tous les exemples, mais il peut parfois être aussi rapide que l'exemple 3, lors de l'exécution d'une charge de travail mal adaptée à l'hyperthreading.

Dans les benchmarks du monde réel avec les processeurs Intel modernes, nous constatons généralement que l'hyperthreading entraîne, de manière très générale, une amélioration de 20% à 40% des performances par rapport à l'absence d'hyperthreading (le cas «sans hyperthreading» étant comparé en désactivant la fonction d'hyperthreading dans le BIOS). Parfois, il y aura des charges de travail où la désactivation de l'hyperthreading présente un avantage en termes de performances , mais ces charges de travail peuvent être rares en utilisation réelle. Mais, si j'avais le choix entre 4 cœurs avec hyperthreading ou 8 cœurs, en supposant que chaque cœur lui-même a les mêmes performances, je choisirais le processeur à 8 cœurs à chaque fois.

allquixotic
la source
2
Pour être exact, le multithreading et le multiprocessing ne sont pas la même chose. Les threads partagent le contexte d'exécution avec le processus auquel ils sont associés, tandis que les processus ont leurs propres contextes d'exécution. Cependant, pour cette réponse, cette distinction n'est pas si importante.
Tero Kilkanen
1
La technologie d'hyperthreading n'a pas été "créée par Intel"; pour la ligne principale x86, il s'agit simplement d'un nom de marque pour le multithreading simultané. Si l'Alpha 21464 avait été produit, il aurait été l'un des premiers utilisateurs éminents de SMT. Intel a produit la première utilisation publiée de SMT (excluant peut-être les processeurs moins connus) avec certains Pentium 4, mais l'idée de base n'était pas une invention d'Intel.
Paul A. Clayton
2
Quibble: l'hyperthreading n'est pas strictement plus lent que des cœurs séparés. On peut imaginer des cas (artificiels) où le partage de caches L1 est un plus grand avantage que l'utilisation complète des ressources d'un noyau. Un autre cas particulier pourrait être lorsqu'un thread est constamment actif et qu'un autre gère brièvement les événements intermittents; réveiller un noyau par intermittence est plus cher que réveiller un fil sur un noyau actif. Pour les threads avec un ILP extrêmement faible, si la contention du cache n'est pas un problème, la plus grande efficacité énergétique de l'utilisation d'un seul cœur pourrait permettre un plus grand turboboosting (meilleures performances).
Paul A. Clayton
3
Les réponses sont modifiables sur SU, donc si vous voulez l'améliorer, n'hésitez pas. Gardez également à l'esprit le niveau apparent de connaissance du PO; même ma réponse seule est probablement plus technique que ce qu'ils attendaient ou voulaient. J'ai intentionnellement passé sous silence certains détails en faveur d'une facilité d'explication. Je doute que l'OP va bientôt concevoir des processeurs et a désespérément besoin de connaître tous ces détails. Commentaires intéressants néanmoins.
allquixotic
1
Les modifications suggérées qui modifient le contenu (c'est-à-dire pas seulement les corrections de grammaire / faute de frappe ou la reformulation pour plus de clarté) sont susceptibles d'être rejetées.
Paul A. Clayton
4

Le multithreading est un terme pour le traitement parallèle au niveau du système d'exploitation. Le processeur n'a rien à voir avec le multithreading.

L'hyperthreading est un concept Intel qui implémente le traitement "simultané" de plusieurs threads dans un seul cœur de processeur. Le système d'exploitation voit deux cœurs de processeur, bien qu'il n'y ait qu'un seul cœur physique.

Tero Kilkanen
la source