A principal razão pela qual um processador de 3GHz quad-core nunca é tão rápido quanto um núcleo único de 12GHz é a maneira como a tarefa em execução nesse processador funciona, ou seja, single-thread ou multi-threaded. A lei de Amdahl é importante ao considerar os tipos de tarefas que você está executando.
Se você possui uma tarefa que é inerentemente linear e precisa ser executada precisamente passo a passo, como (um programa bastante simples)
10: a = a + 1
20: goto 10
Então, a tarefa depende muito do resultado da passagem anterior e não pode executar várias cópias de si mesma sem danificar o valor, 'a'
pois cada cópia estaria obtendo o valor 'a'
em momentos diferentes e gravando-o de forma 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 for executada em vários núcleos, ocorrerá a corrupção da sincronização. Isso limita a 1/2 da potência da CPU de um sistema de núcleo duplo ou a 1/4 de um sistema de núcleo quádruplo.
Agora faça uma tarefa como:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Todas essas linhas são independentes e podem ser divididas em quatro programas separados, como o primeiro, e executados ao mesmo tempo, cada um capaz de fazer uso efetivo de toda a potência de um dos núcleos sem nenhum problema de sincronização; é nesse ponto que a Lei de Amdahl entra nele.
Portanto, se você tiver um único aplicativo de encadeamento fazendo cálculos de força bruta, o único processador de 12 GHz perderia as mãos; se você puder, de alguma forma, dividir a tarefa em partes separadas e com vários encadeamentos, os 4 núcleos poderão se aproximar, mas não alcançar, o mesmo desempenho, conforme a Lei da Amdahl.
A principal coisa que um sistema com várias CPUs oferece é a capacidade de resposta. Em uma máquina de núcleo único que está trabalhando duro, o sistema pode parecer lento, pois na maioria das vezes pode ser usado por uma tarefa e as outras tarefas são executadas apenas em breves intervalos entre a tarefa maior, resultando em um sistema que parece lento ou instável. . Em um sistema com vários núcleos, a tarefa pesada obtém um núcleo e todas as outras tarefas são executadas nos outros núcleos, realizando seus trabalhos com rapidez e eficiência.
O argumento de "6 núcleos x 0,2 GHz = 1,2 Ghz" é inútil em todas as situações, exceto quando as tarefas são perfeitamente paralelas e independentes. Há um bom número de tarefas altamente paralelas, mas elas ainda exigem alguma forma de sincronização. O Handbrake é um trancoder de vídeo muito bom para usar todas as CPUs disponíveis, mas exige um processo central para manter os outros threads preenchidos com os dados e coletar os dados com os quais eles são feitos.
- Cada núcleo está de fato fazendo x cálculos por segundo, portanto, o número total de cálculos é x (núcleos).
Cada núcleo é capaz de fazer x cálculos por segundo, assumindo que a carga de trabalho seja adequada paralelamente, em um programa linear, tudo o que você tem é 1 núcleo.
- A velocidade do clock é mais uma contagem do número de ciclos que o processador passa no espaço de um segundo; portanto, enquanto todos os núcleos estiverem funcionando na mesma velocidade, a velocidade de cada ciclo de clock permanecerá a mesma, não importa quantos núcleos existam . Em outras palavras, Hz = (core1Hz + core2Hz + ...) / núcleos.
Eu acho que é uma falácia pensar que 4 x 3GHz = 12GHz, desde que a matemática funcione, mas você está comparando maçãs com laranjas e as somas simplesmente não estão certas, o GHz não pode simplesmente ser adicionado em todas as situações. Eu mudaria para 4 x 3GHz = 4 x 3GHz.