Você está na página 1de 6

Field Programmable Gate Array - FPGA

Mini-curso de Computao H ca brida Recongurvel a Vitor C. F. Gomes, Andrea S. Charo, Haroldo F. C. Velho a
Ultima atualizao: 19 de setembro de 2009 ca

Universidade Federal de Santa Maria / Instituto Nacional de Pesquisas Espaciais Field Programmable Gate Array - FPGA / Mini-curso de Computao H ca brida Recongurvel a

Dispositivos Recongurveis a

Dispositivos recongurveis so dispositivos que podem ser programados para ter o comportamento de um a a circuito lgico em hardware. Diferentemente de Circuitos Integrados de Aplicao Espec o ca ca (ASIC), podem ser recongurados diversas vezes para terem diferentes comportamentos lgicos. o Fazem parte desta categoria, dispositivos como Programmable Array Logic (PAL), Generic Array Logic (GAL), Complex Programmable Logic Device (CPLD) e Field Programmable Gate Array (FPGA). Destes dispositivos, o FPGA o dispositivo que possui maior exibilidade devido a abundncia e o tamanho reduzido e a de suas unidades bsicas, o que permite a congurao de sistemas complexos. a ca

Field Programmable Gate Arrays

Field-Programmable Gate Arrays (FPGAs) so dispositivos lgicos programveis capazes de serem congua o a rados para reproduzir o comportamento de um hardware. Estes dispositivos so formados por blocos lgicos a o programveis que so conectados por interligaes programveis. Estes dois recursos permitem a criao de a a co a ca circuitos lgicos em FPGA, sendo limitados pela rea e a memria dispon o a o veis. O uso de FPGAs visa obter o desempenho de aplicaes em dispositivos dedicados (ASIC) com a exibilidade de aplicaes em software. co co Sua exibilidade dada pela facilidade de congurao atravs de uma descrio de hardware escrita em e ca e ca VHDL ou Verilog. Essas linguagens permitem a descrio do comportamento de um circuito lgico e facilita ca o a criao de novas aplicaes em hardware devido ao n de abstrao que fornece ao programador. ca co vel ca
Este mini-curso uma ao vinculada ao convnio INPE/UFSM e tem por objetivo oferecer uma introduo a Computaao e ca e ca c H brida Recongurvel a

Este semicondutor, que foi lanado pela Xilinx Inc. em 1985, composto basicamente por trs tipos de c e e componentes: CLB (Conguration Logical Blocks): So blocos lgicos congurveis constru a o a dos com ip-ops e lgica o combinacional que permitem a construo de elementos lgicos funcionais; ca o IOB (Input/Output Block): Fazem a interface entre CLBs, funcionando como buers de entrada e sa da; Switch Matrix: Representam a conexo entre os blocos lgicos. Permitem a conexo de CLBs e IOBs a o a usando trilhas com com conexes programveis. o a

2.1

Funcionamento

Para explicar o funcionamento de um FPGA sero a abstra dos itens mais complexos de sua arquitetura, de forma que o conceito bsico no seja perdido. a a A explicao a seguir tem por objetivo mostrar o ca funcionamento a grosso modelo. Deixamos claro que FPGAs atuais possuem estruturas complexas como processadores embarcados (i.e. o FPGA Virtex II Pro possui dois IBM PowerPC 405 RISC em sua arquitetura). Podemos considerar nossa aplicao para o ca FPGA como um circuito lgico que pode ser descrito o Figura 1: Circuito Simples como uma combinao de portas lgicas conectadas. ca o Um arranjo complexo de portas lgicas e unidades de memria (que tambm podem ser feitas com portas o o e lgicas) podem executar operaes complexas. Na gura 1 temos um exemplo simples de combinao de poro co ca tas lgicas que, por questes de facilidade, vamos considerar como o circuito que representa o comportamento o o desejado para o FPGA. O circuito apresentado na gura 1 (e qualquer outro) pode ter seu comportamento representado atravs de uma tabela verdade, como a tabela 1. e Sem muito esforo, podemos considerar que ao invs c e de uma tabela verdade, a tabela 1 representa uma memria que armazena 1 bit (S) e endereada por o e c 3 bits (A, B e C). Desta forma, podemos ter o comFigura 2: Bloco Lgico Congurvel (CLB) o a c portamento do circuito da Figura 1 endereando a memria representada pela tabela 1 com os sinais de entrada do circuito. Esta a idia bsica por trs dos o e e a a blocos lgicos congurveis (CLB) que compem um FPGA. Na gura 2 poss o a o e vel ver a estrutura deste componente que conta ainda com um ip-op tipo D e um multiplexador. Para permitir a congurao de arranjos complexos de portas lgicas, so utilizados milhares de CLBs ca o a conectados por comutadores programveis que denem as conexes e o uxo de sinais durante a execuo a o ca ca a de uma congurao no FPGA. A Figura 3 representa a organizao arquitetural bsica de um FPGA. ca

Tabela 1: Tabela A B C 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

verdade S 0 1 0 1 0 1 1 1

Figura 3: Arquitetura Bsica FPGA a 2.2 Desenvolvimento

Assim como no desenvolvimento de uma aplicao em software, a descrio de um hardware em linguagem ca ca VHDL ou Verilog possui uma sequncia de desenvolvimento. Na gura 4 poss observar as etapas ene e vel volvidas na implementao de uma aplicao para congurar um FPGA. Inicialmente descrito o sistema ca ca e utilizando uma linguagem de descrio de hardware (VHDL ou Verilog). Esta descrio determina o comca ca portamento do sistema em relao aos sinais de entrada nos mdulos do dispositivo e determina os sinais ca o de sa da. Na sequncia utilizado um sintetizador, que transforma o cdigo em alto n em um esquema e e o vel de elementos lgicos que representam a lgica descrita. Esta etapa pode ser comparada ao processo de o o compilao de um programa, onde se obtm o cdigo objeto como resultado. O terceiro passo, transformar ca e o e estes circuitos lgicos em um sistema que se adapte a estrutura lgica j existente no FPGA, a qual denir o o a a a conguraao dos blocos lgicos e das conexes entre eles. O passo nal a gerao do arquivo que contm c o o e ca e as informaes que devem ser passadas ao FPGA para que este dispositivo possa ser congurado. Estes co processos representam a ligao no processo de gerao de um executvel. ca ca a

Figura 4: Fluxo de desenvolvimento de aplicao para FPGA. Adaptado de [Cray Inc. 2005] ca 2.3 Ferramentas

O desenvolvimento pode ser realizado atravs de ferramentas desenvolvidas pelos fabricantes de FPGAs e como a Xilinx e a Altera. A edio da descrio de hardware pode ser realizada em um editor de ca ca texto simples ou na prpria interface das IDEs. Para o processo de s o ntese existem diversos programas que interpretam a descrio e convertem em circuitos lgicos e/ou realizam a simulao atravs ca o ca e de sinais. O software Simili [Symphony EDA 2005] possui uma verso gratuita que pode ser usada a para este propsito. Um tutorial que mostra um pouco sobre esse sistema pode ser encontrado em o http://www.gfbaratto.com/ufsm/graduacao/ELC1033/simulacao_sonata/simulacao.htm. Para a implementao necessrio que a ferramenta d suporte ao dispositivo recongurvel alvo, visto ca e a e a que necessrio conhecer a arquitetura do FPGA. Para FPGAs da Xilinx, pode ser utilizado o Ise WebPACK, e a que gratuito e tem suporte a alguns modelos deste fabricante. Para suporte a todos os modelos a Xilinx e comercializa o sistema Ise Foundation. Para dispositivos da Altera, podem ser utilizados o Quartus II Web Edition, que gratuito e suporta FPGAs simples, ou o Quartus II que comercializado e suporta todos e e os dispositivos do fabricante. Esses sistemas permitem tambm a edio e simulao das implementaes. e ca ca co Todos possuem suporte a sistemas Linux e Windows, menos a verso gratuita da Altera que somente deve a ser executado no sistema Windows.

2.4

Desempenho

O ganho de velocidade com o uso de FPGAs vem do fato que o hardware programado personalizado para e um algoritmo em particular. Desta forma, o FPGA pode ser congurado para conter exatamente e somente as operaes necessrias para a computao do algoritmo. Em contraste, processadores de propsito geral co a ca o precisam acomodar todas as poss veis operaes que os algoritmos poderiam requerer para todas as estruturas co de dados suportadas. FPGAs podem operar com o formato de dados, o nmero de unidades aritmticas e u e sua interconexo denida unicamente pelo algoritmo [Gokhale and Graham 2005]. a

Alm disso, podem ser acessados diversos dados em um unico ciclo de relgio, e otimizado o acesso a e o memria seguindo o comportamento do algoritmo. Em processadores, a cache torna mais eciente o uso o da memria, mas somente permite um controle indireto por parte do programador, que tem que adequar o seu programa ao funcionamento do hardware. O congurao de um hardware espec ca co para o algoritmo permite que seja criado um pipeline adequado `s necessidades da aplicao e que, com uma descrio eciente, a ca ca mantenha todo o dispositivo em funcionamento. De forma geral, podemos considerar que quando desenvolvemos aplicaes para um hardware com uma co coleo xa de operaes, adequamos o algoritmo para as operaes dispon ca co co veis. Usando FPGAs, ajustamos o hardware para executar um algoritmo. Apesar do potencial de ganho de velocidade na execuo de algoritmos em FPGAs, algumas classes de ca problemas dicilmente tero sucesso quando implementados para esta plataforma. Nos casos em que so a a poucas as oportunidades de paralelismo, onde o ncleo de computao utiliza operaes em ponto utuante u ca co padronizadas, podem ter melhor ecincia quando executadas em CPUs, pois mesmo FPGAs modernos e operam em menor frequncia ( 600MHz) que CPUs. Por este motivo, a utilizao conjunta de CPUs e e ca FPGAs pode signicar um bom atrativo para a execuo de aplicaes que precisam de alto desempenho. ca co

Referncias e
[Chamberlain et al. 2008] Chamberlain, R. D., Lancaster, J. M., and Cytron, R. K. (2008). Visions for application development on hybrid computing systems. Parallel Comput., 34(4-5):201216. [Cray Inc. 2005a] Cray Inc. (2005a). Cray XD1 Datasheet. Mendota, MN, USA. [Cray Inc. 2005b] Cray Inc. (2005b). Cray XD1 FPGA Development. Mendota Heights, MN, USA. Cray Inc. [Cray Inc. 2005c] Cray Inc. (2005c). Cray XD1 FPGA Programming. Mendota, MN, USA. [Cray Inc. 2005d] Cray Inc. (2005d). Cray XD1 System Overview. Mendota Heights, MN, USA. [Cray Inc. 2005e] Cray Inc. (2005e). Design of Cray XD1 QDR II SRAM Core. Mendota, MN, USA. [Cray Inc. 2005f] Cray Inc. (2005f). Design of Cray XD1 RapidArray Transport Core. Mendota Heights, MN, USA. [Cray Inc. 2005g] Cray Inc. (2005g). Design of Cray XD1 RapidArray Transport Core. Mendota, MN, USA. [Estrin and Viswanathan 1962] Estrin, G. and Viswanathan, C. R. (1962). Organization of a xed-plusvariable structure computer for computation of eigenvalues and eigenvectors of real symmetric matrices. J. ACM, 9(1):4160. [Fernando et al. 2005] Fernando, J., Dalessandro, D., Devulapalli, A., and Wohlever, K. (2005). Accelerated FPGA based encryption. New Mexico, USA. The Cray User Group. [Gokhale and Graham 2005a] Gokhale, M. and Graham, P. S. (2005a). Recongurable Computing: Accelerating Computation with Field-Programmable Gate Arrays. [Gokhale and Graham 2005b] Gokhale, M. and Graham, P. S. (2005b). Recongurable computing: Accelerating computation with eld-programmable gate arrays. In Recongurable Computing, New Mexico, USA. Springer.

[Shan 2006] Shan, A. (2006). Heterogeneous processing: a strategy for augmenting moores law. http://www.linuxjournal.com/article/8368. Acessado em 10/09/2009. [Symphony EDA 2005] Symphony EDA (2005). Symphony eda. http://www.symphonyeda.com. Acessado em 10/09/2009. [Universidade Federal de Itajub ] Universidade Federal de Itajub. Tutorial de vhdl. Tutorial desenvolvido a a pelo grupo de microeletrnica. o [Wain et al. 2006] Wain, R., Bush, I., Guest, M., Deegan, M., Kozin, I., and Kitchen, C. (2006). An overview of FPGAs and FPGA programming; initial experiences at Daresbury. pages 24, Daresbury, Cheshire, UK. Council for the Central Laboratory of the Research Councils.

Você também pode gostar