Projeto Computador
Reconfiguravel:
Grupo de Engenharia da computação – CIN UFPE
Grupo de Pesquisa em Computação Reconfigurável
Orientador: Prof. Manoel Eusébio de Lima
Pesquisadores: Paulo Sérgio Brandão do Nascimento, Remy E.
Sant’ana, Stelita Silva, Jordana Seixas
Este projeto tem por
objetivo desenvolver um Sistema de Computação Reconfigurável para aplicações
massivas em dados, em especial aplicações de processamento de imagens.
Sistemas de
Computação Reconfiguráveis (SCRs) são constituídos por componentes de
software do tipo MicroProcessador (MP) acoplados a Dispositivos de
Lógica Reconfigurável (DLR) como
é mostrado na Figura abaixo:
|
Sistema de Computação Reconfigurável |
Estes sistemas são
capazes de implementar em lógica reconfigurável (DLR) partes da
aplicação que exigem maior velocidade, permitindo maior densidade funcional
(quantidade de operações por unidade de área e por unidade de tempo) e a
exploração de paralelismo que não é possível em implementações baseadas em
software. Com isto, aumentando a performance global das aplicações.
Dispositivos de
lógica reconfigurável (DLRs) permitem a modificação dos componentes de
hardware ao longo da utilização do sistema por meio da reprogramação de sua lógica,
sem a necessidade de modificação física do hardware. Esta capacidade de
reconfiguração permite que SCRs apresentem duas importantes
características:
1. Adaptabilidade/Flexibilidade: Os componentes de hardware podem ser
implementados sobre medida para explorar características especificas de cada
aplicação. Assim, na medida que as aplicações precisam ser ativadas no SCR,
os componentes de hardware podem ser reconfigurados de forma a se adaptar as
necessidades de cada aplicação, obtendo melhor utilização dos recursos da
lógica reconfigurável e melhor desempenho.
2. Reconfiguração Dinâmica de Hardware
(RDH): Em uma aplicação
típica, nem todos componentes de hardware precisam ser ativados
simultaneamente. Desta forma, estes componentes podem ser configurados
dinamicamente (Run -Time Reconfiguration) nos DLRs, na medida que
forem necessários. Isto permite que recursos da lógica sejam compartilhados por
vários componentes de hardware, o que implica em uma grande economia destes
recursos. Aplicações que de outra forma precisariam de uma grande quantidade de
lógica para sua implementação, podem reduzir esta quantidade por meio do
compartilhamento dos recursos dos DLRs entre componentes de hardware.
Isto é possível desde que estes componentes executem suas tarefas em intervalos
de tempo diferentes (disjuntos). Esta técnica também é conhecida na literatura
com o nome de Hardware Virtual (HV) e sistemas que a utilizam são
chamados na literatura de Sistemas Dinamicamente Reconfiguráveis (SDRs)
ou Run Time Reconfigurable Systems (RTR Systems).
A construção de SCRs e SDRs
envolve a utilização de um conjunto de tecnologias de lógica
reconfigurável e metodologias de
projeto, em especial: técnicas de particionamento
hardware/software e particionamento espacial e temporal dos componentes da
aplicação. O particionamento hardware /software define quais componentes da
aplicação devem ser implementados nos dispositivos de software MP
e quais componentes devem ter sua execução acelerada através da implementação
como processos de hardware nos dispositivos reconfiguráveis DLRs. Os métodos de particionamento espacial e temporal definem o
posicionamento físico dos componentes de hardware nos DLRs bem como o comportamento temporal, estabelecendo que componentes devem
está presentes dentro da lógica em cada intervalo de tempo durante a execução.
Na Figura abaixo temos o diagrama do
sistema de computação reconfigurável que estamos desenvolvendo:
Computador
Reconfigurável em Desenvolvimento
Este sistema é composto por um
processador Nios implementado em um FPGA Stratix da Altera. Este host executa o
sistema operacional uLinux que gerencia a execução das tarefas de software e tarefas de hardware. Um FPGA Virtex II da Xilinx é utilizado para
execução das tarefas de hardware. Estas tarefas são implementadas como Cores
que são dinamicamente alocados no Virtex II,
utilizando técnicas de reconfiguração parcial e dinâmica.
O sistema utiliza um barramento padrão
AVALON com uma interface de aplicação para a comunicação entre tarefas de
hardware, software e memórias. Uma memória Compact Flash é utilizada par o
armazenamento das configurações das tarefas de hardware a serem configuradas no
Virtex II.