Executando encadeamentos em um processador Intel não hyper-threading

1

Processador Intel Pentium E5700 (2M Cache, 3.00 GHz, 800 MHz FSB) não possui hyper-threading, mas possui 2 núcleos, então estou assumindo que ele possui 2 threads

Agora, se eu escrever um programa pesado de processamento de números que execute 4 threads simultaneamente, como este processador E5700 lidará com 4 threads simultaneamente usando seus 2 núcleos e 2 threads, em comparação com um processador como o processador Intel Core i3-3110M (3M Cache, 2,40 GHz) com hyper-threading que tem 2 núcleos, mas 4 threads?

O E5700 será mais lento e terá gargalos do que o i3 3110m com 2 núcleos, mas 4 threads com hyperthreading, ou tudo será fácil e rápido em ambos os processadores sem perceber nada diferente?

Além disso, um programa escrito com quatro ou mais threads pode ser executado com eficiência em um processador de 2 núcleos de 2 threads ou haverá erros ou lentidão?

#

ok obrigado por responder as perguntas mais tarde eu visitei este site e menor pontuação é melhor para processadores

link

Benchmark wPrime v1.55 (32M) O benchmark wPrime mede o tempo necessário para calcular raízes quadradas de números de 1 a 33554431. O programa usa o método de Newton para estimar funções.

Recursos da CPU que têm grande influência nos resultados: frequência da CPU, desempenho de ponto flutuante, o número de núcleos / segmentos.

Recursos da CPU que têm pouca influência nos resultados: a velocidade da memória, o tamanho dos caches internos.

Número de peça Shorter is better Resultado

Processador Intel® Core ™ i7-3770K (8M Cache, até 3,90 GHz) 4 núcleos 8 segmentos sim HT

6,87

Processador Intel® Core ™ i7-2600k (8M Cache, até 3,80 GHz) 4 núcleos 8 segmentos sim HT

7,57

Processador Intel® Core ™ i5-2500K (6M Cache, até 3,70 GHz) 4 núcleos 4 threads no HT
9,8

Processador Intel® Core ™ i3-2310 (Cache 3M, 2,10 GHz) 2 núcleos 2 threads sim HT
15,37

Intel® G860 (Cache de 3M, 3,00 GHz) 2 núcleos 2 threads no HT
22,09

#

    
por De coder 16.11.2012 / 13:36

2 respostas

7

Para obter alguns conhecimentos básicos sobre segmentação, núcleos de CPU e hyperthreading, convém ler a pergunta

Now if i write a heavy number crunching program that runs 4 threads simultaneously how will this E5700 processor handle 4 threads simultaneously using its 2 cores and 2 threads

O número de threads que seu aplicativo requer é irrelevante - eu posso escrever um programa que inicie 1000 threads, e todos eles rodem no mesmo horário. A chave aqui é o seu programador do sistema operacional , que executa cada thread em um núcleo de CPU específico para uma unidade específica de tempo (a ordem na qual os encadeamentos são executados e em qual núcleo depende do algoritmo de agendamento).

Compared to a processor like the Intel® Core™ i3-3110M Processor (3M Cache, 2.40 GHz) with hyperthreading which has 2 cores but 4 threads

É impossível comparar o desempenho do aplicativo com um processador similar, embora com hyperthreading. Os aplicativos precisam ser especificamente otimizados para isso (uma vez que ainda há apenas metade do número de núcleos físicos, pois há lógica). Em alguns casos, os aplicativos podem ser executados mais rapidamente com o hyperthreading desativado (embora muitos aplicativos façam se beneficiarem dele). Independentemente do hyperthreading, um aumento no número de núcleos físicos irá sempre beneficiar multithreaded aplicações.

Por último, você está comparando um E5700 e um i3 3110m. Estas são duas arquiteturas de processadores diferentes (não completamente, mas são diferentes); eles têm recursos diferentes e comprimentos de pipeline desiguais 1 2 . Há mais a considerar aqui do que apenas o número bruto de núcleos de processador, mas, para os propósitos desta discussão, você pode ignorá-los e apenas ler o que escrevi acima.

  1. J. De Gelas, "The Bulldozer Aftermath: Delving Even Deeper". AnandTech , pp.2.
  2. Manuais do desenvolvedor de software das arquiteturas Intel® 64 e IA-32 Vol. 1, ch. 2, Sec.2.3 - Microarquitetura Intel® Core ™
por 16.11.2012 / 14:45
0

As outras respostas estão corretas, pois para tarefas vinculadas à computação que executam com 4 threads em 2 núcleos, serão mais lentas que 2 threads. Há sobrecarga na programação dos encadeamentos, bem como a alternância de contexto na cpu quando o estado do registro é alternado. A única coisa que não parece ser apontada, porém, é que isso não acontece se houver bloqueio de E / S nesses threads. Nesse caso, é provável que ter mais encadeamentos do que núcleos seja executado com mais rapidez, já que os encadeamentos bloquearão as operações de E / S lentas e permitirão que outras partes de código ligadas à CPU ainda sejam executadas.

    
por 16.11.2012 / 15:36