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:
(0,8) 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:
  1. Por que o clock gera muito consumo (teoria de potência dinâmica).
  2. 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
Pdin = C , Vdd^2 , f
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 é:
  1. Gerar um sinal de habilitação (enable) que vale 1 só quando o módulo precisa funcionar;
  2. Passar o clock por um gate (normalmente uma porta AND ou um circuito “latch + AND”) junto com esse enable;
  3. O clock “gated” só chega no registrador interno se enable = 1.
Em LaTeX, a parte do bloco lógico é:
CLKgated = CLK ;land; Enab<=
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.
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 Pdin, gated = C,Vdd^2,(fcdot DutyCyc<=) 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.

Exercícios relacionados