Le multithreading : plus de puissance pour les processeurs
Les applications et les jeux modernes posent des défis toujours plus grands au niveau du matériel. Outre les graphiques particulièrement sophistiqués et les exigences énormes en matière de mémoire, la vitesse du cœur du processeur doit rester particulièrement importante pour un travail fluide avec un PC ou un ordinateur portable. Pour relever ces défis, les fabricants de matériel informatique développent régulièrement de nouvelles techniques et architectures pour leurs processeurs. L’une de ces techniques est le multithreading. Ici, le processeur parvient à traiter plusieurs threads, une petite unité de calcul, plus ou moins simultanément. Comment cela fonctionne-t-il ?
- Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
- 1 certificat SSL Wildcard par contrat
- Boîte email de 2 Go
Qu’est-ce que le multithreading ?
Pour augmenter la vitesse des cœurs du processeur sans avoir à modifier la vitesse d’horloge, le multithreading permet au CPU de traiter plusieurs tâches simultanément. Pour être plus précis : plusieurs threads sont traités en même temps. Un thread peut être compris comme un élément d’un processus. Les programmes peuvent être divisés en processus et ces processus à leur tour en threads individuels. Chaque processus est constitué d’au moins un thread.
Les processus sont généralement exécutés de manière séquentielle, c’est-à-dire l’un après l’autre. Ce n’est pas optimal, car de cette manière, les tâches fastidieuses bloquent le matériel. Si un autre processus est nécessaire spontanément, il doit quand même attendre son tour. Avec le multithreading, plusieurs threads sont traités simultanément. Bien que cette affirmation ne soit également que partiellement correcte : la simultanéité réelle ne peut que rarement être garantie, mais elle peut être atteinte en attendant.
Mais la pseudo-simultanéité permet également d’améliorer les performances : le système organise et calcule les threads de manière si intelligente que l’utilisateur a l’impression d’un traitement simultané. Cette forme de concurrence ne doit pas être confondue avec les possibilités des processeurs multi-cœurs. Si le système comporte plusieurs microprocesseurs, plusieurs processus sont également traités simultanément.
Pour que le multithreading soit efficace, le logiciel doit y être préparé. Si les développeurs ne divisent pas ou ne peuvent pas diviser leurs programmes en plusieurs threads, la technologie ne fonctionnera pas. Les joueurs, par exemple, constatent souvent une baisse des performances lorsque le multithreading est activé. Dans ce cas, les jeux informatiques ne sont pas conçus pour cette technologie. La tentative du système de traiter plusieurs threads simultanément a alors un effet néfaste.
Objectifs du multithreading
Le but ultime du multithreading est d’augmenter la vitesse de calcul d’un ordinateur et donc ses performances. Pour y parvenir, on essaie d’optimiser la charge CPU. Au lieu de maintenir un processus pendant une longue période, le système passe rapidement à la tâche suivante avec le multithreading, même s’il attend toujours des données. De cette façon, il n’y a pratiquement pas de temps d’attente.
En même temps, le système réagit plus rapidement aux changements de priorités. Les utilisateurs ou les applications ont besoin d’une autre tâche de manière soudaine et imprévue : grâce aux niveaux de priorité et aux threads courts, le processeur peut également se consacrer rapidement à une autre tâche.
Cette technologie est principalement conçue pour accélérer les applications individuelles qui se composent de plusieurs processus et threads. De cette manière, plusieurs tâches du même logiciel peuvent être traitées plus ou moins en parallèle. Cela a du sens dans le montage vidéo, par exemple : ici, une scène peut être rendue en arrière-plan pendant que l’utilisateur monte la scène suivante.
Grâce au multithreading, les fabricants de puces ont la possibilité d’accélérer leurs processeurs sans générer une consommation d’énergie beaucoup plus élevée. Alors que des fréquences d’horloge plus élevées génèrent également plus de chaleur, qui doit ensuite être dissipée à grands frais, ce n’est pas le cas avec le multithreading.
Comment fonctionne le multithreading ?
Le multithreading résulte d’une interaction entre le matériel et le logiciel. Les programmes et les processus sont décomposés en threads individuels et traités par l’unité centrale dans ces unités plus petites. Une distinction est faite entre le multithreading matériel et le multithreading logiciel.
Matériel informatique
Pour le multithreading matériel, les programmes individuels fournissent leurs processus divisés en threads. Le système d’exploitation prend en charge la gestion des threads et décide du moment où le thread est transmis en premier au CPU. Le processeur traite ensuite les threads soit simultanément, soit pseudo-simultanément.
Dans la pratique, on peut trouver différentes réalisations du multithreading basé sur le matériel.
Activation du multithreading temporel « SoEMT »
Le SoEMT (pour « Switch on Event Multithreading » en anglais) fonctionne avec deux threads : l’un est au premier plan et l’autre à l’arrière-plan. Le changement de niveau, appelé changement de contexte, s’effectue par le biais d’événements. Il peut s’agir, par exemple, d’une entrée utilisateur, mais aussi d’un message indiquant qu’un thread est toujours en attente de données et ne peut donc pas être traité plus avant. Le système passe alors rapidement au deuxième thread et relègue l’autre à l’arrière-plan. Le traitement de ce thread ne se poursuit que lorsque les informations requises sont arrivées. De cette manière, le système réagit rapidement et crée une pseudo-simultanéité entre les threads au premier plan et en arrière-plan.
Le « multithreading temporel » est également appelé « multithreading à gros grains ». On parle de « gros grain » parce que cette technique est plus adaptée aux temps d’attente plus longs. Alors que d’autres techniques réagissent encore plus rapidement, le SoEMT joue sur ses points forts avec des blocs de threads plus importants.
Le multithreading en temps réel
Alors que le SoEMT déclenche le passage d’un thread à l’autre par un événement, avec le « Time-Slicing », cela se produit à des intervalles de temps fixes. Même si le thread n’est pas encore terminé, le processeur en calcule un autre et ne revient qu’à l’intervalle suivant pour continuer à travailler sur le thread. Toute progression sur un thread est enregistrée en mémoire.
Le défi consiste à choisir la longueur appropriée de l’intervalle. Si l’intervalle est trop court, les processus ne peuvent guère progresser de manière significative. Si l’intervalle est trop long, en revanche, on perd la pseudo-simultanéité. En tant qu’utilisateur, on remarque alors que les processus sont traités les uns après les autres et non en parallèle.
Le multithreading simultané « SMT »
La technologie multithreading SMT (« Simultaneous Multithreading » en anglais) assure une réelle simultanéité. Les threads attendent leurs calculs dans ce qu’on appelle des pipelines. Le processeur traite plusieurs pipelines en parallèle. Ainsi, au lieu de passer d’un thread à l’autre, les parties des processus sont en fait traitées simultanément. Un seul processeur se comporte comme plusieurs processeurs (logiques). Dans la pratique, le SMT est combiné à la technologie multi-cœur : ainsi, un système doté de deux cœurs de processeur peut apparaître au monde extérieur comme s’il possédait huit cœurs.
Le fabricant de processeurs Intel connaît un grand succès avec la technologie dite Hyper-Threading (HTT). Son concurrent AMD produit lui aussi des technologies comparables. Dans les deux cas, il s’agit de SMT.
Du côté des logiciels
Avec le multithreading côté logiciel, seule l’application est responsable de la division des processus en threads. Seuls les threads individuels arrivent au système d’exploitation et au processeur. Ainsi, dans ce scénario, le matériel n’est même pas conscient des connexions et traite chaque thread individuellement. Le système définit un niveau de priorité pour chaque thread. Les niveaux plus élevés sont traités plus rapidement. Les nouveaux processus qui doivent être terminés rapidement peuvent être intercalés avec cette technique. Dans le cas du processus à long terme, un seul thread est terminé et les threads suivants se retrouvent plus loin dans la fil d’attente.
Le multithreading logiciel est particulièrement utile pour les systèmes dotés de processeurs à un seul cœur. Les ordinateurs modernes étant désormais équipés de processeurs à double cœur au minimum, cette forme de multithreading perd donc de son importance.
Multithreading ou multitâche ?
Bien que ces deux technologies puissent sembler similaires à première vue, le multitâche et le multithreading reposent sur deux idées différentes. En principe, le multitâche signifie seulement que plusieurs programmes fonctionnent en même temps. L’unité centrale passe d’une tâche à l’autre. Cependant, les applications ne sont pas calculées simultanément, ni en même temps ni en pseudo-simultané. En règle générale, le système d’exploitation prend en charge l’organisation des différentes tâches et attribue les processus en attente à l’unité centrale. Pour l’utilisateur, il semble que plusieurs programmes soient traités simultanément, mais en fait ils sont toujours alternés.
Si vous appelez le gestionnaire des tâches, vous pouvez voir quels processus le système fait tourner côte à côte. De plus, si vous ouvrez le gestionnaire des tâches Mac, vous pouvez voir comment les différentes tâches sont organisées.
Le multithreading vise un degré de simultanéité plus élevé. Toutefois, cette technique cherche avant tout à accélérer les programmes individuels. Alors que le multitâche permet à différents programmes de fonctionner côte à côte, les threads individuels du multithreading proviennent d’un même programme. Le traitement simultané de ces sections du processus permet alors au logiciel de fonctionner plus rapidement.
Le multithreading est un moyen intelligent et économique d’augmenter les performances des processeurs. Toutefois, cela ne fonctionne que si le logiciel est également configuré pour cela. Si vous souhaitez augmenter les performances de votre ordinateur sans utiliser le multithreading, vous pouvez également trouver des moyens d’y parvenir. Si vous overclockez le CPU, vous devez cependant faire très attention à la température du CPU, sinon vous risquez de paralyser tout votre système.