Em uma conversa com o administrador da rede, mencionei que minha máquina era de núcleo duplo. Ele me disse que não era. Criei o gerenciador de tarefas, fui para a guia desempenho e mostrei a ele que existem dois gráficos de uso da CPU separados. Eu tenho uma máquina quad-core em casa e tem quatro gráficos. Ele disse que havia dois gráficos nessa máquina em particular por causa do hiperencadeamento. Eu costumava ter um processador Pentium 4 hyper-thread no passado, mas nunca entendi completamente o que isso significava. Então, qual é a diferença entre hyper threading e dual-core? E como você diz qual você tem?
fonte
O Hyper-threading é o local em que seu processador finge ter 2 núcleos físicos, mas possui apenas 1 e mais lixo.
O objetivo do hyperthreading é que, muitas vezes, quando você está executando um código no processador, há partes do processador que estão ociosas. Ao incluir um conjunto extra de registros da CPU, o processador pode agir como se tivesse dois núcleos e, assim, usar todas as partes do processador em paralelo. Quando os dois núcleos precisam usar um componente do processador, um deles acaba esperando, é claro. É por isso que não pode substituir processadores dual-core e esses.
Veja também: Esta pergunta
fonte
O Hyperthreading é uma alternativa mais barata e mais lenta ao uso de núcleos duplos
O Intel Manual Volume 3 - Guia de programação do sistema - 325384-056BR Setembro de 2015 8.7 "ARQUITETURA DE TECNOLOGIA INTEL HYPER-THREADING TECHNOLOGY" descreve HT brevemente. Ele contém o seguinte diagrama:
TODO é mais lento em quanto percentual, em média, em aplicativos reais?
O hyperthreading é possível porque os núcleos modernos de CPUs únicas já executam várias instruções ao mesmo tempo com o pipeline de instruções https://en.wikipedia.org/wiki/Instruction_pipelining
O pipeline de instruções é uma separação de funções dentro de um único núcleo para garantir que cada parte do circuito seja usada a qualquer momento: leitura de memória, instruções de decodificação, instruções de execução, etc.
O Hyperthreading separa ainda mais as funções usando:
um único back-end, que realmente executa as instruções com seu pipeline.
O núcleo duplo possui dois back-ends, o que explica o maior custo e desempenho.
dois front-ends, que recebem dois fluxos de instruções e os ordenam de maneira a maximizar o uso de pipelining do back-end único, evitando riscos .
O núcleo duplo também teria 2 front-ends, um para cada back-end.
Existem casos extremos em que a reordenação de instruções não traz benefícios, tornando inútil o hyperthreading. Mas produz uma melhora significativa na média.
Dois hyperthreads em um único núcleo compartilham níveis de cache adicionais (TODO quantos? L1?) Do que dois núcleos diferentes, que compartilham apenas L3, consulte:
A interface que cada hyperthread expõe ao sistema operacional é semelhante à de um núcleo real e ambas podem ser controladas separadamente. Assim,
cat /proc/cpuinfo
mostra-me 4 processadores, apesar de eu ter apenas 2 núcleos com 2 hyperthreads cada.Os sistemas operacionais podem, no entanto, tirar vantagem de saber quais hyperthreads estão no mesmo núcleo para executar vários encadeamentos de um determinado programa em um único núcleo, o que pode melhorar o uso do cache.
Este vídeo da LinusTechTips contém uma explicação não técnica de ânimo leve: https://www.youtube.com/watch?v=wnS50lJicXc
fonte