• Nenhum resultado encontrado

LP-P2IP: uma versão de baixo consumo da arquitetura P2IP usando reconfiguração parcial em FPGA

N/A
N/A
Protected

Academic year: 2021

Share "LP-P2IP: uma versão de baixo consumo da arquitetura P2IP usando reconfiguração parcial em FPGA"

Copied!
99
0
0

Texto

(1)UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE. U NIVERSIDADE F EDERAL DO R IO G RANDE DO N ORTE C ENTRO DE T ECNOLOGIA P ROGRAMA DE P ÓS -G RADUAÇÃO EM E NGENHARIA E LÉTRICA E C OMPUTAÇÃO. LP-P2IP: Uma Versão de Baixo Consumo da Arquitetura P2IP Usando Reconfiguração Parcial em FPGA. Álvaro Medeiros Avelino. Orientador: Prof. Dr. Valentin Obac Roda. Tese de Doutorado apresentada ao Programa de Pós-Graduação em Engenharia Elétrica e Computação da UFRN (área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Doutor em Ciências.. Número de ordem PPgEEC: D196 Natal, RN, junho de 2017.

(2) Universidade Federal do Rio Grande do Norte - UFRN Sistema de bibliotecas - SISBI Catalogação da publicação na fonte. UFRN - Biblioteca Central Zila Mamede Avelino, Álvaro Medeiros. LP-P2IP: uma versão de baixo consumo da arquitetura P2IP usando reconfiguração parcial em FPGA / Álvaro Medeiros Avelino. - 2017 98 f.: il. Tese (Doutorado) - Universidade Federal do Rio Grande do Norte, Centro de Tecnologia, Programa de Pós-Graduação em Engenharia Elétrica e de Computação. Natal, RN, 2017. Orientador: Prof. Dr. Valentin Obac Roda.. 1. FPGA - Tese. 2. Reconfiguração parcial - Tese. 3. Processamento de vídeo em tempo real - Tese. 4. Eficiência energética - Tese. I. Roda, Valentin Obac. II. Título. RN/UF/BCZM. CDU 004.

(3)

(4) À minha esposa, Ágata, pela paciência e apoio constante durante toda a realização deste trabalho..

(5) Agradecimentos. Ao meu orientador, professor Valentin Obac Roda, sou grato pelo constante apoio durante o período em que me orientou. Ao professor Carlos Alberto Valderrama Sakuyama por ter me recebido na Universidade de Mons, Bélgica, pelo incentivo à escolha do tema e pela ajuda na revisão de artigos e também do próprio texto da tese. Aos colegas do laboratório Semi, na Universidade de Mons, e, em especial, ao também potiguar Glauberto Alves Leilson de Albuquerque pelas infinitas dicas e sugestões e Naim Harb, que é bastante experiente em Reconfiguração Parcial usando FPGAs e me ajudou bastante no período sanduíche. Ao colega Paulo Possa, pois o trabalho dele serviu de base para o desenvolvimento do meu, e também pela paciência de discutir (normalmente por várias horas, via Skype) detalhes de implementação do projeto. Ao professor José Alberto Nicolau, por ter me incentivado a levar à frente o processo de registro de software. Ao amigo Julio Paulino, pela infindável paciência para discutir, criticar e sugerir detalhes do meu trabalho. À minha família pelo apoio durante esta jornada. À CAPES, pelo apoio financeiro durante a realização do período sanduíche..

(6) Resumo. Uma das linhas de pesquisa que tem crescido bastante nos últimos anos é a que investiga consumo energético em sistemas digitais. Uma das técnicas utilizadas em FPGAs é a Reconfiguração Parcial. Entretanto, a maioria dos trabalhos científicos abordam esta técnica para otimização de recursos do FPGA. Este trabalho investiga a utilização deste recurso como uma maneira de atingir um consumo energético mais eficiente. A fim de validar a metodologia proposta testes foram realizados na arquitetura P2 IP, que é reconfigurável, de grão grosso e baixa latência, aplicada ao processamento de imagens em tempo real. Esta arquitetura, que na sua primeira versão não suporta reconfiguração parcial, foi implementada em FPGA, sendo validada com alguns algoritmos básicos de processamento de imagens, tais como Edge Sharpening, Canny Edge Detection e Harris Corner Detection. A quantidade de Elementos de Processamento (EPs) é definida pelo algoritmo que demanda uma quantidade maior de processamento. Entretanto, dependendo da aplicação, nem todos os EPs estão completamente em uso. Mesmo estando ociosos estes EPs contribuem ativamente para o consumo estático de potência. A ideia do presente trabalho é explorar esta limitação da implementação original da arquitetura e propor uma versão modificada do EP, que não contenha nenhum bloco interno de processamento, mas seja capaz de garantir a continuidade do fluxo de vídeo. Quando necessário, este novo EP é substituído pelo tradicional, em tempo de execução, utilizando Reconfiguração Parcial. Isso leva a um consumo energético mais eficiente. As variáveis utilizadas na validação da proposta são o consumo energético (medido em tempo real), a latência durante a reconfiguração parcial e a alocação de recursos no FPGA. Foi demonstrado que é possível diminuir em até 45% o consumo utilizando RP e que a latência para aplicar RP não altera a característica de tempo real da arquitetura. Com relação à alocação de recursos no FPGA, a versão da arquitetura que utiliza RP utiliza menos de 5% de recursos adicionais. Palavras-chave: FPGA, Reconfiguração Parcial, processamento de vídeo em tempo real, eficiência energética..

(7) Abstract. In recent years energy-efficiency research in digital systems has increased a lot. One of the techniques used in FPGAs is Partial Reconfiguration. However, most of the cientific works apply this technique to otimize FPGA resources. This thesis investigates the usage of this resource as a way of achieving a more efficient power consumption. In order to validate the proposed methodology tests have been carried out on the P2 IP architecture, which consists of a coarse grain reconfigurable (runtime) architecture with low latency, applied to real time image processing. This architecture, which does not support Partial Reconfiguration in its first implementation, has been validated in FPGA, being implemented with some basic image processing algorithms, such as Edge Sharpening, Canny Edge Detection and Harris Corner Detection. The amount of Processing Elements (PEs) is defined by the algorithm which demands the highest processing capacity. However, depending on the video processing algorithm, not all PEs are completely in use. The idle PEs still contribute to the static power consumption. The aim of the present work is to explore this limitation in the original implementation and propose a modified PE, which does not contain any processing blocks, but is able to replicate the input on the output, ensuring the video stream continuity. This way, on demand, the original PE can be replied by the new one, using Partial Reconfiguration. It leads to a more efficent energy consumption. To validate this proposal, energetic consumption (measured in real time), latency during Partial Reconfiguration and used resources are analyzed. It has been demonstrated that it is possible to shorten up to 45% of the power consumption using PR, and the latency to apply PR does not compromises the real time feature of the architecture. About the resource utilization, the PR version requires less than 5% of additional resources. Keywords: FPGA, Partial Reconfiguration, real time video processing, energy efficiency..

(8) Sumário. Sumário. i. Lista de Figuras. iv. Lista de Tabelas. vii. Lista de Símbolos e Abreviaturas. viii. 1. Introdução 1.1 Objetivos . . . . . . . . . . . . . . . . . 1.2 Metodologia . . . . . . . . . . . . . . . . 1.3 Organização do Texto . . . . . . . . . . . 1.4 Publicações Aceitas . . . . . . . . . . . . 1.4.1 Artigo em periódico . . . . . . . 1.4.2 Anais de congresso . . . . . . . . 1.4.3 Registro de software junto ao INPI. . . . . . . .. 1 5 6 6 7 7 7 8. 2. Reconfiguração Parcial 2.1 Estado da Arte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Artigos relacionados . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9 13 14 17. 3. Arquitetura P2 IP 3.1 Elemento de Processamento . . . . . . 3.1.1 Memory Controller . . . . . . . 3.1.2 Operadores de imagem . . . . . 3.1.3 Reconfigurable Interconnection 3.2 Aplicações . . . . . . . . . . . . . . . . 3.2.1 Edge Sharpening . . . . . . . . 3.2.2 Canny Edge Detection . . . . . 3.2.3 Harris Corner Detection . . . .. 18 19 20 22 25 26 27 28 30. i. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . .. . . . . . . . .. . . . . . . . ..

(9) 3.3 3.4 4. 5. 6. Mecanismo de Configuração . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Configurando Internamente um EP . . . . . . . . . . . . . . . . . Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Sistema Proposto 4.1 Placa Utilizada . . . . . . . . . . . . . . . . . . 4.2 Medição de Potência . . . . . . . . . . . . . . . 4.3 Reconfiguração Parcial Aplicada à P2 IP . . . . . 4.3.1 Aplicações mapeadas na P2 IP usando RP 4.3.2 Código da RP . . . . . . . . . . . . . . . 4.3.3 Carregando uma aplicação . . . . . . . . 4.4 Conclusão . . . . . . . . . . . . . . . . . . . . .. 33 33 35. . . . . . . .. 37 38 39 42 45 46 47 53. . . . . .. 54 54 56 58 59 62. Conclusões 6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 63 65. Resultados 5.1 Ferramentas de Software Utilizadas 5.2 Alocação de Recursos do FPGA . . 5.3 Medição do Consumo de Potência . 5.4 Latência de Reconfiguração . . . . . 5.5 Conclusão . . . . . . . . . . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. . . . . . . .. . . . . .. Referências bibliográficas. 66. A Scripts TCL A.1 Código principal . . . . . . . . . A.2 create_system_zc702.tcl . . . . . A.3 synth_reconfig_modules_zc702.tcl A.4 create_app3_7PEs.tcl . . . . . . . A.5 prepare_to_app2_7PEs.tcl . . . . A.6 create_app2_7PEs.tcl . . . . . . . A.7 prepare_to_app1_7PEs.tcl . . . . A.8 create_app1_7PEs.tcl . . . . . . . A.9 prepare_to_bypass.tcl . . . . . . . A.10 create_bypass.tcl . . . . . . . . . A.11 verify_configurations.tcl . . . . .. 74 74 75 78 80 80 80 81 81 82 82 82. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . ..

(10) A.12 generate_bitstreams_7PEs.tcl . . . . . . . . . . . . . . . . . . . . . . . .. 83.

(11) Lista de Figuras. 1.1 1.2 1.3. 2.1. 2.2 2.3. 2.4. 3.1 3.2. 3.3 3.4 3.5 3.6 3.7. Linha do tempo mostrando algumas aplicações de sistemas reconfiguráveis comerciais com impacto significante. Fonte: [Tessier et al. 2015]. . . Redução do comprimento da porta em transistores de tecnologia CMOS. Fonte: [Hassan e Anis 2010]. . . . . . . . . . . . . . . . . . . . . . . . . Contribuição da potência de fuga em relação à potência total. Fonte: [Hassan e Anis 2010]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Área de um FPGA, englobando as regiões estática e dinâmica. Esta última, por sua vez, pode conter várias Regiões de Reconfiguração Parcial. Fonte: autoria própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . Visão lógica de um projeto que possui um módulo reconfigurável. Fonte: [Henkel e Parameswaran 2007]. . . . . . . . . . . . . . . . . . . . . . . Duas RRs (simbolizadas por pblock_1 e pblock_2) na região X0Y2 do FPGA, compartilhando a mesma região de clock, o que é proibido para a família Artix-7. Fonte: autoria própria. . . . . . . . . . . . . . . . . . . . Metodologia de projeto em FPGA usando RP. Fonte: adaptado de [Xilinx 2015c]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama funcional da arquietura P2 IP, com seus principais componentes. Fonte: adaptado de [Possa 2013]. . . . . . . . . . . . . . . . . . . . . . . Diagrama funcional de um EP, mostrando a disposição e interconexão dos módulos Pixel Processor (PP), Spatial Processor (SP), e Memory Controller (MC), assim como o Reconfigurable Interconnection (RI). Fonte: [Possa 2013]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Elementos internos do EP. Fonte: autoria própria. . . . . . . . . . . . . . Diagrama funcional do Memory Controller. Fonte: [Possa et al. 2015]. . . Princípio de funcionamento de um extrator de vizinhança 3 × 3. Fonte: [Possa et al. 2015]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama funcional do Spatial Processor. Fonte: [Possa et al. 2015]. . . . Diagrama funcional do Pixel Processor. Fonte: [Possa et al. 2015]. . . . . iv. 2 4 5. 11 11. 12 13. 19. 20 21 22 23 23 24.

(12) 3.8 3.9. 3.10. 3.11 3.12 3.13. 3.14. 4.1. 4.2. 4.3 4.4. 4.5. 4.6 4.7. Diagrama funcional do Reconfigurable Interconnection. Fonte: [Possa et al. 2015]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diferentes configurações do datapath, mapeadas pelo módulo Reconfigurable Interconnection. (a) Pipeline regular. (b) Fork then fusion. (c) Pipelines independentes e paralelos. Fonte: [Possa et al. 2015]. . . . . . . Edge Sharpening: três EPs. O EP1 processa o componente R, o EP2 é responsável pelo processamento do componente G e, por último, o EP3 processa o componente B. Fonte: autoria própria. . . . . . . . . . . . . . Canny Edge Detection: cinco EPs. Fonte: autoria própria. . . . . . . . . . Harris Corner Detection: sete EPs. Fonte: autoria própria. . . . . . . . . Exemplo de uma imagem processada pelas três aplicações mapeadas na P2 IP. (a) Imagem original; (b) Canny Edge Detection - saída invertida para melhor visualização; (c) Edge Sharpening; (d) Harris Corner Detection. Fonte: [Possa 2013]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura do CDT, destacando, em azul-escuro, os nós ativos durante a configuração de um operador. Fonte: [Possa 2013]. . . . . . . . . . . . . Os três reguladores de potência da ZC702. Cada um destes pode ser acessado, por hardware ou por software, através de um endereço PMBus. Fonte: [Xilinx 2015d]. . . . . . . . . . . . . . . . . . . . . . . . . . . . Circuito de medição da potência consumida pelo núcleo do FPGA e como esta informação é transmitida através do protocolo I2 C. Fonte: adaptado de [Xilinx 2013b]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura P2 IP usando RP. Fonte: autoria própria. . . . . . . . . . . . . Fluxograma, mostrando desde o momento em que a placa é ligada (inicialização do ARM) até o chaveamento entre aplicações, incluindo o carregamento de bitstreams parciais. Fonte: autoria própria. . . . . . . . . . . Edge Sharpening utilizando RP. Os EPs 4, 5, 6 e 7 não executam nenhum processamento, e, consequentemente, são configurados como bypass, contribuindo para um consumo energético mais eficiente. Fonte: autoria própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Canny Edge Detection utilizando RP, em que os EPs 6 e 7 são configurados como bypass. Fonte: autoria própria. . . . . . . . . . . . . . . . . . . Palavra de configuração do EP. Fonte: autoria própria. . . . . . . . . . . .. 25. 26. 28 30 32. 34 35. 39. 41 43. 44. 46 46 48.

(13) 4.8. 5.1. 5.2. 5.3. 5.4. Máquina de estados, mostrando quais bitstreams precisam ser carregados ao mudar entre aplicações, onde EPx significa o bitstream na configuração padrão, e EPxBP significa a configuração bypass do bitstream n. Fonte: autoria própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrama de blocos no Vivado, incluindo o ARM (ZYNQ7 Processing System), o IP de configuração dos blocos internos do EP (config_in_v1.0) e o núcleo de processamento da P2 IP (top_v_1_0). Fonte: autoria própria. Área do FPGA. Os retângulos roxos são as RRs. Os EPs, contidos nas RRs, estão destacados em amarelo-escuro. As interconexões entre os EPs estão realçados em laranja. Fonte: autoria própria. . . . . . . . . . . . . . Potência consumida pelo FPGA desde o boot, passando pelas aplicações Sharp (App1, na Figura), Edge (App2, na Figura) e Corner (App3, na Figura). Fonte: autoria própria. . . . . . . . . . . . . . . . . . . . . . . . Autonomia da bateria: implementação estática x RP. Fonte: autoria própria.. 48. 55. 57. 59 60.

(14) Lista de Tabelas. 4.1 4.2 4.3 4.4 5.1 5.2 5.3 5.4. Pontos de medição na placa ZC702. Fonte: [Xilinx 2015d]. . . . . . . . . Latência dos comandos I2 C. . . . . . . . . . . . . . . . . . . . . . . . . Parâmetros de configuração da arquitetura. Fonte: Paulo Possa (nunca publicado). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Continuação da Tabela 4.3. Fonte: Paulo Possa (nunca publicado). . . . .. 40 41. Utilização de recursos por EP. . . . . . . . . . . . . . . . . . . . . . . . Alocação de recursos, comparada à implementação original. . . . . . . . Potência consumida: implementação original × implementação utilizando RP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Latência para alternar entre as aplicações. . . . . . . . . . . . . . . . . .. 57 58. vii. 51 52. 58 60.

(15) Lista de Símbolos e Abreviaturas. ASIC. Application Specific Integrated Circuit. CDT. Configuration Decoder Tree. DCP. Design CheckPoint. DMA. Direct Memory Access. DSP. Digital Signal Processor. EP. Elemento de Processamento. FPGA. Field-Programmable Gate Array. GPU. Graphics Processing Unit. I2 C. Inter-Integrated Circuit. ICAP. Internal Configuration Access Port. INPI. Instituto Nacional de Propriedade Intelectual. IP. Intellectual Property. IR. Reconfigurable Interconnection. ISE. Integrated Synthesis Environment. LMB. Local Memory Block. LUT. Look-Up Table. NMS. Non-Maximum Suppressor. NoC. Network-on-Chip. PCAP. Processor Configuration Access Port. viii.

(16) PL. Programmable Logic. PLL. Phased Locked Loop. PP. Processador de Pixels. PS. Processing System. RP. Reconfiguração Parcial. RR. Região Reconfigurável. SCU. Snoop Control Unit. SEDPRC Speed Efficient Dynamic Partial Reconfiguration Controller SoC. System on a Chip. TCL. Tool Command Language.

(17) Capítulo 1 Introdução. Sistemas digitais têm se tornado extremamente complexos, o que tem requerido um aumento muito grande de componentes eletrônicos. Isso tem acarretado um aumento considerável de consumo de energia. Uma das linhas de pesquisa que tem crescido bastante nos últimos anos é a que investiga consumo energético em sistemas digitais [Valverde et al. 2012, de Barros 2016, Yoon et al. 2017]. A área de processamento digital de sinais vem crescendo, em quantidade e diversidade de aplicações, a cada dia. Cresce, também, a quantidade de dispositivos disponíveis que podem ser utilizados para criar soluções nas diversas áreas de conhecimento. Atualmente há várias opções de processadores, tais como processadores de uso geral, microcontroladores1 , processadores digitais de sinais, FPGAs e GPUs. Nos últimos anos a quantidade de trabalhos acadêmicos e produtos comerciais que têm utilizado GPUs tem crescido bastante [Mao et al. 2017]. Até a década de 1980 era bastante comum se utilizar processadores de propósito geral para criar soluções para processamento digital de sinais. A partir da década de 1990 verificou-se um crescimento bastante significativo da utilização de processadores especializados (ou dedicados) para processamento digital de sinais [Gonzalez 2010]. Dois indicadores podem ser utilizados para caracterizar os processadores descritos no parágrafo anterior: performance e flexibilidade. Os processadores de uso geral são flexíveis porque podem realizar qualquer tipo de processamento. Entretanto, podem não apresentar uma performance satisfatória, já que não são capazes de realizar processamento paralelo. Já os processadores de aplicação específica têm performance superior porque são otimizados para uma aplicação em particular. A grande quantidade de objetivos levou ao desenvolvimento de várias arquiteturas, 1O. microcontrolador é um dispositivo muito mais de entrada e saída do que de processamento em si. Entretanto, é citado por possuir, ainda que pouco expressiva, capacidade de processamento..

(18) CAPÍTULO 1. INTRODUÇÃO. 2. cada uma otimizada de acordo com um objetivo específico. Essas arquiteturas podem ser divididas em três grupos principais, de acordo com o nível de flexibilidade: computação de uso geral, baseada no modelo de arquitetura de Von Neumann; processadores de uso específico, adaptados para um conjunto de aplicações que tem características comuns; e, por último, processadores de aplicação específica, que realizam apenas um tipo de processamento [Bobda 2007]. Pesquisa em arquitetura de sistemas de computação sempre foi uma preocupação central na área de computação. Os objetivos das pesquisas variam de acordo com aplicação, preço final do equipamento, meio em que os processadores serão inseridos, dentre outros. A área conhecida como computação reconfigurável surgiu com a invenção do FPGA, no início da década de 1980 [Carter et al. 1986]. Uma contextualização detalhada acerca da evolução da computação reconfigurável pode ser encontrada em [Tessier et al. 2015]. A Figura 1.1 mostra o quanto os sistemas reconfiguráveis têm avançado desde o seu surgimento. É importante ressaltar, em meados de 1995, o surgimento da família de FPGAs XC6200, da Xilinx; esta foi a primeira a suportar a utilização de Reconfiguração Parcial. Outro marco importante ocorre em 2011, com o surgimento do System on a Chip (SoC), agregando um FPGA e um processador ARM ao mesmo encapsulamento.. Figura 1.1: Linha do tempo mostrando algumas aplicações de sistemas reconfiguráveis comerciais com impacto significante. Fonte: [Tessier et al. 2015]. No ano de 2008 foi feita uma estimativa que por volta do ano 2030, se a tendência de consumo de corrente se mantiver, a energia gasta mundialmente pelo setor de Tecnologia da Informação e Comunicação multiplicará por um fator de 30, atingindo muito mais do que o consumo mundial total, levando em conta tudo, não apenas o consumo energético.

(19) CAPÍTULO 1. INTRODUÇÃO. 3. relacionado à computação [Cardoso e Hübner 2011]. O FPGA é normalmente utilizado quando a aplicação necessita de ajustes (reconfiguração). Nos últimos anos algumas aplicações que antes eram implementadas em FPGA passaram a ser executadas por GPUs [Cooke et al. 2015]. A GPU possui centenas de núcleo de processamento, o que pode tornar a execução mais rápida, se comparada à mesma aplicação sendo executada em FPGA. Entretanto, a GPU apresenta um consumo de potência mais elevado. Aplicações que exigem um baixo de consumo, como sistemas que utilizam baterias, podem se beneficiar da utilização de FPGA [Fowers et al. 2012]. Área, velocidade e consumo são as três variáveis que determinam um projeto em FPGA [Pangracious et al. 2015, Varma et al. 2016]. Das três, o consumo é a variável mais complexa para estimar, simular e/ou medir. Segundo [Oliver 2014] o erro de estimação para FPGAs da Xilinx, de 2005 a 2010, descritos em publicações científicas, variava entre -100% e +295%. Desde os primeiros processadores existe a preocupação com a quantidade de energia elétrica consumida e também com a potência dissipada nos sistemas de computação, já que associado ao aumento da frequência há um maior consumo de potência. Nos últimos anos essa preocupação tem crescido bastante, estimulando a pesquisa e o desenvolvimento de diferentes métodos de estimação e/ou medição dessas variáveis [de Barros 2016]. Reduzir a potência dissipada pelos FPGAs é a chave para diminuir custos com acondicionamento e resfriamento [Grover e Soni 2012]. Falando especificamente de FPGAs a grande maioria dos trabalhos apenas estima [Mu 2011, Durrani e Riesgo 2014, Llamocca e Pattichis 2015] ou simula [Tang et al. 2015, Durrani e Riesgo 2016] o consumo de potência, uma vez que é mais simples do que a medição concreta. Isso ocorre porque boa parte das placas de desenvolvimento (normalmente utilizadas para fins de pesquisa) não incluem circuitos de medição de potência, pois isso é um fator que torna o custo de produção mais elevado. Na impossibilidade de realizar a medição é possível utilizar ferramentas disponibilizadas pelos fabricantes de FPGA para estimar o consumo de potência de um projeto [Xilinx 2017b, Intel 2017]. O consumo de potência em FPGAs é a combinação dos consumos estático (o qual depende da temperatura T ) e dinâmico (também chamada potência de chaveamento), como mostrado na Equação 1.1. Ptotal = Pest atica (T ) + Pdinamica (f) ´ ˆ. (1.1). O consumo estático é dado pela corrente de fuga dentro dos transistores, enquanto.

(20) CAPÍTULO 1. INTRODUÇÃO. 4. Figura 1.2: Redução do comprimento da porta em transistores de tecnologia CMOS. Fonte: [Hassan e Anis 2010]. o consumo dimâmico é consequência do chaveamento causado pela carga e descarga do capacitor de carga, C, bem como pelas correntes de curto-circuito quando há chaveamento nos transistores [de Barros 2016]. O consumo dinâmico, mostrado na Equação 1.2, possui uma dependência linear em relação à frequência de operação f e uma dependência quadrática em relação à tensão de alimentação V . Em um FPGA, a capacitância de carga, C, depende da quantidade de elementos lógicos e de roteamentos utilizados no design. O fator α é a taxa de comutação (ou de atividade) de um elemento e depende do design e do input stimuli. Pdinamica = α ×C ×V 2 × f ˆ. (1.2). À medida que a tecnologia de fabricação dos semicondutores evolui o tamanho do transistor diminui e, consequentemente, é possível inserir uma quantidade maior de transistores em uma mesma área. A Figura 1.2 exibe um gráfico dessa evolução entre 1993 e 2016. Em contrapartida, à medida que o transistor diminui de tamanho a potência relativa à corrente de fuga, em relação à potência total, aumenta (ultrapassando, em alguns casos, a potência dinâmica), conforme mostrado na Figura 1.3. Este trabalho aborda uma modificação na arquitetura P2 IP, que é voltada ao processamento digital de vídeo em tempo real. A implementação original da arquitetura foi implementada e validada em FPGA [Possa 2013]. A quantidade de Elementos de Processamento (EPs) é definida, antes da síntese, pela aplicação que demandar mais processamento. Isso configura uma limitação: nem todos os EPs estão completamente em uso, dependendo do algoritmo de processamento de imagens utilizado. Isso contribui para um consumo de potência mais elevado..

(21) CAPÍTULO 1. INTRODUÇÃO. 5. Figura 1.3: Contribuição da potência de fuga em relação à potência total. Fonte: [Hassan e Anis 2010].. 1.1. Objetivos. Diante do exposto o objetivo deste trabalho é investigar a utilização da técnica de Reconfiguração Parcial de FPGAs, a fim de averiguar quão possível é reduzir o consumo energético. Para testar e validar a metodologia proposta a arquitetura P2 IP é utilizada. Esta arquitetura, implementada em FPGA, é voltada ao processamento de vídeo em tempo real, e é fruto de um trabalho de doutorado desenvolvido na Université de Mons (UMons), Bélgica. Os Elementos de Processamento (EPs) da arquitetura possuem estrutura idêntica, mas podem ser reconfigurados, em tempo de execução, conforme a aplicação de vídeo a ser executada [Possa 2013]. Uma nova versão da arquitetura, de baixo consumo, com a mesma funcionalidade, é desenvolvida, utilizando um recurso presente em algumas famílias de FPGAs: a Reconfiguração Parcial. Para atingir este objetivo é explorada uma limitação da implementação original da arquitetura: nem todos os EPs estão completamente em uso, dependendo do algoritmo de processamento de vídeo utilizado. Sendo assim, foi criada uma outra implementação do EP: o EP bypass. Este não possui blocos internos de processamento; apenas replica à saída a entrada, e é utilizado quando o EP estiver ocioso, contribuindo, desta maneira, para um consumo energético mais eficiente. O desenvolvimento teórico, a análise de desempenho da solução proposta e as implicações dos resultados observados compõem a maior parte dos objetivos deste trabalho. Além disso, é possível discriminar os objetivos específicos a seguir:.

(22) CAPÍTULO 1. INTRODUÇÃO. 6. • Averiguar o estado da arte sobre a utilização de Reconfiguração Parcial em FPGAs; • Analisar a latência, a fim de garantir que o overhead de tempo necessário à aplicação da RP, não afeta a característica de tempo real da arquitetura; • Estabelecer uma comparação, levando em conta a alocação de recursos do FPGA, entre a implementação utilizando reconfiguração parcial e sem a utilização deste recurso; • Analisar a autonomia de uma bateria considerando as implementações original e utilizando RP.. 1.2. Metodologia. Este trabalho foi realizado conforme a seguinte metodologia: • Revisão bibliográfica de trabalhos que utilizam Reconfiguração Parcial em FPGAs; • Aplicação da técnica de Reconfiguração Parcial em FPGAs Xilinx, e medição de consumo de potência em tempo real; • Implementação da arquitetura P2 IP em FPGAs Xilinx; • Desenvolvimento do mecanismo de configuração da arquitetura P2 IP através do ARM; • Aplicação da Reconfiguração Parcial ao Elemento de Processamento da arquitetura P2 IP; • Validação do sistema proposto, estabelecendo uma comparação entre a implementação original e a desenvolvida neste trabalho, com relação a consumo de potência, latência de reconfiguração e alocação de recursos no FPGA.. 1.3. Organização do Texto. Esta tese está estruturada em cinco capítulos, excluindo este. Essa estrutura possui a coerência necessária às exigências da investigação, de modo a preservar sua coesão. O Capítulo 2 aborda aspectos relacionados à potência consumida por um FPGA. A Reconfiguração Parcial (RP) é discutida em detalhes. Por último, são analisados alguns trabalhos científicos relevantes que fazem uso da RP. Já o Capítulo 3 descreve a arquitetura P2 IP. Como esta servirá de base para o presente trabalho faz-se necessário explicar alguns conceitos básicos da arquitetura, tais como a constituição do Elemento de Processamento e o funcionamento do Mecanismo de Configuração. A fim de validar a arquitetura três aplicações de processamento de vídeo são.

(23) CAPÍTULO 1. INTRODUÇÃO. 7. mapeadas na P2 IP. Dando continuidade, o Capítulo 4 discorre sobre a estratégia utilizada para aplicar RP à P2 IP. A placa utilizada para sintetizar o projeto é descrita, bem como são expostas as modificações feitas na arquitetura para que esta suporte RP e também no mecanismo de configuração da arquitetura. Por último, é exibida uma tabela com todas as mensagens de configuração suportadas pela arquitetura. Em seguida, o Capítulo 5 discute os resultados obtidos. Inicialmente são abordados aspectos relativos ao diagrama de blocos do projeto, uma vez que o Capítulo aborda os resultados, do ponto de vista de alocação de recursos, consumo de potência e análise do tempo de reconfiguração. O fechamento da tese é feito no Capítulo 6, que traz as conclusões e ainda sugestões de trabalhos futuros.. 1.4. Publicações Aceitas. Nesta seção serão discutidos alguns aspectos das publicações geradas por esse trabalho. A primeira publicação aceita é referente a um artigo no periódico Przeglad Elektrotechniczny, no qual é descrita a aplicação da Reconfiguração Parcial à arquitetura P2 IP. A segunda publicação é do congresso Applied Reconfigurable Computing 2017, e aborda a estratégia utilizada para medição de consumo em tempo real, como também compara o consumo das implementações original e utilizando Reconfiguração Parcial. Foi gerado ainda um registro de software, junto ao INPI, relativo ao mecanismo de configuração da arquitetura P2 IP através de um processador ARM. A seguir, é mostrada uma descrição detalhada das publicações mencionadas anteriormente.. 1.4.1. Artigo em periódico. Avelino, Álvaro, Valentin Roda, Carlos Valderrama, Glauberto de Albuquerque e Paulo Possa (2017), Partial Reconfiguration Exploration Over P2IP Architecture, Przeglad Elektrotechniczny 93(1), 258-262. DOI: 10.15199/48.2017.01.63.. 1.4.2. Anais de congresso. Avelino, Álvaro, Valentin Obac, Naim Harb, Carlos Valderrama, Glauberto Albuquerque e Paulo Possa (2017), LP-P2IP: A Low-Power Version of P2IP Architecture Using.

(24) CAPÍTULO 1. INTRODUÇÃO. 8. Partial Reconfiguration. Anais do Applied Reconfigurable Computing, pp. 16-27. DOI: 10.1007/978-3-319-56258-2_2.. 1.4.3. Registro de software junto ao INPI. Avelino, Álvaro, Carlos Valderrama, Paulo Possa e Valentin Obac (2016), LP-P2 IP using PR. Registro de software junto ao INPI. Processo BR 51 2016 001490-3..

(25) Capítulo 2 Reconfiguração Parcial. Este Capítulo tem por objetivo discorrer sobre a Reconfiguração Parcial, que é um recurso presente em alguns FPGAs. Em seguida, na Seção 2.1, são apresentados alguns trabalhos científicos que utilizam RP. Por último, a Seção 2.2 apresenta a conclusão do Capítulo. FPGAs são utilizados em aplicações que necessitem de reconfiguração do circuito. Tal reconfiguração pode ser estática ou dinâmica [Wirthlin 2015]. A reconfiguração estática implica em parar a execução, reprogramar o FPGA com a nova configuração e, por último, reiniciar a execução. Algumas famílias mais novas de FPGA possuem suporte à Reconfiguração Parcial (RP) [Altera 2017, Xilinx 2016b]. Este recurso permite reconfigurar apenas uma parte do chip (por isso, denominada parcial). O processamento é interrompido1 apenas na região a ser reconfigurada (chamada região dinâmica), enquanto o restante do chip (região estática e demais regiões de reconfiguração parcial que não estão sendo reconfiguradas) continua operando normalmente. Para mais detalhes sobre as técnicas de reconfiguração dinâmica consultar [Paulino 2015]. Algumas vantagens de utilizar a reconfiguração parcial [Xilinx 2016b]: • Redução de custos e/ou espaço exigido (em placa) pelo circuito; • Possibilidade de alterar o algoritmo em tempo de execução, sem a necessidade de aplicar reset ao sistema inteiro; • Redução do consumo energético (ver Equações 1.1 e 1.2). Por outro lado é necessário ressaltar que utilizar reconfiguração parcial implica em: • Overhead de tempo durante a reconfiguração parcial; 1 É responsabilidade do projetista a lógica de controle necessária à suspensão de funcionamento da região. a ser configurada, bem como o restabelecimento dos sinais de clock, controle e dados após a RP..

(26) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 10. • Aumento do consumo energético durante a reconfiguração; • Lógica extra que é adicionada à região de reconfiguração parcial (partition pins2 ); • Lógica de controle mais complexa, já que fica a cargo do projetista pausar a execução do bloco a ser reconfigurado, bem como retomar a execução após o término da reconfiguração; • Fluxo de projeto mais complexo, pois a síntese deve ser aplicada a cada módulo reconfigurável (também chamada síntese fora de contexto). Duas limitações bastante comuns podem ser sanadas com a utilização de reconfiguração parcial: • Armazenar um circuito maior em um FPGA que já está sendo utilizado; • Caso o circuito não ocupe toda a área do FPGA, optar por um modelo com menor quantidade de elementos lógicos e menos oneroso. A região dinâmica é composta por uma ou mais regiões de reconfiguração parcial. Cada uma destas últimas possui dois ou mais bitstreams parciais, contendo as variações adequadas. A Figura 2.1 mostra uma possível divisão entre as áreas estática e dinâmica em um FPGA. Nesta Figura é possível observar que a região dinâmica pode possuir várias regiões de reconfiguração parcial, cada uma destas podendo conter quantas variações de bitstream forem necessárias à aplicação (ver Figura 2.2). Além disso, cada região de reconfiguração parcial pode ser reconfigurada individualmente. Quando o projeto é puramente estático (não utiliza RP) é gerado apenas um bitstream. Por outro lado, quando a RP é utilizada, são criados pelo menos dois bitstreams: um estático, representando toda a região fora da área reconfigurável; e um dinâmico, representando o conteúdo da Região Reconfigurável. O bitstream estático é configurado apenas uma vez; os dinâmicos podem ser carregados sob demanda, em tempo de execução [Paulino 2015]. A utilização de bitstreams parciais implica na redução da quantidade de informação necessária à reconfiguração e, consequentemente, o tempo de reconfiguração. Ao invés de armazenar a descrição de toda a área do FPGA, o bitstream parcial guarda apenas a descrição da região reconfigurável. Uma das decisões do projeto que utiliza RP é que parte do design será inserida na Região Reconfigurável (RR). Optar por uma RR grande implica que o design terá poucas 2 São. pinos adicionados automaticamente durante a síntese do módulo reconfigurável e que são a interface entre este e os outros componentes do sistema ligados a ele. A inserção desses pinos se faz necessária porque uma das possíveis configurações do módulo reconfigurável é chamada blanking (vazio) e, nesse caso, os partition pins estão em alta impedância..

(27) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 11. Área do chip Área dinâmica Região de reconfiguração parcial 1. .... Área estática. Região de reconfiguração parcial n. Figura 2.1: Área de um FPGA, englobando as regiões estática e dinâmica. Esta última, por sua vez, pode conter várias Regiões de Reconfiguração Parcial. Fonte: autoria própria.. Módulo A. Fonte dos dados. Módulo B. Destino dos dados. Figura 2.2: Visão lógica de um projeto que possui um módulo reconfigurável. Fonte: [Henkel e Parameswaran 2007]. RRs. Entretanto, o bitstream parcial será maior e, consequentemente, o tempo necessário à RP também o será. Projetar RRs pequenas acarreta uma grande quantidade de RRs, que, por sua vez, terão bitstreams parciais menores e um tempo para aplicar a RP mais curto. É fato que a RP possui alguns limites nas famílias de baixo custo, principalmente na Artix-7 [Xilinx 2016b]. A título de exemplo, uma das limitações dos FPGAs Artix-7 é que estes não permitem duas ou mais RRs compartilhando, verticalmente, a mesma região de clock, conforme mostrado na Figura 2.3. A Figura 2.4 mostra a metodologia de projeto usando RP. Até o momento do desenvolvimento deste trabalho não havia suporte (por parte da.

(28) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 12. Figura 2.3: Duas RRs (simbolizadas por pblock_1 e pblock_2) na região X0Y2 do FPGA, compartilhando a mesma região de clock, o que é proibido para a família Artix-7. Fonte: autoria própria. Xilinx) para que todo o projeto utilizando RP no Vivado [Xilinx 2017a] 3 fosse desenvolvido no modo gráfico. É importante ressaltar que, apesar de a Xilinx oferecer suporte à RP há alguns anos, as ferramentas de software disponibilizadas não eram tão intuitivas, de maneira que com a adoção dos comandos TCL o fluxo de projeto com RP tem se tornado menos complexo. O fabricante cita como vantagem do modo de comando o fato de que o design não precisa ser totalmente carregado em memória, tornando a síntese mais rápida [Xilinx 2015b]. Como o modo de comando é utilizado, a maneira de salvar periodicamente o projeto é criar Design CheckPoints (DCPs). Isso é feito (passo 1 da Figura 2.4) para as regiões estáticas e dinâmicas do projeto. No passo 2 são carregadas a parte estática e um módulo reconfigurável para cada partição reconfigurável. Nos passos 3 e 4 o projetista define quais partes do design serão reconfiguráveis. O passo 5 consiste em executar uma verificação para garantir que todos os requisitos para utilizar RP estão sendo respeitados. Os passos 6 e 7 consistem em criar as configurações. No caso da P2 IP são três configurações (uma para cada aplicação). Em seguida (passo 8) é executada uma verificação de compatibilidade entre todas as configurações. 3 Para. aplicar RP a um projeto no Vivado é necessário utilizar FPGAs da família 7 em diante. Para as famílias anteriores a única maneira de utilizar RP é fazendo uso do software anterior ao Vivado, o Xilinx Integrated Synthesis Environment (ISE)..

(29) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 13. Passo 1: gerar DCP para parte estática e módulos reconfiguráveis. Passo 8: Executar o PR_Verify. Passo 9: gerar os bitstreams. Passo 2: carregar a parte estática e um módulo reconfigurável para cada partição reconfigurável. Passo 7: criar as demais configurações. Passo 10: criar a aplicação que executará em software. Passo 3: definir as propriedades reconfiguráveis. Passo 6: criar e implementar a primeira configuração. Passo 11: testar o projeto. Passo 4: definir as partições reconfiguráveis. Passo 5: executar o Design Rule Checker. Figura 2.4: Metodologia de projeto em FPGA usando RP. Fonte: adaptado de [Xilinx 2015c]. Os últimos passos consistem em gerar os bitstreams (totais e parciais) e a aplicação a ser executada no ARM. Até a geração 6 de FPGAs da Xilinx a ferramenta PlanAhead era utilizada em conjunto com o ISE para aplicar RP a um determinado projeto. A partir da família 7 a única opção é o Vivado, que substituiu o ISE. O Vivado apenas suporta RP através de comandos Tool Command Language (TCL). Quanto ao fluxo, a implementação que utiliza RP difere um pouco da implementação puramente estática. Como suporte para RP no modo projeto é necessário salvar o que está sendo feito em algumas etapas do processo. A isso chamamos de checkpoint.. 2.1. Estado da Arte. RP é uma técnica disponibilizada pelos fabricantes de FPGA apenas há alguns anos. Os dois principais fabricantes que disponibilizam este recurso em alguns de seus FPGAs são a Altera e a Xilinx. A Xilinx deu o passo inicial, em meados dos anos 1990, com a família XC6200 (ver Figura 1.1). Cada fabricante possui uma metodologia própria para utilizar RP..

(30) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 2.1.1. 14. Artigos relacionados. A RP é vantajosa à arquitetura P2 IP em dois aspectos: não apenas para reduzir o consumo energético mas também para propor novas funcionalidades à arquitetura. Nesta subseção analisamos várias técnicas utilizadas em FPGAs para atingir um consumo energético mais eficiente. Entretanto, apesar de a RP permitir a reutilização da lógica disponível no FPGA, a granularidade, a infraestrutura de suporte à RP e a velocidade podem ser fatores limitadores. Uma maneira de compensar o aumento do consumo de potência durante a RP é maximizar a largura de banda da transferência do bitstream parcial da memória externa à interface de reconfiguração [Liu et al. 2009a]. Em [Liu et al. 2009b], os autores propõem um controlador inteligente da interface Internal Configuration Access Port (ICAP) usando DMA para um FPGA Virtex-4. É uma boa alternativa para esta família de FPGA, que não possui suporte nativo a DMA para a cópia de bitstreams, porém implica em alocar recursos lógicos adicionais para a síntese da interface ICAP modificada. [Dondo et al. 2013] aborda uma maneira alternativa de carregar um bitstream parcial em um Virtex-5. Um controlador de RP personalizado é desenvolvido, e utiliza DMA para carregar o bitstream parcial da memória externa (DDR) à interface ICAP, sendo mais eficiente que a abordagem tradicional da Xilinx para a família Virtex-5. Quanto à granularidade e velocidade de reconfiguração, [Ihsen 2016] propõe um esquema de reconfiguração, para um FPGA Virtex-7, que leva apenas 1 ciclo de clock, porém todos os elementos reconfiguráveis são mapeados em células DSP48E1. Desta maneira, uma reconfiguração rápida pode ser conseguida atualizando parâmetros das células que contêm elementos do tipo DSP48E1, ao custo de um alto consumo de potência e também de um FPGA com custo elevado (Virtex-7). Outra abordagem, [Cardona e Ferrer 2015], propõe uma interface ICAP alternativa (chamada AC_ICAP), capaz de realizar RP a uma única LUT sem a necessidade de bitstreams parciais pré-computados. De acordo com os autores, esta técnica atinge uma aceleração de 380 vezes em relação ao controlador ICAP da Xilinx. A desvantagem é que essa proposta implica na utilização de 5% a mais de recursos lógicos em um FPGA Virtex-5. No que diz respeito a estruturas que utilizam componentes de RP mais complexos, os autores de [Becker et al. 2010] implementam um filtro Finite Impulse Response (FIR) aplicado a um Software-Defined Radio (SDR) e conclui que utilizar RP implica em uma redução no consumo energético de quase 50%. [Ahmad et al. 2011] utiliza RP para um sistema de reconhecimento de face (biometria). Utiliza um FPGA Virtex-5 e mostra gráficos comprovando que RP leva a uma utili-.

(31) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 15. zação mais eficiente do FPGA (uma quantidade menor de blocos lógicos), maior frequência de operação e menor consumo energético. [Fons et al. 2013] também aborda biometria, e tem como foco a análise de uma impressão digital. O trabalho implementa, em um Virtex-4, onze algoritmos, que executam sequencialmente na área reconfigurável do FPGA. Os autores comparam os resultados com um PC (com processador Dual-Core) e uma implementação em FPGA sem RP (utilizando apenas um soft-processor) e mostram que mesmo utilizando multiplexação por tempo é vantagem utilizar RP. O artigo ressalta ainda que a implementação em FPGA sem RP exigiria um modelo de FPGA 147% mais caro que o utilizado para gerar os resultados e o tempo a mais necessário à RP é desprezível para essa aplicação (1,47% a mais de tempo necessário). [Bhandari et al. 2012] aborda RP para áudio e vídeo, com três módulos reconfiguráveis, sendo dois para áudio (um para cada canal) e um para vídeo (há diversos filtros de áudio e vídeo disponíveis). Os autores propõem uma maneira alternativa de gravar o bitstream parcial. O artigo descreve que para o processamento de 25 quadros por segundo é necessário processar cada quadro em 40ms. Se o processamento leva 38ms então só resta 2ms para a reconfiguração. Esse tempo não consegue ser cumprido utilizando as alternativas disponibilizadas pela Xilinx. O tempo utilizando a interface desenvolvida (chamada SEDPRC), que é independente da utilização de um processador soft-core, é cerca de 55 vezes menor do que a interface mais rápida da Xilinx (XPS-HWICAP). Já [Krill et al. 2010] emprega RP em um sistema de conversão de cores (de RGB para YCrCb). A parte estática consiste do controlador de memória, LCD e barramentos auxiliares, enquanto o algoritmo de conversão de cores reside na parte dinâmica. Utiliza um Virtex-5 e desenvolveu um framework que automatiza parte do trabalho manual que antes era feito no PlanAhead. [Osterloh et al. 2009], por outro lado, usa RP em uma aplicação espacial. Discute sobre o floorplaning, ressaltando os cuidados que devem ser tomados ao escolher a região em que ficarão as partições reconfiguráveis. O artigo utiliza um Virtex-4 e relata que o processo de reconfiguração parcial da Xilinx não é 100% seguro. Então foi desenvolvido o SoCWire, um NoC que garante a checagem e correção de erros durante a reconfiguração. [Raikovich e Fehér 2010] aborda RP no Virtex-5. Implementa alguns algoritmos básicos de processamento de imagens. O Virtex-5 suporta até oito PRs por design. O artigo cita que a operação de place and route falhou quando mais de 75% dos recursos lógicos foram alocados a uma PR. O artigo conclui que na arquitetura desenvolvida é possível reconfigurar parcialmente o FPGA dez vezes durante o processamento de uma imagem de 512 x 512 pixels. Um exemplo de aplicação de reconhecimento de células é mostrado..

(32) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 16. [Tarrillo et al. 2014] desenvolve uma maneira alternativa de reconfigurar parcialmente o FPGA, que é mais eficiente que a proposta da Xilinx. Foram feitos testes no Virtex-5 e no Virtex-6. [Carlo et al. 2013] demonstra que o método de PR proposto pela Xilinx não é à prova de falhas. Então descreve uma metodologia alternativa, de forma a minimizar os possíveis erros que ocorram durante a reconfiguração parcial. [Toukatly et al. 2013] trata sobre a utilização de um Virtex-6 para conversão entre sistemas de cor. Utiliza reconfiguração parcial em um bloco de processamento 3D/4D. A conclusão do trabalho é que o tempo gasto durante a reconfiguração parcial dinâmica é desprezível, à medida que o tamanho da imagem cresce, e a entrada de pixels passa a ser o gargalo do sistema. Segundo o artigo, a Xilinx recomenda utilizar até 80% da área do FPGA. [Feilen et al. 2011] utiliza RP em um FPGA de baixo custo, Spartan-6. Descrevem uma arquitetura de propósito geral que permite reconfiguração, com foco em processamento em tempo real, com parâmetros adaptáveis, a exemplo do delay e sample rate. A execução dos módulos é feita no esquema round-robin. Expressões são derivadas e relacionam a quantidade de dados de entrada, a quantidade de módulos de processamento, o throughput de memória, o delay relativo à troca de contexto (quando um módulo é reconfigurado) e o tempo total de processamento. Por último, é mostrada uma aplicação de receptor broadcast OFDM, contendo um módulo reconfigurável e quatro submódulos. [Khraisha e Lee 2010] desenvolveu um filtro aplicado à decodificação H.264 usando RP. O trabalho compara a RP das famílias de FPGA Virtex-2 e Virtex-4, destacando que a última permite a utilização de uma largura de banda oito vezes superior à primeira. Comparada aos trabalhos mencionados acima a P2 IP é uma arquitetura configurável por software e de hardware customizável. Isso implica em escalabilidade e flexibilidade. Há um pequeno overhead de recursos para suporte à RP. Como não necessita de controladores adicionais, o impacto no consumo energético é desprezível. Como demonstrado em trabalhos anteriores, a granularidade tem um impacto direto no tamanho dos bitstreams parciais e também na velocidade de reconfiguração. A versão proposta neste trabalho utiliza componentes de granularidade intermediária (maiores que uma célula DSP ou uma LUT) e mantém-se de tempo real ao utilizar RP. Além disso, o aspecto de escalabilidade da arquitetura torna possível combinar várias estratégias para reduzir o consumo estático e também o dinâmico..

(33) CAPÍTULO 2. RECONFIGURAÇÃO PARCIAL. 2.2. 17. Conclusão. Este Capítulo abordou a técnica de Reconfiguração Parcial, em especial em FPGAs da Xilinx, no tocante a fluxo de projeto e também limitações impostas por famílias de FPGA de baixo custo. No que concerne à literatura disponível, a maioria dos artigos científicos apresentados neste Capítulo utiliza RP para otimização de recursos do FPGA, ou ainda, desenvolve interfaces alternativas para aplicar RP em um tempo mais curto do que a metodologia proposta pelo fabricante do FPGA..

(34) Capítulo 3 Arquitetura P2IP. Este Capítulo tem por objetivo fornecer uma noção básica para o entendimento acerca do funcionamento da arquitetura P2 IP, de maneira que seja possível ao leitor compreender as modificações propostas nesta tese, explicitadas no Capítulo 4. Para tanto, faz-se necessário explicar o funcionamento de alguns blocos básicos. Para maiores detalhes acerca da arquitetura consultar [Possa 2013, Possa et al. 2014, Possa et al. 2015]. A arquitetura P2 IP é do tipo array systolic de grão grosso, voltada ao processamento de vídeo em tempo real, implementada em FPGA. Ela permite que o usuário, através de parâmetros de configuração, por software, possa definir quantos EPs a arquitetura irá utilizar1 , em tempo de execução. O caminho de dados opera à frequência dos pixels de entrada, disponibilizando à saída um pixel processado por ciclo de clock, considerando a latência inicial para preencher o pipeline. A Figura 3.1 mostra os principais blocos funcionais2 . É possível observar setas finas, que denotam o tráfego de um bit, e de outras mais espessas, referentes ao tráfego de mais de um bit. O AXI4-Stream [ARM 2010] foi adotado como o protocolo de comunicação com o ambiente externo, tanto para a fonte (frame source) quanto para o destino (frame sink). O protocolo é gerenciado pelo controlador da arquitetura (P2 IP Controller), que também é responsável pela leitura da configuração de entrada (config_in), bem como por transferir essa configuração ao núcleo de processamento (processing core). O controlador é a entrada do mecanismo de configuração, seguido pelo Configuration Decoder Tree (CDT), distribuído ao longo do núcleo de processamento. O núcleo de processamento da P2 IP é formado por uma sequência de EPs idênticos. Apesar de os elementos de processamento terem a mesma estrutura interna, cada um 1É. importante ressaltar que a quantidade de EPs deve ser definida, também utilizando parâmetros de configuração, antes da síntese. Em tempo de execução é possível habilitar ou desabilitar EPs, mas não alterar a quantidade destes. 2 Os nomes dos blocos funcionais, protocolos e registradores foram mantidos em inglês..

(35) CAPÍTULO 3. ARQUITETURA P2 IP. 19. Figura 3.1: Diagrama funcional da arquietura P2 IP, com seus principais componentes. Fonte: adaptado de [Possa 2013]. possui uma função diferente, de acordo com o processamento a ser realizado. O número de EPs deve ser definido antes da síntese, através de um simples procedimento, sem alterar a estrutura básica da P2 IP. As próximas Seções abordam, respectivamente, a estrutura interna dos EPs (Seção 3.1), as aplicações utilizadas para validar a arquitetura (Seção 3.2) e, por último, o mecanismo de configuração (Seção 3.3).. 3.1. Elemento de Processamento. Os EPs são os principais componentes da arquietura P2 IP. Todos são idênticos, e são formados por um módulo Reconfigurable Interconnection (RI, na Figura 3.2) e outros módulos contendo grupos de operadores de processamento de imagens. O RI direciona o fluxo de pixels aos módulos formando o caminho de dados da P2 IP, que por sua vez pode ser configurado em tempo de execução. A Figura 3.2 mostra o diagrama funcional de um EP. Cada EP possui sua própria memória local, dividida em quatro blocos, chamados Local Memory Blocks (LMBs). O Memory Controller (MC) realiza todas as operações de memória exigidas pelo EP, a exemplo de extração de vizinhos e delay. Os outros módulos, Pixel Processor (PP) e Spatial Processor (SP), abrangem clusters de operadores de imagem. O PP contém operadores pixel a pixel que processam cada pixel individualmente, a exemplo de operações aritméticas e lógicas. O módulo SP contém operadores espaciais, que são funções orientadas à vizinhança. Tais funções exigem uma janela de amostras.

(36) CAPÍTULO 3. ARQUITETURA P2 IP. 20. Figura 3.2: Diagrama funcional de um EP, mostrando a disposição e interconexão dos módulos Pixel Processor (PP), Spatial Processor (SP), e Memory Controller (MC), assim como o Reconfigurable Interconnection (RI). Fonte: [Possa 2013]. de entrada, formada pelo pixel-alvo e sua vizinhança. Estes três módulos são interligados pelo RI. A Figura 3.3 mostra os elementos internos do EP. A seleção dos operadores implementados foi baseada na análise de algoritmos clássicos de processamento de imagens, tais como Detector de Bordas de Canny e Detector de Canto de Harris, que são tarefas que exigem alto poder computacional, e que não são eficientemente processadas por processadores de uso geral. A partir dessa análise, as estruturas e operadores mais comuns exigidos por esses algoritmos foram extraídas, tais como extrator de vizinhos, filtros lineares, threshold, e operadores aritméticos. Além destes, alguns operadores específicos, tais como Non-Maximum Suppressor (NMS) também foram incluídos.. 3.1.1 Memory Controller Este bloco contém os operadores Neighborhood Extractor (NE), Mirror e Delay, mostrados na Figura 3.4. A seguir é feita uma descrição desses operadores. Neighborhood Extractor (NE): este operador fornece uma janela deslizante que varre toda a imagem. Esta janela contém a vizinhança necessária, por exemplo, ao cálculo da convolução bidimensional (2D Convolution). O princípio de funcionamento é mostrado na Figura 3.5. O tamanho do buffer de linha do operador NE pode ser configurado após a síntese, de maneira a ajustar-se ao tamanho do quadro. A quantidade de buffers de linha também pode ser configurada, de duas a quatro, alocando mais blocos de memória. A.

(37) CAPÍTULO 3. ARQUITETURA P2 IP. 21. PE PE-CD PP. SP. Harris. Direction. ALU. Threshold. Module + Register CDs. MC Connector. Linear Filter. NMS. Module + Register CDs. RI RGB Crossbar. Module Crossbar. MB 1. MB 2. MC Crossbar NE + Border Handler. MB 3 Mirror. MB 4 Delay. Module + Register CDs. Module + Register CDs. Figura 3.3: Elementos internos do EP. Fonte: autoria própria. quantidade de elementos do vetor de pixels é fixada em nove. Portanto, o operador NE suporta janelas deslizantes de até 5 × 9 pixels. O operador NE também suporta operações recursivas, introduzindo um segundo fluxo de pixels diretamente no buffer de linha, localizado logo após o pixel central. Essa característica permite que o EP processe uma parte da janela duas vezes, o que pode reduzir a quantidade de operadores em algumas aplicações de processamento de vídeo. Além disso, a fim de evitar pixels aleatórios em estágios subsequentes, um extrator de bordas é ligado à saída do bloco NE. O extrator de bordas atribui valores fixos a pixels da janela que extrapolam as bordas da imagem. Essa situação ocorre quando o centro da janela é posicionado próximo à borda da imagem e parte da janela excede os limites da imagem. Caso essa situação ocorra o valor dos pixels internos é replicado aos pixels que excedem os limites da imagem. Mirror (Mir): A função do operador Mirror é inverter a direção na qual a imagem é varrida. Isso é necessário quando um algoritmo precisa propagar um evento na imagem e a direção de varredura não permite. A estrutura do operador Mirror é baseada em dois buffers de linha concatenados no esquema Last-In-First-Out (LIFO). Delay (Z−n ): O operador Delay é composto por dois buffers de linha com tamanho configurável e é utilizado para sincronizar dois fluxos de pixel em estágios diferentes da arquitetura. O atraso máximo é de duas linhas de quadro, o que equivale ao atraso imposto por uma operação de vizinhança 5 × 5..

(38) CAPÍTULO 3. ARQUITETURA P2 IP. 22. Figura 3.4: Diagrama funcional do Memory Controller. Fonte: [Possa et al. 2015].. 3.1.2. Operadores de imagem. O Spatial Processor é um módulo contendo três operadores de vizinhança: TwoDimensional Convolver (2DC), Non-Maximum Suppressor (NMS) e Connector. A Figura 3.6 mostra o diagrama funcional do referido módulo. A janela de saída do Memory Controller (Seção 3.1.1) é a entrada principal do módulo Spatial Processor. As outras entradas e saídas são conectadas diretamente ao Reconfigurable Interconnection, à exceção da configuração de entrada (pe_cfg) que é parte do mecanismo de configuração. A configuração do 2DC seleciona que operador será ativado no módulo. A seguir é feita uma descrição dos operadores do módulo Spatial Processor. Two-Dimensional Convolver (2DC): o operador 2DC é fundamental em vários algoritmos de processamento de imagens. É possível fazer a convolução de uma imagem de entrada f (x, y) utilizando um kernel predefinido h(i, j), a exemplo de Sobel, Gaussiano e Laplaciano, conforme definido na Equação 3.1. g(x, y) = ∑ f (x + i, y + j) · h(i, j). (3.1). i, j. onde g(x, y) é a imagem resultante, f (x, y) é a imagem de entrada, e h(i, j) é o kernel. A Equação anterior pode ser representada de uma maneira mais compacta, conforme mostrado na Equação 3.2. g(x, y) = f (x, y) ⊗ h(i, j). (3.2). Os coeficientes do kernel são armazenados em um bloco de memória ROM. Estes coeficientes podem ser carregados durante a configuração do bloco 2DC. Uma característica.

(39) CAPÍTULO 3. ARQUITETURA P2 IP. 23. Figura 3.5: Princípio de funcionamento de um extrator de vizinhança 3 × 3. Fonte: [Possa et al. 2015].. Figura 3.6: Diagrama funcional do Spatial Processor. Fonte: [Possa et al. 2015]. importante é que o bloco 2DC é capaz de processar até dois kernels 3 × 3 em paralelo ou um kernel 5×5. Essa abordagem contribui para uma utilização mais eficiente de recursos. Non-Maximum Suppressor (NMS): O operador NMS analisa a janela de entrada e disponibiliza à saída o pixel central se, e somente se, este for o máximo local. Caso contrário, a saída é zero. Há uma entrada específica que fornece a direção do gradiente da janela de entrada. Essa direção é estimada a partir do operador Direction no módulo Pixel Processor. Connector (Con): O operador Connector é usado durante a detecção de cantos para reduzir a quantidade de lacunas ao longo das linhas que representam os cantos. Este módulo analisa a vizinhança do pixel a fim de verificar se é possível ligá-lo a outro pixel na vizinhança..

(40) CAPÍTULO 3. ARQUITETURA P2 IP. 24. Figura 3.7: Diagrama funcional do Pixel Processor. Fonte: [Possa et al. 2015]. O Pixel Processor contém um conjunto otimizado de operadores pixel a pixel. A Figura 3.7 exibe todos os operadores internos do módulo, bem como suas respectivas conexões. A seguir, é feita uma descrição acerca de tais operadores. Direction (Dir): Este operador compara se a entrada iPP_a é maior que iPP_b, e possui uma saída (opp_a) booleana. Este módulo é utilizado como uma aproximação da função arcotangente, a qual fornece a direção do gradiente. Harris (Har): O operador Harris computa a resposta Harris baseado em [Harris e Stephens 1988]. Esta resposta é uma alternativa ao cálculo de autovalores para aplicações de detecção. Arithmetic and Logic Unit (ALU): O operador ALU pode ser configurado para calcular as seguintes funções: adição, subtração, multiplicação, OU binário, OU lógico, AND binário e AND lógico. Threshold (Thr): O operador Threshold implementa a técnica de segmentação, classificando pixels de acordo com duas categorias, mostradas na Equação 3.3.  0, gth (x, y) = 1,. f (x, y) < T. (3.3). f (x, y) ≥ T. onde gth (x, y) é a saída, f (x, y) é a entrada, e T é o valor limite para o operador threshold. Também é possível configurar o operador no modo de histerese, em que dois valores (Tlow e Thigh ) são usados de acordo com a Equação 3.4.    0, f (x, y) < Tlow   gth (x, y) = f (x, y), Tlow ≤ f (x, y) < Thigh    1, f (x, y) ≥ T. (3.4).

(41) CAPÍTULO 3. ARQUITETURA P2 IP. 25. 3.1.3 Reconfigurable Interconnection O módulo Reconfigurable Interconnection é responsável pelo roteamento dos diferentes caminhos de dados (datapaths) na arquitetura P2 IP. É composto por dois crossbars independentes e configuráveis, de 8 bits de largura cada. As entradas e saídas externas do módulo são bufferizadas. Essa abordagem garante que a taxa máxima de pixels suportada pela arquitetura não mude com caminhos longos entre EPs. A Figura 3.8 mostra o diagrama funcional do módulo.. Figura 3.8: Diagrama funcional do Reconfigurable Interconnection. Fonte: [Possa et al. 2015]. O crossbar do módulo interconecta todos os módulos de um EP. As entradas e saídas auxiliares (iAux e oAux) podem compartilhar resultados parciais diretamente com outros EPs. O crossbar RGB é o principal módulo de entrada e saída de um EP. Como cada EP só consegue processar um componente de cor, o crossbar RGB possui um canal de entrada e saída conectado ao crossbar do módulo. Este módulo provê à saída um componente de cor a ser processado pelo EP e recebe o resultado a ser transferido ao próximo EP. A Figura 3.9 mostra três possíveis configurações do datapath. A configuração natural do pipeline é mostrada na Figura 3.8a. Nesta organização a entrada passa por uma série de operadores (Op) em cascata. Na segunda configuração (Figura 3.8b), a entrada é processada simultaneamente em dois EPs distintos e a saída destes, processada por um terceiro EP. A terceira e última configuração (Figura 3.8c) possui três entradas, processadas simultaneamente por três diferentes EPs. Esta última configuração é comumente utilizada para processamento colorido..

Referências

Documentos relacionados

O presente trabalho tem como objetivo propor uma classificação para a linha de costa e estudar a evolução holocênica da ilha do Cabo Frio a partir de dados pré-existentes

Tais órgãos, por não terem tamanha incidência da referida doença, não têm evidenciadas as formas de prevenção, que é nosso objetivo; instituir projetos que eduquem

[r]

I Propor modelos não lineares com efeitos mistos para tratar dados correlacionados e levando-se em consideração assimetria, ou seja, com este modelo é possível ajustar dados em que

Neste estudo utilizaram-se como variáveis independentes apenas o facto da classificação da EF contar ou não para a média, sendo pertinente conduzirem-se mais

A presente dissertação é um estudo de caso da Escola Municipal Guimarães Rosa, da Rede Municipal de Educação de Belo Horizonte, que possui baixo índice socioeconômico

O presente trabalho objetiva investigar como uma escola da Rede Pública Municipal de Ensino de Limeira – SP apropriou-se e utilizou o tempo da Hora de

Na experiência em análise, os professores não tiveram formação para tal mudança e foram experimentando e construindo, a seu modo, uma escola de tempo