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?
15
Respostas:
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 "
fonte
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.
fonte