Que sont les threads et que font-ils dans le processeur?

27

Je regardais les statistiques du processeur Intel Pentium e5700 .

Il a deux cœurs et deux fils. Que font les threads pour le processeur? Existe-t-il une relation entre le nombre de cœurs et le nombre de threads? À quoi servent les threads pour le système dans son ensemble?

impossible3
la source
C'est soit le nombre de threads que le processeur peut gérer à la fois, soit une fausse statistique qu'Intel a inventée.
digitxp
3
Voté pour fermer en tant qu'OMI, c'est trop général - bien que j'hésite toujours beaucoup à dire "juste Google it", le but de Super User (et des sites similaires) est de répondre à de vraies questions, pas d'être un dictionnaire de termes techniques qui sont facilement consultés dans des ressources plus appropriées.
Shinrai
3
@Shinrai J'ai modifié cela pour le rendre moins général
Simon Sheehan

Réponses:

21

Le nombre de cœurs est le nombre physique de cœurs sur le processeur lui-même, tandis que le nombre de threads est le nombre de threads d'application individuels qui peuvent s'exécuter simultanément sur le processeur lui-même. Sans matériel supplémentaire ou spécial, cela équivaut au nombre de cœurs. Cependant, certains processeurs auront plus de threads que de cœurs.

Certains processeurs Intel ont une fonctionnalité appelée hyperthreading , qui permet à un système d'exploitation de voir le double du nombre de cœurs logiques par cœur physique. Cela permet au système d'exploitation de planifier et d'exécuter deux fois plus de threads simultanément.Par conséquent, dans le cas du processeur auquel je suis lié, il y a quatre cœurs physiques, mais huit logiques (vous pouvez donc exécuter huit threads simultanément).

Chaque application individuelle exécutée dans le système d'exploitation est monothread ou multithread (considérez chaque thread comme une "sous-application"). Les applications monothread nécessitent un seul thread pour s'exécuter sur le CPU, tandis que les applications multithread ont de nombreux sous-threads s'exécutant simultanément. Des cœurs supplémentaires, ou hyper-threading, permettent à plusieurs threads d'application de s'exécuter simultanément.

Cela permet aux applications multithreads (et non à un seul thread) de s'exécuter beaucoup plus rapidement, car plusieurs threads peuvent s'exécuter simultanément sur le processeur.


Juste une note finale, l'hyperthreading améliore les performances de certaines applications multithreads spécialement optimisées pour lui (car il n'y a toujours que la moitié du nombre de cœurs physiques car il y a logique). Dans certains cas différents, les applications peuvent courir plus vite avec hyperthreading désactivé (bien que de nombreuses applications font en bénéficier). Indépendamment de l'hyperthreading, une augmentation du nombre de cœurs physiques bénéficiera toujours aux applications multithread.

Percée
la source
1
Pourriez-vous peut-être expliquer ce que les threads font pour le processeur? +1 pour avoir mentionné l'hyperthreading, comme c'est très courant maintenant (semble être dans tous les i3)
Simon Sheehan
Chaque processus a au moins un thread. Lorsque le processus obtient son tour sur le CPU, le thread principal s'exécute jusqu'à ce que son tour du CPU soit terminé. Un processus peut générer un autre thread, et maintenant deux parties de ce même processus s'exécuteront et demanderont des tours de CPU. Tous les processus sont des programmes, et avec ce mécanisme, deux choses dans ce même programme peuvent être exécutées à la fois. C'est plus rapide que de créer un nouveau processus (c'est-à-dire bifurquer ou charger un nouveau programme) mais moins sûr. Les processus sont isolés les uns des autres, les fils d'un processus ne le sont pas.
LawrenceC
Que faire si j'ai créé un programme java multithread avec 50 threads simultanés en cours d'exécution et que je l'exécute sur l'Intel i7-4790K, qui a 4 cœurs et 8 threads. Est-ce à dire que seuls 8 de ces 50 threads dans l'application java s'exécutent réellement simultanément et que les autres sont dans une file d'attente? Comment ça marche
Donato
@Donato le système d'exploitation interrompt tous les threads en cours d'exécution pour laisser aux autres un certain temps pour terminer leur travail. À tout moment, seuls 8 threads s'exécutent sur le processeur, et chaque cœur bascule constamment entre différents threads; il est utile de les considérer comme des "emplois" (en gardant à l'esprit que les emplois peuvent également être affectés d'une priorité). Chaque cœur effectuera un travail pour un thread donné, puis sera interrompu par le planificateur de tâches du système d'exploitation pour passer à un travail différent, effectuer un travail sur ce travail, et ainsi de suite et ainsi de suite, jusqu'à ce que le travail soit terminé.
Percée
@Breakthrough, Re " afin que vous puissiez exécuter huit threads simultanément ", Quelles sont les limites d'une telle simultanéité par rapport à la vraie simultanéité offerte par des cœurs réels individuels? De plus, comment est-il possible que «les applications puissent s'exécuter plus rapidement avec l'hyperthreading désactivé »?
Pacerier
9

Un «noyau» représente un sous-ensemble physique réel d'un processeur qui peut à lui seul gérer le traitement, tandis qu'un «thread» est le nombre de processus réels que le processeur peut gérer à la fois. Intel a développé une technologie qu'ils appellent «hyper-threading», cette technique permet à un cœur physique (qui ne pourrait normalement gérer qu'un seul fil à la fois) de pouvoir désormais gérer deux threads simultanément.

Un thread est une tâche que le processeur doit gérer, pour une explication simple, vous pouvez supposer que chaque application que vous ouvrez (comme la peinture, le bloc-notes, le lecteur multimédia) a son propre thread ... maintenant cela ne signifie pas que vous ne pouvez ouvrir 2 applications à la fois, tout simplement parce que le processeur et le système d'exploitation fonctionnent si rapidement à «changer de threads» pour répondre aux besoins de chaque application que vous avez ouverte. Vous bénéficierez simplement de meilleures performances avec plus de cœurs, car vous pouvez désormais distribuer tout le travail à davantage de processeurs principaux.

Par exemple, mon ordinateur de travail contient un i7. L'i7 possède 4 cœurs physiques, mais chaque cœur peut faire de l'hyper-threading qui permet à ce processeur de gérer 8 threads à la fois. Donc, si j'ouvre le gestionnaire de tâches, je verrai 8 cases pour l'échelle de performance du processeur.

Une règle générale est que plus de cœurs physiques sont meilleurs que plus de threads. Donc, si vous compariez un processeur qui avait 4 cœurs et 4 threads, ce serait mieux que 2 cœurs 4 threads. Mais plus votre processeur peut gérer de threads, mieux il fonctionnera en multitâche et pour certaines applications très intensives (montage vidéo, CAO, FAO, compression, chiffrement, etc.), en soi, utilisera plus d'un cœur à la fois.

CenterOrbit
la source
Qu'entendez-vous par «boîtes»?
Pacerier
google.com/…
CenterOrbit
-1

en cliquant sur les liens dans un article dans IE ou chrome, chaque fois que vous cliquez, vous créez un fil. plus vous cliquez sur des liens, plus il y a de fils. avoir un processeur 4 cœurs, vous avez jusqu'à 8 threads, vous pouvez ouvrir 8 liens avant de commencer à avoir un problème. sans tenir compte de votre connexion Internet. de sorte que chaque noyau couvre deux de ces liens (threads) que vous avez ouverts. c'est l'idée de l'OMI. si cela a du sens pour quiconque.

marc g.
la source
Non, ce n'est pas ce que sont les threads dans le contexte des CPU ou la question qui a été posée.
music2myear