Qual é a diferença entre hyper-threading e múltiplos núcleos?


42

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?

Respostas:


20

O Hyper-threading expõe vários núcleos lógicos para um único núcleo físico da CPU. Em termos simples, o hyperthreading torna a troca de contexto mais eficiente para cada núcleo da CPU.

Os chips de núcleo duplo, por outro lado, têm dois núcleos físicos de CPU que podem executar processos diferentes simultaneamente.

Existem também outros chips com vários núcleos que possuem muito mais que dois núcleos e, como Svish mencionou, as mais recentes ofertas de múltiplos núcleos da Intel também suportam Hyper-threading em todos os núcleos.

Você pode usar um utilitário de identificação de CPU como CPU-Z para determinar quantos núcleos você possui. Como você pode ver na parte inferior da captura de tela, a CPU neste caso possui 2 núcleos físicos. Se o número de threads for maior que o número de núcleos, o Hyper-threading será ativado. Até o momento, todas as CPUs orientadas ao consumidor com Hyper-threading possuem 2 threads por núcleo; portanto, se o HT estiver ativado, o número de threads será 2x o número de núcleos.

insira a descrição da imagem aqui

Se você possui uma CPU Intel, pode fazer o download do utilitário de ID da CPU da Intel .


E chips de vários núcleos que suportam hyper-threading, para que você obtenha o dobro da quantidade de núcleos lógicos.
Svish

Obrigado! Como sei (de dentro do sistema operacional) que tipo de CPU tenho?
Josh Stodola

3
O UltraSparc T2 + tem 8 núcleos, cada um dos quais de suporte 8 tópicos tornando-o um 64 CPUs virtuais num único chip: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre

A maneira de conhecer a CPU que você possui depende do sistema operacional em execução.
Jlliagre

@jilliagre: nice!
rob

16

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


6

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:

insira a descrição da imagem aqui

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/cpuinfomostra-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


11
Você vai responder às suas perguntas "TODO"?
pacoverflow

11
@pacoverflow se eu algum dia aprender a resposta, ou se alguém vai editar a resposta para mim :-)
Ciro Santilli新疆改造中心法轮功六四事件
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.