FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 1
Projecto de Sistemas Digitais
(EEC4279)
Licenciatura em Engenharia Electrotécnica e de Computadores
Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrotécnica e de Computadores
4º ano, 2º semestre
José Carlos Alves
http://www.fe.up.pt/~jca/feup/psd
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Projecto de Sistemas Digitais
• Sistemas Digitais. Importantes ?
– Claro!
• vastas áreas de aplicação • custo continua a descer…
• Um SD incorporado num equipamento deve ser…
(numa perspectiva industrial)
– bom: satisfazer a funcionalidade com fidelidade e fiabilidade – barato: custo mais baixo possível, sem comprometer a qualidade
• Projectar um SD
– “if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly
– ferramentas computacionais ajudam “the little gray cells”
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 3
Fluxo de projecto (típico)
Ideia particionamento desenho do circuito mapeamento tecnológico validação validação implementação teste lixo D Q DQ um controlador de intensidade luminoas para ligar e desligar luzes de casa sempre que anguem entra ou sai da casota do cao que se chama bobi e tem tambem um gato que se chama tareco1 - receptor 2 - um cpu para calcular a luz 3 - interface de potência
in te rface processador
memória
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Concepção
• Ideia
– vale a pena fazer algo que já existe ? talvez... – clarificar e estruturar a ideia, definir especificações
• um produto é mais do que um sistema digital
• geralmente um projecto é iniciado com especificações incompletas
• Exequibilidade
– boas ideias podem não ser praticáveis
• custo ou risco elevado
• tecnologia não acessível, não dominada ou não adequada • tempo de desenvolvimento demasiado longo
• Implementação
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 5
Aspectos tecnológicos
• Particionamento arquitectural
– geralmente um sistema não “cabe” num único componente – divisão da funcionalidade
– selecção dos componentes e da tecnologia de montagem
memória interface co-proc. CPU I/O proc.
?
funcionalidade rapidez disponibilidade número de pinos encapsulamento fabricante(s)?
PCB COB MCM wire-wrap ASIC RAM µP LSIFEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Selecção da tecnologia
• Critérios a ter em conta
– acessibilidade à tecnologia (projecto e fabrico) – custo (protótipagem, produção)
– fiabilidade – testabilidade – rapidez – evolução – tamanho – consumo – dissipação térmica – compatibilidade electromagnética – resistência mecânica
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 7
Ferramentas computacionais
• CAD/CAE
(computer aided design/computer aided engineering) – fundamentais para projectar em tempo útil circuitos complexos – não competem em qualidade com um projectista experiente (geralmente)• Ferramentas
CAD/CAE– trabalham com representações electrónicas de SDs (modelos) – alguns tipos de ferramentas...
• captura esquemática (mais do que desenhar o circuito lógico...) • síntese (lógica, RTL, alto nível)
• mapeamento tecnológico
• desenho físico (layout), verificação de regras geométricas • simulação lógica (verificação funcional)
• análise temporal • análise eléctrica
• modelação e simulação de faltas • geração de vectores de teste • análise térmica
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Modelos de circuitos digitais
• Representações electrónica de SDs
– usadas e transformadas por ferramentas CAD/CAE
• Um modelo é uma aproximação!
– que pode ser boa e pode ser má…
– rigor ⇒ detalhe ⇒ aproximação da tecnologia
– a simulação de um modelo nunca é igual ao seu funcionamento real
• Modelos
(mais frequentemente)tratados por humanos
– modelos estruturais (esquemáticos)• detalham a estrutura do circuito, interligando “componentes” entre si • nível do sistema, RTL, lógico ou dispositivo
– modelos comportamentais (HDLs, state charts, tabelas, BDDs)
• descrevem o comportamento do sistema • não contêm informação estrutural
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 9
Y- chart
comportamental estrutural físico placas, MCMs módulos, chips células layout de transistores transistores portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos expressões booleanas funções de transistores dispo sitivo lóg ico RTL sis tem a níve is de a bstracçã oFEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Especificação de um SD
• Tradicionalmente…
– captura esquemática (estrutural)
• interligação de portas lógicas, flip-flops, componentes RTL,… • bibliotecas de componentes específicas de uma tecnologia • anotação do desenho com atributos
– nomes, parâmetros de componentes, restrições para implementação • captura a estrutura (física) do circuito
• transformado de forma optimizada para uma tecnologia alvo
– tabelas de verdade, expressões booleanas (comportamental)
• conveniente para blocos de lógica combinacional ou FSMs – minimização lógica
– codificação de estados
• representação textual, tradução automática para um circuito lógico • independente do meio de implementação
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 11
Especificação de um SD
• Actualmente...
– projecto a níveis de abstracção mais elevados
• representações comportamentais ao nível RTL e algorítmico • linguagens normalizadas para descrição de hardware
– suportadas por ferramentas de síntese automática – combinam modelação estrutural com comportamental
– permitem ao projectista abstrair-se da tecnologia alvo (não totalmente!) – portabilidade e facilidade de manutenção
• redução do ciclo de projecto
– permite explorar diversas alternativas com diferentes compromissos
– comparando com a programação de computadores...
}
código máquina assembly C, Pascal layout portas lógicas HDLs nível de abstracção crescente ainda se justifica ?FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Projecto estruturado
• Hierarquia e modularidade
– conceitos semelhantes aos empregues em programação estruturada – objectivos:
• estruturação do projecto
• permitir a reutilização de módulos • facilitar a verificação do projecto
• simplificar a produção da documentação (geralmente esquecida!)
– “quanta” hierarquia ?
• nem 1 nem 1000 ! como se faz em programação ? porquê ? • critérios principais:
– funcionalidade e granuralidade (complexidade dos módulos) • uma diferença importante da hierarquia em software:
– não significa reduzir a complexidade do hardware
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 13
Metodologias de projecto
• Abordagens típicas
– bottom-up (capture-and-simulation)
• hierarquia criada de baixo para cima (lógico ⇒ RTL ⇒ sistema) • ciclo de projecto:
– desenhar os circuitos mais simples (ou usá-los se existirem) – validar com simulação esses circuitos
– usá-los na construção de outros circuitos mais complexos
– top-down (describe-and-synthesize)
• hierarquia criada de cima para baixo (sistema ⇒ RTL ⇒ lógico) • ciclo de projecto
– especificar o sistema de forma comportamental
– sintetizar e avaliar as soluções resultantes de diferentes restrições
– na prática, top-down e bottom-up… tocam-se!
manual
automático
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Validação do projecto
• Simulação funcional
– verificação funcional da especificação ao nível mais abstracto
• geralmente são usados modelos unit-delay ou zero-delay • verificar que é satisfeita a funcionalidade desejada • se não funciona? detecção e depuração de erros (debug) • problemas:
– como definir os vectores de simulação ? – como se sabe que o resultado é correcto ? – quão exaustivo é o teste ?
– fontes de erro mais comuns
• é bom lembrar que “os computadores não erram, os humanos sim…” – mas são humanos que criam as ferramentas de software!
• especificações incompletas, ligações erradas ou nomes trocados • uso incorrecto de ferramentas de síntese automática
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 15
Validação do projecto
• Análise temporal
– circuitos lógicos introduzem atrasos
• a simulação dá resultados correctos considerando os atrasos ? • qual o desempenho ?
• o que limita o desempenho ?
– modelos de atrasos
• específicos de uma tecnologia
• dependem do circuito em que um componente se insere (fan-out) • quanto mais completo é o modelo, mais complexa é a simulação
– tpLH, tpHL, tr, tf (mínimos, típicos e máximos)
• interligações também introduzem atrasos – função do comprimento e da forma
– só são conhecidos após a implementação ao nível físico
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Teste
• Teste do sistema fabricado
– testar para quê?
• minimizar (→ 0%) o número de sistemas defeituosos vendidos • detectar e diagnosticar defeitos de fabrico
• melhorar o sistema ou o processo produtivo
– como testar ?
• construir um modelo de faltas do circuito
• criar vectores de simulação que as consigam detectar – saídas diferentes na presença ou ausência da falta
– ferramentas para ATPG - Automatic Test Pattern Generation
– teste é uma fatia importante do custo de produção
• projecto orientado para a testabilidade (DFT - Design for Testability) • auto-teste (BIST - Built-in Self Test)
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 17
Linguagens de descrição de hardware
• Modelação de um circuito (digital)
– descrições comportamentais permitem nível elevado de abstracção – metodologia de projecto top-down: ferramentas de síntese automática – representação textual: portabilidade, edição e documentação
– a favor do esquemático: “uma figura diz mais do que mil palavras”
• um esquema captura melhor a ideia estrutural
• ferramentas gráficas front-end produzem descrições em HDLs – editores de esquemático: netlist em HDL (estrutural, gate-level ou RTL) – editores de diagramas de estados: descrições comportamentais sintetizáveis
– duas perspectivas na construção de um modelo
• descrever o seu funcionamento apenas para simulação
• construir uma descrição sintetizável ($monitor(…) não é sintetizável!) – um modelo sintetizável deve descrever “bem” o seu funcionamento – subsets das linguagens e regras de modelação dependem das ferramentas
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
HDLs
- exemplos
– VHDL - VHSIC Hardware Description Language (IEEE 1076 ‘93)
• desenvolvida para simulação, usada para síntese, fortemente tipada
– Verilog (IEEE 1364 ‘95)
• mais simples do que VHDL, poucos tipos de dados, próxima de C
– ABEL - Advanced Boolean Equation Language (TM Data I/O) • programação de PLDs, equações lógicas, descrição de FSMs
– HardwareC (univ. Berkeley)
• derivada da linguagem C, orientada para a representação de hardware
– ISPS - Instruction Set Processor Specification
• descrição do conjunto de instruções de processadores
– Silage (IMEC)
• aplicações de DSP, pouco controlo, data-flow
– EDIF - Electronic Data Interchange Format (IEEE
• standard para representação de circuitos electrónicos ao nível estrutural
– XNF - Xilinx Netlist Format (TM XILINX)
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 19
Verilog e VHDL
- história
• VHDL
– ‘80: por necessidade de normalização, documentação e portabilidade, e DOD funda projecto para criar linguagem de “programação” para descrever hardware – ‘83: início do desenvolvimento do VHDL (IBM, Texas, Intermetrics)
– ‘87: o DOD impõe que todos os SDs fossem descritos em VHDL; standard IEEE 1076; os sistemas electrónicos do F-22 foram um dos primeiros projectos em VHDL – ‘93: VHDL é revisto e adoptado como o standard IEEE 1076 ’93
– ‘96: adopção generalizada por ferramentas EDA; package para ferramentas de síntese (IEEE 1076.3); modelação de bibliotecas para ASIC e FPGA (IEEE 1076.4)
• Verilog
– ‘81: Gateway Design Automation, Philip Moorby cria GenRad HDL e o simulador HILO – ‘83: Gateway lançou a linguagem Verilog HDL e um simulador de Verilog
– ‘85: linguagem e simulador são enriquecidos (Verilog-XL)
– ‘87: Synopsys adopta Verilog como formato de entrada para ferramentas de síntese – ‘89/’90: Cadence compra Gateway e separa o simulador da linguagem; a linguagem é
libertada para o domínio público; é criado o OVI (Open Verilog International) – ‘93: neste ano, de todos os circuitos submetidos a fundições de silício, 85% foram
desenvolvidos e submetidos em Verilog.
– ‘95: Verilog é revisto e adoptado como o standard IEEE 1364
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Verilog e VHDL
- comparação
• capacidade de modelação
– semelhante para modelos estruturais– VHDL oferece melhor suporte para modelos abstractos e modelos de atrasos – Verilog tem melhores construções para modelar ao nível lógico e primitivas de
bibliotecas de ASICs e FPGAs
• tipos de dados
– VHDL suporta tipos de dados abstractos criados pelo utilizador
– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)
• aprendizagem
– VHDL é fortemente tipada, menos intuitiva, mais verbosa
– Verilog é mais simples e fácil de ler; código é mais curto do que em VHDL
• parameterização
– VHDL tem construções para parametrizar número de bits, replicar estruturas e configurar modelos
– Verilog suporta apenas modelos com parâmetros, instanciação com redefinição de parâmetros
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 21
VHDL-Verilog
(comportamental)
library IEEE; use IEEE.STD_Logic_1164.all; entity MUX_2_1 is port(S1,A1,B1,S2,A2,B2,S3,A3,B3:in std_logic; Y1,Y2,Y3:out std_logic);end entity MUX_2_1;
architecture COND_DATA_FLOW of MUX_2_1 is begin Y1 <= A1 when S1=‘1’ else B1; TWO_2_1_MUXES: process(S2,A2,B2,S3,A3,B3) begin Y2<=B2; if (S2=‘1’) then Y2<=A2; endif; if (S3=‘1’) then Y3<=A3; else Y3<=B3; endif;
end process TWO_2_1_MUXES end architecture COND_DATA_FLOW;
module MUX_2_1(S1,A1,B1,Y1, S2,A2,B2,Y2, S3,A3,B3,Y3); input S1,A1,B1,S2,A2,B2,S3,A3,B3; output Y1,Y2,Y3; reg Y2,Y3; assign Y1=S1?A1:B1; always @(S2 or A2 or B2 or S3 or A3 or B3) begin Y2=B2; if (S2) Y2=A2; if (S3) Y3=A3; else Y3=B3; end endmodule VHDL Verilog
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
VHDL-Verilog
(estrutural)
library IEEE; use IEEE.STD_Logic_1164.all; entity HALF_ADDER is port(a,b:in std_logic; sum,carry:out std_logic); end entity HALF_ADDER;architecture STRUCT of HALF_ADDER is component xor2
port(a,b:in std_logic; c:out std_logic); end component;
component and2
port(a,b:in std_logic; c:out std_logic); end component;
begin
X1: xor2 port map(a=>a,b=>b,c=>sum); A1: and2 port map(a=>a,b=>b,c=>carry); end STRUCT; module HALF_ADDER(a,b,sum,carry); input a,b; output sum,carry; xor X1(sum,a,b); and A1(carry,a,b); endmodule VHDL Verilog
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 23
Modelação em HDL
• Modelo sintetizável vs. modelo não sintetizável
– ferramentas de síntese automática inferem a estrutura de um circuito
• o modelo (comportamental ou estrutural) vai ser hardware • regras, restrições e recomendações das ferramentas de síntese
– como é interpretado e traduzida a descrição em HDL – simulação e implementação devem concordar
– construções específicas da tecnologia de implementação
– modelos não sintetizáveis
• não são traduzidos para hardware
• definem estímulos para simulação, e permitem a monitorização de sinais • modelam o comportamento de outros circuitos para simulação do sistema
– circuito de relógio – memórias ou CPUs
– circuitos de interface (por exemplo conversores A/D ou D/A)
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Modelação em HDLs
recomendações gerais
• Antes de iniciar a construção do modelo
– definir a arquitectura e estruturação do projecto (particionamento) – ferramentas de síntese não processam bem circuitos infinitamente
grandes!
• Escrever o código de modo a reflectir a arquitectura
– estruturado em módulos e funções, ter em mente a reusabilidade – favorecer a legibilidade: nomes, comentários, parêntesis, parâmetros
• Garantir a precisão da simulação
– deve traduzir fielmente o comportamento do hardware gerado – modelar correctamente o comportamento das partes não sintetizáveis
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 25
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express) – Atrasos são sempre ignorados
• o seu uso pode tornar incoerente a simulação e o comportamento do circuito
– Sinais do tipo reg
• nem sempre são traduzidos em registos
• podem ser traduzidos em wire, D-flip-flops ou latches transparentes
– Atribuição contínua (assign sum=a^b^cin;)
• traduzida para um bloco de lógica combinacional
– Operadores aritméticos e lógicos
• apenas para inteiros sem sinal, dimensão dos resultados depende dos operandos • são gerados circuitos combinacionais que os implementam
• podem ou não ser partilhados para diferentes operações do mesmo tipo • os operadores / e % só podem ser usados com operandos constantes
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– always - duas formas
• always @(posedge ...): os sinais tipo reg são traduzidos para Dffs
always @(posedge clock or negedge reset) begin if (!reset) acc = 8’b00000000; else acc = data_in; end
• always @(a or b or ...): sinais do tipo reg são latches ou wires reset assíncrono;
tem de ser avaliado no primeiro if(...)
always @(a or b or sel) begin if (sel) out = a; else out = b; end
out é uma latch out é uma função combinacional de sel, a e b lista de sensibilidades pode ser omitida só para síntese
always @(a or sel) begin
if (sel) out = a; end
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 27
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express) – inferência de latches em construções always - regra geral
• latches são geradas para sinais do tipo reg que não sejam completamente especificados para todos os casos de instruções condicionais (por exemplo if (sel) out = a; e quando sel==0 ? ) • no caso contrário é apenas gerado um circuito combinacional sem
elementos de memória
– latches podem ser indesejáveis
• aumento do espaço ocupado • degradação do desempenho
– ferramentas de síntese ignoram a lista de sensibilidades
• o simulador não! Só avalia o bloco quando algum sinal muda • se não for usada há (geralmente) incoerência entre a simulação e o
circuito sintetizado.
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express) – inferência de buffers de 3-estados
• atribuindo z a um sinal (do tipo reg) module three_state(in, out, en); input in, en;
output out; reg out; always @( in or en) if (en) out = in; else out = 1’bz; endmodule assign out = en ? in : 1’bz;
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 29
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express) – ciclos
• for(...): só são suportadas 4 formas:
– crescente ou decrescente de passo constante (...;index=index±step) – condição de terminação com <, >, <= ou >=
• while (...): cria um ciclo combinacional; deve ser quebrado com @(posedge clock)
always @( a or b or carry ) for(i=0;i<=31;i=i+1) begin
s[i] = a[i]^b[i]^carry;
carry = a[i]&b[i] | a[i]&carry | b[i]&carry; end
always @( posedge clock ) while (x<y)
begin
@(posedge clock); x=x+z;
end
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese de Sistemas Digitais
comportamental estrutural físico placas, MCMs módulos, chips células layout de transistores transistores portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos expressões booleanas funções de transistores dis posit ivo lóg ico RTL sis tem a níve is de a bstrac ção arquitectural lógica alto nível circuito
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 31
Problemas de síntese
• Síntese estrutural
– transformação do domínio comportamental para o domínio estrutural – acrescenta detalhe estrutural
– dependente da tecnologia mas não define a realização física – sujeita a restrições: estimativas de área, desempenho ou potência
• Síntese física
– transformação do domínio estrutural para o domínio físico – nos 4 níveis de abstracção (Y-chart)
• dispositivo: produção dos desenhos das máscaras de células (layout) • célula: tradução de portas lógicas em agregados de células e interligações • RTL: organização física de módulos (floorplanning)
• sistema: particionamento em componentes, PCBs, MCMs
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese de Alto Nível
ou síntese RTL
• origem
– descrição comportamental ao nível RTL: um algoritmo
• variáveis (registos)
• operações entre variáveis (aritméticas, lógicas ou deslocamento) • decisões (if-then-else, ciclos)
– restrições
• tempo de execução: número de ciclos de relógio e frequência do relógio • espaço ocupado: número e tipo de elementos, número de células ou área
• destino - arquitectura básica
– um datapath ao nível RTL (síncrono)
• rede de registos, multiplexers, unidades funcionais e barramentos
– uma unidade de controlo
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 33
Síntese de Alto Nível
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 * + -R
mux mux mux
R R mux mux datapath descrição comportamental (algorítmica, RTL) estrutura RTL unidades funcionais registos muxs e barramentos
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
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
• Compromisso área-tempo
– espaço de soluções típico
área
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 35
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? duração do ciclo de relógio ? potência consumida ? testabilidade ?
Exemplo: 3 adições independentes - duas soluções alternativas:
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese de Alto Nível
problemas
• 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 • depende do sequenciamento e influencia-o
– “colagem” das operações a unidades funcionais que as realizem
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 37
Transformações de alto nível
• 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, Projecto de Sistemas Digitais, 1999/2000
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, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 39
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 • pela ordem ditada pela lista de prioridades
• 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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Alocação e “colagem”
• Conhecido um sequenciamento
– escolher um conjunto de unidades funcionais que realizem as operações
• nos ciclos determinados pelo sequenciamento • em cada ciclo uma FU só pode realizar uma operação
• Formulação básica
– determinação do número mínimo de sub-grafos completos
• grafo de compatibilidades: 1 2 3 4 5 6 FU1 FU3 FU2 operações 1 e 3 são compatíveis
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 41
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
• 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, Projecto de Sistemas Digitais, 1999/2000
Unidades funcionais
• modelo básico
– uma FU só faz um tipo de operação num ciclo
• modelos mais realistas
– diferentes tipos de operações
– durações dependentes do tipo de operação
– disponibilidade de diferentes implementações para a mesma operação – diferentes operadores pipelined
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 43
Verificação do projecto
• Tradicionalmente
– verificação era (e por vezes ainda é) feita com um protótipo do sistema
• é dispendioso, demora tempo a ser construído
• protótipos de CIs construídos com componentes discretos não são fiéis • é uma implementação do sistema, funciona próximo da velocidade real • permite verificar o sistema com estímulos complexos de sistemas físicos
• Verificação por simulação
– protótipo substituído por um modelo do sistema, permitindo:
• verificar condições de erro (sinais não ligados, conflitos de barramentos) • verificar o sistema com diferentes modelos de atrasos dos componentes • observar o estado de qualquer nó ou componente do sistema
• forçar qualquer sinal a estados desejados • iniciar a simulação em qualquer estado
• controlar de forma precisa a temporização de eventos assíncronos • construir o conjunto de estímulos para testar o sistema fabricado Baseado em ”Digital Systems Testing and Testable Design”, capítulo 3,
M. Abramovici, M.A. Breuer, A.D. Friedman, Computer Science Press, 1990
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
estímulos modelo simulador resultados especificação?
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 45
Simulação
• Verificação do projecto
– comparar o funcionamento de um modelo do sistema com os resultados esperados pela especificação
– verificar se a operação do sistema é:
• correcta e independente do estado inicial dos elementos de memória • insensível a variações dos atrasos dos componentes
• livre de contenções, oscilações, entradas ilegais ou estado suspensos
– ...e também:
• estudar e avaliar compromissos de custo e desempenho • avaliar alterações ao projecto
• produzir documentação (por exemplo diagramas temporais)
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
- problemas
• Como se constroem estímulos ?
– não há procedimentos formais para gerar estímulos
– processo heurístico, baseado na intuição e conhecimento do sistema – não é praticável a verificação exaustiva
• um circuito com 75 entradas ⇒ 275 testes (1.2x109anos@1µs/teste)
• Como se sabe se os resultados são correctos ?
– só verifica a funcionalidade exercitada pelos estímulos
• Estímulos para verificação e para teste
– verificação: detectar e diagnosticar erros de projecto
• não é possível enumerar todos os erros de projecto
– teste: detectar e diagnosticar defeitos de fabrico
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 47
Simulação
- compiled-code
• simulação compilada (compiled-code)
– executa um modelo compilado do circuito
• o circuito é traduzido em instruções executáveis por um processador • simulador oferece suporte para fornecer estímulos de simulação • orientada para verificação funcional, não suporta análise temporal • o comportamento de componentes é modelado por instruções
máquina ou subrotinas
– exemplo (modelo estrutural):
MOV AL,A AND AL,B MOV Y,AL MOV AL,B AND AL,Y NOT AL MOV Z,AL MOV F,AL
para cada transição de clk (código 8086):
D Q A B F Y clk Z
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
- event-driven
• simulação de eventos (event-driven)
– usa um modelo estrutural do circuito para gerar e propagar eventos
• eventos nas entradas são produzidos pelos estímulos
• eventos nos restantes nós são gerados pela avaliação dos componentes • modelo do circuito é mantido em estruturas de dados
– um evento é uma mudança do estado de um sinal num tempo dado
• os componentes que usam esse sinal são activados e avaliados • as mudanças resultantes das avaliações geram novos eventos • outros eventos: controlo do simulador, monitorização de sinais
– em Verilog: $finish; $display(...), $monitor(...)
– permite processar estímulos e sinais assíncronos
• análise do comportamento com os atrasos dos componentes
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 49
Simulação
event-driven
- fluxograma
avançar tempo de simulação
fim não há eventos extrair eventos
para este tempo até ao primeiro evento pendente actualiza sinais activos propaga mudanças dos sinais avalia componentes activados introduz os novos eventos na lista actualiza o valor dos
sinais modificados pelos eventos deste tempo propaga o valor dos sinais activos até aos componentes que os usam e activa esses componentes
a avaliação dos componentes activados produz novos eventos em tempo futuro (atrasos dos componentes) ou no mesmo tempo todos os eventos produzidos pelos
estímulos já foram introduzidos na lista início
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
- o valor lógico desconhecido
• Quando um circuito lógico é ligado,
– memórias e flip-flops ficam com valores lógicos não definidos – é necessário prever um mecanismo de iniciação (reset)
• geralmente associado ao power-up • iniciar os conteúdo de registos e RAMs
• iniciar máquinas de estados num estado determinado
• Valor lógico desconhecido: u
– representa o estado de sinais lógicos não iniciados resultantes de
• não iniciação de registos e memórias
• indefinição do estado de entradas primárias do circuito a simular
– é processado juntamente com os valores lógicos 0 e 1
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 51
Simulação
- o valor lógico desconhecido
• Generalização dos operadores lógicos
– valor u é representado pelo conjunto {0,1}
• u pode ser qualquer elemento do conjunto que o representa
– 1 e 0 são representados pelos conjuntos {1} e {0}, respectivamente – uma operação lógica B entre p e q, com p,q∈{0,1,u} é definida como
• uma operação entre os conjuntos que representam p e q
• o resultado é a reunião dos resultados de todas as operações B entre todos os elementos dos dois conjuntos
• para um operador unário U, o resultado U(q) é a reunião de todos os resultados de U aplicada a cada elemento do conjunto que representa q
and(0,u)=and({0},{0,1})={and(0,0),and(0,1)}={0,0}={0}=0 or(0,u)=or({0},{0,1})={or(0,0),or(0,1)}={0,1}=u
not(u)=not({0,1})={not(0),not(1)}={1,0}=u
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
- o valor lógico desconhecido
• Tabelas de verdade para AND, OR e NOT
AND 0 1 u 0 0 0 0 1 0 1 u u 0 u u OR 0 1 u 0 0 1 u 1 1 1 1 u u 1 u NOT 0 1 u 1 0 u
• Perda de informação propagando o valor lógico u
0 1 u u u u u
desconhecidos, mas sempre com valores contrários
é sempre 1!
não, não é factorial...
não serve usar u e u
u Q Q Q Q u u u 1 desconhecido
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 53
Simulação
- o valor lógico Z
• Modelação de buffers com saída tristate
I O
E
se E=1, O=I se E=0, O=Z
• Um sinal com o nível lógico Z
– pode ser forçado com 1 ou 0 (pull-up ou pull-down) – é sempre interpretado como u por uma entrada
Tabela de verdade: I E 0 1 u 0 Z 0 {0,Z} 1 Z 1 {1,Z} u Z u {u,Z} a b o a b 0 1 Z u 0 0 u 0 u 1 u 1 1 u Z 0 1 Z u u u u u u Tabela de verdade de um barramento com 2 entradas
em que casos pode ocorrer contenção no barramento ?
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Simulação
- modelos de atrasos
• atraso de transporte
– um atraso na propagação do nível lógico
• atrasos de subida e de descida
– diferentes atrasos para as transições 0-1 e 1-0
• atrasos ambíguos
– mínimos e máximos para os atrasos 0-1 e 1-0
• atraso inercial
– duração mínima de uma entrada para ser reflectida na saída
• setup time e hold time para flip-flops
– setup time: tempo mínimo para D estar estável antes de clock – hold time: tempo mínimo para D permanecer estável após clock
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 55
Prototipagem
• Prototipagem de Sistemas Digitais
– construção física dispendiosa e demorada (componentes off-the-shelf) – fase de protótipo: prováveis iterações ao projecto
• custos elevados e tempos longos de re-desenho
– recurso a dispositivos programáveis do tipo PLA
• 1985/86: Xilinx introduz nova família de PLDs
– FPGA - Field Programmable Gate Array
• agregados regulares de blocos lógicos configuráveis • blocos configuráveis de complexidade reduzida
• configuração rápida (escrita em SRAM, volátil, in-circuit)
– Sistemas reconfiguráveis baseados em FPGAs
• construídos uma vez, re-utilizáveis um número arbitrário de vezes
• prototipagem, circuitos para aplicações específicas, computadores dedicados
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
FPGA
- Field Programmable Gate Array
bloco lógico
configurável interruptoresprogramáveis interligações bloco deentrada/saída
A0 B0 A1 B1 S0 S1 S2 A0 B0 A1 B1 S1 S2 S0
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 57
FPGAs
- características
• Programação eléctrica
– anti-fuse (programador, definitiva)
– EPROM, EEPROM (programador ou in-circuit, não volátil) – SRAM (in-circuit, volátil)
• Arquitecturas de FPGAs correntes
bloco lógico configurável
Xilinx Actel Algotronix Altera
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
FPGAs
- arquitecturas de blocos configuráveis
• Look-up tables
• multiplexers
• portas lógicas e muxs
• pares de transistores
• blocos PLA
m ux RAM A B C D A B A B m u x m u x m u xFEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 59
FPGAs
- aplicações
• circuitos para aplicações específicas (ASICs)
– substituir um circuito integrado fabricado por medida
• emulação e prototipagem de hardware
– acelerar simulação (3 a 5 ordens de magnitude) – emulação de sistemas mistos digital-analógico
• processadores dedicados
(Custom Computing Machines) – especificamente desenhados para acelerar partes de aplicações• paralelismo das operações
• natureza das operações (por exemplo manipulação de bits)
– associados a processadores convencionais
– uma plataforma reconfigurável (física) para diferentes processadores
• lista de sistemas baseados em FPGAs
– consultar http://www.io.com/~guccione/HW-list.html
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
FPGAs - Xilinx XC4000
• Família XC4000 da XILINX
(http://www.xilinx.com) – considerado um standard industrial (versão HardWireTM)– configuração por SRAM
– blocos lógicos configuráveis baseados em LUTs de 4 e 3 entradas – abundância de flip-flops
– arquitectura do tipo array, canais de interligação abundantes – capacidade de implementar blocos de RAM
– circuitos dedicados para geração e propagação de carry – interconexões hierárquicas
– capacidade de readback (configuração e nós internos) – capacidades actuais até 500 K portas lógicas equivalentes – XC4085XLA-08: 85 K gates = 64.000$00 (Outubro 1998)
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 61
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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
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, 1999/2000
José Carlos Alves 63
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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
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, 1999/2000
José Carlos Alves 65
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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
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, 1999/2000
José Carlos Alves 67
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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
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, 1999/2000
José Carlos Alves 69
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
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
• 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, 1999/2000
José Carlos Alves 71
Síntese do datapath
- pipelining
• datapath síncrono
(não-pipelined vs. pipelined)
– não-pipelined: uma operação por ciclo de relógio: fclk oper/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 re g in re g ou t do di Tpdelay max clk lógica combinatória re g in re g ou t do re g1 re g0 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, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- pipelining
• No circuito pipelined
– Tpdelay max menor do que Tdelay
• 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
– 3xTpdelay max maior do que Tdelay
• 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, 1999/2000
José Carlos Alves 73
Síntese do datapath
- unidades funcionais
• Unidades funcionais do datapath
– operadores aritméticos
• operandos inteiros, vírgula fixa ou vírgula flutuante
• operadores com constantes, mais eficientes do que operadores genéricos
– operadores lógicos, manipulação de bits
• funções lógicas, rotações, deslocamentos, bitreverse
– operadores específicos de uma aplicação
• A*B-(C+D), x[k]*x[k+t1]*x[k+t2]
• Numa abordagem top-down (HDL+síntese)
– operadores inferidos e construídos no processo de síntese – nem todos os operadores disponíveis
• FPGA Express suporta apenas divisões entre constantes (!)
– arquitecturas dos operadores com poucas alternativas
• FPGA Express só constrói multiplicadores unsigned
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Somadores e subtractores
– ripple carry
• propagação do carry limita a rapidez de cálculo
• resultado garantido após o maior tempo de propagação do carry
– carry select
• somador dividido em secções, cada secção contém 2 somadores de k bits • exemplo: somador de 12 bits em secções de 4 bits:
Kay Hwang, “Computer Arithmetic - Principles, Architecture and Design”, John Wiley & Sons, 1990
A3-0 A3-0 B3-0 B3-0 1 0 4 bit add 4 bit add C-1 C3,1 C3,0 A7-4 A7-4 B7-4 B7-4 1 0 4 bit add 4 bit add C7,1 C7,0 C3,0 C3,1 CS A11-8 A11-8 B11-8 B11-8 1 0 4 bit add 4 bit add C11,1 C11,0 CS C3,0 C3,1 C7,0 C7,1 S3-0 S7-4 S11-8 C11 C7 C4
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 75
Síntese do datapath
- operadores aritméticos
• Somadores e subtractores
(cont.) – carry generate, propagate, lookahead• generate • propagate
• equações do somador escrevem-se
• os carry de todos os andares podem ser obtidos em paralelo Gi = Ai . Bi significa que o carry é gerado no andar i
Pi = Ai⊕ Bi significa que o andar i propaga o carry que lhe chega
Si = Ai⊕ Bi ⊕ Ci-1 = Pi⊕⊕ Ci-1 Ci = Ai.Bi + Ai.Ci-1 + Bi .Ci-1
= Ai.Bi + (Ai⊕ Bi ) . Ci-1 = Gi + + Pi .Ci-1
Ck = Gk+ Gk-1.Pk + Gk-1 .Pk-1 .Pk + ... + C-1 .P0 .P1.Pk
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Somadores e subtractores
(cont.) – somadores assíncronos• tempo de propagação depende dos operandos
• circuitos para detectar que a propagação do carry está concluída • somador de 32 bits: média de 5 bits de carry (6 para somador de 64 bits) • tempo pior é igual ou pior do que um somador ripple carry
– subtractores
• em complemento para dois basta complementar o subtractor – trocar todos os bits (com XOR) e adicionar 1 fazendo C-1=1
– melhor implementação depende da tecnologia
• em FPGAs XC4000 e usando fast carry logic, um ripple carry do que carry
select ou lookahead carry
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 77
Síntese do datapath
- operadores aritméticos
• Multiplicação binária
– multiplicação de números com sinal
• facilmente tratados com representação em sinal e magnitude • o produto é
– negativo se os operandos tiverem sinais diferentes – positivo caso contrário
• custo: complementar os operandos e o resultado
1101 (13) 0101 (5) 1101 0000 1101 0000 01000001 (65 ≠≠ -15) x (-3) (5) sem sinal complemento para dois
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicador iterativo (shift-add)
– multiplicando=Md[m-1:0], multiplicador=Mr[n-1:0] – Acc[m+n:0] = 0
– para cada bit k do multiplicador desde 0 até n-1
• se Mrk = = 1
Acc[m+n:n] = Acc[m+n-1:n] + Md[m-1:0] • Acc = Acc >> 1
– produto = Acc[m+n-1:0]
– exemplo: Md Mr k Mrk Acc oper. 1101 0101 - - 000000000 1101 0101 0 1 011010000 add 001101000 shift 1101 0101 1 0 001101000 add 000110100 shift 1101 0101 2 1 100000100 add 010000010 shift 1101 0101 3 0 010000010 add 001000001 shift
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 79
Síntese do datapath
- operadores aritméticos
• Multiplicador shift-add
– implementação
• em cada ciclo, os m+1 bits do produto parcial são carregados em Acc • o resultado parcial é deslocado para o registo que contém inicialmente Mr
m bit adder Mr Mr0 P[m+n-1:0] Acc Md shr ld shr ld m n n m ld m+1
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicação binária em complemento para dois
– se só for negativo o multiplicando
• basta estender o sinal dos produtos parciais
1101 0101 1111101 000000 11101 0000 11110001 x (-3) (5) (-15) extensão de sinal
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 81
Síntese do datapath
- operadores aritméticos
• Multiplicação binária em complemento para dois
– se o multiplicador for negativo
• basta subtrair o último produto parcial (é igual a zero se for positivo)
– recordando a representação de números em complemento para dois
• para um número positivo com m bits • se for negativo
• para os dois casos
valor(x) = 0 + Xm-2.2m-2 + …+ X121 + X0.20
valor(x) = -2m + 2m-1 + X
m-2.2m-2 + …+ X121 + X0.20
valor(x) = - Xm-1.2m-1 + Xm-2.2m-2 + …+ X121 + X0.20
bit de sinal Xm-1 tem peso -2m-1
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicação binária em complemento para dois
– se o multiplicador for negativo
– … e se ambos negativos
– implementação: fácil incluir no multiplicador shift-add!
1101 1101 1111101 000000 11101 11110001 11101 00001001 x (-3) (-3) (+9) + -somar os 3 produtos parciais subtraír o último produto parcial extensão de sinal 0101 1101 0101 0000 0101 0011001 0101 11110001 x (5) (-3) (-15) + -somar os 3 produtos parciais subtraír o último produto parcial se o multiplicador
for positivo, o último produto parcial é zero!
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 83
Síntese do datapath
- operadores aritméticos
• Multiplicador shift-add
– avaliação de k bits do multiplicador de cada vez (não sobrepostos)
• número de ciclos reduzido k vezes (shift de k bits de cada vez) • exemplo para k=2
• aumento da complexidade do somador – é necessário somar 3.Md
– somadores em cascata, tempo de atraso superior Mr1 Mr0 somar a Acc 0 0 0 0 1 Md 1 0 2.Md 1 1 2.Md+Md m bit adder Mr Mr0 Md shr ld n ld m+1 bit adder Mr1 2.Md Acc m m m m+1 m+2
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicação - recodificação de Booth
– pela propriedade:
• pode substituir-se • por
• objectivo: eliminar sequências de uns
– permite evitar em cada ciclo a soma de 3 operandos (2.Md+Md)
1 0 0 1 1 1 0 0 1 2i+k - 2i = 2i+k-1 + 2i+k-2 + 2i+1 + 2i
1 0 1 0 0 1 0 0 1 2i+k - 2i 00101110110110 00101110111010 00101111001010 00110001001010 01010001001010 factores: 0 2 3 2 3 1 2 factores: 1 -1 0 -1 0 -2 -2
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 85
Síntese do datapath
- operadores aritméticos
• Multiplicação - recodificação de Booth
– algoritmo
• percorrer todos os bits desde o lsb até encontrar um 1 • trocar esse 1 por 1 e percorrer uns até encontrar um zero • trocar esse 0 por 1 e continuar
– exemplo
– tabela de recodificação, analisando 2 bits de cada vez
• é necessário acrescentar um bit zero à direita do lsb: b-1=0
0011 1101 1001 = 512 + 256 + 128 + 64 + 16 + 8 + 1 = 985
0100 0110 1011 = 1024 - 64 + 32 - 8 + 2 - 1 = 985
bi bi-1 zi valor caso 0 0 0 0 cadeia de zeros 0 1 1 +1 fim dos uns 1 0 1 -1 inicio dos uns 1 1 0 0 cadeia de uns
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicação - recodificação de Booth
– multiplicação com sinal: basta recodificar o multiplicador – para cada bit do multiplicador
• se é 0 não soma nada • se é 1 soma o multiplicando
• se é 1 soma o simétrico do multiplicando
– exemplo -7 -5 -(-7)x20 +(0)x21 +(-7)x22 -(-7)x23 7-28+56=35 x + 1001 1101 00000111 0000000 111001 00111 00100011 x + (-7) x (-5) = +35 -7 = 1001 -5 = 1011 recodificar -5 (ver tabela) 1011 0 1011 0 1011 0 1011 0 1101
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 87
Síntese do datapath
- operadores aritméticos
• Multiplicador de Booth iterativo
– multiplicador Mr acrescentado de um bit à direita: Mr-1= 0 – comparados dois bits de Mr de cada vez
• se bi = bi-1 desloca produto parcial (11 ou 00 → 0) • se bi < bi-1 soma Md e desloca produto parcial (01 → 1) • se bi > bi-1 subtrai Md e desloca produto parcial (10 → 1) • deslocamento aritmético do produto
• exemplo: – Mr = -3 (1101) – Md = +7 (0111) 1101 0 1 -7 1001 0000 1100 1000 1101 0 1 +7 0011 1000 0001 1100 1101 0 1 -7 1010 1100 1101 0110 1101 0 0 +0 1101 0110 1110 1011 Mr-1 Mr opr. produto
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• Multiplicador de Booth
– recodificando pares de bits em dígitos com sinal
• são analisados 3 bits de cada vez
• cada par de bits produz uma multiplicação por 0, +1, +2, -1 ou -2 • reduz para metade o número de iterações
• tabela de recodificação
bi bi-1 bi-2 zi zi-1 valor caso 0 0 0 0 0 cadeia de zeros 0 0 1 1 +1 fim de uns 0 1 0 1 +1 1 isolado 0 1 1 1 +2 fim de uns 1 0 0 1 -2 início de uns 1 0 1 1 -1 zero isolado 1 1 0 1 -1 início de uns 1 1 1 0 0 cadeia de uns
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 89
Síntese do datapath
- operadores aritméticos
• Multiplicação paralela (unsigned)
a4.b0 a3.b0 a2.b0 a1.b0 a0.b0 a4.b1 a3.b1 a2.b1 a1.b1 a0.b1 a4.b2 a3.b2 a2.b2 a1.b2 a0.b2 a4.b3 a3.b3 a2.b3 a1.b3 a0.b3 a4.b4 a3.b4 a2.b4 a1.b4 a0.b4
a4 a3 a2 a1 a0 b4 b3 b2 b1 b0
x
p9 p8 p7 p6 p5 p4 p3 p2 p1 p0
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• array multiplicador (unsigned)
– cada nó é um full adder
FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA FA p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 0 0 0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a3.b0 a4.b0 a1.b1 a2.b1 a3.b1 a4.b1 a1.b2 a2.b2 a3.b2 a4.b2 a1.b3 a2.b3 a3.b3 a4.b3 a0.b2 a0.b3 a0.b4 a1.b4 a2.b4 a3.b4 a4.b4 FA A B Cin S Cout
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 91
Síntese do datapath
- operadores aritméticos
• multiplicação paralela (signed)
(a4.b0) a3.b0 a2.b0 a1.b0 a0.b0 (a4.b1) a3.b1 a2.b1 a1.b1 a0.b1 (a4.b2) a3.b2 a2.b2 a1.b2 a0.b2 (a4.b3) a3.b3 a2.b3 a1.b3 a0.b3 a4.b4 (a3.b4) (a2.b4) (a1.b4) (a0.b4)
(a4) a3 a2 a1 a0 (b4) b3 b2 b1 b0 x (p9) p8 p7 p6 p5 p4 p3 p2 p1 p0 bit de sinal (peso -24) termos de soma negativos
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• array multiplicador de Pezaris (n
xn, signed)
– 4 tipos de full adders diferentes
• FA0, FA1, FA2, FA3
FA3 FA2 FA2 p0 p1 p2 p3 p4 p5 p6 p7 p8 (p9) 0 0 0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a3.b0 a4.b0 a1.b1 a2.b1 a3.b1 a4.b1 a1.b2 a2.b2 a3.b2 a4.b2 a1.b3 a2.b3 a3.b3 a4.b3 a0.b2 a0.b3 a0.b4 a1.b4 a2.b4 a3.b4 a4.b4 FA2 FA2
FA1 FA1 FA1
FA2 FA0 FA0 FA0
FA2 FA0 FA0 FA0
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 93
Síntese do datapath
- operadores aritméticos
• multiplicador bi-secção (signed)
– separando os termos positivos dos negativos
a3.b0 a2.b0 a1.b0 a0.b0 a3.b1 a2.b1 a1.b1 a0.b1 a3.b2 a2.b2 a1.b2 a0.b2 a4.b4 0 a3.b3 a2.b3 a1.b3 a0.b3 (a4.b3) (a4.b2) (a4.b1) (a4.b0) (a3.b4) (a2.b4) (a1.b4) (a0.b4)
(a4) a3 a2 a1 a0 (b4) b3 b2 b1 b0 x (p9) p8 p7 p6 p5 p4 p3 p2 p1 p0 secção positiva secção negativa
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• multiplicador bi-secção
– só dois tipos de full-adders – fácil de expandir para mxn
FA2 FA2 FA2 p0 p1 p2 p3 p4 p5 p6 p7 p8 (p9) 0 a4.b0 a4.b1 a4.b2 a4.b3 a3.b4 a4.b4 FA2 FA2
FA2 FA2 FA2
FA0 FA0 FA0
0 0 0 a0.b0 a0.b1 a1.b0 a2.b0 a1.b1 a2.b1 a1.b2 a2.b2 a1.b3 a2.b3 a0.b2 a0.b3
FA0 FA0 FA0
FA0 FA0 FA0
a3.b0 a3.b1 a3.b2 a3.b3
FA0 FA0 FA0
a2.b4 a1.b4 a0.b4 0 secção positiva
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
José Carlos Alves 95
Síntese do datapath
- operadores aritméticos
• divisão binária
– processo parecido com a multiplicação: shift-subtract – o resultado de uma subtração define a próxima operação
• dependência série entre as várias operações • mais complexo do que a multiplicação
– exemplo (unsigned): 147/11=13, 147%11=4 10010011 1011 1011 00001101 001110 1011 001111 1011 100 -1 < -10-1-1 10 < 1011 ... 111 < 1011 subtrai divisor resto quociente dividendo divisor
FEUP/DEEC, Projecto de Sistemas Digitais, 1999/2000
Síntese do datapath
- operadores aritméticos
• divisão binária (unsigned) - algoritmo
A=0; // fica com o resto, n bits M=Divisor; // n bits
Q=Dividendo; // fica com o quociente, m bits cnt=m; repeat {A,Q} = {A,Q} << 1; A = A - M; if (A<0) Q[0] = 1; else begin Q[0] = 0; A = A + M; end cnt = cnt - 1; until (cnt==0); A Q 001111000011 011110000110 quociente dividendo resto