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.

Page d’aide sur l’homonymie

Cet article concerne le support matériel des threads. Pour les thread logiciels, voir thread (informatique).

Schéma d'un process multithread

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

  1. 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
Technologies de processeur
  • Chronologie des microprocesseurs
  • Semi-conducteur
  • Transistor
Modèles
Architecture
Général
Mots
Instruction
Jeu
Famille
Exécution
Performance
Types
Général
Par usage
On chip
Accélération
matérielle
Microarchitecture
Parallélisme
Général
Processus
Taxonomie de Flynn
Circuiterie et unité
Général
Exécution
Porte logique
Registre
Contrôle
Chemin de données
Cadencement
Gestion de l'alimentation
Fabrication
Articles liés
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 homme-machine
Concurrence (en)
Intelligence artificielle
Apprentissage automatique
Infographie
Audio informatique
Informatique appliquée
  • icône décorative Portail de l’informatique