Como os processadores controlam sua velocidade de clock?

12

Recentemente, deparei com um processador STM com 2 osciladores no circuito - suponho que um para operação em alta velocidade e outro para baixo consumo de energia.

Para algo como um processador de desktop em que a velocidade do relógio pode ser alterada para qualquer frequência desejada (dentro da razão) - como isso faz fisicamente ?

alex.forencich
fonte
1
Como a resposta de alex indica, a frequência moderna da CPU da área de trabalho não é continuamente variável. Geralmente, é executado em etapas de 100 ou 133 MHz. (Relacionado: como uma CPU x86 moderna decide quando alterar as frequências, para "turbo" acima da velocidade nominal máxima, ou se o sistema operacional transfere o controle total do gerenciamento de energia para a CPU (Intel Skylake): A SKL tem uma matriz microcontrolador com o maior número de transistores como um 486 fez, só para tomar decisões de frequência: por que esse atraso de loop começar a correr mais rápido depois de várias iterações sem sono?
Peter Cordes

Respostas:

21

Isso é feito usando um dispositivo chamado loop com bloqueio de fase ou PLL. Aqui está um diagrama de blocos de um PLL básico:

esquemático

simular este circuito - esquemático criado usando o CircuitLab

O oscilador na placa-mãe não funciona na freqüência do clock da CPU, mas na freqüência de 100 MHz. Este oscilador serve apenas como uma frequência de referência estável e conhecida. Dentro da CPU, a frequência real do relógio será gerada por um oscilador controlado por tensão ou VCO. O VCO pode ser ajustado para gerar frequências em uma faixa relativamente ampla, mas, por si só, não é particularmente estável ou preciso - para uma dada tensão de controle, a frequência variará de uma parte para outra e com a tensão e temperatura de alimentação. Um loop de fase bloqueada serve para bloquear a frequência de saída do VCO em um relacionamento específico com a frequência de referência.

fPFD=fref/D=fovocêt/Mfovocêt=frefM/D

Por exemplo, suponha que a frequência de referência seja 100 MHz, a referência é dividida por 1 (D) e o VCO é dividido por 30 (M). Isso resultaria em uma frequência de saída de 100 MHz * 30/1 = 3 GHz. Esse relacionamento pode ser alterado simplesmente alterando as configurações do divisor, o que pode ser feito no software através de registros de controle. Observe que alterar a frequência em tempo real pode não ser tão simples quanto alterar os valores do divisor; a frequência deve ser alterada de forma a garantir que a CPU não veja nenhuma falha ou pulso de pulso muito curto. Pode ser necessário usar 2 PLLs e alternar entre eles, ou parar temporariamente o relógio ou alternar para outra fonte de relógio até que o PLL se estabilize na nova frequência.

Os PLLs são usados ​​em todo o lugar para gerar frequências precisas e facilmente ajustáveis ​​a partir de referências fixas e estáveis. Seu cartão Wi-Fi e seu roteador Wi-Fi os utilizam para selecionar o canal apropriado, gerando a chamada frequência do oscilador local, um sinal usado interno ao rádio para converter e converter os dados modulados. O seu rádio FM provavelmente usa um para ativar o controle do software sobre a frequência de recebimento, facilitando a recuperação de diferentes estações. As PLLs também são usadas para gerar os sinais de clock de alta frequência usados ​​para acionar os serializadores e desserializadores para Ethernet, PCI Express, ATA serial, Firewire, USB, DVI, HDMI, DisplayPort e muitos outros protocolos seriais modernos.

alex.forencich
fonte
7

Além das respostas anteriores ...

Seu STM micro quase certamente possui o segundo oscilador para o relógio em tempo real. Isso permite que o relógio continue funcionando (consumindo energia mínima) enquanto o restante do chip e o restante do circuito estão desligados. O dispositivo pode manter o relógio e o calendário funcionando e, normalmente, também pode reiniciar o processador principal em um temporizador - tudo útil para dispositivos incorporados.

Graham
fonte
O relógio em tempo real geralmente é muito mais lento que o relógio principal (32kHz é típico) e, por causa disso, o oscilador do relógio em tempo real e a circunferência conectada podem ter um consumo de corrente muito baixo.
Mckith 16/04
@mkeith A baixa velocidade do relógio é importante, com certeza, mas predominantemente é porque quase todo o processador está desligado.
Graham
Graham, a pergunta original é sobre por que existem dois osciladores. Em princípio, você pode ter um desligamento parcial com apenas um oscilador e economizará muita energia dessa maneira. A razão pela qual existe um segundo oscilador de velocidade mais baixa é porque o consumo dinâmico de energia está linearmente correlacionado com a frequência do relógio. Portanto, o consumo dinâmico de energia de um circuito de 32kHz será cerca de 300x menor que o consumo dinâmico de energia de um circuito de 10 MHz. A velocidade reduzida do relógio é uma parte importante da resposta, na minha opinião.
Mkeith 16/04
@mkeith Não é "principal" - é exatamente assim que funciona em todos os chips com um RTC. Obviamente, a parte RTC usa um oscilador de velocidade mais baixa para economizar velocidade. Mas a parte RTC nunca usa o relógio do oscilador mais rápido - é um circuito totalmente separado no mesmo pedaço de silício; e da mesma forma o resto do chip nunca usa o relógio mais lento do oscilador. O próprio RTC consome menos energia rodando a uma velocidade de clock mais lenta, com certeza, mas todo o resto do chip é 100% desligado e está consumindo corrente zero (bem, nanoamps de corrente de fuga, mas é tudo).
Graham
1
@mkeith Claro, e eu concordo (embora a frequência dos cristais RTC venha historicamente de movimentos eletromecânicos de quartzo em relógios e não de economia de energia em eletrônicos). Eu só queria esclarecer para o OP que o relógio mais lento não é para o modo de "baixa energia" no processador principal - é para um periférico totalmente separado.
Graham
0

muito cuidado !

insira a descrição da imagem aqui

As CPUs possuem pré-escalas binárias de programa programável e um PLL com VCO para acionar o contador, de modo que ele multiplique o relógio FSB do barramento frontal (digamos 100MHz).
Este modo dinâmico de economia de energia é selecionado automaticamente quando o uso da CPU é baixo, com os drivers, CPU, SO e BIOS certos.

Meu i7 (8cpu) vai de 3101 MHz a 800 MHz e passa instantaneamente para 1100, 1300,1500 ... etc

Se o BIOS escolher x31 como no meu caso, a CPU funcionará em 100MHz x 3100MHz e, com um contador binário na CPU, escolherá de x8 a x15 para reduzir a potência da CPU ao mesmo tempo que regula a tensão do chip da CPU em 0,9V região para economizar energia.

Eu posso exibir com o cursor no canto superior direito no Win8.1 junto com CPU% e memória%

insira a descrição da imagem aqui

Tony Stewart Sunnyskyguy EE75
fonte