Geração automática de aceleradores de domínio específico em FPGA
Authors:   , Silva Lucas Bragança da 
Published: January 2025

Devido à sua eficiência energética e alta flexibilidade, os FPGAs (Field Programmable Gate Arrays), ou Arranjos de Portas Programáveis em Campo, têm desempenhado um papel relevante na computação, atuando como aceleradores de hardware especializados. No entanto, a programação e implantação de aceleradores em plataformas com FPGA ainda representam um desafio. Esta tese apresenta uma metodologia que visa automatizar o projeto de aceleradores em FPGAs por meio de um conjunto de ferramentas para geração de arquiteturas com um fluxo de síntese programável e flexível. A metodologia proposta foi desenvolvida em três etapas. Na primeira etapa, o objetivo foi entender os principais desafios relacionados ao projeto de aceleradores em FPGAs. Para isso, foram desenvolvidas duas abordagens que tratam de geradores de aceleradores para duas aplicações específicas. Na primeira abordagem, apresentamos um gerador de aceleradores em FPGA para o algoritmo K-means. O framework proposto é altamente parametrizável e gera código HDL (Hardware Description Language), ou Linguagem de Descrição de Hardware, para o projeto completo, pronto para ser implantado em uma plataforma de FPGA na nuvem. Como resultado, o acelerador proposto apresentou ganhos de tempo de execução de 1,98 vezes quando comparado com outro acelerador em uma plataforma com FPGA altamente acoplada. Na segunda abordagem, propomos um gerador de aceleradores para simulações de GRNs (Genes Regulator Networks), ou Redes Reguladoras de Genes, usando FPGAs na nuvem. Este gerador cria automaticamente todo o conjunto de hardware/software a partir de uma descrição em alto nível de um modelo de GRN. Utilizamos seis modelos GRN propostos na literatura para comparar o desempenho e o custo com implementações em CPU (Central Processing Unit), ou Unidade Central de Processamento, GPU (Graphics Processing Unit), ou Unidade de Processamento Gráfico, e FPGA. Como resultado, o acelerador em FPGA é pelo menos 12 vezes mais rápido do que o melhor acelerador em GPU avaliado, e oferece o melhor desempenho por dólar em serviços em nuvem, pelo menos 5 vezes melhor do que o melhor acelerador em GPU. Na segunda etapa desta tese, apresentamos um framework chamado REconfigurable Accelerator DeploY (READY), o primeiro framework a oferecer suporte ao mapeamento de aplicações em grafo de fluxo de dados em plataformas CPU-FPGA de alto desempenho em tempo de execução. READY introduz um mapeamento eficiente em uma arquitetura de CGRA (Coarse Grained Reconfigurable Architecture), ou Arquitetura Reconfigurável de Granularidade Grossa, que oculta a latência da rede de interconexão global executando múltiplas tarefas. Além disso, demonstramos como esse sistema contribui para resolver alguns dos desafios relacionados à adoção de aceleradores de domínio específico em FPGAs. Os resultados dessa abordagem mostraram que é possível mapear e executar aplicações de grafo de fluxo de dados de forma eficiente, e o desempenho do sistema resulta em uma aceleração de até 2 vezes em comparação com uma CPU moderna. E, por fim, a terceira e última etapa desta tese apresenta o High Performance Coarse Grained Reconfigurable Accelerator (HPCGRA), uma ferramenta projetada para gerar aceleradores de domínio específico com interconexões multidimensionais de forma flexível. O CGRA é gerado utilizando os principais blocos de construção, como unidades funcionais, padrões de interconexão, roteamento e recursos de filas elásticas, palavras de configuração e memórias. O HPCGRA otimiza e simplifica o processo de criação de arquiteturas por meio de uma descrição portátil, gerando um código Verilog RTL genérico e eficiente. Os resultados da síntese mostram que, mesmo aumentando o número de PEs (Processing Elements), ou Elementos de Processamento, das arquiteturas geradas pelo HPCGRA, a frequência de clock e a relação do uso de recursos por PE permanecem estáveis. Foi possível sintetizar arquiteturas de CGRAs com 3036 PEs, com desempenho teórico de 1,2 TOPS. Palavras-chave: fpga; cgra; dsa; rdsa; hpcgra