FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 141
Síntese do datapath
• S.D. - controlo e processamento de informação
– unidade de processamento (datapath)
• processamento e comunicação de dados
– registos, ALUs, outros operadores dedicados (FUs), barramentos
– controlo
• activa os elementos do datapath, define as operações a realizar
– FSMs, controladores microprogramados
• Control dominated
– sistemas onde predominam as estruturas de controlo
• controlador de microondas, semáforos, microprocessador, ...
• Data flow dominated
– sistemas onde predomina o datapath, controlo reduzido
• aplicações de DSP, unidades de cálculo dedicadas
Sistemas Digitais síncronos
• Sistema síncrono
– simplicidade em separar o controlo do datapath
– todos os registos têm o mesmo sinal de relógio
– o datapath efectua operações de registo a registo
• transferências entre registos na transição de relógio
– em cada ciclo de relógio o controlador define:
• que registos são carregados
• agulhamento de barramentos e multiplexers • operações a realizar pelas unidades funcionais
+ * / sqrt and or R
mux mux mux
R R mux mux clk controlo FUs registos
FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 143
Datapath síncrono
• Lógica combinatória entre registos
Tdelay1 Tdelay2 Tdelay3
clock
freq. clock < 1 / max(Tdelay1,Tdelay2,Tdelay3)
– frequência de relógio
– controlo do datapath também condiciona o desempenho
controlo datapath clock saída assíncrona saída síncrona entrada síncrona entrada assíncrona
Datapath síncrono
• todos os registos têm o mesmo relógio
– elevado fanout: necessário buffers para distribuir o relógio
• problemas
– clock skew: variação da fase do relógio em diferentes registos
• atrasos introduzidos pelas interligações, só conhecidos após routing • circuitos dedicados para distribuir relógio (p.ex. em FPGAs)
– carregamento condicional de registos (abilitação ou enable)
• não usar gated clocks (depende da tecnologia de implementação) • flip-flops com controlo clock enable síncrono
• necessário garantir tempos de hold e setup dos flip-flops
– tratamento de entradas assíncronas (p.ex. interrupções)
• análise de metaestabilidade • sincronização com o relógio
FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 145
Datapath síncrono
- clock skew
• variação da fase do relógio em diferentes registos
atraso R1 R2 clk clk1 clk clk1 R1 b c R2 b c a atraso x R1 R2 clk clk R1 b c R2 a b a x
Datapath síncrono
- clock skew
• Motivado por assimetria do circuito de relógio
– características físicas das ligações (comprimento, RC)
– diferente fanout
– lógica combinatória no caminho do relógio
R1 R2 clk clk1 R1 R2 clk clk1 R3 R4 R1 R1 R2 clk clk1 ce gated clock
FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 147
Datapath síncrono
- clock skew
• Em FPGAs
– as interligações programáveis introduzem atrasos importantes
• difícil (mas não impossível) equilibrar os atrasos de diferentes nets
– rede de interligações dedicadas para distribuir sinais de relógio
• também servem para outros sinais com elevado fanout
– exemplo: na família XC4000E (consultar o databook…)
• 4 buffers primários (BUFGP) e 4 buffers secundários (BUFGS) • um par de buffers em cada canto do die (TL, TR, BL e BR)
• cada buffer pode alimentar as entradas clk de todos os FFs com skew mínimo • não utilizar um desses buffers para distribuir o relógio é FATAL!
• no ambiente de síntese da XILINX (Foundation+Express)
– são identificados os sinais de relógio: sinais que alimentam entradas clk de FFs – é alocado um buffer global (BUFGP ou BUFGS) para cada um
– não podem existir mais de 8 sinais de relógio diferentes
Datapath síncrono
- gated clock
• Carregamento condicional de um registo
– solução errada: usar um AND para deixar ou não passar o clock
ce.clk clk
R1 a b ?
ce
R1 é carregado duas vezes !
Só funciona se ce ocorrer antes de clk. Como é possível garantir?
Se ce é produzido por uma máquina de estados síncrona com clk, ce é mudado sempre após clk. Problema adicional: o atraso
introduzido pela porta AND R
clk ce.clk ce
– clock enable síncrono
– flip-flops primitivos
com controlo clock enable
–
solução correcta
R clk ce 0 1FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 149
Datapath síncrono
- gated clock
• Solução (mais) segura para um gated clock
clk clk gclk1 gclk2 ce1 ce2 controlo gclk = ce.clk clk ce clk
• portas NAND com atrasos idênticos • atrasos iguais de clk até cada NAND... • … e de cada NAND até aos buffers • garante clock skew mínimo
• sinais ce gerados na unidade de controlo • unidade de controlo síncrona com clk • em FPGA requer routing cuidado
• Outra solução segura: registar os sinais enable
Datapath síncrono
- gated clock
clk en1 en2 controlo D Q D Q gclk1 gclk2 ens1 ens2 gclk clk en ens
FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 151
Síntese do datapath
- pipelining
• datapath síncrono
(não-pipelined vs. pipelined)
– não-pipelined: uma operação por ciclo de relógio: f
clkoper/s
– pipelined: partir o circuito lógico e inserir registos
clk
di0 di1 di2 di3 di4
do0 do1 do2 do3 do4
X reg in reg out Tdelay di Tdelay clk lógica combinatória
reg in reg out do di Tpdelay max clk lógica combinatória
reg in reg out
do
reg1
reg0
clk
di0 di1 di2 di3 di4
d0 d1 d2 d3 d4 X reg in reg0 Tpdelay max reg1 reg out d0 d1 d2 d3 X
do0 do1 do2 X
X
X X
Latência: 3 ciclos clk
Síntese do datapath
- pipelining
• No circuito pipelined
– Tp
delay maxmenor do que T
delay• Tpdelay maxé o maior atraso de uma partição do circuito combinatório
• define uma frequência de clk maior do que para o circuito combinatório
– 3
xTp
delay maxmaior do que T
delay• para além da lógica combinatória há atrasos introduzidos pelos registos • um resultado demora 3 períodos de clk a aparecer na saída
– é consumido um dado e produzido um resultado em cada clk
• aumento de desempenho para sequências de operações iguais • mas não compensa para realizar uma única operação.
FEUP/DEEC, Projecto de Sistemas Digitais, 2003/2004
José Carlos Alves 153
Entradas assíncronas
• Problema: se uma entrada comuta e o clk também?
– Flip-flops podem “cair” em estados meta-estáveis
• ao fim de um certo tempo, é muito provável que transitem para 0 ou 1
– esse tempo é um dado do fabricante e da ordem de grandeza do tempo de propagação do flip-flop
• Como sincronizar entradas assíncronas?
– Solução: usar um shift-register de dois andares (como funciona?)
Circuito síncrono
Assynch_in
D Q D Q
clock
synch_in
Múltiplos domínios de clock
•
Problema
– como gerar e distribuir os diferentes sinais de clock?
– como sincronizar as transferências de dados entre diferentes domínios?
•
Soluções
– 3 sinais de clock independentes (derivados de uma mesma fonte)
– um só clock (frequência mais elevada) e sinais de clock enable para cada bloco
Circuito síncrono
clock1
Circuito síncrono Circuito síncrono
clock2 clock3