Núcleo Duplo Qaud Enfiado v.s Núcleo Duplo Hyper-Threading [duplicado]

9

Digamos que temos duas CPUs, uma é Quad Core de 3,2 Ghz com 4 núcleos e temos um núcleo duplo de 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 4 threads devem executar mais rápido que 2 núcleos 4 threads, já que o segundo processador precisa alternar entre os threads para emular 4 núcleos, enquanto o primeiro não precisa realizar tal comutação como cada núcleo pode executar de forma independente e individual.

Eu quero confirmar que minha suposição é verdadeira, se não, por favor, explique por que um é melhor que o outro.

    
por David 21.10.2013 / 16:19

3 respostas

9

Eu acredito que isso é verdade - como o hyper-threading compartilha alguns elementos - especificamente os principais recursos de execução, você poderá executar 4 threads completos de uma só vez, ao invés de esperar que esses recursos sejam liberados.

O ponto de HT é obter um melhor desempenho com um uso menor da área do molde - seu quad core geralmente seria um chip maior - digamos quase duas vezes maior que um chip dual core HT, enquanto um chip HT dual core seria cerca de 5% maior. O núcleo do Quad pode ver até o dobro da velocidade sob a carga de trabalho correta (embora, provavelmente, você não esteja executando 4 threads com capacidade total na maioria dos casos), enquanto o processador dual core HT verá 15-30% melhor desempenho ( de acordo com a wikipedia ) do que um processador dual-core não-HT.

Mais núcleos reais geralmente são melhores.

    
por 21.10.2013 / 16:26
1

De Wikipedia :

Hyper-threading works by duplicating certain sections of the processor— those that store the architectural state— but not duplicating the main execution resources. This allows a hyper-threading processor to appear as the usual "physical" processor and an extra "logical" processor to the host operating system (HTT-unaware operating systems see two "physical" processors), allowing the operating system to schedule two threads or processes simultaneously and appropriately. When execution resources would not be used by the current task in a processor without hyper-threading, and especially when the processor is stalled, a hyper-threading equipped processor can use those execution resources to execute another scheduled task. (The processor may stall due to a cache miss, branch misprediction, or data dependency.)

Se você tem um sistema quad core, então 4 threads podem rodar cada um em um núcleo completo. Se você tiver um sistema dual hyperthreading, então dois threads podem rodar cada um 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 encadeamentos sejam executados em paralelo (apenas) se eles não usarem os mesmos recursos do processador. Assim, em um caso ideal, você pode obter um alto grau de paralelização, mas, como a Wikipedia afirma, o ganho de desempenho não é de 100%, mas apenas de 15 a 30%.

    
por 21.10.2013 / 16:32
1

No hyper-threading, o tempo ocioso do core para taskA (o core mencionado poderia ter enviado um pedido para o disco por dados, esperar o disco procurar a área dos platters, ler os dados e enviá-los de volta para o núcleo) é explorada para executar outra tarefaB. Portanto, quando taskB está sendo atendido pelo chamado thread 2, e se a solicitação de busca de dados por taskA for concluída, taskA ainda terá que esperar que o core conclua o thread 2. Os dois threads não podem ser executados simultaneamente em um core. 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 para a capacidade total ... é como a utilização total da capacidade. Portanto, se você abrir quatro guias em seu navegador, cada guia terá um núcleo em um sistema de quatro núcleos e duas guias terão que compartilhar um núcleo em um sistema de dois núcleos.

    
por 15.06.2015 / 11:46