O que é um FPGA ou Field-Programmable Gate Array (Arranjo de porta programável em campo)?

Data:

fpga

As FPGAs funcionam de forma diferente das CPUs de computadores, veja como e quais suas aplicações.

Autor | Paulo Marcelo Rayner

 

Imagina uma tarefa complexa com alta demanda de poder computacional. Em um computador comum, os processos executados na máquina são enviados para os núcleos do processador, também conhecido como CPU. Quanto mais processos, mais núcleos são utilizados. 

 

O problema é que há uma concorrência pela disponibilidade de núcleos devido às requisições enviadas simultaneamente comprometendo a performance do equipamento. 

 

Agora imagina um cenário oposto onde os processos são organizados para serem executados em uma ordem específica, onde cada processo acontece em um determinado grupo de circuitos, sem competição de poder computacional e sem sobrecarregar os núcleos do processador. 

 

Bem, este é um FPGA. Além dos próprios microcontroladores, o FPGA também possui o próprio bloco de memória, assim os processos executados pelo FPGA não concorrem com o uso da memória RAM do sistema. Vale ressaltar que o FPGA não é um computador, mas um hardware instalado em um servidor que é especializado em determinadas tarefas. 

 

 

Para fins didáticos, um FPGA pode ser comparado à placa de vídeo dedicada de um computador, ou unidade gráfica de processamento (GPU), que como o próprio nome indica realiza o processamento gráfico do computador. 

 

A GPU realiza o trabalho sem depender dos núcleos da CPU, pois tem seus próprios núcleos otimizados. A vantagem do FPGA é que os algoritmos são desenvolvidos para controlar os processos a nível de hardware. 

 

Dessa forma, cada circuito possui uma instrução específica, entregando uma muito superior ao comparar com a execução fora do FPGA. 

 

Outro característica importante dos FGPAs é a capacidade de paralelização da execução de processos. Como cada processo é realizado em um circuito ou mesmo grupo de circuitos específicos. 

 

Torna se possível replicar esses blocos de processamento permitindo que a mesma tarefa seja executada ao mesmo tempo. 

 

Porque isso é importante? Imagine a seguinte sequência de instruções:

 

Alinhamento das leituras contra o genoma de referência > Ordenação do arquivo alinhado 

 

Tanto um servidor sem FPGA, quanto em uma máquina com FPGA, a sequência irá acontecer nessa mesma ordem. O que vai diferenciar um do outro é o local e o tempo de execução. Agora imagina que ao invés de 1 Alinhamento e 1 Ordenação fossem realizados 2 Alinhamentos e 2 Ordenações. 

 

A máquina sem FPGA vai continuar executando uma tarefa de cada vez. Por outro lado, se o FPGA apresentar 2 circuitos construídos para alinhamento e dois para ordenação, ele vai executar dois alinhamentos e duas ordenações simultaneamente. 

 

Isso significa que o FPGA executa tarefas com maior velocidade e de maneira simultânea.  

 

Um exemplo de FPGA aplicado à genômica computacional é a DRAGEN (ou Dynamic Read Analysis for GENomics.), um hardware acelerado para execução de análises de sequenciamento de DNA e RNA. 

 

Segundo o fabricante da DRAGEN, a Illumina, uma análise de sequenciamento com cobertura de 30 vezes uma análise executada via CPU leva em torno de 10 horas (em um servidor com alta capacidade de processamento, mas sem a presença da DRAGEN). 

 

A mesma análise realizada no mesmo servidor, mas com o trabalho direcionado para a DRAGEN, pode ser executada em até 30 minutos. Para se ter uma ideia sobre o volume de dados, estamos falando de input de arquivos com cerca de 100 GB em uma única análise. 

 

 

Se pensarmos em múltiplas amostras, essa discrepância pode levar a uma diferença de dias no tempo de execução das análises. 

 

E aí já conhecia essa classe de hardwares, ou já utilizou algum FPGA? Deixe seu comentário.   

 

Saiba mais: 

 

FPGAs For Dummies

FPGA Programming for Beginners

Dragen Bio-IT Platform

 

#ciencia #bioinformatica  #edutaugc #dragen

 

Última atualização: Feb. 4, 2022, 12:40 p.m.

Posts Relacionados