Comprendre l'hyper threading

Comprendre l'hyper threading - Processeur - Hardware

Marsh Posté le 12-05-2013 à 16:16:14    

Je suis en train de chercher la nouvelle configue de mon PC: http://forum.hardware.fr/hfr/Hardw [...] 2395_1.htm
 
Mon pc actuel possède 2 cœurs physique et 4 logiques avec l'hyper threading.
 
Sur une tache utilisant un seul cœur, est ce que je possède un quart de la ressource du processeur ou la moitié car lorsque je lance un calcul sur tableur libre office mon ordi plafonne à 25% avec un cœur sur les 4 affichés a fond?

Reply

Marsh Posté le 12-05-2013 à 16:16:14   

Reply

Marsh Posté le 12-05-2013 à 16:46:37    

Enfaite un processeur deux coeurs comme le i3 est un faux 4 coeurs ... Dans certaines tâches cette technologie est vraiment utile mais en aucun cas elle remplacera deux vrais coeurs physiques ...
 
Un peu de lecture, google est ton ami : http://fr.wikipedia.org/wiki/Hyper-Threading


---------------
Asus Mini Transformer - Intel Atom X5 X8350 1.44 GHz, 1.92 GHz Turbo - Intel HD 400 - 4 GB memory - 128 GB eMMC - Windows 10.
Reply

Marsh Posté le 12-05-2013 à 17:19:39    

+1 pour le wiki qui explique plutôt bien la chose même si je remarque qu'ils ont oublié de noter un type de contre-performance assez important : quand 2 processus s’exécutent sur le même core physique en même temps alors qu'un autre core physique est libre.
C'est le rôle de l'OS de distribuer les tâches quand elles sont indépendantes, mais le développeur peut choisir de forcer "tel core logique pour tel tâche" dans un logiciel et dans les faits on constate assez souvent des pertes de performance importantes liés à l'hyperthreading.
 
Pour répondre à la question : proche de la moitié, mais pas tout à fait si on prends en compte les gains potentiels lorsque tous les cores logiques sont utilisés.
 


---------------
TESO @Althaz
Reply

Marsh Posté le 12-05-2013 à 17:31:09    

Salut,
 
Il y a un article dans canard PC qui expliquait très bien comment fonctionne l'Hyper-threading : N°14 page 59.
 
Si tu veux je te fait un scan (je te le met en MP) ?  :)  
 
Cdlt.  :jap:

Reply

Marsh Posté le 12-05-2013 à 17:34:06    

Si pour une tache unique, j'ai accès à la moitié de la ressource du processeur pourquoi alors mon processeur plafonne a 25% d'après windows? Est ce une erreur de windows?

Reply

Marsh Posté le 12-05-2013 à 17:37:25    

Crashdent tu pourras me l'envoyer aussi ? Merci  :)


---------------
Asus Mini Transformer - Intel Atom X5 X8350 1.44 GHz, 1.92 GHz Turbo - Intel HD 400 - 4 GB memory - 128 GB eMMC - Windows 10.
Reply

Marsh Posté le 12-05-2013 à 17:40:30    

Ok. ;)

Reply

Marsh Posté le 12-05-2013 à 17:42:40    

Crashdent je veux bien également ta doc, Merci.

Reply

Marsh Posté le 12-05-2013 à 18:00:49    

Merci Pour la doc Crashdent.
 
La doc dit donc en résumé que si un coeur logique d'un coeur physique bloque sur une tache le 2ème coeur logique prend le relais en utilisant le reste de la ressouce disponible du coeur physique.
 
Je ne comprend pas alors pourquoi windows me dit que j'ai 1 coeur logique à fond et je vois bien que le pc rame sur cette tache avec un processeur à 25% :-(
Le processeur devrait être à 50%.

Reply

Marsh Posté le 12-05-2013 à 18:12:10    

ouily a écrit :

Si pour une tache unique, j'ai accès à la moitié de la ressource du processeur pourquoi alors mon processeur plafonne a 25% d'après windows? Est ce une erreur de windows?


 
Windows voit 4 cores, ton appli en utilise 1 ce qui de son point de vue fait 25% d'utilisé.
 
Maintenant ce que Windows ne peut pas prendre en considération c'est que si t'en lance un deuxième et que tu le force sur le deuxième core logique les perfs des deux threads va se trouver divisé par 2 (ou presque) car ils vont être calculés par le même core physique.  


---------------
TESO @Althaz
Reply

Marsh Posté le 12-05-2013 à 18:12:10   

Reply

Marsh Posté le 12-05-2013 à 18:13:27    

Comme on appel vulgairement une application mono-thread (utilisant 1 seul coeur)  :hello:


---------------
Asus Mini Transformer - Intel Atom X5 X8350 1.44 GHz, 1.92 GHz Turbo - Intel HD 400 - 4 GB memory - 128 GB eMMC - Windows 10.
Reply

Marsh Posté le 12-05-2013 à 18:21:59    

Ok, donc erreur de la part de windows.
Merci pour votre aide.

Reply

Marsh Posté le 12-05-2013 à 18:23:17    

Xenon19 a écrit :

Comme on appel vulgairement une application mono-thread (utilisant 1 seul coeur)  :hello:


 ? :heink:

Reply

Marsh Posté le 12-05-2013 à 18:26:59    

Oui et non, on ne peut pas vraiment parler d'erreur, c'est juste que le gestionnaire de tâches affiche le temps d'utilisation moyen de chaque core logique et leur moyenne.  
Il faut l’interpréter en tant que tel, c'est pas une mesure de "consommation de puissance de calcul" ce qui serait franchement impossible à calculer au vu de tout ce qu'il faudrait prendre en compte.


---------------
TESO @Althaz
Reply

Marsh Posté le 12-05-2013 à 18:41:50    

Althaz a écrit :

Oui et non, on ne peut pas vraiment parler d'erreur, c'est juste que le gestionnaire de tâches affiche le temps d'utilisation moyen de chaque core logique et leur moyenne.  
Il faut l’interpréter en tant que tel, c'est pas une mesure de "consommation de puissance de calcul" ce qui serait franchement impossible à calculer au vu de tout ce qu'il faudrait prendre en compte.


 
Merci de la précision qui n'est pas des moindres.  ;)

Reply

Marsh Posté le 12-05-2013 à 20:23:18    

*S'avance sur la pointe des pieds en jouant de la flûte, prends sa voix mielleuse* Crashdent, pourrais tu m'envoyer ta doc ?
 
 [:americanpinkiepie:1]


Message édité par Yog Sothoth le 12-05-2013 à 20:24:14

---------------
L'adulte ne croit pas au père Noël: Il vote. (P.Desproges)
Reply

Marsh Posté le 14-05-2013 à 14:38:14    

Althaz a écrit :

Maintenant ce que Windows ne peut pas prendre en considération c'est que si t'en lance un deuxième et que tu le force sur le deuxième core logique les perfs des deux threads va se trouver divisé par 2 (ou presque) car ils vont être calculés par le même core physique.  


bah dans les faits, non, la puissance des 2 threads n'est pas divisée par deux.
reprenons le mode de fonctionnement de l'hyper-threading par INTEL.
Dans un processeur normal, il y a un pipeline d’exécution des instructions, ce pipeline est alimenté en micro-instructions par le décodeur, mais ce décodeur cadence et organise ces instructions en fonction d'impératifs tels l'attente d'un chargement mémoire, d'un calcul, etc., ce qui fait que ce pipeline a des bulles où il ne fait rien.
Dans ce même processeurs il y a plusieurs modules d'exécution des micro-instructions, le thread qui les alimente ne les utilise pas tous en même temps.
ces 2 fonctionnement font que le processeur passe une bonne partie de son temps en sous-utilisation.
 
Donc INTEL, et IBM qui va bien plus loin, a utilisé 2 technologies pour remédier à ces 2 problèmes, l'OOE (out of order) qui mélange les instructions en respectant un certain nombre de contrainte en faisant que le fil des instructions du thread ne soit plus exécuté dans l'ordre, mais au plus rapide, et l'hyperthreading qui mélange 2 threads, ceci afin d'avoir un processeur qui tourne à plein.
 
De fait, un core simple avec hyperthreading correspond à 80/90% d'un vrai dual core, ce qui est très intéressant, car pour un ajout d'une très petite partie électronique, tu as un gros gain en puissance.


---------------
un jour, moi aussi, je serais grand...
Reply

Marsh Posté le 14-05-2013 à 16:06:58    

master71 a écrit :

De fait, un core simple avec hyperthreading correspond à 80/90% d'un vrai dual core, ce qui est très intéressant, car pour un ajout d'une très petite partie électronique, tu as un gros gain en puissance.


 
Je t'envoie la doc à toi aussi. ;)

Reply

Marsh Posté le 14-05-2013 à 16:09:41    

master71 a écrit :


bah dans les faits, non, la puissance des 2 threads n'est pas divisée par deux.
reprenons le mode de fonctionnement de l'hyper-threading par INTEL.
Dans un processeur normal, il y a un pipeline d’exécution des instructions, ce pipeline est alimenté en micro-instructions par le décodeur, mais ce décodeur cadence et organise ces instructions en fonction d'impératifs tels l'attente d'un chargement mémoire, d'un calcul, etc., ce qui fait que ce pipeline a des bulles où il ne fait rien.
Dans ce même processeurs il y a plusieurs modules d'exécution des micro-instructions, le thread qui les alimente ne les utilise pas tous en même temps.
ces 2 fonctionnement font que le processeur passe une bonne partie de son temps en sous-utilisation.
 
Donc INTEL, et IBM qui va bien plus loin, a utilisé 2 technologies pour remédier à ces 2 problèmes, l'OOE (out of order) qui mélange les instructions en respectant un certain nombre de contrainte en faisant que le fil des instructions du thread ne soit plus exécuté dans l'ordre, mais au plus rapide, et l'hyperthreading qui mélange 2 threads, ceci afin d'avoir un processeur qui tourne à plein.
 
De fait, un core simple avec hyperthreading correspond à 80/90% d'un vrai dual core, ce qui est très intéressant, car pour un ajout d'une très petite partie électronique, tu as un gros gain en puissance.


 
Euh, en général on parle d'un niveau de perfs variant entre 55 et 65% d'un vrai dual core.
 
D’où le "(ou presque)" dans ma phrase.


---------------
TESO @Althaz
Reply

Marsh Posté le 14-05-2013 à 16:48:05    

les docs que j'avais lues à l'époque parlait de plus que ça...


---------------
un jour, moi aussi, je serais grand...
Reply

Marsh Posté le 14-05-2013 à 17:25:48    

Fais pété la doc Crash svp ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed