2.2 HARDWARE RECONFIGUR ´ AVEL
2.2.3 Vantagens da computa¸c˜ao reconfigur´avel
Desde um ponto de vista operacional, um FPGA ´e um tipo de dispositivo reconfigur´avel que permite realizar, em um ciclo de rel´ogio, tarefas que para um processador tipo von Neumann podem exigir dezenas ou centenas de ciclos de rel´ogio [39]. ´E importante salientar que no modelo de processador cl´assico apenas o algoritmo ´e vari´avel, enquanto os recursos de hardware s˜ao fixos (hardwired ). Entretanto, no modelo de computa¸c˜ao reconfigur´avel ambos o algoritmo e os recursos de hardware podem ser program´aveis. Neste sentido, existem dois conceitos importantes: (a) flowware em que existe uma programa¸c˜ao dos fluxos de dados, em lugar de um fluxo de instru¸c˜oes, os quais s˜ao controlados por contadores e sequenciadores de dados, permitindo modificar a l´ogica implementada; (b) configware em que existe uma programa¸c˜ao estrutural dos recursos usando ferramentas de mapeamento (placement and routing) e, portanto, permitem a realoca¸c˜ao e reconfigura¸c˜ao do hardware [9].
Para trabalhar com o modelo de fluxo de dados (flowware), os algoritmos s˜ao previ- amente mapeados nos blocos l´ogicos do dispositivo FPGA. Neste tipo de dispositivos configur´aveis os fluxos de dados podem ser vistos como tarefas implementadas espaci- almente constitu´ıdas de operadores simples, os quais s˜ao ligados uns aos outros, atrav´es de fios el´etricos. Em contraste, nos processadores tradicionais, as tarefas ou instru¸c˜oes s˜ao sequenciadas temporalmente, usando registros ou mem´orias para armazenar os re- sultados interm´edios [39]. A consequˆencia mais significativa deste tipo de abordagem ´e um ganho significativo no desempenho, se comparado com processadores convencio- nais, devido `a enorme redu¸c˜ao de ciclos de rel´ogio necess´arios para acessar `as mem´orias. Por outro lado, nos FPGAs os blocos l´ogicos podem ser configurados para permitir um fluxo de dados de forma independente e paralela. Isto possibilita a execu¸c˜ao, em uma ´
unica pastilha, de diferentes processos concorrentes, aumentando a quantidade de da- dos processados por segundo (throughput) e, portanto, melhorando o desempenho dos algoritmos implementados em rela¸c˜ao `as solu¸c˜oes baseadas em software [40].
Dispositivos FPGA modernos contˆem, al´em dos blocos l´ogicos configur´aveis, arranjos de blocos dedicados para processamento digital de sinais (DSP - Digital Signal Proces- sing), os quais disponibilizam recursos de multiplicadores, somadores e acumuladores. Adicionalmente, dispositivos FPGAs tamb´em fornecem blocos de mem´oria RAM, blo- cos de controle do rel´ogio usando PLLs ou DLLs, entre outras funcionalidades. Tendo em vista que a maioria dos algoritmos de processamento de sinais possuem um con- sumo massivo de multiplicadores e acumuladores, os FPGAs s˜ao uma solu¸c˜ao fact´ıvel,
eficiente e econˆomica para a implementa¸c˜ao deste tipo de algoritmos [41].
O projeto de sistemas embarcados de alto desempenho ´e um desafio que se apresenta, hoje em dia, na ´area de sistemas digitais. Neste sentido, os dispositivos FPGAs podem aproveitar a sua flexibilidade e capacidade de processamento paralelo, fazendo uso de processadores de software e ferramentas correlatas para implementar sistemas embar- cados com alto desempenho e baixo consumo de potˆencia [9]. Aplica¸c˜oes na ind´ustria automotiva, dispositivos m´edicos, redes sem fio, multim´ıdia, processamento de imagens e v´ıdeo, processamento digital de sinais, rob´otica de manipuladores e rob´otica m´ovel, s˜ao exemplos de aplica¸c˜oes em que os FPGAs tˆem mostrado resultados promiss´orios no ˆambito do projeto de sistemas embarcados [42], [9], [43].
Neste contexto, o consumo de potˆencia tem passado a ser um importante crit´erio de projeto de circuitos, especificamente para aplica¸c˜oes port´aveis [44]. Em adi¸c˜ao `a flexi- bilidade e aos ganhos de desempenho, outra caracter´ıstica chamativa dos dispositivos FPGAs ´e o seu baixo consumo de potˆencia se comparado com solu¸c˜oes de software usando computadores convencionais [9]. No entanto, o consumo de potˆencia dos FP- GAs, continua sendo maior se comparado com solu¸c˜oes baseadas em ASICs [45], ou solu¸c˜oes baseadas em processadores RISC (Reduced Instruction Set Computer ) [46]. Portanto, existe um compromisso fundamental que deve ser resolvido pelo projetista quando trabalha na ´area de sistemas embarcados: um dispositivo FPGA pode deman- dar um consumo de energia maior do que um ´unico processador RISC, por´em permite melhoras significativas no desempenho computacional.
Como explicado na figura 1.1, o foco do presente trabalho se concentra em sistemas de otimiza¸c˜ao embarcados com restri¸c˜oes de baixa dimensionalidade (na ordem de deze- nas) e tempos de execu¸c˜ao na ordem de milissegundos at´e alguns segundos. Aplica¸c˜oes como planejamento/replanejamento de trajet´oria de robˆos m´oveis, rob´otica multia- gente, vis˜ao computacional, redes de sensores distribu´ıdas, estima¸c˜ao de parˆametros em tempo real, sintoniza¸c˜ao de parˆametros em tempo real para processos industriais, treinamento online de redes neurais artificiais em sistemas port´aveis, entre outros, s˜ao exemplos de aplica¸c˜oes embarcadas em que frequentemente etapas de otimiza¸c˜ao de- vem ser realizadas visando melhorar os resultados e/ou a tomada de decis˜oes. Todavia, este tipo de aplica¸c˜oes exigem que os algoritmos de otimiza¸c˜ao sejam executados cum- prindo requerimentos de alto desempenho em termos de tempo de execu¸c˜ao e precis˜ao dos c´alculos, assim como baixo consumo de potˆencia.
No contexto do presente trabalho os dispositivos FPGAs s˜ao utilizados para explorar as capacidades de paralelismo intr´ınseco dos algoritmos de otimiza¸c˜ao por inteligˆencia de enxames, visando diminuir o tempo de execu¸c˜ao e aumentar a qualidade das solu¸c˜oes, mantendo um consumo de potˆencia baixo em rela¸c˜ao a implementa¸c˜oes em software. Neste sentido, os algoritmos estudados e as suas respectivas arquiteturas paralelas po- dem ser direcionados para problemas de otimiza¸c˜ao embarcadas, em que a capacidade computacional limitada das solu¸c˜oes microprocessadas convencionais ´e um obst´aculo na resolu¸c˜ao de problemas de otimiza¸c˜ao em uma quantidade de tempo aceit´avel.