
Lors d'une utilisation classique, même bureautique, de nombreux threads cohabitent et qui doivent tous être exécutés. Le microprocesseur se doit donc de les exécuter un par un, ce qui ne va pas sans poser quelques problèmes. En effet, lors de son exécution, l'état d'un thread est stocké dans des registres internes au CPU. Lorsque le microprocesseur débute l'exécution d'un nouveau thread, le système d'exploitation (Windows par exemple) doit copier dans la RAM les informations relatives à l'état du premier thread. Cette opération fait donc appel à une couche logicielle, ce qui prend un temps non négligeable. On appelle cette période de transition entre deux threads "context switch". Nous avons donc le schéma suivant, en prenant pour exemple un CPU super-scalaire "4-ways" :

Ici, les carrés bleus représentent les exécutions d'instructions relatives au thread 1, et les carrés rouges celles relatives au thread 2. En gris sont représentées celles permettant le context switch, et vous pouvez observer la perte de cycles, donc de rendement. On appelle ce type de perte une "perte verticale".
Cependant, même si le CPU perd du temps dans cette opération, et même si elle se répète assez souvent selon les situations, il ne faut pas perdre de vue le fait qu'une poignée de cycles ne représente que quelques nanosecondes, l'utilisateur a donc une impression de traitement simultané des threads, bien que ce ne soit pas le cas. C'est ce mode de fonctionnement qu'utilisent les Athlon XP/64/FX et les Opteron d'AMD.