Explicar a razão pela qual o Hyper Threading ajuda em tudo requer alguma explicação sobre o que exatamente é e, por sua vez, como os recursos são compartilhados em um processador.
Antecedentes
Uma tradicional CPU multi-core compartilha muito pouco em termos de recursos internos entre os núcleos. Na maioria dos casos mais antigos, apenas o cache L3 (e possivelmente o L4, se existisse) era compartilhado entre núcleos, todo o restante era exclusivo de cada núcleo. Por causa de como os computadores funcionam, isso acaba resultando na maioria das partes de um núcleo não sendo realmente usadas por todas as instruções executadas nele.
Lidar com essa ineficiência é onde entra o Hyper Threading. A ideia geral é que compartilhando muitos dos recursos entre dois (ou mais) núcleos, você pode alcançar quase a mesma quantidade de trabalho usando muito menos espaço (e energia) . A limitação para isso é, obviamente, que você não pode realmente executar 100% do que você poderia em uma CPU com um número de núcleos físicos igual ao número total de threads que você tem.
Provavelmente vale a pena notar que o Hyper Threading não é a mesma coisa que o MultiThreading Simétrico fornecido por algumas outras arquiteturas de CPU (POWER, SPARC e (provavelmente) chips Ryzen da AMD). O SMT é muito mais próximo de um design multi-core clássico e não sofre da maioria dos problemas que o Hyper Threading faz.
Então, se você não pode simplesmente executar qualquer coisa em todos os núcleos, para que serve exatamente isso?
Bem, na verdade é meio difícil de dizer. Para obter o maior benefício possível, você precisa agrupar código semelhante em pares de threads que compartilham recursos dentro da CPU, mas mesmo assim é difícil ter certeza se o Hyper Threading realmente ajudará muito. Alguns sistemas operacionais mais antigos não faziam esse tipo de agrupamento, e os resultados ainda são considerados um excelente exemplo da frase "patologicamente ruim". Sistemas mais recentes fazem algum nível de agrupamento, mas ainda não é perfeito.
Tarefas pesadas de E / S (por exemplo, servidores web e bancos de dados) tendem a beneficiar pelo menos algumas do Hyper Threading, mas o quanto elas se beneficiarão depende exatamente do que estão fazendo, e elas são uma das poucos casos que têm um benefício razoavelmente claro.
No entanto, é razoavelmente bem conhecido que tipos de cargas de trabalho pioram
com o SMT. Praticamente qualquer coisa que precise utilizar todos os núcleos do CPU com 100% de carga não vai conseguir muito, se é que algum, se beneficiar do SMT. Nos chips HT, na verdade, às vezes, ele fica mais lento do que com o HT desligado. Em algumas outras implementações, pode ou não melhorar ou piorar as coisas, dependendo do que está sendo feito (por exemplo, os chips SPARC fazem bem com tais cargas de trabalho, desde que não façam chamadas de função aninhadas muito profundamente).OK, então o que há com essa coisa de Arma 3?
Como mencionado acima, o Hyper Threading pode fazer coisas muito ruins para o seu desempenho se você não estiver agrupando as coisas de maneira sensata em cada núcleo. A lógica necessária para fazer esse agrupamento geralmente é específica de um determinado software. O interruptor acima mencionado para o Arma 3 está apenas controlando se esta lógica está ativada ou não. Agora, por que não é autodetectada, não tenho certeza (não é difícil descobrir se o Hyper Threading está sendo usado ou não).