Os pulsos de clock da CPU são estritamente periódicos?

51

A frequência de uma CPU é um valor médio de cerca de quantos pulsos de clock há em um segundo ou ela possui uma estabilidade física mais strong?

Na minha opinião, não deve ser estável nem instável. Então, há alguma informação disponível sobre a variação de uma CPU?

A duração do ciclo de uma CPU é estritamente sincronizada com a vibração do cristal? Ou o processador precisa apenas garantir um ciclo antes do próximo tick?

    
por Gael 08.02.2015 / 21:05

5 respostas

49

Como qualquer coisa complicada, você pode descrever a maneira como uma CPU opera em vários níveis.

No nível mais fundamental, uma CPU é impulsionada por um relógio preciso. A frequência do relógio pode mudar; pense no SpeedStep da Intel. Mas em todos os momentos a CPU está absolutamente 100% bloqueada para o sinal do relógio.

As instruções da CPU operam em um nível muito mais alto. Uma única instrução é uma coisa complexa e pode levar de menos de um ciclo a milhares de ciclos para completar como explicado aqui na Wikipedia .

Então, basicamente, uma instrução irá consumir algum número de ciclos de clock . Em CPUs modernas, devido a tecnologias como múltiplos núcleos, HyperThreading, pipelining, caching, execução fora de ordem e especulativa, o número exato de ciclos de clock para uma única instrução não é garantido, e irá variar cada vez que você emitir tal instrução !

EDITAR

is there any information available about the variance for a specific CPU?

Sim e não. 99,99% dos usuários finais estão interessados no desempenho geral , que pode ser quantificado executando vários benchmarks.

O que você está pedindo é uma informação altamente técnica. A Intel não publica informações completas ou precisas sobre a instrução de CPU latência / taxa de transferência .

Existem pesquisadores que se encarregaram de tentar descobrir isso. Aqui estão dois PDFs que podem ser de interesse:

Infelizmente, é difícil obter dados variação . Citando o primeiro PDF:

numbers listed are minimum values. Cache misses, misalignment, and exceptions may increase the clock counts considerably.

Leitura interessante, no entanto!

    
por 08.02.2015 / 23:08
29

Are CPU clock ticks strictly periodic in nature?

Claro que não. Mesmo os melhores relógios não são estritamente periódicos. As leis da termodinâmica dizem o contrário:

  • Lei de Zeroth: Há um joguinho desagradável que o universo joga em você.
  • Primeira lei: você não pode vencer.
  • Segunda lei: Mas você pode acabar empatando, num dia muito frio.
  • Terceira lei: nunca fica tão frio.

Os desenvolvedores dos melhores e melhores relógios tentam muito, muito difícil superar as leis da termodinâmica. Eles não podem vencer, mas eles vêm muito, muito perto de quebrar mesmo. O relógio no seu CPU? É lixo em comparação com os melhores relógios atômicos. É por isso que existe o Protocolo de horário da rede .


Previsão: Mais uma vez, veremos um pouco de caos quando os melhores relógios atômicos do mundo passarem de 30 de junho às 23:59:59 UTC para 2015 30 de junho 23:59:60 UTC para 2015 1 de julho de 2015 00:00:00 UTC. Muitos sistemas não reconhecem os segundos bissextos e têm seu nível de segurança definido como dois (o que impede uma alteração de tempo de mais de um segundo). A instabilidade do relógio nesses sistemas significa que o segundo salto do Network Time Protocol será rejeitado. Um número de computadores vai se esgotar, assim como aconteceu em 2012.

    
por 09.02.2015 / 06:49
22

Por volta de 2000, quando as velocidades de clock dos processadores começaram a entrar na faixa em que os telefones celulares também operavam, tornou-se comum adicionar uma variação à velocidade real do clock. O motivo é simples: se o clock da CPU for exatamente 900 Mhz, toda a interferência eletrônica será gerada nessa freqüência. Varie a freqüência do clock entre 895 e 905 Mhz, e a interferência também é distribuída por essa faixa.

Isso foi possível porque as CPUs modernas são limitadas pelo calor. Eles não têm nenhum problema em rodar um pouco mais rápido por um curto período de tempo, já que podem esfriar quando o relógio é atrasado mais tarde.

    
por 09.02.2015 / 11:58
22

Designer de lógica digital aqui. O tempo real que uma rede lógica leva para mudar em resposta a um sinal de entrada é o atraso de propagação . Pense no sistema como:

registers A,B,C... ---> logic cloud ---> registers A',B',C'

O "relógio de lançamento" é a borda do relógio na qual o primeiro conjunto de registros é alterado. O "relógio de captura" é a próxima borda do relógio um período depois. Para que o sistema funcione, a saída da nuvem lógica deve ser estável antes que o relógio de captura chegue.

O processo de garantir que isso funcione é uma análise de tempo. Usando uma simulação do sistema baseada em física, calcule o tempo de chegada pior caso de qualquer entrada para qualquer saída. O maior desses números no sistema define o período mínimo de clock.

Nota pior caso . O tempo real de propagação será menor, mas depende da variação do processo de fabricação, da temperatura atual e da tensão do chip ( PVT ). Isto significa, em termos práticos, que você pode aplicar um relógio mais rápido (overclocking) e isso pode funcionar. Ele também pode começar a produzir erros, como decidir que 0x1fffffff + 1 = 0x1f000000 se o carry não chegar no tempo.

Os chips também podem ter mais de um clock (normalmente o FSB é mais lento que o core), e o clock real pode ser aumentado ou diminuído para propósitos de controle térmico ou variado (resposta do MSalter sobre o uso de espalhamento espectral para passar EMC testes).

    
por 09.02.2015 / 12:38
2

Is a CPU's instruction duration strictly synchronized to the crystal vibration? Or does the CPU just have to be sure to achieve an instruction before the next tick?

Nem A duração da instrução será um certo número de pulsos de clock, mas esse número pode variar com base nos requisitos da instrução. Por exemplo, se uma instrução não puder avançar até que um determinado local da memória esteja no cache L1, a instrução não será concluída antes do próximo clock. Nenhum avanço nessa instrução será feito até que isso aconteça.

Mas quando a CPU decide fazer alguma coisa, o método básico pelo qual ela faz isso é configurar seus switches internos para que uma determinada informação vá para uma parte específica da CPU. O aguarda que a entrada chegue a essa parte e a saída chegue à próxima parte. Esta parte de espera é o propósito do relógio.

Imagine um circuito físico que recebe duas entradas binárias e as soma, emitindo a soma em algum terceiro conjunto de fios. Para fazer uma adição, a CPU deve organizar os dois números a serem adicionados para chegar a esse somador e as saídas para, digamos, uma trava de registro da CPU. A CPU não pode informar a trava para armazenar a saída até que as entradas atinjam o somador, o somador produza a saída e a saída atinja a trava. Este é o objetivo do relógio - para definir o tempo de espera entre a entrada do arranjo para ir a algum lugar e esperar que a saída esteja pronta para uso.

    
por 12.02.2015 / 00:35