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

38

Em uma conversa com o administrador da rede, mencionei que minha máquina era um dual-core. Ele me disse que não era. Eu levantei o gerenciador de tarefas, fui para a guia de desempenho e mostrei a ele que há dois gráficos separados de uso da CPU. Eu tenho uma máquina quad-core em casa e tem quatro gráficos. Ele disse que havia dois gráficos nesta máquina em particular por causa do hyper-threading. Eu costumava ter um processador Pentium 4 hyper-thread no passado, mas eu nunca entendi completamente o que isso significava. Então, qual é a diferença entre hyper-threading e dual-core? E como você diz qual deles você tem?

    
por Josh Stodola 20.04.2010 / 21:22

3 respostas

19

Hyper-threading expõe múltiplos núcleos lógicos para um único físico núcleo da CPU. Em termos simples, o hyper-threading torna comutação de contexto mais eficiente para cada núcleo de CPU.

Os chips dual-core, por outro lado, possuem dois núcleos físicos de CPU que podem executar diferentes processos simultaneamente.

Existem também outros chips multi-core que possuem muitos mais de dois núcleos e - como Svish mencionou - as mais recentes ofertas multi-core 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ê tem. Como você pode ver perto da parte inferior da captura de tela, a CPU, nesse caso, tem dois núcleos físicos. Se o número de encadeamentos for maior que o número de núcleos, o Hyper-threading está habilitado. Até à data, todas as CPUs orientadas para o consumidor com Hyper-threading têm 2 threads por core, por isso, se HT estiver ativado, o número de threads será 2x o número de núcleos.

SevocêtemumaCPUIntel,podefazerodownloaddo utilitário de ID da CPU da Intel em vez disso.

    
por 20.04.2010 / 21:28
15

Hyper-threading é onde seu processador finge ter 2 núcleos de processador físico, mas tem apenas 1 e algum lixo extra.

O ponto de hyperthreading é que muitas vezes quando você está executando código no processador, há partes do processador que estão ociosas. Ao incluir um conjunto extra de registradores 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 apenas um componente do processador, um deles acaba aguardando, é claro. É por isso que não pode substituir o dual-core e tais processadores.

Veja também: Esta questão

    
por 20.04.2010 / 21:55
4

Hyperthreading é uma alternativa mais barata e mais lenta de ter dois núcleos

TODO é mais lento em quanto percentual em média em aplicações reais?

O Hyperthreading é possível porque os núcleos das CPUs individuais já executam várias instruções de uma vez com o pipeline de instrução link

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 as funções ainda mais usando:

  • um único back-end, que realmente executa as instruções com seu pipeline.

    O dual core tem dois backends, o que explica o maior custo e desempenho.

  • dois front-ends, que recebem dois fluxos de instruções e os ordenam de forma a maximizar o uso de pipelining do único backend, evitando perigos .

    O dual core também teria dois front ends, um para cada backend.

    Existem casos extremos em que a reordenação de instruções não produz benefícios, tornando o uso de hyperthreading inútil. 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: link

A interface que cada hyperthread expõe ao sistema operacional é semelhante à de um núcleo real, e ambos podem ser controlados separadamente. Assim cat /proc/cpuinfo me mostra 4 processadores, mesmo que eu tenha 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 threads de um determinado programa em um único núcleo, o que pode melhorar o uso do cache.

Este vídeo LinusTechTips contém uma explicação não técnica leve: link

O Manual de programação do sistema Intel® Manual 3 - 325384-056P Setembro de 2015 8.7" ARQUITETURA DE TECNOLOGIA DE HIPERTENSÃO DA INTEL "descreve a HT brevemente. Ele contém o seguinte diagrama:

    
por 04.11.2015 / 11:36