Particionamento Temporal Acoplado a Escolha de Componentes para Aplicações de Computação Reconfigurável - Sérgio Brandão do Nascimento, Paulo (2008)
Nos últimos anos, assistimos um aumento do interesse pelo uso de FPGAs para aceleração de aplicações que apresentam desempenho limitado em software, devido à complexidade ou grande quantidade de dados a serem processados. Áreas como Processamento Digital de Sinais, Telecomunicações, Processamento de Imagens, Bioinformática e Computação Científica de Alto Desempenho têm tirado proveito desta tecnologia. Este interesse pode ser justificado por diversos fatores: As grandes melhorias introduzidas nos processos de microeletrônica que têm permitido a construção de FPGAs cada vez mais densos, capazes de comportar sistemas muito complexos com milhões de portas lógicas equivalentes. Além disso, estas melhorias têm permitido a construção de dispositivos que podem opera com freqüências de centenas de megahertz, permitindo implementações com altíssimo desempenho. Nos últimos anos, a velocidade dos processadores modernos se estabilizou na casa de 3GHz. Esta estagnação se deve, principalmente, a limitações na capacidade de dissipar o calor gerado em altas freqüências. Com isto, o atendimento das demandas por desempenho deve ser feito por meio da exploração de novas arquiteturas, que visem o paralelismo de tarefas, como são as arquiteturas de CPUs Multi-Cores e FPGAs. As implementações em FPGAs são capazes de realizar mais computação com menos consumo de energia, quando comparados a CPUs convencionais ou Multi-Cores. Isto cria vantagens estratégicas, pelo fato de que o consumo elevado de energia elétrica é um limitador para o aumento da capacidade de processamento em sistemas de alto desempenho, com impacto na viabilidade e custo de instalação, funcionamento e manutenção de sistemas. Sistemas Reconfiguráveis baseados em FPGAs correspondem, atualmente, a uma das arquiteturas alternativas que tem demonstrado bons desempenhos em diversas aplicações experimentais e em um número crescente de casos bem sucedidos de aplicações comerciais. Apesar destas vantagens e da alta capacidade de adaptação às aplicações, com exploração de paralelismo, o grande problema para a popularização do uso destes dispositivos está na dificuldade de programação a partir de descrições em alto nível, como C e C++. Em especial, o particionamento temporal das aplicações consiste em uma etapa fundamental para obtenção de qualidade da implementação. Este trabalho de Tese contribui para a redução da dificuldade de programação dos Sistemas de Computação Reconfiguráveis (SCR), propondo uma Metodologia de Particionamento Temporal que considera o reuso de componentes IP-Cores, escolhidos a partir de várias opções disponíveis em uma biblioteca de componentes, de forma a otimizar a utilização dos recursos do FPGA. Esta metodologia explora diversas possibilidades de implementação para as tarefas em hardware e diversos agrupamentos de tarefas em partições temporais. No melhor do nosso conhecimento, apenas dois métodos foram propostos na literatura, por Vemuri e Ouni, que tentam resolver os problemas de mapeamento de aplicação que são abordados. Entretanto, os resultados experimentais, descritos nesta Tese, demonstram as vantagens da nossa proposta. Além disso, a metodologia apresentada é a primeira, que tem-se notícia, que utiliza o método de busca Tabu Search para realização do particionamento temporal, integrado à escolha de componentes, a partir de uma biblioteca de IP-Cores