Multithreading

Cet article est une ébauche concernant l’informatique.

Multithreading
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

Voir aussi

Article connexe

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.