Neste webinar serão abordadas topologias e aplicações nas quais o uso de FPGA é vantajoso em relação ao uso de processadores. Serão apresentadas comparações de designs equivalentes em FPGA e em software, apontando os cenários em que o uso de cada uma das tecnologias tem melhor performance.
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
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
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
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