FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 117
Síntese de Alto Nível
(behavioral synthesis)
while (x<a) begin xl=x+dx; ul=u-(5*x*u*dx)-(3*y*dx); yl=y+(u*dx); x=xl; u=ul; y=yl; end unidade de controlo * + -Rmux mux mux
R R mux mux datapath descrição comportamental (algorítmica) estrutura RTL unidades funcionais registos muxs e barramentos
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 118
Síntese de alto nível
medidas de qualidade
• Objectivos importantes
– simplificar o hardware e minimizar o tempo de execução
– minimizar tempo ⇒ explorar paralelismo ⇒ complicar hardware
• Medidas de qualidade da solução RTL
– avaliadas antes da implementação física, baseadas em estimações
• número e complexidade das unidades funcionais e registos • número de ciclos de relógio, período de relógio
• complexidade da unidade de controlo
• espaço ocupado pelas interligações, barramentos e multiplexers • potência consumida
• Compromissos área-rapidez
– grande espaço de soluções
área
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 119
Síntese de alto nível
y1=a+b; y2=x1+x2; y3=z+t; y3 + mux mux R R R y1 y2 a x1 z b x2 t
uma unidade funcional 3 ciclos + R R R y1 y2 y3 a b x1 x2 z t + + + 3 unidades funcionais 1 ciclo
espaço ocupado pelo datapath? complexidade da unidade de controlo? número de ciclos de relógio ? duração do ciclo de relógio ? potência consumida ?
Exemplo: 3 adições independentes - duas soluções alternativas:
Síntese de Alto Nível
• transformações de alto nível
– semelhantes às realizadas pelos compiladores
• propagação de constantes, simplificações algébricas, optimização de ciclos
• sequenciamento (scheduling)
– atribuição das operações a ciclos de execução (ciclos de relógio)
• minimizar o número de ciclos necessário para completar a operação • explorar o paralelismo natural do algoritmo
• alocação e “colagem” (allocation e binding)
– selecção de registos e de um conjunto de unidades funcionais
• minimizar a complexidade do hardware
• escolher entre diversos compromissos de unidades funcionais • Forte interligação com o sequenciamento
– “colagem” das operações a unidades funcionais que as realizem
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 121
Representação internas
• Compilação da descrição comportamental
– representação interna baseada em grafos
• DFG (Data Flow Graph)
– representa as operações e as dependências entre dados e resultados
CFG (Control Flow Graph)
– representa a sequência de controlo de blocos de operações
y=a+b; z=y*c; k=a+y; + * + k c b a y z if (a==b) z=y+c; else k=a+y; a==b z=y+c k=a+y
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 122
Sequenciamento
ASAP e ALAP
ASAP - As Soon As Possible atribuir cada operação ao primeiro ciclo * + -< + * * * * -1 2 3 4 * ciclo
ALAP - As Late As Possible atribuir cada operação ao último ciclo * + -< + * * * * -1 2 3 4 * ciclo 4 multiplicadores 1 subtractor 1 somador 6 unidades funcionais 2 multiplicadores 2 subtractores 1 somador 5 unidades funcionais * + -< + * * * * -1 2 3 4 * ciclo 2 multiplicadores 1 subtractor 1 somador 4 unidades funcionais ASAP com restrições, fixando o número e tipo das unidades funcionais
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 123
Sequenciamento
heurísticas
• Lista de prioridades (list scheduling)
– operações ordenadas por função de prioridade
• caminho mais longo, número de sucessores, mobilidade das operações
– em cada iteração são sequenciadas as operações prontas
• uma operação pronta tem todos os antecessores sequenciados • a lista de prioridades determina a ordem de sequenciamento
• FDS - Force Directed Scheduling
– distribui as operações de forma a balancear a utilização das Fus
• baseada na probabilidade de cada operação ser atribuída a cada ciclo
– requer o conhecimento de ASAP e ALAP: mobilidade
– determina um sequenciamento num número fixo de ciclos
Alocação e “colagem”
• Alocação (allocation)
– seleccionar um conjunto de unidades funcionais que realizem as
operações
• nos ciclos de execução determinados pelo sequenciamento • em cada ciclo uma FU só pode realizar uma operação
• Formulação básica como um problema em grafos
– Existe um ramo (não dirigido) entre 2 operações se:
• Puderem ser realizadas na mesma unidade funcional (mesmo tipo) • Não estiverem atribuídas a períodos de tempo sobrepostos
– determinação do número mínimo de sub-grafos completos
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 125
Alocação e colagem
• Grafo de compatibilidades
1 2 3 4 5 6 FU1 FU3 FU2 operações 1 e 3 são compatíveisFEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 126
Sequenciamento e alocação
optimização conjunta
• Programação Linear Inteira (PLI)
– formulação básica baseada em variáveis inteiras binárias:
– restrições no número de ciclos ou de unidades funcionais
– computacionalmente pesado, impraticável para problemas reais
• Métodos heurísticos
– arrefecimento simulado (simulated annealing)
• flexibilidade para tratar restrições complexas associadas às FUs • necessário número elevado de iterações, soluções sub-óptimas • computacionalmente pesado
– algoritmos genéticos
xij = 1 se a operação i é atribuída ao ciclo j 0 caso contrário
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 127
Elementos do datapath
• Registos
– armazenam variáveis• Barramentos
– interligam componentes• Multiplexers
– agulham barramentos• Unidades funcionais
– modelo básico• uma FU só faz um tipo de operação num ciclo
– modelos realistas para unidades funcionais
• diferentes tipos de operações para a mesma unidade (ex. uma ALU) • durações dependentes do tipo de operação (vários ciclos de relógio) • diferentes implementações para a mesma operação (custo/desempenho) • diferentes operadores pipelined
• unidades funcionais reconfiguráveis dinâmicamente
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
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 129
Sistemas Digitais síncronos
• Sistema síncrono
– duas entidades separadas: controlo e 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 ocorrem 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 UFs registos ? ? ? ?
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 130
Sistemas digitais síncronos
• Lógica combinacional 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 entrada
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 131
Circuitos síncronos com relógio
• Alguns problemas…
– todos os registos têm o mesmo relógio
• O sinal de relógio deve estar em fase em todos os flip-flops • são necessários buffers dedicados para distribuir o sinal de relógio
– 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 (habilitaçã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
• Metaestabilidade, sincronização com o relógio, debounce
– circuitos CMOS consomem energia (quase apenas) nas comutações
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
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 133
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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 134
Gated clock
• Carregamento condicional de um registo
– solução errada: usar um AND para permitir ou não o clock
ce.clk clk
R1 a b ?
ce
R1 é carregado duas vezes !
Só funciona se ce ocorrer antes de clk. 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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 135
Gated clock
• Solução (mais) segura para um gated clock
clk clk gclk1 gclk 2 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: registar os sinais enable
(en1 e en2)
Gated clock
clk en1 en2 controlo D Q D Q gclk1 gclk2 ens1 ens2 gclk clk en ensFEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 137
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 combinacional 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
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 138
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 : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 139
Entradas assíncronas
• E 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 (clk-to-setup) 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
• Problemas
– como gerar e distribuir os diferentes sinais de clock?
– como sincronizar as transferências de dados entre os diferentes domínios?
• Soluções básicas
– 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
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 141
Circuitos síncronos em FPGAs
• Como são resolvidos esses problemas?
– as interligações programáveis introduzem atrasos importantes
• transportar o sinal de relógio com os fios “normais” é fatal!!! • difícil (não impossível) equilibrar os atrasos de diferentes nets
– rede de interligações dedicadas para distribuir sinais de relógio
• fios, buffers, multiplicadores/divisores de relógio
– Flip-flops com sinal de clock enable e set/reset assíncrono
– família Spartan3 (consultar documentos ds099-2 e xapp462)
• 4 DCM ( Digital Clock Manager)
• 8 entradas e buffers dedicados para sinais de relógio • multiplexers dedicados para sinais de relógio • no ambiente de projecto ISE da XILINX
– Os sinais de relógio são identificados no processo de síntese – O projectista deve definir em que PAD esse sinal deve ficar
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 142
XC3S - rede de distribuição de relógio
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 143
XC3S – localização física
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 145
XC3S – Digital Clock Manager
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 146
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 147
DLL - Atributos
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007
José Carlos Alves 149
DCM – gama de frequências
FEUP/DEEC : EEC0055 / Projecto de Sistemas Digitais, 2006/2007 150