• Nenhum resultado encontrado

Uma Arquitetura Reconfigurável para Prototipagem de Sistemas de Hardware e Software

N/A
N/A
Protected

Academic year: 2021

Share "Uma Arquitetura Reconfigurável para Prototipagem de Sistemas de Hardware e Software"

Copied!
5
0
0

Texto

(1)

Uma Arquitetura Reconfigurável para Prototipagem de

Sistemas de Hardware e Software

Aluno: Rodrigo César de Moraes Tavares1

Orientador: Claudionor José Nunes Coelho Jr. Co-orientador: Arnaldo de Albuquerque Araújo

Resumo: Este trabalho apresenta um sistema de baixo custo, baseado em hardware reconfigurável, compreendido de uma placa de interface compatível com a plataforma IBM/PC e de um device driver. O sistema atua como um coprocessador reprogramável e pode ser utilizado para acelerar processamento, através de implementação eficiente de algoritmos em hardware. O hardware reconfigurável é implementado através de uma FPGA, que pode ser reprogramada por software.

1 - Introdução

A demanda cada vez maior por poder de processamento e o surgimento de novas aplicações promovem uma constante busca por alternativas e arquiteturas que visem melhorar a performance dos computadores, especialmente em aplicações de tempo real [1].

Uma alternativa que vem sendo cada vez mais empregada para se conseguir taxas de processamento em tempo real é o processamento paralelo e uma alternativa é o processamento em hardware. Entre outros fatores, o que possibilita ganho de performance em hardware é o fato de que este pode tirar vantagem do paralelismo da aplicação enquanto elimina o overhead gerado pelas operações de busca, decodificação e execução de instruções, bem como desvios condicionais/incondicionais [2][7]. O hardware implementa algoritmos sob a forma de máquinas de estado, funções lógicas e “pipelines” diretamente [5]. Um outro fator que aumenta a performance do sistema é que se uma etapa de processamento pode ser feita em hardware, a CPU fica livre para realizar outras tarefas, como a aquisição de dados ou atualização da interface gráfica.

Os projetistas de circuitos integrados frequentemente se deparam com o problema do correto balanceamento entre performance e generalidade dos chips [14]. Os microprocessadores, por natureza, são elementos destinados a executar processamento genérico. Sua arquitetura interna é totalmente dedicada a implementar a funcionalidade de busca, decodificação e execução de instruções, armazenadas em algum tipo de memória. A possibilidade de reprogramação é sua característica principal, pois o seu comportamento é governado pelas intruções que executa. Devido à sua generalidade consegue-se baixa performance se comparado a um hardware dedicado para o mesmo processamento.

Até alguns anos atrás, a alternativa existente para se conseguir alta performance era a construção de circuitos integrados dedicados para aplicações específicas, os chamados ASICs (Application Specific Integrated Circuits). Como exemplo pode-se citar: os chips aceleradores gráficos, que são capazes de executar operações como desenhar linhas ou mover blocos de memória de vídeo com velocidades entre 10 e 100 vezes maiores que microprocessadores; coprocessadores matemáticos; coprocessadores de rede; entre outros. Nestes casos, a arquitetura interna dos dispositivos é otimizada e voltada para a aplicação em questão, conseguindo-se, então, uma performance superior à que seria conseguida com a arquitetura de um microprocessador tradicional. A característica marcante destes dispositivos é a sua imutabilidade, ou seja, as funções que executam estão amarradas ao próprio hardware e, uma vez construídos, não podem ser reprogramados.

(2)

Com o desenvolvimento dos circuitos integrados, surgiu uma terceira opção: os dispositivos lógicos programáveis. Com eles, consegue-se combinar a característica de alta performance do hardware com a generalidade e reprogramabilidade dos microprocessadores. Dispositivos mais modernos como as FPGAs (Field Programmable Gate Arrays) [13][3], são capazes de serem reprogramadas no próprio circuito, em frações de segundo, o que gerou um novo paradigma de computação: a Computação Reconfigurável [14][7]. Desta forma, a própria arquitetura interna do chip pode ser alterada, dinamicamente, para adaptar a uma dada aplicação.

Existem diversos tipos de dispositivos programáveis capazes de implementar funções lógicas [3]: EPROM (Erasable Programmable Read Only Memory), PLA (Programmable Logic

Array), PAL etc. Devido à necessidade de funções mais complexas, surgiram os dispositivos

conhecidos como CPLD's (Complex Programmable Logic Devices). Alguns membros dessa família de dispositivos são a MPGA (Mask Programmable Gate Array) e FPGA (Field

Programmable Gate Array)[13]. Nas MPGAs, a especificação das funções lógicas deve ser feita

antes do processo de fabricação do circuito integrado, e portanto introduz um alto custo, que só é compensado por produção em alta escala, e um longo ciclo desenvolvimento/fabricação [4][7]. As FPGAs são dispositivos reprogramáveis em campo, ou seja, podem ter sua configuração alterada sem que ela seja retirada do circuito. A capacidade destes circuitos hoje chega à casa das dezenas de milhares de portas lógicas. Programas poderosos de CAD (Computer Aided Design) auxiliam o projetista na criação de aplicações com FPGAs, assim como outros dispositivos lógicos programáveis.

A estrutura interna das FPGA’s, como visto na Figura 1, é formada por uma matriz de blocos lógicos reconfiguráveis (CLB - Configurable Logic Block) cercados por uma rede de interconexão programável. Circundando todo o circuito, existem os blocos de entrada e saída (IOB

- Input Output Block), que também são programáveis, e servem como interface entre o mundo

exterior e a lógica interna. A arquitetura de um CLB varia de família para família e de fabricante para fabricante [4], mas basicamente são compostos de pontos de entrada, que se conectam a blocos que implementam funções puramente combinacionais; multiplexadores, que direcionam o fluxo dos sinais internamente ao CLB; e de registradores (tipicamente flip-flops) que estão ligados às saídas e também podem realimentar as entradas dos geradores de funções combinacionais . Todos os elementos são configuráveis e propiciam uma grande flexibilidade para implementação de funções. A rede de interconexão programável é composta por diferentes tipos de segmentos de conexão, capazes de interligar a maioria das entradas e saídas dos CLB’s entre si e aos IOB’s. Isso tudo permite que circuitos complexos, máquinas de estado, e algoritmos sejam implementados pelas FPGA’s.

(3)

Este trabalho propõe a construção de um sistema reconfigurável baseado na plataforma IBM-PC que seja capaz de executar processamento em hardware e do suporte de software necessário para utilizá-lo num sistema operacional comercial. Como exemplo de aplicação, será implementado, em hardware, um algoritmo de detecção de bordas, utilizado em Processamento Digital de Imagens, e sua interface em software.

2 - Vantagens da utilização de FPGA’s

Devido às suas características, as FPGA’s possuem dois grandes campos de utilização: o primeiro é no rápido desenvolvimento de protótipos de circuitos (Rapid Prototyping) [4]. A possibilidade de reprogramação no próprio circuito acarreta uma diminuição significativa no tempo de desenvolvimento devido à agilidade no processo de simulação/teste/depuração/alteração do projeto. As ferramentas de CAD permitem, por exemplo, que o projetista especifique o comportamento da FPGA através de diagramas elétricos e/ou linguagens de descrição de Hardware (HDL - Hardware Description Language), como ABEL ou VHDL. O “compilador” produz então um arquivo de configuração que, quando carregado na FPGA, faz com que ela se comporte como o circuito projetado. O projetista tem também a possibilidade de verificar o funcionamento do circuito através de simulação funcional e temporal, já considerando os tempos de atraso gerados pela lógica resultante do processo de compilação.

O segundo campo de utilização, que vem crescendo cada vez mais, é a Computação Reconfigurável (Reconfigurable Computing Systems) [2] e Objetos de Hardware (Hardware

Objects)[6]. A computação reconfigurável representa sistemas em que a arquitetura interna pode

ser modificada por software [12], em tempo real, para se adaptar a uma aplicação específica. Ela é conseguida na prática através de placas que se conectam a computadores (PC’s, Estações de trabalhos, etc.) e que possuem FPGA’s atuando como coprocessadores reprogramáveis (RPU -

Reprogrammable Processing Unit). Com isso, o programa do usuário pode dar um “download” de

um projeto eletrônico diretamente para a RPU de forma que ele tenha um hardware específico para a sua aplicação. Este processo também pode ser feito dinamicamente , à medida em que o usuário necessitar de diferentes características funcionais.

A implementação de algoritmos em hardware é particularmente eficiente para aplicações orientadas a bit (bit oriented), ou seja, que trabalham com manipulação direta de bits [23]. Como exemplos de tais aplicações podemos citar compressão de dados, reconhecimento de padrões, criptografia, tratamento de imagens, processamento de sinais, aritmética de inteiros (valor absoluto, máximo, mímino, comparação), entre outros.

Tendo em vista essa última abordagem, pretende-se utilizar FPGAs para explorar a capacidade de processamento paralelo em hardware, implementando um algoritmo de detecção de bordas, utilizado em Processamento Digital de Imagens. A detecção de bordas é uma etapa de pré-processamento muito importante para qualquer sistema de análise de imagens [8]-[10], pois é responsável pela extração dos contornos dos objetos de forma a permitir que informações mais complexas sejam extraídas das imagens. Esta etapa sendo realizada por hardware facilita a implementação de sistemas de análise de imagens em tempo real. Como existem inúmeros algoritmos que implementam detecção de bordas, será feito um estudo de qual é o mais adequado para ser implementado em hardware [11].

3 - Descrição do Sistema

O sistema, como pode ser visto na figura 2, é composto de uma placa de interface compatível com a plataforma IBM-PC, que atua como um coprocessador genérico e reconfigurável. Um device driver é responsável pela integração do hardware com o sistema operacional e deverá prover as seguintes funções: capacidade de configuração do “coprocessador”;

(4)

Linhas de Endereço

FPGA de controle do barramento e sinais da

placa de interface (FPGA 1)

FPGA reconfigurável pelo usuário (FPGA 2) Ende re ço Ba rra me nto PC Memória SRAM 256KB EPROM de configuração

Sinais de Controle Sinais de Controle

Da dos Da dos Barramento de Dados Da dos Ende re ço Barramento de Endereços Ende re ço

Fig. 2 – Arquitetura da placa de interface

Na placa estão presentes duas FPGAs, que serão identificadas por FPGA1 e FPGA2. A FPGA1 tem como objetivo decodificar o barramento do PC, de forma a identificar comandos e dados enviados por um programa por meio de operações nos endereços (portas) de Entrada/Saída do PC e também implementar a funcionalidade da placa. A FPGA2 está disponível para ser programada pelo usuário. Este processo é realizado por software e consiste no envio de um arquivo de configuração para a FPGA2, previamente criado através ferramentas especializadas. Na placa também está presente uma memória RAM estática (SRAM) de 256 KBytes que pode ser preenchida por dados enviados pelo usuário, ou pelas FPGAs. O controle de endereçamento dessa SRAM pode ser feito automaticamente pela FPGA1 (incrementando ou decrementando à cada operação) ou ser realizado de forma independente pela FPGA2. Isso dá a flexibilidade necessária para implementação de algoritmos em que o padrão de acesso à memória não seja linear. Essas duas opções podem ser selecionadas por software.

O objetivo da placa é permitir que um programa possa transferir dados para a SRAM, que são processados pela FPGA2, e depois transferidos de volta para o PC. A sinalização do término de processamento pode ser feito tanto por interrupção ou por polling em registradores de status da placa. Alguns registradores internos também estão disponíveis para a indicação do tipo de operação a ser executada (se for o caso da FPGA2 suportar mais de uma operação), configuração do modo de operação (interrupção, polling) e controle do processamento (parar, iniciar). Como tanto o PC quanto as FPGAs podem acessar a memória, isso pode gerar contenção de recursos. Foi adotado um esquema de acesso em que o PC deve primeiro interromper o processamento das FPGAs antes de acessar a placa, como em [12]. Após realizar suas operações o PC devolve então o controle para as FPGAs.

O device driver que faz a interface entre hardware e o sistema operacional foi a princípio desenvolvido para o ambiente DOS, e foi implementado como uma classe em C++ contendo todas as funções necessárias para a utilização da placa, de forma a isolar o usuário dos detalhes de hardware. Entretanto, deverá ser desenvolvido um driver para Windows NT ou 95

(5)

destinado a prover as mesmas funções de acesso ao hardware também nestes sistemas operacionais.

4 - Conclusão

Determinados algoritmos podem ser implementados muito eficientemente em hardware, e esse fato foi explorado no desenvolvimento de um sistema destinado a acelerar processamento. Após a implementação do algoritmo de detecção de bordas em hardware, será realizado um estudo comparativo para determinar-se o ganho de performance se comparado ao mesmo algoritmo implementado totalmente em software. Espera-se que conseguir um ganho de performace, apesar do custo computacional envolvido na transferência de dados entre a memória principal do PC e a memória SRAM local da placa.

5 - Referências bibliográficas

[1] Brad Taylor, BO Varga. Low Cost, Real Time Video Imaging is enable in SRAM based FPGA’s. Giga Operations Corporation.

[2] A Layman’s View of Reconfigurable Computing. http://www.vcc.com/simple.html.

[3] Stephen Brown, Jonathan Rose. FPGA and CPLD Architectures: A tutorial. IEEE Design & Test Computers. Summer 1996.

[4] Pak K. Chan, Chung-Kuan Cheng ,Dwight Hill, Chi-Ping Hsu, Andrew B. Kahng. Tutotial 2:

Rapid System Prototyping using Field-Programmable Devices. 31st Design Automation

Conference. June 6-10, 1994. San Diego, California.

[5] Brad Taylor, Math Operators Implemented in Xilinx 4K FPGAs. Video Imaging Workshop – DSPX 1996. Giga Operations Corporation.

[6] An Introduction to Reconfigurable Computing & Hardware Objects. http://www.vcc.com/overview.html.

[7] Reconfigurable Computing Overview. Giga Operations. http://www.reconfig.com/giga/rintro.html

[8] Rafael C. Gonzalez. Digital Image Processing. Addison Wesley Publishing Company. 1977 [9] Pratt. Digital Image Processing. Wiley Interscience.

[10] Wayne Niblack. An Introduction to Digital Image Processing.

[11] J. Devars, G, Bertrand, F. Albert. A Fast Maximum Homogenity Smoothing. Group ESIEE Paris.

[12] Duncan A. Buell, Jeffrey M. Arnold, Walter J. Kleinfelder. Splash2: FPGAs in a Custom

Computing Machine. IEEE Computer Society Press. 1996.

[13] Xilinx XC4000 FPGA DataBook

[14] Villasenor, J. Willian H., Mangione-Smith. Configurable Computing. Scientific American June/1997

Referências

Documentos relacionados

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

O estudo múltiplo de casos foi aplicado para identificar as semelhanças e dissemelhanças na forma como as empresas relacionam seus modelos de negócios e suas

Nas leituras de falhas efetuadas, foram obtidos códigos de anomalia por meio de dois diferentes protocolos de comunicação: o ISO 14230 KWP (2000) e o ISO 15765-4 CAN. A seguir, no

A tabela 25 apresenta os resultados brutos desta avaliação em relação à característica busca e a tabela 26 exibe o resultado ponderado para esta característica.. A tabela 27

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a