A principal razão pela qual um processador quad-core 3GHz nunca é tão rápido quanto um single core de 12GHz, tem a ver com o funcionamento da tarefa em execução naquele processador, ou seja, single-threaded ou multi-threaded. A lei de Amdahl é importante quando se considera os tipos de tarefas que você está executando.
Se você tem uma tarefa inerentemente linear e precisa ser feita precisamente passo a passo, como (um programa grosseiramente simples)
10: a = a + 1
20: goto 10
Em seguida, a tarefa depende muito do resultado do passo anterior e não pode executar várias cópias de si mesmo sem corromper o valor de 'a'
, pois cada cópia receberia o valor de 'a'
em momentos diferentes e gravaria de volta de maneira diferente . Isso restringe a tarefa a um único encadeamento e, portanto, a tarefa só pode ser executada em um único núcleo a qualquer momento, se fosse executada em vários núcleos, a corrupção da sincronização ocorreria. Isso limita a metade da potência da CPU de um sistema dual core, ou 1/4 em um sistema quad core.
Agora, pegue uma tarefa como:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Todas estas linhas são independentes e podem ser divididas em 4 programas separados como o primeiro e executados ao mesmo tempo, cada um capaz de fazer uso efetivo de todo o poder de um dos núcleos sem nenhum problema de sincronização. onde A Lei de Amdahl entra em ação.
Portanto, se você tiver um único aplicativo encadeado fazendo cálculos de força bruta, o único processador de 12GHz ganharia menos, se você puder dividir a tarefa em partes separadas e multi-thread, então os 4 núcleos podem se aproximar, mas não bastante alcance, o mesmo desempenho, de acordo com a Lei de Amdahl.
A principal coisa que um sistema multi-CPU oferece é a capacidade de resposta. Em uma máquina de núcleo único que está trabalhando duro, o sistema pode parecer lento, já que a maior parte do tempo pode estar sendo usado por uma tarefa e as outras tarefas são executadas apenas em intervalos curtos, resultando em um sistema que parece lento ou estressante. . Em um sistema multi-core, a tarefa pesada recebe um núcleo e todas as outras tarefas são executadas nos outros núcleos, fazendo seu trabalho com rapidez e eficiência.
O argumento de "6 núcleos x 0,2 GHz = 1,2 Ghz" é lixo em todas as situações, exceto quando as tarefas são perfeitamente paralelas e independentes. Há um bom número de tarefas que são altamente paralelas, mas ainda requerem alguma forma de sincronização. O Handbrake é um trancoder de vídeo que é muito bom em usar todas as CPUs disponíveis, mas requer um processo central para manter os outros threads cheios de dados e coletar os dados com os quais eles são feitos.
- Each core is in fact doing x calculations per second, thus the total number of calculations is x(cores).
Cada núcleo é capaz de fazer x cálculos por segundo, assumindo que a carga de trabalho é adequada em paralelo, em um programa linear, tudo que você tem é 1 núcleo.
- Clock speed is rather a count of the number of cycles the processor goes through in the space of a second, so as long as all cores are running at the same speed, the speed of each clock cycle stays the same no matter how many cores exist. In other words, Hz = (core1Hz+core2Hz+...)/cores.
Eu acho que é uma falácia pensar que 4 x 3GHz = 12GHz, concedida a matemática funciona, mas você está comparando maçãs com laranjas e as somas não estão certas, GHz não pode simplesmente ser adicionado em conjunto para cada situação. Eu mudaria para 4 x 3GHz = 4 x 3GHz.