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?
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?
Réponses:
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.
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.