Qaud Core com thread único vs núcleo duplo com Hyper-Threading [duplicado]

10

Digamos que tenhamos duas CPUs, uma é Quad Core 3,2 Ghz com 4 núcleos e uma Dual Core 3,2 Ghz com 2 núcleos com 2 threads em cada núcleo (Hyper-Threading). Minha suposição como programador será: os 4 núcleos e os 4 threads devem executar mais rapidamente que os 2 núcleos e os 4 threads, já que a segunda CPU precisa alternar entre os threads para emular 4 núcleos, enquanto o primeiro não precisa executar essa comutação, pois cada núcleo pode executar de forma independente e individual.

Quero confirmar que minha suposição é verdadeira; caso contrário, explique por que uma é melhor que a outra.

David
fonte
3
Votos negativos porque uma breve pesquisa no Google (Wikipedia) teria dado a resposta.
Werner Henze
4
@WernerHenze enquanto o que você diz é verdade, gostaríamos que as pessoas vejam resultados superusuário quando eles Google tais coisas :)
Shekhar

Respostas:

10

Acredito que isso seja verdade - já que o hyper threading compartilha alguns elementos - especificamente os principais recursos de execução, você poderá executar quatro threads completos de uma só vez, em vez de aguardar a liberação desses recursos.

O objetivo do HT é obter melhor desempenho com um uso menor da área da matriz - seu quad core geralmente seria um chip maior - digamos quase o dobro do que um chip dual core não HT, enquanto um chip dual core HT seria sobre 5% maior. O núcleo quádruplo pode ver até o dobro da velocidade sob a carga de trabalho correta (embora seja improvável, pois na maioria dos casos você provavelmente não estará executando 4 threads com capacidade total), enquanto o processador HT de núcleo duplo apresentaria uma melhoria de 15 a 30% desempenho (de acordo com a wikipedia ) do que um processador não HT de núcleo duplo.

Núcleos mais reais geralmente são melhores.

Journeyman Geek
fonte
1
Processador HT veria 15-30% ... Eles chave aqui. HT não é um substituto para um verdadeiro segundo núcleo (ou 2 ou 4 etc.)
Austin T Francês
1
Mais CPUs, com mais núcleos, com hyper-threading seria ainda melhor ...: D
Keltari
É importante observar que a maior razão para a melhoria de desempenho com HT é que a CPU raramente é totalmente carregada; isto é, um único encadeamento raramente processa dados a cada ciclo da CPU. O HT permite que a CPU agende um segundo encadeamento durante os ciclos não utilizados. Para alternar entre o Facebook e o e-mail, isso pode ser muito eficaz, mas quanto mais CPU for necessário em cada segmento, menor será a melhoria de desempenho.
Thomas
1

Da Wikipedia :

O hyperthreading funciona duplicando determinadas seções do processador - aquelas que armazenam o estado da arquitetura - mas não duplicando os principais recursos de execução. Isso permite que um processador com hyperthreading apareça como o processador "físico" usual e um processador "lógico" extra para o sistema operacional host (os sistemas operacionais sem HTT veem dois processadores "físicos"), permitindo que o sistema operacional agende dois threads ou processa simultaneamente e adequadamente. Quando os recursos de execução não seriam usados ​​pela tarefa atual em um processador sem hyper-threading e, especialmente, quando o processador estiver parado, um processador equipado com hyper-threading pode usar esses recursos de execução para executar outra tarefa agendada. (O processador pode parar devido a uma falta de cache, imprevisão de ramificação,

Se você possui um sistema com quatro núcleos, quatro threads podem ser executados em um núcleo completo. Se você tiver um sistema de hyperthreading de núcleo duplo, dois threads poderão ser executados em um núcleo completo, mas com 4 threads, os threads 1 e 2 compartilharão um núcleo e os threads 3 e 4 compartilharão o outro núcleo. O Hyperthreading permite que dois threads sejam executados em paralelo (somente) se eles não usarem os mesmos recursos do processador. Portanto, em um caso ideal, você pode obter um alto grau de paralelização, mas, como declara a Wikipedia, o ganho de desempenho não é de 100%, mas de 15 a 30%.

Werner Henze
fonte
1

No hyperthreading, o tempo ocioso do núcleo para a tarefa A (o referido núcleo poderia ter enviado uma solicitação ao disco por dados, aguardar o disco procurar a área dos pratos, ler os dados e enviá-lo de volta ao núcleo ) é explorado para executar outra tarefaB. Portanto, quando taskB está sendo atendida pelo chamado segmento 2 e se a solicitação de busca de dados pela tarefaA for concluída, a tarefaA ainda precisará aguardar o núcleo concluir o segmento 2. Os dois segmentos não podem ser executados simultaneamente em um núcleo. Novamente, o HT explora a incompatibilidade de velocidade entre o núcleo / processador e os vários subsistemas do seu computador. O HT usa seus núcleos na capacidade total ... é como a utilização da capacidade total. Portanto, se você abrir quatro guias no navegador, cada guia terá um núcleo em um sistema de 4 núcleos e duas guias deverão compartilhar um núcleo em um sistema de 2 núcleos.

Siva
fonte