SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
IMAGEM DESTAQUE
IMAGEM DESTAQUE
Agenda
AGENDA
● FPGAs;
● Processadores;
● Aplicação;
● Conclusões;
“Arranjos de portas lógicas programáveis em campo”
OBS: Campo não significa campo elétrico, mas sim no sentido de domínio
da aplicação, por ser reconfigurável.
O QUE É UM FPGA?
FPGA - Field Programmable Gate Array
“Arranjos de portas lógicas programáveis em campo”
OBS: Campo não significa campo elétrico, mas sim no sentido de domínio
da aplicação, por ser reconfigurável.
O QUE É UM FPGA?
FPGA - Field Programmable Gate Array
Módulo de lógica ou bloco configurável;
Principais componentes:
Elemento de roteamento;
Memória: armazenamento do bitstream
Circuitos especiais (DSPs, RAM, PLLs, etc)
O QUE É UM FPGA?
Módulo de lógica ou bloco configurável;
Principais componentes:
Elemento de roteamento;
Memória: armazenamento do bitstream
Circuitos especiais (DSPs, RAM, PLLs, etc)
O QUE É UM FPGA?
Módulo de lógica ou bloco configurável;
Principais componentes:
Elemento de roteamento;
Memória: armazenamento do bitstream
Circuitos especiais (DSPs, RAM, PLLs, etc)
O QUE É UM FPGA?
Módulo de lógica ou bloco configurável;
Principais componentes:
Elemento de roteamento;
Memória: armazenamento do bitstream
Circuitos especiais (DSPs, RAM, PLLs, etc)
O QUE É UM FPGA?
Os FPGAs mais
comercializados atualmente
podem ter
aproximadamente entre 50k
a 300k células lógicas.
O QUE É UM FPGA?
APLICAÇÕES DE UM FPGA
ASIC
TELECOM
DATA CENTERS
INSTRUMENTAÇÃO
ÁREA MÉDICA
INDUSTRIA MILITAR E
AEROESPACIAL
ROBÓTICA
INDUSTRIA
AUTOMOTIVA
FPGA - Field Programmable Gate
Array
Determinismo temporal
Upgrades de HW
Processamento em paralelo
Baixa Latência
APLICAÇÕES DE UM FPGA
Gestão/ qtde de profissionais
capacitados
Avaliação de quando utilizar
Complexidade dos projetos
evolui rápido
Investimento $
PRINCIPAIS DESVANTAGENS
Processadores
Circuitos integrados capazes de realizar tarefas genéricas de
computação e comunicação com periféricos em uma ordem lógica
descrita por um conjunto de instruções armazenados em uma memória.
Recursos pré definidos
Não é dedicado
Processadores
Decode
Fetch Execute
Decode
Execute
Fetch
Lê instrução da memória
Atualiza o registrador PC
Identifica os recursos
necessários para executar
a operação
Executa a operação.
Pode ser composto de sub
estágios.
PIPELINING
Processadores
LDR R0, [0x1000] ; load “a” from memory into R0
LDR R1, [0x1004] ; load “b” from memory into R1
SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2
MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2
STR R2, [0x1008] ; Store result in memory
Fetch Decode Execute A
LDR R0,[0x1000]
LDR R1,[0x1004] LDR R0,[0x1000]
SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
Execute B
LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008]
STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008]
STR R2, [0x1008]
PIPELINING
Time
Processadores
LDR R0, [0x1000] ; load “a” from memory into R0
LDR R1, [0x1004] ; load “b” from memory into R1
SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2
MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2
STR R2, [0x1008] ; Store result in memory
Fetch Decode Execute A
LDR R0,[0x1000]
LDR R1,[0x1004] LDR R0,[0x1000]
SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
Execute B
LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008]
STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008]
STR R2, [0x1008]
PIPELINING
Time
Processadores
LDR R0, [0x1000] ; load “a” from memory into R0
LDR R1, [0x1004] ; load “b” from memory into R1
SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2
MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2
STR R2, [0x1008] ; Store result in memory
Fetch Decode Execute A
LDR R0,[0x1000]
LDR R1,[0x1004] LDR R0,[0x1000]
SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
Execute B
LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008]
STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008]
STR R2, [0x1008]
PIPELINING
Time
Processadores
LDR R0, [0x1000] ; load “a” from memory into R0
LDR R1, [0x1004] ; load “b” from memory into R1
SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2
MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2
STR R2, [0x1008] ; Store result in memory
Fetch Decode Execute A
LDR R0,[0x1000]
LDR R1,[0x1004] LDR R0,[0x1000]
SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
Execute B
LDR R0,[0x1000]
MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004]
MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008]
STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008] MUL R2, R2, R2
STR R2, [0x1008]
STR R2, [0x1008]
PIPELINING
Time
APLICAÇÃO
Busca por maior valor inteiro, 8 entradas
Maximum
Stage 1
Stage 2
Stage 3
APLICAÇÃO
Busca por maior valor inteiro, 8 entradas
Maximum
Stage 1
Stage 2
Stage 3
APLICAÇÃO
Busca por maior valor inteiro, 8 entradas
Maximum
Stage 1
Stage 2
Stage 3
APLICAÇÃO
Busca por maior valor inteiro, 8 entradas
Maximum
Stage 1
Stage 2
Stage 3
Entidade
APLICAÇÃO
Busca por maior valor inteiro, 8 entradas
Maximum
Stage 1
Stage 2
Stage 3
Arquitetura
APLICAÇÃO
STAGE_1 STAGE_2 STAGE_3
RTL Schematic
APLICAÇÃO
Simulação
APLICAÇÃO
Simulação
APLICAÇÃO
Simulação
APLICAÇÃO
Simulação
Pipeline dedicada implementada em FPGA executando à
100Mhz.
FPGA MCU
Maximum
Stage 1
Firmware executando em ARM Arm® Cortex®-R5
800Mhz com SIMD capaz de executar 8 comparações de
pares por ciclo de clock.
APLICAÇÃO
FPGA vs MCU
int findMax(int arr[], int size) {
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
Stage 2
Stage 3
APLICAÇÃO
Conclusões
Números de instruções (I)
Latência (L)
Throughput
log2(N)
10xI [ns]
100 [Msps]
(N/8)+2
1.25xI [ns]
(1/L) [Msps]
FPGA MCU
APLICAÇÃO
Conclusões
Números de instruções (I)
Latência (L)
Throughput
log2(N)
10xI [ns]
100 [Msps]
(N/8)+2
1.25xI [ns]
(1/L) [Msps]
FPGA MCU
CONCLUSÕES:
● A complexidade aumenta conforme N aumenta
● Para N baixo, o processador tende a ter melhor
desempenho;
● Para N alto, a FPGA tende a ter melhor desempenho.
Timing
REGISTRO DA ENTRADA DO STAGE 2
REGISTRO DA ENTRADA DO STAGE2
DELAY DE PROPAGAÇÃO
LATÊNCIA CLOCK FREQ PROPAGAÇÃO
Timing
8x100Mhz
8x25Mhz
Timing
8x100Mhz
8x25Mhz
Nem todas as soluções de sistemas
embarcados passam pela implementação
em FPGA.
Processamento paralelo, determinismo
temporal e baixa latência são
características das aplicações onde a
FPGA é recomendada.
QUANDO UTILIZAR UM FPGA?
FAÇAM PARTE DA NOSSA REDE…
amandacomaz
amanda.comaz@gmail.com
zrmagal
zr.magal@gmail.com
www.embarcados.com.br
linkedin.com/embarcados
@portalembarcados
youtube/Embarcados TV
OBRIGADO!

Mais conteúdo relacionado

Semelhante a FPGA vs Processador busca máximo 8 entradas

Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Apresentação #TDC2013 - Aplicações Profissionais com Radiuino
Apresentação #TDC2013 - Aplicações Profissionais com RadiuinoApresentação #TDC2013 - Aplicações Profissionais com Radiuino
Apresentação #TDC2013 - Aplicações Profissionais com RadiuinoOmar Branquinho
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1andrademanoel
 
01 introdução e revisão
01   introdução e revisão01   introdução e revisão
01 introdução e revisãoconfidencial
 
Automação de Processos Industriais
Automação de Processos IndustriaisAutomação de Processos Industriais
Automação de Processos IndustriaisRicardo Akerman
 
-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.pptJosReginaldo6
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyPedro Raphael
 
Fmp rot avancado-nac04
Fmp rot avancado-nac04Fmp rot avancado-nac04
Fmp rot avancado-nac04paula_senna
 
Guia centrais impacta_portugues_05_13_site
Guia centrais impacta_portugues_05_13_siteGuia centrais impacta_portugues_05_13_site
Guia centrais impacta_portugues_05_13_sitezeu1507
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CEmbarcados
 
Aula09 frame relay - pratica
Aula09   frame relay - praticaAula09   frame relay - pratica
Aula09 frame relay - praticaCarlos Veiga
 

Semelhante a FPGA vs Processador busca máximo 8 entradas (20)

Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Apresentação #TDC2013 - Aplicações Profissionais com Radiuino
Apresentação #TDC2013 - Aplicações Profissionais com RadiuinoApresentação #TDC2013 - Aplicações Profissionais com Radiuino
Apresentação #TDC2013 - Aplicações Profissionais com Radiuino
 
Pic slides
Pic slidesPic slides
Pic slides
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
Pbl assembly avr como atmega328 p - rev.1
Pbl   assembly avr como atmega328 p - rev.1Pbl   assembly avr como atmega328 p - rev.1
Pbl assembly avr como atmega328 p - rev.1
 
assembly.pdf
assembly.pdfassembly.pdf
assembly.pdf
 
01 introdução e revisão
01   introdução e revisão01   introdução e revisão
01 introdução e revisão
 
Automação de Processos Industriais
Automação de Processos IndustriaisAutomação de Processos Industriais
Automação de Processos Industriais
 
Roteiro exp9
Roteiro exp9Roteiro exp9
Roteiro exp9
 
-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt-Aula 4 - Programacao do 8085.ppt
-Aula 4 - Programacao do 8085.ppt
 
Cartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - AssemblyCartilha Micro-Controlador 80c51 - Assembly
Cartilha Micro-Controlador 80c51 - Assembly
 
Relatório final
Relatório finalRelatório final
Relatório final
 
Fmp rot avancado-nac04
Fmp rot avancado-nac04Fmp rot avancado-nac04
Fmp rot avancado-nac04
 
1763 sg001 -pt-p
1763 sg001 -pt-p1763 sg001 -pt-p
1763 sg001 -pt-p
 
Pro2 01p
Pro2 01pPro2 01p
Pro2 01p
 
Stoe 01 p
Stoe 01 pStoe 01 p
Stoe 01 p
 
2 gravação
2 gravação2 gravação
2 gravação
 
Guia centrais impacta_portugues_05_13_site
Guia centrais impacta_portugues_05_13_siteGuia centrais impacta_portugues_05_13_site
Guia centrais impacta_portugues_05_13_site
 
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3CWebinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
Webinar Gravado: Um Estudo sobre a I2C e o Futuro com a I3C
 
Aula09 frame relay - pratica
Aula09   frame relay - praticaAula09   frame relay - pratica
Aula09 frame relay - pratica
 

Mais de Embarcados

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoEmbarcados
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosEmbarcados
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCEmbarcados
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraEmbarcados
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectEmbarcados
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalEmbarcados
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Embarcados
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Embarcados
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GEmbarcados
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsEmbarcados
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Embarcados
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores MurataEmbarcados
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaEmbarcados
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Embarcados
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezEmbarcados
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Embarcados
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroEmbarcados
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Embarcados
 
Webinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboWebinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboEmbarcados
 
Webinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoTWebinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoTEmbarcados
 

Mais de Embarcados (20)

Webinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásicoWebinar: Controle de motores BLDC e de indução trifásico
Webinar: Controle de motores BLDC e de indução trifásico
 
Webinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes PassivosWebinar: Especificação de Componentes Passivos
Webinar: Especificação de Componentes Passivos
 
Webinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DCWebinar: Projeto de hardware utilizando Conversores DC/DC
Webinar: Projeto de hardware utilizando Conversores DC/DC
 
Webinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP seguraWebinar: Comunicação TCP/IP segura
Webinar: Comunicação TCP/IP segura
 
Webinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto ProjectWebinar: Desvendando o Yocto Project
Webinar: Desvendando o Yocto Project
 
Webinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissionalWebinar: Bancada de eletrônica profissional
Webinar: Bancada de eletrônica profissional
 
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
Webinar: Como projetar sensores de baixo consumo utilizando microcontroladore...
 
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
Webinar: Desvendando o seguidor de linha: sensores, montagem e programação co...
 
Webinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2GWebinar: Microcontroladores Infineon TRAVEO T2G
Webinar: Microcontroladores Infineon TRAVEO T2G
 
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAsWebinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
Webinar: Introdução à Reconfiguração dinâmica parcial em FPGAs
 
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
Webinar: Microprocessadores 32 bits, suas principais aplicações no mercado br...
 
Cristais e Ressonadores Murata
Cristais e Ressonadores MurataCristais e Ressonadores Murata
Cristais e Ressonadores Murata
 
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potênciaWebinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
Webinar: Silicon Carbide (SiC): A tecnologia do futuro para projetos de potência
 
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
Webinar: Por que dominar sistema operacional Linux deveria ser a sua prioridade?
 
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassezWebinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
Webinar: Estratégias para comprar componentes eletrônicos em tempos de escassez
 
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
Webinar: ChatGPT - A nova ferramenta de IA pode ameaçar ou turbinar a sua car...
 
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiroWebinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
Webinar: Power over Ethernet (PoE) e suas aplicações no mercado brasileiro
 
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
Webinar: Utilizando o Yocto Project para automatizar o desenvolvimento em Lin...
 
Webinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de caboWebinar: A revolução da Ethernet a um par de cabo
Webinar: A revolução da Ethernet a um par de cabo
 
Webinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoTWebinar: Desvendando as camadas de IoT
Webinar: Desvendando as camadas de IoT
 

FPGA vs Processador busca máximo 8 entradas

  • 2.
  • 4. Agenda AGENDA ● FPGAs; ● Processadores; ● Aplicação; ● Conclusões;
  • 5. “Arranjos de portas lógicas programáveis em campo” OBS: Campo não significa campo elétrico, mas sim no sentido de domínio da aplicação, por ser reconfigurável. O QUE É UM FPGA? FPGA - Field Programmable Gate Array
  • 6. “Arranjos de portas lógicas programáveis em campo” OBS: Campo não significa campo elétrico, mas sim no sentido de domínio da aplicação, por ser reconfigurável. O QUE É UM FPGA? FPGA - Field Programmable Gate Array
  • 7. Módulo de lógica ou bloco configurável; Principais componentes: Elemento de roteamento; Memória: armazenamento do bitstream Circuitos especiais (DSPs, RAM, PLLs, etc) O QUE É UM FPGA?
  • 8. Módulo de lógica ou bloco configurável; Principais componentes: Elemento de roteamento; Memória: armazenamento do bitstream Circuitos especiais (DSPs, RAM, PLLs, etc) O QUE É UM FPGA?
  • 9. Módulo de lógica ou bloco configurável; Principais componentes: Elemento de roteamento; Memória: armazenamento do bitstream Circuitos especiais (DSPs, RAM, PLLs, etc) O QUE É UM FPGA?
  • 10. Módulo de lógica ou bloco configurável; Principais componentes: Elemento de roteamento; Memória: armazenamento do bitstream Circuitos especiais (DSPs, RAM, PLLs, etc) O QUE É UM FPGA?
  • 11. Os FPGAs mais comercializados atualmente podem ter aproximadamente entre 50k a 300k células lógicas. O QUE É UM FPGA?
  • 12. APLICAÇÕES DE UM FPGA ASIC TELECOM DATA CENTERS INSTRUMENTAÇÃO ÁREA MÉDICA INDUSTRIA MILITAR E AEROESPACIAL ROBÓTICA INDUSTRIA AUTOMOTIVA
  • 13. FPGA - Field Programmable Gate Array Determinismo temporal Upgrades de HW Processamento em paralelo Baixa Latência APLICAÇÕES DE UM FPGA
  • 14. Gestão/ qtde de profissionais capacitados Avaliação de quando utilizar Complexidade dos projetos evolui rápido Investimento $ PRINCIPAIS DESVANTAGENS
  • 15. Processadores Circuitos integrados capazes de realizar tarefas genéricas de computação e comunicação com periféricos em uma ordem lógica descrita por um conjunto de instruções armazenados em uma memória. Recursos pré definidos Não é dedicado
  • 16. Processadores Decode Fetch Execute Decode Execute Fetch Lê instrução da memória Atualiza o registrador PC Identifica os recursos necessários para executar a operação Executa a operação. Pode ser composto de sub estágios. PIPELINING
  • 17. Processadores LDR R0, [0x1000] ; load “a” from memory into R0 LDR R1, [0x1004] ; load “b” from memory into R1 SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2 MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2 STR R2, [0x1008] ; Store result in memory Fetch Decode Execute A LDR R0,[0x1000] LDR R1,[0x1004] LDR R0,[0x1000] SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] Execute B LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] STR R2, [0x1008] PIPELINING Time
  • 18. Processadores LDR R0, [0x1000] ; load “a” from memory into R0 LDR R1, [0x1004] ; load “b” from memory into R1 SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2 MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2 STR R2, [0x1008] ; Store result in memory Fetch Decode Execute A LDR R0,[0x1000] LDR R1,[0x1004] LDR R0,[0x1000] SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] Execute B LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] STR R2, [0x1008] PIPELINING Time
  • 19. Processadores LDR R0, [0x1000] ; load “a” from memory into R0 LDR R1, [0x1004] ; load “b” from memory into R1 SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2 MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2 STR R2, [0x1008] ; Store result in memory Fetch Decode Execute A LDR R0,[0x1000] LDR R1,[0x1004] LDR R0,[0x1000] SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] Execute B LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] STR R2, [0x1008] PIPELINING Time
  • 20. Processadores LDR R0, [0x1000] ; load “a” from memory into R0 LDR R1, [0x1004] ; load “b” from memory into R1 SUB R2, R0, R1 ; Compute “c=a-b” and stores c in R2 MUL R2, R2, R2 ; Compute “d=c*c” and stores c in R2 STR R2, [0x1008] ; Store result in memory Fetch Decode Execute A LDR R0,[0x1000] LDR R1,[0x1004] LDR R0,[0x1000] SUB R2, R0, R1 LDR R1,[0x1004] LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] Execute B LDR R0,[0x1000] MUL R2, R2, R2 SUB R2, R0, R1 LDR R1,[0x1004] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] STR R2, [0x1008] MUL R2, R2, R2 SUB R2, R0, R1 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] MUL R2, R2, R2 STR R2, [0x1008] STR R2, [0x1008] PIPELINING Time
  • 21. APLICAÇÃO Busca por maior valor inteiro, 8 entradas Maximum Stage 1 Stage 2 Stage 3
  • 22. APLICAÇÃO Busca por maior valor inteiro, 8 entradas Maximum Stage 1 Stage 2 Stage 3
  • 23. APLICAÇÃO Busca por maior valor inteiro, 8 entradas Maximum Stage 1 Stage 2 Stage 3
  • 24. APLICAÇÃO Busca por maior valor inteiro, 8 entradas Maximum Stage 1 Stage 2 Stage 3 Entidade
  • 25. APLICAÇÃO Busca por maior valor inteiro, 8 entradas Maximum Stage 1 Stage 2 Stage 3 Arquitetura
  • 31. Pipeline dedicada implementada em FPGA executando à 100Mhz. FPGA MCU Maximum Stage 1 Firmware executando em ARM Arm® Cortex®-R5 800Mhz com SIMD capaz de executar 8 comparações de pares por ciclo de clock. APLICAÇÃO FPGA vs MCU int findMax(int arr[], int size) { int max = arr[0]; for (int i = 1; i < size; i++) { if (arr[i] > max) { max = arr[i]; } } return max; } Stage 2 Stage 3
  • 32. APLICAÇÃO Conclusões Números de instruções (I) Latência (L) Throughput log2(N) 10xI [ns] 100 [Msps] (N/8)+2 1.25xI [ns] (1/L) [Msps] FPGA MCU
  • 33. APLICAÇÃO Conclusões Números de instruções (I) Latência (L) Throughput log2(N) 10xI [ns] 100 [Msps] (N/8)+2 1.25xI [ns] (1/L) [Msps] FPGA MCU CONCLUSÕES: ● A complexidade aumenta conforme N aumenta ● Para N baixo, o processador tende a ter melhor desempenho; ● Para N alto, a FPGA tende a ter melhor desempenho.
  • 34. Timing REGISTRO DA ENTRADA DO STAGE 2 REGISTRO DA ENTRADA DO STAGE2 DELAY DE PROPAGAÇÃO LATÊNCIA CLOCK FREQ PROPAGAÇÃO
  • 37. Nem todas as soluções de sistemas embarcados passam pela implementação em FPGA. Processamento paralelo, determinismo temporal e baixa latência são características das aplicações onde a FPGA é recomendada. QUANDO UTILIZAR UM FPGA?
  • 38. FAÇAM PARTE DA NOSSA REDE… amandacomaz amanda.comaz@gmail.com zrmagal zr.magal@gmail.com