1 / 36
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
3 / 36
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
5 / 36
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
Programa¸c˜ao Funcional
Uma fun¸c˜ao pode ou n˜ao ter parˆametros e um retorno
7 / 36
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
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
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
8 / 36
Arquiteturas
008-bits : Arduino
016-bits : PowerPC
032 bits : Atom, i3, PowerPC, Snapdragon
064 bits : i5, i7, Xeon, Snapdragon
128 bits : GPU (GTX 750 , RX460)
192 bits : GPU (GTX 1060)
256 bits : GPU (GTX 1050, RX480)
XXX bits : Coprocessadores
9 / 36
Instru¸c˜oes
x86
x64
Mips
Cisc
Risc
etc...
10 / 36
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
11 / 36
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
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
Exemplos Conhecidos
Arduino
Raspberry Pi
Beagle Bone
Onion
Banana Pi
etc...
14 / 36
Open Hardware de verdade!
FPGA
15 / 36
1o
Open-Hardware 100% Open-Source
16 / 36
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
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
19 / 36
FPGA!
O que ´e?
Como funciona?
Onde vive?
Funciona mesmo?
Intel entrando no jogo
20 / 36
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
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
23 / 36
Fibonacci - Scala
def fibonacci(x:Int) = {
@tailrec
def calculate(x:Int, acc: Int, next: Int): Int = {
if( x < 2 ){
return acc
}
else{
return calculate(x-1, next, acc + next)
}
}
calculate(x, 1, 1)
}
24 / 36
Fibonacci - Haskell
zipWith fn lista1 lista2 =
if (null lista1) || (null lista2)
then [ ]
else (fn (head lista1) (head lista2)) :
zipWith fn (tail lista1) (tail lista2)
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
fibs !! 10 −− => 55
25 / 36
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
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
Sum´ario
Quem sou eu?
Programa¸c˜ao Funcional
Tipos de Hardware
Open Hardware!
FPGA
Comparativo de Software e Hardware
Exemplo Hardware
28 / 36
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
Visualmente
30 / 36
Como melhorar o processo?
Arquitetura espec´ıfica
ParaleliPrimeiroza¸c˜ao
Escolher bons parˆametros (CUIDADO!)
31 / 36
Solu¸c˜ao em Paraleliza¸c˜ao e Arquitetura
Eberle
NIST curves Curvas gen´ericas
F163 F163
62% Multiplica¸c˜ao 81% Multiplica¸c˜ao
36% com Hardware 20% com Hardware
103.33ns 1,356.11ns
32 / 36
Visualmente
Eficiˆencia de 156,25% em curvas NIST
Eficiˆencia de 125,00% em curvas gen´ericas
33 / 36
Interessou? Ent˜ao m˜aos `a obra!
34 / 36
Muitas d´uvidas?
35 / 36
Obrigado pela aten¸c˜ao.
E-mail: luckas.judocka@gmail.br
Facebook: fb.com/luckas.judocka
Linkedin: br.linkedin.com/in/luckas/
36 / 36

TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team at JavaScript

  • 1.
  • 2.
    Por que oOpen 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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 3 / 36
  • 4.
    Luckas, quem ´evocˆ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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 5 / 36
  • 6.
    Programa¸c˜ao Funcional Trata acomputa¸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
  • 7.
    Programa¸c˜ao Funcional Uma fun¸c˜aopode ou n˜ao ter parˆametros e um retorno 7 / 36
  • 8.
    Programa¸c˜ao Funcional Uma fun¸c˜aopode 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˜aopode 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˜aopode 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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 8 / 36
  • 12.
    Arquiteturas 008-bits : Arduino 016-bits: PowerPC 032 bits : Atom, i3, PowerPC, Snapdragon 064 bits : i5, i7, Xeon, Snapdragon 128 bits : GPU (GTX 750 , RX460) 192 bits : GPU (GTX 1060) 256 bits : GPU (GTX 1050, RX480) XXX bits : Coprocessadores 9 / 36
  • 13.
  • 14.
    Sum´ario Quem sou eu? Programa¸c˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 11 / 36
  • 15.
    O que ´eum 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 compartilhao 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
  • 17.
    Exemplos Conhecidos Arduino Raspberry Pi BeagleBone Onion Banana Pi etc... 14 / 36
  • 18.
    Open Hardware deverdade! FPGA 15 / 36
  • 19.
  • 20.
    Hardware com designmodular 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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 19 / 36
  • 23.
    FPGA! O que ´e? Comofunciona? Onde vive? Funciona mesmo? Intel entrando no jogo 20 / 36
  • 24.
    Por que Hardware? Crit´eriospelo 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 umaboa 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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 23 / 36
  • 27.
    Fibonacci - Scala deffibonacci(x:Int) = { @tailrec def calculate(x:Int, acc: Int, next: Int): Int = { if( x < 2 ){ return acc } else{ return calculate(x-1, next, acc + next) } } calculate(x, 1, 1) } 24 / 36
  • 28.
    Fibonacci - Haskell zipWithfn lista1 lista2 = if (null lista1) || (null lista2) then [ ] else (fn (head lista1) (head lista2)) : zipWith fn (tail lista1) (tail lista2) fibs = 0 : 1 : zipWith (+) fibs (tail fibs) fibs !! 10 −− => 55 25 / 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 architecturefibonacci 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˜aoFuncional Tipos de Hardware Open Hardware! FPGA Comparativo de Software e Hardware Exemplo Hardware 28 / 36
  • 32.
    Opera¸c˜oes mais custosasem ECC Eberle NIST curves Curvas gen´ericas F163 F163 62% Multiplica¸c˜ao 81% Multiplica¸c˜ao 29 / 36
  • 33.
  • 34.
    Como melhorar oprocesso? Arquitetura espec´ıfica ParaleliPrimeiroza¸c˜ao Escolher bons parˆametros (CUIDADO!) 31 / 36
  • 35.
    Solu¸c˜ao em Paraleliza¸c˜aoe Arquitetura Eberle NIST curves Curvas gen´ericas F163 F163 62% Multiplica¸c˜ao 81% Multiplica¸c˜ao 36% com Hardware 20% com Hardware 103.33ns 1,356.11ns 32 / 36
  • 36.
    Visualmente Eficiˆencia de 156,25%em curvas NIST Eficiˆencia de 125,00% em curvas gen´ericas 33 / 36
  • 37.
  • 38.
  • 39.
    Obrigado pela aten¸c˜ao. E-mail:luckas.judocka@gmail.br Facebook: fb.com/luckas.judocka Linkedin: br.linkedin.com/in/luckas/ 36 / 36