Simultaneous multithreading

Simultaneous multithreading

Le Simultaneous Multi Threading est une technique informatique datant des années 1950. Elle consiste, comme le Symmetric multiprocessing (SMP), à augmenter le TLP (Thread Level Parallelism), c’est-à-dire le parallélisme des threads.

Le but est d'améliorer le remplissage du flot d'instructions du processeur et donc d'augmenter sa vitesse de traitement, à condition que le programme soit conçu de façon adéquate.

Les CPU non SMT passent alternativement d'un thread à l'autre pour l'exécution des programmes. Le SMT est le partage du pipeline d'exécution d'un processeur entre plusieurs threads, qu'ils soient d'un même programme ou de deux programmes différents. Les registres et les caches sont également partagés. Ceci implique un système de suivi des différentes instructions et données dans le CPU.

Si deux threads peuvent se partager le pipeline, on parle de SMT à deux voies (comme pour l'Hyperthreading d'Intel), de SMT à 4 voies pour 4 threads (comme pour le DEC Alpha EV8).

Le POWER5 d'IBM intègre un SMT deux voies complexe, puisqu'il peut attribuer des priorités aux threads et activer/désactiver le SMT de manière dynamique pour les cas où la méthode n'augmente pas les performances. Le processeur multi-cœur POWER7 intègre un SMT quatre voies permettant de désactiver un ou deux threads inactifs sur chaque cœur afin d'augmenter les performances des threads actifs[1].

Références