Redução do Consumo de
Energia
MO801/MC912
Motivação
• Prolongar a duração de bateria
• Evitar problemas de aquecimento
• Minimizar tamanho de dissipador
– Redução de área
– Redução de peso
• Garantir usabilidade
– Ex.: Sensação de teclado quente
Motivação
A Lei de Moore continua prevalecendo, com o número
de transistores dobrando a cada 18 meses
Motivação
Fonte: Intel
Motivação
Fonte: Intel
Motivação
Fonte: Intel
Como a energia é gasta?
• Consumo estático
– Consumo quando o circuito está parado
• Corrente de fuga (leakage)
– Dependente de tecnologia
– Não tem solução em alto nível
• Consumo dinâmico
CD  CV f
2
– C e V são dependentes da tecnologia
– Os outros dois parâmetros são relacionados
com a implementação
Fontes de consumo de energia
• Contribuição
– Switching power (~ 70%-90%)
– Leakage power (~ 5%-25%)
– Short-circuit power (~ 5%)
Fontes de consumo de energia
• Switching power
– cargas e descargas das capacitâncias na saída do
gate
Potência dinâmica total (aproximação)
Vdd
2
carga
P
IN
Pdyn = CL .Vdd.f .TR
OUT
N
CL
Gnd
Onde,
CL = capacitância de carga
Vdd = tensão de entrada
f = frequência do circuito
TR = toggle rate (trans/s)
Fontes de consumo de energia
• Short-circuit Power
– Ambos transistores estão conduzindo ao mesmo
tempo
Vdd
Conecta Vdd a Gnd
– “inútil”
por um curto período
P
IN
OUT
N
CL
Gnd
Técnicas para redução do
consumo de energia
•
•
•
•
•
Uso de latches
Instanciação direta de componentes
Codificação explícita de estados
Redução de glitches
Clock gating
Uso de latches
• Úteis para evitar transições indesejadas
• Podem gerar outros problemas
– Condições de corrida
– Análise de temporização estática
– Checagem de equivalência de circuitos
• Dois latches podem ser usados para gerar
um flip-flop
– O uso de latch tolera a existência de clock
skew
Instanciação direta de
componentes
• Algumas bibliotecas de tecnologias
fornecem componentes com consumo de
energia menor
– Tente utiliza-los sem gerar dependência de
tecnologia
Codificação explícita de estados
• Especificar os valores dos tipos
enumerados
– Cada ferramenta oferece uma forma de
especificar explicitamente a codificação
– Também é possível escolher a codificação
globalmente
• Trocar tipos enumerados por constantes
– Perda de legibilidade
Glitch
• Glitches são transições temporárias,
oscilações
– Ex.: A <= B xor C
– Se B=0 e C=0 => A =0
– Se B e C mudam para 1, A deveria ficar em 0
– Mas B pode transitar primeiro que C e A ficar
com 1 por um intervalo pequeno
• Glitches podem se propagar pelo circuito
Como remover glitches
• Planejar as transições nas portas lógicas
• Ajustar os valores dos estados das
máquinas de estado
• Utilizar técnicas de pipeline
– Colocar registradores no meio do caminho
• Balancear o atraso em todos os
componentes
• Usar equações na forma de soma de
produtos
Como remover glitches
• Reestruturar a ordem dos blocos de um
circuito
– Pode reduzir a propagação dos glitches
– Utilizar o sinal propenso a sofrer glitch no final
do período de clock
• Atenção: glitch não é eterno
Clock gating
• Técnica muito utilizada
• Suspender o clock numa parte do circuito
– Reduz as transições
• Gera um novo sinal de clock baseado no
anterior e num sinal de controle
– Cuidado com clock skew
Como fazer clock gating?
• Colocar uma porta AND ou OR no clock
com um sinal de controle
– Pode gerar spikes (pulsos) extras no clock
• Utilizar um latch, habilitado pelo clock para
guardar o sinal de Clock Enable antes de
fazer um AND
• Manter os componentes próximos
ctrl
clk
D
Q
Latch
Quando fazer clock gating?
• Quando o ganho no consumo de energia
for superior ao gasto extra
• Ao invés de fazer um clock por
componente, agrupe-os e forneça um
clock novo apenas
• Quebre módulos que possuam condições
diferentes em sub-módulos para aplicar
clock gating separadamente
Problemas com clock gating
• Temporização
– As portas lógicas alteram a forma de onda do
clock, aumentando o tempo de subida e/ou
descida
– Em geral, o uso de clock gating deveria afetar
a árvofe de distribuição de clock
• Testabilidade
– O uso de múltiplos domínios de clock dificulta
os testes
– Sugestão: habilitar os clocks nos testes (???)
Máquinas de Estados
• Dois pontos de otimização
– Lógica
– Nos elementos de armazenamento
Clock gating para FSM
• Evitar recalcular o próximo estado quando
as entradas da lógica forem iguais
• Exemplo: Máquina de estados que verifica
se um contador estourou
– Na maior parte do tempo, o contador estará
no intervalo válido
– As entradas serão as mesmas
– O estado interno será o mesmo
– Por que ativar os FF nesse caso?
Codificação de estados
• Quando a máquina percorre vários estados
seqüencialmente, procure utilizar código de gray
– Dependente da máquina e do conhecimento do
projetista
• Codificação one-hot
– Muito utilizada em FPGAs
– Apenas um dos bits do estado está ativo por vez
– Boa alternativa para até 10 estados
• Alterar a codificação modifica a lógica de saída
– Use isso a seu favor
Particionamento de máquinas de
estados
• Criar n máquinas de estados no lugar de
uma
• Apenas uma máquina estará ativa a cada
instante, as outras estarão num estado
IDLE
• Somente a máquina ativa precisa de clock
Datapaths
• Muita energia é gasta fazendo
computações desnecessárias
• 3 técnicas úteis
– Pré-computar valores
– Proteção de partes da lógica
– Control-signal gating
Pré-computar valores
• Consiste em quebrar o circuito em duas partes
– Pré-computar o valor da primeira parte
– Usar o valor pré-computado para habilitar a segunda
parte
• Exemplo
– Quebrar um comparador de magnitude em duas
partes: bits mais e menos significativos
– Somente se os mais significativos forem iguais é que
os menos significativos serão comparados
– Atenção para o atraso gerado!
Proteção de partes da lógica
• Colocar latches nas entradas e só habilitalos se as saídas realmente forem
necessárias no circuito
• Exemplo
– Colocar dois latches nas entradas de um
somador e só habilita-los quando a saída do
somador for ser utilizada
Control-signal gating
• Similar a clock gating, só que para sinais
de controle
• Somente habilitar sinais de controle que
sejam relevantes para a operação
– Uma transição num sinal de controle, em
geral, leva a várias transições no circuito de
destino
– Manter os sinais de controle estáveis reduz o
consumo de energia
Codificação de barramentos
• Barramentos gastam MUITA energia
– Muitas transições => muita energia
• Existem codificações alternativas para os
valores dos barramentos
– Inversão dos sinais
– Auto-incremento
– Recodificação
Inversão dos sinais
• Consiste em incluir um sinal extra no
barramento (INV)
• O próximo valor poderá ser enviado com
todos os bits invertidos se assim gerar
menos transições
– Isso é indicado pelo sinal INV
• Serve para endereços e dados
Auto-incremento
• Incluir um novo sinal no barramento de
endereços (INC)
• Se o próximo valor for exatamente o valor
atual + 1, não alterar o barramento e ativar
o sinal INC
• Existem variações com incrementos
maiores que 1
Recodificação
• Se uma seqüência de valores aparece
sempre no barramento, procure recodificála para gastar menos energia
Download

LowPower