Questão 4 (2,5 pontos): Com relação a distribuição de sinais e seus tempos em circuitos síncronos e assíncronos, responda as questões a seguir:
Quando é interessante se utilizar a técnica de clock gating? Demonstre como utilizá-la.
Passo 1
O exercício pergunta “quando é interessante usar a técnica de clock gating e como a gente faz isso”. O tema é redução de consumo em circuitos síncronos (distribuição de clock e tempos). Para resolver, vamos precisar entender:
- Por que o clock gera muito consumo (teoria de potência dinâmica).
- Como a gente “fecha” o clock em blocos ociosos (o circuito de clock gating).
Passo 2
Antes de tudo, um pouquinho de teoria de potência dinâmica:
Sempre que uma linha (como o clock) alterna entre 0 e 1, ela carrega e descarrega capacitâncias internas do circuito. A potência consumida nessas transições é dada por
Sempre que uma linha (como o clock) alterna entre 0 e 1, ela carrega e descarrega capacitâncias internas do circuito. A potência consumida nessas transições é dada por
onde
• = capacitância equivalente da malha de clock
• = tensão de alimentação
• = frequência do clock
•
•
•
Perceba que, mesmo que o bloco interno não esteja fazendo nenhum cálculo útil, o clock continua alternando e gerando consumo. Logo, se tivermos módulos sobressalentes ou períodos de inatividade, vale a pena “parar” o clock ali.
Passo 3
A técnica de clock gating consiste exatamente em bloquear o pulso de clock quando o módulo está ocioso. O esquema mais simples é:
- Gerar um sinal de habilitação (enable) que vale 1 só quando o módulo precisa funcionar;
- Passar o clock por um gate (normalmente uma porta AND ou um circuito “latch + AND”) junto com esse enable;
- O clock “gated” só chega no registrador interno se enable = 1.
Em LaTeX, a parte do bloco lógico é:
Mas, para não gerar glitches, normalmente colocamos um pequeno latch antes da AND:
• Latch transparente prende o enable sincronizado a bordas suaves do clock;
• A saída do latch entra em uma AND com o clock puro.
• Latch transparente prende o enable sincronizado a bordas suaves do clock;
• A saída do latch entra em uma AND com o clock puro.
Assim garantimos que não haja pulso inesperado no registro.
Passo 4
Quando é interessante usar? Sempre que tivermos partes do design que ficam longos períodos sem atividade, como:
- Blocos de interface sem tráfego;
- Unidades de DSP não usadas em certos modos;
- Periféricos em modo de espera.
O ganho em potência vem de zerar
naquele bloco:
e se o duty cycle for zero, não há consumo dinâmico.
Resposta
É interessante usar clock gating para economizar potência dinâmica em módulos que ficam ociosos. Para aplicar, gera-se um sinal de “enable” que indica atividade, faz-se um latch no enable para evitar glitches e, em seguida, ANDa-se esse enable com o clock, bloqueando-o quando o módulo não está em uso.