
Código Aberto
O lado livre da internet
Liberdade para as FPGAs!
FPGAs ainda dependem de software não-livre; até quando?
30/03/2017 | 09h00
Por CCSL
Por Rodrigo Siqueira*
Andrew Tanenbaum é um dos pesquisadores em ciência da computação mais
conhecidos da atualidade, além de ter escrito diversos livros que auxiliaram na
formação de milhares de engenheiros e cientistas no mundo inteiro. Em seu livro
“Organização estruturada de computadores”, o autor aborda aspectos relacionados
aos computadores antigos e modernos. Logo nos primeiros capítulos do livro,
Tanenbaum convida o leitor a uma reflexão sobre a evolução do hardware e do
software como as duas peças fundamentais e indissociáveis da computação, numa
comparação sobre a evolução de ambos que se assemelha à fábula da corrida entre
a tartaruga e a lebre. Por vezes, o software progride rapidamente,
distanciando-se do desenvolvimento do hardware, até chegar a um ponto em que
sua evolução decai e ocorre uma troca de posição, na qual o hardware passa a
evoluir mais rápido. Andrew apresenta o tema com base em uma análise histórica
da evolução da computação.
De forma geral, vivemos em um momento em que ambas as áreas estão evoluindo
fortemente, com uma leve vantagem para o software. Contudo, é possível observar
uma mudança entre a lebre e a tartaruga na qual é o hardware que está evoluindo
cada vez mais rápido: o hardware está promovendo grandes mudanças de paradigma,
isto é, os dispositivos estão cada vez mais diversificados em termos de
funcionalidade. Nesse contexto, vale a pena comentar sobre as chamadas FPGAs
(Field Programmable Gate Array, ou Matriz de Portas Programável em Campo) e a
sua relação com o universo do software livre.
A característica principal de um processador de uso geral, como o do seu
celular ou computador, é a versatilidade: ele é capaz de executar um grande
número de operações diferentes, o que possibilita que os programadores o
utilizem para desenvolver as mais diversas aplicações. A desvantagem disso é
que esse processador precisa de um grande número de componentes internos para
ter toda essa funcionalidade que muitas vezes não são utilizados. Ao mesmo
tempo, o número de componentes dedicados a cada uma dessas funcionalidades é
pequeno. O resultado é que, em alguns casos, o processador acaba sendo muito
lento para executar algumas operações.
Em linhas gerais, uma FPGA permite que um único chip assuma diferentes
características de forma rápida e confiável. Imagine, por exemplo, uma ação
complexa, como fazer o seu computador processar as imagens advindas da sua
webcam para desenhar um chapéu sobre a sua cabeça. Essa ação pode ser lenta e
demorada, uma vez que o seu processador precisa trabalhar muito para fazer o
que foi solicitado. Agora imagine que você tenha um único chip que tem por
função apenas fazer o processamento da imagem e adicionar o chapéu de forma que
isso ocorra suavemente e você não perceba qualquer lentidão. Imagine ainda que
tudo isso é feito no mesmo chip que antes continha a sua CPU, isto é, o seu
processador de propósito geral passa a se comportar como um processador
totalmente novo com a única habilidade de processar a imagem. O exemplo é um
pouco exagerado e simplista, mas a ideia importante aqui é entender que o
processador de propósito geral mudou para outro processador totalmente
diferente no nível do hardware.
Uma pergunta relevante a se fazer é: quais benefícios as FPGAs poderiam trazer
para a sociedade como um todo? Para responder essa pergunta, analisamos a
perspectiva do engenheiro e do usuário. Para o primeiro, FPGAs permitem que o
projetista de circuito consiga prototipar e testar novos chips sem precisar de
um laboratório; ele pode fazê-lo na casa dele. Além disso, empresas menores
podem conseguir entrar em um mercado dominado por grande empresas. Do ponto de
vista do usuário, FPGAs podem permitir o surgimento de produtos mais baratos
com melhor desempenho e flexibilidade.
Uma característica importante das FPGAs é que seus circuitos geralmente são
projetados usando linguagens de descrição de hardware (HDLs – Hardware
Description Languages) que, grosso modo, se assemelham às linguagens de
programação e que, portanto, dependem de software. Isto nos faz refletir sobre
o ecossistema de software relacionado a esse tipo de dispositivo e,
infelizmente, temos notícias ruins: boa parte do desenvolvimento para FPGAs é
feito e suportado por ferramentas fechadas que ainda utilizam modelos de
licenciamento que tiram toda a liberdade do desenvolvedor. Contudo, existem
noticias boas também: o software livre está chegando a essa área. Vários
pesquisadores mundialmente reconhecidos, como David Patterson, defendem a
importância de se adotar uma posição mais firme rumo à liberdade tanto quanto
ao hardware quanto ao software que habitam esse ecossistema.
No início do movimento pelo software livre, muitos acreditavam que ferramentas
como editores de texto ou compiladores poderiam ser livres, mas que nunca seria
possível criar um sistema operacional completo livre. Com o surgimento do
GNU/Linux, muitos defendiam que ambientes desktop voltados para o usuário final
estariam além do alcance do software livre. Após projetos como KDE e Gnome
atingirem a maturidade, especulava-se que dispositivos como celulares nunca
poderiam ser baseados em software livre. Com a predominância do Android e
projetos derivados, além do Ubuntu Touch, a mais nova fronteira a ser cruzada é
a do hardware livre. Este é o momento ideal para aqueles que têm interesse no
tema e querem contribuir, uma vez que várias pessoas no mundo estão começando a
trabalhar no assunto e incentivando o ingresso de contribuidores.
* Rodrigo Siqueira é mestrando em Ciência da Computação e criador do software livre kuniri
Comentários
Os comentários são exclusivos para assinantes do Estadão.