Como calcular a velocidade do clock em processadores multi-core?

23

É correto dizer, por exemplo, que um processador com quatro núcleos cada rodando a 3GHz é de fato um processador rodando a 12GHz?

Uma vez eu entrei em um argumento "Mac vs. PC" (que por sinal NÃO é o foco deste tópico ... que estava de volta no ensino médio) com um conhecido que insistiu que os Macs só estavam sendo anunciados como 1Ghz máquinas porque eram G4s de processador duplo, cada uma rodando a 500MHz.

Na época, eu sabia que isso era besteira por razões que eu acho que são aparentes para a maioria das pessoas, mas eu acabei de ver um comentário neste site com o efeito de "6 núcleos x 0.2GHz = 1.2Ghz" e isso me fez pensar novamente sobre se há uma resposta real para isso.

Portanto, esta é uma questão técnica mais ou menos filosófica / profunda sobre a semântica do cálculo da velocidade do clock. Eu vejo duas possibilidades:

  1. Cada núcleo está fazendo x cálculos por segundo, portanto, o número total de cálculos é x (núcleos).
  2. 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 permanece a mesma, não importa o quão muitos núcleos existem. Em outras palavras, Hz = (core1Hz + core2Hz + ...) / cores.
por NReilingh 24.07.2010 / 07:25

7 respostas

36

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.

  1. 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.

  1. 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.

    
por 24.07.2010 / 11:37
6

Outros fizeram um bom argumento do ponto de vista técnico. Em vez disso, farei algumas analogias simples que espero que expliquem por que 4 * 3GHz não é equivalente a 1 * 12GHz.

Por exemplo, uma mulher pode fabricar um bebê em nove meses. Será que nove mulheres poderão fabricar um bebê em um mês? Não, porque a gestação não pode ser paralelizada (bem, pelo menos neste nível tecnológico).

Aqui está outro: Em uma usina hidrelétrica que visitei recentemente, um dos geradores estava sendo atualizado. Eles tinham que transportar o estator do gerador pelo navio. Um sexto do estator pode ser transportado por caminhão, mas eles precisam transportar todo o estator; então eles tiveram que usar um navio, não seis caminhões.

Outro caso pode ser o timing preciso dos eventos. Às vezes, os processadores de computador são usados como temporizadores precisos (embora a prática não seja mais recomendada, por causa do relógio variável na maioria dos processadores. O timer de eventos de alta precisão deve ser usado). 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 atingir a resolução do núcleo de 12GHz. Isso é como ter 4 relógios com exibições de 7 segmentos, em que cada relógio exibe o tempo correto em horas. Não importa o quão corretamente eles mostrem as horas, você não pode usá-los para medir intervalos de tempo em um segundo intervalo.

    
por 24.07.2010 / 09:51
3

Eu não sou especialista no assunto, mas sou formado em Engenharia de Computação. Em teoria (esta é uma resposta altamente conceitual), um 3GHz quad-core de cada processador pode ser o equivalente a um processador de 12GHz se, por exemplo, houvesse quatro conjuntos de cálculos necessários para um único resultado final. Isso é o que chamamos de processamento paralelo.

Para simplificar a lógica, digamos que estamos falando de um processador dual core. Se um conjunto de cálculos fosse, digamos:

a=b+1;

c=d+1;

então, esses dois cálculos poderiam ser executados em núcleos separados, e um processador xGHz seria equivalente a um processador single-core 2 * xGHz. Isso ocorre porque os dois cálculos, embora feitos na velocidade x, seriam processados ao mesmo tempo. Considerando que o processador single-cored poderia fazê-los em 2 x velocidade, 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:

a=b+1;

c=a+1;

então, o processador dual-core levaria o dobro do tempo que o processador single-core, porque na segunda instrução, o valor de um é dependente na primeira instrução e, portanto, não pode ser executado em paralelo. É assim que alguns softwares podem aproveitar os processadores multi-threaded.

Portanto, em teoria, um processador single-core de 12GHz pode sempre rodar tão rápido (ou mais rápido) quanto um processador quad-core de 3GHz, mas não vice-versa.

    
por 24.07.2010 / 08:32
2

Esta é uma pergunta complicada para responder, mas a resposta curta é: Não

Em aplicações reais, 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 para isso está nas pequenas ineficiências ao lidar com programas que podem rodar 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 uns contra os outros por outros recursos, como RAM ou até mesmo problemas de sincronização de cache e thread. Além disso, há sempre partes de programas que não podem ser paralelizados e precisam ser executados em um único núcleo por si só.

Veja este artigo: link

    
por 24.07.2010 / 09:17
2

Parece que não podemos dizer que 4 núcleos a 3 GHz podem ser ditos como 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, então rodar 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 tal processador).

Também li em algum lugar que, se dobrarmos os transistores embutidos no chip (CMP), a aceleração que obteremos será de apenas 40%. Isso fornece uma sugestão significativa para este tópico também.

    
por 08.12.2012 / 17:39
1

No que se refere a ciclos de clock, sim, um processador multi-core completa x * cores ciclos de trabalho por segundo. Convencionalmente, as velocidades de clock são listadas por núcleo para facilitar a comparação (caso contrário, como você compara facilmente um chip dual-core de 4 GHz rodando a 2 GHz / core versus um chip quad-core de 4 GHz rodando a 1 GHz / core?). p>

Infelizmente, o problema se torna complexo quando você tenta comparar diferentes processadores em aplicativos do mundo real.

Primeiro, a maioria dos processadores multi-core tem alguns recursos compartilhados entre os núcleos (por exemplo, cache da CPU). Eles precisam compartilhar o acesso a esse cache, portanto, você não pode ter os dois núcleos armazenando ou lendo dados a toda velocidade. Isso é freqüentemente mitigado em CPUs com muitos núcleos, tendo múltiplos caches compartilhados (por exemplo, a maioria dos chips quad-core tem 2 caches, cada um compartilhado por um par de núcleos), para melhor dividir as chances de um gargalo em um recurso compartilhado. / p> Em segundo lugar, e talvez menos conhecido no mundo não-techie, é que comparando velocidades de 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, então dizer que você tem 1GHz vs. 1.2GHz parece ótimo, mas o chip de 1GHz pode realmente fazer mais trabalho em um determinado intervalo de tempo. O Pentium 4 levou esse ponto para casa, levando ao Megahertz Myth (que eu não sabia que tinha um nome cunhado até escrever esta postagem).

    
por 24.07.2010 / 08:21
1

Dois carros a cada 50 milhas por hora não "somam" a 100 milhas por hora. É realmente muito simples. A velocidade do clock de um processador não é uma medida da taxa em que o trabalho é feito, é uma medida da velocidade com que o relógio tende.

    
por 20.06.2013 / 23:41