
Afin de vous donner une idée du mode d'exécution des différentes variantes de multi-threading et de multi-core, nous avons choisi d'employer des schémas, tous formatés de la même façon. Ce choix, s'il facilite la lecture, tend à réduire les différences qui pourtant existent bel et bien entre les différents microprocesseurs. C'est le cas notamment sur le plan du niveau auquel le CPU est super-scalaire, i.e. le nombre d'ALU et FPU parallèles dont il dispose (voir plus bas) mais aussi son rendement, etc. Comprenez bien que le but de ces schémas n'est absolument pas de donner une comparaison exacte des différents modèles et de leurs performances, mais simplement d'expliquer leur mode de fonctionnement et de l'illustrer.
En aucune manière il n'est possible de mettre face à face les schémas de deux processeurs et espérer ainsi déterminer lequel est le plus rapide, d'autant plus que les fréquences de fonctionnement diffèrent et que les situations prises comme exemples sont totalement fictives et ne reflètent pas forcément les conditions d'utilisation réelle. Les schémas ne sont présents qu'à titre d'illustration, et ne doivent être pris que comme tels.
Le multi-threading tel que nous, particuliers, le connaissons, se présente sous la forme de l'HyperThreading des Pentium 4. "HyperThreading" n'est qu'une désignation commerciale donnée par Intel à une technologie connue sous le nom de Simultaneous Multi-Threading (Multi-Threading Simultané) ou plus simplement SMT. D'abord, il convient d'expliquer comment fonctionne un CPU classique dans un environnement multi-thread.
Pour cela, souvenons-nous qu'en 1993, Intel introduisait avec le Pentium le premier microprocesseur grand public super-scalaire. Sous ce nom barbare se cache un principe assez simple, il s'agit d'augmenter le nombre d'unités de calcul (d'entiers : ALU, de flottants : FPU) afin d'exécuter plusieurs instructions simultanément. Mais il était impossible pour le Pentium ainsi que pour ses successeurs, du moins jusqu'au Pentium 4 cadencé à 3,06 GHz, d'exécuter en parallèle plusieurs instructions relatives à des threads différents.