Selectionnez un article :

Selectionnez une page :

Architecture du Pentium 4
L'Hyper-threading

Dernière innovation de l'architecture NetBurst, la technologie Hyper-Threading permet l'exécution simultanée de plusieurs threads avec un seul processeur physique.

Pour mieux comprendre en quoi elle consiste, expliquons d'abord brièvement ce qu'est un thread, et quel est son intérêt.

=> Un thread (tâche) consiste en un morceau de programme dont la particularité est de s'exécuter séparément du reste du programme, à la différence d'une fonction dont le début et la fin sont définis de façon figée dans le déroulement du programme.

L'intérêt du thread réside dans la séparation des tâches, et un environnement multi-tâche est ainsi capable de répartir les threads courants sur les ressources présentes. Ce système prend tout son sens sur une machine à plusieurs processeurs : l'OS peut ainsi affecter un ou plusieurs threads à chaque processeur, parallélisant ainsi leur exécution.
Lorsqu'il n'y a qu'un seul processeur, celui-ci traite alternativement tous les threads en cours, passant continuellement de l'un à l'autre, et donnant ainsi l'illusion d'une exécution simultanée. Afin de permettre cette alternance continuelle entre les threads, chacun d'eux possède un contexte, ou état, qui contient entre autres l'état des registres du processeur. Chaque fois qu'un thread devient actif, son état est restauré, permettant au processeur de reprendre l'exécution du thread là où il l'avait laissée. Enfin, lorsqu'un autre thread va prendre la main, ce contexte est sauvegardé.

L'Hyper-Threading consiste à permettre l'exécution simultanée de deux threads sur un seul processeur. Pour cela, le Pentium 4 peut gérer deux contextes simultanés. Ces deux contextes contiennent alors chacun une représentation différente des mêmes registres. Le système d'exploitation y voit alors deux processeurs, et se comporte comme s'il en était ainsi. On ne parle alors plus de système SMP (Symmetric Multi Processing) mais de SMT (Simultaneous Multi Threading) et de processeur logique (le Prestonia possède deux processeurs logiques).



On peut se demander alors à quoi cela sert de permettre l'exécution simultanée de deux threads s'il n'y a physiquement qu'un seul processeur. En fait l'idée est simple : mixer ainsi deux flux d'instructions arrivant au processeur, permet de favoriser l'utilisation simultanée de toutes les ressources du processeur telles que les unités d'exécution, et permet de réduire certaines causes de mauvais remplissage du pipeline (les dépendances par exemple).



Flux d'instruction classique

Avec Hyper-Threading


Selon Intel, un code classique n'utilise en moyenne que 35% des ressources du Pentium 4, et l'utilisation de l'Hyper-Threading permettrait un gain allant jusqu'à 30%. Pour vérifier cela, il vous faudra la version Prestonia (Xeon) du Pentium 4, car elle est officiellement la seule version à supporter l'Hyper-Threading.
Un Pentium 4 classique renvoie ces informations :




Ainsi d'un point de vue matériel, toutes les versions de Pentium 4 supportent l'Hyper-Threading, mais un seul processeur logique est actif (ce qui revient à n'utiliser qu'un seul des deux contextes).