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


51

A frequência de uma CPU é um valor médio de quantos ticks existem em um segundo ou tem uma estabilidade física mais forte?

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

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


7
Existem muitos tipos diferentes de CPU. A maioria usa um cristal que vibra em uma frequência específica para cronometrar a si próprio. Isso significa que a maioria é tão precisa quanto um relógio de pulso digital (que usa o mesmo tipo de cristal para manter o tempo). pt.wikipedia.org/wiki/Crystal_oscillator
krowe 08/02

5
@ Gael algumas instruções levam centenas de ticks, ou ciclos de clock , para serem concluídas.
misha256

11
@ Gael: Além disso, é bastante comum que as CPUs desacelerem ou se acelerem, e fazem isso com bastante frequência. Embora eu não saiba exatamente como isso se relaciona aos carrapatos.
Mooing Duck

18
Votando para encerrá-lo como buscando recomendações de produtos, serviços ou materiais de aprendizagem ? Sério, pessoal?
um CVn 09/02

30
Esta é uma pergunta legítima, buscando esclarecer como o hardware funciona.
studiohack

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 é acionada por um relógio preciso. A frequência do relógio pode mudar; pense no SpeedStep da Intel. Mas o tempo todo a CPU está absolutamente 100% bloqueada no 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 concluir, conforme explicado aqui na Wikipedia .

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

EDITAR

existe alguma informação disponível sobre a variação de uma CPU específica?

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 é informações altamente técnicas. A Intel não publica informações completas ou precisas sobre a latência / taxa de transferência de instruções da CPU .

Há pesquisadores que se encarregaram de tentar descobrir isso. Aqui estão dois PDFs que podem ser do seu interesse:

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

os números listados são valores mínimos. Perdas, desalinhamento e exceções no cache podem aumentar consideravelmente a contagem de clock.

Leitura interessante, no entanto!


11
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Sathyajith Bhat

4
Muito agradável. Obviamente, But at all times the CPU is absolutely 100% locked to the clock signalsó se aplica a CPUs síncronas. É bobagem falar de carrapatos em um assíncrono (relógio-less) CPU, mas parecia uma omissão para me :)
Luaan

11
@Luaan - True. Eu acho que as verdadeiras CPUs assíncronas ainda são bastante raras, mas elas existem (ou existem no passado). Apenas realmente relevante para pesquisadores e geeks de hardware, no entanto.
Daniel R Hicks

@DanielRHicks Eles eram de algum interesse para dispositivos embarcados (existem algumas CPUs assíncronas MIPS e ARM antigas), mas sim, não é realmente a grande coisa no mercado consumidor. Afinal, por que se preocupar com o consumo de energia da CPU de um smartphone quando há uma tela com muita energia ao lado dele? A economia de energia (e outros recursos) pode ser muito interessante para algumas outras aplicações - o IBM SyNAPSE parece um projeto interessante para fins científicos.
Luaan 12/02/2015

@Luaan - O ponto interessante, quando eles foram inventados pela primeira vez, era que o computador funcionava exatamente tão rápido / devagar quanto era necessário para realizar o cálculo. Mas esquemas de clock mais elaborados basicamente conseguiam a mesma coisa, mais ou menos.
Daniel R Hicks

29

Os ticks de clock da CPU são estritamente periódicos por natureza?

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 Zeroth: Há um joguinho desagradável que o universo joga com você.
  • Primeira lei: você não pode vencer.
  • Segunda lei: Mas você pode se equilibrar em um dia muito frio.
  • Terceira lei: nunca fica tão frio.

Os desenvolvedores dos melhores relógios tentam muito, muito difícil, superar as leis da termodinâmica. Eles não podem vencer, mas chegam muito, muito perto de empatar. O relógio na sua CPU? É lixo em comparação com os melhores relógios atômicos. É por isso que o Network Time Protocol existe.


Previsão: Veremos novamente um pouco de caos quando os melhores relógios atômicos do mundo passarem de 2015 30 de junho 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 segundos bissextos e têm o nível de segurança definido como dois (o que impede uma mudança de tempo de mais de um segundo). A oscilação do relógio nesses sistemas significa que o Network Time Protocol, que é um salto em segundo, será rejeitado. Vários computadores vão cair no ventre, exatamente como em 2012.


9
+1, engraçado e informativo. E o tópico Leap Second também é uma boa leitura.
jimm-Cl

9
Bem, IIRC, o wa-belly-up wa causado porque as rotinas do clock do kernel estavam cientes da possibilidade de segundos bissextos, mas implementaram o ajuste como uma chamada para uma rotina de ajuste do clock que não podia ser chamada enquanto o relógio já estava sendo ajustado ... E é claro que o relógio do sistema não tem nada a ver com o relógio da CPU.
Hagen von Eitzen

11
Lol, incrível. Eu tenho que adicionar algo à sua observação "O relógio da CPU é um lixo comparado aos relógios atômicos" : De fato! Mas é tudo muito subjetivo, para não mencionar relativo. Podemos maravilhar com a precisão superior dos nossos melhores relógios atómicos, mas em algum lugar lá fora (fora da nossa realidade acolhedor), pode haver uma tecnologia que faz com que nossos relógios atómicos parecer :-P "lixo"
misha256

2
@ misha256 a realidade é que não pode haver relógio preciso . O tempo é relativo.
Keltari

O relógio da CPU pode ser um lixo, mas não há nada como deixar um registro de 8 bits estourar apenas para dar algum tempo ao driver de vídeo de 7 segmentos em um estado desconhecido para chomp suas instruções antes de emitir o próximo. Não precisamos de cristais para isso. Ou ainda mais importante, não há nada como esperar um nanossegundo para que a ALU conclua seu cálculo antes de guardar os resultados em um registro (ou em um barramento que leva a uma ALU diferente).
John Dvorak

22

Por volta de 2000, quando as velocidades de clock dos processadores começaram a chegar ao intervalo em que os telefones celulares também operavam, tornou-se comum adicionar uma variação à velocidade real do relógio. O motivo é simples: se o clock da CPU for exatamente 900 MHz, toda a interferência eletrônica será gerada nessa frequência. Varie a frequência do relógio um pouco entre 895 e 905 Mhz, e a interferência também é distribuída nesse intervalo.

Isso foi possível porque as CPUs modernas são limitadas pelo calor. Eles não têm problemas para correr um pouco mais rápido por um curto período de tempo, pois podem esfriar quando o relógio desacelera mais tarde.


13
No BIOS muitas vezes você vai ver esta opção descrita como "Spread Spectrum"
Mark Sowul

11
Eu li que em CPUs com vários núcleos, os núcleos também usam relógios de deslocamento, porque ajudam a evitar ruídos de rádio, ajudam na distribuição de energia e evitam que os núcleos construam harmônicos.
Zan Lynx

3
@ MarkSowul obrigado, finalmente alguém dizendo o uso prático desse "espectro de dispersão".

22

Designer de lógica digital aqui. O tempo real necessário para uma rede lógica 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 inicialização" é a borda do relógio, na qual o primeiro conjunto de registros é alterado. O "relógio de captura" é o próximo limite 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 para garantir que isso funcione é uma análise de tempo. Usando uma simulação do sistema com base na física, calcule o pior caso de chegada de qualquer entrada para qualquer saída. O maior desses números no sistema define o período mínimo do relógio.

Observe o pior caso . O tempo real de propagação será mais curto, mas depende da variação do processo de fabricação, temperatura atual e tensão do chip ( PVT ). Isso significa que, em termos práticos, você pode aplicar um relógio mais rápido (overclocking) e pode funcionar. Também pode começar a produzir erros, como decidir 0x1fffffff + 1 = 0x1f000000se o bit de transporte não chega a tempo.

Os chips também podem ter mais de um relógio a bordo (geralmente o FSB é mais lento que o núcleo) e o relógio real pode ser aumentado ou diminuído para fins de controle térmico ou variado (resposta do MSalter sobre o uso do espectro de dispersão para passar nos testes EMC).


Em alguns casos, o relógio de captura pode ser o segundo ou posterior ciclo e não o próximo. Alguns projetos supõem que os dados sempre levem pelo menos uma quantidade mínima de tempo (por exemplo, se se sabe que o atraso de propagação está entre 2,1 e 2,9 ciclos, os dados podem ser emitidos e os resultados amostrados em cada ciclo; cada resultado amostrado refletiria os dados de 3 ciclos antes); outros projetos mais conservadores alteram os dados de saída mais lentamente e ignoram o resultado até que seja garantido que seja estável.
Supercat 27/03

2

A duração da instrução de uma CPU está estritamente sincronizada com a vibração do cristal? Ou a CPU apenas precisa garantir uma instrução antes do próximo tick?

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

Mas quando a CPU decide fazer algo, o método básico pelo qual faz isso é configurar seus comutadores internos para que uma determinada informação seja direcionada a uma parte específica da CPU. Espera que a entrada chegue a essa porção e a saída chegue à próxima porção. Essa parte de espera é o objetivo do relógio.

Imagine um circuito físico que pega duas entradas binárias e as soma, produzindo a soma em algum terceiro conjunto de fios. Para fazer uma adição, a CPU deve providenciar a adição dos dois números para chegar a esse somador e as saídas para, digamos, uma trava de registro da CPU. A CPU não pode dizer à trava para armazenar a saída até que as entradas atinjam o somador, o somador produz a saída e a saída atinge a trava. Esse é o objetivo do relógio - definir o tempo de espera entre organizar a entrada para algum lugar e esperar que a saída esteja pronta para uso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.