Post on 17-Apr-2015
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úmerode 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– C e V são dependentes da tecnologia– Os outros dois parâmetros são relacionados
com a implementação
fCVCD2
Fontes de consumo de energia
• Contribuição– Switching power (~ 70%-90%)– Leakage power (~ 5%-25%)– Short-circuit power (~ 5%)
• Switching power– cargas e descargas das capacitâncias na saída do
gate
IN OUT
Vdd
P
N
Gnd
CL
carga
desc
arga
Potência dinâmica total (aproximação)
Pdyn CLVdd2f= TR. ..
CLVddf
Onde,
TR= frequência do circuito
= capacitância de carga= tensão de entrada
= toggle rate (trans/s)
Fontes de consumo de energia
• Short-circuit Power– Ambos transistores estão conduzindo ao mesmo
tempo– “inútil”
IN OUT
Vdd
P
N
Gnd
CL
Conecta Vdd a Gndpor um curto período
Fontes de consumo de energia
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
Latch
clk
ctrl D Q
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ó habilita-los 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