Multithreading
Cet article est une ébauche concernant l’informatique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
Cet article concerne le support matériel des threads. Pour les thread logiciels, voir thread (informatique).
Un processeur est dit multithread s'il est capable d'exécuter efficacement plusieurs threads simultanément. Contrairement aux systèmes multiprocesseurs (tels les systèmes multi-cœur), les threads doivent partager les ressources d'un unique cœur[1] : les unités de traitement, le cache processeur et le translation lookaside buffer ; certaines parties sont néanmoins dupliquées : chaque thread dispose de ses propres registres et de son propre pointeur d'instruction. Là où les systèmes multiprocesseurs incluent plusieurs unités de traitement complètes, le multithreading a pour but d'augmenter l'utilisation d'un seul cœur en tirant profit des propriétés des threads et du parallélisme au niveau des instructions. Comme les deux techniques sont complémentaires, elles sont parfois combinées dans des systèmes comprenant de multiples processeurs multithreads ou des processeurs avec de multiples cœurs multithreads.
Types de multithreading
Il existe différents moyens d'exécuter plusieurs threads sur un même cœur de processeur, selon la façon dont leurs temps d'exécution respectifs sont répartis.
Les threads peuvent s'exécuter à des moments différents (temporal multithreading), soit en changeant de thread à chaque cycle d'horloge (interleaved multithreading), soit lors d'un événement comme un défaut de cache (block multithreading). Ils peuvent aussi s'exécuter simultanément en partageant les unités d'exécution d'un processeur superscalaire (simultaneous multithreading).
Multithreading temporel
Le multithreading temporel tire parti du fait que le processeur est souvent inactif. Le multithreading par bloc permet d'exécuter un autre thread lorsqu'un événement arrête l'un d'eux pour une longue période, par exemple un défaut de cache qui nécessite d'attendre un accès à la mémoire. L'interleaved multithreading exécute quant à lui une instruction de chaque thread à tour de rôle, ce qui diminue les chances de devoir attendre le résultat d'une instruction en cours d'exécution et permet à d'autres threads de s'exécuter si l'un d'eux est inactif.
Notes et références
- ↑ David A. Patterson, John L. Hennessy, Computer Organization and Design ARM Edition: The Hardware Software Interface, Morgan Kaufmann, (lire en ligne).
Source
- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Multithreading » (voir la liste des auteurs).
Voir aussi
Article connexe
- Thread (informatique)
v · m Domaines de l'informatique | |
---|---|
Remarque : cette liste s'inspire du système de classification informatique de l'ACM édité en 2012 | |
Matériel | |
Appareil et organisation d'un système | |
Réseau |
|
Organisation du logiciel | |
Théorie et outil (en) de programmation | |
Développement de logiciel |
|
Théorie du calcul (en) |
|
Algorithmique | |
Mathématiques de l'informatique |
|
Système d'information | |
Sécurité |
|
Interactions humain-machine |
|
Concurrence (en) |
|
Intelligence artificielle | |
Apprentissage automatique |
|
Infographie | |
Audio informatique |
|
Informatique appliquée |
|
- Portail de l’informatique