web-dev-qa-db-fra.com

Désactiver l'hyperthreading dans le registre Windows 7

Certains bios n'ont pas l'option de désactiver l'hyperthreading du processeur, est-il possible de le désactiver dans le registre de Windows 7? Ou un outil ou un logiciel?

Je sais à propos de l'onglet de démarrage de msconfig (options avancées) et de la désactivation des processeurs, je ne sais pas s'il désactive les cœurs complets ou les hyperthreads, ni comment le savoir.

Windows 7 32 bits ou 64 bits

MODIFIER:

Supposons qu'il s'agisse d'un noyau double ou plus avec hyperthreading.

Dans le Gestionnaire de périphériques, il affiche 4 processeurs sur mon processeur Intel i5, et vous ne pouvez pas les désactiver non plus, dang.

17
Moab

De la Fiche technique du processeur Intel Core, volume 1 , page 38:

Technologie Intel Hyper-Threading

[...] Cette fonctionnalité doit être activée à l'aide du BIOS et nécessite le support du système d'exploitation.

En effet, l'hyperthreading est le matériel physique réel de la puce du processeur et peut donc être activé/désactivé au niveau du matériel uniquement .

Si vous savez quelle application ne fonctionne pas bien avec l'hyperthreading, vous pouvez utiliser un outil tel que StartAffinity si vous avez XP.

Si vous utilisez Windows 7, la commande start permet de le faire. Utilisez la commande suivante pour lancer un processus avec une affinité de processeur particulière (à nouveau, l'argument /AFFINITY n'a été ajouté que dans Windows 7):

start /AFFINITY <mask> "C:\yourprogram.exe" 

<mask> doit être remplacé par le masque hexadécimal des processeurs que vous souhaitez exécuter (le masque de processeur est simplement un masque binaire activant/désactivant cette affinité, de sorte que 00000101 active CPU0 et CPU2, et 00000010 n'active que CPU1).

Pour calculer la valeur hexadécimale, vous pouvez convertir le masque binaire, ou prendre la somme de 2 à la puissance des cœurs sur lesquels vous souhaitez exécuter le programme (à partir de 0). et convertissez cette valeur en hexadécimal.

Par exemple, si j’ai un système à quatre cœurs et que je veux seulement que le processus s’exécute sur CPU0 et CPU2, j’ajouterais 2 + 22 = 1 + 4 = 5. Convertissez 5 en hexadécimal, ce qui n’est que 5, et définissez-le comme votre <mask>. Vous pouvez aussi simplement convertir 00000101 en sortilège. Si vous ne savez pas comment convertir ces bases, vous pouvez simplement utiliser cette table de conversion .

3
Breakthrough

La désactivation de l’hyper-threading est une affaire réservée au BIOS.

Je suppose que vous souhaitez désactiver Hyper-Threading car votre application n'est pas optimisée pour cette fonctionnalité et peut avoir des performances réduites.

En ce qui concerne la numérotation des processeurs, les cœurs physiques sont impairs - ainsi, dans un système HT à deux cœurs, les cœurs 1 et 3 seraient les "vrais" CPU. Si vous sélectionnez 2 cœurs dans msconfig, les processeurs 1 et 2 sont activés, de sorte qu'un processeur physique et logique (HT) est actif. Cela ne vous serait d'aucun avantage si vous rencontrez des problèmes avec les logiciels ayant des problèmes avec HT.

2
Dustin G.

Dans Windows, le moyen le plus simple consiste à modifier l'affinité de Explorer.exe, car chaque processus lancé à partir de celui-ci héritera du masque d'affinité. C'est encore loin d'être parfait mais au moins vous ne le faites qu'une fois par session.

0
E. Attia