Disabilita Hyperthreading nel registro di Windows 7


18

Alcuni BIOS non hanno l'opzione per disabilitare l'hyperthreading della CPU, esiste un modo per disabilitarlo nel registro di Windows 7? O uno strumento o un software?

Conosco la scheda di avvio di msconfig (opzioni avanzate) e la disabilitazione dei processori lì, non sono sicuro se disabilita core completi o hyperthreads o come dirlo.

Windows 7 a 32 bit o 64 bit

MODIFICARE:

Supponiamo che sia un dual core o più con hyperthreading.

In Gestione dispositivi mostra 4 processori sul mio processore Intel i5 e non puoi nemmeno disabilitarli, dang.


5
Penso che questa sia la domanda impossibile del mese.
Moab,

Non puoi davvero disabilitarlo nel BIOS? È l'ultima versione?
KCotreau,

2
È un PC HP, ben noto per il bios paralizzato, indipendentemente dalla versione.
Moab,

1
Non tutti i chip i5 sono creati uguali, alcuni hanno 4 core fisici e Hyper-threading disabilitati, mentre alcuni hanno 2 core e Hyper-threading abilitati - di solito i notebook utilizzano Hyper-threading e i chip desktop hanno più probabilità di essere una variante quad-core. Stai utilizzando un desktop o un notebook e conosci il modello i5?
Dustin G.

Non mi preoccuperei troppo di Hyperthreading. Ha visto grandi miglioramenti dal P4. Al giorno d'oggi non succhia le prestazioni.
surfasb,

Risposte:


3

Dalla scheda tecnica del processore Intel Core, volume 1 , pagina 38:

Tecnologia Intel Hyper-Threading

[...] Questa funzione deve essere abilitata tramite il BIOS e richiede il supporto del sistema operativo.

Questo perché l'hyperthreading è l'hardware fisico effettivo sulla matrice della CPU e quindi può essere abilitato / disabilitato solo a livello hardware .

Se sai quale applicazione non funziona bene con l'hyperthreading, puoi utilizzare uno strumento come StartAffinity se hai XP.

Se usi Windows 7, c'è un startcomando integrato che può fare questo. Utilizzare il comando seguente per avviare un processo con una particolare affinità del processore (di nuovo, l' /AFFINITYargomento è stato aggiunto solo in Windows 7):

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

Dove <mask>dovrebbe essere sostituito con la maschera esadecimale per i processori che si desidera eseguire (la maschera del processore è solo una maschera binaria che abilita / disabilita tale affinità, quindi 00000101 abilita CPU0 e CPU2 e 00000010 abilita solo CPU1).

Per calcolare il valore esadecimale, puoi convertire la maschera binaria o prendere la somma di 2 alla potenza dei core su cui vuoi eseguire il programma (a partire da 0) e convertire quel valore in esadecimale.

Ad esempio, se ho un sistema a quattro core e voglio solo che il processo venga eseguito su CPU0 e CPU2, aggiungerei 2 0 + 2 2 = 1 + 4 = 5. Converti 5 in esadecimale, che è solo 5, e impostalo come tuo <mask>. Puoi anche convertire 00000101 in esadecimale. Se non sai come convertire queste basi, puoi semplicemente usare questa tabella di conversione .


Capisco l'affinità, ma questo non disabiliterà un hyperthread, ma solo un core completo. Non credo che sia possibile disabilitare solo l'hyperthreading, solo nel BIOS, all'interno del sistema operativo, ma alcuni BIOS non hanno questa opzione, soprattutto sui PC HP, speravo che qualcuno potesse dimostrarmi che mi sbagliavo.
Moab,

1
Ogni nucleo fisico si presenta nel sistema operativo come due logici. Se si disabilita uno di quei core logici , si disabilita effettivamente l'hyperthreading, poiché le istruzioni vengono inviate solo a uno dei due core logici, quindi non viene effettivamente eseguito l'hyperthreading: la coda delle istruzioni viene inviata direttamente al core fisico.
Sfondamento

Ho capito, ma disabilita l'hyperthreading solo per quel core. Ho bisogno di entrambi disabili.
Moab,

1
@Moab Quindi si abilitano tutti i core con numeri pari o dispari a disabilitarsene, usando le maschere che ho elencato sopra. Quindi se hai quattro core logici, usa 00000101 o 5 in esadecimale, come maschera esagonale per impostare solo CPU0 e CPU2 come abilitati. Se hai 8 core logici, la tua maschera di bit sarebbe 01010101 o 55 in esadecimale (per abilitare solo CPU0, 2, 4 e 6).
Sfondamento

2
@Moab non ha importanza tecnica, purché disabiliti tutti gli altri core. Ogni set di due core logici costituisce i gestori di thread per un singolo core fisico.
Sfondamento

2

La disabilitazione dell'hyper-threading è solo una questione del BIOS.

Suppongo che desideri disabilitare l'hyper-threading perché hai un'applicazione non ottimizzata per questa funzione e con prestazioni ridotte?

Quando si guarda alla numerazione della CPU, i core fisici sono dispari - quindi in un sistema HT dual-core, i core 1 e 3 sarebbero le CPU "reali". Se si selezionano 2 core in msconfig, le CPU 1 e 2 sarebbero abilitate in modo da avere una CPU fisica e logica (HT) attiva - questo non sarebbe vantaggioso se si riscontrano problemi con il software che ha problemi con HT.


Sì, ma ... potresti usare Task Manager per impostare l'affinità con le CPU 1 e 3.
Ben Voigt

Dustin G, è quello che pensavo, ma trovare articoli su questo è quasi impossibile. Grazie.
Moab,

0

In Windows, un modo più semplice è cambiare l'affinità di explorer.exe poiché ogni processo avviato erediterà la maschera di affinità. È ancora lungi dall'essere perfetto, ma almeno lo fai solo una volta per sessione.


Non sono sicuro che questo risponda alla domanda, poiché l'affinità di processo non è la stessa cosa di Hyperthreading.
Doktoro Reichard,

Fortunatamente, le cose non si basano su ciò che si è sicuri o meno, ma su come sono specificate in MSDN (ad esempio) msdn.microsoft.com/en-us/library/windows/desktop/… GetLogicalProcessorInformation fornisce affinità al processo maching fisico / logico processori (questo è un modo esatto). Sui sistemi hyperthreading con SMT a 2 core logici (come l'hyperthreading) Core # 0 è bit 0 e 1, Core # 1 bit 2 e 3 della maschera di affinità ecc ... (questo è un modo empirico). Le sarei grato se potessi evitare di ridimensionare le cose che hai solo intuizioni su ...
E. Attia,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.