Michael Reiser é, como ele diz, "fanático sobre o timing". Um neurocientista do Instituto Médico Howard Hughes no campus de pesquisa Janelia em Ashburn, Virgínia, Reiser estuda visão de voo. Alguns de seus experimentos envolvem colocar moscas em uma arena de realidade virtual imersiva e redesenhar perfeitamente a cena enquanto rastreia como os insetos respondem. PCs modernos, com seus sistemas operacionais complexos e unidades centrais de processamento multitarefas (CPUs), não podem garantir a precisão temporal necessária. Então Reiser, juntamente com engenheiros da Sciotex, uma empresa de tecnologia em Newtown Square, Pensilvânia, encontrou uma peça de hardware de computação que poderia: um FPGA.
Uma FPGA, ou FPGA - matriz de portas programável, é basicamente "lama electrónica", diz Bruno Levy, um cientista da computação e director da Inria Nancy Grand - centro de investigação em Villers - lè s - Nancy, França. Trata-se de uma colecção de centenas ou mesmo milhões de elementos lógicos não configurados num chip de silício que, tal como a argila, pode ser "moldado" - ou mesmo moldado - para acelerar aplicações que vão desde o alinhamento genómico ao processamento de imagem até à aprendizagem profunda.
Suponha que um pesquisador precisa de processar rapidamente os dados que fluem de uma câmara em pedaços de 1.000 bits. A maioria das CPUs modernas têm 64 - processadores de bits e teriam que quebrar o problema em pedaços menores. Mas é possível configurar um FPGA para fazer esse cálculo em um único passo, diz Inria Nancy cientista da computação Sylvain Lefebvre. Mesmo que cada passo do FPGA seja mais lento do que o seu homólogo da CPU, "é na verdade uma vitória, você está indo mais rápido", diz ele, porque o problema não está quebrado. FPGAs se destacam em aplicações que requerem tempo preciso, velocidade - algoritmos críticos ou baixo consumo de energia, ele acrescenta.
Supercarregar a sua disputa de dados com uma placa gráfica
Javier Serrano, gerente de design eletrônico e software de baixo nível no CERN, o laboratório europeu de partículas - laboratório de física perto de Genebra, Suíça, e seus colegas usaram FPGAs, mais White Rabbit - uma extensão por medida do protocolo de rede Ethernet - para criar um sistema que pode capturar instabilidades no grande feixe de partículas de hádron Collider com precisão nanossegundo.
Na Queens University Belfast, Reino Unido, o especialista em hardware informático Roger Woods está a construir um sistema de câmara de fibra óptica que utiliza o FPGAs para processar imagens multiespectrais de artérias coronárias suficientemente rápidas para serem utilizadas durante a cirurgia. E na Janelia, o cientista sénior Chuntao Dan criou um sistema de imagem em ciclo fechado que pode interpretar e responder ao posicionamento das asas voadoras à medida que batem a cada 5 milissegundos. O sistema operacional Windows da Microsoft introduz uma sincronização de até 30 milissegundos, diz Dan. Mas usando um FPGA, "conseguimos toda a análise em 145 microssegundos", o que significa que a resolução temporal nunca é um problema apesar das limitações de um computador convencional.
FPGAs são configurados usando uma linguagem de hardware - descrição (HDL), como VHDL ou Verilog, com a qual os pesquisadores podem implementar qualquer coisa desde piscar LEDs a uma CPU cheia. Outra opção é Silice, uma linguagem com C - como sintaxe que Lefebvre, que a desenvolveu, fugiu para Verilog. Seja qual for a LDH usada, uma ferramenta de síntese traduz-a em uma lista de elementos lógicos, e uma ferramenta local e de rota corresponde aos do chip físico. O bitstream resultante é então exibido para o FPGA.
Hub da NatureTech
O código de configuração, ou "gateware", como Serrano lhe chama, não é necessariamente difícil de escrever. Mas requer uma mentalidade diferente da programação tradicional, diz Olof Kindgren, um diretor e co-fundador do Reino Unido - sedeado Free e Open Source Silicon Foundation. Enquanto o código de software é procedimental, o gateware é descritivo. "Você descreve como os dados se movem entre os registradores em seu design em cada ciclo de relógio, que não é como a maioria dos desenvolvedores de software pensam", diz Kindgren. Como resultado, mesmo pesquisadores computacionalmente experientes podem querer consultar um especialista para espremer a maior velocidade de seus projetos.
A tecnologia FPGA data de meados dos anos 80, mas as melhorias no design de software tornaram-no cada vez mais acessível. A Xilinx (propriedade do fabricante de chips AMD) e Altera (de propriedade do chipmaker Intel) dominam o mercado, e ambos oferecem ferramentas de desenvolvimento e chips de complexidade e custo variáveis. Um punhado de ferramentas de código aberto também existem, incluindo Yosys (uma ferramenta de síntese) e nextpnr (place - e - route), ambas desenvolvidas pela cientista da computação Claire Wolf, que é chefe de tecnologia na empresa de software Viena - baseada em YosysHQ. Lefebvre aconselha a começar com um tabuleiro pronto - para usar FPGA que inclui memória e periféricos, como portas USB e HDMI. O Xilinx PYNQ, que pode ser programado usando Python, e o quebra-gelo aberto - hardware e ULX3S, são boas opções.
Os colaboradores de Reiser na Sciotex usaram um FPGA da National Instruments, baseado em Austin, Texas, que eles programaram usando o ambiente gráfico de codificação LabVIEW da empresa. O hardware, incluindo componentes para aquisição de dados, custou cerca de 5.000 dólares, diz Reiser. Mas com ela, ele teve sua resposta: moscas podem reagir a objetos em movimento no seu campo de visão aproximadamente duas vezes mais rápido que as pessoas, ele encontrou. Provando que o limite exigia uma exibição que a sua equipa podia actualizar dez vezes mais rápido do que as reacções que estavam a sondar. "Nós gostamos de precisão temporal", diz Reiser. Torna as nossas vidas muito mais fáceis.