Desativar Hyperthreading no registro do Windows 7

18

Alguns BIOS não têm a opção de desativar o Hyperthreading da CPU, existe uma maneira de desativá-lo no Registro do Windows 7? Ou uma ferramenta ou software?

Eu sei sobre a guia de inicialização do msconfig (opções avançadas) e desativar os processadores lá, não tenho certeza se desativa núcleos completos ou hyperthreads, ou como saber.

Windows 7 de 32 ou 64 bits

EDITAR:

Vamos supor que seja um núcleo dual ou mais com hyperthreading.

No Gerenciador de dispositivos, ele mostra quatro processadores no meu processador Intel i5 e você também não pode desativá-los.

Moab
fonte
5
Eu estou pensando que esta é a questão impossível do mês.
Moab
Você realmente não pode desativá-lo no BIOS? É a versão mais recente?
KCotreau
2
É um PC HP, conhecido por bios danificados, não importa a versão.
Moab
1
Nem todos os chips i5 são criados iguais, alguns têm 4 núcleos físicos e o Hyper-threading desativado, enquanto outros têm 2 núcleos e o Hyper-threading ativados - geralmente os cadernos de anotações usam Hyper-threading e os chips de desktop têm mais probabilidade de ser uma variante de quatro núcleos. Você está usando um desktop ou notebook e conhece o modelo i5?
Dustin G.
Eu não me preocuparia muito com o Hyperthreading. Ele viu grandes melhorias desde o P4. Hoje em dia, não suga o desempenho.
surfasb

Respostas:

3

Na folha de dados do processador Intel Core, volume 1 , página 38:

Tecnologia Intel Hyper-Threading

[...] Esse recurso deve ser ativado usando o BIOS e requer suporte do sistema operacional.

Isso ocorre porque hyperthreading é hardware físico real no dado CPU, e assim pode ser ativado / desativado em um nível de hardware única .

Se você souber qual aplicativo não funciona bem com o hyperthreading, poderá usar uma ferramenta como o StartAffinity se tiver o XP.

Se você usa o Windows 7, existe um startcomando interno que pode fazer isso. Use o comando a seguir para iniciar um processo com uma afinidade de processador específica (novamente, o /AFFINITYargumento foi adicionado apenas no Windows 7):

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

Onde <mask>deve ser substituída pela máscara hexadecimal dos processadores que você deseja executar (a máscara do processador é apenas uma máscara binária que habilita / desabilita essa afinidade, portanto 00000101 habilita CPU0 e CPU2 e 00000010 habilita apenas CPU1).

Para calcular o valor hexadecimal, você pode converter a máscara binária ou levar a soma de 2 à potência dos núcleos nos quais deseja executar o programa (a partir de 0) e converter esse valor em hexadecimal.

Por exemplo, se eu tiver um sistema de quatro núcleos e desejar apenas executar o processo na CPU0 e CPU2, adicionaria 2 0 + 2 2 = 1 + 4 = 5. Converta 5 em hexadecimal, que é apenas 5, e defina isso como seu <mask>. Você também pode converter 00000101 em hexadecimal também. Se você não sabe como converter essas bases, basta usar esta tabela de conversão .

Avanço
fonte
Entendo a afinidade, mas isso não desativará um hyperthread, apenas um núcleo completo. Eu não acho que seja possível desativar dentro do sistema operacional Somente o hyperthreading, apenas no BIOS, mas alguns BIOS não têm essa opção, principalmente em PCs HP, eu esperava que alguém pudesse me provar que estava errado.
Moab
1
Cada núcleo físico aparece no sistema operacional como dois lógicos. Se você desabilitar um desses núcleos lógicos , desabilitará efetivamente o hyperthreading, uma vez que as instruções são enviadas apenas para um dos dois núcleos lógicos, portanto, nenhum hyperthreading é realmente executado - a fila de instruções é enviada diretamente ao núcleo físico.
Revelação
Entendi, mas ele apenas desativa o hyperthreading para esse núcleo. Eu preciso dos dois desativados.
Moab
1
@Moab Em seguida, basta ativar todos os núcleos numerados pares ou ímpares para desativar todos os outros, usando as máscaras listadas acima. Portanto, se você tiver quatro núcleos lógicos, use 00000101 ou 5 em hexadecimal, como sua máscara hexagonal, para definir apenas CPU0 e CPU2 como ativado. Se você tiver 8 núcleos lógicos, sua máscara de bits será 01010101 ou 55 em hexadecimal (para ativar apenas CPU0, 2, 4 e 6).
Breakthrough
2
@Moab, isso não importa tecnicamente, desde que você desative todos os outros núcleos. Cada conjunto de dois núcleos lógicos compõe os manipuladores de encadeamento para um único núcleo físico.
Breakthrough
2

Desativar o Hyper-threading é um caso apenas do BIOS.

Suponho que você gostaria de desativar o Hyper-Threading porque possui um aplicativo que não é otimizado para esse recurso e pode ter desempenho reduzido?

Ao analisar a numeração da CPU, os núcleos físicos são numerados ímpares - portanto, em um sistema HT de núcleo duplo, os núcleos 1 e 3 seriam os "reais" da CPU. Se você selecionar 2 núcleos no msconfig, as CPUs 1 e 2 seriam ativadas para que você tivesse uma CPU Física e Lógica (HT) ativa - isso não seria benéfico se você estivesse tendo problemas com o software que possui problemas com HT.

Dustin G.
fonte
Sim, mas ... você poderia usar o Gerenciador de Tarefas para set afinidade com CPUs 1 e 3.
Ben Voigt
Dustin G, foi o que pensei, mas encontrar artigos sobre isso é quase impossível. Obrigado.
Moab
0

No Windows, a maneira mais fácil é alterar a afinidade do explorer.exe, pois todos os processos iniciados a partir dele herdarão a máscara de afinidade. Ainda está longe de ser perfeito, mas pelo menos você faz isso apenas uma vez por sessão.

E. Attia
fonte
Não sei se isso responde à pergunta, pois a afinidade do processo não é a mesma coisa que o Hyperthreading.
Doktoro Reichard
Felizmente, as coisas não se baseiam no que você tem certeza ou não, mas como elas são especificadas no MSDN (por exemplo) msdn.microsoft.com/en-us/library/windows/desktop/… GetLogicalProcessorInformation fornece às afinidades do processo a manipulação física / lógica processadores (esta é uma maneira exata). Em sistemas hyperthreading com 2 núcleos lógicos SMT (como hyperthreading), o núcleo nº 0 é o bit 0 e 1, o núcleo nº 1, os bits 2 e 3 da máscara de afinidade, etc ... (essa é uma maneira empírica). Eu ficaria muito grato se você poderia evitar downvoting coisas que você tem apenas intuições sobre ...
E. Attia