Como uma CPU pode mudar dinamicamente sua frequência de clock?

15

Minha CPU Intel altera a velocidade do relógio dependendo do uso, mas como ele decide em que velocidade o relógio deve ser executado? A velocidade do relógio é determinada pelo software do sistema operacional usando um algoritmo ou é baseada em hardware? Depende do número de interrupções? A rotatividade do cache? A própria CPU ajusta seu próprio relógio? Ou é definido por um controlador separado? Ou software?

Chloe
fonte
1
Qual CPU é essa? Os sistemas embarcados geralmente não funcionam assim.
Leon Heller
Talvez algo mais para o SuperUser ?
Algumas famílias de processadores embarcados, como o PIC24F, por exemplo, têm taxas de clock programáveis, e isso pode ser usado para economizar energia. Um oscilador externo pode ser usado para que o relógio dos periféricos sensíveis ao tempo permaneça estável.
Kaz

Respostas:

18

O clock principal da CPU não é recebido diretamente da placa-mãe. Esse relógio geralmente é muito mais lento (geralmente por um fator de 10 ou mais) do que a frequência interna da CPU. Em vez disso, o sinal de clock da placa-mãe é usado como frequência de referência para um oscilador controlado por loop bloqueado de fase de frequência mais alta dentro da CPU. O relógio gerado é executado em algum múltiplo do relógio de referência e esse múltiplo pode ser alterado definindo certos registradores na CPU. A geração real do relógio é feita exclusivamente em hardware.

Para reduzir ainda mais a energia, a CPU também sinaliza para o regulador de tensão que está fornecendo sua tensão principal para rodar em um ponto de ajuste mais baixo. Em frequências mais baixas, a CPU pode funcionar com uma tensão mais baixa sem funcionar mal e, como o consumo de energia é proporcional ao quadrado da tensão, mesmo uma pequena redução na tensão pode economizar uma grande quantidade de energia.

A escala de tensão e frequência é feita por hardware, mas a decisão de executar em um modo de baixa energia é tomada pelo software (o SO). Como o sistema operacional determina o modo ideal para executar é um problema separado e mais confuso, mas é provável que se refine principalmente à porcentagem de tempo em que o sistema esteve ocioso recentemente. Principalmente ocioso, diminua a frequência. Principalmente ocupado, aumente a frequência. Depois que o sistema operacional decide a frequência de execução, é apenas uma questão de definir um registro.

Referência: " Tecnologia Enhanced Intel SpeedStep para o processador Intel Pentium M "

Theran
fonte
3
Recursos como o Turbo Boost da Intel não exigem intervenção do software para explorar a capacidade térmica, aumentando a frequência do relógio. Obviamente, o hardware também pode rastrear gargalos de desempenho não computacionais (por exemplo, contando ciclos de interrupção devido a acessos à memória) e reduzir a frequência quando o desempenho computacional não é o principal gargalo.
Paul A. Clayton
Btw as economias com relação à mudança freq são quase linear e não tanto devido à condução, o que seria av ^ 2 relacionamentos
JonRB
3

Bem, nos sistemas operacionais modernos, existe algo chamado "agendador de tarefas". É executado periodicamente (muito rápido) e seleciona (de uma lista) a próxima tarefa a ser executada. As tarefas podem ocorrer em vários estados, como selecionar, bloquear, dormir etc.

Se todas as tarefas estiverem no modo de seleção (aguardando algo do sistema operacional) e não puderem ser atendidas, ou algumas estiverem em suspensão, etc., para que não haja um uso pesado do processador, o agendador de tarefas chamará uma tarefa especial chamada "inativa "

Se o driver da CPU verificar a tabela do agendador de tarefas e verificar se a tarefa ociosa está executando a maior parte do tempo da CPU, ele simplesmente enviará um comando ao circuito PLL de geração de relógio da CPU para reduzir seu relógio. Pelo contrário, se a tarefa ociosa levar cada vez menos tempo da CPU (o que significa que a CPU está sendo usada intensamente), o driver da CPU aumentará a velocidade da CPU.

Não é muito difícil, mas há um limite inferior em que a CPU não pode ser reduzida, porque nem todas as CPUs são totalmente estáticas (portanto, elas precisam de ciclos de atualização). Cpus totalmente estáticos podem chegar a 0 (zero) MHz, porque não há estado a ser perdido se o relógio for parado.

Jorge Aldo
fonte