1 / 20

Desempenho

Desempenho. MO801/MC912. Caminho Crítico. Como ficaria o circuito? Foque no sinal Critical if ((( Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='0') then Des <= Adr; elsif (((Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='1') then

gabe
Download Presentation

Desempenho

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desempenho MO801/MC912

  2. Caminho Crítico • Como ficaria o circuito? Foque no sinal Critical if ((( Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='0') then Des <= Adr; elsif (((Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='1') then Des <= Bdr; elsif (Sar='0' and ..........

  3. Caminho Crítico • Quantos níveis lógicos?

  4. if ((( Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='0') then Des <= Adr; elsif (((Critical='0' and Obi='1' and Sar='1') or CpuG='0') and CpuR='1') then Des <= Bdr; elsif (Sar='0' and .......... if (Critical='0') then if (((Obi='1' and Sar='1') or CpuG='0') and CpuR='0') then Des <= Adr; elsif (((Obi='1' and Sar='1') or CpuG='0' and CpuR='1') then Des <= Bdr; end if; end if; Alternativa de Circuito

  5. Circuito Resultante

  6. Outro Exemplo if (clk'event and clk ='1') then if (non_critical and critical) then out1 <= in1 else out1 <= in2 end if; end if;

  7. Modelo Alternativo signal out_temp : std_logic if (non_critical) out_temp <= in1; else out_temp <= in2; if (clk'event and clk ='1') then if (critical) then out1 <= out_temp; else out1 <= in2; end if; end if; end if;

  8. Original vs Modificado

  9. if (...(siz = 1)...) count <= count + 1; else if (...((siz =2)...) count <= count + 2; else if (...(siz = 3)...) count <= count + 3; else if (...(siz = 0)...) count <= count + 4; Quantos somadores serão gerados pela descrição ao lado? Compartilhamento de Recursos

  10. Alternativa de Código • E com o código abaixo? if (...(siz = 0)...) then count <= count + 4; else if (...) then count <= count + siz;

  11. Quantos somadores? if (select) then sum <= A + B; else sum <= C + D;

  12. E agora? if (sel) then temp1 <= A; temp2 <= B; else temp1 <= C; temp2 <= D; end if; sum <= temp1 + temp2;

  13. Operadores dentro de laços • Quantos somadores? vsum := sum; for i in 0 to 3 loop if (req(i)='1') then vsum <= vsum + offset(i); end if; end loop;

  14. Quantos somadores? • Qual a solução?

  15. E agora? vsum := sum; for i in 0 to 3 loop if (req(i)='1') then offset_1 <= offset(i); end if; end loop; vsum <= vsum + offset_1;

  16. Qual é melhor? • Pense nas células das FPGAs

  17. one :process (clk, a, b, c, en) begin if (clk'event and clk ='1') then if (en = '1') then q2 <= a and b and c; end if; q1 <= a and b and c; end if; end process one; part_one: process (clk, a, b, c, en) begin if (clk'event and clk ='1') then if (en = '1') then q2 <= a and b and c; end if; end if; end process part_one; part_two: process (clk, a, b, c) begin if (clk'event and clk ='1') then q1 <= a and b and c; end if; end process part_two; Qual é melhor?

  18. Duplicação de Componentes • Serve para diminuir o fanout • As ferramentas costumam fazer automaticamente • Para fazer manualmente, em geral, é necessário duplicar o processo onde está o sinal

  19. Tamanho de Projetos • Cada ferramenta possui um tamanho típico de projeto • Projetos gastam recursos como memória do processador, processamento • Os algoritmos nem sempre são lineares • Quebre os arquivos em pedaços menores para ficar na faixa típica • Qual é a faixa típica????

  20. Posicionamento dos Registradores • É melhor ter os registradores nos extremos, preferencialmente nas saídas

More Related