Projeto Tese de Doutorado:

 

“Metodologias para Hardware Virtual baseadas em Particionamento Temporal e Exploração de Espaço de Projeto”.

 

Grupo de Engenharia da Computação – CIN-UFPE

Grupo de Pesquisa em Computação Reconfigurável

Doutorando:  Paulo Sérgio Brandão do Nascimento,

Orientandor: Professor Manoel Eusébio

                                    

Alto grau de paralelismo é fundamental em aplicações de processamento de imagem em alta velocidade. Modernos dispositivos do tipo FPGA podem fornecer o paralelismo necessário e adicionalmente flexibilidade. Entretanto, estes dispositivos são limitados em tamanho, quantidade de memória disponível e pelo tempo necessário para a configuração do hardware. 

Técnicas de particionamento temporal podem ser usadas para implementar grandes aplicações que podem ser quebradas em partições (chamadas de contextos). Estas partições são multiplexadas no FPGA através de técnicas de reconfiguração dinâmica.

Esta abordagem tem o efeito de aumentar a área efetiva disponível para a implementação de sistemas, permitindo o aumento do grau de paralelismo utilizado em cada tarefa que compõem a aplicação.  O tempo de reconfiguração necessário entre contextos pode causar  degradação de performance. Entretanto, exploração intensiva do paralelismo para o processamento de grandes quantidades de pixeis de imagem pode compensar estes tempos, produzindo aumento global de performance do processamento.    Isto é verdadeiro para os FPGAs modernos com velocidade de reconfiguração da lógica relativamente alta.

Neste trabalho de pesquisa uma plataforma de computação reconfigurável SCR e técnicas de exploração do espaço de projeto são propostas. Estas técnicas permitem o mapeamento de aplicações de processamento e análise de imagens para a plataforma proposta, mostrada na figura abaixo:

 

Arquitetura da plataforma para aplicações de processamento de imagens

e interface das tarefas de hardware

 

Um fluxo de projeto é proposto com base no uso de bibliotecas de implementação de componentes típicos usados em processamento de imagem. Esta abordagem permite a separação entre as atividades de desenvolvimento da aplicação e de projeto do hardware necessário para a implementação física. Deste modo, o especialista em análise de imagens pode focar seu trabalho na definição das tarefas necessárias para a aplicação e suas relações. As implementações destas tarefas em hardware são realizadas por especialistas de hardware que projetam os componentes necessários para serem mapeados no FPGA.

A ortogonalidade obtida entre o projeto de aplicação e a implementação física tem como resultado a redução do esforço de projeto, redução na quantidade de erros durante a fase de concepção e redução no tempo de projeto.

O fluxo de projeto que estamos propondo é apresentado na figura abaixo:

 

Fluxo de projeto proposto

 

No fluxo proposto, um especialista da aplicação deve especificar o sistema a ser implementado, definindo o grafo DAG com a relação entre as tarefas e os programas em C que determinam o comportamento de cada tarefa. A única restrição que temos considerado na nossa proposta é que o código em C deve ser escrito utilizando o subconjunto do ANSI C suportado pela ferramenta de síntese de alto nível (HLS) utilizada. Isto minimizar a necessidade de refinamento manual do código original para uma forma sintetizável e reduz o risco de modificações no comportamento desejado devido aos refinamentos. O projetista de aplicação, deste modo, concentra-se apenas na escolha das tarefas, dos algoritmos apropriados em alto nível e definição das estruturas de dados da aplicação. A construção dos componentes para implementação de cada tarefa e a exploração do espaço de projeto fica a cargo do projetista de hardware.    

O projetista de hardware tem por atribuição realizar os refinamentos necessários na descrição em C de cada tarefa v, exigidas pelas ferramentas de síntese de alto nível (HLS). Em seguida, deverá gerar um conjunto de implementações possíveis L(v). Cada implementação é descrita como código RTL sintetizável no FPGA alvo.

Uma segunda atribuição do projetista de hardware é definir o particionamento temporal e a escolha adequada das implementações de tarefas, de forma que a performance desejada seja atingida. Para isto, o projetista precisa realizar exploração do espaço de solução de forma manual ou automática. A principal contribuição do nosso trabalho está justamente no desenvolvimento dos métodos de exploração que permitam a obtenção de soluções adequadas em tempo hábil.

O resultado final da atividade de exploração do espaço de projeto consiste de uma biblioteca de componentes L, que possuem as possíveis implementações das tarefas presentes na aplicação, e do particionamento temporal P(A). O projetista de hardware deve utilizar ferramentas de síntese lógica, placer e router para construir a implementação física de cada partição, colocando no FPGA os componentes escolhidos na etapa de exploração de projeto.

 

Reuso de componentes:

 

 A seta pontilhada na direção ascendente do fluxo de projeto, ver figura acima, representa a capacidade de reuso de componentes. Em geral, cada domínio de aplicação possui um conjunto de tarefas típicas que se repetem em diversas aplicações específicas. Por exemplo, em aplicações de processamento de imagem, tarefas típicas são: FFT, DCT, detecção de bordas, técnica de histograma, erosão morfológica, etc. As informações de exploração de espaço de projeto para estes componentes (representadas por curvas pareto ótimas de área x tempo) podem ser então armazenadas juntamente com as implementações do componente. Na nossa proposta, estas funções implementadas em biblioteca são disponibilizadas para reuso por parte dos projetistas de aplicação. Desta forma, evita-se a repetição do esforço de exploração do espaço de projeto, permitindo a diminuição do tempo de desenvolvimento.

A biblioteca L deve disponibilizar para o projetista de aplicação o código em C das tarefas cujas implementações estão nela armazenadas. As informações da curva pareto ótima dos componentes devem ser também disponibilizadas para permitir ao projetista de aplicação realizar estimativas preliminares sobre a quantidade de recursos e sobre o tempo de execução possível para a sua aplicação.  Para o projetista de aplicação, L é vista como uma biblioteca de funções em C que pode ser utilizada na construção de diversas  aplicações.

 

Foto do Primeiro Protótipo do Computador Reconfigurável:

 

Protótipo Aquarius: Primeira Versão da Plataforma