Você está na página 1de 71

COMPUTAO RECONFIGURVEL: conceitos, tendncias e aplicaes

Carlos Augusto Paiva da Silva Martins1,2,3, Edward David Moreno Ordonez4, Joo Batista Torres Corra1,2, Milene Barbosa Carvalho1,2
1

Laboratrio de Sistemas Digitais e Computacionais (LSDC)


2

Instituto de Informtica

Programa de Ps Graduao em Engenharia Eltrica (PPGEE) Pontifcia Universidade Catlica de Minas Gerais (PUC Minas) [capsm@pucminas.br]
4

Faculdade de Informtica

Fundao de Ensino Eurpides Soares da Rocha (FEESR)

1 Introduo Neste minicurso utilizamos uma abordagem diferente no processo de ensino/estudo/aprendizado, que baseada na proposio de perguntas e problemas e na indicao de alguns possveis caminhos para a obteno das respostas e/ou solues como instrumento ou mtodo de aprendizado. Acreditamos e sugerimos que os leitores tentem responder as perguntas e resolver os problemas propostos antes de prosseguir na leitura do texto, para possibilitar a aplicao e o exerccio da criatividade com o propsito de desenvolver novas idias e construir novos conhecimentos. O nosso objetivo inicial incentivar e motivar as pessoas a considerar a computao reconfigurvel como uma possvel soluo de problemas reais e nosso objetivo final iniciar a divulgao, otimizando o processo de aprendizado e a formao de recursos humanos numa rea recente e ainda pouco explorada como a computao reconfigurvel. Esperamos que aps o trmino do minicurso as pessoas prossigam no estudo, aprendizado, pesquisa e aplicao prtica da computao reconfigurvel. Neste captulo, apresentamos inicialmente uma viso geral do contexto da computao nos ltimos anos, considerando e analisando o surgimento de novos modelos e paradigmas computacionais como a computao reconfigurvel. A seguir

fazemos uma anlise dos principais problemas e desafios tcnicos que motivaram o surgimento e posterior desenvolvimento da computao reconfigurvel e suas aplicaes prticas. Posteriormente apresentamos os nossos principais objetivos e metas com a proposio e realizao desse minicurso, e finalizamos indicando a estrutura do texto, captulo a captulo. 1.1 Contexto Nos ltimos anos temos observado um crescente aumento no uso da computao em quase todas as atividades e reas do conhecimento. E atualmente em quase todas essas reas do conhecimento, principalmente nas relacionadas s cincias exatas e engenharias, observamos a existncia de uma grande quantidade de problemas complexos. As solues normalmente usadas para resolver estes problemas geram uma grande demanda de recursos computacionais necessrios para armazenamento, recuperao, transmisso e processamento de informaes. Alm disso, em muitos desses problemas, as solues precisam ser obtidas em pequenos intervalos de tempo, cada vez menores, ou at em tempo real. Para uma grande parte destes problemas complexos, as solues implementadas em software seqencial executado em hardware monoprocessador de propsito geral no atendem as necessidades de tempo de resposta e/ou de desempenho de modo geral. Deste modo, novas solues devem e esto sendo desenvolvidas e utilizadas com o objetivo de melhorar o tempo de resposta, a vazo, o desempenho geral e a qualidade dos resultados. Entre as quais, podemos destacar as que so baseadas no uso de: software paralelo e arquiteturas paralelas de propsito geral [Hwang 1998] [Lewis 1998] [Pfister 1998] [Buyya 1999a] [Buyya 1999b]; software distribudo e arquiteturas de propsito geral [Tanenbaum 1995] [Mullender 1996]; software seqencial ou paralelo e arquiteturas dedicadas [Almasi 1994] [Decegama 1989]; hardware dedicado e fixo para aplicaes especficas [Wolf 1994]; e principalmente computao e arquiteturas reconfigurveis [Sanchez 1999] [Sipper 2000] [Turley 1998] [Villasenor 1997] [CORE 2000] [SCR 2001]. Algumas solues de computao de alto desempenho tem sido desenvolvidas em pesquisas realizadas e divulgadas no Brasil [SBAC-PAD 2000] [WSCAD 2000] [SBAC-PAD 2001] [WSCAD 2001]. Deste modo, em funo de problemas de desempenho, como tempo de resposta e/ou vazo, ou outros fatores como eficincia, disponibilidade, tolerncia falhas, etc. temos observado o surgimento de novos modelos, estilos ou tipos de computao e computadores.
2

Algumas das muitas perguntas interessantes, dentro desse contexto, que poderiam auxiliar no entendimento e aprendizado de novas abordagens (modelos, paradigmas, estilos) computacionais, como a computao reconfigurvel, so: i) o que a computao?; ii) o que caracteriza a computao?; iii) quais so os tipos e modelos de computao?; iv) o que um computador?; v) o que caracteriza um computador?; vi) quais so os tipos e modelos de computadores? Nas possveis respostas dessas perguntas devemos considerar que um computador ou pode ser composto de hardware e software, que o comportamento e a estrutura do computador podem ser constantes e/ou variveis e que nos computadores existem aspectos relacionados com a arquitetura e a tecnologia. 1.2 Problemas Uma questo muito importante nesse momento tentar determinar quais foram os problemas que motivaram o surgimento da computao reconfigurvel. Analisando o contexto geral do uso da computao e dos sistemas computacionais (computadores) observamos que as solues podem ser classificadas ou divididas em solues implementadas em Hardware Fixo (HF) ou Hardwired e em solues implementadas em Hardware Programvel (HP) atravs de Software (SW). Sendo que esses tipos de implementaes de solues geralmente so denominadas solues em hardware e solues em software. Alm disso, observamos que as desvantagens relacionadas com desempenho, flexibilidade, custo, etc. de cada um desses tipos de implementaes de solues so os principais problemas que deram origem ou motivaram o surgimento da computao reconfigurvel. Novamente a anlise e resposta de algumas perguntas podem nos auxiliar a entender e futuramente utilizar a computao reconfigurvel: i) quais so as principais vantagens e desvantagens dos modelos e tipos de computao (sistemas computacionais) existentes atualmente? No contexto desse minicurso, principalmente das solues implementadas em hardware fixo (HF) ou em hardware programvel e software (HP+SW); ii) existe necessidade de desenvolver-se novos modelos e tipos de computao, sistemas computacionais e implementaes? Onde devemos considerar quais so as caractersticas desejveis desses novos modelos. Considerando as perguntas anteriores observamos que as principais deficincias do paradigma de hardware fixo (HF) so a falta de flexibilidade e a sua sub-utilizao quando se trata de aplicaes diversas. Isto pelo fato de ser um
3

dispositivo fixo, no podendo ser alterado aps a sua fabricao e no se conseguir adapta-lo a certas situaes que ocorrem durante as execues de diversas tarefas computacionais. J no caso do paradigma de software (hardware programvel) (HP+SW), a principal deficincia est relacionada com o desempenho, s vezes insatisfatrio na execuo de aplicaes ou computaes. Apesar da grande flexibilidade para a execuo de qualquer tipo de trabalho que envolva processamento computacional, existem deficincias e perdas no tempo necessrio para executar alguns tipos de tarefas ou operaes. Caso essas operaes fossem executadas em um dispositivo de hardware fixo levariam um menor tempo, pois no necessitam buscar as instrues na memria, decodific-las, buscar dados e executar a operao requerida. Sendo assim, quando o nmero de operaes mais crticas (tempo de execuo mais demorado, crtico ou significativo) aumenta, o desempenho que se consegue utilizando dispositivos de hardware programvel (HP+SW) pode se tornar insatisfatrio ou no ideal. Em funo disso, muitas vezes utilizamos dispositivos de hardware fixo (HF) para acelerar algumas operaes ou aplicaes que demandam uma grande quantidade de recursos de um computador que utiliza um hardware programvel, como um Processador de Propsito Geral (PPG). Contudo, apesar de suas deficincias, cada um destes dois paradigmas possuem as aplicaes mais indicadas e recomendadas, sendo que a escolha vai depender das caractersticas de cada projeto, como dos dispositivos de hardware fixo e/ou de hardware programvel. Deste modo, conclumos que existe necessidade de desenvolver-se novos modelos e tipos de implementaes de solues computacionais. Entre os quais, podemos destacar um novo tipo de implementao (modelo ou paradigma) intermediria, entre as tradicionais solues em hardware (hardware fixo - HF) e software (hardware programvel - HP + SW). Usando esse tipo de implementao computacional pretendemos alcanar ou nos aproximar do desempenho das solues implementadas em hardware fixo e da flexibilidade das solues implementadas em hardware programvel e software. Como veremos nesse minicurso esse tipo de implementao de solues intermediria a computao reconfigurvel. 1.3 Objetivos principais Dentro do contexto apresentado pretendemos atingir cinco objetivos principais com a proposio e realizao deste minicurso:
4

(i) Apresentar e difundir os conhecimentos relacionados computao reconfigurvel, que uma rea relativamente recente e que ainda no faz parte dos currculos de graduao e ps graduao no Brasil. Considerando-se a situao mundial, observamos que a difuso desses conhecimentos em cursos de graduao e ps graduao recente, pequena e crescente; (ii) Produzir e disponibilizar literatura em portugus sobre computao reconfigurvel, pois ainda no existem livros sobre o assunto no idioma portugus e considerando-se tambm outros tipos de bibliografia, como artigos por exemplo, a quantidade ainda muito pequena. Destacamos que a verso inicial desse material j foi usada em um minicurso de mesmo nome apresentado durante o evento CORE'2000 realizado na cidade de Marlia em agosto de 2000, posteriormente em uma palestra sobre "Computao Reconfigurvel" realizada na PUC-MINAS em novembro de 2000 e num minicurso durante o Seminrio de Computao Reconfigurvel (SCR'2001) realizado na PUC-Minas em 2001. Considerando-se a situao mundial, tambm no encontramos livros inteiramente dedicados computao reconfigurvel; (iii) Apresentar os principais conceitos e tcnicas relacionadas com a computao reconfigurvel como: dispositivos reconfigurveis; arquiteturas reconfigurveis; sistemas computacionais reconfigurveis acadmicos e comerciais; ambientes e ferramentas de projeto, desenvolvimento e programao de aplicaes em sistemas reconfigurveis. Discutir as necessidades de desenvolvimento de aplicaes usando conceitos e sistemas computacionais reconfigurveis e os aspectos mais importantes para a melhoria de desempenho e otimizao das aplicaes usando-se conceitos de reconfigurabilidade; (iv) Mostrar e analisar o uso prtico das tcnicas e mtodos apresentados usando-se problemas prticos encontrados em aplicaes reais relacionadas as reas de cincia e engenharia. Como manipulao e processamento de imagens; (v) Incentivar o estudo, o aprendizado e a pesquisa em computao reconfigurvel, promovendo um aumento no nmero de pessoas envolvidas na gerao de conhecimentos e na publicao de artigos nessa rea. 1.4 Estrutura do texto O restante do texto est estruturado em oito captulos. No captulo 2 apresentamos e discutimos alguns dos principais conceitos da computao reconfigurvel. Posteriormente nos captulos 3 e 4 apresentamos as arquiteturas e
5

os dispositivos reconfigurveis. O captulo 5 relacionado com o desenvolvimento de solues em sistemas computacionais reconfigurveis. No captulo 6 indicamos alguns sistemas computacionais reconfigurveis acadmicos e comerciais. O captulo 7 dedicado anlise de aplicaes computacionais implementadas usando-se computao reconfigurvel. No captulo 8 apresentamos as principais concluses do nosso minicurso. E finalmente no captulo 9 indicamos as nossas referncias bibliogrficas, bibliografias adicionais e algumas fontes para a obteno de material e informao adicional sobre a computao reconfigurvel, seus principais tpicos e alguns sistemas computacionais reconfigurveis.

2 Conceitos de Computao Reconfigurvel Neste captulo apresentamos alguns dos principais conceitos relacionados com a computao reconfigurvel e a sua terminologia bsica. Como essa uma rea relativamente recente ainda existem problemas e dificuldades para se indicar e definir os principais conceitos bsicos. Alm disso, ainda no existe consenso sobre a maioria dos conceitos, definies e termos bsicos, pois ainda estamos nas fases iniciais de pesquisa e definies. Deste modo, esperamos que a apresentao desses conceitos possa auxiliar o estudo e entendimento da computao reconfigurvel e no temos a pretenso de apresentar ou criar definies ou conceitos padronizados e definitivos. Entretanto, existem algumas referncias complementares muito interessantes entre as quais destacamos o artigo survey publicado na revista ACM Computing Survey [Compton 2002]. Considerando as informaes apresentadas anteriormente, acreditamos que algumas questes importantes para o entendimento da computao reconfigurvel so: i) o que a computao reconfigurvel ou qual a definio de computao reconfigurvel?; ii) qual o comportamento da computao reconfigurvel?; iii) quais so os principais conceitos bsicos da computao reconfigurvel?; iv) quais foram as principais motivaes para o surgimento, desenvolvimento e o uso da computao reconfigurvel?; v) Porque comear a estudar computao reconfigurvel? Nas possveis respostas devemos considerar a computao reconfigurvel como uma soluo intermediria entre as solues em HW e SW, com objetivos, metas e motivaes relacionados com a melhoria de desempenho, flexibilidade, generalidade, eficincia, custo e outros. E entre os motivos para o seu estudo devemos considerar e analisar a demanda computacional de algumas importantes aplicaes atuais e futuras, a inadequao de alguns modelos e estilos de computao atuais em termos de desempenho e flexibilidade, a posio e interesse das principais empresas e universidades do mundo e tambm a evoluo dos dispositivos computacionais em termos de arquitetura e tecnologia. Apresentamos a seguir algumas dentre as muitas definies de computao reconfigurvel existentes, e decidimos no criar mais uma nova definio, pois acreditamos que o mais importante seja inicialmente consolidar os conceitos bsicos sobre o assunto e no aceitar ou decorar uma ou todas as definies existentes. Algumas definies de computao reconfigurvel so:

"Dispositivo que realiza computao usando conexo espacial "ps fabricao" de elementos de computao" [Dehon 2000]. Enquanto os computadores tradicionais realizam computao fazendo conexes no tempo. "Computao reconfigurvel representa uma nova idia em filosofia de computao, na qual algum agente de hardware de propsito geral configurado para realizar uma tarefa especfica, mas pode ser reconfigurado sob demanda para realizar outras tarefas especficas." (http://www.acm.uiuc.edu/sigarch/projects/reconf/report_1.html) "Um novo paradigma de computao no qual circuitos integrados programveis so usados em conjunto com software para reconfigurar circuitos integrados FPGA dinamicamente e produzir arquiteturas de computador sob demanda." (http://www.starbridgesystems.com/) Considerando simultaneamente todos os aspectos e fatores apresentados anteriormente, observamos que a computao reconfigurvel foi proposta (ou talvez no tenha sido proposta explicitamente) como uma soluo (modelo, paradigma) intermediria que tenta reduzir ou eliminar as deficincias das solues usando paradigma de hardware (hardware fixo - HF) e das solues usando paradigma de software (hardware programvel - HP+SW), que pode ser um processador programvel atravs de um software codificado no seu nvel de conjunto de instrues (Instruction Set Architecture - ISA). Isso possibilita a obteno de um maior desempenho em relao ao paradigma de software (HP+SW) e uma maior flexibilidade em relao ao paradigma de hardware fixo (HF). Alm do desempenho e da flexibilidade podemos destacar outros fatores de motivao importantes como: eficincia, custo, generalidade, tolerncia falhas, e outras. Deste modo, conclumos que a computao reconfigurvel pode ser considerada um tipo de implementao (modelo ou paradigma) de soluo intermediria, entre as tradicionais solues em hardware (hardware fixo - HF) e em software (hardware programvel - HP+SW). Usando esse tipo de computao pretendemos alcanar ou nos aproximar do desempenho das solues implementadas em hardware fixo e da flexibilidade das solues implementadas em software e hardware programvel. Como indicado anteriormente, um sistema computacional e os dispositivos (mdulos) lgicos utilizados como blocos construtivos podem ter estrutura e/ou comportamento fixos, programveis, configurveis ou reconfigurveis. E na anlise da estrutura e do comportamento desse tipo de sistema computacional devemos

considerar aspectos de diversos nveis de abstrao como programao ou configurao, sistema, arquitetura, dispositivos e microarquitetura do dispositivo. Especificamente nos tpicos relacionados com a reconfigurao dos sistemas e dispositivos reconfigurveis devemos considerar (definindo e diferenciando) alguns importantes conceitos bsicos e os aspectos relacionados como: i) programao ou configurao; ii) configurao ou reconfigurao; iii) reconfigurao esttica ou dinmica; iv) reconfigurao parcial ou total; v) contexto de reconfigurao nico ou mltiplo; vi) reconfigurao em tempo de compilao ou em tempo de execuo; vii). reconfigurao local ou remota; vii) reconfigurao normal ou rpida; viii) cache de reconfigurao. Entre os conceitos indicados no pargrafo anterior vamos analisar mais detalhadamente os conceitos de programao e/ou configurao. Como resultado da anlise podemos destacar alguns pontos importantes: i) Entre algumas definies relacionadas com o termo configurao destacamos que configurao a forma exterior de um corpo, ou conformao. e configurar dar a forma ou figura de, representar. Neste caso, a configurao est mais relacionada com a estrutura ou a forma de um objeto ou sistema; ii) Entre as definies relacionadas com o termo programao destacamos que programa um conjunto de instrues a serem executadas por uma mquina capaz de interpret-las e comportamento sistmico do objeto. Em funo dessas definies consideramos que: i) Ns podemos programar, atravs de um processo denominado programao, usando um objeto denominado programa. No caso de um microprocessador o programa executvel composto de instrues do conjunto de instrues do nvel ISA, que so um conjunto de operaes (comportamentos) primitivas dos elementos de processamento (EP); ii) Ns podemos configurar, atravs de um processo denominado configurao, usando um objeto denominado padro de configurao (conjunto de padres de configurao). No caso de um dispositivo reconfigurvel, que pode ser um FPGA, o padro de configurao composto de bits de programao de configurao dos blocos lgicos reconfigurveis e dos elementos de interconexo e/ou roteamento reconfigurveis. Alm disso, devemos considerar a camada ou nvel arquitetural do sistema computacional onde realizamos a programao e/ou a configurao, se utilizaremos anlise interna ou externa e com modelo caixa preta ou caixa branca. programar fazer o programa de, planejar. Neste caso, a programao est mais relacionada com o

Deste modo, conclumos que possvel definir e controlar o comportamento global de um objeto ou sistema usando programao (indicao do comportamento geral do objeto) ou usando configurao, onde definimos (indicamos) a estrutura (forma) interna do objeto que formada pela interligao dos seus elementos construtivos bsicos e tambm definimos a lgica de funcionamento desses elementos bsicos, definindo o comportamento ou funcionamento dos seus elementos internos e indiretamente o comportamento global do objeto ou sistema. Considerando os demais conceitos indicados anteriormente podemos afirmar que: os conceitos de configurao ou reconfigurao esto relacionados com o nmero de configuraes que podemos realizar no dispositivo, ou seja, com a possibilidade de se definir ou alterar a configurao do dispositivo somente uma nica vez ou ento diversas vezes, sendo neste ltimo caso possvel reconfigurar-se o dispositivo muitas vezes ou constantemente se necessrio; os conceitos de reconfigurao esttica ou dinmica esto relacionados com a possibilidade de se reconfigurar o dispositivo no estado inativo (parado) ou durante o seu funcionamento normal; os conceitos de reconfigurao parcial ou total esto relacionados com a necessidade de se reconfigurar todos os recursos reconfigurveis do dispositivo ou se poder reconfigurar somente uma ou algumas partes do dispositivo; os conceitos de contexto de reconfigurao nico ou mltiplo esto relacionados com a existncia de um ou mais padres de configurao (bits de (re)configurao) armazenados no dispositivo; os conceitos de reconfigurao em tempo de compilao ou em tempo de execuo esto relacionados com a possibilidade de se reconfigurar o dispositivo durante a fase de execuo ou processamento (operao do dispositivo) ou somente antes do incio da fase de execuo ou processamento, que pode ser ou normalmente durante a fase de compilao; os conceitos de reconfigurao local ou remota esto relacionados com a localizao fsica (proximidade ou no) do padro de configurao do dispositivo; os conceitos de reconfigurao normal ou rpida esto relacionados com o tempo necessrio para se realizar a reconfigurao, que pode utilizar tcnicas como pr-busca de padro de configurao, compresso de configurao e/ou realocao ou defragmentao de configurao; o conceito de cache de reconfigurao est relacionado com o uso ou aplicao dos conceitos e tcnicas de memria cache para se armazenar os bits que formam os padres de configurao que podem ser utilizados para se reconfigurar os dispositivos reconfigurveis.

10

Considerando os principais conceitos apresentados podemos indicar as principais caractersticas e atributos desejveis das aplicaes mais indicadas para implementao usando computao reconfigurvel, ou em sistemas computacionais reconfigurveis, entre as quais podemos destacar: regularidade de comportamento, estrutura pipeline, paralelismo de dados, largura de bits varivel, aritmtica modesta e controle simples. Entretanto, com a evoluo da computao reconfigurvel, principalmente dos dispositivos reconfigurveis e dos ambientes de auxlio ao projeto, as aplicaes com caractersticas distintas tambm podem ser implementadas em sistemas reconfigurveis com ganhos bastante significativos. Um aspecto muito importante no desconsiderar que os conceitos relacionados com a computao reconfigurvel, apresentados neste tpico, como a reconfigurabilidade comportamental e/ou estrutural podem ser aplicados em qualquer objeto ou bloco construtivo pertencente a qualquer um dos nveis arquiteturais (abstrao) de um sistema computacional, e no somente nos dispositivos de hardware que realmente so usados para implementar fisicamente as operaes bsicas de computao. Analisando historicamente o surgimento do conceito de computao (re)configurvel podemos observar que o incio ocorreu com o uso de dispositivos de hardware programveis ou configurveis. Isso em parte explica a razo para a limitao atual da aplicao dos conceitos de computao reconfigurvel principalmente, seno unicamente ou exclusivamente, no nvel dos dispositivos de hardware e no em todos os nveis arquiteturais existentes nos sistemas computacionais. Deste modo, devemos pensar e tentar aplicar os conceitos de computao reconfigurvel em todos os possveis nveis arquiteturais dos sistemas computacionais, propondo e criando sistemas computacionais reconfigurveis com reconfigurabilidade multinvel hierrquica. Atualmente, uma das novas linhas de pesquisa no nosso grupo de pesquisa (http://www.lsdc.inf.pucminas.br) justamente analisar a aplicao ou utilizao dos conceitos de reconfigurao em outros nveis arquiteturais, onde o primeiro nvel a ser considerado o nvel de sistema operacional, principalmente em ambientes distribudos e/ou paralelos como aglomerados de computadores.

11

3 Arquiteturas Reconfigurveis Neste captulo apresentamos somente uma sntese dos principais conceitos e tpicos relacionados com as arquiteturas reconfigurveis, principalmente devido ao nmero limitado de pginas deste material. Na anlise das arquiteturas reconfigurveis devemos considerar os ambientes computacionais reconfigurveis, os componentes de hardware e os componentes de software. Algumas das muitas perguntas ou questes relevantes so: i) o que uma arquitetura reconfigurvel ou o que so as arquiteturas reconfigurveis?; ii) o que caracteriza uma arquitetura reconfigurvel?; iii) o que diferencia uma arquitetura reconfigurvel de uma arquitetura tradicional de sistemas computacionais?; iv) os principais conceitos de arquitetura de computadores continuam vlidos, totalmente ou parcialmente, na rea de arquiteturas reconfigurveis?; v) quais so os principais novos conceitos de arquiteturas reconfigurveis que no existiam ou no existem em arquiteturas computacionais tradicionais no (re)configurveis?; vi) quais so os ambientes de auxlio ao projeto e uso das arquiteturas reconfigurveis? Com relao s definies de arquiteturas reconfigurveis destacamos que ainda no existe um consenso geral, em funo dos motivos j citados no captulo anterior. Deste modo, optamos por apresentar algumas idias e conceitos sem uma grande preocupao com o formalismo e padronizao. As arquiteturas reconfigurveis ou arquiteturas de sistemas computacionais reconfigurveis so aquelas onde podemos aplicar ou utilizar os conceitos de reconfigurabilidade e implementar as tcnicas de reconfigurao j apresentadas e definidas no captulo 2. Ou seja, so as arquiteturas onde os blocos (mdulos) lgicos construtivos bsicos podem ser reconfigurados, na sua lgica ou funcionalidade interna, e os blocos de interconexo responsveis pela interligao desses blocos lgicos construtivos e pela definio da estrutura da arquitetura tambm podem ser reconfigurados. Esses blocos lgicos construtivos normalmente implementam ou so as unidades funcionais de processamento, armazenamento, comunicao ou entrada e sada de dados. Podemos nveis encontrar ou projetar arquiteturas reconfigurveis em diversos como: sistemas, equipamentos, placas, dispositivos e hierrquicos

microarquitetura dos dispositivos. E normalmente podemos utilizar arquiteturas reconfigurveis com reconfigurao em mltiplos nveis simultaneamente. As arquiteturas reconfigurveis podem ser puramente reconfigurveis ou ento hbridas (mistas), com utilizao dos modelos de hardware fixo e/ou hardware
12

programvel em conjunto com o modelo de hardware reconfigurvel. Isto se considerarmos somente a reconfigurao em hardware, pois tambm podemos usar a reconfigurao em software, onde os objetos definidos como hardware podem ser redefinidos como blocos ou mdulos construtivos. Sendo este ltimo, o nosso ponto de vista geral ou global sobre arquiteturas reconfigurveis. Podemos estar interessados na arquitetura de um sistema computacional reconfigurvel, que pode ser pura ou hbrida, e/ou tambm na arquitetura interna (microarquitetura) dos prprios blocos ou mdulos construtivos, que no contexto restrito so os dispositivos reconfigurveis. Estes ltimos sero apresentados e analisados no prximo captulo. Nesse tipo de sistema (arquitetura) configuramos espacialmente ou topologicamente a estrutura (diagrama de blocos funcionais) que implementa o comportamento desejado, e no utilizamos uma nica estrutura fixa (diagrama fixo nico de blocos padro), que pode ser um caminho de dados de um processador, durante vrios ciclos. No caso dos processadores, os programas executveis podem alterar o comportamento dessa estrutura fixa por intermdio de um conjunto de instrues (operaes) definidas na fase de projeto e fixas aps a fabricao do hardware (processador com nvel ISA nico e fixo). Entre as principais caractersticas das arquiteturas reconfigurveis podemos destacar: blocos lgicos reconfigurveis bsicos (arquitetura interna, complexidade, granularidade), granularidade (fina, mdia, grossa), multigranularidade, estrutura ou topologia dos blocos construtivos reconfigurveis (arranjo unidimensional, arranjo bidimensional, pipeline, crossbar), programabilidade (nica, mltipla), reconfigurao (esttica, dinmica, parcial, total, local, remota, normal, rpida), blocos de interligao reconfigurveis (arquitetura interna, topologia interligao, tipo de rota, roteabilidade), modelo de computao (monoprocessador, multiprocessador, SIMD, MIMD, pipeline, VLIW), propsito (geral, especfico), modelo de implementao de soluo (reconfigurvel, mista, fixa, programvel), . Os tpicos estudados em arquiteturas reconfigurveis esto relacionados com arquitetura de computadores convencionais e no convencionais, arquitetura de circuitos integrados, arquitetura de processadores e tambm com os conceitos e teorias relacionadas com a reconfigurabilidade e outros conceitos apresentados no captulo 2. Deste modo, o que diferencia as arquiteturas tradicionais (no reconfigurveis) e as reconfigurveis so principalmente os aspectos e conceitos de reconfigurao. Entretanto, devemos lembrar que arquitetura de computadores no
13

somente hardware, estando relacionada com hardware e com software. Assim, conclumos que as arquiteturas reconfigurveis podem apresentar qualquer combinao possvel de arquitetura (hardware e/ou software) (re)configurveis ou no (re)configurveis. Devemos nos lembrar que nas arquiteturas dos sistemas computacionais reconfigurveis muitos ou quase todos os conceitos e nveis de abstrao arquiteturais tradicionais (no reconfigurveis) como algoritmos, linguagens, compiladores, sistemas operacionais, arquiteturas, microarquiteturas continuam ou podem continuar existindo. Deste modo, os conceitos e conhecimentos de arquitetura de computadores tradicionais tambm so muito importantes. Entre os diversos conceitos comuns vamos analisar o paralelismo existente nas arquiteturas reconfigurveis, onde podemos destacar os seguintes tipos de paralelismo: paralelismo no nvel de bits; paralelismo no nvel de instrues (Instruction Level Parallelism - ILP) como o pipeline; paralelismo no nvel de processadores (Processor Level Parallelism - PLP) como (Single Instruction Stream Multiple Data Stream SIMD) muito utilizado nos laos de repetio e (Multiple Instruction Stream Multiple Data Stream - MIMD) muito usado dentro da e/ou entre as aplicaes ou processos. O paralelismo atualmente muito utilizado em arquiteturas computacionais tradicionais e em arquiteturas reconfigurveis. Os sistemas tradicionais, como os multiprocessadores ou multicomputadores, normalmente usam apenas um ou poucos nveis de paralelismo, enquanto os sistemas reconfigurveis normalmente usam ou podem usar paralelismo em vrios nveis simultaneamente. Sendo que o paralelismo pode ser usado em tempo de compilao e/ou de execuo. Uma arquitetura reconfigurvel pode compartilhar todas essas caractersticas de uma "arquitetura tradicional", mas organiza e implementa a computao de maneira muito diferente. Ao invs de processar uma funo atravs de um conjunto de instrues executadas seqencialmente ao longo do tempo, como em um processador, as arquiteturas reconfigurveis geralmente processam a funo atravs de unidades funcionais configuradas no espao (unidades lgicas mapeadas em diferentes blocos construtivos bsicos dentro dos dispositivos reconfigurveis, como os FPGA's). Temos portanto, computao paralela envolvendo diferentes unidades funcionais que geram e consomem resultados intermedirios. A diferena portanto est na computao temporal/seqencial das operaes ou tarefas versos computao espacial/paralela das operaes ou tarefas.

14

O espectro atual de sistemas computacionais reconfigurveis e tambm das suas arquiteturas muito amplo e diversificado, com destaque para os seguintes tipos: coprocessadores reconfigurveis, processadores reconfigurveis, computadores reconfigurveis, sistemas embutidos reconfigurveis e sistemas hbridos (compostos de mdulos reconfigurveis e mdulos no reconfigurveis, que podem ser implementados com hardware fixo ou hardware programvel usando software). Uma anlise da utilizao e da evoluo desses sistemas nos indica uma tendncia de crescimento na amplitude e na complexidade desse espectro de sistemas computacionais reconfigurveis e de arquiteturas reconfigurveis. Entre os projetos relacionados com arquiteturas reconfigurveis (sistemas computacionais reconfigurveis) podemos citar alguns projetos de pesquisa acadmicos e alguns projetos de pesquisa comerciais. Entre as arquiteturas reconfigurveis acadmicas podemos destacar algumas como: Garp (UC Berkeley); Mojave (UCLA); PipeRench (Carnegie Mellon University), Splash 2 (); SLAAC (ISI, BYU, UCLA, Sandia); Riley-2 (Imperial College, HP); SAT (ETH Zurich); Sonic (Imperial College, Sony Broadcast); SPACE2 (Universidade do Sul da Austrlia UNISA) e SPARCS (Cincinnati University). Enquanto entre as arquiteturas reconfigurveis comerciais destacamos: DECPerLe 1 (DEC Paris); Champ (Lookheed Sanders); Wildcard, Wildforce, Wildstar (Annapolis Micro Systems) (www.annapmicro.com); Palladium, Cobalt (Sistemas de verificao de hardware) (Quickturn, a Cadence Company) (www.quickturn.com), H.O.T. Development Systems e VW-300 (Virtual Computer Corporation) (www.vcc.com). Os tpicos relacionados com os ambientes (mtodos, tcnicas e ferramentas) de auxlio ao projeto e uso das arquiteturas e dos sistemas computacionais reconfigurveis sero apresentados e analisados no captulo 5 deste minicurso. Dentro da rea de arquiteturas reconfigurveis existem alguns importantes possveis problemas que podemos indicar e tentar analisar futuramente. Estes problemas esto relacionados principalmente com gargalos de desempenho, modos e mtodos de programao das aplicaes, modos de reconfigurao, complexidade e tempo de reconfigurao, desempenho das arquiteturas, flexibilidade das arquiteturas, adequao ou inadequao das arquiteturas aos problemas e principalmente com os modos eficientes de implementao dos conceitos de arquiteturas e computao reconfigurveis.

15

Como atualmente os principais elementos construtivos das arquiteturas reconfigurveis so os dispositivos (hardware) reconfigurveis, vamos apresentar e analisar mais detalhadamente no prximo captulo esses tipos de dispositivos, suas arquiteturas e suas caractersticas tcnicas.

16

4 Dispositivos Reconfigurveis Neste captulo apresentamos os principais conceitos relacionados com os dispositivos reconfigurveis, destacando as principais caractersticas tcnicas, as arquiteturas internas dos dispositivos, tipos e tcnicas de configurao ou reconfigurao. Entre as muitas referncias para um estudo mais detalhado dos dispositivos reconfigurveis destacamos a grande quantidade de material disponvel nos sites WEB dos principais fabricantes de dispositivos reconfigurveis. Entre as muitas perguntas importantes relacionadas com os dispositivos reconfigurveis podemos destacar algumas, como: i) o que um dispositivo reconfigurvel; ii) quais so as principais caractersticas dos dispositivos reconfigurveis?; iii) quais so as principais diferenas entre os dispositivos fixos, programveis e reconfigurveis? iv) podemos ter dispositivos hbridos, que combinam os diferentes tipos de dispositivos?; v) o que caracteriza a arquitetura interna dos dispositivos reconfigurveis? vi) quais so ou seriam as caractersticas tcnicas ideais ou desejveis dos dispositivos reconfigurveis?; vii) quais so os ambientes de auxlio ao projeto e uso dos dispositivos reconfigurveis? Algumas das principais caractersticas dos dispositivos reconfigurveis esto relacionadas com a sua reconfigurabilidade, como as implementaes dos principais conceitos bsicos apresentados no captulo 2. Enquanto as principais diferenas entre os dispositivos fixos, programveis e reconfigurveis so baseadas nos conceitos de computao reconfigurvel e arquiteturas reconfigurveis que foram apresentados nos captulos dois e trs. Os ambientes de auxlio ao projeto e uso dos dispositivos reconfigurveis sero apresentados e analisados no captulo cinco. Programas de CAD (Computer Aided Design) podem auxiliar o projetista na criao de aplicaes com FPGAs, assim como outros dispositivos lgicos programveis Existem diversos tipos e classes de dispositivos programveis (configurveis) com capacidade de implementar funes lgicas como: EPROM (Erasable Programmable Read Only Memory), PLA (Programmable Logic Array), PAL (Programmable Array Logic), etc. Devido necessidade de implementar funes mais complexas, surgiram os dispositivos conhecidos como CPLD's (Complex Programmable Logic Devices) e outros tipos de dispositivos programveis como o MPGA (Mask Programmable Gate Array) e o FPGA (Field Programmable Gate Array). Nos MPGAs a especificao das funes lgicas deve ser feita antes da finalizao do processo de fabricao do circuito integrado, isso introduz um alto custo que s compensado pela produo em alta escala e tambm causa um
17

longo ciclo de desenvolvimento e fabricao. As FPGAs so dispositivos programveis em campo, ou seja, podem ter sua configurao alterada sem que ele seja retirado do circuito ou equipamento. A capacidade atual destes dispositivos est na faixa dos milhes de portas lgicas. Entretanto, neste minicurso estamos interessados somente nos dispositivos que apresentam a capacidade de reconfigurao, ou seja, poder ser configurado diversas vezes aps a sua fabricao. Entres os quais destacamos os FPGA's. Os FPGAs dispositivos que so utilizados para implementar os sistemas so computacionais reconfigurveis (modelo ou paradigma reconfigurvel), incluindo os (Field-Programmable Gate Arrays) enfocados neste trabalho, normalmente compostos de uma matriz de elementos reconfigurveis. Cada elemento deve ser primeiro configurado antes de ser utilizado para realizar alguma computao (operao). Para tal, existem os bits de configurao (bitstreams) dos dispositivos, que configuram e reconfiguram o dispositivo determinando a funo que o mesmo ir desempenhar a partir do momento em que configurado ou reconfigurado. No momento da configurao, so especificadas (configuradas) alm da funo que cada elemento reconfigurvel ir desempenhar, as portas que sero de entrada ou de sada de cada elemento reconfigurvel da matriz. Desta forma, esta configurao das portas gera um outro tipo de configurao que a configurao do roteamento dos dados. Este roteamento de grande importncia para o desempenho e utilizao do dispositivo reconfigurvel, pois quanto melhor o roteamento, melhor a utilizao da rea do dispositivo reconfigurvel e melhor o desempenho conseguido na execuo das funes configuradas no dispositivo. essa configurao do roteamento que vai influenciar no tempo que o dispositivo vai levar para responder a um sinal numa entrada e gerar uma sada. nessa fase do roteamento onde tambm se deve preocupar com questes como interferncia de sinais (quando a integridade de, por exemplo, um barramento pode ser comprometida devido a freqncia que o dispositivo esteja utilizando ser alta e interferir nos valores dos bits que trafegam por esse caminho).

18

Fig. 4.1 - Arquitetura interna de um FPGA Um FPGA tpico possui uma arquitetura interna composta de uma matriz de blocos lgicos configurveis (CLB - Configurable Logic Block) cercados por uma rede de interconexo programvel, formada de blocos de interconexo. Circundando todo o circuito, existem os blocos de entrada e sada (IOB - Input Output Block), que tambm so programveis, e que servem como interface entre o mundo exterior e a lgica interna. A arquitetura de um CLB varia de famlia para famlia e de fabricante para fabricante, mas basicamente so compostos de pontos de entrada, que se conectam a blocos que implementam funes puramente combinacionais, (LUT Lookup table), multiplexadores que direcionam o fluxo dos sinais internamente ao CLB; e de registradores (tipicamente flip-flops) que esto ligados s sadas e tambm podem realimentar as entradas dos geradores de funes combinacionais. Todos os elementos so configurveis e propiciam uma grande flexibilidade para implementao de funes. A rede de interconexo programvel composta por diferentes tipos de segmentos de conexo, capazes de interligar a maioria das entradas e sadas dos CLBs entre si e aos IOBs. Isso tudo permite que circuitos complexos, mquinas de estado, e algoritmos sejam implementados nos FPGAs. Como podemos observar existem recursos disponveis para a implementao de paralelismo na arquitetura interna dos dispositivos reconfigurveis. Alm disso, existem os recursos de configurao ou reconfigurao do dispositivo (re)configurvel, apresentados nos captulos dois e trs, como conceitos e caractersticas arquiteturais, que podem apresentar as seguintes caractersticas: capacidade de realizar uma nica configurao ou muitas reconfiguraes, a reconfigurao pode ser esttica ou dinmica, pode ser realizada em tempo de
19

compilao ou em tempo de execuo, pode ser parcial ou total, modo de configurao nico ou mltiplo, quantidade de configuraes armazenadas simultaneamente no dispositivo, e o tempo gasto com a configurao ou a reconfigurao. Na reconfigurao esttica, o dispositivo configurado antes de comear a fazer a computao (processamento) dos dados. Neste tipo de configurao, o dispositivo primeiramente configurado e mantm o seu estado e funcionalidades enquanto se necessite destas caractersticas. Caso se necessite reconfigurar para que se tenha outra funcionalidade, o dispositivo para de executar as operaes e reconfigura-se o dispositivo para depois voltar a executar novamente as operaes de computao. J na reconfigurao dinmica, o dispositivo configurado e comea a processar os dados de entrada. Quando o dispositivo necessita de alguma nova funcionalidade, reconfigura-se uma rea que no esteja processando nenhum dado e a reconfigurao ocorre paralelamente execuo das respectivas operaes de computao. Nem todos os dispositivos possuem reconfigurao dinmica. Dessa forma, os dispositivos que no possuem esta caracterstica, dependendo da aplicao, perdem em desempenho. Passada a etapa de configurao, os dispositivos reconfigurveis esto prontos para serem usados. Normalmente, os sistemas reconfigurveis hbridos usam um hardware reconfigurvel junto a um processador de propsito geral (GPP general purpose processor) que o auxilia nos processos. O dispositivo reconfigurvel, geralmente um FPGA. Este dispositivo serve para acelerar a execuo de algoritmos mapeando as partes que requerem uma demanda computacional grande para o substrato reconfigurvel. J o GPP, serve para executar o algoritmo que no pode ser eficientemente acelerado pelo dispositivo reconfigurvel. Assim sendo, os sistemas reconfigurveis hbridos utilizam, nesses casos, os dispositivos reconfigurveis como sendo um co-processador para o GPP. Cada elemento reconfigurvel pode variar de uma simples lookup table (LUT) de 3 bits at uma complexa unidade lgica aritmtica (ALU aritmetic logic unit) de 4 bits ou mais bits. Esta diferena em termos (nvel) de simplicidade / complexidade chamada granularidade do dispositivo reconfigurvel. Dispositivos mais simples (de gro fino) so indicados para aplicaes de manipulao no nvel dos bits, enquanto os mais complexos (dispositivos de gro grosso) so indicados para aplicaes que envolvem computaes mais complexas como manipulaes de imagens e outras

20

tpicas aplicaes de caminho de dados, com manipulao de dados com largura (codificao) de vrios bits. A seguir apresentamos e analisamos alguns dispositivos reconfigurveis acadmicos e/ou comerciais, considerando as principais caractersticas tcnicas, vantagens e desvantagens. Entre os dispositivos comerciais (fabricantes e famlias) destacamos os mais utilizados no Brasil, fabricados pelas empresas Altera (http://www.altera.com/) e Xilinx (http://www.xilinx.com/) e tambm os fabricados pelas empresas Actel (http://www.actel.com/) e Atmel (http://www.atmel.com/). Enquanto entre os dispositivos acadmicos destacamos alguns indicados na tabela 6.1 apresentada no captulo seis. Na anlise destes dispositivos um aspecto muito importante o estudo e a anlise da arquitetura interna dos dispositivos reconfigurveis, considerando os blocos lgicos e os blocos de interconexo. Pretendemos incluir esta anlise detalhada numa verso futura deste minicurso. Os dispositivos mais utilizados atualmente para computao reconfigurvel so os FPGA. Este tipo de dispositivo foi projetado inicialmente para prototipao de circuitos. Apesar de no serem inicialmente projetados e recomendados para computao reconfigurvel, devido ao seu custo e fcil acesso, foi e est sendo amplamente utilizado para implementar o paradigma de computao reconfigurvel. Dentre os principais fabricantes de FPGA destacam-se a Altera, Xilinx, Actel, Atmel e cada fabricante possui vrias famlias de dispositivos, cada qual voltado para tipos diferentes de aplicaes. A Altera possui as famlias (FPGAs) Stratix, Apex (Apex II, Apex 20k), Excalibur, Flex (Flex 10k, Flex 8000, Flex 6000), Mercury, Acex 1k e as famlias (CPLD) Max 7000, Max 3000A dentre outras. A famlia Stratix possui como caractersticas principais a disponibilidade de dispositivos de gro grosso com at 114.140 elementos lgicos, 110Mbits de memria integrada, blocos DSP otimizados e E/S de alto desempenho com interfaces de alta velocidade. J a famlia Apex composta por dispositivos de gro grosso que so feitos para servir como solues SoPC (System on a programmable chip) complexas. Os dispositivos da famlia Flex so compostos de portas lgicas onde a capacidade (o nmero de portas lgicas) dos dispositivos varia de 10 mil a 250 mil portas lgicas, PLL e atraso programvel e so os dispositivos da Altera que possuem o melhor custo / benefcio. Alm disso, podemos utilizar o NIOS soft embedded processor com as famlias Stratix e

21

Excalibur. E com todos os dispositivos da Altera quando usamos o ambiente de projeto Quartus II. A Xilinx possui as famlias (FPGAs) Virtex (Virtex, Virtex II, Virtex II Pro), Spartan (Spartan XL, Spartan II, Spartan IIE) e as famlias (CPLDs) CoolRunner, CoolRunner II, XC 9500 como principais. Cada uma destas famlias possui suas caractersticas prprias e suas aplicaes. A famlia Virtex (Fig. 4.2) foi introduzida em 1998 e foi a primeira linha de FPGAs a oferecer 1 milho de portas lgicas. Esta famlia redefiniu a lgica programvel expandindo as capacidades tradicionais do FPGA para incluir um poderoso conjunto de caractersticas que endeream problemas no nvel da placa para projeto de sistemas de alto desempenho. Hoje a famlia Virtex possui dispositivos com mais de trs milhes de portas lgicas e oferecem um chip de memria adicional para aplicaes de roteamento de redes (network switch applications). J a famlia Spartan, ideal para aplicaes em que se necessita uma relao custo / benefcio e pode substituir dispositivos com portas lgicas fixas, produtos de aplicao especfica em geral e produtos como chip sets de interface com barramento. Esta famlia oferece algumas das caractersticas mais avanadas atualmente em termos de FPGA, o que inclui suporte programvel para at 19 padres de E/S (incluindo diferentes tipos de E/S como LVDS, ou low voltage differential signalling); grande quantidade de IP (o que inclui cores de processador e de DSP avanados), memria RAM integrada no dispositivo e delay lock-loops para o gerenciamento a nvel do dispositivo (chip) e da placa. Os dispositivos da famlia Spartan provm uma integrao de funes como as de DSP, traduo LVDS, processamento secundrio, PLLs, FIFOs e drivers de barramento de sistema que no passado eram necessrios para completar um projeto de sistema computacional.

Fig.4.2 - Dispositivo da srie Xilinx Virtex


22

A Actel possui as famlias de FPGAs de propsito geral, de dispositivos Embedded Programmable Gate Array (EPGA ) que so dispositivos com ncleo FPGA embutido (EPGA) e de FPGAs Antifuse. As tcnicas ou tecnologias de programao ou configurao podem ser Antifuse, Flash e SRAM Um dispositivo FPGA Antifuse um dispositivo programvel (configurvel) que utiliza a tecnologia Antifuse, que no voltil, conserva ou retm a sua configurao indefinidamente e permite apenas uma nica configurao. Os dispositivos que utilizam esse tipo de tcnica (tecnologia) de configurao (programao) no podem suportar o processo ou operao de reconfigurao que essencial para implementar os sistemas computacionais reconfigurveis. Deste modo, no podemos implementar sistemas computacionais reconfigurveis com esse tipo de dispositivo configurvel ou programvel. A Atmel possui trs principais famlias de dispositivos programveis, Field Programmable Gate Array (FPGA), que so as famlias AT6000, AT40K e AT40KAL. A famlia AT6000 (FPGAs) foi projetada para acelerar o desempenho de sistemas baseados em processador enquanto reduz consumo de potncia, nmero de componentes e custo. O grande nmero de registradores (1,024 - 6,400) a tornam ideal para uso como coprocessador DSP reconfigurvel. As famlias (sries) AT40K e AT40KAL, so FPGAs com densidades que variam de 5K a 50 K portas utilizveis e so projetadas para alta densidade, computao DSP intensiva e outros projetos de lgica rpida. A famlia AT40KAL soluciona os problemas de compromisso entre lgica e SRAM provendo memria FreeRAM (independente de clulas lgicas) rpida de 10 ns, flexvel e distribuda. As famlias AT6000, AT40K e AT40KAL so FPGAs com a habilidade de implementar projetos de cache lgico, onde parte do FPGA pode ser reprogramado sem a perda dos dados armazenados nos registradores, enquanto o restante do FPGA continua a operar (funcionar) sem ruptura (parada). Alm dessas famlias de FPGAs a Atmel possui a famlia FPSLIC, Field Programmable System Level Integrated Circuits (FPSLIC) que combinam de 5K a 50K portas das FPGAs AT40KAL com at 36K de SRAM e uma MCU AVR de 25 MHz. Alm dos prprios dispositivos reconfigurveis um outro aspecto muito importante no projeto e desenvolvimento de sistemas computacionais reconfigurveis e suas aplicaes so os mtodos, ambientes e ferramentas de
23

projeto disponveis. Existem ferramentas, ambientes e mtodos de projeto de sistemas eletrnicos usando dispositivos reconfigurveis que so proprietrios e especficos para determinados fabricantes e/ou famlias de dispositivos reconfigurveis e outros que so padro e independentes de fabricantes e famlias de dispositivos. Uma anlise destes conceitos e tipos de ferramentas ser apresentada no captulo cinco intitulado "Desenvolvimento de aplicaes em sistemas reconfigurveis", enquanto os detalhes especficos dos ambientes e ferramentas para cada fabricante e famlia de dispositivos podem ser encontrados nas documentaes especficas e nos sites WEB dos fabricantes desses dispositivos. Existem alguns dispositivos reconfigurveis que foram projetados e otimizados especialmente para a implementao de computao reconfigurvel ou seja de sistemas computacionais reconfigurveis. Na anlise dos principais problemas para se implementar sistemas computacionais reconfigurveis com os dispositivos disponveis (comercialmente) podemos destacar os problema relacionados com: desempenho, configurao do dispositivo, flexibilidade do dispositivo, adequao da arquitetura interna do dispositivo e modo (forma) de especificao e programao da funcionalidade desejada. E tambm podemos indicar as principais caractersticas tcnicas desejveis nos dispositivos reconfigurveis. As principais concluses desse captulo so que a maioria dos dispositivos reconfigurveis comerciais disponveis atualmente, principalmente os FPGA, ainda no so os dispositivos ideais para a implementao de sistemas computacionais reconfigurveis. Pois so orientados para implementar lgica de cola (glue logic) de sistemas digitais, implementar sistemas digitais fixos, emulao de lgica digital e implementao de prottipos de sistemas digitais. Mas esta situao tm e est sendo alterada nos ltimos anos. Geralmente os tempos de reconfigurao so longos e no compatveis com a idia de reconfigurao em tempo de execuo. Deste modo, acreditamos que ainda seja necessrio o desenvolvimento (surgimento) de novos tipos e famlias de dispositivos reconfigurveis orientados e otimizados para utilizao em sistemas computacionais reconfigurveis. Alm disso, normalmente so configurados usando mtodos, ambientes e ferramentas tpicas de projeto (e profissionais) de hardware e no de computao. Considerando o uso dos dispositivos reconfigurveis em sistemas computacionais reconfigurveis, principalmente com reconfigurao em tempo de execuo, esperamos ambientes
24

de projeto baseados em modelos computacionais e linguagens de programao de alto nvel.

25

5 Desenvolvimento de solues em sistemas computacionais reconfigurveis Existem diversos mtodos e tcnicas para o desenvolvimento de aplicaes/solues em sistemas computacionais. Neste momento, considerando principalmente o contexto da computao reconfigurvel, a apresentao e possvel resposta de algumas perguntas podem nos auxiliar no estudo e aprendizado desse tpico, entre as quais destacamos algumas: i) quais so os mtodos e tcnicas usadas para desenvolver solues implementadas em, ou usando, sistemas computacionais reconfigurveis?; ii) quais so as principais diferenas em relao aos mtodos e tcnicas usadas com computao tradicional?; iii) existem mtodos, tcnicas e ferramentas especficas para o desenvolvimento de solues em sistemas computacionais reconfigurveis? Neste captulo apresentamos alguns mtodos e tcnicas usadas atualmente para o desenvolvimento de solues de problemas, aplicaes computacionais ou programas, em sistemas computacionais tradicionais e reconfigurveis. Alm disso, apresentamos alguns possveis modos de criao ou desenvolvimento de programas fonte (solues) para implementao em sistemas computacionais reconfigurveis. Apresentamos e analisamos algumas ferramentas de auxlio ao projeto e programao de sistemas computacionais reconfigurveis como: ambientes de projeto e desenvolvimento, linguagens de programao, compiladores, depuradores e simuladores. Os leitores interessados podem encontrar material adicional e mais avanado em [Compton 2002]. 5.1 Sistemas Computacionais Tradicionais O desenvolvimento de solues usando sistemas computacionais tradicionais pode ser dividido em dois tipos de implementao: software e hardware. A escolha do tipo de implementao feita com base, principalmente, no tipo de problema, a tecnologia disponvel, os custos e no tempo de execuo exigido pela aplicao. O desenvolvimento de um software est, ou deveria estar, baseado nas tcnicas de engenharia de software [Pressman 2001]. De maneira simplificada, o desenvolvedor inicia, ou deveria iniciar, com a descrio do problema e a anlise do mesmo. Depois de feita a anlise, o desenvolvedor deve fazer o projeto da soluo. importante observar que ao final dessa etapa, o desenvolvedor tem a soluo para o problema e deve saber quais os paradigmas de programao e computao que melhor se adequam soluo proposta. Muitas vezes os diversos paradigmas (exemplo: procedural, lgico) no so avaliados diminuindo assim o
26

desempenho e at mesmo a capacidade de resoluo de problema da soluo proposta. Depois disso, a soluo representada atravs de um algoritmo. A partir da codificao desse algoritmo em uma determinada linguagem obtm-se o programa fonte. Aps compilar o programa fonte gerado um programa executvel para um determinado nvel arquitetural, que pode ser o sistema operacional (nvel hbrido), que composto por instrues do nvel sistema operacional e tambm do nvel ISA (Instruction Set Architecture). O programa executvel composto de uma srie de instrues entendidas pelo sistema operacional e/ou pertencentes ao conjunto de instrues do processador. Quando o programa executado, suas instrues so lidas, decodificadas e executadas pelo processador. Pode-se dizer que a execuo de um software a utilizao de um hardware programvel com sua funcionalidade definida ou controlada usando-se apenas as instrues do nvel ISA desse hardware programvel. A utilizao de software garante flexibilidade ao sistema. Isso significa que vrias solues (funcionalidades) podem ser implementadas nesse sistema. Pode-se ento dizer que o processador e, desse modo, o sistema computacional, possui funcionalidade programvel (varivel), isto , a funcionalidade do processador modificada de acordo com o software que est sendo executado. O desenvolvimento de solues em hardware feito utilizando as tcnicas de engenharia eletrnica ou engenharia de hardware. Novamente tem-se a definio do problema e sua anlise, no entanto, apesar de existir uma etapa de projeto de soluo, nem sempre existe uma representao da soluo atravs de um algoritmo, podendo ser implementado somente um circuito eletrnico. Depois do projeto da soluo, feita a sntese do circuito. A funcionalidade de uma implementao pode ser vista de duas maneiras diferentes: uma externa e uma interna. A externa se refere as funcionalidades de uma implementao do ponto de vista de quem a utiliza. Nessa viso, uma ULA (Unidade Lgica Aritmtica) programvel, j que algumas vezes ela faz soma, outras subtrao, dependendo dos parmetros que so passados para ela. No entanto, usando uma viso interna, devemos considerar que foi previsto e definido no momento do projeto da implementao. Nessa viso, a ULA no programvel, porque ela s realiza as operaes que foram previstas e definidas em seu projeto e implementao. Considerando a viso (estrutura e funcionalidade) interna, uma implementao em hardware fixo possui uma funcionalidade (fixa) no programvel,
27

gerando perda de flexibilidade. Mas importante considerar uma das vantagens da implementao em hardware, que o desempenho. Comparando-se tecnologias semelhantes, uma implementao em hardware possui desempenho melhor que uma implementao em software porque, entre outras coisas, no necessrio ler e decodificar instrues, o hardware j sabe o que fazer. Assim, a escolha do tipo de implementao feita com base nos fatores anteriormente citados. No entanto, muitas vezes, esses dois tipos de implementao no so totalmente satisfatrios. Como citado anteriormente, pode existir um desejo de unir flexibilidade e desempenho. Nesse contexto surgiram os sistemas computacionais reconfigurveis [Villasenor 1997] [Ordonez 2000] [SCR 2001]. 5.2 Sistemas Computacionais Reconfigurveis Os sistemas computacionais reconfigurveis surgiram como uma implementao intermediria, entre os tradicionais hardware e software. Esses sistemas pretendem alcanar, ou se aproximar do desempenho das solues implementadas em hardware e da flexibilidade das solues implementadas em software. O desenvolvimento de solues implementadas em sistemas computacionais reconfigurveis inicia com a descrio e anlise do problema [Coelho 1998]. A soluo um pouco diferente das tradicionais. Como os sistemas reconfigurveis podem combinar hardware reconfigurvel (soluo em hardware reconfigurvel) com hardware programvel (soluo em software), a soluo pode ser dividida em duas partes. Essa fase, em que a soluo dividida conhecida como particionamento [Albuquerque 1999]. Depois dessa fase, o desenvolvimento do software feito de maneira semelhante tradicional. Os sistemas reconfigurveis podem ser hbridos, implementando parte da soluo em hardware reconfigurvel e a parte de software em hardware programvel (por exemplo, processadores). No entanto eles podem implementar a soluo somente em hardware reconfigurvel. A implementao da soluo, ou de parte dela, em hardware reconfigurvel acontece da mesma maneira. Alm de sistemas que utilizam somente hardware reconfigurvel e os que utilizam tambm hardware programvel, podem existir sistemas em que parte da soluo implementada em software e hardware programvel, parte em hardware reconfigurvel e uma outra parte em hardware fixo.

28

Inicialmente, o desenvolvimento de solues de sistemas reconfigurveis implementadas em hardware reconfigurvel era feito atravs das tcnicas de engenharia eletrnica ou engenharia de hardware, semelhante ao desenvolvimento de solues de sistemas tradicionais implementadas em hardware fixo. Com o aperfeioamento dos dispositivos reconfigurveis, como os FPGAs, e dos ambientes de auxlio ao projeto entre outros fatores, o desenvolvimento da parte da soluo implementada em hardware reconfigurvel mudou um pouco. Essa mudana ocorreu pelo desejo de aproximar o desenvolvimento de solues em sistemas reconfigurveis ao desenvolvimento de software, desejando-se como resultado um programa e no um circuito, como ocorre no desenvolvimento de hardware fixo. Surge ento o conceito de programa fonte que ser transformado, gerando os bits de configurao dos dispositivos reconfigurveis, independentemente do mtodo de criao e desenvolvimento utilizado. 5.3 Modos de desenvolvimento de solues em sistemas reconfigurveis Inicialmente, o desenvolvedor de solues para sistemas computacionais reconfigurveis fazia o particionamento, quando necessrio, e depois configurava o hardware reconfigurvel diretamente, considerando os blocos lgicos e de conexo que o compe. Como essa tcnica exige grande conhecimento do hardware alvo por parte do desenvolvedor, foram criados modos de desenvolvimento, ambientes, ferramentas e linguagens para facilitar esse trabalho [Compton 2002]. Algumas dessas abordagens que surgiram e que servem para abstrair a arquitetura do sistema alvo sero descritas a seguir. A primeira abordagem a utilizao de diagramas esquemticos. Nessa soluo, o particionamento, se houver, feito manualmente. A parte da soluo implementada em hardware reconfigurvel desenvolvida utilizando ferramentas que a partir da captura do esquemtico geram os bits de configurao de um determinado dispositivo reconfigurvel. H necessidade de conhecimento de componentes lgicos e desenvolvimento de hardware por parte do desenvolvedor. O esquemtico uma representao visual de portas e componentes lgicos combinacionais e seqenciais do hardware que faz parte da soluo implementada no sistema reconfigurvel. Geralmente nesse tipo de ferramenta possvel usar componentes mais complexos j prontos, como somadores, ULAs (Unidade Lgica Aritmtica) e memrias, por exemplo. Essa abordagem geralmente no aplicada a projetos grandes por causa da dificuldade que existe em se fazer uma
29

representao grfica de muitos componentes. Alm disso, o desenvolvedor ainda precisa ter um bom conhecimento de projeto de sistemas lgicos. Outra abordagem a utilizao de linguagens de descrio de hardware como VHDL [Ashenden 1990] ou Verilog para a parte da soluo que implementada em hardware. Programas escritos nessas linguagens so compilados usando-se uma ferramenta que podem gerar os bits de configurao para um dispositivo especfico. VHDL uma linguagem estruturada que oferece a possibilidade de descrever o hardware e este ser simulado antes de sua sntese, facilitando a validao ou verificao, tanto em termos de funcionamento quanto em termos de tempos de atraso dos componentes e desempenho, sem a necessidade da prototipao do sistema. Alm disso, um programa em VHDL pode ser particionado e uma parte dele ser implementada em software (hardware programvel) e a outra parte em hardware reconfigurvel. Um programa em VHDL pode ser escrito basicamente usando dois tipos (modelos) de descrio: estrutural e comportamental. Na descrio estrutural, a organizao fsica e topolgica do sistema descrita. Isso quer dizer que so especificadas as entradas e/ou sadas, os componentes lgicos, a interligao deles e os sinais que compem o sistema. Existem bibliotecas em VHDL que contm entidades que podem ser usadas nos projetos, como somadores, contadores, multiplicadores. No entanto, na abordagem usando VHDL estrutural necessrio conhecimento de projeto de hardware. Na descrio comportamental, no necessrio descrever a organizao fsica e topolgica do sistema, somente o comportamento. Nessa abordagem, so descritas as funes (comportamento) do sistema. Um programa que utiliza esse tipo de descrio possui o mesmo formato de um programa fonte escrito em uma linguagem de programao de alto nvel, como C++. Essa abordagem diminui a necessidade de conhecimento em projeto de hardware, aumentando a facilidade de desenvolvimento do sistema. No entanto, os sistemas gerados a partir desse tipo de descrio podem no ser to otimizado em questes de desempenho e rea de dispositivo ocupada quanto os descritos em VHDL estrutural. Alm disso, necessrio conhecer a linguagem e ela ainda mais parecida com uma descrio de hardware do que de software. A ltima abordagem a descrio do sistema atravs de uma linguagem de programao de alto nvel. Nessa abordagem, o desenvolvedor no precisa saber como feito o projeto de hardware ou conhecer linguagens especficas de descrio
30

de hardware. Alm disso, o desenvolvimento do software e do hardware pode ser feito em conjunto. Apesar do possvel desenvolvimento em conjunto, alguns compiladores no conseguem fazer o particionamento automtico. Nesses casos, se existir particionamento, o desenvolvedor deve indicar para o compilador quais as partes do sistema sero implementadas em hardware reconfigurvel e quais sero implementadas em software atravs de algumas instrues ou diretivas de compilao. Quando o compilador capaz de fazer o particionamento sozinho, o programa fonte de um sistema computacional tradicional pode ser compilado pela ferramenta, que faz o particionamento da soluo, se necessrio, e utilizado em um sistema computacional reconfigurvel. Essa abordagem garante enorme flexibilidade e facilidade de programao do sistema. No entanto, as solues geradas podem no ter um desempenho to bom quanto se a arquitetura do sistema fosse descrita manualmente. Alm disso, otimizaes baseadas em largura de bits de operandos geralmente no so realizadas j que os tipos usados so os de tamanho fixo das linguagens de programao. Esse problema pode ser resolvido atravs do uso de comandos especiais ou diretivas de compilao, no entanto a programao ser diferente da tradicional. Todos os problemas relatados para essa abordagem dependem da ferramenta utilizada, podendo ser reduzidos consideravelmente. 5.4 Ferramentas e linguagens de auxlio a projeto e programao Nessa seo, so dados alguns exemplos de ferramentas e linguagens (descrio de hardware e alto nvel) de auxlio ao projeto e programao de sistemas reconfigurveis que se encaixam nas abordagens anteriormente citadas. A ferramenta analisada para o projeto atravs de esquemtico e linguagem de descrio de hardware o Project Manager do ambiente Xilinx Foundation verso 4 [Foundation 2002]. Sua interface principal pode ser visualizada na Figura 5.1. Essa ferramenta permite, para projeto, a utilizao de VHDL, Verilog e mdulos de esquemtico. Depois da descrio da soluo implementada em hardware, a ferramenta faz a verificao da sintaxe do projeto e capaz de fazer simulaes funcionais a nvel de portas lgicas e comportamentais para linguagens de descrio de alto nvel. A parte da ferramenta que faz simulaes lgicas o Logic Simulator e pode ser vista na Figura 5.2. O Project Manager tambm capaz de gerar os bits de configurao para diversos dispositivos da Xilinx. Para isso, a ferramenta faz o

31

mapeamento da soluo no dispositivo, e gera os bits de configurao que podem ser enviados para o dispositivo reconfigurvel.

5.1 Ambiente Project Manager da Xilinx

5.2 Logic Simulator do Project Manager da Xilinx

A Figura 5.3 apresenta um esquemtico de um meio somador implementado em um dos subsistemas do Project Manager, o Schematic Editor. Nesse esquemtico esto representadas as entradas A e B e as sadas SUM e CARRY. Um meio somador realiza a soma de dois bits e possui como resultado a soma (SUM) e um sinal de vai-um (CARRY). As portas lgicas necessrias e as ligaes entre elas, as entradas e sadas so representadas. O mesmo meio somador descrito em VHDL nas Figuras 5.4, 5.5, 5.6. Existem diversas maneiras de se descrever esse bloco lgico e essa apenas uma delas. Em VHDL, as entradas e sadas (interface) so definidas em um bloco conhecido como entidade, que indicado pela palavra chave entity. Cada entrada ou sada possui um dos tipos pr-definidos pela linguagem ou definidos pelo programador. O bloco iniciado pela palavra reservada architecture indica a arquitetura da soluo, isto , a funcionalidade do bloco. Essa funcionalidade pode ser indicada atravs da descrio da organizao fsica e topolgica (estrutura) da soluo ou atravs da descrio do comportamento da mesma.

32

5.3 Diagrama esquemtico de um meio somador feito na ferramenta Schematic Editor do Project Manager da Xilinx

Nesse exemplo, como pode ser visto na Figura 5.4, criada uma entidade HALFADD com os bits A e B como entrada e os bits SUM e CARRY como sada. possvel criar diversas arquiteturas para uma mesma entidade e isso foi feito nesse exemplo, nas Figuras 5.5 e 5.6.

Entity HALFADD is Port (A, B : in bit; SUM, CARRY : out bit); End HALFADD;

5.4 Representao da entidade meio somador em VHDL

primeira

arquitetura

(Figura

5.5)

foi

descrita

utilizando

VHDL

comportamental. Nesse modo de descrio, utilizado o conceito de processo. Um processo um corpo de cdigo seqencial que pode ser ativado atravs de uma mudana no estado da lista de sinais ou portas sensveis [Ashenden 1990]. Essa lista indicada logo aps a palavra reservada process nesse exemplo. Dessa maneira, uma mudana no bit A ou no bit B faz com que o processo seja ativado. Nesse processo descrito o comportamento do meio somador comparando-se os valores de A e B e transmitindo os valores atravs de sinais a SUM e CARRY. Se uma arquitetura tiver mais de um processo ativado simultaneamente, eles executaro concorrentemente.

33

Architecture BEHA_HALFADD of HALFADD is Begin Process(A, B) Begin If (A = '1' and B = '1') then SUM <= '0'; CARRY <= '1'; Else if (A = '1' or B = '1') then SUM <= '1'; Else SUM <= '0'; end if; CARRY <= '0'; End if; end process; end BEHA_HALFADD;

5.5 Representao comportamental da arquitetura de um meio somador em VHDL

A segunda arquitetura (Figura 5.6) a descrio estrutural do meio somador. Essa descrio utiliza dois outros sinais, declarados como A_BAR e B_BAR. A arquitetura descrita (composta) pelas mesmas portas representadas no esquemtico da Figura 5.3.

Architecture STRUCT_HALFADD of HALFADD is signal A_BAR, B_BAR: bit; begin A_BAR <= not A; B_BAR <= not B; SUM <= (A_BAR and B) or (A and B_BAR); CARRY <= A and B; End STRUCT_HALFADD;

5.6 Representao estrutural da arquitetura de um meio somador em VHDL

Outra ferramenta a BYU JHDL Open Source CAD Tools [Hutchings 1999] criada na Brigham Young University. Essa ferramenta permite ao usurio projetar a funcionalidade e a estrutura fsica do circuito, fazer a depurao e a simulao do circuito e ainda gerar os bits de configuraes de alguns FPGA. Essa ferramenta utiliza uma linguagem chamada JHDL [JHDL 2002] [Bellows 1998]. Essa linguagem usa construtores e destrutores de objetos para escrever a funcionalidade dos circuitos. A programao feita em Java e so utilizados objetos que estendem
34

bibliotecas JHDL para a descrio do circuito e objetos normais para a parte implementada em software, se existir. Como a linguagem de alto nvel e orientada a objetos, fcil integrar a parte da soluo implementada em hardware reconfigurvel (estendem bibliotecas JHDL) com a parte implementada em software, se existir. No entanto, apesar de j existirem verses do JHDL em operao, ele ainda est em desenvolvimento, possuindo ainda diversas limitaes. A ferramenta da empresa Celoxica chamada DK Design Sute permite migrar programas escritos na linguagem C diretamente para os FPGAs, sem necessidade de utilizar linguagem de descrio de hardware. No entanto, necessrio incluir alguns comandos e bibliotecas especiais. possvel tambm gerar o cdigo VHDL correspondente ao programa. Existem ferramentas que no geram bits de configurao para os dispositivos reconfigurveis, mas que so capazes de converter linguagens de alto nvel para linguagens de descrio de hardware. Essa descrio pode ento ser usada com uma ferramenta especfica que gera os bits de configurao. Um exemplo desse tipo de ferramenta o Builder da empresa Adelante [Adelante 2002]. Ele capaz de converter ANSI C para VHDL e Verilog. Esse tipo de ferramenta muito til para que os desenvolvedores que desejam desenvolver suas solues em linguagens de alto nvel no fiquem presos aos dispositivos suportados pelas ferramentas que transformam a linguagem de alto nvel em bits de configurao so utilizados por essas ferramentas. 5.4 Concluso De uma maneira geral, implementaes de soluo em sistemas tradicionais de hardware tm como vantagem o desempenho. No entanto, possuem como desvantagens o custo da implementao em hardware e a baixa ou nenhuma flexibilidade. De outro modo, as implementaes de solues em sistemas tradicionais de software possuem grande flexibilidade e custo mais baixo, mas possuem desempenho mais baixo quando comparadas com solues implementadas em hardware. Os sistemas computacionais reconfigurveis esto entre esses dois tipos de implementao, tentando unir flexibilidade e desempenho. Alm disso, unir as vantagens do desenvolvimento de solues para esses dois sistemas tradicionais. Assim, pode existir um programa fonte (soluo em software) para um hardware (soluo em hardware) reconfigurvel.
35

Para usufruir de todas as vantagens que esses sistemas podem apresentar, necessrio utilizar bons mtodos e tcnicas de desenvolvimento. No entanto, ainda no existem mtodos bem definidos para esse tipo de sistema como existem para o desenvolvimento de sistemas de hardware e softwares tradicionais. O que se encontra atualmente so diversos modos de desenvolvimento e ferramentas que auxiliam o desenvolvedor. Cada um dos modos de desenvolvimento de solues para sistemas reconfigurveis possui vantagens e desvantagens quando comparados entre si. Alguns possuem maior e melhor aproveitamento da rea de dispositivo e maior desempenho, outros apresentam maior facilidade de desenvolvimento, como a utilizao de linguagens de alto nvel. Atualmente, o desenvolvimento de solues em sistemas reconfigurveis tende a se aproximar cada vez mais do desenvolvimento em sistemas tradicionais de software. Isso possvel com a utilizao de compiladores e ferramentas que permitam que cdigos de programas fonte usados em sistemas de software possam ser usados em sistemas reconfigurveis sem necessidade de modificaes. Para isso, necessrio que esses compiladores e ferramentas evoluam e, assim, no existiro diferenas no desenvolvimento de solues para os sistemas de software e os sistemas reconfigurveis.

36

6 Sistemas computacionais reconfigurveis acadmicos e comerciais Nesse captulo apresentamos e analisamos alguns sistemas computacionais reconfigurveis, seus projetos e implementaes. Indicamos e analisamos alguns projetos de pesquisa acadmica, prottipos e sistemas computacionais reconfigurveis acadmicos, comerciais e industriais. A considerao, anlise, soluo e/ou resposta de alguns problemas e/ou perguntas podem nos auxiliar no estudo, aprendizado e anlise dos sistemas computacionais reconfigurveis. Entre as quais destacamos algumas a seguir: i) o que um sistema computacional reconfigurvel?; ii) quais so as principais caractersticas dos sistemas computacionais reconfigurveis?; iii) quais so as principais semelhanas e diferenas entre os sistemas computacionais reconfigurveis e os no reconfigurveis?; iv) quais so as principais diferenas e semelhanas entre os diversos tipos de e implementaes de sistemas computacionais reconfigurveis?; v) quais so os ambientes de programao e desenvolvimento de solues disponveis atualmente nos sistemas computacionais reconfigurveis? Como apresentado no captulo trs arquiteturas reconfigurveis ainda existem muitas dvidas e indefinies nessa rea de pesquisa o que complica nossa tarefa de apresentar os principais conceitos e definies relacionados com os sistemas computacionais reconfigurveis. Deste modo, vamos apresentar uma viso geral de vrios tipos de sistemas reconfigurveis, analisando mais detalhadamente somente um destes sistemas e propondo uma expanso posterior desse estudo. Os sistemas computacionais reconfigurveis so os sistemas computacionais onde podemos reconfigurar os blocos (mdulos) construtivos bsicos, lgicos e/ou interligao, utilizando os conceitos e tcnicas relacionadas com reconfigurao, arquiteturas e dispositivos reconfigurveis. Deste modo, no estudo e anlise dos sistemas reconfigurveis precisamos utilizar os conhecimento apresentados e definidos nos captulos anteriores, principalmente nos captulos dois, trs e quatro. Os sistemas computacionais reconfigurveis podem apresentar arquiteturas reconfigurveis, puras ou hbridas, utilizando diferentes tipos de dispositivos reconfigurveis e em alguns casos dispositivos no reconfigurveis para implementar os principais conceitos bsicos de computao reconfigurvel. Considerando os sistemas computacionais de maneira no restritiva podemos utilizar reconfigurao em hardware e em software, inclusive simultaneamente. No

37

estudo e anlise destes sistemas computacionais devemos considerar os aspectos arquiteturais e de implementao fsica do sistema real. Com o objetivo de analisar as principais caractersticas deste sistemas indicamos alguns sistemas computacionais configurveis e reconfigurveis, com reconfigurabilidade esttica ou dinmica. Os principais aspectos que devem ser analisados num estudo mais detalhado so relacionados com: conceitos de reconfigurao; arquiteturas reconfigurveis; dispositivos reconfigurveis; hardware; software; ferramentas de projeto, desenvolvimento e suporte; e ambientes de desenvolvimento. As principais semelhanas e diferenas entre os sistemas computacionais reconfigurveis e os no reconfigurveis esto muito relacionadas s suas arquiteturas, e tambm aos dispositivos construtivos (hardware, software) usados nas implementaes reais dos sistemas. Alm disso, dependem dos tipos e aplicaes alvo dos sistemas computacionais. O espectro atual de sistemas computacionais reconfigurveis muito amplo e diversificado, com destaque para os seguintes tipos de sistemas: coprocessadores reconfigurveis, processadores reconfigurveis, computadores reconfigurveis, sistemas embutidos reconfigurveis e sistemas hbridos (compostos de mdulos reconfigurveis e mdulos no reconfigurveis, que podem ser implementados com hardware fixo ou hardware programvel usando software). Uma anlise da utilizao e da evoluo desses sistemas nos indica uma tendncia de crescimento na amplitude e na complexidade desse espectro de sistemas computacionais reconfigurveis. Esta diversidade e complexidade dificultam ainda mais o estudo e a anlise destes sistemas computacionais. Entre os sistemas computacionais reconfigurveis podemos citar alguns projetos de pesquisa acadmicos e alguns projetos de pesquisa comerciais. Entre os sistemas computacionais reconfigurveis acadmicos podemos destacar alguns como: Garp (UC Berkeley); Mojave (UCLA); PipeRench (Carnegie Mellon University), Splash 2 (); SLAAC (ISI, BYU, UCLA, Sandia); Riley-2 (Imperial College, HP); SAT (ETH Zurich); Sonic (Imperial College, Sony Broadcast); SPACE2 (Universidade do Sul da Austrlia UNISA) e SPARCS (Cincinnati University). E entre os sistemas computacionais comerciais destacamos: DECPerLe 1 (DEC Paris); Champ (Lookheed Sanders); Wildcard, Wildforce, Wildstar (Annapolis Micro Systems) (www.annapmicro.com); Palladium, Cobalt (Sistemas de verificao de hardware) (Quickturn, a Cadence Company) (www.quickturn.com),
38

H.O.T. Development

Systems e VW-300 (Virtual Computer Corporation) (www.vcc.com). Estes sistemas reconfigurveis podem ser equipamentos, placas ou dispositivos. A seguir, tabela 6.1, apresentamos diversos sistemas computacionais reconfigurveis e algumas das suas principais caractersticas arquiteturais como: granularidade, programabilidade, reconfigurao, interface, modelo de computao e domnio de aplicao.
Sistema DPGA Garp Splash DEC PeRLe-1 Chimaera OneChip DISC PADDI MATRIX RaPiD Granul Programabilida aridade de Fino Mltipla Fino Fino Fino Fino Fino Fino Grosso Grosso Grosso Mltipla Mltipla Simples Simples Simples Simples Simples Mltipla Simples Reconfig urao Dinmica Esttica Esttica Esttica Esttica Esttica Dinmica Esttica Dinmica Maioria Esttica Esttica Esttica Dinmica Dinmica Interface Remota Local Remota Remota Local Local Local Remota No Definido Remota Modelo de Computao MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador VLIW, SIMD MIMD Arranjo Linear Domnio de Aplicao Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Embedded Controladores, Aceleradores De Propsito Geral Aplicaes DSP No definido Arranjos Sistlicos, Intensivo de Dados Aplicaes de Dados Paralelos De Propsito Geral Aplica. Dados, Aplica. DSP. Dados Paralelos, Aplicaes Paralelas de Imagens

Remarc RAW PipeRench Morphosys

Grosso Misto Misto Misto

Mltipla Simples Mltipla Mltipla

Local Local Remota Local

SIMD MIMD Com Pipeline SIMD

Tabela 6.1 - Classificao de Sistemas Reconfigurveis [Singh 2000] Sistemas computacionais reconfigurveis distintos podem apresentar

arquiteturas reconfigurveis parecidas ou at iguais, e sistemas iguais ou parecidos podem apresentar arquiteturas bastante distintas. Utilizando-se as caractersticas das arquiteturas reconfigurveis (apresentadas no captulo 3) podemos analisar e classificar os sistemas computacionais reconfigurveis usando diversos critrios.

39

Algumas idias e conceitos importantes relacionados aos ambientes de programao e desenvolvimento de solues nos sistemas computacionais reconfigurveis j foram apresentados no captulo cinco. Em funo das limitaes de tempo e espao desse minicurso no poderemos analisar todos os sistemas computacionais indicados na tabela 6.1. Ento nossa sugesto que o leitor interessado realize uma pesquisa exploratria sobre cada um destes sistemas reconfigurveis, observando e analisando os principais conceitos e caractersticas do sistema, da arquitetura, dos dispositivos e dos mtodos e tcnicas de projeto e desenvolvimento. Esta pesquisa deve seguir a estrutura de contedo apresentada nos captulo anteriores. Ns pretendemos analisar mais detalhadamente todos os sistemas computacionais reconfigurveis indicados na tabela 6.1 e outros sistemas importantes no citados nesta tabela nas futuras verses deste material. Entretanto, como exemplo ilustrativo dos possveis resultados da realizao dessa pesquisa exploratria sugerida apresentamos algumas informaes coletadas e analisadas sobre um dos sistemas computacionais reconfigurveis indicados na tabela. Neste caso escolhemos o sistema PipeRench. Sistema computacional reconfigurvel "PipeRench" Carnegie Mellon's Reconfigurable Computer Project Electrical and Computer Engineering Department Carnegie Mellon University http://www.ece.cmu.edu/research/piperench/ A soluo proposta a virtualizao do hardware dos dispositivos reconfigurveis, usando reconfigurao de velocidade muita alta. No projeto foram projetadas e desenvolvidas uma arquitetura denominada Piperench e um circuito integrado (chip) que um dispositivo reconfigurvel denominado Piperench. Algumas das suas caractersticas arquiteturais so: granularidade mista, programabilidade mltipla, reconfigurao dinmica, interface remota, modelo de computao pipeline e domnio de aplicao relacionado com processamento digital de sinais. Os principais problemas considerados (endereados) nesse projeto so: i) as FPGAs tradicionais possuem limitaes nos seus recursos que produzem dificuldades para as ferramentas de compilao realizarem o processo de gerao
40

de padres de configurao usados na implementao (execuo) das aplicaes; ii) No existem mecanismos para prover compatibilidade futura, causando a perda dos investimentos usados na gerao das aplicaes que no so aproveitadas (portadas) nas futuras geraes de dispositivos reconfigurveis. Entre os principais artigos relacionados com esse sistema computacional reconfigurvel podemos destacar [Schmit 2002] [Chou 2000] [Goldstein 2000] [Goldstein 1999] [Moe 1998] [Cadambi 1998]. Relao dos principais artigos relacionados ao PipeRench: [Schmit 2002] H. Schmit, D. Whelihan, A. Tsai, M. Moe, B. Levine, R. R. Taylor, "PipeRench: A Virtualized Programmable Datapath in 0.18 Micron Technology" Proceedings of the IEEE Custom Integrated Circuits Conference (CICC), 2002. [Chou 2000] Y. Chou, P. Pillai, H. Schmit, and J. P. Shen "PipeRench Implementation of the Instruction Path Coprocessor," in IEEE/ACM International Symposium on Microarchitecture (Micro-33), pp. 147-158, December 2000. [Goldstein 2000] Seth Copen Goldstein, Herman Schmit, Mihai Budiu, Srihari Cadambi, Matthew Moe, R. Reed Taylor, "PipeRench: A Reconfigurable Architecture and Compiler," in Computer, pp. 70-77, April, 2000, [Goldstein 1999] Seth Copen Goldstein, Herman Schmit, Matthew Moe, Mihai Budiu, Srihari Cadambi, R. Reed Taylor, Ronald Laufer, "PipeRench: A Coprocessor for Streaming Multimedia Acceleration," in International Symposium on Computer Architecture, pp. 38-49, 1999. [Moe 1998] Matthew Moe, Herman Schmit, and Seth Copen Goldstein,

"Characterization and parameterization of a pipeline reconfigurable FPGA," in Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pp.294295, April, 1998 [Cadambi 1998] Srihari Cadambi, Jeffrey Weener, Seth Copen Goldstein, Herman Schmit, Donald E. Thomas, "Managing Pipeline-Reconfigurable FPGAs," Proceedings ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, p. 55-64, Feb. 1998

41

7 Anlise de aplicaes em sistemas computacionais reconfigurveis Novamente, algumas perguntas podem nos orientar e auxiliar no estudo, entendimento e anlise deste tpico: i) quais so as principais caractersticas, atributos e/ou parmetros que melhor (desempenho, facilidade, custo) se adaptam aos conceitos e a utilizao de sistemas computacionais reconfigurveis?; ii) quais so os tipos ou classes de aplicaes mais indicadas para implementao em sistemas computacionais reconfigurveis?; iii) quais so os principais benefcios ou ganhos gerados com o uso desse tipo de sistema computacional?; iv) outros tipos ou todas as aplicaes podem usar ou ser implementadas neste tipo de sistema computacional?. Entre as principais caractersticas e atributos desejveis das aplicaes indicadas para implementao com computao reconfigurvel podemos destacar: regularidade de comportamento, estrutura pipeline, paralelismo de dados, largura de bits varivel, aritmtica modesta e controle simples. Entretanto, com a evoluo da computao reconfigurvel, principalmente dos dispositivos reconfigurveis e dos ambientes de auxlio ao projeto, as aplicaes com caractersticas distintas tambm podem ser implementadas em sistemas reconfigurveis com ganhos bastante significativos. Entre as principais possveis aplicaes computacionais reconfigurveis podemos destacar: casamento de DNA; compactao e compresso de dados e sinais; criptografia; grfica computacional; multimdia; processamento de sinais, imagens e vdeos; e reconhecimento de padres. Neste captulo apresentamos e analisamos algumas aplicaes, relacionadas com processamento de imagens e outras, que possuem caractersticas tcnicas indicadas para utilizar conceitos e sistemas computacionais reconfigurveis. Os sistemas reconfigurveis geralmente so implementados usando circuitos programveis (FPGA's). A utilizao do FPGA na indstria tem um amplo horizonte: podendo-se implementar desde circuitos bsicos, como um rdio relgio, at circuitos complexos como uma UCP (Unidade Central de Processamento, que o corao dos microprocessadores e microcontroladores) de alto desempenho (ver informaes da tabela 7.1). Que entretanto, nem sempre so sistemas computacionais reconfigurveis. E o mais interessante que pode-se alterar facilmente o programa fonte que define o comportamento do FPGA e trocar sua lgica (comportamento) interna diretamente na placa do circuito final, caso

42

necessite de alguma alterao de comportamento ou de adio de novas portas de E/S no previstas no projeto e prottipo inicial.
reas de Aplicao Entretenimento Consumo Transportes Industrial Comunicao Dados Telecomunicao Exemplos de Utilizao HDTV, CATV Decodificador de udio digital, Arcade Games, Vdeo Games, Sistemas de Karaok Sistemas de estradas de ferro, Controle de Trfego, Semforos, Sistemas de Controle Equipamentos de teste e medidas, Equipamentos mdicos, Controle remoto, Robtica, Emulador ASIC, Sistemas de Viso de Multiplexadores, Roteadores, LAN's sem fio Interfaces SONET, Interfaces de fibras pticas, ATM, Interfaces ISDN, Militar Perifricos Controlador de Voice-Mail, Equipamentos PBX, Multiplexadores T1, Compresso de dados Sistemas de computadores e comunicao, Controle de Fogo Controladores de disco, Controladores de vdeo, FAX, Mquinas de caixa, Modems, Sistemas POS, Cartes de Aquisio de Dados, Terminais, Impressoras, Scanners, Copiadoras Computadores Interfaces de memria, Controladores DMA, Controladores de Cache, Co-Processadores SSP, Multimdia, Grficos Vdeo Conferncia, Criptografia, Conectores, Modems, Compresso de dados, LAN HUBs, FDDI,

Tabela 7.1. Possveis Aplicaes das FPGA's [Smith 1997] Pode-se ainda, desenvolver circuitos onde o ncleo um FPGA, e a lgica final do funcionamento, poder ser trocada pelo prprio usurio. Um exemplo prtico trocar o processador do computador, simplesmente fazendo um download na internet, do cdigo a ser inserido no FPGA, ou em outras palavras: trocar um Pentium III por um Pentium IV, simplesmente alterando o software comportamental do FPGA, sem precisar alterar sequer um parafuso do hardware. No sentido de aplicaes especficas, FPGAs possuem desempenho de processamento equivalente ou superior a circuitos integrados de propsito geral, pois aps desenvolvido um programa que represente a lgica funcional do circuito geral, bastar programar o FPGA e este sendo um chip nico, resulta em hardware menor , com maior capacidade de processamento e menor consumo de energia e direcionado a resolver problemas especficos.

43

Em termos mais especficos, o alvo dos sistemas reconfigurveis so aplicaes que apresentam inerente paralelismo de dados, alta regularidade e grandes requisitos de vazo (throughput), como se mostra e discute na tabela 7.2. Alguns exemplos dessas aplicaes so: compresso de vdeo (transformadas discretas tais como DCT Discrete Cosine Transform, e estimao de movimento), processamento grfico e de imagens, multimdia, encriptao de dados e transformadas usadas em DSPs (Digital Signal Processing). Por esse motivo, nesta seo apresenta-se alguns conceitos relacionados com aplicaes da rea de imagens (em especial aplicaes de vdeo) e alguns resultados obtidos no projeto MORPHOSYS [Singh 2000].
Sistema DPGA Garp Splash Granul Programabilida aridade de Fino Mltipla Fino Fino Mltipla Mltipla Simples Simples Simples Simples Simples Mltipla Simples Reconfig Interface urao Dinmica Remota Esttica Esttica Esttica Esttica Esttica Local Remota Remota Local Local Modelo de Computao MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador MonoProcessador VLIW, SIMD MIMD Domnio de Aplicao Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Computao ao Nvel de Bits Embedded Controladores, Aceleradores De Propsito Geral Aplicaes DSP No definido

DEC PeRLe-1 Fino Chimaera OneChip DISC PADDI MATRIX RaPiD Fino Fino Fino Grosso Grosso Grosso

Dinmica Local Esttica Remota

Dinmica No Definido Maioria Remota Esttica Esttica Esttica Local Local

Remarc RAW PipeRench Morphosys

Grosso Misto Misto Misto

Mltipla Simples Mltipla Mltipla

Dinmica Remota Dinmica Local

Arranjo Linear Arranjos Sistlicos, Intensivo de Dados SIMD Aplicaes de Dados Paralelos MIMD De Propsito Geral Com Pipeline Aplica. Dados, Aplica. DSP. SIMD Dados Paralelos, Aplicaes Paralelas de Imagens

Tabela 7.2. Classificao de Sistemas Reconfigurveis [Singh 2000]

44

7.1 Introduo aos Sistemas de Processamento de Vdeo Digital O objetivo principal desta subseo analisar as principais tcnicas (tecnologias) utilizadas na transmisso de imagens, destacando os principais blocos funcionais e como se podem transmitir estas imagens atravs de um sistema de comunicao moderno (que possui banda larga, como por exemplo uma rede hbrida fibra ptica coaxial). Um sistema bsico de processamento de vdeo composto por um sistema de captura de imagens, lentes, filtros pticos e um sensor de imagens que as convertem em sinais eltricos. Uma vez obtida esta converso, tm-se os sinais de vdeo de tal forma que para poder transmit-los atravs de um sistema digital, h a necessidade de se digitalizar os mesmos atravs de um sistema digitalizador que adquire amostras dos sinais analgicos referenciando estes pontos a nveis de tenso correspondentes a uma representao binria. Pelo teorema da amostragem provado que esta converso gera uma quantidade de informao binria extremamente elevada de tal forma que para permitir a transmisso destas informaes, h quase sempre a necessidade de se codificar estes sinais comprimindo-os a nveis aceitveis sob o ponto de vista de qualidade e viabilidade econmica de transmisso. Desta forma h um bloco extremamente importante nesses sistemas, denominado bloco de compresso de vdeo. Os blocos que seguem tratam-se da unidade central de processamento (CPU) e as memrias utilizadas, bem como as interfaces para conexo com um determinado tipo de rede. Por exemplo, para sistemas que usam HFC importante a interface ethernet, visto que os modens utilizados nessas estruturas de redes hbridas permitem a facilidade de conexo com o mesmo padro de rede. A figura 7.1 apresenta os principais blocos funcionais de um sistema bsico de processamento de vdeo. Interessante perceber que todos os blocos (ou Entretanto, os blocos que mais se mdulos) apresentados podem ser construdos (projetados e implementados) usando-se circuitos programveis (FPGA's). digitalizador de imagens e o de compresso. adequam a uma implementao com caractersticas reconfigurveis so o

45

Figura 7.1: Sistema Bsico de Processamento de Vdeo [Web 06] A seguir so enfatizados os detalhes dos blocos responsveis pela compresso de vdeo enfatizando nas consideraes do MPEG -Moving Pictures Group [MPEG 1994], visando a utilizao de hardware especfico para algumas funes relacionadas com o processamento de imagens e vdeo. Dessa maneira, apresenta-se ao leitor as tecnologias atuais empregadas neste tipo de sistema e tambm se fornecer uma base terica para possveis novas propostas. 7.1.2 Compactao de Vdeo: MPEG II O MPEG (Moving Pictures Expert Group) um grupo de trabalho da ISO/IEC que define os padres para compresso de udio e vdeo digitais. O primeiro padro lanado foi o MPEG I publicado em 1993 como ISO/IEC 11172 e o MPEG II em 1995 como ISO/IEC 13818 [MPEG 1994] [Web 05]. Com as crescentes necessidades para novas aplicaes, trs reas obtiveram grandes progressos no desenvolvimento tecnolgico para possibilitar implementaes viveis tais como vdeo conferencia, transmisso de vdeo em tempo real, aplicaes multimdia, sensoriamento remoto e outras: Padres, Redes e Tecnologia VLSI. (i) Padres: o desenvolvimento do padro H.261 para vdeo conferencia, JPEG para imagens e principalmente o MPEG I e MPEG II para compresso de vdeo permitindo altas taxas de compactao. (ii) Redes: a disponibilidade de redes com novas tecnologias como ISDN, ADSL, Redes ATM e Redes HFC, esta ltima com grande disponibilidade de largura de banda. (iii) Tecnologia VLSI: a integrao de circuitos cada vez maiores com capacidade de processamento suficiente para realizar codificao e decodificao dos padres de compactao. No sistema de processamento digital de vdeo pode-se imaginar alguns pontos crticos sob o ponto de vista de desempenho do sistema. De acordo com a figura 7.1, pode-se detalhar o sistema em alguns blocos principais; o bloco
46

digitalizador, o bloco de compresso e o bloco de processamento com interfaces de conexo rede. Desta forma, discute-se alguns aspectos que justificam um hardware dedicado, com caractersticas e funes especiais, unicamente para a compactao de vdeo ou parte desta tarefa. A capacidade computacional necessria para realizar a compactao normalmente elevada e de forma que seja vivel a aplicao de hardware dedicado tendo alta capacidade de processamento com entrada e vazo de dados de maneira que atenda as necessidades de uma determinada aplicao. A tabela 7.3 mostra algumas possveis aplicaes para vdeo. A coluna amostragem/seg. dessa tabela fornece uma idia da largura de banda necessria para a transmisso destes formatos de vdeo. Pode-se observar que sistemas de compactao so extremamente necessrios para se implementar um sistema vivel.

Mercado Telefonia Analgica Vdeo Telefonia Conferncias Negcios Digital NTSC para e Vdeo

Amostragem/Seg 5 - 10 k 56 - 128 k At 384 k 3 a 10 M

Padro Nenhum H.261 H.261 MPEG I MPEG II FCC

Tamanho 170 x 128 174 x 144 a 352 x 288 352 x 288 728 x 480 1200 x 800

Taxa de quadros 2a5 5 a 10 15 a 30 30 60

Mutimdia Interativa 1 a 2 M TV de Alta Definio At 15 M

At 352 x 288 15 a 30

Tabela 7.3 Caractersticas de Aplicaes de Vdeo [Web 05] 7.1.3 Representao das Imagens Existem alguns aspectos importantes relacionados forma com que pixels so organizados em quadros, como os quadros so organizados em seqncias e a representao de cores que normalmente so utilizadas em vdeo. O MPEG II suporta vdeo entrelaado que aparece em alguns formatos de vdeo analgico. Os quadros analgicos so formados por dois campos com linhas entrelaadas. Em situaes de cenas de vdeo com baixo movimento, a diferena entre linhas entrelaadas pequena e assim sendo, combinar campos para codificar um quadro
47

inteiro vantajoso. Em cenas de vdeo com maior movimento a diferena entre as linhas de um quadro maior sendo que se pode atingir maior eficincia codificando os campos separadamente. A figura 7.4 apresenta o esquema de entrelaamento.

Frame

Campo 1

Campo 2

Figura 7.4 Esquema de entrelaamento [Web 05] Para a representao de cores de uma imagem pode-se utilizar modelos como o RGB (Red, Green and Blue) mais utilizado em monitores e o YCbCr (Luminncia, Cor azul e Cor vermelha), utilizado em sistemas de transmisso de TV. 7.1.4 Compactao de Vdeo A sensibilidade da viso humana maior para informaes de luminncia que variaes de cor. O padro MPEG II trabalha estas caractersticas fazendo uma subamostragem na informao de crominncia (cor). O padro pode trabalhar com diferentes tipos de sub-amostragem de cor, para o qual os mais comuns so o 4:2: 2 e o 4:1: 1, que significam quatro amostras de luminncia para cada duas ou uma de crominncia. O elemento codificador insere no pacote de informaes a indicao relativa ao modelo de sub-amostragem utilizado. A figura 7.5 apresenta um esquema de amostragem de cor.

Elementos da Figura

Amostragem de Luminncia

Amostragem Cr

Amostragem Cb

Figura 7.5 Esquema de amostragem de cor 4:1:1 [Web 05]


48

As informaes de vdeo possuem redundncias que so classificadas em trs modelos bsicos: (i) Redundncias de codificao: a codificao um sistema de smbolos utilizado para representar informaes. Quando um sistema de compactao comprime dados ele procura representar a informao de forma que ocupe o menor espao em memria. Assim, se forem escolhidos smbolos pequenos para representar os pixels de maior freqncia de ocorrncia e os smbolos maiores para pixels que aparecem com menor freqncia, pode-se otimizar a forma de representao em relao ao espao de memria necessrio; (ii) Redundncia interpixel: a contribuio visual de um pixel redundante, pois atravs dos vizinhos possvel determin-lo. Se a diferena entre os pixels adjacentes pequena, podese sub-amostrar a imagem de maneira a guardar menos informao com pequena distoro em relao imagem original; (iii) Redundncia psicovisual: este tipo de redundncia esta relacionado maneira de interpretao do olho humano quando observa uma imagem. O crebro humano interpreta bem apenas a regio central da imagem gravando poucas informaes das reas fora do foco central. Assim, a subamostragem de cores utilizadas no MPEG uma combinao de redues nas redundncias interpixels e psicovisual. Os mtodos de compresso de imagens so avaliados por dois critrios, o tempo gasto para compresso e descompresso e a distoro na imagem em relao imagem original. Com referncia a preservao da imagem, so classificados em codificao com perdas e sem perdas. O mtodo sem perdas possibilita a reconstruo da imagem de forma exata enquanto que o mtodo com perdas no. As taxas de compresso podem ser cada vez maiores uma vez que seja admitida perda no valor exato do pixel. Os algoritmos de compresso baseados em estimao de movimento e DCT so mtodos com perdas e se a DCT for utilizada de forma isolada, o mtodo exato. 7.1.5 MPEG Camadas de Vdeo O sistema de camadas MPEG tem a funo de multiplexar as informaes de udio e vdeo em um nico bitstream definindo a ordem das informaes no tempo. O sistema esta dividido em camadas de vdeo e udio. A figura 7.6 mostra o sistema

49

de camadas. Este sistema interpreta pacotes de informaes e cabealhos montando um bitstream para o decodificador de vdeo ou udio.

Compactador Digital de Dados

Buffer 1 Decodificador do Sistema Buffer 2

Decodificador de Adio

Decodificador de Vdeo

Buffer de Controle do Sistema I-picture timing Controlador do Sistema P-Picture B-picture

Figura 7.6 Descrio de um sistema decodificador [Web 05] O padro MPEG aproveita a caracterstica de que as imagens na seqncia so similares. Esta tcnica chamada de compresso interframe. Uma outra tcnica que procura redundncia de informaes em um nico quadro chamada intraframe. Uma seqncia de vdeo dividida em grupos de imagens ou quadros onde cada grupo composto por trs tipos de imagens: (i) I-pictures (Intra-coded): estas imagens so codificadas de forma independente, ou seja, sem relacionamento com a vizinha. JPEG; (ii) P-pictures (Predective-coded): estas imagens so codificadas observando-se caractersticas comuns com imagens vizinhas em dimenso temporal. Estas imagens temporalmente anteriores podem ser I-picture ou P-picture. Quando for I-picture a codificao montada calculando-se vetores de movimento para esta imagem e se for P-picture a codificao realizada calculando-se a diferena entre os vetores de movimento; (iii) B-picture (Bidiretionally-coded): esta forma realiza predies a partir de I-picture ou B-picture estando elas temporalmente antes ou depois em uma seqncia de quadros. A predio da imagem feita tomando como referencia uma imagem anterior, posterior, ou nenhuma, na busca de uma melhor aproximao. Para a decodificao de uma imagem podem ser necessrias informaes em quadros posteriores temporalmente. A ordem que as imagens aparecem no a mesma em que foram geradas, desta forma, deve-se arranjar as imagens de tal forma que as I-pictures venham antes que as P-pictures e estas antes que as Bpictures em uma seqncia com dependncias.
50

7.2 ALGORITMO MPEG O algoritmo MPEG constitudo por alguns blocos bsicos. Os mais importantes so estimao de movimento, compensao de movimento, DCT, quantizao, e VLC. O MPEG reduz as redundncias na informao e despreza outras de menor efeito para o observador. Cada quadro de imagem bastante parecido com o anterior, somente h algumas alteraes. As informaes pouco relevantes so descartadas na sub-amostragem e na quantizao aps a DCT. A redundncia espacial minimizada na codificao de tamanho varivel (VLC) e a temporal pela estimao de movimento. Na reproduo necessrio buscar uma imagem codificada intraframe mais prxima.
Regulador

Frame Re-order

Estima Movimento

DCT

VLC

Buffer

Entrada de Dados Frame Buffer

Q
DCT

Compresso do Dado

Figura 7.7 Codificador MPEG [Web 05] 7.2.1 Codificador MPEG A estrutura bsica de um codificador para MPEG apresentado na figura 7.7. A unidade bsica de codificao um macrobloco de 16 x 16 amostras, quatro blocos de luminncia e dois de crominncia. Inicialmente o sinal de vdeo analgico amostrado sendo convertido para digital no espao de cores (Y, Cb, Cr) e sub-amostrado. Neste momento o codificador escolhe um tipo de imagem (I,P, B) para cada quadro e toma uma deciso sobre qual estrutura, campo (field) ou quadro (frame). A partir deste ponto realizada a estimao de movimento e a gerao dos vetores de movimento.

51

De acordo com a estrutura de macrobloco, escolhido o modo de codificao. Aps esta deciso, a estimao de movimento feita baseada em blocos passados e ou futuros. A predio subtrada do atual sinal de erro. Em um quadro estruturado o codificador deve escolher como realizar a DCT framebased ou fieldbased e este fato depende da quantidade de movimento entre dois campos e da capacidade de identificar movimento. Esta deciso pode implicar em reordenao do sinal de erro que separado em bloco de 8x8 e levado ao bloco DCT onde cada bloco resultante de coeficientes quantizado e varrido para uma dimenso. As informaes necessrias para o decodificador reconstruir o bloco, o modo de codificao e os vetores de movimento so codificados e os coeficientes so codificados com VLC. A FIFO controlada por um regulador que monitora o nmero de bits gerados pelo codificador. Neste ponto o bitstream est completo e pode ser transmitido e usado por um decodificador na recuperao da imagem. 7.2.2 Decodificador MPEG A operao do decodificador mais simples e exige menos capacidade computacional. A figura 7.8 apresenta a estrutura bsica do decodificador.

Dado Aps Compresso

Output

Header Detection

Buffer

Demultiplexer VLC Decoder

Q1

-1

DCT

+
Predictor

Figura 7.8 Decodificador MPEG [MPEG 1994] [Web 05] Com o buffer de entrada preenchido, o decodificador l o bitstream detectando o "start code" de uma imagem que ir definir o tipo e a estrutura da mesma. A compensao de movimento realizada tomando-se como referncia uma imagem gravada no buffer do decodificador. Os coeficientes so lidos, decodificados (VLC inversa) e dequantizados. Cada bloco 8x8 submetido DCT inversa e o resultado adicionado predio. Quando todos os macroblocos forem processados, a imagem deve ser reconstituda. Se a imagem for I ou P, significa que

52

devero ser utilizadas no futuro e portanto, devem ser armazenadas no lugar da imagem anterior. So guardadas somente duas referncias. 7.3 Desempenho de Vrias Aplicaes em Sistemas Reconfigurveis Nesta seo se apresentam e discutem os benefcios obtidos usando um sistema reconfigurvel (o Morphosys) [Singh 2000] em trs aplicaes diferentes: Compresso de Dados Digitais (por exemplo na Codificao e Decodificao em aplicaes de vdeo que usam o padro MPEG, onde se enfatiza as fases de estimao de movimento e na utilizao da DCT); Aplicaes ATR (Reconhecimento Automtico de Padres) e Algoritmo de Criptografia. Essas aplicaes so executadas em vrias plataformas (reconfigurveis, hardware especficos para aplicaes ASICs, processadores especiais, DSP e processadores GPP mais conhecidos como o Pentium), e consegue-se mostrar as vantagens, qualidades e importncia dos sistemas reconfigurveis. 7.3.1 Aplicaes de Imagens em Sistemas de Vdeo Digital Na figura 7.9 mostra-se o desempenho obtido no sistema Morphosys [Singh 2000] para uma aplicao de estimao de movimento no padro MPEG, e compara-se o desempenho com quatro diferentes plataformas que tambm implementaram e executaram a mesma aplicao. bom lembrar que essa aplicao amplamente adotada em tcnicas de compresso de vdeo para identificar redundncia entre diferentes quadros. H vrias tcnicas para se implementar esta aplicao, sendo a mais conhecida a do algoritmo BM (Blocking Matching), pois ele permite um melhor projeto em hardware. A implementao usada no Morphosys baseiou-se no algoritmo FSBM (Full Search Block Matching).
Sistemas/Tipo de Morphosys [Singh 2000] quadro I frame (quadro) (10 ciclos de relgio) 0.5
6

Remarc [Miyamori 1999] (10 ciclos de relgio) 52.9 69.6 81.5


6

P frame (quadro) 2.3 B frame (quadro) 4.0

Tabela 7.4. Comparao de Desempenho em Dois Sistemas Reconfigurveis, codificador MPEG

53

2500

CORE em Apps. de Estimao de M ovimento


2000

21 00

1 500 1 59 1 1 000 540 500 581 631

0 Morphosys ASIC-I ASIC-II ASIC-III DSP TMS320C64X

Fig. 7.9 Desempenho para Estimao de Movimento no MPEG em Diferentes Plataformas [Singh 2000] Trs dessas plataformas so arquiteturas ASIC (denominadas na figura como ASIC-I, ASIC-II e ASIC-III), que foram implementadas e analisadas em [Hsieh 1992] [Nam 1994] [Yang 1989]. Alm disso se mostra tambm o desempenho obtido usando um processador DSP de alto desempenho, como o TMS320C64X [Texas 2002]. Na figura 7.9, pode-se visualizar claramente que um sistema reconfigurvel apresenta melhor desempenho (medido atravs de ciclos de execuo). bom salientar que os trs ASICs utilizavam unidades de hardware especializadas e customizadas, tais como: somadores paralelos para melhorar o desempenho, mas ainda assim a arquitetura reconfigurvel apresentou um melhor desempenho sendo que a estimao de movimento foi calculada em uma porcentagem de 7, 15 e 54 %; mais veloz do que o ASIC-I, ASIC-II e ASIC-III respectivamente. Similarmente, quando comparado com o processador DSP, o desempenho do sistemas reconfigurvel 75 % melhor. Apesar de no se mostrar na figura 7.9, a mesma aplicao foi implementada em linguagem C++ e executada em um Pentium MMX 233 MHz, onde se obteve uma tempo de execuo de 29.000 ciclos. Fazendo uma anlise comparativa (levando em considerao as diferenas de velocidade dos dois sistemas, 233 MHZ para o Pentium e 100 MHZ para o Morphosys), se chega no resultado que o sistema reconfigurvel 20 vezes mais rpido do que a implementao em software em
54

sistemas PC tradicionais. Dessa maneira, se enfatiza os grandes ganhos obtidos na utilizao de sistemas reconfigurveis nestes tipos de aplicaes. De maneira similar, a figura 7.10 mostra o desempenho obtido para aplicaes que usam a DCT e I-DCT. Nesse caso, percebe-se novamente que os dois sistemas reconfigurveis, o Morphosys [Singh 2000] e o Remarc [Miyamori 1999] apresentam melhor desempenho que as outras trs plataformas utilizadas. O primeiro deles melhor que o segundo, pois alm de possui uma arquitetura mais complexa e com unidades especficas que aproveitam melhor o paralelismo de algumas funes, o Morphosys foi efetivamente realizado em hardware real (FPGAs), enquanto que o Remarc foi uma proposta avaliada somente em termos de simulao. Ainda assim, o Morphosys 31% mais rpido que o Remarc para funes DCT/IDCT. O Morphosys 60, 82 e 85 %, respectivamente, melhor que o DSP TMS320C64X, o processador V830R/AV [Arai 1998] que especial para aplicaes multimdia e o processador Pentium II.

300 Comparao de Desempenho na Apps. DCT/ IDCT 250 201 200 240

1 50 92 54 50 37

1 00

0 Morphosys Remarc DSP TMS320C64X V830R/AV Pentium II

Fig. 7.10 Aplicao DCT/IDCT em diferentes plataformas [Singh 2000] s vezes bom (e necessrio) saber como o sistema se comportaria se fosse maior. Isto , se ele fosse construdo com mais mdulos de hardware e funcionalidades, ser que o desempenho da aplicao escalaria com o crescimento do sistema? Dessa maneira, os projetistas fizeram anlise de escalabilidade e encontraram que seu sistema reconfigurvel (o Morphosys) apresenta uma boa escalabilidade (quase linear), como se mostra na figura 7.11. Onde observamos o
55

desempenho (medido atravs de GOPS - Giga Operaes por Segundo) para o sistema base (definido como M1, o qual possui 64 unidades reconfigurveis), e duas estimaes o M2 e M3, os quais so compostos de 128 e 256 unidades reconfigurveis, respectivamente.

D e s e m p e nho p ara D C T / ID C T [ G O P S]

2 5 ,6

30 25
1 3 ,4 4 1 2 ,8

20 15 10 5 0

6 ,4 3 ,3 6

6 ,7 2

M o rp ho sys M 1 (6 4 R C s)

M o rp ho sys M 1 1 2 8 R C s)

M o rp ho sys M 1 (2 5 6 R C s)

Fig. 7.11 Anlise de Escalabilidade de um Sistema Reconfigurvel para uma Aplicao DCT/I-DCT [Singh 2000] A figura 7.12 mostra o desempenho obtido no sistema Morphosys [Singh 2000] para a fase de codificao de vdeo (no padro MPEG-2), de cada quadro (medida atravs de ciclos de mquina). O desempenho mostrado para os trs tipos de quadros existentes (I, P e B). Cada quadro, nesse caso, consiste de 396 macroblocos, onde a resoluo mxima permitida de 352 x 288 pixels/quadro, a uma velocidade de 30 quadros/segundo. O grupo de imagens consiste de uma seqncia de 04 quadros na ordem IBBP (uma seleo tpica usada em aplicaes de difuso de imagens). O nmero de ciclos requeridos para cada tarefa do codificador MPEG, para cada macrobloco, listado na tabela 7.5 (onde as siglas seguintes indicam MC: Compensao de Movimento, IDCT: (Inversa DCT), IMC: (Inversa de MC), Q: Quantizao e IQ (Inversa de Q).
Tipo Macrobloco Estimao de Movimento x Funo MPEG (CC Ciclos de Carregar Relgio) Tipo I Tipo P Tipo B 73 73 Carrega 322 579 Contexto FB 4692 9384 MC, DCT, Q ( / for IQ, IDCT, IMC) Computao Carregar Contextos 258/258 258/258 258/N- A Carrega FB 102/102 204/204 624/624 672/672 Computao

306/N- A 720/N- A

Tabela 7.5 Comparao de Desempenho para Estimao de Movimento [Singh2000]


56

4,5 D e se m pe nho do M or pho sy s p a r a I , P . e B f r a m e s ( C o di f i c a dor M P EG- 2 ) 4 3,5 3 2,5 2 1,5 1 0,5 0 B- f r ame P- f rame I-f r ame

M oviment o

M C, DCT e Q

Inversa

Fig. 7.12 Desempenho de um Sistema reconfigurvel para quadros do Tipo I, P e B [Singh 2000] Dessa maneira, na figura 7.12, pode-se perceber que as imagens do tipo B e P so as que mais utilizam o sistema. A maior parte dessa utilizao est associada estimao do movimento. Interessante observar que os trs tipos de imagens (B, P e I) possuem quase que a mesma utilizao nas seguintes trs funes: MC Compensao de Movimento; DCT: tempo de utilizao na transformada DCT e na quantizao (Q). Similarmente acontece com as operaes IQ: Inversa de Q, IDCT que a inversa da DCT e da MC. 7.3.2 Aplicao ATR Reconhecimento Automtico de Padres A figura 7.13 mostra o impacto de se usar sistemas reconfigurveis em outra aplicao, em uma aplicao de Reconhecimento Automtico de Padres (ATR Automatic Target Recognition), onde de modo automtico, uma mquina detecta, classifica, reconhece e identifica algum objeto. H vrias maneiras de se implementar um algoritmo do tipo ATR. Entretanto, a mais conhecida a implementao realizada e criada no SNL (Sandia National Laboratory). Esse algoritmo consiste de trs partes: a FOA (Focus-of-Attention), SLD (Second-Level of Detection) e FI (Final Identification). Dessas fases, a mais importante, do ponto de vista de necessidades de computao, a SLD, onde se requer um processo de correlao de bits. Esse processo de correlao de bits pode ser implementado com muitas caractersticas de processamento paralelo, isso realizado na arquitetura Morphosys.
57

Dessa maneira, na figura 7.13 se mostra o desempenho dessa fase SLD de uma aplicao ATR. O tamanho da imagem alvo usada de 128 X 128 pixels e o tamanho do template foi de 8 X 8. Somente realizaram um experimento contendo 2 templates. Percebe-se nessa figura que a arquitetura Morphosys possui um bom desempenho, quando comparado a outras duas implementaoes reconfigurveis, que so: SPLASH 2 (que consiste de 16 FPGAs da familia XC4010) [Rencher 1997] e MOJAVE (que consiste de 2 FPGAs XC4013) [Chia 1998]. Uma das razes para o primeiro sistema ser melhor do que os outros dois deve-se ao fato de usar e implementar aplicaes paralelas para a fase de correlao de bits e porque as operaes que envolvem aplicaes do tipo ATR so inerentemente de granularidade fina e envolvem vrias operaes ao nvel de bits, as quais podem ser mapeadas com sucesso nas FPGAS.

30
T emp o ( ms. ) p ar a SLD ( D et eo d e Seg und o N vel )

25 20 15 10
6

24

12

5 0 M o rpho sys M 1 (1 chip) Splash-2 (16 XC4010) M o jave (2 XC4013)

Fig. 7.13 Desempenho de Sistemas Reconfigurveis em Aplicao ATR [Singh 2000] 7.3.3 Aplicaes em Algoritmos de Criptografia Outra classe de aplicao que permite obter bons resultados quando implementadas em sistemas reconfigurveis, so os algoritmos de criptografia, pois elas possuem operaes que podem ser realizada em paralelo.

58

180
D e s e mp e nho d o A l g o r i t mo d e E nc r i p t a o I D E A

160 140 120 100 80 60 40 20 0 M o rpho sys H iP C rypto


16 4 ,5

153

P entium II

Fig. 7.14 Desempenho de um Sistema reconfigurvel em Aplicaes de Criptografia [Singh 2000] A figura 7.14 apresenta resultados obtidos para o algoritmo IDEA [Schneier 1996]. Este algoritmo consiste de blocos de 64-bits com uma chave de Ao final de cada uma dessas iteraes, o algoritmo produz uma encriptar/desencriptar de 128 bits. O algoritmo realiza 8 iteraes de uma funo especfica. mensagem de 64-bits. O nmero mximo de operaes em paralelo que o algoritmo suporta 4. Na figura pode-se observar que um sistema reconfigurvel, neste caso o Morphosys, 72% mais rpido que o sistema HiPCrypto [Salomao 1998], que um hardware especializado (ASIC) para o algoritmo IDEA. Quando comparada com uma implementao em C++ que executa em um microprocessador Pentium II, o sistema reconfigurvel 97% mais eficiente. Isso enfatiza, novamente, os ganhos obtidos com sistemas reconfigurveis, para aplicaes de segurana de dados que usam algoritmos de criptografia. 7.4 Concluso das Aplicaes Geralmente o alvo dos sistemas reconfigurveis so aplicaes que inerentemente apresentam paralelismo de dados, alta regularidade e grandes requisitos de vazo (throughput). Alguns exemplos dessas aplicaes so: compresso de vdeo (transformadas discretas tais como DCT Discrete Cosine Transform, e estimao de movimento), processamento grfico e de imagens, multimdia, encriptao de dados e transformadas usadas em DSPs (Digital Signal Processing). Nesse sentido, a utilizao de dispositivos reconfigurveis como as FPGA's para essas aplicaes justifica-se por varias razes: (i) Alta velocidade: possvel
59

otimizar velocidade adequando e sintonizando os parmetros crticos do sistema; (ii) Nvel flexvel de segurana: relativamente fcil adequar as novas arquiteturas e sistemas a novos insights e otimizaes; (iii) Relao desempenho/custo: pode-se selecionar e projetar unidades funcionais, levando em considerao o custo e o desempenho. Por exemplo, projetar poucas e lentas unidades aritmticas, ou rpidas e vrias unidades; (iv) Moderao dos custos: o projeto com FPGA's relativamente de baixo custo. Atravs da tabela 7.1 apresentada, pode-se observar que os sinais digitais produzem um alto bitstream, principalmente os relacionados a vdeo. Dessa maneira os algoritmos de compactao se apresentam como ferramentas de suma importncia na busca de maiores taxas de compactao. Portanto, uma arquitetura de hardware pode ser especializada para desempenhar operaes dedicadas resoluo de problemas especficos, levando a melhorias de desempenho. Assim sendo, pode-se concluir que muitos projetos e aplicaes relacionadas com imagens podem vir a se beneficiar de uma implementao em sistemas reconfigurveis. Se esta tendncia se confirmar, o aprofundamento em teoria de imagens na tentativa de se implementar solues que permitam maiores taxas de compresso e o desenvolvimento de hardware especfico para o processamento atravs de FPGA's, dispositivos e sistemas computacionais reconfigurveis, se revelam importantes reas para pesquisa e desenvolvimento.

60

8 Concluses Neste captulo apresentamos algumas concluses gerais, pois ao longo do texto j apresentamos vrias concluses especficas dos tpicos relacionados com os respectivos captulos. Novamente utilizaremos algumas perguntas e possveis respostas como elementos motivadores: i) quais so as principais vantagens e desvantagens da computao reconfigurvel e do uso dos sistemas computacionais reconfigurveis?; ii) quais so os principais problemas e desafios tcnicos da computao reconfigurvel; iii) quais so as principais tendncias futuras; iv) quais so as principais perspectivas acadmicas, envolvendo principalmente possibilidades de estudo e pesquisa futuras; v) quais so as principais possibilidade e perspectivas comerciais, industriais, econmicas e sociais do uso da computao reconfigurvel e dos sistemas computacionais reconfigurveis no Brasil? Como mostrado anteriormente as principais vantagens so uma aproximao do desempenho obtido com as implementaes de solues em hardware fixo e da flexibilidade das implementaes de solues em hardware programvel e software. Outras vantagens importantes so: aumento da densidade de computao; melhor casamento com o tamanho da palavra de dados; maior possibilidade de paralelismo (bit, ILP, pipeline, PLP, tarefas, processos), inclusive implementando vrios tipos de paralelismo simultaneamente; e aumento de tolerncia falhas. Entre as principais aplicaes que tem se beneficiado com o uso da computao reconfigurvel podemos destacar algumas aplicaes de propsito dedicado que possuem caractersticas ou atributos desejveis (apresentados no captulo sete) como: manipulao de informao digitalizada, como a manipulao e processamento de imagens digitais; computao embutida como em reas de entretenimento ou embarcada como na rea automobilstica; casamento de DNA; compactao e compresso de dados e sinais; criptografia; grfica computacional; multimdia; processamento de sinais, imagens e vdeos; e reconhecimento de padres. Entretanto, com a evoluo geral da computao reconfigurvel, principalmente dos dispositivos reconfigurveis e dos ambientes de auxlio ao projeto, as aplicaes com caractersticas distintas, como as aplicaes de propsito geral, tambm j comeam a ser implementadas em sistemas reconfigurveis com ganhos muito significativos. Entre os problemas possveis podemos citar: inadequao das arquiteturas reconfigurveis e/ou dos dispositivos reconfigurveis s aplicaes; altos custos de
61

projeto

implementao;

problemas

de

desempenho,

flexibilidade

desenvolvimento das solues. E entre os desafios podemos destacar: desenvolver melhores mtodos de projeto, considerando as possveis reas de aplicao e rea de formao e habilidade requeridas dos profissionais envolvidos nestes projetos; desenvolver melhores ambientes e ferramentas de auxlio ao projeto; otimizar a produtividade no desenvolvimento de projetos; desenvolver melhores arquiteturas reconfigurveis; desenvolver melhores dispositivos reconfigurveis; otimizar as implementaes de operaes de ponto flutuante, e seu desempenho; implementar os conceitos de computao reconfigurvel em software e principalmente em hardware e software simultaneamente; Iniciar e difundir o ensino (aprendizado) de computao reconfigurvel. Entre as principais tendncias futuras, algumas em fase final de projeto, podemos destacar: dispositivos com reconfigurao dinmica parcial com pequeno tempo de reconfigurao; dispositivos com cache dinmica parcial de configuraes; arquiteturas hbridas (HR, HF, HP) e dispositivos que as implementem; arquiteturas reconfigurveis adaptativas e evolutivas e dispositivos que as implementem; uso de sistemas computacionais reconfigurveis com aplicaes de propsito geral; mtodos e tcnicas para desenvolvimento com maior similaridade com ferramentas da rea de computao e no de engenharia eletrnica (hardware). Existem possibilidades de estudos e pesquisas futuras em todos os nveis: dispositivos; arquiteturas (software e hardware); mtodos e tcnicas para desenvolvimento; ambientes e ferramentas de desenvolvimento; novas aplicaes reconfigurveis; e principalmente novos conceitos e aplicao de reconfigurabilidade em outros nveis arquiteturais e computacionais. Analisando os principais aspectos industriais, econmicos e sociais da computao reconfigurvel e sua possvel utilizao no Brasil podemos afirmar que: Os sistemas computacionais reconfigurveis podem ser projetados e implementados usando-se dispositivos reconfigurveis (hardware) e ambientes de auxlio ao projeto disponveis comercialmente globalmente, sem uma obrigatoriedade de grandes investimentos em indstrias na rea de microeletrnica. Nestes sistemas podemos agregar uma grande quantidade de conhecimento (propriedade intelectual) e valor econmico que os tornam muito atrativos comercialmente tanto dentro do mercado brasileiro quanto no mercado internacional. Deste modo, percebemos que este novo modelo ou paradigma de implementao

62

de solues computacionais muito promissor e pode criar novas perspectivas para as pessoas e empresas envolvidas com a computao e a eletrnica no Brasil. Existem muitas possibilidades de pesquisa na rea de computao reconfigurvel, principalmente no desenvolvimento de solues/aplicaes e de ambientes (mtodos, tcnicas e ferramentas) de auxlio ao projeto de sistemas computacionais reconfigurveis. Entretanto, acreditamos que o desenvolvimento de pesquisas, projetos e a prpria fabricao de dispositivos reconfigurveis no Brasil tambm seja uma meta possvel, promissora e muito importante. Concluindo o nosso minicurso, esperamos que tenham entendido os principais conceitos e tcnicas relacionadas com a computao reconfigurvel como: dispositivos reconfigurveis; arquiteturas reconfigurveis; sistemas computacionais reconfigurveis acadmicos e comerciais; ambientes e ferramentas de projeto, desenvolvimento e programao de aplicaes em sistemas reconfigurveis. E que comecem a utilizar estes conhecimentos o mais rapidamente possvel, e que nos auxiliem no aumento do nmero de pessoas envolvidas na gerao de conhecimentos e na publicao de artigos nessa rea. Com relao aos nossos objetivos principais com a proposio e realizao deste minicurso, apresentados na introduo, esperamos ter atingido pelo menos alguns deles. Mas acreditamos que vocs so os mais indicados para analisar se foram atingidos ou no. Este material j est sendo aumentado e melhorado para que possa ser transformado futuramente, o mais brevemente possvel, em um livro sobre a computao reconfigurvel. Deste modo, esperamos poder contribuir no processo de apresentao ps-graduao. Finalmente gostaramos de fazer os nossos agradecimentos. Inicialmente a todas as pessoas envolvidas na organizao da Escola de Informtica do Norte (EIN2002), especialmente ao professor Afonso Cardoso pela oportunidade de apresentar este minicurso e pela pacincia conosco; alm disso gostaramos de agradecer o apoio constante recebido dentro da nossa Universidade de modo geral e principalmente da Pr-reitoria de Pesquisa e de Ps-graduao da PUC Minas; tambm gostaramos de agradecer aos amigos e colegas do Laboratrio de Sistemas Digitais e Computacionais (LSDC) pelo auxlio e amizade; e finalmente os nossos maiores agradecimentos aos principais responsveis e motivadores das
63

difuso

dos

conhecimentos

relacionados

computao

reconfigurvel no Brasil, principalmente nos cursos e entre os alunos de graduao e

nossas atividades como professores e pesquisadores, que so os nossos alunos de graduao e ps graduao sem os quais provavelmente no teramos tido a oportunidade de conhecer, estudar e pesquisar uma nova rea to interessante e promissora como a computao reconfigurvel.

64

9 Referncias Bibliogrficas Neste ltimo captulo indicamos as nossas referncias bibliogrficas. Alm disso, indicamos um novo portal denominado CoreOnLine que est sendo criado e que ser totalmente dedicado a rea da Neste computao portal reconfigurvel (http://www.lsdc.inf.pucminas.br/CoreOnLine/). disponibilizaremos

material e links de fontes de material complementar (revistas, congressos, pesquisadores, grupos de pesquisa, sites internet) relacionados com a computao reconfigurvel. [Adelante 2002] Adelante Technologies - http://www.adelantetechnologies.com/. Visitado em Agosto de 2002. [Albuquerque 1999] Jones Albuquerque, Claudionor J. N. Coelho Jr., Diogenes C. da Silva Jr., Antonio O. Fernandes. System-Level Design Exploration. XIV SBMicro/ICMP 99, August 1999, pp. 332-342. [Almasi 1994] ALMASI, G. S.; GOTTLIEB, A. Highly Parallel Computing 2.ed., Benjamin/Cummings, 1994. [Arai 1998] T. Arai, I. Kuroda, K. Nadehara, K. Suzuki. V830R/AV: Embedded

Multimedia Superscalar RISC processor. IEEE Micro, pp. 36-47, Mar/April, 1998. [Ashenden 1990] Peter J. Ashenden. The VHDL Cookbook, 1st Edition, 1990. [Athanas 1992] P. M. Athanas - "An Adaptive Machine Architecture and Compiler for Dynamic Processor Reconfiguration", Ph.D. thesis, Brown Univerity, USA, 1992 [Bellows 1998] Peter Bellows, Brad Hutchings. JHDL-An HDL for Reconfigurable Systems.Proceedings of the IEEE Symposium on Field-Programmable Custom Computing Machines, April 1998. [Bitner 1997] R. Bitner and P. Athanas - "WormHole Run-Time Reconfiguration", ACM/SIGDA International Symposium on Field Programmable Gate Array FPGA'97, October 1997.

65

[Buyya 1999a] Buyya, R. High Performance Cluster Computing: Architectures And Systems , Prentice Hall Nj, Usa, 1999. [Buyya 1999b] Buyya, R. High Performance Cluster Computing: Programming And Applications , Prentice Hall Nj, Usa, 1999. [Cadambi 1998] Srihari Cadambi, Jeffrey Weener, Seth Copen Goldstein, Herman Schmit, Donald E. Thomas, "Managing Pipeline-Reconfigurable FPGAs," Proceedings ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays, p. 55-64, Feb. 1998 [Chen 1977] W. H. Chen, C.H. Smith, S.C. Fralick. A fast computational algorithm for the Discrete Cosine Transform. IEEE Trans. Communications, Vol. 25, No. 9, pp. 1004-1009, Sep., 1977. [Chia 1998] K. Chia, H.J. Kim, S. Lansing, W.H. Mangione-Smith, J. Villasenor. High performance automatic target Recognition through data-specific VLSI. IEEE Trans. Very Large Scale Integration (VLSI) Systems. Vol. 6, No. 3, pp. 364-371, Sep. 1998. [Chou 2000] Y. Chou, P. Pillai, H. Schmit, and J. P. Shen "PipeRench Implementation of the Instruction Path Coprocessor," in IEEE/ACM International Symposium on Microarchitecture (Micro-33), pp. 147-158, December 2000. [Coelho 1998] Claudionor J. N. Coelho Jr., Diogenes C. da Silva Jr., Antonio O. Fernandes. Hardware-Software Codesign of Embedded Systems. SBCCI 98. September 1998, pp. 2-8. [Compton 2002] Katherine Compton, Scott Hauck. Reconfigurable Computing: A Survey of Systems and Software. ACM Computing Survey, Vol. 34, No. 2, June 2002, pp. 171-210. [CORE 2000] Computao Reconfigurvel Editado por Edward D. Moreno Ordonez, Jorge Luiz e Silva, Fundao de Ensino Eurpedes Soares da Rocha (FEESR) 2000.

66

[Decegama 1989] Decegama, A. L. Parallel Processing Architectures And Vlsi Hardware: Volume I, Prentice Hall, 1989. [Dehon 1996] A. Dehon - "Reconfigurable Architecture for General-Purpose Computing", Ph.D. thesis, Massachusetts Institute of Technology, 1996. [Dehon 2000] DEHON, Andre. The Density Advantage of Configurable Computing. In: IEEE Computer. Vol. 33, No. 4. 2000. [Foundation 2002] Xilinx 4 Software Manuals. [Goldstein 1999] Seth Copen Goldstein, Herman Schmit, Matthew Moe, Mihai Budiu, Srihari Cadambi, R. Reed Taylor, Ronald Laufer, "PipeRench: A Coprocessor for Streaming Multimedia Acceleration," in International Symposium on Computer Architecture, pp. 38-49, 1999. [Goldstein 2000] Seth Copen Goldstein, Herman Schmit, Mihai Budiu, Srihari Cadambi, Matthew Moe, R. Reed Taylor, "PipeRench: A Reconfigurable Architecture and Compiler," in Computer, pp. 70-77, April, 2000, [Hauck 1997] S. Hauck, T. W. Fry, M. M. Hosler, J. P. Kao, "The Chimaera Reconfigurable Functional Unit" , IEEE Symposium on FPGAs for Custom Computing Machines, pp. 87-96, 1997. [Hauck 1998] S. Hauck - "The Roles of FPGAs in Reprogrammable Systems", Proceedings of the IEEE, Vol. 86, No. 4, pp.615-638, April, 1998. [Hauser 1997] J. R. Hauser and J. Wawrzynek - "Garp: A MIPS Processor with a Reconfigurable Coprocessor", Proceedings of the IEEE Symposium on FieldProgrammable Custom Computing Machines - FCCM '97, USA, April 1997. [Hsieh 1992] C. Hsieh, T. Lin. VLSI Architecture for Blocking-Matching Motion Estimation Algorithm. IEEE Transaction Circuits and Systems for Video Technology, Vol. 2, No. 2, pp. 169-175, June, 1992.

67

[Hutchings 1999] Brad Hutchings, Peter Bellows, Joseph Hawkins, Scott Hemmert, Brent Nelson, Mike Rytting. A CAD Suite for High-Performance FPGA Design. Proceedings of the IEEE Symposium on Field-Programmable Custom Computing Machines, April 1999. [Hwang 1998] HWANG, K.; XU, Z. Scalable Parallel Computing: Technology, Architecture, Programming, McGraw-Hill, 1998. [JHDL 2002] JHDL FPGA CAD Tools - Brigham Young University http://www.jhdl.org. Visitado em Agosto de 2002. [Lewis 1998] LEWIS, T. G.; EL-REWINI, H. Distributed and Parallel Computing, Manning, 1998. [Miyamori 1999] T. Miyamori, K. Olukotun. 389-397, Feb., 1999. [Moe 1998] Matthew Moe, Herman Schmit, and Seth Copen Goldstein, REMARC: reconfigurable multimedia

array co-processor. IEICE Transaction Information Systems, Vol. E82-D, No. 2, pp.

"Characterization and parameterization of a pipeline reconfigurable FPGA," in Proceedings. IEEE Symposium on FPGAs for Custom Computing Machines, pp.294295, April, 1998 [MPEG 1994] ISO/IEC JTC1 CD 13818. Generic Coding of Moving Pictures, MPEG Standard, 1994. [Mullender 1996] MULLENDER, Sape J. Distributed-Operating Systems, ACM Computing Surveys, Vol. 28, No. 1, March 1996. [Nam 1994] S.H. Nam, J.S. Baek, T.Y Lee, M.K. Lee. Sep., 1994. A VLSI Designs for Full

Search Block Matching Motion Estimation. Proc. IEEE ASIC Conf., pp. 254-257,

68

[Ordonez 2000] Edward David Moreno Ordonez, Jorge Luiz e Silva. Computao Reconfigurvel Experincias e Perspectivas, Fundao de Ensino Eurpides Soares da Rocha (FEESR), 2000. [Pfister 1998] Pfister, G. In Search Of Clusters , Prentice Hall ,1998. [Pressman 2001] Roger S. Pressman. Software Engineering: A Practitioner's Approach. McGraw Hill, 5th edition, November 2001. [Rencher 1997] M. Rencher, B. L Hutchings. pp. 192-200, Apr., 1997. [Salomao 1998] C. Salomao, V. Alves, E.C. Filho. HiPCrypto: A high performance VLSI Cryptografic Chip. Proc. IEEE ASIC Conf., pp. 7-13, Sep., 1998. [Sanchez 1999] Sanchez, E. et al. "Static and Dynamic Configurable Systems", IEEE Transactions of Computers, june 1999, pp. 556-564. [SBAC-PAD 2000] Proceedings: 12th Symposium on Computer Architecture and High Performance Computing, So Carlos, Universidade Federal de So Carlos UFSCar, 2000. [SBAC-PAD 2001] Proceedings: 13th Symposium on Computer Architecture and High Performance Computing: editors Alba Cristina M. A. de Melo, Mrio Antnio R. Dantas, Jairo Panetta. Braslia: Departamento de Cincia da Computao da UNB, 2001. [Schmit 2002] H. Schmit, D. Whelihan, A. Tsai, M. Moe, B. Levine, R. R. Taylor, "PipeRench: A Virtualized Programmable Datapath in 0.18 Micron Technology" Proceedings of the IEEE Custom Integrated Circuits Conference (CICC), 2002. [Schneier 1996] B. Schneier. Other Block Ciphers. Applied Cryptography, pp. 319325, New York, Edit. John Wiley, 1996. Automated target recognition on

SPLASH 2. Proc. IEEE Symp. Field Programmable Custom Computing Machines,

69

[SCR 2001] Anais do I Seminrio de Computao Reconfigurvel, Editor Carlos Augusto Paiva da Silva Martins, Instituto de Informtica, PUC Minas, 2001. [Singh 2000] Hartej Singh, Ming-Hau Lee, Guangming Lu, Fadi J. Kurdahi, Nader Bagherzadeh, Eliseu M. Chaves Filho. Morphosys: An Integrated Reconfigurable System for Data-Parallel and Computation-Intensive Applications. IEEE Transactions on Computers, Vol. 49, No. 5, May 2000, pp. 465-481. [Sipper 2000] Sipper, M.; Sanchez, E. "Configurable Chips Meld Software and Hardware", IEEE Computer, jan. 2000, pp. 120-121. [Smith 1997] Douglas J. Smith - HDL Chip Design / A practical guide for designing, synthesizing and simulating ASICs and FPGAs using VHDL or Verilog Doone Publications.1997. [Tanenbaum 1995] TANENBAUM, Andrew S.: Distributed Operating Systems, Prentice Hall, New Jersey, Upper Saddle River, 1995. [Texas 2002] Texas Instruments Inc. TMS320C6000 Assembly Benchmarks at

Texas Instruments: C64X DSP benchmarks. www.it.com/sc/docs/products/dsp/ [Turley 1998] Turley, J. "Triscend E5 Reconfigures Microcontrollers", Microprocessor Report, Nov. 16, 1998, pp. 12-13. [Villasenor 1997] Villasenor, J.; Mangione-Smith, W. H. "Configurable Computing", Scientific American, june 1997, pp. 54-59. [Wolf 1994] Wolf, W.; "Modern VLSI Design: A system Approach", Englewood Cliffs, Prentice Hall, 1994. [WSCAD 2000] Proceedings: I Workshop em Sistemas Computacionais de Alto Desempenho (WSCAD): editores Luis Carlos Trevelin, Alba Cristina M. A. de Melo, Liria Matsumoto Sato, Jos Hiroki Saito, So Carlos, Universidade Federal de So Carlos UFSCar, 2000.

70

[WSCAD 2001] Proceedings: II Workshop em Sistemas Computacionais de Alto Desempenho (WSCAD): editores Alba Cristina M. A. de Melo, Alberto F. Souza, Mrio Antnio R. Dantas, Braslia, Departamento de Cincia da Computao da UNB, 2001. [Yang 1989] K.M. Yang, M. T. Sun, L. Wu. A family of VLSI Design for Motion Compensation Block Matching Algorithm. IEEE Trans. Circuits and Systems. Vol 36, No. 10, pp. 1317-1325, Oct., 1989. http://toolbox.xilinx.com/docsan/xilinx4/manuals.htm.Visitado em Agosto de 2002. Sites da WEB [Web 01] Processamento Digital de Imagens. Og Marques Filho, Hugo V. Neto, 1999. [Web 02] Sistemas de TV a Cabo - Hlcio Aranha, Eng., 1998 [Web 03] Introduction to Cisco Cable Routers Cisco Systems, Inc, 2000 [Web 04] The Hybrid Fiber/ Coax Rverse Path Scientific Atlanta, Inc., 1997 [Web 05] Compactao de Vdeo MPEGII - Diogo Zandonai, 2000 [Web 06] http://developer.axis.com/ [Web 07] http://developer.axis.com/products/etrax100lx/index.html [Web 08] http://developer.axis.com/doc/hardware/mcm/MCM_datasheet.htm [Web 09] http://developer.axis.com/doc/index.html [Web 10] http://www.dcmm.puc-rio.br/Cursos/IPDI/sld001.htm

71

Você também pode gostar