Coeurs, Threads & Hyper Threading

Le processeur ou CPU (Central Processing Unit) est le composant de votre ordinateur qui exécute les instructions qui lui sont données par votre système d’exploitation. Quand vous exécutez un logiciel, décompressez une archive ZIP ou regardez une vidéo en haute définition, vous faites travailler en priorité le processeur. Pour répondre à vos demandes les plus exigeantes, le processeur peut être doté des plusieurs cœurs.

Un processeur standard possède un cœur (on dit qu’il est single-core). Un processeur avec un seul cœur ne peut traiter qu’une seule instruction à la fois, une instruction étant une tâche que l’on demande au processeur d’exécuter : convertir une vidéo, compresser des fichiers volumineux, exécuter un logiciel, etc. Plusieurs instructions peuvent être traitées par le cœur d’un processeur mais ce sera toujours en série, c’est-à-dire une instruction à la fois.

Un processeur multi-cœur est composé de deux ou plusieurs cœurs indépendants, chacun étant capable de traiter des instructions individuellement. Un processeur dual-core contient deux cœurs, un processeur quad-core quatre cœurs, un processeur hexa-core six cœurs, etc.

Un processeur multi-cœur permet à l’utilisateur d’exécuter plusieurs tâches en même temps sans subir de ralentissements ! Autrement dit, les cœurs sont utiles si vous utilisez plusieurs logiciels à la fois. Quand un programme (un logiciel de retouche photo par exemple) est en cours d’exécution et traité par un cœur, vous pouvez solliciter un autre cœur pour utiliser votre navigateur Web ou écrire un document, sans subir de ralentissements. Avoir plusieurs cœurs est aussi utile lorsque vous utilisez un logiciel qui peut utiliser plus d’un cœur. En effet, la majorité des programmes est conçue pour n’utiliser qu’un seul et unique cœur. Un logiciel qui est compatible avec le multi-cœur fonctionne lui beaucoup plus rapidement puisqu’il peut exécuter plusieurs instructions en même temps. C’est le cas notamment des logiciels de retouche photo mais aussi certains jeux vidéo.

Threads & Hyper Threading

Lorsque vous exécutez un programme, un (ou plusieurs) processus est créé dans la liste des processus de Windows afin de s’assurer qu’il reçoit bien du temps processeur et de la mémoire. Chacun de ces processus comprend au moins un thread, une séquence d’instructions que le processeur doit traiter. Un thread est donc un fil d’exécution, une tâche que doit exécuter le processeur.

Un cœur ne peut exécuter qu’un seul thread à la fois. Donc, si un processeur a deux cœurs, deux threads (deux tâches) peuvent être exécutées simultanément et ainsi de suite.

Cependant, Intel a implémenté la technique SMT (Simultaneous Multi Threading) à deux voies dans certains de ses processeurs, technique qui permet à un cœur d’exécuter parallèlement deux threads au lieu d’un seul, afin d’améliorer l’utilisation des ressources. Hyper-Threading est le nom donné par Intel à cette implémentation du SMT dans ses processeurs.

Pour chaque cœur physiquement présent, le système d’exploitation va adresser deux cœurs logiques et partager la charge de travail entre eux lorsque cela est possible. Schématiquement, cette technique permet de « simuler » deux cœurs physiques. Dans le Gestionnaire des tâches de Windows, vous pouvez voir combien de processeurs logiques existent sur votre système. Dans l’exemple ci-dessous, on voit que l’Hyper-Threading permet au processeur quad-core Intel Core i7-6700HQ d’avoir 8 processeurs logiques au lieu de 4.