Simultaneous multithreading

Le multithreading simultané, acronyme SMT, est une technique permettant d'améliorer l'efficacité globale des processeurs superscalaires grâce au multithreading matériel. Le SMT permet d'exécuter plusieurs threads indépendants afin de mieux utiliser les ressources fournies par les architectures informatiques modernes.

Le concept de multithreading est similaire à celui du multitâche, mais il est mis en œuvre au niveau de l'exécution du fil dans les processeurs superscalaires modernes.

Dans la conception des processeurs, il existe deux façons d'augmenter le parallélisme sur la puce avec moins de ressources nécessaires :

  1. Technique superscalaire : qui tente d'augmenter le parallélisme du niveau d'instruction (ILP) en exécutant plusieurs instructions en même temps (appelé : simultanément) ; en envoyant "simultanément" des instructions (appelé : dispatching d'instructions) à plusieurs unités d'exécution redondantes construites à l'intérieur du processeur.
  2. Technique CMT (Chip-level multithreading) : utilisation du parallélisme au niveau des fils (TLP) afin d'exécuter simultanément les instructions de plusieurs fils dans une même puce de processeur.

Il existe de nombreuses façons de soutenir plus d'un fil à l'intérieur d'une puce, à savoir :

  1. Multithreading entrelacé (IMT) : émission entrelacée d'instructions multiples provenant de différents threads, également appelée Multithreading temporel. Il peut être subdivisé en multithreading à grain fin ou à grain grossier en fonction de la fréquence des problèmes d'entrelacement. Le multithreading à grain fin émet des instructions pour différents threads après chaque cycle, tandis que le multithreading à grain grossier ne passe à l'émission d'instructions à partir d'un autre thread que lorsque le thread en cours d'exécution provoque de longs événements de latence (comme un défaut de page, etc.). Le multithreading à gros grain est plus courant pour les changements de contexte moins fréquents entre les threads. Pour les processeurs avec un pipeline par noyau, le multithreading entrelacé est la seule solution possible, car il ne peut émettre qu'une seule instruction par cycle.
  2. Multithreading simultané (SMT) : Émettre plusieurs instructions à partir de plusieurs fils en un seul cycle. Pour ce faire, le processeur doit être superscalaire.
  3. Multiprocesseur au niveau de la puce (CMP ou Multi-core processor) : intègre deux ou plusieurs processeurs superscalaires dans une puce, chacun exécutant des threads indépendamment.
  4. Toute combinaison d'IMT/SMT/CMP

Le facteur clé pour les distinguer est d'examiner combien d'instructions le processeur peut émettre en un cycle et combien de threads d'où proviennent les instructions.

Exemples de processeurs SMT modernes

  1. Le Pentium 4 d'Intel a été le premier processeur de bureau moderne à mettre en œuvre le multithreading simultané, à partir du modèle 3,06 GHz sorti en 2002, et introduit depuis dans un certain nombre de leurs processeurs. Intel appelle cette fonctionnalité Hyper-Threading Technology (HTT), et fournit un moteur SMT de base à deux fils. Intel revendique une amélioration de vitesse allant jusqu'à 30 % par rapport à un Pentium 4 non SMT identique par ailleurs.
  2. Les derniers modèles d'architecture MIPS comprennent un système SMT connu sous le nom de "MIPS MT".
  3. L'IBM POWER5, annoncé en mai 2004, se présente sous la forme d'un DCM à double cœur, ou d'un MCM à quatre ou huit cœurs, chaque cœur comprenant un moteur SMT à deux fils. L'implémentation d'IBM est plus sophistiquée que les précédentes, car elle peut attribuer une priorité différente aux différents fils, est plus fine et le moteur SMT peut être activé et désactivé dynamiquement, pour mieux exécuter les charges de travail pour lesquelles un processeur SMT n'augmenterait pas les performances. Il s'agit de la deuxième implémentation par IBM du multithreading matériel généralement disponible.
  4. L'Intel Atom, sorti en 2008, est le premier produit Intel à proposer le SMT (commercialisé sous le nom d'Hyper-threading) sans prendre en charge le réordonnancement des instructions, l'exécution spéculative ou le renommage des registres.

Pages connexes

  • Fil (informatique)
  • Le calcul parallèle
  • Parallélisme au niveau de l'enseignement
  • Processeurs multicœurs

Questions et réponses

Q : Qu'est-ce que le multithreading simultané ?


R : Le multithreading simultané (SMT) est une technique permettant d'améliorer l'efficacité globale des processeurs superscalaires dotés d'un multithreading matériel. Elle permet d'exécuter plusieurs fils d'exécution indépendants afin de mieux utiliser les ressources fournies par les architectures informatiques modernes.

Q : Quelle est la différence entre le SMT et le multitâche ?


R : Le concept du multithreading est similaire à celui du multitâche, mais il est mis en œuvre au niveau des fils d'exécution dans les processeurs superscalaires modernes, alors que le multitâche est mis en œuvre au niveau du processus.

Q : Quels sont les deux moyens d'accroître le parallélisme sur la puce ?


R : Les deux façons d'augmenter le parallélisme sur la puce sont la technique superscalaire et le multithreading au niveau de la puce (CMT).

Q : Quels sont les différents types de multithreading au niveau de la puce ?


R : Les différents types de multithreading au niveau de la puce comprennent le multithreading entrelacé (IMT), le multithreading à grain fin, le multithreading à grain grossier et le multithreading simultané (SMT).

Q : Comment distinguer l'IMT/SMT/CMP ?


R : Le facteur clé pour distinguer l'IMT/SMT/CMP est le nombre d'instructions que le processeur peut émettre au cours d'un cycle et le nombre de threads dont proviennent les instructions.

Q : Quel type de processeur doit être utilisé pour la SMT ?


R : Pour le SMT, il faut utiliser un processeur superscalaire.

Q : Quel type de processeur le Chip Level MultiProcessing utilise-t-il ?


R : Le multiprocessus au niveau de la puce utilise des processeurs multicœurs qui intègrent deux ou plusieurs processeurs superscalaires dans une seule puce, chacun exécutant des threads de manière indépendante.

AlegsaOnline.com - 2020 / 2023 - License CC3