En théorie.
Dans la réalité, c'est beaucoup moins glorieux.
C'est efficace seulement pour des tâches parallèles qui ont de longues boucles de pause, d'attente.
Car si on envoie 2 tâches de calcul intensif sur un seul cœur, c'est l’hécatombe au niveau performances.
Car l'hyper-threading permet seulement d'avoir 2 suites d'instructions (2 unités de commande) en parallèle, mais au final calculées par une seule ALU.
Après ce n'est pas pour rien que l'on a développé cette architecture. C'est très performant pour les OS multi-tâches, c'est indéniable.
Mais les architectures multi-cœurs sont la seule véritable solution. Et les algorithmes associés. Qui dispatchent les calculs sur plusieurs cœurs.
C'est une grosse difficulté algorithmique. On rêverait tous d'avoir un seul cœur cadencé à 20 Ghz.
Sauf que c'est impossible.
On est limité par la vitesse de propagation du courant. Pourtant proche de la vitesse de la lumière.
La vitesse du courant pour passer d'un coin à l'autre d'un chipset (tout droit vers le haut, tout droit vers la gauche en ligne droite), pour passer au point diagonalement opposé est trop basse pour respecter les échéances pour des fréquences de plusieurs giga-hertz....

Donc on parallélise les calculs.
