A vez do FPGA

abr, 2015

Edição 110 – Março de 2015
Espaço IEEE
Por Bruno Albertini*
 

O FPGA (Field Programmable Gate Array), esquecido nas últimas três décadas nos laboratórios das universidades e nas bancadas de projetistas de hardware, vem ganhando a atenção da mídia e dos fabricantes por um motivo simples: sua utilização em produção está se tornando viável economicamente.

Tradicionalmente, o fluxo de projeto de um HW especializado segue um padrão definido de especificação e solução do problema, seguido da prototipação em um dispositivo programável e os respectivos testes funcionais e temporizado, culminando com a fabricação do silício, um processo especializado por si só.

A complexidade de se ter um ASIC (Application Specific Integrated Circuit) é suficiente para desencorajar até mesmo os grandes fabricantes. Um ciclo normal de fabricação, considerando que o protótipo em dispositivo programável já está testado, leva em torno de um ano e meio para a primeira pastilha. Mesmo sem mencionar valores, fica claro que os custos litográficos associados à produção dos ASICs tornam o projeto mais caro em relação ao projeto para FPGA, principalmente se levarmos em consideração os custos não recorrentes, como a máscara e possíveis correções. Os FPGAs surgiram na década de 1980 como uma resposta para o tempo de projeto e os custos não recorrentes embutidos em um projeto ASIC. Por que os fabricantes não usam FPGA diretamente em produtos acabados desde então? A resposta está no desempenho: um projeto em FPGA era, em 2007, cerca de quatro vezes mais lento e ocupava 35 vezes mais área que o mesmo projeto em ASIC.

A desvantagem de desempenho, apesar de menor, permanece. Contudo, os fabricantes de FPGAs não ficaram parados. Houve um investimento maciço nos softwares de prototipação para FPGAs, tornando possível que um projetista recém-formado seja capaz de projetar um HW funcional. Estes softwares são mais baratos que as contrapartes para desenvolvimento ASIC e lidam com roteamento, alocação de área e temporização quase sem intervenção do projetista, além de possuírem uma curva de aprendizado mais suave. De fato, já é possível desenvolver um projeto de HW em linguagens de alto nível, como C/C++ (e suas variantes para HW, como SystemC), minimizando o estigma de “complicado” associado às linguagens de descrição de HW como VHDL e Verilog. Esta abordagem popularizou-­se de tal forma que foi criada uma nomenclatura específica para o desenvolvimento de hardware em alto nível, chamado de ESL (Electronic System Level). Nesta abordagem, o problema a ser solucionado é materializado em um SW, que pode ser testado como um projeto de HW, não só funcionalmente, mas também incluindo temporização e, em alguns casos, o consumo de energia estimado. A utilização de SystemC, por exemplo, torna muito mais fácil o particionamento HW-­SW, em que se decide qual parte da solução será executada em SW por um processador e qual se tornará um HW especializado.

Nesta nova abordagem, o FPGA possui uma vantagem sobre o ASIC, que pode mudar o cenário do desenvolvimento de HW nos próximos anos. Há uma década atrás, após o particionamento do problema, a abordagem mais comum era dividir o projeto em duas linhas de desenvolvimento: o HW e o SW (também conhecido como firmware), com equipes e abordagens diferentes. O projeto final acabava em um processador de prateleira para facilitar o desenvolvimento do SW, e um HW especializado na forma de um coprocessador ou unidade auxiliar (ASIC ou não), ligados em uma placa feita para este propósito.

Atentos a esse fluxo de desenvolvimento, os fabricantes de FPGA lançaram modelos híbridos focados no desenvolvimento de SoCs (System-on-Chip). Esta configuração de FPGA possui, na mesma pastilha, um processador (normalmente uma variação de ARM), elementos de apoio (e.g. memórias SDRAM) e um FPGA, normalmente conectado ao processador por um barramento (e.g. PCIe), facilitando a implementação de uma solução baseada no modelo ESL. Com o processador fixo (ao contrário de se utilizar das células lógicas do FPGA para implementar um processador soft-core), ganha-se todo o ferramental de compilação do SW e comunicação com o FPGA, disponibilizado pelo fabricante. O desempenho do processador, neste caso, é o mesmo que um processador implementado na mesma tecnologia de fabricação, equiparando-se a um processador comum.

Outros dois efeitos marcantes na história recente dos FPGAs são o amadurecimento e a reconfigurabilidade. FPGAs antigos, com poucas células lógicas e utilizando tecnologia de 65 nm, possuem projeto já consolidado e custo de produção baixo. Hoje é possível encontrar no mercado FPGAs com 10 K, elementos lógicos por USD 10, permitindo que startups, amadores e entusiastas tenham acesso a estes dispositivos e, consequentemente, às metodologias de desenvolvimento citadas anteriormente. Um dispositivo com estas características é suficiente para um processador dedicado e algumas unidades lógicas ou aritméticas especializadas. Para volumes pequenos de produção, é possível embarcar um FPGA no produto final.

Já a reconfiguração, uma característica dos FPGAs contemporâneos, permite que o HW seja reconfigurado sem que seja necessário desligá-lo. Mesmo com FPGAs sem esta característica, os projetistas exploravam a capacidade de modificar o HW em campo, seja para corrigir um defeito pós-venda, seja para adicionar novas funcionalidades. Com os FPGAs reconfiguráveis, é possível ter um HW genérico, que pode ser configurado de acordo com a necessidade momentânea do produto. Um dispositivo embarcado poderia ter um acelerador de um algoritmo criptográfico no momento de cifragem de uma mensagem, que logo em seguida se tornaria um filtro de ruído digital, por exemplo. Esta característica tem sido explorada para maximizar o consumo de energia em dispositivos embarcados e há quem afirme que a internet das coisas depende deste tipo de característica.

No Brasil, as universidades já se adaptaram ou estão se adaptando para introduzir o FPGA nos cursos de engenharia de eletricidade. Os egressos das grandes universidades já são capazes de projetar circuitos digitais com FPGA, utilizando uma linguagem de descrição como VHDL. Em complementação, o governo oferece ainda o programa CI-Brasil, cujo objetivo é formar projetistas de HW que dominem toda a cadeia, da prototipação até o silício.

Sendo ou não a hora dos dispositivos programáveis, é notável a crescente adoção de FPGAs em produtos finais. A qualidade, as opções disponíveis e o preço estão seguindo o crescimento do mercado, diminuindo a distância entre um projeto em um dispositivo programável e um dedicado. A tecnologia sub 20 nm tem se mostrada onerosa na produção e no desempenho (corrente de fuga), representando uma barreira para os ASICs e aumentando a competitividade dos FPGAs. É fato que os ASICs dificilmente serão vencidos em desempenho, mas a distância tem claramente diminuído e, para volumes de produção baixos, o FPGA já pode ser encontrado em produção, especialmente nos dispositivos embarcados que primam pelo consumo, como em IoT e smartgrids, e nos dispositivos altamente especializados, como computadores de telecomunicações e controladores de veículos elétricos.

Referências

[1] KUON, I.; MEMBER, S.; ROSE, J.; MEMBER, S. (2007). Measuring the Gap Between FPGAs and ASICs, 26(2), p. 203-215.

[2] SystemC. Disponível em: <http://www.systemc.org/home/>

[3] Luke de Miller, IoT will depend on FPGAs. (2014). Disponível em: <https://www.semiwiki.com/forum/content/3721-iot-will-depend-fpgas.html>

[4] Programa CI-Brasil de formação de projetistas. Disponível em: <http://ci-brasil.gov.br/>

[5] End Market FPGA Application. Disponível em: <http://www.altera.com/end-markets/end-index.html>


*Bruno de Carvalho Albertini é engenheiro de computação, com mestrado e doutorado em Ciência da Computação. Atualmente, é professor doutor no Departamento de Engenharia de Computação e Sistemas Digitais da Escola Politécnica da Universidade de São Paulo. É membro IEEE da região 9, seção sul Brasil.


 

Comentários

Deixa uma mensagem

%d blogueiros gostam disto: