É correto dizer, por exemplo, que um processador com quatro núcleos cada rodando em 3GHz é de fato um processador rodando a 12GHz?
Certa vez, entrei em um argumento "Mac vs. PC" (que, a propósito, NÃO é o foco deste tópico ... que estava de volta ao ensino médio) com um conhecido que insistia que os Macs estavam apenas sendo anunciados como máquinas de 1 Ghz porque eles eram G4s de processador duplo, cada um rodando a 500 MHz.
Na época, eu sabia que isso era besteira por razões que acho aparentes para a maioria das pessoas, mas acabei de ver um comentário neste site com o efeito de "6 núcleos x 0,2 GHz = 1,2 Ghz" e isso me fez pensar novamente sobre se há uma resposta real para isso.
Portanto, essa é uma questão técnica mais ou menos filosófica / profunda sobre a semântica do cálculo da velocidade do relógio. Eu vejo duas possibilidades:
- Cada núcleo está de fato fazendo x cálculos por segundo, portanto, o número total de cálculos é x (núcleos).
- 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.
fonte
Respostas:
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)
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:
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 é 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.
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.
fonte
Outros fizeram um bom argumento do ponto de vista técnico. Em vez disso, farei algumas analogias simples que, espero, explicarão por que 4 * 3GHz não é equivalente a 1 * 12GHz.
Por exemplo, uma mulher pode fabricar um bebê em nove meses. Nove mulheres conseguirão fabricar um bebê em um mês? Não, porque a gestação não pode ser paralelizada (bem, pelo menos nesse nível tecnológico).
Aqui está outra: em uma usina hidrelétrica que visitei recentemente, um dos geradores estava sendo atualizado. Eles tiveram que transportar o estator do gerador por navio. Um sexto do estator poderia ser transportado por caminhão, mas eles precisavam transportar o estator inteiro; então eles tiveram que usar um navio, não seis caminhões.
Outro caso pode ser o tempo preciso dos eventos. Às vezes, os processadores de computador são usados como cronômetros precisos (embora a prática não seja mais recomendada, devido ao relógio variável na maioria dos processadores. Em vez disso, deve-se usar um cronômetro de eventos de alta precisão). Se assumirmos que temos um processador com clock de 12GHz relativamente estável, podemos usá-lo para medir o tempo em uma resolução muito maior do que em um processador com clock de 3GHz. Não importa quantos núcleos de 3GHz tenhamos, não conseguiremos alcançar a resolução do núcleo de 12GHz. É como ter 4 relógios com displays de 7 segmentos, onde cada relógio apenas exibe a hora correta em horas. Não importa quão corretamente eles mostrem horas, você não pode usá-los para medir intervalos de tempo em um segundo intervalo.
fonte
Não sou especialista no assunto, mas sou formado em Engenharia da Computação. Em teoria (essa é uma resposta altamente conceitual), um processador quad-core de 3GHz cada um pode ser equivalente a um processador de 12GHz se, por exemplo, houver quatro conjuntos de cálculos necessários para um único resultado final. Isso é chamado de processamento paralelo.
Para simplificar a lógica, digamos que estamos falando de um processador dual core. Se um conjunto de cálculos ocorrer, diga:
então, esses dois cálculos poderiam ser executados em núcleos separados e um processador xGHz seria equivalente a um processador 2 * xGHz de núcleo único. Isso ocorre porque os dois cálculos, embora feitos na velocidade x, seriam processados ao mesmo tempo. Enquanto o processador mono-núcleo poderia fazê-los com velocidade 2 x x, mas um após o outro. Se as duas CPUs executassem esse código ao mesmo tempo, elas terminariam ao mesmo tempo. No entanto, se o código fosse:
então, o processador de núcleo duplo levaria o dobro do tempo que o processador de núcleo único porque, na segunda instrução, o valor de a depende da primeira instrução e, portanto, não pode ser executado em paralelo. É assim que alguns softwares podem tirar proveito dos processadores multithread.
Portanto, em teoria, um processador de núcleo único de 12GHz sempre pode funcionar tão rápido (ou mais rápido) que um processador de núcleo quádruplo de 3GHz, mas não vice-versa.
fonte
Esta é uma pergunta complicada de responder, mas a resposta curta é: Não
Em aplicações do mundo real, quatro processadores 3Ghz não serão tão rápidos quanto um único processador de 12Ghz devido a ineficiências. Eles podem estar muito próximos, mas NÃO serão iguais a um único processador em termos de poder de processamento.
A razão disso está nas pequenas ineficiências ao lidar com programas que podem ser executados em mais de um processador. Supondo que o programa em questão possa ser executado em paralelo, ainda teremos problemas com diferentes núcleos competindo entre si por outros recursos, como RAM ou mesmo problemas de sincronização de cache e encadeamento. Além disso, sempre há partes de programas que não podem ser paralelizadas e precisam ser executadas em um único núcleo por si só.
Dê uma olhada neste artigo: http://en.wikipedia.org/wiki/Amdahl%27s_law
fonte
Parece que não podemos dizer que 4 núcleos a 3 GHz podem ser considerados 12 GHz.
Várias restrições, como memória compartilhada, contenção de cache e outros recursos, também são comuns a todos os núcleos, portanto, executar um pedaço de código paralelo nesses núcleos não será tão eficiente quanto executá-lo em processadores de 12 Ghz (embora seja difícil construir esse processador) )
Também li em algum lugar que, se dobrarmos os transistores incorporados no chip (CMP), a velocidade que obteremos é de apenas 40%. Isso fornece uma dica significativa para este tópico também.
fonte
No que diz respeito aos ciclos de clock executados, sim, um processador multi-core realiza
x * cores
ciclos de trabalho por segundo. Convencionalmente, as velocidades de clock são listadas por núcleo para comparação mais fácil (caso contrário, como você compararia facilmente um chip de núcleo duplo de 4GHz rodando a 2GHz / núcleo versus um chip de núcleo quádruplo de 4GHz rodando a 1GHz / núcleo?).Infelizmente, o problema fica complexo quando você tenta comparar diferentes processadores em aplicativos do mundo real.
Primeiro, a maioria dos processadores multinúcleo possui alguns recursos compartilhados entre os núcleos (por exemplo, cache da CPU). Eles precisam compartilhar o acesso a esse cache, para que você não possa ter os dois núcleos armazenando ou lendo dados em velocidade máxima. Isso geralmente é atenuado em CPUs com muitos núcleos por ter vários caches compartilhados (por exemplo, a maioria dos chips quad-core possui 2 caches, cada um compartilhado por um par de núcleos), a fim de melhor dividir as chances de um gargalo em um recurso compartilhado.
Segundo, e talvez menos conhecido no mundo não técnico, é que comparar a velocidade do relógio às vezes pode ser como comparar maçãs e laranjas. CPUs diferentes realizam uma quantidade diferente de trabalho em um único ciclo de clock, portanto, dizer que você tem 1 GHz vs. 1,2 GHz parece ótimo, mas o chip de 1 GHz pode realmente fazer mais trabalho em um determinado intervalo de tempo. O Pentium 4 levou esse ponto para casa, levando ao mito Megahertz (que eu não sabia que tinha um nome cunhado até escrever este post).
fonte
Dois carros, cada um percorrendo 80 quilômetros por hora, não somam 100 quilômetros por hora. É realmente muito simples. A velocidade do relógio de um processador não é uma medida da velocidade com que o trabalho é realizado, é uma medida da velocidade com que o relógio passa.
fonte