Qu'est-ce que SMT (multithreading simultané) ?
Technique qui traite simultanément les instructions de plusieurs threads dans un même cœur pour mieux utiliser ses unités de calcul. Intel l'appelle Hyper-Threading.
Nom japonais: SMT(同時マルチスレッディング)
« SMT (multithreading simultané) » apparaît dans 2 questions d'entraînement réparties sur 2 thèmes, dont Sécurité matérielle, CPU et architecture.
Domaine: CPU et architecture
Comment le SMT partage un cœur
Un cœur moderne à exécution dans le désordre peut émettre plusieurs instructions par cycle, mais un seul thread occupe rarement toutes ses unités d'exécution, à cause des dépendances, des erreurs de prédiction de branchement et des défauts de cache. Le multithreading simultané (SMT) dote le cœur d'un état architectural distinct, comme le compteur ordinal et les registres architecturaux, pour chaque thread matériel, tandis que les threads partagent les unités d'exécution, les caches, les prédicteurs de branchement et les tampons internes. Au cours d'un même cycle, des instructions de threads différents peuvent être émises vers des unités différentes. Le système d'exploitation voit chaque thread matériel comme un processeur logique, généralement deux par cœur.
Quel gain attendre
Comme les threads se disputent les mêmes ressources d'exécution, le SMT ne double pas les performances comme pourrait le faire un second cœur. Les gains typiques vont d'environ 0 à 30 %. Les charges de travail souvent bloquées, comme celles qui attendent la mémoire, en profitent le plus : pendant qu'un thread attend la résolution d'un défaut de cache, l'autre occupe les unités. Les charges qui saturent déjà les unités de calcul flottant ou la bande passante mémoire gagnent peu, et la contention dans les caches partagés peut même ralentir chaque thread, ce qui compte pour les applications sensibles à la latence.
Le SMT face aux autres formes de multithreading
Le multithreading à gros grain ne bascule vers un autre thread que lors d'un long blocage, comme un défaut de cache. Le multithreading à grain fin entrelace les threads cycle par cycle, mais n'émet qu'à partir d'un seul thread par cycle, une approche courante dans les GPU et certains processeurs réseau. Le SMT va plus loin en émettant à partir de plusieurs threads dans le même cycle, ce qui convient aux cœurs superscalaires larges. Le multicœur, lui, duplique le cœur entier. Intel commercialise son SMT à deux voies sous le nom d'Hyper-Threading, et certains processeurs pour serveurs prennent en charge quatre ou huit threads par cœur.
Questions fréquentes
L'Hyper-Threading est-il la même chose que le SMT ?
Oui. Hyper-Threading est le nom commercial donné par Intel à sa mise en œuvre du multithreading simultané, dans laquelle chaque cœur physique apparaît au système d'exploitation comme deux processeurs logiques.
Le SMT double-t-il les performances du CPU ?
Non. Les deux threads partagent les unités d'exécution et les caches d'un même cœur : les gains de débit typiques sont d'environ 0 à 30 % selon la charge de travail, bien moins que l'ajout d'un second cœur.
Pourquoi certains systèmes désactivent-ils le SMT ?
Les threads d'un même cœur partagent les caches et les ressources d'exécution de façon assez étroite pour que l'un puisse observer l'autre par des canaux auxiliaires temporels. Désactiver le SMT, ou n'ordonnancer ensemble que des threads mutuellement fiables, supprime cette exposition au prix d'une certaine perte de débit.