Resumo |
Algumas aplicações demandam alto desempenho a fim de serem executadas em tempo real, especialmente aplicações que envolvem grande processamento de dados. Este desempenho pode ser comprometido quando estas aplicações são executadas em um hardware genérico, como um processador comum. Uma alternativa viável é utilizar algum hardware reconfigurável, como o FPGA (Field Programmable Gate Array) e o CGRA (Coarse-Grained Reconfigurable Array), os quais facilitam a utilização de computação paralela. Entre esses, o FPGA oferece um nível de complexidade maior, até por ser configurado em nível de bit, e o tempo para gerar e carregar a sua configuração pode ser muito longo. Já o CGRA é configurado a nível de palavra e reduz a complexidade e o tempo de configuração do FPGA. Isto acontece porque no CGRA as operações lógicas são realizadas nas unidades de processamento que realizam operações mais complexas comparadas às unidades lógicas de um FPGA. Há dois modos de configuração para as arquiteturas reconfiguráveis, estático e dinâmico. No modo estático a configuração é gerada e carregada apenas uma vez e não pode ser alterada durante a execução de uma tarefa. No dinâmico diferentes configurações podem ser utilizadas durante a execução de uma aplicação. Ambas configurações podem ser geradas por um compilador de maneira estática ou dinâmica. A configuração dinâmica gerada estaticamente funciona bem para uma arquitetura reconfigurável, desde que sejam previamente conhecidas as instruções que serão executadas, e que a tarefa não dependa de nenhuma informação gerada em tempo de execução. Caso seja necessária a utilização de dados gerados em tempo de execução, a configuração gerada dinamicamente é a solução adequada. Este projeto tem como objetivo o desenvolvimento de modelos e implementação de algoritmos para a plataforma da INTEL baseada em um FPGA Stratix V acoplado a um processador INTEL Xeon com 10 núcleos de processamento, 25 MB de cache e uma placa mãe com 9 GB de memória RAM, conhecida como HARP, usando técnicas que englobam a arquitetura de CGRA dinâmica. Uma destas técnicas é o Modulo Scheduling (MS), que busca sobrepor diferentes iterações de um mesmo laço, onde uma iteração posterior começa antes que a anterior termine. O MS busca obter o escalonamento mínimo para que nenhuma dependência de dados ou recursos seja violada. Um dos maiores desafios para a implementação do MS no HARP é tratar da implementação de operadores para o CGRA em Verilog. Para alcançar o objetivo de diminuir o tempo de implementação de qualquer aplicação que possa vir ser executada no HARP, nós propusemos um framework que faz a comunicação entre programador e HARP, e oferta diversos operadores a serem utilizados pelo programador em alto nível. Até o momento, temos operadores aritméticos, lógicos e condicionais implementados. Em conclusão, o framework proposto possui grande escalabilidade, pois facilita a utilização da plataforma da INTEL pela comunidade de desenvolvedores de software. |