1. O documento discute programação funcional e hardware aberto.
2. FPGA é apresentado como um exemplo de hardware aberto que pode implementar programação funcional.
3. Um exemplo de Fibonacci é mostrado em Scala, Haskell e VHDL para ilustrar como a mesma lógica pode ser implementada em software e hardware.
2. Por que o Open Hardware
pode ser considerado uma
plataforma de programa¸c˜ao
funcional? Isso Funciona?
Luckas A. Farias
luckas.farias@gmail.com
Engenharia da Computa¸c˜ao - Escola Polit´ecnica
USP, Universidade de S˜ao Paulo
04 de Maio de 2017
3. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
3 / 36
4. Luckas, quem ´e vocˆe?
Formado em Ciˆencia da Computa¸c˜ao
Mestrando em Engenharia da Computa¸c˜ao
Escoteiro
Membro IEEE
Young Professionals
Mentor para ramos estudantis
Fot´ografo
Geek em eventos:
Latinoware
CPBR
BSideSP
STEP
Hackathon
CryptoRave
Engenheiro de cora¸c˜ao
4 / 36
5. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
5 / 36
6. Programa¸c˜ao Funcional
Trata a computa¸c˜ao como avalia¸c˜ao de fun¸c˜oes matem´aticas e que
evita estados / dados mut´aveis.
Ela enfatiza a aplica¸c˜ao de fun¸c˜oes, em contraste da programa¸c˜ao
imperativa, que enfatiza mudan¸cas no estado do programa.
6 / 36
8. Programa¸c˜ao Funcional
Uma fun¸c˜ao pode ou n˜ao ter parˆametros e um retorno
Descreve como a fun¸c˜ao ser´a avaliada em termos de outras
7 / 36
9. Programa¸c˜ao Funcional
Uma fun¸c˜ao pode ou n˜ao ter parˆametros e um retorno
Descreve como a fun¸c˜ao ser´a avaliada em termos de outras
Por exemplo: f (x) = x2 + 2 (exponencia¸c˜ao e adi¸c˜ao)
7 / 36
10. Programa¸c˜ao Funcional
Uma fun¸c˜ao pode ou n˜ao ter parˆametros e um retorno
Descreve como a fun¸c˜ao ser´a avaliada em termos de outras
Por exemplo: f (x) = x2 + 2 (exponencia¸c˜ao e adi¸c˜ao)
Oferecem fun¸c˜oes b´asicas que n˜ao requerem outras defini¸c˜oes.
7 / 36
11. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
8 / 36
14. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
11 / 36
15. O que ´e um Open Hardware?
´E projetado/oferecido datal como um software de c´odigo livre.
O termo foi primeiramente empregado para refletir o lan¸camento
irrestrito de informa¸c˜ao sobre o projeto de hardware, tal como um
diagrama, estrutura de produtos e dados de layout.
Com o crescimento dos dispositivos l´ogicos reprogram´aveis, o
compartilhamento dos esquemas l´ogicos tamb´em se espalhou.
12 / 36
16. N´ucleo IP
Se compartilha o c´odigo da linguagem de descri¸c˜ao de hardware.
Suas descri¸c˜oes popularmente s˜ao usadas para configurar um
system-on-a-chip ou atrav´es de FPGA ou diretamente via ASIC.
Estes m´odulos, quando distribu´ıdos, s˜ao chamados de n´ucleos
semicondutores de propriedade intelectual ou N´ucleos IP.
13 / 36
20. Hardware com design modular
A implementa¸c˜ao de uma assinatura feita totalmente em hardware
deve considerar que a ´unica entrada no dispositivo ´e a mensagem
a ser assinada e a ´unica sa´ıda ´e a assinatura desta mensagem.
17 / 36
21. Recursos do Hardware
Gate: O Gate mais comum possui 2 entradas e 1 sa´ıda.
FPGA: Consiste em um grande n´umero de blocos l´ogicos que
normalmente possui mais do que uma simples conex˜ao interna.
Nesse circuito as programa¸c˜oes s˜ao reverss´ıveis e alter´aveis.
Pipelining: ´e uma vantagem do hardware que permite que se
execute mais de uma opera¸c˜ao por momento, criando
opera¸c˜oes inteiramente separadas.
18 / 36
22. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
19 / 36
23. FPGA!
O que ´e?
Como funciona?
Onde vive?
Funciona mesmo?
Intel entrando no jogo
20 / 36
24. Por que Hardware?
Crit´erios pelo qual se opta pelo Hardware:
Custo ´e sempre um fator significante
Throughput: Qual a velocidade desejada?
Flexibilidade: Precisa ter a habilidade de comportar mais
funcionalidades?
Consumo de Energia: ´E ou n˜ao uma preocupa¸c˜ao?
21 / 36
25. Como fazer uma boa escolha
Ap´os estas considera¸c˜oes, considere os itens determinantes para a
escolha entre dispositivos de baixa ou alta potˆencia:
22 / 36
26. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
23 / 36
29. Modulo Fibonacci - VHDL
entity fibinacci is
generic (n : integer := 16);
port(
clk, rst : in bit;
fibo series: out integer range 0 to 2**n-1
);
end fibonacci;
26 / 36
30. Fibonacci - VHDL
architecture fibonacci of fibonacci is
signal a,b,c : integer range 0 to 2**n-1;
begin
process(clk,rst)
begin
if(rst = ’1’) then
b <= 1;
c <= 0;
elsif(clk’event and clik=’1’) then
c <= b;
b <= a;
end if;
a <= b + c;
end process;
fibo series <= c;
end fibonacci;
27 / 36
31. Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
28 / 36
32. Opera¸c˜oes mais custosas em ECC
Eberle
NIST curves Curvas gen´ericas
F163 F163
62% Multiplica¸c˜ao 81% Multiplica¸c˜ao
29 / 36