Minha IBM Efetue login Inscreva-se
O que é FPGA (Field programmable gate array)?

O que é FPGA (Field programmable gate array)?

Conheça o IBM Storage FlashSystem Inscreva-se para receber atualizações da nuvem
Ilustração com colagem de pictogramas de monitor de computador, servidor, nuvens, pontos

Publicado em: 8 de maio de 2024
Com a colaboração de: Josh Schneider, Ian Smalley

O que é FPGA (Field programmable gate array)?

O que é FPGA (Field programmable gate array)?

FPGA (Field programmable gate array) é um tipo de circuito integrado versátil projetado para ser programável (e muitas vezes reprogramável), usado para atender a diferentes propósitos, principalmente computação de alto desempenho (HPC) e prototipagem.

FPGA se diferencia dos dispositivos lógicos tradicionais que não são programáveis, como o nome em português sugere: matriz de portas programáveis em campo, onde "programável em campo" refere-se à capacidade de um FPGA de ser programado no campo de uso ou após o chip ter sido liberado pelo fabricante. A Xilinx, um fabricante da área de tecnologia, apresentou os FPGAs pela primeira vez em 1985.

Os FPGAs podem ser adaptados para atender a vários casos de uso, incluindo propósitos novos ou experimentais, sem a necessidade de modificar ou alterar fisicamente o hardware.

Essa versatilidade reconfigurável é alcançada por meio de uma matriz de blocos lógicos programáveis (PLBs) fixos e interconexões flexíveis que podem ser configuradas para realizar operações complexas ou servir como portas lógicas simples. Os FPGAs também incluem elementos de memória, que vão desde flip-flops de um bit até matrizes de memória muito densas, para armazenamento digital de dados dentro do dispositivo.

Os FPGAs são muito valorizados por sua combinação de alto desempenho e extrema versatilidade. Eles são particularmente úteis em aplicações que exigem alto desempenho, baixa latência e flexibilidade em tempo real. Por esse motivo, são comumente usados nos segmentos de telecomunicações, automotivo e aeroespacial.

Como ajudar a TI a se autogerenciar com operações autônomas

Veja como os líderes visionários de TI estão usando a IA e a automação para gerar competitividade com operações de TI autônomas.

Conteúdo relacionado Inscreva-se no boletim informativo do Think
FPGA (Field programmable gate array) vs ASICs (Circuitos integrados específicos de aplicações)

FPGA (Field programmable gate array) vs ASICs (Circuitos integrados específicos de aplicações)

Os FPGAs e os ASICs têm finalidades diferentes.

Um ASIC é desenvolvido e otimizado para uma aplicação específica e não pode ser reconfigurado.

Seus elementos do circuito interno (transistores) são dispostos em uma estrutura fixa com uma interconexão (fiação) fixa e imutável entre eles.   

Como um ASIC serve para apenas uma finalidade, incorpora apenas os elementos lógicos necessários para essa finalidade, por exemplo, se um multiplicador de ponto flutuante não for necessário, ele não será incorporado ao design. 

Por outro lado, um FPGA pode ser configurado e reconfigurado para qualquer aplicação possível.

Da mesma forma que um ASIC, seus elementos de circuito interno são organizados em uma estrutura fixa (blocos lógicos programáveis ou PLBs), mas com interconexões reconfiguráveis entre eles. Os elementos lógicos de um FPGA são selecionados para suportar uma ampla variedade de aplicações, mas sofrem com o processo de "usar ou perder" quando elementos lógicos específicos não são usados.

Se um multiplicador de ponto flutuante não for necessário para uma aplicação específica, mas o FPGA já possua um, então esse recurso fica desconectado e representa "espaço desperdiçado" dentro do FPGA.

Embora ambos os dispositivos possam conter centenas de milhões de transistores, um ASIC pode usar esses transistores para oferecer alta eficiência e desempenho em detrimento da flexibilidade. As cobranças iniciais de NRE para desenvolver um ASIC podem ser exorbitantes, enquanto os custos unitários podem ser relativamente baixos. 

Um FPGA usa os transistores para entregar alta eficiência e alto desempenho com muita flexibilidade. 

As cobranças iniciais de NRE para desenvolver um FPGA podem ser extremamente baixas, enquanto os custos unitários são geralmente mais altos. É importante observar que essas não são regras definitivas e inflexíveis. Na questão de desempenho, por exemplo, os FPGAs recentes evoluíram para fornecer taxas de clock de mais de 500 MHz e são geralmente fabricados em geometrias de processo de silício de última geração. Em resumo, a fronteira entre FPGAs e ASICs torna-se cada vez mais indistinta com cada nova geração de FPGA.

Como funcionam as matrizes de portas programáveis em campo?

Como funcionam as matrizes de portas programáveis em campo?

Um FPGA se torna um dispositivo de hardware personalizado ao configurar seus PLBs e interconexões usando uma linguagem de descrição de hardware padrão (HDL), como Verilog ou VHDL.

Funções específicas baseadas em FPGA, bem como as interconexões entre essas funções, são "descritas" em um HDL. A descrição é compilada para formar um arquivo de configuração de FPGA. Usando uma linguagem de descrição de hardware, é possível usar recursos FPGA integrados (matrizes de memória, núcleos PCI, entre outros), bem como criar circuitos lógicos personalizados (somadores, multiplexadores e outras funções específicas da aplicação) a partir de elementos mais primitivos de FPGA.

Em um processo conhecido como síntese, o código HDL é traduzido em uma netlist, uma descrição efetiva das portas lógicas e interconexões necessárias para implementar o código HDL. A netlist é então mapeada para os PLBs e interconexões que formam fisicamente o circuito exclusivo.

Os FPGAs modernos produzidos por fabricantes como Intel e Altera oferecem uma ampla gama de funcionalidades digitais e analógicas, incluindo densidades lógicas notáveis, memória flash, processadores embarcados e blocos de processamento de sinal digital (DSP). Os FPGAs podem ser configurados e reconfigurados modificando as entradas e saídas elétricas, escolhendo quais recursos internos são utilizados e determinando como esses recursos são conectados por meio de recursos de roteamento configuráveis. O resultado final é uma solução de hardware dedicada para resolver um problema específico.

Assim como acontece com o software, o desenvolvimento de projetos complexos de FPGA pode ser simplificado pelo uso de bibliotecas pré-projetadas de várias funções e circuitos digitais, conhecidos como núcleos de propriedade intelectual (PI). Essas bibliotecas estão disponíveis para compra ou aluguel de fornecedores de FPGA e fornecedores terceirizados, que geralmente são especializados no desenvolvimento de diversas funções.

Módulos e componentes de FPGA

Módulos e componentes de FPGA

Além de componentes de circuitos tradicionais, como microcontroladores e conversores, para realizar as funções reconfiguráveis, os dispositivos FPGA modernos usam uma combinação de vários elementos programáveis.

Esses elementos são principalmente blocos lógicos configuráveis (CLBs), interconexões programáveis, roteamento programável, blocos de entrada/saída programáveis (IOBs), memória on-chip e blocos de processamento de sinal digital (DSPs). 

Blocos lógicos configuráveis

Os blocos lógicos configuráveis (CLBs) são o componente principal dos FPGAs. Os CLBs geralmente contêm alguns elementos lógicos primitivos (portas lógicas, pequenas tabelas de consulta, flip-flops, multiplexadores, entre outros).

Dentro do CLB, um flip-flop geralmente serve como principal elemento de armazenamento de dados, embora famílias de dispositivos mais recentes também possam incorporar elementos de memória com capacidade limitada no CLB.

Interconexões programáveis

As ligações construídas a partir de segmentos de fio unidos por chaves eletricamente programáveis fornecem caminhos de roteamento entre os blocos lógicos do FPGA.

As caixas de switch contendo vários switches semicondutores básicos são comumente usadas para estabelecer a interconexão programável de um FPGA. Essas interconexões permitem que as saídas de uma unidade específica ou um de terminal de entrada sejam ligados a qualquer outra célula ou terminal dentro do circuito.

Roteamento programável

Segmentos de fio pré-fabricados são unidos (ou são deixados desconectados) pelas interconexões programáveis para fornecer uma infraestrutura de roteamento totalmente programável dentro de um FPGA.

Os recursos de roteamento são de natureza hierárquica, com uma combinação de fios longos, médios e curtos abrangendo vários “comprimentos” dentro do FPGA.  Essa infraestrutura de roteamento programável, possibilitada pelas interconexões programáveis, permite que os usuários configurem recursos FPGA para a implementação de uma tarefa ou aplicação específica.

Blocos de entrada/saída programáveis (IOBs)

A interface entre um FPGA e outros dispositivos externos é habilitada por blocos de entrada/saída (E/S) (IOBs). Os IOBs são recursos de entrada e saída programáveis configurados para corresponder aos protocolos de quaisquer dispositivos externos aos quais o FPGA se conecta. Todos os sinais que entram ou saem do FPGA passam pelos pinos do dispositivo e pelos IOBs associados.

Memória on-chip

Os primeiros FPGAs usavam apenas flip-flops (FFs) para integrar a memória aos blocos lógicos do FPGA. No entanto, à medida que os recursos do FPGA aumentaram, projetos cada vez mais complexos exigiram memória on-chip dedicada para armazenamento em buffer e reutilização de dados.

Os FPGAs modernos usam grandes matrizes de memória SRAM, pequenas tabelas de consulta (LUTs) e elementos flip-flop tradicionais para fornecer o armazenamento necessário para uma aplicação específica.

Blocos de processamento de sinal digital (DSP)

Nos primeiros FPGAs, os únicos recursos aritméticos disponíveis eram somadores simples, qualquer recurso mais complexo era construído a partir de elementos lógicos mais primitivos. No entanto, à medida que a tecnologia de silício avançou, recursos aritméticos mais complexos foram incorporados aos FPGAs, gerando o moderno bloco FPGA DSP.

Os blocos DSP fornecem recursos altamente otimizados (multiplicadores, acumuladores, dentre outros) para a implementação de funções aritméticas de alto desempenho.

Seu uso elimina a necessidade de implementar essas funções em CLBs de uso geral, liberando-os assim para outros fins. Operações como filtragem digital, convolução, transformadas de Fourier, operações trigonométricas e muitas outras podem aproveitar esses recursos para obter desempenho em tempo real em aplicações que vão desde processamento de radar, formação de feixe, reconhecimento de padrões, entre outros.

Tipos de FPGA

Tipos de FPGA

Os FPGAs estão disponíveis em diversas variedades, que oferecem vários tipos de configurabilidade, consumo de energia, elementos programáveis e memória on-chip.

  • FPGAs baseados em antifusíveis: FPGAs que são configuráveis, mas não reconfiguráveis. Usam um elemento programável único chamado antifusível, que é configurado aplicando uma alta tensão para criar conexões entre fios internos. Um FPGA baseado em antifusível só pode ser configurado uma vez, não pode ser reconfigurado.

  • FPGAs baseados em SRAM: esses tipos de FPGAs são altamente versáteis e podem ser configurados durante a execução. Os FPGAs baseados em SRAM usam memória estática de acesso aleatório (SRAM) para armazenar as instruções de configuração e requerem memória externa para manter o código de configuração.

  • FPGAs baseados em flash: diferentemente dos FPGAs baseados em SRAM, os FPGAs baseados em flash armazenam a configuração em memória flash não volátil, que tem o benefício adicional de ser reprogramável.

  • FPGAs baseados em EEPROM: esse tipo de FPGA é semelhante aos FPGAs baseados em flash, mas utiliza memória somente de leitura programável e apagável eletronicamente (EEPROM) para armazenar a configuração do FPGA. Ambos são não voláteis e reprogramáveis.

  • FPGAs híbridos: FPGAs híbridos oferecem diversos níveis de desempenho, operação com baixo consumo de energia e versatilidade por meio de uma combinação de diferentes elementos programáveis, como blocos lógicos baseados em SRAM ou flash.

  • FPGAs de sistema em chip: os FPGAs de sistema em chip (SoC) integram lógica programável com núcleos de processador dedicados, combinando as funcionalidades de um FPGA e de um SoC. Um único chip de silício que combina vários chips de processamento de sistema, como CPUs, GPUs e RAM em uma única unidade.
Casos de uso de matrizes de portas programáveis em campo

Casos de uso de matrizes de portas programáveis em campo

Versáteis por natureza, os FPGAs são adequados para várias aplicações diferentes.

Aplicações de radar

Os FPGAs são preferidos para processamento de sinais e aquisição de dados devido à sua capacidade de processamento paralelo de alta velocidade.

Veículos aéreos não tripulados (VANTs)

Os algoritmos de processamento de sinal de alta velocidade tornam os FPGAs adequados para realizar tarefas de controle de voo, processamento de sensores e comunicação usadas em aeronaves não tripuladas, como drones.

Sistemas de controle industrial (ICS)

Os sistemas de controle industrial usados para monitorar infraestruturas como redes elétricas, refinarias de petróleo e estações de tratamento de água usam FPGAs, que podem ser facilmente otimizados para atender às necessidades específicas de vários segmentos. Nesses segmentos críticos, os FPGAs podem ser usados para implementar várias automações e funcionalidades de criptografia baseados em hardware para uma cibersegurança eficiente.

Prototipagem ASIC

Embora os FPGAs sejam soluções úteis para tarefas que exigem flexibilidade, os ASICs específicos de tarefas geralmente são mais adequados para operações padronizadas. À medida que novos sistemas são desenvolvidos, os FPGAs são importantes para o desenvolvimento e prototipagem de novos ASICs para tecnologias que estão surgindo.

Data centers

Os FPGAs agregam valor aos data centers por facilitarem a infraestrutura de servidores de banda larga, baixa latência, redes e armazenamento.

Soluções relacionadas

Soluções relacionadas

IBM Storage FlashSystem 5300

Armazenamento de classificação corporativa pronto para crescer com você. O IBM Storage FlashSystem 5300 é uma opção de armazenamento NVMe para empresas de nível inicial que precisam de armazenamento compacto e poderoso. Ele unifica o gerenciamento de dados no núcleo, na nuvem e na borda, e é projetado em um formato revolucionário de 1U. 

Conheça o IBM Storage FlashSystem 5300

IBM PCIe cryptographic coprocessor

Um coprocessador que permite transferir processos criptográficos intensivos computacionalmente do servidor principal. Os coprocessadores criptográficos IBM PCIe são uma família de módulos de segurança de hardware (HSM) de alto desempenho. Esses cartões PCIe programáveis funcionam com alguns servidores IBM Z, x64 e IBM Power para descarregar processos criptográficos computacionais intensivos, como pagamentos seguros ou transações do servidor principal.

Explore o coprocessador criptográfico IBM PCIe

Apache Spark no IBM Power

Um framework de computação em cluster de código aberto otimizado para o processamento de dados extremamente rápido e em grande escala. O Apache Spark foi desenvolvido no AMPLab da UC Berkeley. Ele usa a inteligência profunda para ajudar a reduzir a complexidade da interação com os dados, aumentar a velocidade de processamento e aprimorar aplicações de missão crítica.

Explore o Apache Spark no IBM Power
Recursos

Recursos

O que é armazenamento flash?

Armazenamento flash é uma tecnologia de armazenamento de estado sólido que utiliza chips de memória flash para gravar e armazenar dados, conhecidos como operações de entrada/saída por segundo (IOPS).

O que é infraestrutura de TI?

A infraestrutura de tecnologia da informação, ou infraestrutura de TI, refere-se aos componentes combinados necessários para a operação e o gerenciamento de serviços de TI corporativos e ambientes de TI.

O que é armazenamento de dados?

Armazenamento de dados refere-se a mídias magnéticas, óticas ou mecânicas que gravam e preservam informações digitais para operações contínuas ou futuras.

O que é o Apache Spark?

O Apache Spark é um mecanismo de processamento de dados de código aberto extremamente rápido para aplicações de aprendizado de máquina e IA, respaldado pela maior comunidade de código aberto em big data.

O que é infraestrutura de IA?

IA é um termo que se refere ao hardware e ao software necessários para criar e implementar aplicações e soluções impulsionadas por IA.

O que é criptografia?

A criptografia de dados é uma maneira de traduzir dados de texto simples (não criptografado) para texto cifrado (criptografado).

Dê o próximo passo

Simplifique o gerenciamento de dados e infraestrutura com o IBM Storage FlashSystem, uma solução de armazenamento all-flash de alto desempenho que simplifica a administração e a complexidade operacional em ambientes locais, na nuvem híbrida, virtualizados e conteinerizados.

    Explore o armazenamento do FlashSystem Faça um tour