
L'Hyper-Threading : sous ce terme quelque peu barbare se cache une optimisation spécifique aux processeurs Intel malheureusement mal connue du grand public. Cela s'explique assez aisément par le fait que cette particularité des Pentium 4 ne transpire nullement via un score 3Dmark, CPUMark ou autres benchmarks couramment utilisés. Le principe de l'Hyper-Threading, comme nous l'expliquions déjà dans un précédent article dédié aux processeurs multi-core, est d'émuler deux processeurs logiques en utilisant réellement un seul processeur physique. Il ne consiste donc pas en un apport de puissance brute mais en une optimisation de traitement des instructions permettant d'exploiter beaucoup mieux la puissance du processeur. Ce n'est donc à ne pas confondre avec un système réellement multi-processeurs qui augmente la puissance brute du système.
Un "thread" est une partie de code s'exécutant de façon indépendante ou simultanément avec d'autres "threads" dans le but d'accomplir une tâche. L'accomplissement de "threads" multiples ne peut se faire que sous un système d'exploitation multi-tâches préemptif tel que Windows NT, 200x ou XP. De plus, les applications multi-threads ne sont pas légion puisqu'elles ne concernent généralement que des logiciels professionnels qui demandent des calculs simples mais répétitifs.
La plupart des logiciels que nous utilisons sont mono-thread, c'est à dire qu'ils n'envoient leurs routines qu'à la queue-leu-leu au contraire des multi-threads qui envoient plusieurs routines sur les différents processeurs physiques ou logiques. Néanmoins, deux logiciels mono-thread peuvent être assimilés conceptuellement à un logiciel multi-threads. Et à l'heure actuelle, tout système récent tournant sous un système d'exploitation récent gère une multitude de programmes en même temps. Dès lors, le multi-threads fait clairement partie de la vie de nos chers ordinateurs.
Nos processeurs se font assaillir continuellement de routines à accomplir le plus rapidement possible, à l'image du petit employé devant traiter une multitude de dossiers, tous plus urgents les uns que les autres. Dès lors, toute l'optimisation réside dans le traitement de ces dossiers. Cela va plus loin que le principe du SMP (Symetric Multiprocessing) ou multi-processeurs qui ne ressemblent en fait qu'à un second employé travaillant de la même façon que le premier sans optimisation dans le traitement des dossiers.
Sur des processeurs mono-thread, le temps d'utilisation processeur est divisé en autant d'applications demandeuses. Chacune d'elle accède aux ressources processeurs tour à tour et c'est à charge du système d'exploitation multi-tâches de gérer tout cela. Dans un système bi-processeurs, deux applications peuvent avoir accès en même temps à chacun des processeurs. On peut dès lors parler de réel multi-tâches et non d'une succession rapide de tâches uniques.
L'Hyper-Threading simule deux processeurs de façon complètement transparente pour le système d'exploitation. Dès lors, ce dernier autorise deux applications a envoyer chacune une requête au même moment. Le principe présente l'avantage de décharger le système d'exploitation de 50% du traitement des requêtes, puisque ce dernier, au lieu de traiter chaque requête indépendamment, en traite deux d'un coup.
Ensuite, le traitement des instructions relève typiquement de l'architecture Netburst des Pentium 4. D'après Intel, l'exécution typique d'un "thread" basé sur des instructions IA-32 requiert 35% des ressources de l'architecture Netburst. Les 65% restant étant perdus. Le but donc de l'HT (Hyper-Threading) est d'occuper les 65% avec un autre "thread", un peu comme deux personnes ayant besoin en même temps de la salle de bain, l'une pour se raser, l'autre pour se laver. Au lieu d'attendre chacun son tour, les deux sont acceptées par le logiciel (OS) et envoyées là où elles pourront être traitées. Il reste alors au processeur de gérer cela en hardware.