56
Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos Usando Nios II Curitiba 2006

Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

Embed Size (px)

Citation preview

Page 1: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET

Engenharia da Computação

Hamon Veloso da Silva

Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos Usando Nios II

Curitiba 2006

Page 2: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET

Engenharia da Computação

Hamon Veloso da Silva

Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos Usando Nios II

Monografia apresentada a disciplina de Projeto Final, como requisito parcial à conclusão do curso de Engenharia da Computação. Orientador: Prof. Edson Pedro Ferlin.

Curitiba 2006

Page 3: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos
Page 4: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

TERMO DE APROVAÇÃO

Hamon Veloso da Silva

Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

Usando Nios II

Monografia aprovada como requisito parcial à conclusão do curso de Engenharia da

Computação do Centro Universitário Positivo, pela seguinte banca examinadora:

Prof. Edson Pedro Ferlin (Orientador) Prof. Alessandro Brawerman Prof. Mauricio Perretto

Curitiba, 11 de Dezembro de 2006

Page 5: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

AGRADECIMENTOS

Quero agradecer a minha família, que sempre estiveram me guiando, apoiando,

confiando, ajudando a superar a todas as dificuldades até aqui.

Também quero agradecer aos amigos, professores, colegas de trabalho, todos que

fizeram parte desse período acadêmico, da minha vida.

Page 6: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

SUMÁRIO

LISTA DE FIGURAS ............................................................................................................................................VIII

LISTA DE TABELAS ..............................................................................................................................................IX

LISTA DE SIGLAS ................................................................................................................................................... X

LISTA DE SÍMBOLOS............................................................................................................................................XI

RESUMO................................................................................................................................................................. XII

ABSTRACT............................................................................................................................................................. XII

1. INTRODUÇÃO..................................................................................................................................................... 13

1.2 VISÃO GERAL.................................................................................................................................................... 14 1.2 MOTIVAÇÃO ...................................................................................................................................................... 15 1.3 CONTEXTUALIZAÇÃO ........................................................................................................................................ 15 1.4 OBJETIVO.......................................................................................................................................................... 16

2. REVISÃO BIBLIOGRÁFICA............................................................................................................................. 17

2.1. COMPUTAÇÃO EVOLUTIVA E ALGORITMOS GENÉTICOS................................................................................... 17 2.2. COMPUTAÇÃO RECONFIGURÁVEL.................................................................................................................... 19 2.3. FPGA............................................................................................................................................................... 20 2.4. PROCESSAMENTO PARALELO ........................................................................................................................... 22 2.5. PLACA DE DESENVOLVIMENTO NIOS II - EDIÇÃO STRATIX ............................................................................... 23

3. DESCRIÇÃO......................................................................................................................................................... 24

3.1 DESCRIÇÃO DO SOFTWARE................................................................................................................................ 24 3.2 DESCRIÇÃO DO FIRMWARE................................................................................................................................ 24 3.3 DESCRIÇÃO DO HARDWARE .............................................................................................................................. 25

3.3.1 Configuração da FPGA............................................................................................................................ 25 3.3.2. Comunicação entre Hardware e o Software............................................................................................ 26

4. PROJETO.............................................................................................................................................................. 27

4.1 SOFTWARE........................................................................................................................................................ 27 4.1.1 Objetivos................................................................................................................................................... 27 4.1.2 Funções .................................................................................................................................................... 27 4.1.3 Atributos ................................................................................................................................................... 28 4.1.4 Descrição de Casos de Uso ...................................................................................................................... 28 4.1.5 Diagramas de Casos de Uso..................................................................................................................... 30 4.1.6 Prioridades dos Casos de Uso.................................................................................................................. 30 4.1.7 Telas do Sistema....................................................................................................................................... 31 4.1.8 Diagramas de Classes .............................................................................................................................. 32

4.2 FIRMWARE ........................................................................................................................................................ 33 4.2.1 Objetivos................................................................................................................................................... 33 4.2.2 Funções .................................................................................................................................................... 34 4.2.3 Funcionamento do Firmware ................................................................................................................... 35

4.3 HARDWARE....................................................................................................................................................... 36 4.3.1 Modelagem do CORE............................................................................................................................... 37 4.3.2 Melhor Cromossomo ................................................................................................................................ 38 4.3.3 Memória Temporária e de Cromossomos ................................................................................................ 39 4.3.4 Elemento Processador.............................................................................................................................. 39 4.3.5 Unidade de Resultado...............................................................................................................................41 4.3.6 Contador de Gerações.............................................................................................................................. 41 4.3.7 Máquina de Estados .................................................................................................................................41 4.3.8 HOST........................................................................................................................................................ 41 4.3.9 Seleção...................................................................................................................................................... 42 4.3.10 Crossover................................................................................................................................................ 43 4.3.11 Mutação.................................................................................................................................................. 43 4.3.12 MUX ....................................................................................................................................................... 43 4.3.13 Gerador de População ........................................................................................................................... 43

Page 7: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

4.3.14 Estrutura do Cromossomo...................................................................................................................... 44

5. IMPLEMENTAÇÃO............................................................................................................................................ 45

5.1 SOFTWARE........................................................................................................................................................ 45 Classe de Comunicação ....................................................................................................................................45 Classe de Interpretação do Cromossomo.......................................................................................................... 46

5.2 FIRMWARE ........................................................................................................................................................ 46 Protocolo Firmware / Software......................................................................................................................... 47

6. FERRAMENTAS UTILIZADAS ........................................................................................................................ 48

6.1 AMBIENTE DE DESENVOLVIMENTO QUARTUS II ................................................................................................ 48 SOPC Builder .................................................................................................................................................... 48 RTL View ........................................................................................................................................................... 49

6.2 NIOS II IDE......................................................................................................................................................50

7. TESTES E RESULTADOS.................................................................................................................................. 51

8. CONCLUSÃO ....................................................................................................................................................... 53

9. REFERÊNCIAS.................................................................................................................................................... 54

ANEXOS.................................................................................................................................................................... 56

Page 8: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

VIII

LISTA DE FIGURAS Figura 1 - Modelo de Execução de Algoritmos Genéticos.......................................................................................... 18 Figura 2 - Arquitetura de FPGA................................................................................................................................. 21 Figura 3 – O Processo de Paralelização .................................................................................................................... 22 Figura 4 - Diagrama em Blocos da Placa Stratix....................................................................................................... 23 Figura 5 – Blocos do Projeto...................................................................................................................................... 24 Figura 6 - Conexão JTAG........................................................................................................................................... 25 Figura 7 - Conector Serial.......................................................................................................................................... 26 Figura 8 - Casos de Uso ............................................................................................................................................. 30 Figura 9 - Diagramas de Classe 1.............................................................................................................................. 32 Figura 10 - Diagramas de Classe 2 ............................................................................................................................ 33 Figura 11 - Funcionamento do Firmware .................................................................................................................. 35 Figura 12 - Arquitetura do Projeto............................................................................................................................. 36 Figura 13 – Módulos do Core..................................................................................................................................... 38 Figura 14 – Elemento Lógico ..................................................................................................................................... 39 Figura 15 – Elemento Processador ............................................................................................................................ 40 Figura 16 – Fluxograma do Método de Seleção......................................................................................................... 42 Figura 17 – Estrutura do Cromossomo ......................................................................................................................44 Figura 18 - Estrutura do Gene.................................................................................................................................... 44 Figura 19 - Sistema Típico SOPC............................................................................................................................... 48 Figura 20 - RTL View ................................................................................................................................................. 49 Figura 21 - Nios II IDE............................................................................................................................................... 50

Page 9: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

IX

LISTA DE TABELAS Tabela 1 - Funções do Software.................................................................................................................................. 27 Tabela 2 - Atributos do Software ................................................................................................................................ 28 Tabela 3 - Prioridades dos Casos de Uso................................................................................................................... 30 Tabela 4 - Funções do Firmware................................................................................................................................ 34

Page 10: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

X

LISTA DE SIGLAS

AG - Algoritmo Genético.

CI - Circuito Integrado.

CLB - Configuration Logical Blocks.

DSP - Digital Signal Processor.

EP - Elemento processador.

EMI - Electromagnetic interference.

E/S - Entrada / Saída.

FPGA - Field-Programmable Gate Array.

IDE - Integrated Development Environment.

IOB - Input/Output Block.

LED - Light Emitting Diode.

LUT - Look-Up Table.

PLL - Phase-locked loops.

RAM - Random Acces Memory.

SDRAM - Synchronous Dynamic Random Access Memory.

VHDL - VHSIC Hardware Description Language.

VHSIC - Very-High-Speed Integrated Circuit.

Page 11: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

XI

LISTA DE SÍMBOLOS MHz - Mega Hertz. Hz - Hertz. V - Volts.

Page 12: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

XII

RESUMO

O projeto consiste no desenvolvimento de uma interface utilizando o processador

Nios II para uma arquitetura paralela reconfigurável aplicada a algoritmos genéticos. A

arquitetura realizará a síntese de circuitos digitais combinacionais. Os circuitos

possuem várias entradas e uma saída correspondente para cada combinação dessas

entradas. Esse projeto responderá qual expressão lógica nos fornece a saída desejada

para cada uma das entradas combinadas. Visando sempre minimizar a quantidade de

portas lógicas utilizadas.

Palavras-chave: VHDL, algoritmos genéticos, circuitos lógicos, Nios II, software

embarcado.

ABSTRACT

This project consists on the development of a interface using processor Nios II for a

architecture parallel and configurable applied the genetic algorithms. The architecture

will be able to perform the synthesis of digital circuits. The circuits possess some inputs

and a corresponding exit for each combination of these inputs. This project will be able

to answer which logical expression can supply the correct exit for each one of these

combined inputs, always aiming at minimizing the amount of logic gates used.

Key words: VHDL, genetic algorithms, logical circuits, Nios II, embedded software.

Page 13: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

13

1. INTRODUÇÃO

Esse projeto teve sua proposta lançada a partir de outro projeto que estava sendo

desenvolvido no Centro Universitário Positivo – UnicenP, pelo Prof. Edson Pedro Ferlin

e pelo Eng. Ederson Cichazevszki.

A álgebra booleana é uma variação da álgebra fundamental desenvolvida no século

XIX pelo matemático inglês George Boole (1815-1864), cujas variáveis assumem

apenas dois únicos valores opostos, permitindo determinar se proposições lógicas são

verdadeiras ou falsas. Graças à essa característica binária, passou a ser utilizada em

computação nos circuitos lógicos combinacionais. É formada de operadores lógicos

básicos: AND, OR e NOT.

Um circuito combinacional é uma implementação de operadores lógicos na forma

de portas lógicas que representam uma equação lógica. Uma vez obtida a expressão

de um circuito combinacional, podemos ser capazes de reduzi-la a uma forma mais

simples, que contenha um número menor de termos ou variáveis em um ou mais

termos da expressão. Esta nova expressão pode ser usada para implementar um

circuito que é equivalente ao circuito original, mas que contém um menor número de

portas e conexões.

Existem dois métodos utilizados para simplificar circuitos lógicos. Um dos métodos

faz uso dos teoremas da álgebra booleana do séc. XIX e é bastante dependente da

inspiração e da experiência. O outro método é o de Karnaugh e tem uma abordagem

mais sistemática (TOCCI & WIDMER, 2003).

Page 14: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

14

1.2 Visão Geral

Apesar do grande avanço na área de arquitetura de computadores, as arquiteturas

paralelas reconfiguráveis possuem um grande campo de atuação na engenharia e nas

ciências, pois existe uma necessidade crescente de poder computacional e flexibilidade

que a arquitetura paralela reconfigurável proporciona.

Entre todos os campos de estudo associados com projeto de sistemas embarcados,

as tecnologias de software e hardware, em particular dos processadores, são as que

têm experimentado a evolução mais rápida (FERLIN, 2004).

Em função desta acelerada evolução tecnológica, a idéia de se utilizar estruturas

abertas e reconfiguráveis que possam adaptar-se a novas demandas torna-se muito

atraente. Isto pode até ser um pré-requisito na consideração de um projeto de um

sistema embarcado. Sistemas de desenvolvimento baseados em computação

reconfigurável (sistemas de hardware reconfigurável) apresentam características

adequadas para uso nesta classe de projetos. Eles apresentam, dentre outras

vantagens, as características de baixo consumo, alta velocidade de operação,

capacidade de integração, flexibilidade, facilidade de programação e operação modular

(ITO & CARRO, 2000).

Esse projeto utiliza-se de uma arquitetura paralela reconfigurável, que emprega os

conceitos de Arquitetura de Computadores e de Processamento Paralelo, para obter

um desempenho escalável. Aliando-se com os conceitos de Computação

Reconfigurável, aproveita-se a flexibilidade e a adaptabilidade da arquitetura à

aplicação. Esta arquitetura permite uma rápida adequação do sistema para diversos

problemas e, em particular, neste trabalho estuda-se a aplicação de Algoritmos

Genéticos (AG) na otimização de circuitos combinacionais. Diferentemente da

computação seqüencial, a computação paralela de algoritmos genéticos aproveita os

Elementos Processadores disponíveis e sua especificidade para a aplicação. Assim, a

arquitetura proposta pode oferecer um alto desempenho, escalabilidade e soluções

particularizadas para problemas de otimização usando AG.

Page 15: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

15

1.2 Motivação

O projeto possibilitará o embasamento técnico científico para o desenvolvimento de

novos projetos nas áreas de processamento paralelo, computação reconfigurável e

algoritmos genéticos.

Uma arquitetura poderosa capaz de suportar novos problemas a serem resolvidos

usando Algoritmos Genéticos estará formada.

Estudar e desenvolver uma arquitetura são tarefas desafiadoras que motivam a

busca pela solução que atenda as necessidades e objetivos.

1.3 Contextualização

Métodos convencionais de simplificação de expressões lógicas são empregados

ainda em alguns aplicativos desenvolvidos para arquiteturas convencionais de

computadores que não tiram o melhor proveito de processamento já que executam

sequencialmente apenas.

Atualmente existem estudos e conferências tratando de diferentes técnicas e

heurísticas para desenvolver circuitos combinacionais para circuitos digitais e o que

tem se percebido é que o processamento paralelo voltado a uma arquitetura

reconfigurável é o que apresenta maior desempenho e flexibilidade.

Arquiteturas de computadores são formadas de muitos circuitos combinacionais e a

eliminação de portas é algo que representa principalmente economia. Mas, as maiorias

das arquiteturas são fixas e uma vez definidas terão sempre as mesmas lógicas

combinacionais utilizadas. Porém, os hardwares evolutivos, reconfiguráveis estão

constantemente fazendo uma nova recombinação de seus circuitos e é por isso que

técnicas rápidas de simplificação de expressões são tão importantes hoje.

Page 16: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

16

1.4 Objetivo

O principal objetivo desse projeto é a construção de uma interface de comunicação

utilizando o processador Nios II da Altera para uma arquitetura que implementa

Algoritmos Genéticos em hardware para obter a expressão lógica de uma dada tabela

verdade, reduzindo o número de operadores lógicos necessárias para representar uma

função.

Como objetivos secundários espera-se:

• Modificar a arquitetura para trabalhar com no mínimo sete bits de entradas

booleanas.

• Arquitetura com 20 elementos processadores (EPs) (aumentando o poder de

processamento).

• Reduzir o tempo de busca da solução, aproveitando-se do desempenho do

hardware e de uma arquitetura paralela.

Page 17: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

17

2. REVISÃO BIBLIOGRÁFICA

2.1. Computação Evolutiva e Algoritmos Genéticos

A Computação Evolucionária compreende um conjunto de técnicas de busca e

otimização inspiradas na evolução natural das espécies. Desta forma, cria-se uma

população de indivíduos que vão se reproduzir e competir pela sobrevivência. Os

melhores sobrevivem e transferem suas características genéticas a novas gerações. As

técnicas atualmente incluem: Programação Evolucionária, Estratégias Evolucionárias,

Algoritmos Genéticos e Programação Genética (BANZHAF, 1998).

Os AGs possuem uma larga aplicação em muitas áreas científicas e de engenharia,

entre as quais podem ser citados problemas de otimização combinatória, aprendizado

de máquina, desenvolvimento de estratégias, análise de modelos econômicos, e

diversas aplicações na Biologia como simulação do comportamento de bactérias,

sistemas imunológicos, ecossistemas, descoberta de padrões e propriedades de

moléculas orgânicas (SILVA, 2002).

Esses algoritmos simulam processos naturais de sobrevivência e reprodução das

populações, essenciais em sua evolução. Na natureza, indivíduos de uma mesma

população competem entre si, buscando principalmente a sobrevivência, seja através

da busca de recursos como alimento, ou visando a reprodução. Os indivíduos mais

aptos terão um maior número de descendentes, ao contrário dos indivíduos menos

aptos.

A idéia básica de funcionamento dos algoritmos genéticos é a de tratar as possíveis

soluções do problema como "indivíduos" de uma "população", que “evoluirá" a cada

iteração ou "geração". Para isso é necessário construir um modelo de evolução onde

os indivíduos sejam soluções de um problema. A execução do algoritmo está

apresentada na Figura 1 e pode ser resumida nos seguintes passos:

• Inicialmente escolhe-se uma população inicial, normalmente formada por

indivíduos criados aleatoriamente;

• Avalia-se toda a população de indivíduos segundo algum critério,

determinado por uma função que avalia a qualidade do indivíduo (função de

aptidão ou "fitness");

Page 18: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

18

• Em seguida, através do operador de "seleção", escolhem-se os indivíduos de

melhor valor (dado pela função de aptidão) como base para a criação de um

novo conjunto de possíveis soluções, chamado de nova "geração";

• Esta nova geração é obtida aplicando-se sobre os indivíduos selecionados as

operações que misturem suas características (chamadas "genes"), através

dos operadores de "cruzamento" ("crossover"), "mutação" e inversão;

• Estes passos são repetidos até que uma solução aceitável seja encontrada,

até que o número predeterminado de passos seja atingido ou até que o

algoritmo não consiga mais melhorar a solução já encontrada.

Figura 1 - Modelo de Execução de Algoritmos Genétic os

Os AGs são habitualmente considerados algoritmos implicitamente paralelos, sendo

esta característica um dos seus pontos fortes. Atualmente existe uma procura cada vez

maior por algoritmos que, além de resolver os problemas de forma aceitável, também

os resolvam de um modo que seja paralelizável, pois cada vez mais a tendência está

voltada para a utilização de sistemas paralelos. Os AGs possuem uma estrutura

computacional altamente paralelizável (CANTÚ-PAZ, 1997).

Page 19: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

19

2.2. Computação Reconfigurável

A idéia da utilização de hardware reconfigurável para o desenvolvimento de

computadores reconfiguráveis surgiu na década de 60. Contudo, a primeira

demonstração prática só ocorreu na década de 80 com o advento dos dispositivos

reprogramáveis, como no caso os FPGAs (Field-Programmable Gate Array) (TOCCI &

WIDMER, 2003).

A Computação Reconfigurável, compartilha todas essas características de

"computador de uso geral", mas organiza a computação de maneira muito diferente. Ao

invés de computar uma função seqüencial através de um conjunto de instruções de

tempo, igual a um processador, as arquiteturas reconfiguráveis geralmente computam

a função através de unidades funcionais configuradas no espaço (unidades em

diferente blocos dentro dos FPGAs). Temos, portanto, computação paralela envolvendo

diferentes unidades funcionais que geram e consomem resultados intermediários. A

diferença, portanto está na computação totalmente temporal/seqüencial das tarefas

versus computação totalmente espacial/paralela. (DEHON, 96).

Na década de 90, a disponibilidade de grande densidade de interconexão e de

transistores nas FPGAs propiciou uma nova forma de elementos reconfiguráveis

denominados Reconfigurable Data Path (VEMURI & RANDOLPH, 2000).

Page 20: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

20

2.3. FPGA

A computação reconfigurável vem sendo muito utilizada em projetos de

desenvolvimento de hardware. Como exemplo temos os dispositivos FPGAs, circuitos

de hardware que podem ser modificados praticamente em qualquer momento durante o

uso.

Um FPGA é um dispositivo semicondutor que é largamente utilizado para o

processamento de informações digitais. Foi criado pela Xilinx Inc., e teve o seu

lançamento no ano de 1985 como um dispositivo que poderia ser programado de

acordo com as aplicações do usuário (programador). O FPGA é composto basicamente

por três tipos de componentes: blocos de entrada e saída (IOB), blocos lógicos

configuráveis (CLB - Circuitos idênticos, construído pela reunião de flip-flops e a

utilização de lógica combinacional. Utilizando os CLBS, um usuário pode construir

elementos funcionais lógicos) e chaves de interconexão (Switch Matrix - Trilhas

utilizadas para conectar os CLBS e IOBS). Os blocos lógicos são dispostos de forma

bidimensional (matriz), as chaves de interconexão são dispostas em formas de trilhas

verticais e horizontais entre as linhas e as colunas dos blocos lógicos.

O FPGA é um chip que suporta a implementação de circuitos lógicos relativamente

grandes. Consiste de um grande arranjo de células lógicas ou blocos lógicos

configuráveis contidos em um único circuito integrado. Cada célula contém capacidade

computacional para implementar funções lógicas (and, nand, or, nor ou xor) e realizar

roteamento para comunicação entre elas. O primeiro FPGA disponível comercialmente

foi desenvolvido pela empresa Xilinx Inc, em 1983.

Um FPGA basicamente é constituído por blocos lógicos, blocos de entrada e saída,

e chaves de interconexão. Os canais de roteamento possuem chaves de interligação

programáveis que permitem conectar os blocos lógicos de maneira conveniente, em

função das necessidades de cada projeto.

No interior de cada bloco lógico do FPGA existem vários modos possíveis para

implementação de funções lógicas. O mais utilizado pelos fabricantes de FPGA é o

bloco de memória LUT. Esse tipo de bloco lógico contém células de armazenamento

que são utilizadas para implementar pequenas funções lógicas. Cada célula é capaz de

armazenar um único valor lógico: zero ou um.

Nos FPGAs disponíveis comercialmente como, por exemplo, da empresa Altera

Corp., os blocos lógicos LUTs possuem geralmente quatro ou cinco entradas, o que

permite endereçar 16 ou 32 células de armazenamento. Quando um circuito lógico é

Page 21: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

21

implementado em um FPGA, os blocos lógicos são programados para realizar as

funções necessárias, e os canais de roteamento são estruturados de forma a realizar a

interconexão necessária entre os blocos lógicos.

A arquitetura de roteamento de um FPGA é a forma pela qual os seus barramentos

e as chaves de comutação são posicionados para permitir a interconexão entre as

células lógicas. Essa arquitetura deve permitir que se obtenha um roteamento completo

e, ao mesmo tempo, uma alta densidade de portas lógicas.

Cada fabricante de FPGA possui sua própria arquitetura, mas em geral elas são

uma variação da arquitetura apresentada na Figura 2. A arquitetura consiste de blocos

lógicos configuráveis, blocos de E/S configuráveis e interconexões programáveis.

(ZEIDMAN, 2006).

Figura 2 - Arquitetura de FPGA

Page 22: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

22

2.4. Processamento Paralelo

O processamento paralelo é uma forma eficiente do processamento da informação

com ênfase na exploração de eventos simultâneos na execução de um software

(DONGARRA et al, 2003). A motivação para o processamento paralelo é a

possibilidade de aumentar a capacidade de processamento de uma única máquina.

Com a limitação tecnológica da velocidade das máquinas seqüenciais, a solução

empregada para aumentar o poder de processamento é a utilização de processadores

em paralelo (HENNESSY & PATTERSON, 2003).

A utilização do paralelismo nos projetos de arquitetura de computadores tem

possibilitado um aumento significativo na velocidade de processamento devido à

execução simultânea de diversas tarefas. Contudo, o fator limitador do paralelismo, em

um programa, é a dependência dos dados. Se não houvesse isto, todas as operações

poderiam ser executadas simultaneamente, visto que não haveria interdependência

entre elas. As dependências são próprias dos programas seqüenciais, pois as

operações têm uma ordem de precedência para execução, que são geradas pela

aplicação durante o desenvolvimento do programa.

O processo de paralelização dos programas seqüenciais, como mostrado na Figura

3, envolve três etapas distintas (FERLIN, 1998). Na primeira etapa detectam-se as

dependências de dados de um programa. Na segunda, eliminam-se as dependências

desnecessárias. Na terceira, particiona-se do espaço de iteração, utilizando um dos

métodos de paralelização apresentados em (FERLIN, 1997).

Figura 3 – O Processo de Paralelização

Page 23: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

23

2.5. Placa de Desenvolvimento Nios II - edição Stra tix

A placa Nios II edição Stratix é projetada para o desenvolvimento de aplicações

embarcadas de alto desempenho e/ou complexidade.

Principais características:

• FPGA EP1S10F780C6.

• 8 Mbytes de memória FLASH.

• 1 Mbyte de RAM stática.

• 16 Mbytes de SDRAM.

• 2 conectores RS232 DB9 (portas seriais).

• 4 push – buttons conectados à pinos de E/S do Stratix.

• 8 LEDs conectados ao Stratix.

• Conector JTAG da Altera.

• Oscilador de 50 MHz.

Na Figura 4 tem-se o diagrama em blocos da placa.

Figura 4 - Diagrama em Blocos da Placa Stratix

Page 24: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

24

3. DESCRIÇÃO

Nesse capítulo tem-se uma descrição dos principais módulos do projeto. São eles:

Software, Firmware e Hardware. Eles estão representados na Figura 5.

Figura 5 – Blocos do Projeto

3.1 Descrição do Software

O software é a principal interface do usuário. Nela, ele preencherá os parâmetros de

probabilidade de crossover, mutação, máximo de gerações a processar e a tabela

verdade da qual ele deseja obter a equação. Através da interface o usuário poderá

observar as equações obtidas a cada geração dentre outras informações. Os

parâmetros são passados ao firmware que devolverá os resultados sempre que

disponíveis até o final do processamento.

3.2 Descrição do Firmware

O firmware faz a ponte entre o software e o hardware. Ele controla o acesso a cada

dispositivo no sistema. O software possui acesso aos dispositivos e suas funções

através de um protocolo estabelecido e trocado por uma interface serial RS-232.

Escrito em linguagem de programação C é capaz de acessar dispositivos em

Page 25: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

25

barramentos de 8, 16 e até 32 bits já que o processador para o qual foi construído é de

32 bits (Nios II da Altera corp).

3.3 Descrição do Hardware

O Hardware corresponde tanto aos componentes físicos presentes no kit de

desenvolvimento quanto aos componentes que serão configurados na FPGA. São

diversos componentes escritos em linguagem de descrição de hardware.

O principal componente de hardware construído em VHDL nesse projeto é chamado

de CORE. Sua estrutura implementa Algoritmos Genéticos(AG) para a resolução de

equações lógicas combinacionais com resposta em função de até sete operadores

lógicos.

Todos os componentes escritos linguagem de descrição de hardware (HDL) serão

configurados em uma única FPGA. Para se ter uma idéia além de todo o CORE capaz

de realizar AG (unidade de hardware de seleção, crossover, memória, processamento

etc) tem-se também um processador, interface de comunicação e diversos

controladores de dispositivos presentes no kit de desenvolvimento.

3.3.1 Configuração da FPGA

Para configurar a FPGA será utilizada a interface de comunicação JTAG e o cabo

Byte Blaster presente no kit de desenvolvimento conforme mostrado na Figura 6.

Figura 6 - Conexão JTAG

Page 26: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

26

3.3.2. Comunicação entre Hardware e o Software

Para a comunicação entre o hardware e o software é utilizada a interface serial RS-

232. Com a seguinte configuração:

• Taxa de dados: 57600 (bps)

• Paridade: nenhuma

• Bits de dados: 8

• Bits de Parada: 1

A Figura 7 exibe o conector serial presente na placa de desenvolvimento e também

sua configuração.

Figura 7 - Conector Serial

Page 27: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

27

4. PROJETO

4.1 Software

Esse sistema visa estabelecer uma comunicação com o hardware enviando o

problema do usuário e recebendo a solução. Parâmetros de configuração do hardware

e do problema serão inseridos pelo usuário e transferidos para que o hardware

processe e devolva as equações encontradas a cada geração.

4.1.1 Objetivos

Permitir que um usuário obtivesse respostas (equações lógicas) a cada geração

realizada pelo hardware para sua tabela verdade de entrada.

4.1.2 Funções

Na Tabela 1 tem-se as principais funções que foram implementadas no sistema.

Estejam elas de maneira clara ou não para o usuário.

Tabela 1 - Funções do Software Ref

#

Função Categoria

R1.1 Exibir gráfico de fitness por geração. Para cada geração processada

pelo hardware a aplicação irá exibir graficamente seu respectivo fitness

alcançado.

Evidente

R1.2 Exibir equação obtida em cada geração. Evidente

R1.3 Receber cromossomo da arquitetura. A aplicação deverá receber,

pela interface serial, o cromossomo sempre que disponível. Oculto

R1.4 Interpretar cromossomo. O cromossomo recebido a cada geração

precisa ser interpretado. Duas informações importantes precisam ser

extraídas da string de bits. Valor de fitness e a equação lógica.

Oculto

R1.5 Contar tempo decorrido em cada geração. Evidente

R1.6 Ajuda Evidente

Page 28: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

28

4.1.3 Atributos

Na Tabela 2 tem-se os atributos do software. Detalhes e restrições que são

relevantes para o bom funcionamento do mesmo.

Tabela 2 - Atributos do Software Atributo Detalhes e Restrições de Limites

Plataforma de Sistemas Operacionais Windows 98/NT

Processador (mínimo) Pentium ou similar de 60MHz

Memória para Execução 1 MB de RAM

Necessário para Instalação 2 MB

4.1.4 Descrição de Casos de Uso

Na figura Figura 8 tem-se os casos de uso do sistema. Eles estão descritos nesse

capítulo.

Caso de Uso: Obter Nova Equação.

Atores: Usuário.

Tipo: Secundário.

Descrição: o usuário escolhe Obter Nova Equação e a arquitetura será

reinicializada cancelando qualquer operação de processamento atual. Ela estará

disponível para um novo processamento. Os campos da aplicação voltarão ao estado

inicial e o usuário poderá realizar uma nova configuração de parâmetros e realizar o

processamento.

Caso de Uso: Definir Parâmetros.

Atores: Usuário.

Tipo: Opcional.

Descrição: o usuário pode definir os parâmetros do problema. São eles:

probabilidade de crossover, de mutação, máximo de gerações e o preenchimento da

tabela verdade.

Caso de Uso: Iniciar Processamento.

Atores: Usuário.

Page 29: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

29

Tipo: Primário.

Descrição: o software enviará todos os parâmetros para a arquitetura, começar a

receber e exibir as soluções sempre que disponíveis pelo hardware. Quando esse caso

de uso for utilizado praticamente todas as funções que o software deverá desempenhar

serão ativadas.

Caso de Uso: Ver Ajuda.

Atores: Usuário.

Tipo: Opcional.

Descrição: o usuário poderá escolher visualizar um documento de ajuda, que

explicará como o programa funciona, entre outros recursos. Esse documento trata-se

do manual do usuário.

Caso de Uso: Exibir Créditos.

Atores: Usuário.

Tipo: Opcional.

Descrição: exibe os créditos do desenvolvedor do sistema.

Page 30: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

30

4.1.5 Diagramas de Casos de Uso

Figura 8 - Casos de Uso

4.1.6 Prioridades dos Casos de Uso

Na Tabela 3 tem-se uma classificação das prioridades dos casos de uso.

Tabela 3 - Prioridades dos Casos de Uso Nome Prioridade

Obter Nova Equação Médio

Definir Parâmetros Médio

Iniciar Processamento Alta

Ver Ajuda Baixa

Exibir Créditos Baixa

Justificativas para as prioridades julgadas de acordo com a Tabela 3:

Page 31: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

31

Alta: foram classificados assim os casos de uso que possuem fundamental

importância para alcançar o objetivo do sistema.

Média: São importantes, no entanto, o sistema irá funcionar mesmo que o usuário

não utilize esses casos de uso. Esses casos de uso são opcionais.

Baixa: simplesmente opcionais e não influenciam no objetivo do sistema de forma

alguma.

4.1.7 Telas do Sistema

O software apresenta quatro painéis de visualização para o usuário. São eles:

• Configuração: nesse painel o usuário configura o problema que deseja

executar.

• Processamento: somente após o início de um processamento, as equações

serão listadas a cada geração já processada pelo hardware até o máximo de

gerações. Na tabela que será formada você verá três informações. Geração,

fitness (valor que representa o quanto a equação está correta), Equação.

• Gráfico de desempenho: nesse painel, um gráfico Fitness X Geração será

representado.

• Gráfico de Gerações: gráfico de Geração X Tempo (s).

Observação: consultar as imagens no anexo C – telas do sistema.

Page 32: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

32

4.1.8 Diagramas de Classes

O software é constituído das classes apresentadas na Figura 9 e Figura 10.

• cComunicacao: classe responsável pela comunicação entre software e o

firmware para a resolução do problema de Algoritmo Genético.

• cSerial: classe utilizada para transmissão serial de dados. Deve ser

acessada somente pela classe de comunicação.

• cErro: classe utilizada para captura de erros que são lançados pelo software

em situações de erro, como por exemplo erro de comunicação.

• cInterpCromossomo: classe que interpreta um cromossomo. Fornecendo da

string de bits uma string de equação que a string binária representa. Para

isso utiliza a classe de Elemento Lógico (EL).

Figura 9 - Diagramas de Classe 1

Page 33: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

33

Figura 10 - Diagramas de Classe 2

4.2 Firmware

O firmware realizará a integração do hardware com o software. Ele controla o

hardware através das requisições feitas pelo software, com operações especificadas

por um protocolo. Dessa forma, o hardware não é diretamente controlado pelo

programa de computador.

As trocas de mensagens são realizadas através do protocolo estabelecido. O

firmware além de controlar os dispositivos de hardware também faz o controle de E/S

de comandos e dados.

4.2.1 Objetivos

Permitir o acesso correto ao hardware da arquitetura. Enviando parâmetros para o

hardware e soluções para o software.

Page 34: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

34

4.2.2 Funções

Na Tabela 4 tem-se as funções que o firmware deverá atender.

Tabela 4 - Funções do Firmware Ref # Função

R1.1 Contolar dispositivos. Cada dispositivo pode ser controlado pelo controlador

através de um endereço de memória. Cabe ao firmware receber os comandos e

ativar ou não um dispositivos. Exemplo: ativar um display, ativar/reiniciar/desativar

o CORE etc.

R1.2 Receber parâmetros de configuração provenientes do software e iniciar o

processamento com o CORE.

R1.3 Receber cromossomos obtidos pelo hardware e enviar à aplicação sempre que

requisitado.

Page 35: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

35

4.2.3 Funcionamento do Firmware

O firmware fica constantemente realizando leitura no buffer da interface serial. De

acordo com o comando enviado pelo software ele realiza uma operação. Podendo essa

ser uma ativação de hardware e/ou ainda envolver algum retorno para o software. O

funcionamento está exemplificado na Figura 11.

Figura 11 - Funcionamento do Firmware

Page 36: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

36

4.3 Hardware

O hardware utilizado nesse projeto inclui componentes presentes na Placa de

Desenvolvimento Nios II - edição Stratix e principalmente o hardware que será

configurado na FPGA, escrito em linguagem de descrição de hardware (HDL).

O principal bloco de hardware escrito em VHDL é chamado de CORE. Ele é

formado por unidades de memória, processamento e controle. Implementa a estrutura

de Algoritmos Genéticos e é capaz de achar a equação lógica que representa uma

tabela verdade passada como problema. O CORE, foi desenvolvido pelo Prof. Edson

Pedro Ferlin e pelo Eng. Ederson Cichazevszki em projetos anteriores no Centro

Universitário Positivo.

O hardware que será configurado na FPGA não é constituído somente do CORE,

mas também do processador Nios II, memória e controladores de dispositivos de

comunicação presentes no kit. O software embarcado (firmware) estará rodando nessa

arquitetura. É uma arquitetura completa, construída com a ferramenta SOPC Builder da

Altera. A Figura 12 representa em blocos os principais componentes dessa arquitetura

e o anexo B exemplifica o mesmo, porém, como esses componentes foram interligados

na prática.

Figura 12 - Arquitetura do Projeto

Page 37: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

37

4.3.1 Modelagem do CORE

O CORE receberá parâmetros do software como probabilidade de mutação,

crossover, máximo de gerações e a uma tabela de onde se deseja obter a equação. A

cada geração do problema processado devolverá o melhor cromossomo obtido. Esse

cromossomo é uma representação da função lógica que está associada à tabela de

entrada.

A arquitetura implementa o método de Algoritmos Genéticos para a resolução do

problema. Nesse método a solução é buscada a cada geração partindo de uma

solução totalmente aleatória, contando então com um mecanismo de evolução genética

para alcançar a solução. Esse método de resolução pode ser muito eficiente, no

entanto requer muito processamento para alcançar, em alguns casos, à solução

correta. Portanto, justifica-se a construção da arquitetura paralela para obter o máximo

do poder computacional do chip.

Na Figura 13 temos uma modelagem do CORE comunicando-se com o software

Host. Cada bloco modelado (exceto o HOST) é uma unidade que será escrita em

linguagem de descrição de hardware e depois sintetizada pelo próprio Quartus II em

uma estrutura de hardware de acordo com o que foi projetado para a unidade.

Nos próximos capítulos, arquitetura do CORE será detalhada.

Page 38: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

38

Figura 13 – Módulos do Core

4.3.2 Melhor Cromossomo

O cromossomo será avaliado quanto ao seu resultado que é o seu valor (fitness)

obtido. Dois critérios são fundamentais nessa avaliação:

- Quantidade de acerto (match): representa quantos valores de saída obtidos

correspondem com o valor de saída desejado.

- Quantidade de nulos: quantas das operações fornecidas pelo cromossomo são

nulas. Na prática esse fator implicará na redução do tamanho da equação.

O cromossomo de melhor fitness é transferido para unidade de resultado.

Page 39: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

39

4.3.3 Memória Temporária e de Cromossomos

Na Memória Temporária e também na Memória de Cromossomos teremos uma

população de 100 cromossomos. As principais funções da Memória de Cromossomos é

alimentar o Elemento Processador e ao mesmo tempo armazenar os novos

cromossomos que vão chegando do processo de evolução (seleção, crossover e

mutação). O que se diferenciará em cada uma das memórias será o tamanho de cada

cromossomo. Na Memória Temporária o fitness e a quantidade de nulos são

armazenados juntamente com a equação e na memória cromossomo somente a

equação que representa o cromossomo é armazenada.

4.3.4 Elemento Processador

O Elemento Processador (EP) na Figura 15 é responsável pela geração de cinco

equações lógicas por geração. Ele é formado por 25 Elementos Lógicos (ELs) e

também por multiplexadores (EL representado na Figura 14).

A cada geração um cromossomo configura o EP. Cada gene do cromossomo irá

configurar um EL fornecendo 3 bits para o operador e 2 bits para a seleção do

operando A no multiplexador, 2 bits para a seleção do operando B.

Os EL são recombinados formando as cinco equações de saída (Y0 até Y4 na

Figura 15) com somente um cromossomo, portanto ele é intrinsecamente paralelo.

Cada Elemento Lógico constitui uma unidade que fornece parte da equação. Os

primeiros 4 elementos lógicos possuem suas entradas associadas com as variáveis ( A,

B, C e D) do problema e os demais são funções dos outros elementos lógicos

anteriores. Por exemplo, as entradas do multiplexador do EL4 na Figura 15 são

provenientes dos quatro Elementos Lógicos anteriores.

Figura 14 – Elemento Lógico

Page 40: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

40

Figura 15 – Elemento Processador

Page 41: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

41

4.3.5 Unidade de Resultado

Nessa unidade teremos disponível a contagem de gerações e fitness do

cromossomo da geração atual. O resultado será transmitido ao computador utilizando-

se a interface de comunicação serial.

4.3.6 Contador de Gerações

Essa unidade conta a quantidade de gerações decorridas. Essa informação é

importante para saber a evolução no tempo e também para ser utilizada como

referência em um dos critérios de parada que é o valor máximo de gerações. Sua

função é realizar uma contagem seqüencial que inicia-se na geração zero e vai até ao

máximo de gerações.

4.3.7 Máquina de Estados

Todo o funcionamento da arquitetura será controlado através de uma máquina de

estados. Cada estado é responsável pela ativação de uma pequena parte do CORE,

tornando-o funcional. A máquina de estados é quem realmente comanda e sincroniza a

arquitetura.

4.3.8 HOST

Representa o software principal que comunica-se com o hardware. Enviará os

dados de configuração como probabilidade de mutação, de crossover, quantidade de

gerações, dados de entrada da tabela e a resposta para aquela combinação. Receberá

e apresentará a resposta em um gráfico de gerações e respostas. A cada geração o

Host receberá um seqüência de dados que é o cromossomo. Nesse cromossomo

teremos: a resposta que é a equação, a quantidade de nulos e o resultado que é o

fitness para essa equação. O Host terá também que interpretar cada parte desse

cromossomo para exibir a equação e o fitness.

Page 42: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

42

4.3.9 Seleção

Unidade responsável por aplicar uma técnica que em Algoritmos Genéticos é

chamada de seleção (MITCHELL, 1997). O método de seleção será por Torneio onde n

indivíduos serão escolhidos aleatoriamente para gerar uma sub-população temporária.

Sendo então o indivíduo selecionado através da taxa de entrada. A Figura 16

apresenta o fluxograma do mecanismo de seleção.

Figura 16 – Fluxograma do Método de Seleção

Page 43: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

43

4.3.10 Crossover

Unidade responsável por aplicar uma técnica que em Algoritmos Genéticos é

chamada de crossover. O crossover fará com que as características dos cromossomos

sejam misturadas. A taxa de crossover será um dos parâmetros de entrada do usuário

e o ponto de troca adotado será na metade dos cromossomos.

4.3.11 Mutação

Unidade responsável por aplicar uma técnica que em algoritmos genéticos é

chamada de mutação (MITCHELL, 1997). Isso fará com que as características dos

cromossomos sejam modificadas de uma forma aleatória. Essa operação é baseada na

própria evolução das espécies, mas um valor muito elevado poderá fazer com que o

processo de evolução seja mais lento.

4.3.12 MUX

Essa unidade será um multiplexador que selecionará a população de cromossomos

de entrada. A seleção das entradas será efetuada então pelo valor da geração. Caso

seja a primeira geração o cromossomo é proveniente do Gerador de População caso

contrário utiliza-se cromossomo de gerações anteriores.

4.3.13 Gerador de População

Essa unidade produzirá aleatoriamente os cromossomos iniciais. Sendo assim o

sistema começa a funcionar a avaliar equações de cromossomos aleatórios e que

provavelmente não são respostas para o problema configurado. Então, o valor do

fitness para os cromossomos iniciais deverá ser praticamente nulo e com a sucessão

de gerações, aplicando-se operadores genéticos (seleção, crossover e mutação) as

novas populações serão obtidas. O gerador de população é utilizado somente na

primeira geração.

Page 44: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

44

4.3.14 Estrutura do Cromossomo

O cromossomo é uma seqüência de bits que constituem 25 Genes. Cada Gene

possui 7 bits. Então, o cromossomo é formado por 175 bits. A estrutura do cromossomo

está representada na Figura 17.

Figura 17 – Estrutura do Cromossomo

Cada Gene é responsável pela configuração de um Elemento Lógico dentro do EP.

Como já comentado ele possui 7 bits. São eles:

• Endereço A (2 bits) – responsável pelo sinal de seleção da entrada A do

multiplexador que irá selecionar o primeiro operando.

• Endereço B (2 bits) – responsável pelo sinal de seleção da entrada B do

multiplexador que irá selecionar o segundo operando.

• Função (3 bits) – representa a função que o Elemento Lógico correspondente

deverá executar.

A estrutura do Gene está representada na Figura 18.

Figura 18 - Estrutura do Gene

Como o Endereço de seleção de cada operando é de 2 bits, o número máximo de

variáveis de entradas atualmente está limitado em quatro.

O campo Função (de 3 bits) corresponde as funções implementadas. Ou seja, as

funções que o Elemento Lógico é capaz de operar. São elas: and, or, xor, not a, not b,

transparente a (a), transparente b (b).

Page 45: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

45

5. IMPLEMENTAÇÃO

Esse capítulo apresenta de fato como alguns blocos do sistema foram

implementados, partes consideradas importantes no projeto serão expostas. O objetivo

principal é exemplificar o projeto proporcionando maior esclarecimento sobre o sistema.

5.1 Software

O software foi implementado através da aplicação C++ Builder 6, da Borland. As

principais classes estão apresentadas a seguir:

Classe de Comunicação

Os principais métodos dessa classe são:

• Construtor não padrão cComunicacao(...): com ele os parâmetros são

configurados na classe cComunicacao.

• IniciarProcessamento(): transmitirá os parâmetros previamente configurados

pelo construtor e também o comando para que o firmware ative o

funcionamento do hardware.

• GetNewCromossomo(): esse método deverá ser chamado para receber o

novo cromossomo. Para que funcione corretamente deve ser chamado

somente após o retorno verdadeiro do método TemNovoCromossomo().

class cComunicacao{ private: bool m_EstaProcessando; bool m_EstaConcluido; int m_geracoes; float m_pcrossover; float m_pmutacao; short int m_tabela_verdade; unsigned char m_cromossomo[24]; bool CancelarProcessamento(); public: cComunicacao(); ~cComunicacao(); cComunicacao(int geracoes, float pcrossover, float pmutacao, short int TV); bool IniciarProcessamento(); bool ConcluiuProcessamento(); bool TemNovoCromossomo(); unsigned char* GetNewCromossomo(); };

Page 46: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

46

Classe de Interpretação do Cromossomo

Essa classe é responsável por interpretar partes de um cromossomo. Os métodos

estão comentados do projeto. Os principais métodos dessa classe são:

• get_fitness(...): retorna o fitness para o cromossomo passado como

parâmetro.

• Get_equação(...): retorna como string a equação que o cromossomo,

passado como parâmetro, representa.

class cInterpCromossomo{ private: AnsiString m_equacao; void inicializa_matrixEL ( EL* mEL, unsigned char* cromossomo); int get_cod_operador(int gene); int get_cod_operando1(int gene); int get_cod_operando2(int gene); AnsiString get_operador(int operacao); char get_operando(int cod_operando); void get_equacao(EL* raiz); void converte_cromossomo(unsigned char* cromossomo, unsigned char*

novo_cromossomo); int get_bit(unsigned char* cromossomo, int pos); public: cInterpCromossomo(); ~cInterpCromossomo(); static int get_fitness(unsigned char cromossomo[24]); String get_equacao(unsigned char cromossomo[24]); };

5.2 Firmware

O firmware em sua função principal implementa exatamente o fluxograma da Figura

11 - Funcionamento do Firmware.

Sobre ele é realmente importante esclarecer o seguinte. Qualquer que seja a

interação com dispositivo de hardware, seja ele escrito em lógica de descrição de

hardware ou não, é realizada através de um endereço de memória. Endereço para o

qual o dado dispositivo está mapeado no processador Nios II. Exemplo:

IORD_16DIRECT(DEV_CORE, CTRLC_CROMOSSOMO);

O exemplo anterior realiza uma leitura de 16 bits no registro

CTRLC_CROMOSSOMO de endereço DEV_CORE. O registro que está sendo lido,

pertence ao dispositivo controlador do CORE.

Page 47: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

47

O controlador do CORE, um display de 7 segmentos e um banco de leds são os

dispositivos atualmente controlados e estão definidos nos endereços:

#define DEV_CORE 0x00000C00 #define DEV_PIO_7SEG 0x00000860 #define DEV_PIO_LED 0x00810880

O firmware realiza operações de acordo com o protocolo estabelecido. Um código

de operação é recebido ou enviado pela serial. A seguir os códigos que foram

utilizados para que fosse possível a comunicação e iteração entre o firmware e o

software.

Protocolo Firmware / Software

#define CMD_INIT 0xA1 // comando para iniciar configuração #define CMD_REPLY_OK 0xF1 // confirmação de resposta #define CMD_CANCEL_PROCESS 0xF2 // cancelar processamento #define CMD_IS_PROCESSING 0xF3 // está processando? #define CMD_TEM_CROMOSSOMO 0xF4 // tem cromossomo? #define CMD_GET_CROMOSSOMO 0xF5 // retorna cromossomo da geração atual #define CMD_SET_TV 0xF6 // configura a tabela verdade

Page 48: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

48

6. FERRAMENTAS UTILIZADAS

6.1 Ambiente de desenvolvimento Quartus II

Quartus II é uma ferramenta completa de desenvolvimento voltada para

computação reconfigurável. Através dele é possível criar, compilar e simular arquivos

de descrição de hardware. Possui um conjunto de ferramentas para auxiliar na

construção de projetos como SOPC, Simulator e o RTL Viewer.

SOPC Builder

O SOPC Builder é uma ferramenta exclusiva do software Quartus® II, com ela pode-

se construir uma arquitetura embarcada de uma maneira fácil e rápida.

Ele fornece os componentes customizáveis como o processador Nios® II,

memórias, barramentos, interfaces de comunicações e outros. Você pode também criar

seus próprios componentes através de um arquivo de definição de hardware e

adicionar tudo isso a sua arquitetura e gerar um sistema correspondente.

Posteriormente o seu sistema pode ser configurado em sua FPGA utilizando o

Quartus® II. Essa ferramenta foi utilizada para construção da arquitetura do meu

projeto. Como exemplo, consulte o anexo B – Arquitetura.

A possibilidade de integração é possível graças ao barramento Avalon que controla

tudo o que se passa pelo barramento. Existe todo um protocolo de definição e tráfego

de sinais escrito pela Altera. A Figura 19 representa um sistema gerado pelo SOPC.

Figura 19 - Sistema Típico SOPC

Page 49: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

49

RTL View

O RTL View é mais uma ferramenta exclusiva que acompanha o software Quartus II.

Essa ferramenta fornece a visualização esquemática de todos os componentes de seu

projeto. Mostrando a forma como cada um deles foi sintetizado em hardware. Na Figura 20

um exemplo de esquemático representado nesta ferramenta.

Figura 20 - RTL View

Page 50: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

50

6.2 NIOS II IDE

O ambiente de desenvolvimento Nios II é uma ferramenta de integrada para a

família de processadores embarcados. Com ela é possível criar, editar e depurar

programas. Os softwares desenvolvidos podem ser executados ou depurados na

arquitetura que foi projetada através do Quartus II ou até mesmo por meio de

simulação no próprio computador. O programa é transferido serialmente para a FPGA

através de um cabo chamado JTAG.

O Nios II IDE é baseado principalmente no Eclipse C/C++ Development

Tools (CDT) Project. Portanto, é possível escrever softwares para programas

embarcados (firmware) utilizando as linguagens de programação C e C++. Na Figura

21 tem-se uma imagem desse ambiente de desenvolvimento.

Figura 21 - Nios II IDE

Através do Nios II IDE será escrito o firmware que integrará a arquitetura com o

Software. Ele controlará dispositivos, receberá os parâmetros iniciais e enviará

serialmente as soluções que serão encontradas a cada geração.

Page 51: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

51

7. TESTES E RESULTADOS

Como o projeto pode ser dividido nos três principais blocos (software, firmware e

hardware) cada um deles foi testado individualmente conforme foram desenvolvidos.

Na primeira etapa, o hardware do sistema foi validado através de simulações feitas

no ambiente de desenvolvimento Quartus II. Entretanto, os resultados nesse modo de

simulação mostraram apenas que o AG produzia os cromossomos como esperado,

mas, a complexidade do problema e o tempo necessário de simulação impossibilitaram

as traduções manuais dos diversos cromossomos que eram fornecidos.

Na segunda etapa, o firmware foi submetido a testes. Recebendo dados via serial,

escrevendo nos devidos registros e endereços de hardware. Devolvendo os sinais pela

serial. Controlando dispositivos como leds, display de sete segmentos e principalmente

o CORE. O firmware funcionou corretamente, ativando os controles como esperado.

Na terceira etapa, o software foi validado. Na maioria dos testes participaram

firmware e software. Para assegurar do funcionamento do software neste ponto, foi

construído um software embarcado que emulava o funcionamento do CORE, isolando

dessa forma o hardware CORE dos testes. O software recebeu os cromossomos e os

interpretou.

Na quarta etapa, faltava validar o sistema completo. Parte desse teste já havia sido

realizada em outras ocasiões. No entanto, o CORE não executava todas as suas

operações. Por exemplo: todo o sistema foi simulado com apenas algumas unidades

do CORE, responsáveis por gerar os cromossomos, realizar seleção, cruzamento e

retornar um melhor pré-estabelecido. Isso foi feito quando se tentava validar

comunicação e não o funcionamento e por isso justificava-se desligar varias outras

unidades funcionais do CORE simplificando seu funcionamento e validando a

comunicação de todo o sistema. De qualquer forma apresentava bons sinais de seu

funcionamento. Porém, quando de fato todo o sistema foi unido e submetido aos testes,

o hardware não funcionara. Após investigar a fonte do problema, foi descoberto que o

núcleo do CORE apresentava-se fora da conformidade, não realizando suas funções

na seqüência de operações programadas, perdido. Devido a suspeita de uma

freqüência de operação muito alta, seu clock principal foi reduzido de 50 Mhz para 20

MHz, mas, ainda assim, não funcionou corretamente. O problema apresentado ocorre

na transição de estados, por diversos momentos o hardware muda para estados

Page 52: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

52

incorretos e dessa forma não chegava até o estado que permite o envio de um novo

cromossomo para o software.

O problema ainda não fora corrigido, mas restam diversos testes que ainda

precisam ser executados. Desvios na máquina de estados do CORE, por exemplo,

podem servir para validar as transições. Redução de lógica total do dispositivo já que

esse está ocupando muitos elementos lógicos. Alterar a freqüência de operação e

verificar onde são os caminhos críticos dos sinais.

Page 53: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

53

8. CONCLUSÃO

Já na primeira etapa de testes, (com o hardware) percebeu-se a necessidade de

uma interface de comunicação para avaliar o funcionamento do projeto, devido o tempo

necessário em simulações e a própria complexidade de interpretar os cromossomos

era inviável tal prática.

O software embarcado funcionou aparentemente muito bem. Com grande

desempenho, não apresentou nem problemas de comunicação com a interface serial.

Ativa cada unidade de hardware como demandado.

O software principal que faz a interface do projeto com o usuário ainda pode ser

melhorado, mas, seu funcionamento está de acordo com o necessário. Envia os

parâmetros, recebe os cromossomos sempre que possíveis, interpreta e exibe ao

usuário junto com os gráficos.

Todos os testes sugeridos para correção do problema requerem tempo. Vale

lembrar que cada compilação demora aproximadamente doze minutos somente para o

CORE. Alguns dos testes requerem principalmente o kit de desenvolvimento.

Com esse projeto percebe-se o potencial que a computação reconfigurável oferece

no desenvolvimento de sistemas embarcados desde os mais simples aos mais

complexos.

Page 54: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

54

9. REFERÊNCIAS

ALTERA CORPORATION, Stratix Device Handbook disponível na WWW por http://www.altera.com/literature/hb/stx/stratix_handbook.pdf (pesquisa realizada em 01 de abril de 2006). ALTERA CORPORATION, Introduction to Quartus II. Disponível na WWW por www.altera.com/literature/manual/intro_to_quartus2.pdf (pesquisa realizada em 02 de abril de 2006). ALTERA CORPORATION, Quartus II Development Software Handbook v5.1 (Complete Five-Volume Set) disponível na WWW por http://www.altera.com/literature/hb/qts/quartusii_handbook.pdf (pesquisa realizada em 01 de abril de 2006). ZEIDMAN, Introduction to CPLD and FPGA Design disponível na WWW por www.pldworld.com/html/ technote/intro.cpld.fpga.design.pdf (pesquisa realizada em 01 de abril de 2006). BANZHAF, W., et al. Genetic programming: an introduction. Morgan Kaufmann, 1998. DONGARRA, J., et al. Sourcebook of parallel computing. San Francisco-USA: Morgan Kaufmann Publishers, 2003. A. DEHON. Reconfigurable Architecture for General-Purpose Computing, Massachusetts Institute of Technology, 1996. FERLIN, E.P. Avaliação de Métodos de Paralelização Automática. Dissertação (Mestrado em Física Computacional), Instituto de Física de São Carlos, USP, São Carlos-SP, 1997. FERLIN, E.P. O Processo de paralelização automática de programas seqüenciais em programas paralelos. In: IV Simpósio de Pesquisa e Extensão em Tecnologia. Anais ... Natal, 1998, p. 188-190. FERLIN, E.P. O Avanço tecnológico dos processadores e sua utilização pelo software. Revista “da Vinci” , V.1, n. 1. Curitiba: UnicenP, 2004, p. 43-60. HENNESSY, J.L., PATTERSON, D.A. Arquitetura de computadores: uma abordagem quantitativa . 3. ed. Rio de Janeiro: Campus, 2003. ITO, S.A., CARRO, L. A comparison of microcontrollers targeted to FPGA-based embedded applications. In: IEEE 13th Symposium on Integrated Circuits and Systems Design. Proceedings … 2000, p. 397–402. LOPES, H. S. Algoritmos Genéticos em Projetos de Engenharia: Aplicações e Perspectivas Futuras. In: IV Simpósio Brasileiro de Automação Inteligente. Anais ... 1999, p. 64–74. MITCHELL, M. An introduction to genetic algorithms. Cambridge: MIT Press. 207p, 1997. SILVA, P.A. Tutorial Genetic Algorithms. Learning and Nonlinear Models. Revista da Sociedade Brasileira de Redes Neurais. nº 1, vol 1., 2002, p. 45–60.

Page 55: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

55

TOCCI, R. J., WIDMER, N.S. Sistemas digitais: princípios e Aplicação. 8. ed. São Paulo: Pearson, 2003. VEMURI, R., RANDOLPH, E. Configurable computing: technology and applications. IEEE Computer Magazine, v. 33, n. 4, 2000, p. 39–40.

Page 56: Interface para Arquitetura Paralela Reconfigurável ... · TERMO DE APROVAÇÃO Hamon Veloso da Silva Interface para Arquitetura Paralela Reconfigurável Aplicada a Algoritmos Genéticos

56

ANEXOS

Anexo A – Cronograma Anexo B – Arquitetura Anexo C – Telas do Sistema Anexo D – Artigo Anexo E – Manual do Usuário Anexo F – Manual Técnico