Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado...

112
Pós-Graduação em Ciência da Computação EVOLUÇÃO DIFERENCIAL APLICADA AO PROBLEMA DE EXPLORAÇÃO DE ARQUITETURAS DE MEMÓRIA CACHE VISANDO DESEMPENHO E REDUÇÃO DE ENERGIAPor Leonardo José Corrêa Nunes Dissertação de Mestrado Universidade Federal de Pernambuco [email protected] www.cin.ufpe.br/~posgraduacao RECIFE, AGOSTO/2013

Transcript of Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado...

Page 1: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

Pós-Graduação em Ciência da Computação

“EVOLUÇÃO DIFERENCIAL APLICADA AO PROBLEMA DE

EXPLORAÇÃO DE ARQUITETURAS DE MEMÓRIA CACHE

VISANDO DESEMPENHO E REDUÇÃO DE ENERGIA”

Por

Leonardo José Corrêa Nunes

Dissertação de Mestrado

Universidade Federal de Pernambuco

[email protected]

www.cin.ufpe.br/~posgraduacao

RECIFE, AGOSTO/2013

Page 2: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE INFORMÁTICA

PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

LEONARDO JOSÉ CORRÊA NUNES

“EVOLUÇÃO DIFERENCIAL APLICADA AO PROBLEMA DE EXPLORAÇÃO

DE ARQUITETURAS DE MEMÓRIA CACHE VISANDO DESEMPENHO E

REDUÇÃO DE ENERGIA”

ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA DA COMPUTAÇÃO.

ORIENTADOR: ABEL GUILHERMINO DA SILVA FILHO

RECIFE, AGOSTO/2013

Page 3: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.
Page 4: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

Dissertação de Mestrado apresentada por Leonardo José Corrêa Nunes à Pós-Graduação em

Ciência da Computação do Centro de Informática da Universidade Federal de Pernambuco, sob

o título “Evolução Diferencial Aplicada ao Problema de Exploração de Arquiteturas de

Memória visando Desempenho e Redução de Energia” orientada pelo Prof. Abel

Guilhermino da Silva Filho e aprovada pela Banca Examinadora formada pelos professores:

______________________________________________

Prof. Manoel Eusebio de Lima

Centro de Informática / UFPE

______________________________________________

Prof. Wellington Pinheiro dos Santos

Departamento de Engenharia de Biomédica / UFPE

_______________________________________________

Prof. Abel Guilhermino da Silva Filho

Centro de Informática / UFPE

Visto e permitida a impressão.

Recife, 29 de agosto de 2013

___________________________________________________

Profa. Edna Natividade da Silva Barros Coordenadora da Pós-Graduação em Ciência da Computação do

Centro de Informática da Universidade Federal de Pernambuco.

Page 5: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

Dedicatória

Dedico àqueles que mais incentivaram e me ajudaram durante toda a realização deste

trabalho, minha família

Eliane Corrêa Nunes, Joaquim Nunes Filho e Mariana Corrêa Nunes.

Page 6: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

vi

Agradecimentos

Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de

sucesso na minha vida profissional.

Agradeço ao meu orientador Prof. Dr. Abel Guilhermino da Silva Filho por ter me dado a

oportunidade de realizar este trabalho, por ter me orientado de uma forma bastante paciente,

demonstrando sempre entusiasmo a cada passo dado e me incentivando nos momentos de

dificuldade.

Agradeço aos meus pais e a minha irmã por todo o apoio dado ao longo deste trabalho e

por terem me ajudado sabiamente em cada momento de decisão da minha carreira

profissional.

Agradeço a professora Edna Barros, pessoa que tenho profunda admiração, não só pelo

trabalho que ela realiza no Centro de Informática, mas pelo suporte que ela me deu durante a

graduação, por ter me incentivado a ingressar no mestrado acadêmico no CIn, por ter me dado

a oportunidade de ter trabalhado no LINCS, lugar que me permitiu realizar este trabalho e que

me permitiu crescer rapidamente na vida profissional.

Agradeço a todos os meus amigos, em especial a Gustavo, Raso, Dani, Adelma, Luciano,

Bopp, Milena, Fornari, Bruno, Carol, Aline, George, Marcus e Igino que me inspiraram e me

ajudaram nesta jornada.

Finalmente, agradeço a minha namorada, Silvana, que esteve comigo e me deu bastante

força na reta final deste trabalho.

Page 7: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

vii

Resumo

Impulsionado pelo crescimento do mercado de dispositivos móveis, diversos estudos

têm sido realizados com o intuito de diminuir a energia consumida destes dispositivos. No

entanto, aplicações que exigem alto poder de processamento estão sendo cada vez mais

utilizadas nestes tipos de dispositivos. Logo, encontrar o melhor compromisso entre capacidade

de processamento e energia consumida tem se tornado um desafio em projetos de hardware.

Este trabalho apresenta uma nova metodologia para avaliar a energia consumida e o

desempenho de hierarquias de memória com três níveis de cache. Adicionalmente, uma

adaptação do algoritmo de evolução diferencial para otimização multiobjetivo no domínio

discreto é proposta para o problema de exploração de hierarquias de memória cache, visando

reduzir a energia consumida e aumentar o desempenho para processar uma aplicação

embarcada. A exploração de arquiteturas foi baseada em ajustes de parâmetros das caches

presentes em hierarquias compostas por três níveis de memórias cache. Um modelo de

memória DDR3L foi adotado para simular a memória principal, e um modelo de memória cache

recente baseado na tecnologia de transistores de 32n foi utilizado. Para a realização dos

experimentos, o algoritmo proposto foi aplicado a nove diferentes aplicações dos benchmarks

Mibench e MediaBenchII. Além disto, o desempenho da técnica proposta foi comparada com as

técnicas de otimização SPEA2 e NSGAII. As métricas selecionadas para comparar a qualidade

das frentes de Pareto encontrados por cada um destes algoritmos foram os indicadores de

hipervolume e de distância generacional. Os resultados mostraram que a estratégia de

otimização proposta, baseada no algoritmo de evolução diferencial, aplicada ao problema de

exploração de hierarquias de memória, obteve melhores resultados para ambos os indicadores,

alcançando uma melhoria de 100% e 78% dos casos estudados para ambas as métricas de

hipervolume e distância generacional.

Palavras-chave: exploração de memória; cache L3; evolução diferencial; otimização

multiobjetivo.

Page 8: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

viii

Abstract

Driven by the growth of the mobile devices market, several studies were performed in

order to reduce the energy consumption of these devices. However, applications that require

high performance are being increasingly used in these types of devices. Then, to find the best

compromise between performance and energy consumption has become a big challenger in

hardware projects. This work presents a new methodology to evaluate the energy consumption

and performance for the three level cache memory hierarchies. Furthermore, an improved

differential evolution (DE) algorithm for multi-objective optimization in the discrete domain is

proposed to a cache memory hierarchy exploration problem, aiming to reduce the energy

consumption and to increase the performance to process an embedded application. The

architecture exploration was based on cache parameters adjustments inserted on memory

hierarchies composed of three levels of cache memory. A model of DDR3L memory was

adopted to simulate the main memory and a recent cache memory model based on 32 nm

transistor technology was used. In these experiments, the proposed algorithm was applied to

nine different applications from the MiBench and the MediaBenchII suites. Furthermore, the

performance of the proposed strategy was compared with those of SPEA2 and NSGAII

optimization mechanisms. The metrics selected to compare the quality of the Pareto front

found for each of those algorithms were the hypervolume and the generational distance. The

results show that the proposed strategy based on DE optimization algorithm applied to memory

hierarchy exploration problem obtained better results for both indicators, achieving

improvements in 100% and 78% of cases in both metrics, hypervolume and the generational

distance.

Keywords: memory exploration; L3 cache; differential evolution; multi-objective optimization.

Page 9: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

ix

Sumário

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

1.1 MOTIVAÇÃO E CONTEXTO ..................................................................................................................................... 2 1.2 OBJETIVO GERAL ................................................................................................................................................. 3 1.3 OBJETIVOS ESPECÍFICOS ........................................................................................................................................ 3 1.4 ESTRUTURA DA DISSERTAÇÃO ................................................................................................................................. 4

2 HIERARQUIA DE MEMÓRIA .......................................................................................................................... 5

2.1 INTRODUÇÃO ...................................................................................................................................................... 6 2.2 MEMÓRIA CACHE ................................................................................................................................................ 8 2.3 ESTRUTURA DE UMA CACHE ................................................................................................................................... 8 2.4 ELEMENTOS DE PROJETO DA CACHE ...................................................................................................................... 10

2.4.1 Tamanho da Linha ............................................................................................................................... 10 2.4.2 Tamanho da Cache .............................................................................................................................. 10 2.4.3 Associatividade .................................................................................................................................... 11 2.4.4 Número de memórias cache ................................................................................................................ 13

2.5 SIMPLESCALAR .................................................................................................................................................. 14 2.6 CACTI ............................................................................................................................................................. 15 2.7 SIMULADOR DE MEMÓRIA MICRON ...................................................................................................................... 16

3 PROBLEMAS DE OTIMIZAÇÃO MULTI-OBJETIVO ......................................................................................... 17

3.1 CONCEITOS BÁSICOS .......................................................................................................................................... 18 3.1.1 Classes de Problemas .......................................................................................................................... 18 3.1.2 Problemas de Otimização .................................................................................................................... 19

3.1.2.1 Problemas de Otimização Mono-objetivo .................................................................................................. 20 3.1.2.2 Problemas de Otimização Multiobjetivo .................................................................................................... 20

3.1.3 Dominância ......................................................................................................................................... 21 3.1.4 Pareto .................................................................................................................................................. 21

3.2 ALGORITMOS EVOLUCIONÁRIOS............................................................................................................................ 22 3.2.1 Componentes de Algoritmos Evolucionários ....................................................................................... 23

3.2.1.1 Indivíduo ..................................................................................................................................................... 23 3.2.1.2 Função de Aptidão...................................................................................................................................... 23 3.2.1.3 População ................................................................................................................................................... 23 3.2.1.4 Mecanismo de Seleção de Pais ................................................................................................................... 24 3.2.1.5 Operadores de Variação ............................................................................................................................. 24 3.2.1.6 Mecanismo de Seleção de Sobreviventes .................................................................................................. 25

3.2.2 Algoritmos Genéticos .......................................................................................................................... 25 3.2.3 Estratégias Evolucionárias .................................................................................................................. 26 3.2.4 Evolução Diferencial ............................................................................................................................ 28

3.3 TÉCNICAS DE OTIMIZAÇÃO MULTI-OBJETIVOS ......................................................................................................... 30 3.3.1 NSGAII ................................................................................................................................................. 31 3.3.2 SPEA2 .................................................................................................................................................. 33

3.4 MÉTRICAS DE AVALIAÇÃO .................................................................................................................................... 35 3.4.1 Distância Generacional ....................................................................................................................... 36 3.4.2 Hipervolume ........................................................................................................................................ 37 3.4.3 Cobertura ............................................................................................................................................ 38

4 TRABALHOS RELACIONADOS ....................................................................................................................... 39

4.1 ESTUDO REALIZADO ........................................................................................................................................... 40 4.2 CONCLUSÃO ..................................................................................................................................................... 43

5 METODOLOGIA PROPOSTA ......................................................................................................................... 44

5.1 INTRODUÇÃO .................................................................................................................................................... 45 5.2 DEFINIÇÃO DO MODELO DE CÁLCULO DE CICLOS E ENERGIA TOTAL ............................................................................. 46

5.2.1 Cálculo do Número Total de Ciclos ...................................................................................................... 46 5.2.2 Cálculo da Energia Total Consumida ................................................................................................... 48

Page 10: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

x

5.3 ADAPTAÇÃO DE FERRAMENTAS ............................................................................................................................. 50 5.3.1 Adaptação do Sim-Cache .................................................................................................................... 51 5.3.2 Adaptação do CACT 6.5 ....................................................................................................................... 52 5.3.3 Adaptação do Simulador de Memória Principal .................................................................................. 52

5.4 DEFINIÇÃO DO AMBIENTE EXPERIMENTAL ............................................................................................................... 52 5.4.1 Especificação da Arquitetura............................................................................................................... 53 5.4.2 Benchmarks ......................................................................................................................................... 54 5.4.3 Extração dos Parâmetros de Desempenho .......................................................................................... 55 5.4.4 Extração dos Parâmetros do Modelo de Energia ................................................................................ 57 5.4.5 Mecanismo de Cálculo de Energia e Ciclos Total ................................................................................. 60

5.5 MECANISMO DE EXPLORAÇÃO .............................................................................................................................. 61 5.6 INTEGRAÇÃO DE FERRAMENTAS ............................................................................................................................ 62 5.7 SIMULAÇÃO DOS ALGORITMOS DE OTIMIZAÇÃO....................................................................................................... 64

6 EVOLUÇÃO DIFERENCIAL APLICADA AO PROBLEMA DE EXPLORAÇÃO ........................................................ 67

6.1 INTRODUÇÃO .................................................................................................................................................... 68 6.2 MAPEAMENTO DAS SOLUÇÕES ............................................................................................................................. 68 6.3 MAPEAMENTO DO ESPAÇO DE EXPLORAÇÃO ........................................................................................................... 69 6.4 EVOLUÇÃO DIFERENCIAL APLICADA A EXPLORAÇÃO DE ARQUITETURAS ........................................................................ 70 6.5 EXEMPLO DE EXECUÇÃO DO MECANISMO DE OTIMIZAÇÃO PROPOSTO ......................................................................... 73

6.5.1 Inicialização ......................................................................................................................................... 73 6.5.2 Seleção de Primeiro Indivíduo ............................................................................................................. 74 6.5.3 Seleção de Pais .................................................................................................................................... 74 6.5.4 Mutação .............................................................................................................................................. 75 6.5.5 Recombinação ..................................................................................................................................... 77 6.5.6 Avaliação ............................................................................................................................................. 77 6.5.7 Seleção de Sobreviventes .................................................................................................................... 79

7 RESULTADOS ............................................................................................................................................... 81

7.1 INTRODUÇÃO .................................................................................................................................................... 82 7.2 AMBIENTE DE SIMULAÇÃO ................................................................................................................................... 82 7.3 ANÁLISE DE ABORDAGEM PROPOSTA ..................................................................................................................... 83

7.3.1 Impacto do Tamanho da População Inicial ......................................................................................... 83 7.3.2 Convergência das Soluções ................................................................................................................. 86 7.3.3 Desempenho da Abordagem Proposta................................................................................................ 87

7.4 COMPARAÇÃO COM OUTROS MECANISMOS DE OTIMIZAÇÃO ..................................................................................... 90

8 CONCLUSÕES E TRABALHOS FUTUROS ........................................................................................................ 94

8.1 CONSIDERAÇÕES FINAIS E CONTRIBUIÇÕES.............................................................................................................. 95 8.2 TRABALHOS FUTUROS ......................................................................................................................................... 96

REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................................................................. 97

Page 11: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

xi

Lista de Figuras FIGURA 1. HIERARQUIA DE MEMÓRIA TRADICIONAL .................................................................................................................. 7 FIGURA 2. ESTRUTURAS DE MEMÓRIAS: (A) CACHE; (B) MEMÓRIA PRINCIPAL ................................................................................. 9 FIGURA 3 CACHE COM MAPEAMENTO ASSOCIATIVO COM CONJUNTOS ..................................................................................... 11 FIGURA 4. ARQUITETURA DE UMA CACHE COM MAPEAMENTO ASSOCIATIVO POR CONJUNTO DE K LINHAS .......................................... 12 FIGURA 5. ORGANIZAÇÃO DE MEMÓRIA CACHE COM TRÊS NÍVEIS .............................................................................................. 14 FIGURA 6. CLASSIFICAÇÃO DE PROBLEMAS EM ANÁLISE DE SISTEMAS .......................................................................................... 18 FIGURA 7. DIAGRAMA DE FLUXO DO PRINCÍPIO DE FUNCIONAMENTO DE UM AG .......................................................................... 26 FIGURA 8. OPERADOR DE CROWNDING DISTANCE ................................................................................................................... 32 FIGURA 9. PROCESSO DE ORDENAÇÃO UTILIZADO NO NSGAII .................................................................................................. 32 FIGURA 10. COMPARAÇÃO ENTRE ALGORITMOS: (A) POSSÍVEL CONCLUIR QUAL O MELHOR ALGORITMO E (B) DIFÍCIL DE DECIDIR QUAL O

MELHOR ALGORITMO ............................................................................................................................................... 35 FIGURA 11. INDICADOR DE DISTÂNCIA GENERACIONAL ............................................................................................................ 36 FIGURA 12. INDICADOR HIPERVOLUME ................................................................................................................................ 37 FIGURA 13. INDICADOR DE COBERTURA ............................................................................................................................... 38 FIGURA 14. FLUXO DE DESENVOLVIMENTO DO TRABALHO ....................................................................................................... 45 FIGURA 15. EXEMPLO DE SISTEMA BASEADO EM PROCESSOR MIPS COM HIERARQUIA DE MEMÓRIA ................................................ 46 FIGURA 16. FLUXO DE DESENVOLVIMENTO DA EXPANSÃO DO SIM-CACHE .................................................................................... 51 FIGURA 17. FLUXO PARA EXTRAÇÃO DOS PARÂMETROS DE DESEMPENHO DE UMA ARQUITETURA ..................................................... 55 FIGURA 18. FLUXO PARA EXTRAÇÃO DOS PARÂMETROS DE ENERGIA ........................................................................................... 58 FIGURA 19. PROCESSO DO MECANISMO DE CÁLCULO DE ENERGIA E CICLOS TOTAL......................................................................... 60 FIGURA 20. FLUXO DO MECANISMO DE EXPLORAÇÃO .............................................................................................................. 61 FIGURA 21. ESTRUTURA DO CAETO .................................................................................................................................... 62 FIGURA 22. PROCESSO DE SIMULAÇÃO EXAUSTIVA .................................................................................................................. 64 FIGURA 23. PROCESSO DE SIMULAÇÃO DO ALGORITMO DE OTIMIZAÇÃO PROPOSTO ...................................................................... 65 FIGURA 24. REPRESENTAÇÃO DE UM INDIVÍDUO .................................................................................................................... 68 FIGURA 25. ETAPAS DE UM CICLO DO MECANISMO DE OTIMIZAÇÃO PROPOSTO ............................................................................ 73 FIGURA 26. POPULAÇÃO INICIAL ......................................................................................................................................... 74 FIGURA 27. INDIVÍDUO SELECIONADO .................................................................................................................................. 74 FIGURA 28. ESPAÇO OBJETIVO DA POPULAÇÃO INICIAL ............................................................................................................ 75 FIGURA 29. VETOR DIFERENCIAL ......................................................................................................................................... 76 FIGURA 30. VETOR MUTADO .............................................................................................................................................. 76 FIGURA 31. INDIVÍDUO RESULTANTE DA MUTAÇÃO ................................................................................................................. 76 FIGURA 32. INDIVÍDUO GERADO PELA RECOMBINAÇÃO ............................................................................................................ 77 FIGURA 33. COMPARAÇÃO DA SOLUÇÃO GERADA COM OUTROS INDIVÍDUOS ............................................................................... 78 FIGURA 34. ORDENAÇÃO DOS INDIVÍDUOS BASEADO NOS VALORES DOS OBJETIVOS....................................................................... 79 FIGURA 35. VALOR DE CROWDING DISTANCE PARA CADA OBJETIVO ............................................................................................ 80 FIGURA 36. FRONT ORDENADO POR VALOR DE CROWDING DISTANCE ......................................................................................... 80 FIGURA 37. NÚMERO DE SIMULAÇÕES X GERAÇÕES, CONSIDERANDO DIFERENTES POPULAÇÕES INICIAIS (10, 20, 30, 40, 50 INDIVÍDUOS)

E APLICAÇÃO H263ENC ............................................................................................................................................ 83 FIGURA 38. EVOLUÇÃO DO MENOR VALOR DA ENERGIA CONSUMIDA POR UMA POPULAÇÃO EM RELAÇÃO AO NÚMERO DA GERAÇÃO PARA A

APLICAÇÃO H263ENC .............................................................................................................................................. 84 FIGURA 39. EVOLUÇÃO DO MENOR VALOR TOTAL DE CICLOS DE UMA POPULAÇÃO EM RELAÇÃO AO NÚMERO DA GERAÇÃO PARA A

APLICAÇÃO H263ENC .............................................................................................................................................. 85 FIGURA 40. EVOLUÇÃO DO PARETO EM FUNÇÃO DO NÚMERO DE GERAÇÕES PARA A APLICAÇÃO H263ENC E POPULAÇÃO INICIAL DE 20

INDIVÍDUOS ........................................................................................................................................................... 86 FIGURA 41. EDDE X SIMULAÇÃO EXAUSTIVA PARA AS APLICAÇÕES DOS BENCHMARKS MEDIABENCHII E MIBENCH. (A) BITCOUNT. (B)

CRC. (C) DIJKSTRA. (D) DJPEG. (E) H263ENC. (F) MPEG2DEC. (G) MPEG2ENC. (H) SHA. (I) SUSAN. ................................ 88 FIGURA 42. NÚMERO DE SIMULAÇÕES NECESSÁRIAS PARA CADA TÉCNICA, PARA CADA APLICAÇÃO ................................................... 91

Page 12: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

xii

Lista de Tabelas TABELA 1. PARÂMETROS DA ARQUITETURA DE CONTROLE DE UMA CACHE ................................................................................... 12 TABELA 2. COMPARAÇÃO DAS TÉCNICAS DE OTIMIZAÇÃO ESTUDADAS. ........................................................................................ 43 TABELA 3. TEMPO DE ACERTOS DE CADA NÍVEL DE CACHE ......................................................................................................... 47 TABELA 4. VALORES DE PENALIDADE POR ACESSO A MEMÓRIA PRINCIPAL .................................................................................... 48 TABELA 5. ESPAÇO DE EXPLORAÇÃO DOS PARÂMETROS DA HIERARQUIA DE MEMÓRIA CACHE .......................................................... 53 TABELA 6. APLICAÇÕES SELECIONADAS DO MEDIABENCHII ...................................................................................................... 54 TABELA 7. APLICAÇÕES SELECIONADAS DO MIBENCH .............................................................................................................. 55 TABELA 8. PARÂMETROS DE CONFIGURAÇÃO DE UMA CACHE .................................................................................................... 56 TABELA 9. PARÂMETROS DE ESPECIFICAÇÃO DA MEMÓRIA PRINCIPAL ......................................................................................... 59 TABELA 10. AVALIAÇÃO DA POPULAÇÃO INICIAL ..................................................................................................................... 74 TABELA 11. VALORES DE ENERGIA E CICLOS PARA O INDIVÍDUO GERADO E O INDIVÍDUO ALVO.......................................................... 78 TABELA 12. TEMPO DE EXPLORAÇÃO EXAUSTIVA X TEMPO DE EXPLORAÇÃO OTIMIZADA ................................................................. 89 TABELA 13. RESULTADOS DA MÉTRICA DE HIPERVOLUME ......................................................................................................... 92 TABELA 14. RESULTADOS DA MÉTRICA DE DISTÂNCIA GENERACIONAL ......................................................................................... 93

Page 13: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

1

Capítulo

1 1 Introdução

Este capítulo tem como objetivo apresentar as principais motivações para realização

deste trabalho, assim como a contextualização do problema atual na exploração de

configurações de arquiteturas de memórias caches em até três níveis de hierarquia visando à

redução de energia e o aumento do desempenho de sistemas embarcados. Em seguida são

apresentados os objetivos gerais e específicos da dissertação. Por fim, será apresentada a

estrutura geral do documento.

Page 14: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

2

1.1 Motivação e Contexto

Sistemas operacionais complexos, jogos 3D, gravadores e reprodutores de vídeo em

alta definição são exemplos de sistemas que exigem alto poder de processamento e que estão

cada vez mais presentes no mercado de sistemas embarcados, principalmente através de

smartphones e tablets. Aumentar a capacidade de processamento, no entanto, significa

diminuir a vida útil da bateria e aumentar os custos de refrigeração. Logo, encontrar o

equilíbrio entre consumo de energia e desempenho tem sido o principal problema em projetos

de sistemas embarcados [1]. Portanto, ferramentas e técnicas que visam otimizar o consumo

de energia e o desempenho tendem a ser cada vez mais visadas pelos projetistas de hardware

que lidam com este tipo de sistemas.

Estudos têm mostrado que a memória cache é responsável pelo consumo de até

metade da energia total utilizada por um processador [2], o que a torna ela a principal

contribuinte da energia consumida pelo sistema. Logo, a memória cache tem sido o principal

alvo das técnicas de redução de energia em sistemas embarcados. A escolha da hierarquia de

memória cache é, portanto, o principal exemplo da busca para encontrar o equilíbrio entre

consumo de energia e desempenho. Memórias caches grandes tendem a reduzir o tempo para

o tráfego de informações entre a memória principal e o processador, o que proporciona um

aumento no desempenho do sistema. Por outro lado, como a tecnologia de memória cache usa

muitos transistores para armazenar a informação, utilizar caches grandes implica em dissipar

bastante energia.

Neste trabalho, será apresentado um novo mecanismo de exploração de configurações

de memória cache em hierarquias com até três níveis, assim como uma nova abordagem para

explorar estas hierarquias baseada em um algoritmo evolucionário multiobjetivo chamado

Evolução Diferencial, visando reduzir o consumo de energia e aumentar o desempenho de

sistemas embarcados. Para este trabalho, serão consideradas configurações de hierarquias de

memória cache com três níveis, sendo o primeiro nível com a cache de dados e instruções

separadas e o segundo e terceiro nível com caches unificadas.

Page 15: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

3

1.2 Objetivo Geral

O objetivo principal deste trabalho é apresentar uma metodologia denominada EDDM

para estimar o desempenho e a energia total consumida de configurações de memórias caches

considerando hierarquias com os três níveis baseada em evolução diferencial. Neste trabalho,

esta metodologia será aplicada em problemas de exploração de configurações de memórias

caches visando otimizar a relação entre energia consumida e desempenho em aplicações

específicas de sistemas embarcados.

1.3 Objetivos Específicos

Para alcançar o objetivo principal deste trabalho, será necessário realizar os seguintes

objetivos específicos:

1. Estudar ferramentas que possibilitem estimar o consumo de energia de

memórias cache com tecnologia presente no estado da arte da fabricação

deste tipo de componente;

2. Propor metodologia para calcular a energia total consumida e o desempenho

de configurações de hierarquias de memória com três níveis de cache, sendo o

primeiro nível com caches separadas para dados e instruções, e o segundo e o

terceiro nível com caches unificadas;

3. Estudar algoritmos de otimização multiobjetivo e métricas comparativas destes

algoritmos;

4. Adaptar os algoritmos de otimização estudados ao problema de exploração de

configurações de memória cache com três níveis de hierarquia;

5. Estudar benchmarks que reúnam aplicações simples e complexas utilizadas em

sistemas embarcados;

6. Estudar configurações de memórias caches com três níveis disponíveis no

mercado para definir o tamanho do espaço de exploração que será considerado

neste trabalho;

Page 16: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

4

7. Realizar simulações das diferentes técnicas de otimização para as aplicações e

espaço de exploração definidos;

8. Fazer análise comparativa dos resultados das simulações.

1.4 Estrutura da Dissertação

Esta dissertação encontra-se estruturada da seguinte forma: no capítulo 2 são

apresentados os conceitos relacionados com hierarquias de memória, descrevendo seus

componentes e apresentando as ferramentas de simulação utilizadas para simular o

comportamento da hierarquia. No capítulo 3 são apresentados os conceitos relacionados a

problemas multiobjetivo, descrevendo também os algoritmos mais utilizados para resolver este

tipo de problema. No capítulo 4 é feito o estudo do estado da arte associado ao problema de

exploração de arquiteturas de sistemas visando redução de energia e desempenho. No capítulo

5 é apresentada a metodologia de desenvolvimento deste trabalho. Cada etapa da metodologia

é detalhada em uma subseção deste capítulo. No capítulo 6, um algoritmo de otimização

baseado em evolução diferencial é apresentado e mapeado no problema de exploração de

configurações de hierarquias de memória com três níveis de cache. No capítulo 7 são

apresentados os resultados das simulações do algoritmo de otimização proposto, assim como é

feita uma comparação dele com outros algoritmos já aplicados para este mesmo problema de

exploração de arquiteturas em outros trabalhos. No capítulo 8 são apresentadas as conclusões

e trabalhos futuros. E finalmente, há uma lista dos trabalhos que serviram de base para o

desenvolvimento desta dissertação.

Page 17: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

5

Capítulo

2

2 Hierarquia de Memória

Este capítulo apresenta uma visão geral sobre a importância de hierarquias de

memórias e caches em sistemas computacionais, assim como relata a fundamentação teórica

relacionada a este tipo de memória.

Page 18: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

6

2.1 Introdução

A velocidade de processamento de um sistema computacional não depende

inteiramente da velocidade do processador. Não adianta ter um processador rápido se ele não

receber as informações no mesmo ritmo do seu processamento. O componente do sistema que

é responsável tanto por fornecer estas informações ao processador, quanto por armazenar o

resultado do processamento é chamado de memória. A velocidade de um sistema, portanto, é

definida pelo conjunto composto por processador e memórias. Entretanto, a velocidade de

acesso de uma memória não é o único fator importante para o cálculo da velocidade do

sistema. É preciso, também, levar em consideração a capacidade de armazenamento desta

memória. No entanto, devido a limitações da tecnologia utilizada na fabricação de memórias,

aumentar o seu tamanho significa aumentar o seu tempo de acesso. A solução encontrada para

minimizar o impacto deste problema de objetivos conflitantes foi a criação da hierarquia de

memória.

Estruturar as informações do sistema em uma hierarquia de memória permite a

exploração do princípio da localidade, que ajuda a aumentar a velocidade com que as

informações chegam ao processador. Este princípio da localidade se subdivide em dois tipos:

localidade espacial e localidade temporal. O princípio da localidade espacial explora a ideia de

que os dados armazenados próximos ao dado que está sendo utilizado pelo processador têm

uma probabilidade maior de serem acessados em um futuro próximo. O outro princípio, da

localidade temporal, explora a ideia de que um dado utilizado recentemente pelo processador

tende a ser utilizado novamente dentro de um espaço de tempo curto. A hierarquia de

memória explora ambos os princípios alocando os dados que são mais acessados em memórias

mais rápidas e mais próximas ao processador, o que possibilita criar a ilusão de que o

processador pode acessar um grande espaço de armazenamento com uma velocidade de

acesso elevada. A Figura 1 ilustra uma hierarquia de memória tradicional composta por

registradores, três níveis de memória cache, memória principal, disco de estado sólido e disco

de estado magnético. Níveis mais altos na hierarquia de memória possuem maior velocidade de

acesso aos dados armazenados, maior custo por bit e menor capacidade de armazenamento.

Os níveis mais altos, portanto, possuem apenas as cópias das informações dos níveis mais

baixos que têm uma maior probabilidade de serem requisitadas pelo processador.

Page 19: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

7

Figura 1. Hierarquia de memória tradicional

Como as memórias dos níveis mais altos não podem armazenar todos os dados

requisitados pelo processador, elas precisam estabelecer uma troca intensa de informações

com os níveis mais baixos da hierarquia de memória. No momento que um bloco de dados é

solicitado para um nível mais baixo da hierarquia e este nível já tiver o bloco disponível, então é

dito que ocorreu um acerto (hit). Entretanto, caso o bloco de dados não seja encontrado no

nível procurado, é dito que houve uma falta (miss). Uma forma de medir o desempenho de

diferentes hierarquias de memória é analisando a taxa de faltas (miss rate). Esta taxa é a fração

de acessos à memória que resultaram em uma falta, ou seja, é número de faltas dividido pelo

número total de acessos. Outra forma de medir o desempenho é analisando a taxa de acerto

(hit rate), que pode ser calculada pelo número de acertos dividido pelo número total de

acessos. Na medida em que a capacidade de armazenamento da memória aumenta, a taxa de

acertos também aumenta. Portanto, os níveis mais altos na hierarquia possuem uma taxa de

acerto menor, pois têm uma capacidade de armazenamento menor. Então, tanto o número de

níveis da hierarquia de memória, quanto a configuração de cada nível influenciam diretamente

no desempenho de um sistema. Identificar qual a configuração ideal para o sistema exige

bastante esforço, devido ao grande número de configurações que podem existir. Para este

trabalho serão analisadas configurações de hierarquias de memória com três níveis cache. Nas

seções a seguir será apresentada uma revisão sobre os conceitos relacionados a memória

cache.

Registrador

Cache L1

Cache L2

Cache L3

Memória Principal

Disco de Estado Sólido

Disco Magnético

Page 20: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

8

2.2 Memória Cache

Cache é o nome dado para os níveis da hierarquia de memória que estão logo abaixo

dos registradores do processador. O objetivo da utilização deste tipo de memória é explorar o

princípio da localidade da hierarquia de memória. Para tanto, no caso da ocorrência de uma

falta gerada por uma requisição do processador, a memória cache requisita ao nível superior

não apenas a palavra referente à falta, mas um conjunto de dados com tamanho fixo, chamado

de bloco ou linha, que encapsula esta palavra. Portanto, para determinar o tempo de uma falta

em uma memória cache, é preciso saber qual a sua latência e sua largura de banda. A latência

determina o tempo para receber a primeira palavra do bloco, que normalmente é a palavra

requerida pelo processador, já a largura de banda determina o tempo de recepção do restante

do bloco. Então, para avaliar o desempenho da memória cache é fundamental conhecer a sua

estrutura e seus elementos de projetos, pois eles determinarão qual sua latência e sua largura

de banda e consequentemente, definirão como hierarquia de memória do sistema é capaz de

explorar os princípios da localidade espacial e temporal.

2.3 Estrutura de uma Cache

A memória cache armazena os dados da memória principal que são utilizados com

mais frequência, dessa forma ela permite aumentar o desempenho reduzindo o tempo de

acesso aos dados. A estrutura da memória cache, portanto, está diretamente relacionada com

a estrutura da memória principal. A Figura 2 apresenta as estruturas destes dois tipos de

memória. A memória principal é composta de até 2n palavras endereçáveis, onde cada palavra

tem um endereço único composto por n bits. Para fazer o mapeamento entre as memórias, a

memória principal pode ser dividida em blocos de tamanho fixo compostos por K palavras.

Logo, a memória principal possui blocos. A estrutura da memória cache, por sua

vez, é formada por m blocos chamados de linhas. Diferente do bloco da memória principal,

cada linha da cache é composta por K palavras com dados, mais alguns bits para rotular a linha,

um bit para controle e um bit para indicar quando a linha sofreu algum tipo de modificação

desde que foi carregada na cache. No entanto, o tamanho da linha de uma cache não inclui os

bits de rótulo nem de controle.

Page 21: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

9

Figura 2. Estruturas de memórias: (a) cache; (b) memória principal

Quando uma palavra de um bloco da memória principal é lida, o bloco acessado é

transferido para uma das linhas da memória cache. Como existem muito mais blocos do que

linhas de cache, uma linha não pode ficar unicamente dedicada para um bloco em particular.

Então cada linha inclui um rótulo para identificar que bloco em particular está sendo

armazenado. O valor deste rótulo é calculado a partir de um endereço da memória principal.

O fluxo de leitura de uma palavra é inicializado através de uma requisição do

processador, que gera um endereço de leitura da palavra. Este endereço é, então, comparado

com os rótulos da cache. Se ocorrer um acerto, ou seja, o endereço foi encontrado em um dos

rótulos da cache, a palavra é apanhada e enviada para o processador. Caso ocorra uma falta, o

bloco que contém a palavra é carregado na cache e a palavra é enviada para o processador. Em

algumas arquiteturas estas duas operações podem ocorrer em paralelo para aumentar o

desempenho.

Blocos Rótulo Nº da Linha

0

1

2

𝑪 − 𝟏

Tamanho do bloco (K Palavras)

Bits de controle

Endereço de memória

Bloco (K palavras)

Bloco

𝟐𝒏 − 𝟏

0

1

2

3

(a) Estrutura da memória cache

(b) Estrutura da memória principal

Page 22: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

10

2.4 Elementos de Projeto da Cache

Esta seção apresenta um resumo dos parâmetros de projeto de uma memória cache.

Embora haja um grande número de configurações de memórias cache, existem apenas alguns

elementos básicos de projeto que servem para classificar e diferenciar as arquiteturas de cache

quanto ao desempenho e consumo de energia. Para este trabalho, portanto, os principais

elementos de projeto de uma cache são: tamanho da linha, tamanho da cache, associatividade

e número de memórias cache.

2.4.1 Tamanho da Linha

O tamanho da linha de uma cache é considerado um dos principais parâmetros que

influenciam o desempenho e a energia consumida de uma cache, pois ele está diretamente

relacionado com a capacidade de exploração do princípio da localidade espacial. Quando um

programa que está sendo executado tem muita localidade espacial, então uma cache com linha

grande conseguiria diminuir a taxa de faltas. Entretanto, se o programa não possuir esta

característica, um tamanho de linha grande obriga a cache a buscar muitos dados que não são

necessários para preencher toda a linha. O resultado de se trabalhar com linhas grandes,

portanto, pode não só aumentar o tempo para carregar os blocos da memória principal, mas

também pode substituir dados mais importantes para execução da aplicação, o que aumentaria

o número de acessos à memória principal.

2.4.2 Tamanho da Cache

A decisão do tamanho da cache envolve três principais variáveis: custo, desempenho e

energia dissipada. Existem diversas razões para querer minimizar o tamanho da cache. As

caches grandes possuem um número grande de portas envolvidas no endereçamento da cache.

Portanto, caches grandes tendem a ser um pouco mais lentas do que as pequenas, assim como

têm um custo por bit maior e dissipam mais energia devido a esta lógica excessiva

implementada em hardware, ainda que sejam produzidas com a mesma tecnologia. No

entanto, assim como o tamanho da linha, o tamanho da cache é muito sensível ao tipo de

aplicação que será executada pelo sistema. Caches maiores tendem a explorar mais o principio

da localidade, o que pode aumentar o desempenho do sistema.

Page 23: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

11

2.4.3 Associatividade

Como a memória cache possui um número de linhas bem inferior ao número de blocos

da memória principal, um algoritmo é necessário para fazer o mapeamento destes blocos nas

linhas da cache. A principal técnica para resolver este problema é fazer um mapeamento

associativo por conjunto. Neste método a cache é dividida em conjuntos, onde cada conjunto é

composto por linhas, conforme as equações a seguir:

onde representa número de linhas total da cache, é o número de conjuntos, é número

de linhas por conjunto, é o número de conjuntos da cache e representa o número de blocos

da memória principal. Então, de forma genérica, diz-se que é um mapeamento associativo por

conjunto de linhas. Através deste mapeamento associativo por conjunto um bloco pode

ser mapeado em qualquer uma das linhas do conjunto . A Figura 4 ilustra este mapeamento

para os primeiros blocos da memória principal, onde no mapeamento associativo, cada

palavra é mapeada em múltiplas linhas de cache. No entanto, para o mapeamento associativo

por conjunto, cada palavra é mapeada em todas as linhas de um conjunto específico. Portanto,

um bloco seria mapeado no conjunto 0. Então, no mapeamento associativo por conjunto

uma cache pode ser fisicamente projetada como caches associativas.

Figura 3 Cache com mapeamento associativo com conjuntos

k linh

as

𝑳𝟎

𝑳𝒌−𝟏

𝑩𝟎

𝑩𝒗−𝟏

Memória cache – Conjunto 0

Memória cache – Conjunto 𝒗 − 𝟏

Primeiro conjunto 𝒗 de blocos da memória principal (igual ao

número de conjuntos)

Page 24: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

12

Para o mapeamento associativo por conjunto, o controle lógico da cache interpreta o

endereço da memória como sendo três campos: rótulo, conjunto e palavra. O conjunto de

bits especifica um dos conjuntos. Os bits do rótulo e conjunto especificam um dos

blocos da memória principal. A Figura 4 ilustra a lógica de controle de uma cache deste tipo. Em

um mapeamento completamente associativo, o rótulo no endereço de memória é um pouco

grande e precisa ser comparado com o rótulo de cada linha da cache. Já em um mapeamento

associativo por conjuntos de linhas, o rótulo no endereço de memória é bem menor e precisa

ser comparado com apenas os rótulos de um único conjunto.

Figura 4. Arquitetura de uma cache com mapeamento associativo por conjunto de k linhas

Na Tabela 1 são apresentados resumidamente os parâmetros de controle envolvidos.

Alguns deles relacionados com a variável p que representa o tamanho de uma palavra.

Tabela 1. Parâmetros da arquitetura de controle de uma cache Tamanho do endereço ( ) Número de blocos Linhas da cache

Unidades endereçáveis Linhas por conjunto Tamanho da cache

Tamanho do bloco Número de conjuntos Tamanho do rótulo ( − )

𝑭𝟎

𝑭𝟏

𝑭𝒌−𝟏

𝑭𝒌

𝑭𝒌 𝒊

𝑭𝟐𝒌−𝟏

𝑩𝟎

𝑩𝟏

𝑩𝒋

Co

nju

nto

0 C

on

jun

to 1

Dados Rótulo

Comparador

Rótulo Conjunto Palavra

Endereço de memória

(acerto)

(falta)

Cache Memória

Principal

𝒔 𝒑

𝒔 𝒑 𝒔− 𝒅

𝒔− 𝒅 𝒅 𝒑

Page 25: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

13

Então, o parâmetro de projeto da memória cache chamado de associatividade se refere

ao número de linhas por conjunto de memória cache ( ). A variação deste parâmetro tem

grande impacto no desempenho da cache, pois ele influencia diretamente na taxa de acerto,

apesar de gerar atrasos devido ao uso de multiplexadores e só fornecer o dado após a decisão

de acerto/falta, assim como ter de aguardar a seleção do conjunto.

2.4.4 Número de memórias cache

Normalmente, a camada de cache da hierarquia de memória de um computador está

dividida em vários níveis. O primeiro nível está mais próximo ao processador e é chamada de

L1. Ele está localizado no mesmo chip que o processador, o que permite garantir o máximo de

desempenho na busca por instruções e dados. O segundo e terceiro nível são chamados de L2 e

L3, respectivamente. Estes níveis superiores têm uma capacidade de armazenamento maior e,

portanto, um tempo de acesso maior.

Além de quebrar a camada de cache da hierarquia de memória em vários níveis de

cache, é possível que cada um destes níveis seja dividido em cache de dados e cache de

instruções. A maioria dos sistemas embarcados comerciais tem o primeiro nível de memória

cache baseado na arquitetura de Harvard [37]. Esta arquitetura propõe que as memórias de

instruções e dados sejam separadas e possuam barramentos independentes para se comunicar

com o processador, o que permite um acesso simultâneo aos dois tipos de memória. No

entanto, a grande vantagem desta arquitetura está relacionada a capacidade de se permitir ler

novas instruções ao mesmo tempo em que se está executando uma outra. Isto permite ao

processador ficar executando instruções o tempo todo, acarretando em um aumento

significativo de velocidade no processamento. Esse processo é chamado de pipelining. Além

disto, esta arquitetura é conhecida por ter um repertório de instruções reduzido (RISC), o que

permite ao processador executá-las em um único ciclo de relógio. Então, dividir a camada de

cache em vários níveis permite aumentar a largura de banda do processador, utilizando uma

estrutura mais complexa no primeiro nível e simplificar o projeto dos níveis inferiores para

obter um melhor custo-benefício. A Figura 5 apresenta uma hierarquia de memória típica de

sistemas comerciais. O nível L1 foi subdivido em cache de instruções (IC1) e cache de dados

(DC1), os demais níveis apresentam caches unificadas.

Page 26: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

14

Figura 5. Organização de memória cache com três níveis

2.5 SimpleScalar

O SimpleScalar [1] é um conjunto de ferramentas de código aberto que fornece a

infraestrutura necessária para simular arquiteturas de diversos tipos de processadores. Dessa

forma, é possível reproduzir o comportamento de aplicações em dispositivos ainda em tempo

de projeto do hardware. Para tanto, o SimpleScalar possui um conjunto de oito simuladores

que permitem fazer uma análise de desempenho de aplicações, modelar detalhadamente a

arquitetura do sistema e fazer co-verificação de hardware-software. São eles: sim-fast, sim-

safe, sim-profile, sim-cache, sim-cheetah, sim-eio, sim-bpred e o sim-outorder.

O mais rápido e menos detalhado simulador é o sim-fast. Ele não leva em consideração

o tempo, pois trabalha apenas com a simulação funcional. Dessa forma, este simulador executa

cada instrução serialmente, sem trabalhar com cache, nem com checagem de instruções. Outro

simulador que derivou do sim-fast, e que também realiza simulação funcional é o sim-safe. Este

último, no entanto, se diferencia por fazer uma verificação da permissão de acesso para cada

referência de memória. Associados a estes dois simuladores, pode ser utilizado o sim-profile,

que gera o perfil detalhado da simulação funcional. Já o sim-outorder é o mais complexo e

detalhado simulador. Ao contrário do sim-fast e do sim-safe, o sim-outorder é capaz de simular

o despacho e a execução de instruções fora de ordem, o que torna o tempo a variável mais

importante da simulação.

O SimpleScalar disponibiliza dois simuladores funcionais de cache: sim-cache e sim-

chetaah. Estes simuladores são ideais para a realização de uma simulação rápida de caches, se

os efeitos do desempenho da cache em tempo de execução não são necessários. O sim-chetaah

é capaz de gerar resultados para várias configurações de cache em uma única execução da

simulação. Ele também é capaz de simular diferentes tipos de associatividade de cache, bem

IC1

DC1 L3 L2 MEM CPU

Page 27: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

15

como políticas de substituição. Para executar a simulação em apenas uma execução, o sim-

chetaah utiliza uma abordagem chamada Simple-Pass Simulation [2]. Este método baseia-se em

traces para realizar a simulação, o que pode exigir uma grande quantidade de memória quando

são simuladas aplicações mais complexas. Traces de acesso à memória para caches de apenas

um nível são fáceis de serem obtidos, mas quando a hierarquia de memória aumenta, torna-se

mais complicado o gerenciamento deste método.

O sim-cache é o outro simulador fornecido para análise de cache. Neste simulador o

tamanho da cache, o tamanho da linha, a associatividade, a política de substituição, o número

de caches e o tipo de caches são passados como parâmetro de entrada para simulação. O

número de caches, no entanto, está limitado a dois níveis, sendo eles unificados ou separados

para instruções e dados. Além destes parâmetros, é preciso definir qual será a aplicação

executada. Uma vez configurado o simulador, é possível obter um arquivo de resultado com as

informações sobre acertos e faltas de cada nível da hierarquia de memória. Então, a partir

destas informações, é possível calcular o desempenho da arquitetura através do número total

de ciclos necessários para executar a aplicação simulada.

2.6 CACTI

O CACTI é uma ferramenta para modelar memórias caches. Ela é capaz de modelar

características de uma cache, como o tempo de acesso, o ciclo, a área, a energia estática e

dinâmica. Integrando todos estes parâmetros, o usuário consegue fazer uma análise precisa

sobre o tempo, potência e área de diferentes arquiteturas de memórias cache, o que ajuda na

escolha da configuração de memória mais adequada de um sistema.

O modelo proposto pela ferramenta CACTI pode ser configurado através de um arquivo

com uma série de parâmetros de uma memória cache. Dentre eles estão o tamanho da

memória, o tamanho da linha, a associatividade, a tecnologia de transistor e o nível em que a

cache simulada se encontra. A versão 6.5 do CACTI [3] permite realizar a simulação de

memórias com tecnologia de fabricação de até 32nm, além de permitir modelar até o terceiro

nível de cache. Uma vez feita a modelagem da cache e a simulação, um arquivo de saída é

gerado contendo informações sobre a energia dinâmica por acesso e a energia estática

consumida pela arquitetura. Estas informações, então, podem ser utilizadas como base para o

cálculo do consumo total de energia de uma hierarquia de memória.

Page 28: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

16

2.7 Simulador de Memória Micron

A Micron Technology desenvolveu uma serie de simuladores de memória capazes de

estimar a potência de determinados tipos de memórias DDR [16]. Um destes simuladores é o

DDR3L Power Calc, capaz de estimar a potência media consumida por memórias DDR3L. Este

tipo de memória tem sido utilizado em sistemas embarcados pelas suas características de alto

desempenho e baixo consumo de energia. O simulador de potência Power Calc da Micron foi

elaborado baseado em quatro planilhas do Microsoft Excel. A primeira planilha (DDR3 Config)

corresponde à especificação da memória que se deseja simular. A segunda (System Config)

permite que o usuário faça a configuração do sistema no qual a memória será inserida. Nesta

configuração o usuário colocará as informações sobre a utilização da memória, inserindo o

percentual de leituras e escritas, a tensão de entrada e a frequência de operação da memória.

A terceira planilha (Power Calcs) contém todas as fórmulas necessárias para estimar as diversas

potências consumidas pela memória. São levadas em consideração as potências consumidas

por leituras e escritas, assim como as potências associadas ao modo de espera, no qual a

memória não está sendo utilizada, mas ainda continua consumindo energia para manter as

informações. A última planilha (Summary) apresenta o resumo e os gráficos relacionados ao

consumo de energia da memória.

Page 29: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

17

Capítulo

3

3 Problemas de Otimização Multi-

Objetivo

Neste capítulo serão apresentados os conceitos básicos relacionados a problemas de

otimização multi-objetivos. Depois, será feito um estudo sobre algoritmos evolucionários

aplicados a este tipo de problemas. Em seguida, serão descritas algumas técnicas de otimização

utilizadas para tentar solucionar estes problemas. Por fim, serão apresentados alguns

indicadores que medem o desempenho destas técnicas para um determinado problema de

otimização.

Page 30: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

18

3.1 Conceitos Básicos

3.1.1 Classes de Problemas

Na perspectiva de análise de sistemas, automatizar a solução de um problema envolve

três componentes básicas: entradas, saídas e a modelagem interna que conecta estes dois.

Conhecer o modelo significa conhecer como o sistema funciona. Neste caso é possível

computar qualquer resposta do sistema (saídas) para um valor de entrada. Baseado nisto, é

possível distinguir três tipos de problemas, dependendo de qual das três componentes do

sistema é desconhecida. Em um problema de otimização, representado na Figura 6 (a), o

modelo do problema já é conhecido, junto com as saídas que são desejadas, ou apenas uma

descrição do que se deseja destas saídas (Ex.: minimização ou maximização). O problema,

então, se resume a encontrar as entradas que fornecem estas saídas. Em um problema de

modelagem, representado na Figura 6 (b), o conjunto de entradas e saídas já é conhecido.

Então, deseja-se encontrar um modelo que consiga mapear as saídas em cada uma das

entradas conhecidas. Em um problema de simulação, representado na Figura 6 (c), o modelo do

sistema já é conhecido, bem como algumas entradas. Neste caso, é preciso aplicar estas

entradas no modelo para encontrar as saídas.

Figura 6. Classificação de problemas em análise de sistemas

Neste trabalho, serão exercitados os três tipos de problemas. Primeiramente será feita a

modelagem do sistema, seguida de simulações e então otimizações. No entanto, para um

melhor entendimento dos problemas de otimização, será preciso detalhar mais a sua

composição, bem como entender seus diferentes tipos.

Conhecido Entrada Saída

Modelo

? Especificada

Entrada Saída

Modelo

Conhecida Conhecida ? Conhecido

Entrada Saída

Modelo

? Conhecida

(a) Problema de otimização (b) Problema de modelagem (c) Problema de simulação

Page 31: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

19

3.1.2 Problemas de Otimização

Para conseguir formular um problema de otimização é importante conhecer alguns

conceitos relacionados a ele. Os três conceitos principais são: variáveis de decisão, restrições e

função objetivo.

As variáveis de decisão são as quantidades numéricas que representam os valores de

entrada que deverão ser escolhidos em um problema de otimização, ou seja, são as variáveis

que se pode decidir. Estas quantidades pode ser representadas como , onde

definirá o número de dimensões do problema. Então o vetor composto por variáveis de

decisão é representado por:

[

] (1)

Por convenção, o vetor pode ser escrito como:

[ ] ( )

Na maioria dos problemas de otimização, existem sempre restrições impostas por

características particulares do ambiente ou recursos disponíveis relacionados ao problema.

Estas restrições têm que ser satisfeitas para que uma solução seja considera aceitável. Estas

restrições podem ser representadas matematicamente na forma de inequações ou de

equações:

( ) ( ) ( ) ( )

Para determinar o quão boa é uma solução, é necessário ter alguns critérios de

avaliação dela. Estes critérios de avaliação são expressos como funções das variáveis de decisão

e são chamados de funções objetivo. Estas funções podem apresentar conflitos entre elas, e

algumas podem ser minimizadas, enquanto outras podem ser maximizadas. As funções objetivo

podem ser representadas matematicamente como: ( ) ( ) ( ), onde é o número

de funções objetivo. Então, as funções objetivo formam um vetor de funções ( ) que pode

ser representado por:

( ) [ ( ) ( ) ( )] ( )

Page 32: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

20

Uma vez definidos os conceitos relacionados à formulação de um problema de

otimização, é possível apresentar os seus diferentes tipos.

3.1.2.1 Problemas de Otimização Mono-objetivo

Em um problema de otimização mono-objetivo, assim como o nome sugere, existe

apenas um único objetivo a ser alcançado, que é a busca por uma solução ótima. Embora o

espaço de busca desta solução possa ter várias soluções ótimas locais, o objetivo é sempre

encontrar a solução ótima global. Em um algoritmo de otimização mono-objetivo, quando uma

nova solução encontrada tem um melhor valor da função objetivo, então a última melhor

solução encontrada pode ser descartada.

Matematicamente, um problema de otimização mono-objetivo, pode ser definido de

forma genérica como a minimização ou maximização de ( ) sujeita às restrições ( )

e ( ) com . A solução, então, minimiza ou maximiza

o valor escalar ( ) onde é um vetor de variáveis de decisão de dimensão , ( ),

de um universo . Este vetor de decisão pode conter variáveis contínuas ou discretas, bem

como pode ser uma função contínua ou discreta.

3.1.2.2 Problemas de Otimização Multiobjetivo

O problema de otimização multiobjetivo pode ser entendido como a extensão de um

problema mono-objetivo, onde não existe apenas uma função objetivo para ser otimizada, mas

várias funções. Então, o problema deixa de ter uma única solução e passa a ter um conjunto de

soluções. Este conjunto de soluções pode ser encontrado através do uso de uma técnica

chamada Pareto Optimality Theory [4]. Mais precisamente, problemas de otimização

multiobjetivo são aqueles onde o objetivo é otimizar funções objetivo simultaneamente. Isto

pode envolver a maximização de todas as funções, a minimização de todas as funções, ou a

combinação de maximização e minimização destas funções.

Um problema de otimização multiobjetivo pode ser definido matematicamente, de

forma genérica, como sendo a minimização ou maximização de ( ) ( ( ) ( ) ( ))

sujeita às restrições ( ) e ( ) com . Uma

solução para o problema corresponde a minimização ou maximização das componentes de um

Page 33: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

21

vetor ( ) onde é um vetor de variáveis de decisão de dimensão , ( ), de um

universo .

A formulação e resolução deste tipo de problema de otimização estão diretamente

relacionadas com os objetivos deste trabalho, uma vez que o estudo está fundamentado no

problema de exploração de arquiteturas de memória cache visando otimizar dois objetivos

naturalmente conflitantes, maximizar o desempenho e minimizar o consumo de energia.

3.1.3 Dominância

O conceito de dominância é bastante utilizado em problemas multiobjetivos e serve

para indicar e comparar o grau de qualidade de uma solução em relação à outra. Diz-se que

uma solução domina , se, e somente se, para todos os objetivos envolvidos no domínio da

função forem melhor ou igual aos objetivos de . Então, considerando que possui

objetivos, como um vetor de dimensões. Usando o símbolo para indicar a dominação, a

definição formal de pode ser descrita da seguinte forma:

, e ( )

Para objetivos conflitantes, não existe uma única solução que domina todas as outras.

Uma solução é dita não dominada se ela não for dominada por nenhuma das outras. Todas as

soluções não dominadas possuem um atributo que não pode ser melhorado, com relação a

qualquer uma das funções objetivo, sem que outros atributos sejam afetados.

3.1.4 Pareto

Em problemas de otimização multiobjetivo, como existem várias funções objetivo, a

noção do que é “ótimo” ganha uma conotação um pouco diferente, uma vez que as soluções

que têm destaque neste tipo de problema são as soluções que tem um bom compromisso

entre os objetivos. A noção de “ótimo” mais adotada neste tipo de problema, portanto, foi

originalmente proposta por Francis Ysidro Edgeworth, posteriormente generalizada por

Vilfredo Pareto [5], e finalmente chamada de Pareto Ótimo. Formalmente, uma solução

é chamada de Pareto Ótimo com respeito a , se e somente se não existe uma solução

onde ( ) ( ( ) (

)) domine ( ) ( ( ) ( )). Em outras

palavras, o Pareto Ótimo pode ser definido como sendo o conjunto de soluções não dominadas,

Page 34: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

22

levando em consideração todo o espaço de busca. Então, para um problema de otimização

multiobjetivo, ( ) é possível definir o conjunto de Pareto, , da seguinte forma:

( ) ( ) ( )

Este conjunto, quando mapeado no espaço objetivo, forma uma superfície conhecida

como frente de Pareto ( ). Então, é possível definir formalmente a frente de Pareto da

seguinte forma:

( ) ( )

3.2 Algoritmos Evolucionários

Algoritmos evolucionários (AE) imitam os princípios de evolução natural para definir

mecanismos de busca e otimização. Algoritmos Evolucionários diferem dos métodos clássicos

de busca e otimização em vários aspectos. A maioria dos algoritmos clássicos utiliza um

procedimento determinístico para buscar soluções ótimas. Esta abordagem, no entanto, pode

apresentar um serie de dificuldades para encontrar os resultados desejados. Algumas destas

dificuldades são:

A convergência para uma solução ótima depende fortemente da escolha da

solução inicial;

Os algoritmos tendem a ficarem travados em solução ótimas locais;

Os algoritmos não são eficientes em lidar com problemas que possuem um

espaço de busca discreto;

Os algoritmos não são eficientes para serem usados em computadores que

exploram o paralelismo.

A utilização de algoritmos evolucionários, portanto, pode ser uma alternativa para

contornar estas dificuldades encontradas pelos algoritmos clássicos de busca e otimização. Nas

subseções a seguir, serão apresentados alguns conceitos básicos relacionados aos AE, assim

como serão apresentados alguns tipos de AE que serão relevantes para o entendimento deste

trabalho.

Page 35: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

23

3.2.1 Componentes de Algoritmos Evolucionários

3.2.1.1 Indivíduo

O indivíduo representa uma solução do problema a ser tratado. Ele consiste no conjunto

de configurações que define uma possibilidade de solução para o problema. Em técnicas

baseadas em algoritmos genéticos, o indivíduo também é chamado de cromossomo. Diz-se que

o cromossomo é constituído de um conjunto de genes, onde cada gene representa um

parâmetro de configuração da solução.

3.2.1.2 Função de Aptidão

O papel da função de aptidão é representar os requisitos necessários para que a

adaptação ocorra. Ela forma a base do processo de seleção de indivíduos. Mais precisamente, é

a função que atribui uma medida de qualidade para um indivíduo.

Frequentemente, o problema a ser resolvido através de um algoritmo evolucionário está

relacionado com otimização. Neste caso, o nome função objetivo é utilizado no contexto do

problema, e a função de aptidão pode ser idêntica ou uma simples transformação de uma

função objetivo.

3.2.1.3 População

O papel da população é representar as possíveis soluções de um problema. Ela é

composta por vários indivíduos. A população forma a unidade de evolução. A capacidade de

mudança e adaptação não está relacionada com indivíduos, ela está relacionada com a

população. Em abordagens baseadas em algoritmos evolucionários, a população de uma

iteração é substituída por novos indivíduos mais interessantes para a solução de um

determinado problema, dando a ideia de que a população evolui com o tempo. A população

normalmente é iniciada de forma aleatória e na maioria dos algoritmos tem tamanho fixo ao

longo das iterações. O tamanho da população pode influenciar o desempenho da técnica,

influenciando na velocidade de convergência e qualidade dos resultados.

Page 36: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

24

3.2.1.4 Mecanismo de Seleção de Pais

A seleção de pais tem como objetivo fazer uma distinção entre os indivíduos de uma

população em relação ao valor da sua função de aptidão. Esta seleção permite destacar os

melhores indivíduos que serão utilizados para criação da uma nova população. Um indivíduo é

dito pai se ele foi selecionado para gerar os indivíduos da próxima geração. Juntamente com a

seleção de sobreviventes, a seleção de pais visa punir os indivíduos que têm uma qualidade

menor quando avaliados pela função de aptidão. Como este mecanismo é normalmente

probabilístico, estes indivíduos com menor aptidão ainda podem se tornarem pais, evitando

que o algoritmo fique preso em ótimos locais.

3.2.1.5 Operadores de Variação

O papel dos operadores de variação é criar novos indivíduos a partir dos antigos. Estes

operadores estão divididos em dois tipos: mutação e cruzamento.

O operador de mutação visa garantir a diversidade da população. Seu conceito consiste

em mutar aleatoriamente um indivíduo existente de forma que um novo indivíduo seja criado.

Ao aplicar o operador de mutação em um indivíduo, cada gene (parâmetro da solução) tem

uma probabilidade de ser mutado. Quando um gene é mutado ele pode assumir qualquer valor

dentro do intervalo de possíveis valores daquele parâmetro. A mutação permite criar novas

soluções com parâmetros não existentes na população atual, permitindo que a população saia

de mínimos locais e explore outras regiões.

A recombinação ou cruzamento é o operador que possibilita a criação de novos

indivíduos a partir de outras já existentes. A ideia do operador de cruzamento é criar novos

indivíduos combinando as características dos indivíduos de origem. O tipo de cruzamento pode

variar dependendo da representação do problema, alternando entre número de pontos de

corte e forma como os genes são trocados. Uma das formas mais básicas de cruzamento é o

cruzamento de -pontos, onde representa o número de divisões que o cromossomo terá no

momento do cruzamento. O funcionamento de um cruzamento com corte de dois pontos é

descrito a seguir. Inicialmente são escolhidos dois indivíduos da população para serem os pais.

Após isso, em cada indivíduo escolhido são definidos pontos de corte onde haverá troca de

dados entre as características genéticas dos indivíduos. Uma vez realizada a troca, dois novos

Page 37: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

25

indivíduos são gerados carregando informações misturadas de ambos os indivíduos que

iniciaram a operação de cruzamento.

3.2.1.6 Mecanismo de Seleção de Sobreviventes

De forma similar a seleção de pais, a seleção de sobreviventes visa distinguir os

indivíduos baseado em suas qualidades. No entanto, a seleção de sobreviventes é utilizada em

um momento diferente do ciclo evolucionário. O mecanismo de seleção de sobreviventes é

chamado após a criação da prole gerada pelos indivíduos escolhidos pela seleção de pais.

Normalmente, a seleção de sobreviventes é um processo determinístico, onde os indivíduos

são ordenados por aptidão e apenas os melhores indivíduos são selecionados para compor a

próxima geração.

3.2.2 Algoritmos Genéticos

Algoritmos genéticos (AG) são conjuntos de procedimentos utilizados para busca e

otimização que são motivados por princípios da genética e seleção natural. Algumas ideias

fundamentais da genética são utilizadas artificialmente para construir algoritmos de busca

robustos e que requerem o mínimo de informações sobre o problema. O princípio de

funcionamento de um algoritmo genético, ilustrado na Figura 7, é bem diferente da maioria das

técnicas de otimização clássicas. Ao contrário dos métodos de busca e otimização clássicos, o

AG inicia a busca com um conjunto aleatório de soluções, ao invés de apenas uma. Uma vez

que a população inicial é gerada aleatoriamente, cada um dos indivíduos é avaliado

individualmente e sua aptidão é atribuída. Avaliar um indivíduo significa calcular o valor da

função objetivo e as violações de restrições. Entretanto, uma métrica precisa ser definida

baseada na função objetivo e nas violações de restrições para atribuir um valor relativo de

aptidão para o indivíduo. Uma condição de término é, então, verificada. Se a condição não é

satisfeita, a população é modificada por três principais operadores e uma nova população é

criada. O contador de gerações é incrementado para indicar que uma geração (ou iteração), do

AG foi finalizada.

Page 38: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

26

Figura 7. Diagrama de fluxo do princípio de funcionamento de um AG

Os três principais operadores utilizados em AG são: reprodução, cruzamento e mutação.

O operador de reprodução, também chamado de operador de seleção, é utilizado para fazer

cópias das soluções boas e eliminar as soluções ruins da população, enquanto mantém o

tamanho da população fixa. Existem várias formas de executar estas tarefas. Os métodos mais

comuns são: seleção por torneio, seleção proporcional e seleção por classificação. O operador

de reprodução, portanto, não tem o objetivo de criar novos indivíduos. Esta tarefa é realizada

pelos operadores de cruzamento e mutação. Assim como o operador de recombinação, existe

várias forma de implementar a operação de cruzamento e mutação em algoritmos genéticos,

no entanto, todas seguem os princípios citados na sessão 3.2.1.5.

3.2.3 Estratégias Evolucionárias

As estratégias evolucionárias (EE) são bastante parecidas com os algoritmos genéticos.

No início, eles se diferenciavam pelo fato de que as estratégias evolucionárias originalmente

não possuíam o operador de recombinação. Estudos recentes, no entanto, introduziram este

tipo de operador nas estratégias evolucionárias, o que dividiu está técnica em dois tipos.

Início

Inicializa a População

gen = 0

Avaliação Atribuição da Aptidão

Cond?

Fim

Reprodução

Cruzamento

Mutação gen = gen + 1

Não

Sim

Page 39: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

27

As estratégias evolucionárias sem recombinação são baseadas na criação de uma prole

utilizando um operador de mutação gaussiano. O processo definido pelas estratégias

evolucionárias, aplicado a problemas de busca e otimização, pode ser dividido em cinco etapas.

O detalhamento destas etapas é apresentado no Quadro 1.

Quadro 1. Etapas de uma estratégia evolucionária sem recombinação

Nas estratégias evolucionárias com recombinação, um conjunto de pais selecionados

são primeiramente recombinados para encontrar uma nova solução. Então, o operador de

mutação é aplicado na nova solução, conforme a estratégia anterior. No entanto, ao invés de

escolher dois pais ou todos os pais para a recombinação, um conjunto de pais é escolhido

aleatoriamente, onde é um valor entre 1 e . Portanto, o passo-a-passo desta estratégia é

bastante similar ao da estratégia anterior conforme o processo apresentado no Quadro 2.

Etapa 1: Uma população inicial de soluções ( ) é escolhida, assim como o

fator de mutação .

Etapa 2: São criadas soluções:

( ) ( ) ( ), (9)

onde ( ) é um vetor criado utilizando uma distribuição normal com desvio

padrão de . Para criar o -ésimo elemento da prole, o pai é escolhido

aleatoriamente do conjunto de soluções.

Etapa 3: É criada uma população através da combinação do conjunto de elementos de

pais com o conjunto de elementos da prole.

(⋃ { ( )} )⋃(⋃ { ( )}

) ( )

Etapa 4: As soluções presentes em são ordenadas por valor de aptidão e as melhores

soluções são escolhidas para compor a nova população.

Etapa 5: O critério de parada é verificado e caso ele não seja satisfeito volte para a segunda etapa.

Page 40: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

28

Quadro 2. Etapas de uma estratégia evolucionária com recombinação

A etapa 3 poderia sofrer uma mudança fazendo com que apenas os elementos da prole

fossem utilizados para criar a nova população.

3.2.4 Evolução Diferencial

Evolução diferencial é um algoritmo evolucionário relativamente novo, proposto no

meio da década de 90 por Kenneth Price e Rainer Storn [10]. Inicialmente, a heurística foi

desenvolvida para otimização de problemas de domínio contínuo, no entanto, diversos estudos

recentes apresentam a utilização deste algoritmo aplicado em problemas discretos [11][12]. O

funcionamento do algoritmo é baseado principalmente no operador de mutação diferencial.

Ele é capaz de realizar mutações baseadas na distribuição das soluções de uma população

atual. Desta forma, as direções de busca e os possíveis tamanhos dos passos dependem da

localização dos indivíduos selecionados para calcular os valores da mutação.

Etapa 1: Uma população inicial de soluções ( ) é escolhida, assim como o

vetor de fatores de mutação .

Etapa 2: São criadas soluções mutadas, cada uma usando pais selecionados

aleatoriamente, da seguinte forma:

1. A solução é calculada a partir da recombinação dos pais selecionados.

2. O operador de mutação é aplicado na solução gerada pela recombinação:

( ) (11)

Etapa 3: É criada uma população através da combinação do conjunto de elementos de

pais com o conjunto de elementos da prole.

(⋃ { ( )} )⋃(⋃ { ( )}

) ( )

Etapa 4: As soluções presentes em são ordenadas por valor de aptidão e as melhores

soluções são escolhidas para compor a nova população.

Etapa 5: O critério de parada é verificado e caso ele não seja satisfeito volte para a segunda etapa.

Page 41: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

29

O algoritmo inicia com a criação de vetores, gerados aleatoriamente. A evolução

diferencial utiliza vetores de parâmetros -dimensionais como

população em cada geração . A geração de novos vetores de parâmetros é realizada através

da diferença ponderada entre dois vetores de parâmetros e um terceiro indivíduo da

população. Esta operação é chamada de mutação. Os vetores de parâmetros mutados são

então combinados com outros vetores pré-determinados, denominados de target vectors, a fim

de gerar os trial vectors. Esta combinação de parâmetros é referida como crossover. Cada vetor

presente na população atual deve ser usado uma vez como trial vector. Caso o trial vector

forneça um valor de aptidão melhor que aquele associado ao respectivo target vector, este

último dará lugar ao primeiro na próxima geração. Esta operação corresponde a etapa de

seleção.

Na etapa de mutação, cada target vector , um novo vetor é gerado

por meio da seguinte relação:

( − ), (13)

Os valores de representam índices mutuamente distintos e

também são diferentes do índice . A constante “ ” é um fator que determina a influência do

conjunto de pares de soluções selecionadas no cálculo do valor da mutação, ou seja, ela

determina o tamanho do passo a ser dado na direção definida pelo vetor − .

Após a mutação, um procedimento similar ao de cruzamento é utilizado com a

finalidade de aumentar a diversidade dos vetores de parâmetros mutados. Para tanto, um

terceiro vetor ( ), trial vector, é gerado a partir do target

vector e do vetor sob análise :

{

(14)

onde , ( ), [ ] e é um índice escolhido

aleatoriamente, o que garante que recebe pelo menos um parâmetro de .

No processo de cruzamento, portanto, a constante “ ” é definida pelo usuário e se

destaca pela capacidade de controlar a influência dos pais, ou do target vector, na geração da

prole (trial vector). Valores altos para esta constante significam menos influência dos pais.

Page 42: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

30

Após a etapa de mutação e cruzamento, nas quais todos os vetores serviram como

target vector, a seleção dos vetores que serão preservados para próxima geração é feita usando

um critério de seleção guloso, escolhendo os vetores que parecem ser melhores no momento.

Se ( ) ( ), então (maximização), caso contrário .

Existe um padrão de nomenclatura desenvolvido para referenciar as diferentes

configurações uma evolução diferencial. A notação pode ser generalizada da seguinte forma:

DE/x/y/z. Nela a letra “x” especifica o vetor a ser mutado, “y” determina o número de vetores

diferença utilizados na etapa de mutação e “z” o esquema de crossover adotado. A proposta

clássica é chamada de “DE/rand/1/bin”, onde a palavra “rand” indica que o vetor a ser mutado

será escolhido aleatoriamente, “1” indica que será considerado apenas um vetor diferença na

mutação e, finalmente, “bin” significa que uma recombinação binomial será utilizada. O

algoritmo correspondente a está configuração é apresentado no Quadro 3.

Quadro 3. Algoritmo “DE/rand/1/bin”

3.3 Técnicas de Otimização Multi-Objetivos

Nesta sessão serão apresentadas algumas técnicas de otimização que serão

posteriormente aplicadas ao problema de exploração de arquiteturas de memória visando à

redução de energia e desempenho.

1. begin

2.

3. Cria uma população inicial aleatória

4. Avalia ( )

5. while critério de parada não for satisfeito do

6. for até do

7. ( )

8. ( )

9. end for

10. for até do

11. if ( ) ( ) then

12.

13. else

14.

15. end if

16. end for

17.

18. end while

19. end

Page 43: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

31

3.3.1 NSGAII

O algoritmo NSGA, proposto em [6] [7], foi um dos primeiros algoritmos evolucionários

desenvolvidos. Porém, ao longo dos anos foi alvo das seguintes críticas: alta complexidade

computacional do algoritmo de ordenação baseado em não dominância, ausência de elitismo e

necessidade de especificar o parâmetro . Posteriormente, foi proposto o algoritmo

NSGAII (Nondominated Sorting Genetic Algorithm II) [8], que apresentava melhoras em relação

ao anterior, implementando elitismo, reduzindo complexidade computacional e retirando a

necessidade de especificar o parâmetro , que era um parâmetro utilizado para verificar a

diversidade de soluções equivalentes.

O NSGAII baseia-se no conceito de não dominância para selecionar indivíduos, assim

como na métrica crowding distance, que é utilizada para selecionar os melhores indivíduos de

um conjunto de soluções não dominadas. O passo-a-passo para o cálculo do crowding distance

é mostrado no Quadro 4.

Quadro 4. Passo-a-Passo para o cálculo do crownding distance

Conforme mostrado no Quadro 4, inicialmente é feita a ordenação da população em

fronts de não dominância. Para cada front é calculado o valor de crowding distance dos

Passo 1: Classificar a população e identificar os fronts não dominados . Para

cada , repetir os passos 2 e 3.

Passo 2: Para cada função objetivo , ordene as funções em em ordem crescente. Seja

| | e [ ] a representação da -ésima solução na lista ordenada, com respeito

ao objetivo e o valor deste objetivo. Atribua ( [ ]) e ( [ ])

. Para − atribua

( [ ]) ( [ ])− ( [ ])

. (15)

Passo 3: Para encontrar o crownding distance total ( ) de uma solução , some os

crownding distances das soluções com respeito a cada objetivo. ( ) ∑ ( )

Page 44: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

32

elementos. O cálculo do crowding distance de cada elemento é baseado na distância entre uma

solução e as soluções vizinhas, conforme apresentado na Figura 8.

Figura 8. Operador de crownding distance

A distância entre as soluções vizinhas é calculada para cada um dos objetivos ( e )

da solução . O O cálculo final do crowding distance, de acordo com a Figura 8, é dado pelo

somatório entre ( ) e ( ), conforme a equação presente no Quadro 4.

No NSGAII, o operador de crowding distance é utilizado como critério de desempate no

processo de seleção dos melhores indivíduos. Um esquema do processo de ordenação e

seleção utilizado no NSGAII é mostrado na Figura 9.

Figura 9. Processo de ordenação utilizado no NSGAII

Inicialmente, tem-se um conjunto de soluções formado por (gerado através de

operadores de seleção, mutação e cruzamento) e (população inicial da iteração t). Em

𝑐𝑑 (𝑥)

𝑐𝑑 (𝑥)

𝑧

𝑧

Rejeitado

𝑷𝒕 𝟏 𝑷𝒕

𝑸𝒕

𝑭𝟏

𝑭𝟐

𝑭𝟑

Ordenação por não dominância Ordenação por crownding distance

Page 45: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

33

seguida é feita a ordenação das soluções de acordo com o grau de não dominância. Com isso,

as soluções são divididas em fronts, onde aquelas contidas nos melhores fronts (com menos

soluções dominadas) são selecionadas para a próxima iteração. Então, a métrica crowding

distance deverá ser utilizada como critério de desempate para selecionar indivíduos do último

front escolhido. Para apresentar melhor o funcionamento do NSGAII, o Quadro 5 apresenta o

pseudocódigo do algoritmo.

Quadro 5. Pseudocódigo do NSGAII

De acordo com o Quadro 5, inicialmente é gerada uma população , que é ordenada

com base em não dominância e posteriormente dividida em fronts. A nova população é então

obtida selecionando os indivíduos baseados nos melhores fronts e no crowding distance. A

partir dessa população aplicam-se os operadores de seleção, mutação e cruzamento. Caso o

critério de parada seja atingido, o algoritmo termina, caso contrário é feita uma nova

ordenação por fronts e o processo se repete.

3.3.2 SPEA2

O SPEA2 (Strength Pareto Evolutionary Algorithm 2) [9] é um algoritmo que utiliza um

arquivo externo para armazenar as melhores soluções encontradas entre as gerações. Ele se

baseia no conceito de dominância e densidade de vizinhos para avaliar a aptidão. Pela

1. Gera população aleatória inicial de tamanho

2. Ordena com base em não dominância

3. População de tamanho é obtida a partir de através da aplicação dos

operadores de seleção, cruzamento e mutação.

4. Repetir − vezes, onde é o número de gerações

5. , onde é a iteração atual

6. ordenar por não dominância

7. ( ), todos os fronts de

8. enquanto

9. atribuir crownding distance para cada solução em

10.

11. ordenar com base em não dominância e crownding distance

12. [ ]

13. População de tamanho é obtida a partir da aplicação dos operadores de

seleção (crownding operator), cruzamento e mutação sobre a população

14.

Page 46: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

34

densidade de vizinhos é possível observar quais indivíduos são mais representativos para o

conjunto de solução final. Desta forma, a densidade é utilizada como critério de decisão entre

indivíduos com mesmo grau de dominância. A densidade é calculada através da seguinte

equação:

( )

(16)

onde

√ ( )

para igual a -ésima solução para a qual se está calculando a densidade, igual ao tamanho

da população inicial da iteração , igual ao tamanho do arquivo externo de soluções não

dominadas e igual à distância Euclidiana entre a solução e a -ésima solução mais próxima.

O pseudocódigo do SPEA2 é apresentado no Quadro 6.

Quadro 6. Pseudocódigo do SPEA2

Como pode ser visto no Quadro 6, inicialmente é gerada uma população inicial e um

arquivo externo vazio . Em seguida é calculada a função de aptidão, onde é possível ter uma

1. Entrada: (Tamanho da população)

2. (Tamanho do arquivo)

3. (Número máximo de gerações)

4. Saída: (Soluções não dominadas)

5. Inicialização: Gere população inicial e crie um arquivo externo vazio .

6. Seta .

7. Atribuição da aptidão: Calcule a aptidão de e .

8. Seleção: Copie os indivíduos não dominados de e para .

9. Se

10. Teste condição de parada.

11. Senão se então

12. Aplique o truncamento a

13. Senão

14. Complete o arquivo com elementos dominados de e .

15. Condição de parada: se ou outro critério for satisfeito, atribua e pare

16. Cruzamento: Seleção por torneio direto (binário) em . Aplique cruzamento em

até completar o mating pool (conjunto de pais selecionados).

17. Diversidade: Aplique o operador de mutação ao mating pool e sete a população

resultante em . Incremente o contador de geração e volte para linha 7.

Page 47: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

35

percepção melhor do relacionamento entre as soluções envolvidas. Posteriormente, os

indivíduos não dominados do conjunto de soluções são copiados para compor o arquivo

externo da próxima iteração. Baseado no tamanho do arquivo externo pode haver nessa etapa

a necessidade de truncamento ou de completar o novo arquivo externo com elementos

dominados. Caso a condição de parada não seja atingida, é realizado seleção, cruzamento e

mutação. Desta forma, é gerada uma nova população e esse processo se repete até que a

condição de parada seja atingida.

3.4 Métricas de Avaliação

Métricas são bastante utilizadas a fim de mensurar características de algoritmos multi-

objetivo, ajudando a entender seu comportamento no domínio do problema e permitindo uma

avaliação mais concreta do desempenho do algoritmo. As métricas também são um importante

parâmetro de comparação entre algoritmos, uma vez que muitas vezes é difícil perceber qual

algoritmo apresenta um melhor conjunto de soluções para o problema. A Figura 10 ilustra essa

característica.

Figura 10. Comparação entre algoritmos: (a) Possível concluir qual o melhor algoritmo e (b) Difícil de decidir qual o melhor algoritmo

Conforme mostra a Figura 10, na situação (a) é possível concluir que o conjunto de

soluções do algoritmo A é mais apropriado do que o do algoritmo B, uma vez que para cada

solução encontrada em B existe pelo menos uma solução em A que seja melhor ou igual à de B

em todos os objetivos. Mas ainda assim é difícil dizer o quanto o algoritmo A é melhor que B.

B

A

A B

𝒇𝟏 𝒇

𝟏

𝒇𝟐 𝒇

𝟐

(a) (b)

Page 48: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

36

Na situação (b) já não se pode assegurar qual algoritmo é melhor, pois no conjunto das

melhores soluções encontradas na união dos resultados de A e B, algumas soluções pertencem

a A e outras a B. Dessa forma, as melhores soluções que pertencem ao algoritmo A podem

apresentar características que sejam boas para um tipo de aplicação, enquanto que as de B

podem ser boas apenas para outros tipos de aplicações. Sendo assim, a asserção de que os

resultados de um algoritmo são melhores do que de outro algoritmo dependerá de quais

características são importantes para o usuário. Em [13], Fonseca et al. também chegam a

mesma conclusão e observam que métricas podem ser combinadas a fim de se buscar um

conjunto de características mais apropriadas para análise comparativa entre os algoritmos.

Duas das principais métricas utilizadas são apresentadas a seguir. Elas serão utilizadas para

validação dos resultados deste trabalho.

3.4.1 Distância Generacional

Distância generacional é uma métrica simples, no entanto, bastante utilizada para

comparação de algoritmos. O seu princípio consistem em representar a o quão distante um

Pareto Front está do Pareto Ótimo. Para tanto, a métrica é calculada através do somatório da

distância Euclidiana entre cada solução obtida e o Pareto Ótimo, conforme ilustrado na Figura

11. A distância Euclidiana é representa pela menor distância entre uma solução obtida na

frente de Pareto e uma solução do Pareto Ótimo.

Figura 11. Indicador de distância generacional

A definição formal deste indicador foi proposta por Van Heldhizen em [14] e é calculada

pela seguinte equação:

𝒇𝟏

𝒇𝟐

Frente de Pareto

Pareto Ótimo

Distância Euclidiana

Page 49: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

37

√∑

, (18)

onde, é o número de soluções não dominadas no Pareto Front e é a menor distância entre

a solução e o Pareto Ótimo.

3.4.2 Hipervolume

O indicador de Hipervolume foi originalmente proposto por Zitzler et al. [15] para

comparar o resultado final de diferentes Algoritmos Evolucionários Multi-Objetivo. O

hipervolume corresponde ao cálculo de uma fração de área do espaço de busca que é

dominada pelo Pareto Front e não dominada por um ponto de referência. Matematicamente,

para cada solução pertencente ao Pareto Front , é construído um hipercubo com

referência a um ponto , conforme apresentado na Figura 12.

Figura 12. Indicador Hipervolume

O ponto de referência pode ser definido construindo-se um vetor com os piores valores

de função objetivo. Esse ponto é apenas uma referência para o cálculo do volume em relação

ao Pareto Front, sendo normalmente representado por um ponto onde contém os piores

valores das funções objetivo. O resultado da métrica é a união de todos os hipercubos

encontrados. Nessa métrica, quanto maior o valor do hipervolume melhor, pois um alto valor

de hipervolume indica que houve um elevado espalhamento entre as soluções extremas do

Pareto encontrado e indica também que houve uma maior convergência, pois quanto mais o

algoritmo convergir maior será o volume calculado nessa métrica. Apesar de ser

𝒇𝟏

𝒇𝟐

W

Hipervolume

𝒔𝟏

𝒔𝟐

𝒔𝟑

𝒔𝟒 𝒔𝟓

𝒔𝟔

Page 50: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

38

conceitualmente intuitiva, essa métrica apresenta um elevado custo computacional. Essa

métrica é calculada através de

(

) (19)

onde representa a solução do Pareto Front e representa o hipercubo daquela solução.

3.4.3 Cobertura

A métrica de cobertura [19] é capaz de mensurar quanto um determinado conjunto de

soluções domina outro conjunto. Essa relação é exemplificada na Figura 13.

Figura 13. Indicador de Cobertura

O valor ( ) na Figura 13 indica a porcentagem de elementos em B que são

fracamente dominados por elementos de A. No caso da figura, apenas um quarto das soluções

de B são dominados por alguma solução do conjunto A. Por essa razão, diz-se que a cobertura

de A em relação a B é de 25%. De forma análoga, a coberta de B em relação a A, expressa por

( ), é de 75%, pois três quartos das soluções de A são dominadas por alguma solução de B.

A equação que representa a métrica de cobertura é calculada através de

( )

, (20)

onde b e a representam soluções do conjuntos de solução B e A, respectivamente. O

termo indica que é fracamente dominado pela solução . O valor da métrica

( ) significa que todos os membros de B são fracamente dominados por A.

𝒇𝟏

𝒇𝟐

𝒃𝟏

𝒃𝟐

𝒃𝟑

𝒃𝟒

𝒂𝟏

𝒂𝟐

𝒂𝟑 𝒂𝟒

Page 51: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

39

Capítulo

4

4 Trabalhos Relacionados

Neste capitulo são apresentadas os principais trabalhos que deram um

embasamento teórico para o desenvolvimento desta dissertação.

Page 52: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

40

4.1 Estudo Realizado

Com o crescimento da utilização de dispositivos móveis, o problema de redução de

energia se tornou alvo de diversos estudos científicos. O problema de exploração de

hierarquias de memória visando otimizar a energia consumida pela arquitetura se mostrou

bastante promissor, haja vista que apenas as memórias cache de um sistema são responsáveis

por quase metade de toda energia consumida [2].

Em 2004, Zhang e Vahid [23] apresentaram um estudo sobre o impacto da escolha da

memória cache em sistemas embarcados. Eles mostraram que a memória cache precisa ser

projetada considerando os requerimentos dos tipos de aplicações que serão executadas no

sistema, caso contrário, este sistema desperdiçará energia. Muitas metodologias foram

propostas para explorar arquiteturas de memórias cache visando à redução da energia

consumida e o aumento do desempenho, a maioria delas manipulando o tamanho da cache, o

tamanho da linha e a associatividade. Entretanto, outras soluções como o uso de victim buffer,

a codificação de dados e instruções, controlar a largura de barramento, também são objetos de

estudos para o problema de redução de energia em sistemas embarcados.

Inicialmente, Platune [24] apresentou um ambiente de trabalho para plataformas de

system-on-a-chip (SOC) configuráveis, que permitia a utilização de um método exaustivo para

buscar a configuração de cache que atendesse aos requisitos relacionados com a energia

consumida pelo sistema projetado. Este trabalho, no entanto, considerou um espaço de

exploração muito restrito, baseado apenas em configurações de caches com apenas um nível.

Então, este método de exploração é aceito apenas quando o número de possíveis

configurações é pequeno, caso contrário o tempo necessário para a busca exaustiva pode ser

infactível. Portanto, tentando evitar o processo de busca exaustiva e consequentemente

reduzir o tempo de exploração, métodos baseados em técnicas inteligentes, como algoritmos

evolucionários, começaram a serem aplicadas. Estas técnicas são utilizadas para encontrar um

conjunto de soluções ótimas explorando uma pequena fração do espaço de busca. Então, Palesi

et al. [25] apresentaram uma metodologia baseada em algoritmos genéticos para reduzir o

tempo de exploração, estendendo o trabalho realizado por Platune.

Page 53: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

41

Após o trabalho apresentado por Palesi, uma heurística foi desenvolvida por Zhang et al.

[27] para exploração de configurações de memórias cache baseada no tamanho da cache, no

tamanho da linha e na associatividade. Nesta heurística, os parâmetros da cache são

examinados individualmente e um conjunto de possíveis configurações de cache é gerado

visando à redução da energia consumida para uma determinada aplicação. No entanto, assim

como o trabalho de Platune, esta técnica foi aplicada apenas para hierarquias com um nível de

memória cache. Apesar desta limitação, os resultados alcançados com a aplicação da heurística

mostraram uma redução de até 40% da energia consumida. Em seguida, Gordon-Ross [26]

estendeu esta heurística, apresentada por Zhang, e propôs uma nova heurística chamada TCaT,

que conseguiu atingir resultados ainda mais expressivos, reduzindo em até 53% a energia

consumida pelo sistema.

Finalmente, Silva-Filho et al. propuseram uma série de mecanismos de otimização para

hierarquias de memória com dois níveis de cache. Dentre estes mecanismos desenvolvidos

estão: TECH [28], TECH-CYCLES [29] e TEMGA [30]. Entretanto, estes novos mecanismos foram

criados visando reduzir a energia consumida e aumentar o desempenho de um sistema. Os

resultados apresentados pelo mecanismo TECH-CYCLES mostraram uma redução média de até

41% da energia consumida pela cache de instruções quando comparada com a heurística TCaT.

Além disto, o mecanismo apresentado é capaz de encontrar soluções ótimas explorando

apenas 2% do espaço de busca. Entretanto, para a cache de dados o mecanismo não obteve

bons resultados. A melhoria deste tipo de cache só foi obtida no mecanismo TEMGA, onde os

resultados indicaram uma redução média de aproximadamente 15% para energia consumida

por caches de dados, quando comparados com os resultados obtidos pelo TECH-CYCLES e pela

heurística TCaT. Além disto, o mecanismo TEMGA foi capaz de reduzir em cinco vezes o número

de ciclos necessários para executar doze aplicações do benchmark MiBench.

Todos estes trabalhos apresentados foram baseados em hierarquias de memória com

um ou com dois níveis de cache, que são os tipos de memórias que normalmente já eram

integradas com o chip do processador. Entretanto, as hierarquias de memória precisaram

acompanhar o rápido crescimento da capacidade de processamento dos novos processadores.

Logo, nos últimos anos, um terceiro nível de memória cache (L3) com alta capacidade de

armazenamento virou alvo de estudos [33]. Como resultado destes estudos, memórias caches

L3 passaram a ser integradas e se tornaram um dos principais elementos de processadores com

multi-thread e multi-core [34].

Page 54: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

42

Processadores com o terceiro nível de memória cache já estão disponíveis no mercado,

normalmente em processadores de alto desempenho, devido a grande quantidade de energia

requerida pela cache. Entretanto, processadores com a cache L3 já começaram a aparecer no

mercado de sistemas embarcados [35], em decorrência de resultados de estudos recentes que

permitiram a redução do consumo de energia deste tipo de arquiteturas. Barth et al. [32], em

2011, apresentaram uma nova tecnologia de memória cache baseada em DRAM (Dynamic

random-access memory) que permitiu a utilização da cache L3 embarcada no chip do

processador. Quando comparada com a tecnologia de um processador típico, que dedica cerca

de 40-50% da área do chip para a cache L3, esta nova tecnologia de memória consome apenas

11% da área total do chip, o que reduz drasticamente o consumo de energia do processador.

Recentemente, em 2012, Huang et al. [31], representando a corporação Intel,

apresentou uma nova arquitetura de cache L3 projetada para ter baixo consumo de energia.

Para atingir os requisitos de baixa potência, três estratégias avançadas de projeto foram

apresentadas. A primeira permitiu projetar a cache L3 em pequenas partes independentes.

Depois, foram criados novos tipos de sinais de controle de acesso especulativo para ativar e

desativar partes da memória que não estavam sendo utilizadas. A partir destas duas primeiras

estratégias, foi possível fazer a ativação dinâmica da memória SRAM (Static random-access

memory), colocando as partes que não estavam sendo utilizadas em um modo de espera sem

prejudicar o desempenho. Portanto, aplicando estas estratégias, a cache L3 apresentada obteve

uma redução de energia de 20% quando estava operando em altas frequências e de 40%

quando foi submetida a baixas frequências.

Outras técnicas de redução de energia de cache L3 podem ser encontradas na literatura,

no entanto, a maioria delas é baseada em novas tecnologias de fabricação ou na proposição de

novas arquiteturas para esta memória, seguindo a linha de estudo apresentada por [31] e [32].

Entretanto, para o trabalho apresentado nesta dissertação, o problema de redução de energia

de hierarquias com três níveis de cache é abordado como uma extensão do problema de

exploração de arquiteturas baseadas em um ou dois níveis de cache, conforme visto no início

desta seção. Contudo, devido ao grande número de configurações presente em hierarquias de

memória com três níveis de cache, um mecanismo inteligente visando à redução do tempo de

exploração será apresentado nos próximos capítulos, assim como visto em [25][28][29][30].

Page 55: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

43

4.2 Conclusão

A fim de comparar as técnicas de otimização estudadas no estado da arte, assim como

direcionar a pesquisa realizada neste trabalho, a Tabela 2 apresenta um resumo de algumas

características destas técnicas aplicadas ao problema de exploração de arquiteturas de

memória cache.

Tabela 2. Comparação das técnicas de otimização estudadas.

Tecnologia Simuladores Processador Velocidade Multi-

Objetivo

Benchmarks

TCaT 0.18µm CACTI 2.0 MIPS 6.5% Não MediaBench

TECH 0.18µm CACTI 2.0 MIPS 1.7% Não MediaBench

TECH-

CYCLES

0.08µm eCACTI

SimpleScalar

MIPS 2.0% Sim MiBench

TEMGA 0.08µm eCACTI

SimpleScalar

MIPS 5.8% Sim MiBench

NSGAII 0.08µm CACTI 5.0

SimpleScalar

MIPS 11% Sim Mibench

A partir da análise comparativa das técnicas estudadas foi possível concluir que a

tecnologia utilizada na fabricação de transistores diminuiu na medida em que novas técnicas

foram surgindo. Esta diminuição foi acompanhada pela evolução dos simuladores de

arquiteturas de cache utilizados para estimar a energia consumida, haja vista que a

componente estática da energia se torna cada vez mais relevante quando se diminui o tamanho

do transistor. Outro ponto verificado foi a utilização de modelos de processadores simples,

baseados no processor MIPS, que se tornaram mais relevantes quando os algoritmos

começaram otimizar tanto a energia consumida pela arquitetura, como o desempenho dela

para executar aplicações de diversas áreas representadas pelos benchmarks suites MediaBench

e MiBench. Por fim, foi constatado que as velocidades com que as técnicas de otimização

conseguiram encontrar soluções ótimas, normalmente, foram inferiores a exploração de 10%

do espaço total de busca.

No segundo momento do estudo do estado da arte, foi possível concluir que a memória

cache de terceiro nível começou a ser embarcada nos chip dos processadores, devido ao

avanço da tecnologia de fabricação e ao surgimento de novas estratégias para projetar estes

componentes da hierarquia de memória.

Page 56: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

44

Capítulo

5

5 Metodologia Proposta

Neste capítulo será detalhada a metodologia utilizada para criação deste trabalho.

Nesta metodologia serão descritos o modelo de cálculo de energia e ciclos de configurações de

hierarquias de memória, as adaptações realizadas em ferramentas utilizadas para simular

componentes de memória, o ambiente experimental, a ferramenta utilizada para integrar todos

os elementos envolvidos neste trabalho e, finalmente, o processo de simulação realizado.

Page 57: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

45

5.1 Introdução

A metodologia utilizada para o desenvolvimento deste projeto foi quebrada em nove

etapas. A Figura 14 ilustra estas nove etapas da metodologia através do fluxo de

desenvolvimento do trabalho. As duas primeiras etapas, correspondentes ao estudo

bibliográfico e ao estado da arte, já foram apresentadas nos capítulos anteriores e, portanto,

não serão exploradas novamente. Então, neste capítulo serão apresentadas as demais etapas

realizadas para o desenvolvimento deste trabalho. As etapas que estão em destaque na cor

laranja, referentes à modelagem da evolução diferencial para o problema da exploração de

hierarquias de memória e a análise de resultados, serão tratadas em capítulos separados.

Figura 14. Fluxo de Desenvolvimento do trabalho

Estudo Bibliográfico Estudo do Estado da Arte Definição do Modelo de

Cálculo de Ciclos e Energia Total

Adaptação de Ferramentas

Definição do Ambiente Experimental

Modelagem de Evolução Diferencial para Problema

de Exploração de Hierarquias de Memória

Integração de Ferramentas

Simulação dos Algoritmos de Otimização

Análise dos Resultados

Page 58: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

46

5.2 Definição do Modelo de Cálculo de Ciclos e Energia Total

O modelo de cálculo de ciclos e energia total de uma hierarquia de memória foi

desenvolvido com base no trabalho realizado por Silva Filho et al. [29]. Para um melhor

entendimento do mecanismo, será levado em consideração um sistema baseado em

processador MIPS com uma hierarquia de memória com três níveis de cache conforme

ilustrado na Figura 15. O primeiro nível de cache foi dividido em duas caches, uma dedicada

para o armazenamento de dados e outra para instruções. O segundo e o terceiro nível foram

utilizados como modelos de cache unificada.

Figura 15. Exemplo de sistema baseado em processor MIPS com hierarquia de memória

Para facilitar o entendimento do cálculo de ciclos e energia total, o mecanismo será

dividido em duas etapas. A primeira corresponde ao cálculo do número total de ciclos

necessários para executar uma aplicação, e a segunda ao cálculo da energia total consumida

pela hierarquia de memória. Estas duas etapas serão apresentadas nas subseções a seguir.

5.2.1 Cálculo do Número Total de Ciclos

O número total de ciclos necessários para executar uma aplicação será considerado

como as soma do número ciclos de cada nível da hierarquia, conforme apresentado a seguir:

(21)

Cada componente desta equação será tratada separadamente, devido às

particularidades de cada nível. No entanto, para realizar este cálculo de ciclos será preciso levar

em consideração os tempos de acertos de cada nível de cache. Neste trabalho serão

considerados os tempos de acertos apresentados na Tabela 3. Estes valores foram definidos

baseados nas latências de caches apresentadas em [36].

IC1

DC1

L3 L2 MEM MIPS

Page 59: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

47

Tabela 3. Tempo de acertos de cada nível de cache

Nível e Tipo da Cache Tempo de acerto (ciclos)

Cache de instruções de nível 1 (IC1) 2

Cache de dados de nível 1 (DC1) 3

Cache de instruções de nível 2 (IC2) 13

Cache de dados de nível 2 (DC2) 9

Cache de instruções de nível 3 (IC3) 40

Cache de dados de nível 3 (DC3) 38

Para calcular o número total de ciclos do primeiro nível de cache ( ) é

necessário calcular o número de ciclos das caches de instruções e dados separadamente.

, (22) , (23)

onde as variáveis e representam o número de acertos no primeiro nível

de cache de instruções e dados. Estes números são, então, multiplicados pelo tempo de acerto

nas caches de primeiro nível. Entretanto, como as caches do nível L1 são acessadas em

paralelo, para calcular o valor total de ciclos da cache L1 é preciso levar em consideração o

maior valor de ciclos calculado.

Apesar do segundo nível de memória cache ser unificado, os tempos de acerto para

instruções e dados são diferentes. Portanto, para calcular o número de ciclos total do segundo

nível de cache ( ) será considerada a soma dos ciclos totais decorrentes de acertos

de instruções e de acertos de dados na cache, conforme apresentado na equação a seguir:

( ) ( ) , ( )

onde representa o número de acertos de instruções na cache unificada de nível 2 e

representa o número de acerto de dados. O tempo de acerto de uma instrução em

L2 ( ), determinado na Tabela 3, corresponde a soma do tempo de uma falta

no primeiro nível da cache de instruções mais o tempo de acesso à informação na cache do

segundo nível. De forma similar o é definido pela soma do tempo de uma

falta de dados no primeiro nível com o tempo de acesso ao dado no segundo nível.

Para o terceiro nível de cache, a forma de calcular o número de ciclos total

( ) corresponde a uma extensão das regras definidas para o segundo nível.

Portanto, o número total de ciclos da cache L3 será a soma dos ciclos totais decorrentes de

acertos de instruções e de acertos de dados na cache, conforme mostrado na equação a seguir:

Page 60: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

48

( ) ( ) , (25)

onde e representam o número de acertos de instruções e dados na

cache unificada de nível três, respectivamente. A regra utilizada para definição do valor do

tempo de acerto, tanto para instruções quanto para dados, corresponde a soma do tempo de

uma falta no primeiro nível, mais o tempo de uma falta no segundo nível, somadas ao tempo

de acesso a informação no terceiro nível, uma vez que para ocorrer um acerto no terceiro nível

foi preciso ocorrer uma falta nos níveis inferiores.

A forma de calcular o número total de ciclos da memória principal ( ), no

entanto, difere um pouco da forma como foi calculado para memórias caches. A variável

principal neste calculo será o número de faltas que ocorrem no nível três de cache, pois cada

uma destas faltas ocasiona um acesso à memória principal. Dessa forma, define-se o número

total de ciclos da memória principal como sendo:

, (26)

onde , representa a penalidade em ciclos ocasionada por acessar a memória

principal do sistema. O valor desta penalidade, no entanto, depende do tamanho da linha de

que está sendo acessada. Os valores de penalidade considerados para este trabalho estão

apresentados na Tabela 4 e foram definidos segundo [37].

Tabela 4. Valores de penalidade por acesso a memória principal

Tamanho da linha Penalidade em ciclos

16 Bytes 82

32 Bytes 84

64 Bytes 88

5.2.2 Cálculo da Energia Total Consumida

Partindo de um nível mais alto, a energia total consumida pela hierarquia de memória

pode ser considerada como sendo a soma das contribuições da energia consumida por cada

elemento que compõe a arquitetura. Logo, a equação que define a energia total consumida

pelo o sistema apresentando na Figura 15 pode ser defina da seguinte forma:

( )

Page 61: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

49

Na equação 27 a componente representa a energia consumida pela memória

principal, corresponde a energia consumida pela cache de instruções do nível 1,

corresponde a energia consumida pela cache de dados de nível 1, e representam as

energias consumidas pelo segundo e terceiro nível de cache, respectivamente.

A forma de calcular a energia consumida de qualquer uma as componentes da energia

total ( ) é igual, com exceção da componente que tem o seu próprio modelo.

Portanto, o cálculo destas componentes será explicado de forma genérica, levando em

consideração uma variável , onde representa o nível da hierarquia de memória cache.

A energia total consumida por um nível de memória cache ( ) é formada por duas

componentes, a energia dinâmica e a energia estática. A componente dinâmica está

relacionada com a potência dissipada da carga/descarga dos capacitores, assim como durante a

subida/descida de uma transição decorrente de um acesso realizado a memória. O número de

acessos à memória cache, portanto, está diretamente ligada com a energia dinâmica dissipada.

Já a componente estática da energia corresponde as correntes de fuga que estão associadas à

tecnologia dos componentes eletrônicos que compõem a memória. Logo, é possível definir

da seguinte forma:

, ( )

onde corresponde a componente dinâmica e corresponde a componente estática

de uma memória cache de nível .

O cálculo desta componente dinâmica da energia pode ser realizado da seguinte forma:

, (29)

onde a variável corresponde a energia dinâmica por acesso ao nível da hierarquia

de memória e corresponde ao número total de acessos a esta memória.

O cálculo da componente estática é realizado através da potência dissipada pelo

componente de memória e do tempo de utilização ( ) da memória. Então, a

é definida da seguinte forma:

, (30)

Page 62: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

50

onde, é a potência dissipada por um componente de cache de nível e

é uma variável obtida a partir do número total de ciclos necessários para

executar uma aplicação.

A última variável necessária para estimar a energia total de uma hierarquia de memória

corresponde à energia dissipada pela memória principal ( ). Esta energia pode ser

generalizada pela potência média estimada da memória multiplicada pelo tempo total de

utilização da memória.

(31)

A potência média consumida pela memória principal pode ser obtida através um

simulador de memória, onde é levada em consideração a tecnologia de memória de um modelo

específico, assim como o número de acessos de leitura da memória, decorrentes de faltas no

nível inferior, e o número de acessos de escrita, decorrentes de write-backs realizados pelo

nível inferior.

5.3 Adaptação de Ferramentas

Para realização do cálculo do número total de ciclos e da energia consumida de uma

hierarquia de memória, conforme visto na seção anterior, foi preciso utilizar e adaptar três

ferramentas de simulação de arquiteturas de memória. A primeira delas corresponde ao pacote

de ferramentas de simulação de arquiteturas apresentado na seção 2.5, o SimpleScalar, mais

particularmente da ferramenta chamada sim-cache que está disponível neste pacote. A

segunda corresponde a ferramenta para estimar a energia dinâmica por acesso e a energia

estática de memórias cache. A terceira e última ferramenta, corresponde a um modelo que

simula uma memória principal, disponibilizado pela Micron [16], capaz de estimar a potência de

uma memória DDR3L.

Nas subseções a seguir será detalhado o que foi realizado em cada uma destas

ferramentas para viabilizar a criação de um mecanismo unificado para estimar a energia e

desempenho de hierarquias de memória com três níveis de cache. No entanto, a forma de

utilização destas ferramentas será apresentada apenas na seção 5.4, onde será definido o

ambiente experimental deste trabalho.

Page 63: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

51

5.3.1 Adaptação do Sim-Cache

O sim-cache foi concebido baseado em hierarquias de memória com até dois níveis de

cache, conforme visto anteriormente. No entanto, como a proposta deste trabalho é explorar

hierarquias de memórias mais complexas com três níveis de cache, foi necessário adaptar a

ferramenta para calcular o número de faltas e acertos para esta nova hierarquia. Para tanto, foi

necessário alterar o arquivo “sim-cache.h” disponível no pacote de ferramentas do

SimpleScalar. O fluxo de desenvolvimento das alterações realizadas no simulador está ilustrado

na Figura 16.

Figura 16. Fluxo de desenvolvimento da expansão do sim-cache

Em um primeiro momento, foi necessário adaptar o formato de entrada dos parâmetros

de configuração da hierarquia de memória, e expandir o formato para suportar o terceiro nível

de memória cache. O formato de entrada permite configurar uma cache L3 tanto com as caches

de instrução e dados unificadas, quanto separadas.

No segundo momento, foi preciso expandir o simulador para criar o modelo de cache

L3, conforme especificado nos parâmetros de entrada, assim como validar a configuração da

hierarquia em geral. Logo, nesta etapa, foi necessário expandir as regras de validação de uma

hierarquia de memória para suportar o terceiro nível de cache unificado ou separado.

Na etapa seguinte, foi desenvolvida a lógica de acesso a cache do terceiro nível. Para

tanto, foi necessário expandir o tratamento das informações de faltas no nível inferior (L2), que

consequentemente geram um acesso no nível L3, assim como tratar as escritas decorrentes de

L2 para manter a coerência das caches através da política de write-back. Além do tratamento

dos acessos realizados ao terceiro nível de cache, nesta etapa foi necessário criar um método

1.Configuração do simulador

2.Criação dos modelo de memória

3.Criação de gerenciador de acesso a cache L3

4.Geração de resultados

Page 64: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

52

para tratamento de faltas em L3. Então, foram criadas variáveis para monitorar todo o processo

de gerenciamento do terceiro nível de cache.

Finalmente, através das variáveis de monitoramento criadas na etapa anterior, o

arquivo de saída do simulador foi expandido para exibir as informações relacionadas a uma

hierarquia de memória com três níveis de cache.

5.3.2 Adaptação do CACT 6.5

A versão do CACT 6.5 apresentada na seção 2.6 já possui o suporte necessário para

simular caches de terceiro nível. No entanto, a ferramenta precisou ser alterada para permitir

uma interface de configuração por linha de comando, uma vez que só era possível utilizar a

ferramenta mediante a configuração de arquivo de parâmetros. A interface por linha de

comando foi escolhida para simplificar a execução da ferramenta, focando apenas nos

parâmetros de memória cache explorados neste trabalho: tamanho da cache, o tamanho da

linha, associatividade, tecnologia de transistor e nível da cache.

5.3.3 Adaptação do Simulador de Memória Principal

O modelo criado para estimar a potência da memória principal foi desenvolvido com

base na planilha fornecida pela Micron, descrita na seção 2.7. A partir das especificações da

memória e das fórmulas presentes no simulador foi possível criar um modelo em software

capaz de estimar a potência da memória recebendo como entrada o número de leituras e

escritas realizadas nesta memória. A criação deste modelo foi necessária para a integração do

simulador da Micron com o restante do ambiente que será apresentado na seção a seguir.

5.4 Definição do Ambiente Experimental

Nesta seção será apresentado o ambiente experimental criado neste trabalho. Nele será

especificado o espaço de exploração das arquiteturas de memória cache, os benchmarks que

foram escolhidos para simulação, o detalhamento do mecanismo de cálculo de ciclos e energia

total, assim como as etapas preliminares deste mecanismo.

Page 65: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

53

5.4.1 Especificação da Arquitetura

Para este trabalho serão estudadas arquiteturas de memória baseadas em três níveis de

cache, sendo o primeiro nível dividido em cache de instruções (IC1) e cache de dados (DC1), o

segundo nível unificado (L2), o terceiro nível também unificado (L3) e uma memória principal

baseada no modelo DDR3L. Para cada uma destas caches serão explorados os seguintes

parâmetros: associatividade, tamanho da linha e tamanho da cache. No entanto, para definir os

intervalos de variação destes parâmetros, foi realizada uma pesquisa com processadores de

mercado. O resultado desta pesquisa, apresentado na Tabela 5, permitiu definir o espaço de

exploração das configurações de arquiteturas de memória cache.

Tabela 5. Espaço de exploração dos parâmetros da hierarquia de memória cache

Parâmetro Cache de

Instruções L1 Cache de Dados L1

Cache L2 Cache L3

Tamanho da Cache

4KB 8KB

16KB 32KB 64KB

4KB 8KB

16KB 32KB 64KB

256KB 512KB 1MB 2MB

4MB 8MB

16MB

Tamanho da Linha 32B 64B

32B 64B

32B 64B

32B 64B

Associatividade 2 4

2 4 8

8 16

16 64

O total de combinações destes parâmetros de cache corresponde a 115.200 diferentes

configurações de hierarquias de memória cache. No entanto, muitas destas configurações não

são factíveis e, portanto, precisam ser descartadas. Logo, para validação de uma configuração

foram adotadas as três regras apresentadas a seguir:

1. Uma cache de nível superior não pode ter o tamanho menor que uma cache de

nível inferior;

2. O tamanho da linha de uma cache de nível superior não pode ser menor do que

o tamanho da linha de uma cache de nível inferior;

3. A associatividade de uma cache de nível superior não pode ser menor do que a

associatividade de uma cache de nível inferior.

Page 66: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

54

Então, aplicando as regras de validação de uma configuração de hierarquia de memória,

o número de combinações válidas cai para 28.800 configurações. Este valor, portanto,

representa o espaço de exploração de arquiteturas adotado para este trabalho.

5.4.2 Benchmarks

Os Benchmarks representam conjuntos de aplicações específicas utilizadas para simular

aplicações de diferentes áreas. A utilização de benchmarks permite analisar o comportamento

de uma arquitetura de sistema embarcado para executar diferentes tipos de aplicações. Dessa

forma, através de simulações destas aplicações para diferentes arquiteturas, é possível

encontrar as arquiteturas mais adequadas para realizar uma atividade específica, como

processar de imagens, sons e cálculos matemáticos em geral.

Os comportamentos dos sistemas embarcados que serão analisados neste trabalho são

desempenho e energia consumida pelo sistema. Para tanto, dois benchmarks foram escolhidos

visando explorar aplicações de baixa, média e alta complexidade. O primeiro foi o Mibench

[17], que contém aplicações que não exigem alto poder computacional, mas que estão

presentes em diversas áreas. O segundo benchmark escolhido foi o MediaBenchII [18], pois ele

é composto por aplicações que exigem maior capacidade de processamento, porém são mais

específicas para a área de processamento de imagens. O conjunto de aplicações de ambos os

benchmarks totalizam nove aplicações, detalhadas separadamente nas Tabelas 6 e 7 seguir.

Tabela 6. Aplicações selecionadas do MediaBenchII

Aplicação Categoria Descrição

djpeg Processamento de

Imagens

Algoritmo mais utilizado para compressão e descompressão de imagens. Está presente na maioria dos sistemas embarcados que lidam com imagens, como câmeras digitais, celulares, etc.

h263enc Processamento de

Vídeo

Compressor de vídeo padrão. Originalmente desenvolvido para comprimir vídeos com alta taxa de compressão para viabilizar a utilização dele em videoconferências.

mpeg2enc Processamento de

Vídeo Padrão de compressão de imagens associadas ao áudio.

mpeg2dec Processamento de

Vídeo Padrão de descompressão de imagens associadas ao áudio.

Page 67: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

55

Tabela 7. Aplicações selecionadas do Mibench

Aplicação Categoria Descrição

Bitcount Controle Automotivo

e Industrial Realiza testes de habilidade de manipulação de bits de um processador, contando o número de bits em um vetor de inteiros.

CRC32 Redes Realiza a checagem de bits para detectar erros de transmissão de dados.

Dijkstra Redes Constrói um grande grafo em uma representação de matriz adjacência e calcula o menor de todos os caminhos entre todos os pares de nós usando o algoritmo Dijkstra repetidas vezes.

SHA Segurança Algoritmo de criptografia que produz uma mensagem de 160 bits.

Susan Controle Automotivo

e Industrial

Faz parte de um pacote de reconhecimento de imagem. Foi desenvolvido para reconhecimento de bordas e curvas em uma Imagem de Ressonância Magnética de cérebro.

5.4.3 Extração dos Parâmetros de Desempenho

A extração dos parâmetros de desempenho de uma configuração de memória cache é

realizada através do simulador sim-cache. O processo completo para extração destes

parâmetros está ilustrado na Figura 17.

Figura 17. Fluxo para extração dos parâmetros de desempenho de uma arquitetura

sim-cache

Especificação da hierarquia de

memória cache

Arquivo com os resultados

Interpretação dos resultados

Faltas Acertos Acessos

Write-backs

Extração dos parâmetros de desempenho

Aplicação

Page 68: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

56

O processo inicia com a definição das entradas do simulador. São duas as entradas que

devem ser escolhidas: a especificação da hierarquia de memória cache e a aplicação que será

simulada. Estes parâmetros de entradas são passados através de linha de comando. O formato

padrão para configuração da hierarquia é definido da seguinte forma:

<name>:<nsets>:<bsize>:<assoc>:<repl>

O significado de cada um destes parâmetros é apresentado na Tabela 8. O parâmetro de

tamanho da cache não é especificado diretamente, mas pode ser obtido através do produto

dos parâmetros <nsets>, <bsize>, <assoc>.

Tabela 8. Parâmetros de configuração de uma cache

Parâmetro Descrição

<name>

Nome da cache que está sendo definida. O nome da cache deve ser iln ou dln, onde o n representa o nível da cache que está sendo definida.

<nsets> Número de conjuntos da cache.

<bsize> Tamanho da linha da cache em bytes.

<assoc> Associatividade da cache.

<repl> Política de substituição de uma linha, 'l'=LRU, 'f'=FIFO, 'r'=random.

Para cada uma das caches presente na hierarquia de memória a ser simulada deve-se

repetir estes parâmetros de configuração, <config>. A definição de cada nível da hierarquia

deve ser feita da seguinte forma:

-cache:il1 il1: <config> → configura uma cache de instruções de nível um.

-cache:dl1 dl1: <config> → configura uma cache de dados de nível um.

-cache:il2 dl2 -cache:dl2 ul2: <config> → configura uma cache unificada de nível dois.

-cache:il3 dl3 -cache:dl3 ul3: <config> → configura uma cache unificada de nível três.

Após a palavra “cache” é definido o tipo da memória cache que se deseja configurar. No

caso de uma cache unificada, antes de se escrever a configuração é preciso passar um

parâmetro que especifique que a cache de instruções estará junta com a cache de dados. Caso

não seja necessário usar os três níveis de configuração a palavra “none” deve ser passada após

a definição do tipo da cache.

Page 69: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

57

A seguir, é descrito um exemplo de linha de comando para simulação de uma

arquitetura no sim-cache, considerando uma hierarquia de três níveis com segundo e terceiro

níveis unificados. As configurações da cache de dados e de instruções de primeiro nível são

dadas por: 4kbytes=64nsets*32bsize*2assoc, 32 bytes de tamanho de linha e política de

substituição LRU. As configurações de cache unificada de segundo nível são dadas por:

256kbytes=1024nsets*32bsize*8assoc, 32 bytes de tamanho de linha e política de substituição

LRU. Por fim, as configurações de cache unificada de terceiro nível são dadas por:

4Mbytes=8192nsets*32bsize*16assoc, 32 bytes de tamanho de linha e política de substituição

LRU. A linha de comando fornecida para o sim-cache para simular essa configuração de

arquitetura, para uma aplicação qualquer seria:

./sim-cache -redir:sim ./output.txt -cache:dl1 dl1:64:32:2:l -cache:il1 il1:64:32:2:l -cache:il2 dl2 -

cache:dl2 ul2:1024:32:2:l -cache:il3 dl3 -cache:dl3 ul3:8192:32:16:l ./<nome_da_aplicacao>

<parametros_da_aplicacao>

Cada aplicação tem um formato dos seus parâmetros de entrada diferente e, portanto,

também deve ser especificado na mesma linha de comando utilizada para executar o sim-

cache. A diretiva “-redir:sim” é responsável por gerar resultados estatísticos da simulação para

um arquivo de saída, o que no exemplo acima foi direcionado para o arquivo output.txt. Por

padrão, os resultados são gerados na tela do computador. Desta forma, ao final de cada

simulação têm-se as informações estatísticas sobre cada componente da hierarquia de

memória cache. A partir dos dados estatísticos, são extraídas as informações de faltas e

acertos, acessos e write-backs que são utilizadas na etapa seguinte de cálculo de energia.

5.4.4 Extração dos Parâmetros do Modelo de Energia

Para extrair os parâmetros de energia total consumida por uma hierarquia de memória

cache foi utilizado o simulador CACTI juntamente com o simulador de memória principal da

Micron, o Power Calc DDR3L. No entanto, ambos os simuladores precisam das informações

extraídas na etapa de simulação da hierarquia para conseguir estimar os valores de energia de

cada componente de memória da arquitetura. O fluxo de extração destes parâmetros é

apresentado na Figura 18.

Page 70: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

58

Figura 18. Fluxo para extração dos parâmetros de energia

Inicialmente, a ferramenta de simulação de memórias cache, CACTI, recebe como

entrada um arquivo de configuração chamado “cache.cfg”, que permite definir os seguintes

parâmetros relacionados com a cache: tamanho da cache; tamanho da linha; associatividade;

tecnologia do transistor; nível da cache. Todos os parâmetros são alterados de acordo com a

cache a ser simulada. No entanto, para este trabalho, o valor de 32nm foi utilizado como valor

padrão para tecnologia do transistor. Uma vez configurado o arquivo, é possível iniciar a

simulação através da seguinte linha de comando:

./cacti –infile cache.cfg > cacti.txt

Segundo a linha de comando, os dados são direcionados para o arquivo cacti.txt. A partir

desse arquivo são extraídos os valores de energia dinâmica por acesso e a potência dissipada

pela cache relacionada à componente estática da energia.

O simulador da Micron é utilizado para extrair a informação da potência consumida pela

memória principal. Ele recebe como entrada a especificação completa da memória que será

CACTI

Parâmetros da cache

Arquivo com os resultados

Interpretação dos resultados

Potência dissipada da cache Potência dissipada pela memória principal

Energia consumida/acesso

Extração dos parâmetros de

energia

Parâmetros da memória principal

Simulador Micron

Planilha com resultados

Page 71: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

59

simulada e a configuração do sistema no qual a memória será utilizada. A especificação da

memória pode ser obtida através do datasheet disponibilizado pelo fabricante. Deste

documento será necessário extrair os valores presentes na Tabela 9.

Tabela 9. Parâmetros de especificação da memória principal

Parâmetro Descrição Valor Unidade

Maximum VCC 1,435 V

Minimum VCC 1,283 V

Number of DQ strobes (DQS) per DRAM 4

Number of data mask (DM) per DRAM 2

IDD0 Maximum active precharge current 90 mA

IDD2P Maximum precharge power-down standby current 35 mA

IDD2N Maximum precharge standby current 47 mA

IDD3P Maximum active power-down standby current 55 mA

IDD3N Maximum active standby current 70 mA

IDD4R Maximum read burst current 270 mA

IDD4W Maximum write burst current 215 mA

IDD5A Maximum burst refresh current 215 mA

tCK used for current measurements 1,25 ns tRRD Minimum activate-to-activate timing (different bank) 7,5 ns tRC Minimum activate-to-activate timing (same bank) 48,75 ns tRAS tRAS used for IDD0 calculation 35 ns tRFC (MIN) Minimum refresh-to-refresh cycle time 340 ns tREFI Average periodic refresh cycle time 7,8 µs tCK (MIN) Minimum tCK cycle rate 1,25 ns tCK (MAX) Maximum tCK cycle rate 3,3 ns

Os valores preenchidos na Tabela 9 correspondem aos valores da especificação de uma

memória DDR3L de 1GB da Micron, a qual foi adotada como padrão para este trabalho por ser

o modelo mais simples da linha de memórias DDR3L fabricadas pela Micron.

Os parâmetros das condições de uso da memória no sistema são: a tensão de entrada, a

frequência do relógio, o percentual de ciclos de relógio em que a memória ficou lendo dados e

o percentual de ciclos de relógio em que a memória ficou escrevendo dados. Os dois primeiros

receberam valores padrões de 1,35V e 800MHZ respectivamente. Os outros dois parâmetros

são calculados de acordo com o número de faltas e de write-backs do último de nível de

memória cache.

Uma vez configurado, o simulador da Micron gera como saída uma planilha com o valor

estimado da potência dissipada pela memória principal. Este valor, junto com valores extraídos

do CACTI, será utilizado para o cálculo de energia total apresentado na próxima seção.

Page 72: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

60

5.4.5 Mecanismo de Cálculo de Energia e Ciclos Total

O mecanismo de cálculo de energia e ciclos total visa juntar a extração dos parâmetros

de desempenho com a extração dos parâmetros de energia e aplicar estes valores nas

equações definidas nas seções 5.2.1 e 5.2.2 a fim de obter o valor da energia e ciclos total. O

processo utilizado pelo mecanismo para obter estes valores está ilustrado na Figura 19.

Figura 19. Processo do mecanismo de cálculo de energia e ciclos total

O processo é iniciado através de uma configuração de uma arquitetura para ser

avaliada. Uma aplicação é então selecionada para ser submetida à configuração da arquitetura

especificada. Estas duas entradas são enviadas para o modelo de extração de parâmetros de

energia, baseado nos simuladores vistos na seção 5.4.4, e para o modelo de extração de

parâmetros de desempenho, baseado no simulador apresentado na seção 5.4.3. Finalmente, a

partir dos resultados gerados pelos simuladores são aplicadas as fórmulas 21 e 27 para realizar

o cálculo dos valores de ciclos e de energia total.

Extração dos parâmetros de desempenho

Configuração da arquitetura

Aplicação

Extração dos parâmetros de

energia

Potência dissipada da cache Potência dissipada pela memória principal

Energia consumida/acesso

Faltas/cache Acertos/cache Acessos/cache

Write-backs/cache

Cálculo de Energia e Ciclos Total

Valor Total de Energia Valor Total de Ciclos

Page 73: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

61

5.5 Mecanismo de exploração

O mecanismo de exploração de arquiteturas utilizado neste trabalho é capaz de gerar

informações detalhadas sobre desempenho e consumo de energia para diferentes

configurações de hierarquias de memória, conforme ilustrado na Figura 20 que apresenta todas

as etapas deste mecanismo.

Figura 20. Fluxo do mecanismo de exploração

Quando o objetivo é explorar todo o espaço de busca, o mecanismo utiliza um processo

de simulação exaustiva, onde todas as configurações são avaliadas. Entretanto, como o espaço

de busca pode ser muito grande, o que requer muito tempo para simular exaustivamente, um

heurística de busca pode ser aplicada para encontrar, de forma mais rápida, um conjunto de

soluções ótimas quanto aos objetivos de redução de energia e de ciclos para executar uma

determinada aplicação. No capítulo 6 será apresentado um algoritmo de busca baseado em

evolução diferencial que explica detalhadamente o processo de exploração de arquiteturas de

memória visando redução de energia e desempenho.

Aplicação Configurações de

arquiteturas

Tipo de Exploração

Simula Configuração

Calcula Ciclos e Energia Total

Última Configuração?

Seleciona Próxima Configuração

Seleciona uma ou mais Configurações

Avalia Resultados da Heurística

Calcula Ciclos e Energia Total

Terminou

Resultados

sim sim

não

não

Exaustiva

Heurística

Page 74: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

62

5.6 Integração de Ferramentas

Para automatizar o processo de exploração de arquiteturas de memória foi preciso

integrar todos os simuladores de arquitetura, juntamente com o mecanismo de exploração

proposto, em uma ferramenta capaz de explorar diferentes configurações de arquiteturas e

gerar os resultados com informações de desempenho e energia consumida de cada

configuração explorada.

A ferramenta selecionada para realizar esta integração foi uma ferramenta chamada

CAeTO, que foi desenvolvida pelo próprio grupo de pesquisa. Para entender melhor o

funcionamento desta ferramenta, sua estrutura foi dividida em três partes, conforme ilustrada

na Figura 21 a seguir.

Figura 21. Estrutura do CAeTO

IL1 DL1 L3 L2 MEM 𝝁𝑷

IL1 DL1 L3 L2 MEM 𝝁𝑷

IL1 DL1 L3 L2 MEM 𝝁𝑷

Aplicação

Mecanismo de Exploração

Resultados

Mapeamento

Apl. 1

Apl. 2

Apl. n

...

Arq. 1

Arq. 2

Arq. n ...

Map. n

Map. 2

Map. 1

Resultado Arq. n Resultado Arq. 2

Resultado Arq. 1

Especificação da Plataforma

Estratégia de Exploração de Arquiteturas

Análise de Resultados

Page 75: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

63

A primeira etapa, referente à especificação da plataforma, consiste no mapeamento das

arquiteturas com as aplicações que serão utilizadas para estudo destas arquiteturas. Uma

arquitetura, no entanto, é definida pelos seguintes parâmetros: o número e o tipo das caches, a

tecnologia do transistor, e os parâmetros de projeto de cada uma das caches (tamanho da

linha, associatividade, tamanho da cache). A ferramenta permite que sejam mapeadas várias

arquiteturas e aplicações ao mesmo tempo. Dessa forma, será possível executar as demais

etapas do processo em paralelo.

Para este trabalho, portanto, foi preciso estender esta primeira etapa para suportar a

especificação de hierarquias de memória com três níveis, assim como estender os intervalos de

configuração dos parâmetros de projeto de uma cache.

A segunda etapa corresponde a estratégia de exploração de arquiteturas apresentada

na seção 5.5. Nesta etapa as arquiteturas mapeadas são submetidas ao mecanismo de

exploração para obter as informações de desempenho e consumo de energia. Neste trabalho,

foi preciso alterar o mecanismo de exploração para integrá-lo com as ferramentas de simulação

de arquiteturas adaptadas, o SimpleScalar, o CACTI e o simulador da Micron. Além disto, foi

preciso substituir o modelo de cálculo de energia e ciclos total pelo modelo apresentado na

seção 5.2. Adicionalmente, o mecanismo de exploração foi expandido para suportar uma nova

técnica de otimização multi-objetivo baseada no algoritmo de evolução diferencial. Por fim,

duas outras técnicas de otimização, NSGAII e SPEA2, já presentes na ferramenta, foram

expandidas para suportar simulações de arquiteturas com hierarquias de memória de três

níveis de cache.

A terceira e última etapa consiste na geração e visualização de resultados. Estes

resultados correspondem às informações de energia consumida e desempenho das

arquiteturas simuladas. Entretanto, quando a simulação é realizada através de heurísticas de

busca, indicadores sobre a qualidade da busca também podem ser adicionados a estes

resultados. Para este trabalho, no entanto, apenas a parte de geração de resultados foi

expandida para suportar as saídas relacionas a hierarquias de memória com três níveis. Logo, a

análise de resultado teve que ser feita de forma separada, utilizando os arquivos de saída

gerados pela ferramenta.

Page 76: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

64

A integração com o CAeTO, portanto, foi importante para facilitar o processo de

configuração e simulação das arquiteturas de memória, permitindo realizar mais simulações em

menos tempo e com menor esforço.

5.7 Simulação dos Algoritmos de Otimização

A metodologia utilizada para realizar as simulações foi dividida em três etapas: (i)

simulações exaustivas; (ii) simulações com o algoritmo de otimização proposto neste trabalho;

(iii) simulações das técnicas de otimização adaptadas.

Na primeira etapa foram realizadas as simulações exaustivas para cada uma das nove

aplicações, dos benchmarks MiBench e MediaBenchII, definidas na seção 5.4.2. O processo de

simulação exaustiva está apresentado na Figura 22 a seguir.

Figura 22. Processo de simulação exaustiva

Inicialmente uma das nove aplicações é selecionada para ser simulada junto a uma

arquitetura. Depois, são geradas diferentes combinações de parâmetros de hierarquias de

memória com três níveis de cache. Em seguida são identificadas as combinações que resultam

em configurações válidas. Então, é feita a simulação de cada uma destas configurações geradas.

Por fim, é gerado um arquivo de saída com as informações detalhadas sobre cada cache

simulada, assim como é registrado o valor da energia total consumida e do número de ciclos

Gerar combinações de parâmetros

Salvar Resultado

Simular Todas Configurações

Selecionar Aplicação

INÍCIO

FIM Última

Aplicação? Validar Configurações

não

sim

Page 77: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

65

total necessários para executar a aplicação. O processo, então, volta para etapa inicial

realizando a simulação para uma nova aplicação.

Na segunda etapa foram realizadas as simulações para permitir a realização da análise

do mecanismo de otimização apresentado no capítulo 6. Assim como o processo de simulação

exaustiva, este algoritmo foi aplicado para cada uma das nove aplicações selecionadas. No

entanto, a fim de reduzir o tempo de simulação da segunda etapa, os arquivos gerados pelas

simulações exaustivas foram utilizados como banco de dados para extrair as informações de

energia e ciclo de uma determinada configuração de arquitetura. Dessa forma, não foi preciso

submeter uma configuração gerada ao mecanismo de cálculo de energia e ciclos. O processo de

simulação desta etapa está apresentado na Figura 23.

Figura 23. Processo de simulação do algoritmo de otimização proposto

O processo inicia com a escolha de uma aplicação. Em seguida é realizada a

configuração dos parâmetros do mecanismo de otimização. A determinação desta configuração

Variar Mecanismo?

Configurar Mecanismo de Otimização

Simular Configurações

Selecionar Configurações

Terminou Otimização?

Salvar Resultados

sim

não

Selecionar Aplicação

sim

sim

INÍCIO

FIM Última Aplicação?

não

não

30x

Inicializar Algoritmo

não

sim

Page 78: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

66

é fundamental para encontrar melhores soluções em um espaço de tempo menor. Portanto,

para a técnica proposta foram estudadas diversas configurações a fim de se obter o melhor

valor dos parâmetros de entrada. Uma vez configurado, o mecanismo de otimização é

inicializado e começa o seu ciclo de simulações. Nesta fase, ele seleciona um conjunto de

soluções para serem simuladas, executa a simulação e verifica se o critério de parada foi

satisfeito. Caso tenha terminado, os resultados são salvos em um arquivo. A execução do

algoritmo é, então, repetida trinta vezes, a fim de se obter um resultado mais concreto sobre o

desempenho do algoritmo. Em seguida é verificada se será simulada uma nova configuração do

mecanismo para a mesma aplicação. Finalmente, é verificado se será feita uma nova rodada de

simulações para uma nova aplicação. Caso todas as nove aplicações tenham sido simuladas, o

processo termina.

Na última etapa, foram realizadas simulações para as três técnicas de otimização

apresentadas neste trabalho, com o objetivo de medir o desempenho de cada uma destas

técnicas, para em seguida compará-las. As três técnicas são: NSGAII, SPEA2 e o algoritmo

proposto baseado em evolução diferencial. O processo de simulação desta etapa foi similar ao

da etapa anterior. No entanto, como os parâmetros de configuração dos algoritmos foram

fixados, o ciclo de variação do mecanismo foi desconsiderado, passando-se logo para

verificação do ciclo de aplicações. Dessa forma, cada algoritmo foi executado 30 vezes para

cada uma das aplicações dos benchmarks selecionados.

Page 79: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

67

Capítulo

6 6 Evolução Diferencial Aplicada ao

Problema de Exploração

Este capítulo tem como propósito apresentar uma técnica de otimização

desenvolvida para exploração de arquiteturas de sistemas com hierarquias de memórias com

três níveis de cache. A técnica apresentada é baseada no algoritmo evolucionário chamado de

Evolução Diferencial.

Page 80: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

68

6.1 Introdução

A técnica de otimização apresenta neste capítulo corresponde a um algoritmo

evolucionário baseado em evolução diferencial que foi adaptado ao problema de exploração de

arquiteturas de memória visando redução de energia e desempenho. Neste capítulo, portanto,

será apresentado o mapeamento do espaço de decisão em um espaço de objetivos, assim

como o mapeamento das soluções em parâmetros de uma hierarquia de memória. Por fim,

será apresentado o algoritmo de evolução diferencial baseado nestes mapeamentos.

6.2 Mapeamento das Soluções

O mapeamento das soluções visa descrever como cada solução do problema é

representada. Em algoritmos evolucionários cada solução é representada na forma de um

indivíduo, que pode definido de várias formas. Para o problema de exploração de arquiteturas

de memória, um indivíduo representa uma configuração de uma arquitetura. Para arquiteturas

com hierarquias de memória de três níveis de cache, um indivíduo é capaz de representar a

associatividade, o tamanho da linha e o tamanho de cada cache. A fim de representar estes

parâmetros, o mapeamento das soluções proposto é criar indivíduos que codificam estes

parâmetros da arquitetura do sistema em números inteiros. Logo, um indivíduo é representado

por um vetor de números inteiros, conforme ilustrado na Figura 24.

Figura 24. Representação de um indivíduo

4 32 2048

IC1 DC1 L2 L3

Tamanho da cache

Tamanho da linha

Associatividade

Page 81: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

69

O vetor de solução é dividido em quatro seções, cada seção representa uma cache da

hierarquia. A cache de instruções do primeiro nível e a cache de dados do primeiro nível são

representadas por IC1 e DC1, respectivamente. A cache unificada do segundo nível corresponde

ao L2 e a cache unificada de terceiro nível corresponde ao L3. Cada uma destas caches possui

três números inteiros associados, onde cada inteiro representa um parâmetro de configuração

da cache. No exemplo da Figura 24, a cache L2 foi expandida para representar o vetor de

números inteiros associado a ela. Neste exemplo, portanto, o indivíduo representado possui

uma cache L2 com tamanho de 2048 bytes, um tamanho de linha de 32 bytes e uma

associatividade de valor 4. Logo, para o problema de exploração de arquiteturas com

hierarquias de memória com três níveis de cache, podemos representar uma configuração

através de um indivíduo que corresponde a um vetor de doze números inteiros.

6.3 Mapeamento do Espaço de Exploração

O mapeamento das soluções em indivíduos formados por vetores de doze números

inteiros permite definir o espaço de exploração, também chamado de espaço de busca ou de

decisão, como um espaço com doze dimensões que representa o conjunto das possíveis

soluções. Para este trabalho, o intervalo de variação de cada dimensão do espaço de

exploração foi definido na Tabela 5. Cada solução contida no espaço de busca é mapeada para

o espaço de objetivos, que representa os objetivos que serão otimizados. Portanto, para

avaliação de uma solução, representada por uma configuração de arquitetura, é preciso

mapeá-la no espaço de objetivos, que corresponde a energia consumida e ao número de ciclos.

Embora a busca seja realizada no espaço de decisão, a qualidade da solução é medida

através do espaço de objetivos. Para o problema de otimização de hierarquia de memória

cache os objetivos são minimizar os valores de energia e ciclos que uma configuração de

memória necessita para executar uma determinada aplicação.

Portanto, o mapeamento do espaço de exploração no espaço de objetivos será

fundamental para o processo de busca otimizada apresentado na sessão a seguir, haja vista que

dessa forma é possível qualificar as soluções e direcionar a busca para regiões mais

promissoras.

Page 82: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

70

6.4 Evolução Diferencial Aplicada a Exploração de Arquiteturas

O algoritmo de evolução diferencial originalmente foi desenvolvido para problemas de

otimização de domínio contínuo, conforme visto na seção 3.2.4. No entanto, o algoritmo

evolucionário baseado em evolução diferencial apresentado nesta seção corresponde a uma

variação do algoritmo adaptado para o problema de otimização multi-objetivo de domínio

discreto. Portanto, o algoritmo proposto será chamado de evolução diferencial discreta multi-

objetivo (EDDM). O detalhamento da técnica será feito com base no pseudocódigo, desta

adaptação do algoritmo, apresentado no Quadro 7.

Quadro 7. Pseudocódigo da evolução diferencial para otimização discreta multi-objetivo.

1: Gere uma população inicial com indivíduos selecionados de forma aleatória

2: Calcule os objetivos para cada indivíduo da população

3: while o critério de para não for satisfeito do

4: for cada indivíduo de

5: Selecione três indivíduos

6: Geração do

7: for cada parâmetro de

8: Execute a operação de mutação discreta

9: Execute a operação de recombinação discreta

10: end for

11: Calcule os objetivos do novo indivíduo

12: if é melhor que o pai then

13: Coloque o novo indivíduo em uma população

14: end if

15: end for

16: Ordene segundo o critério de dominância

17: Faça a seleção baseada em crowding distance dos indivíduos pertencentes à

18: end while

A primeira etapa consiste na geração de uma população inicial (linha 1). A geração

dessa população é feita através da seleção de indivíduos escolhidos aleatoriamente dentro

do espaço de exploração definido pelo usuário. Cada um dos indivíduos da população gerada

corresponde a uma configuração de arquitetura representada por um vetor de doze números

inteiros definido no mapeamento de soluções apresentado na seção 6.2.

O segundo passo consiste em calcular os valores de energia e ciclos para cada um dos

indivíduos selecionados na etapa anterior (linha 2). O cálculo destes valores corresponde a

Page 83: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

71

avaliação dos objetivos dos indivíduos e está relacionado com a configuração da arquitetura

juntamente com a aplicação que está sendo estudada.

A terceira etapa consiste na criação do loop principal do algoritmo (linha 3). Nesta

etapa, portanto, é definido o critério de parada do algoritmo. Para este trabalho, o critério de

parada escolhido foi baseado no indicador de cobertura visto na 3.4.3. O indicador de

cobertura é avaliado sobre a população atual e a população da última geração. Caso não haja

melhoria de uma geração para outra, ou seja, se o valor da cobertura for igual à zero, então o

critério de parada foi satisfeito e o algoritmo é finalizado. Dessa forma, os indivíduos da última

população gerada são considerados uma solução do problema.

Na próxima etapa é criado um loop que irá iterar sobre cada um dos indivíduos alvo

da população atual (linha 4). Dentro deste loop ocorrerão as principais etapas do algoritmo:

mutação, recombinação e seleção. O primeiro passo antes aplicar estes operadores, é escolher

os indivíduos que irão gerar o valor do vetor de mutação diferencial (linha 5). Para tanto, três

indivíduos , diferentes entre si e diferente do indivíduo alvo , são selecionados da

população . O primeiro indivíduo selecionado ( ) corresponde a um indivíduo que representa

uma solução não dominada. Os outros dois indivíduos são selecionados de forma aleatória. O

segundo passo é gerar um valor que será utilizado para o cruzamento (linha 6). Este valor

corresponde a um índice escolhido aleatoriamente entre , onde é o número de

dimensões do problema.

Uma vez que todos os parâmetros para execução dos operadores de mutação, de

recombinação são selecionados, inicia-se as aplicações destes operadores para cada uma das

dimensões do indivíduo alvo , onde corresponde ao contador das dimensões sobre o

qual será iterada (linha 7). No caso do problema de exploração de arquiteturas com

hierarquias de cache com três níveis, foi visto que o vetor que representa o indivíduo é

composto por doze números inteiros. Neste caso este problema é tratado como um problema

de doze dimensões, onde cada dimensão representa um parâmetro de uma cache da

hierarquia. Dessa forma, o índice pode assumir qualquer valor no intervalo de 1 a 12.

O operador de mutação discreta é aplicado sobre cada parâmetro do indivíduo ,

gerando um novo indivíduo (linha 8). O valor da mutação para cada parâmetro é calculado

com base na diferença entre os parâmetros e dos indivíduos e . A forma de

calcular esta diferença será explicada na próxima seção. Depois, este valor de mutação é

Page 84: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

72

utilizado para produzir uma perturbação diferencial no parâmetro Então, uma vez que esta

mutação é aplicada para cada valor de , o novo indivíduo é produzido. Os parâmetros deste

novo indivíduo precisam ser truncados dentro do espaço de exploração a fim de se obter um

indivíduo com parâmetros válidos, uma vez que o espaço de exploração é discreto. Este

truncamento é feito pela escolha do parâmetro válido com valor mais próximo ao valor que foi

calculado. Então, é possível representar este novo indivíduo através da seguinte equação:

( − ), (32)

onde o fator assume o valor de 1 para produzir soluções válidas no domínio discreto.

Na próxima fase, o operador de recombinação é aplicado (linha 9) segundo a equação

apresentada a seguir.

{

(33)

onde é a probabilidade de recombinação, e é o valor gerado para cada dimensão, a fim de

testar a probabilidade . Portanto, assim como o operador de mutação, a recombinação é

aplicada para cada um dos parâmetros que compõem um indivíduo. Para garantir a ocorrência

da recombinação, sempre que a iteração assumir o valor de gerado da linha 6, então o

valor do parâmetro será utilizado para compor o novo indivíduo .

Quando os processos de mutação e recombinação são finalizados, a nova configuração

de arquitetura, representada pelo indivíduo é avaliada quanto a energia consumida e ciclos

total (linha 11) segundo o mecanismo apresentado na seção 5.4.5. O processo de seleção vai,

então, avaliar se este novo indivíduo é melhor que o indivíduo alvo baseado no critério de

dominância (linha 12). Caso o indivíduo alvo seja dominado pelo indivíduo , então este

último é colocado em uma população (linha 13). Depois que todos os indivíduos de uma

geração são criados, o conjunto formado pela união de com é ordenado em diferentes

Fronts segundo critério de dominância (linha 16). Finalmente, o operador de seleção é aplicado

ao conjunto resultante de e seleciona os melhores indivíduos baseados no critério

de crowding distance (linha 17) conforme apresentado no Quadro 4. Esta seleção de indivíduos

baseada em crowding distance visa minimizar o problema dos algoritmos de evolução

diferencial relacionado com a concentração rápida das soluções para uma parte do espaço de

busca, o que permite, dessa forma, aumentar a diversidade da solução encontrada.

Page 85: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

73

6.5 Exemplo de Execução do Mecanismo de Otimização Proposto

A fim de ilustrar melhor o funcionamento da evolução diferencial aplicada ao problema

de exploração de arquiteturas com hierarquias de memória com três níveis de cache, será

apresentado nesta seção um exemplo de execução deste algoritmo evolucionário. As etapas de

execução do mecanismo estão apresentadas na Figura 25. Cada uma destas etapas será

detalhada nas seções a seguir.

Figura 25. Etapas de um ciclo do mecanismo de otimização proposto

6.5.1 Inicialização

A etapa de inicialização consiste na geração da população inicial e na avaliação dos

indivíduos. Então, para este exemplo, será considerada a população inicial composta por cinco

indivíduos apresentada na Figura 26, assim como os valores dos objetivos, de cada um destes

indivíduos, exibidos na Tabela 10. Além disto, na etapa de inicialização são definidos o critério

de parada e a constante de probabilidade de recombinação . Para este exemplo o critério de

parada será considerado o número máximo de gerações igual a 1, ou seja, o ciclo será

executado apenas uma vez, e a constante assumirá o valor de 0.3 ou 30%.

Seleciona Primeiro Indivíduo

Último Indivíduo?

sim

não

Mutação

Recombinação

Avaliação

Inicialização

Seleção de Sobreviventes

Seleciona Próximo Indivíduo

Terminou?

Resultado

sim

não

Seleção de Pais

Page 86: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

74

Figura 26. População inicial

Tabela 10. Avaliação da população inicial

Nº do Indivíduo Total de Ciclos Energia Total

1 6,88E+08 0,40473

2 6,56E+08 0,47955

3 6,71E+08 0,48768

4 6,48E+08 0,39901

5 6,51E+08 0,30276

6.5.2 Seleção de Primeiro Indivíduo

Esta etapa consiste de um procedimento bastante simples de seleção do primeiro

indivíduo da população inicial (Figura 27). No caso deste exemplo o indivíduo abaixo será

selecionado como o indivíduo alvo. Além disto, nesta etapa também é gerado um valor para

. Neste exemplo assumirá o valor 4.

Figura 27. Indivíduo selecionado

6.5.3 Seleção de Pais

Na etapa de seleção de pais são selecionados três indivíduos diferentes do indivíduo

alvo já selecionado na etapa anterior. O primeiro indivíduo, no entanto, é selecionado pelo

IC1 DC1 L2 L3

32KB 32B 2 32B 4 32 16 32B 64 16KB 4MB 1MB

8KB 64B 2 64B 2 64 16 64B 64 4KB 8MB 256KB

32KB 64B 2 64B 4 64 16 64B 16 64KB 4MB 2MB

32KB 32B 4 32B 8 64 16 64B 16 64KB 4MB 256KB

4KB 32B 2 32B 2 32 8 32B 16 4KB 4MB 256KB 1

2

3

4

5

4KB 32B 2 32B 2 32 8 32B 16 4KB 4MB 256KB 1

Page 87: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

75

critério de não dominância. Para facilitar a escolha deste indivíduo, as soluções iniciais foram

mapeadas no espaço objetivo conforme ilustrado na Figura 28.

Figura 28. Espaço objetivo da população inicial

Dessa forma, a solução 5 é escolhida como a solução não dominada e as soluções 2 e 3

são escolhidas para completar a etapa de seleção de pais.

6.5.4 Mutação

Na etapa de mutação, cada parâmetro do indivíduo alvo será percorrido e sofrerá

mutação conforme a equação 32 apresentada na seção anterior. Primeiramente, a

representação dos indivíduos é alterada para expressar os valores dos parâmetros em potência

de dois. Depois, é calculado um novo vetor diferencial ( ) das soluções 2 e 3. O processo de

geração deste vetor é apresentado na Figura 29.

Page 88: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

76

Figura 29. Vetor diferencial

Uma vez calculado o vetor diferencial, ele é combinado com o primeiro vetor

selecionado, para gerar o novo indivíduo mutado , conforme apresentado na Figura 30.

Figura 30. Vetor mutado

Os valores gerados para o novo indivíduo , no entanto, podem ultrapassar os valores

considerados no espaço de exploração. Neste caso, os valores limites são considerados,

conforme ilustrado na Figura 31, e o indivíduo ( ) resultante da mutação é finalmente gerado.

Figura 31. Indivíduo resultante da mutação

𝟐𝟏𝟓 𝟐𝟓 𝟐𝟏 𝟐𝟓 𝟐𝟐 𝟐𝟓 𝟐𝟒 𝟐𝟓 𝟐𝟔 𝟐𝟏𝟒 𝟐𝟐𝟐 𝟐𝟐𝟎 2

𝟐𝟏𝟑 𝟐𝟔 𝟐𝟏 𝟐𝟔 𝟐𝟏 𝟐𝟔 𝟐𝟒 𝟐𝟔 𝟐𝟔 𝟐𝟏𝟐 𝟐𝟐𝟑 𝟐𝟏𝟖 3

𝟐−𝟐 𝟐𝟏 𝟐𝟎 𝟐𝟏 𝟐−𝟏 𝟐𝟏 𝟐𝟎 𝟐𝟏 𝟐𝟎 𝟐−𝟐 𝟐𝟏 𝟐−𝟐 𝒗𝒅

5

𝟐𝟏𝟑 𝟐𝟔 𝟐𝟐 𝟐𝟔 𝟐𝟐 𝟐𝟕 𝟐𝟒 𝟐𝟕 𝟐𝟒 𝟐𝟏𝟒 𝟐𝟐𝟑 𝟐𝟏𝟔 𝒗

𝟐−𝟐 𝟐𝟏 𝟐𝟎 𝟐𝟏 𝟐−𝟏 𝟐𝟏 𝟐𝟎 𝟐𝟏 𝟐𝟎 𝟐−𝟐 𝟐𝟏 𝟐−𝟐 𝒗𝒅

𝟐𝟏𝟓 𝟐𝟓 𝟐𝟐 𝟐𝟓 𝟐𝟑 𝟐𝟔 𝟐𝟒 𝟐𝟔 𝟐𝟒 𝟐𝟏𝟔 𝟐𝟐𝟐 𝟐𝟏𝟖

8KB 64B 4 64B 4 128

B 16

128B

16 16KB 8MB 64KB 𝒗

8KB 64B 4 64B 4 64B 16 64B 16 16KB 8MB 256KB 𝒗

Page 89: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

77

6.5.5 Recombinação

O operador de recombinação é aplicado sobre o indivíduo mutado da etapa anterior

junto com o indivíduo alvo conforme a equação 32. Para tanto, ele aplica a probabilidade de

recombinação ( ) em cada parâmetro do indivíduo alvo ou verifica se o número do parâmetro

corresponde ao número gerado na etapa de seleção do indivíduo alvo, . Caso a

recombinação do parâmetro ocorra, então, o parâmetro do indivíduo mutado substituirá o

parâmetro do indivíduo alvo, conforme ilustrado na Figura 32. Neste exemplo, será gerado um

novo indivíduo composto por parte do indivíduo alvo (indivíduo 1) e por parte do indivíduo

mutado .

Figura 32. Indivíduo gerado pela recombinação

No caso do exemplo apresentado na Figura 32, um valor foi gerado para cada

parâmetro e então comparado com o valor de . O indivíduo , portanto, corresponde

ao resultado da etapa de recombinação.

6.5.6 Avaliação

Na etapa de avaliação, os objetivos do indivíduo gerado na etapa de recombinação

são calculados. Estes objetivos, então, são comparados com os objetivos do indivíduo alvo.

Caso a solução domine a solução representada pelo indivíduo alvo, ele será adicionado a

população .

Para o exemplo tratado nesta seção os objetivos calculados para , junto com os

objetivos do indivíduo alvo, estão ilustrados na Tabela 11.

4KB 32B 2 32B 2 32B 8 32 16 4KB 4MB 256KB 𝟏

8KB 64B 4 64B 4 64B 16 64B 16 16KB 8MB 256KB 𝒗

8KB 32B 4 32B 2 32B 8 64B 16 16KB 8MB 256KB 𝒖𝟏

0.15 0.76 0.27 0.73 0.51 0.89 0.42 0.28 0.67 𝒋𝒓𝒂𝒏𝒅

𝟒 0.05 0.62 𝑟𝑗

Page 90: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

78

Tabela 11. Valores de energia e ciclos para o indivíduo gerado e o indivíduo alvo

Indivíduo Total de Ciclos Energia Total

1 6,88E+08 0,40473

6,68E+08 0,40061

A Figura 33 abaixo apresenta o mapeamento do novo indivíduo gerado no espaço de

objetivos, o que permite comparar a solução com as demais soluções. Outra solução

também foi adicionada para ilustrar melhor o funcionamento das próximas etapas.

Figura 33. Comparação da solução gerada com outros indivíduos

Neste exemplo, as soluções geradas e não são dominadas por suas respectivas

soluções alvo e, portanto, serão adicionadas a população . Os ciclos dos demais indivíduos da

população foram omitidos, pois seguem o mesmo comportamento do primeiro ciclo. Então,

será apresentada na próxima seção a última etapa que corresponde a seleção de sobreviventes.

Page 91: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

79

6.5.7 Seleção de Sobreviventes

A seleção de sobreviventes é realizada com base no critério de crowding distance,

conforme explicado na seção 6.4, e é aplicada sobre o conjunto formado pela população inicial

junto com a população gerada . Primeiramente o conjunto é ordenado segundo o

critério de dominância para encontrar os diferentes Fronts. Neste exemplo vamos considerar

apenas um Front formado pelas cinco soluções iniciais mais as duas soluções geradas. Então o

processo de seleção por crowding distance é aplicado. O cálculo do crowding distance inicia

através da ordenação dos elementos, em ordem crescente, com respeito a cada um dos seus

objetivos, conforme a ilustrado na Figura 34.

Figura 34. Ordenação dos indivíduos baseado nos valores dos objetivos

Para os elementos que possuem os valores extremos, máximo e mínimo, o valor do

crowding distance é considerado infinito. Para os demais elementos ele é calculado conforme a

equação 15 apresenta na seção 3.3.1.

( [ ]) ( [ ])− ( [ ])

, (34)

onde é o número do objetivo, é o índice da lista e representa o valor do objetivo de um

elemento .

Page 92: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

80

Então, para lista ordenada pelo valor do total de ciclos (objetivo 1), o cálculo do

valor de crowding distance ( ) do segundo elemento da lista é feito da seguinte forma:

( [ ]) ( [ ]) − ( [ − ])

( ) − ( )

( ) − ( )

Os demais elementos seguem os mesmo critérios. Dessa forma, é possível obter as duas

listas apresentadas na Figura 35.

Figura 35. Valor de crowding distance para cada objetivo

Finalmente, para calcular o crowding distance de uma solução, basta somar os para

cada valor de . Dessa forma, podemos ordenar as soluções deste exemplo segundo o valor de

crowding distance conforme ilustrado na Figura 36.

Figura 36. Front ordenado por valor de crowding distance

Como o tamanho da população de uma geração para outra se mantém constante,

apenas os indivíduos apresentados nas cinco primeiras posições seriam selecionados, pois

obtiveram um valor maior para o indicador de crowding distance.

Page 93: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

81

Capítulo

7

7 Resultados

Este capítulo tem como propósito apresentar os resultados alcançados com a

utilização do mecanismo de exploração desenvolvido, associado ao algoritmo de otimização

baseado em evolução diferencial, para redução de energia e ciclos de arquiteturas com

hierarquias de memória com três níveis de cache. Por fim, os resultados serão comparados com

outros algoritmos de otimização.

Page 94: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

82

7.1 Introdução

Neste capítulo, serão apresentados os resultados da aplicação do mecanismo de

exploração de hierarquias de memória com três níveis de cache, junto com diferentes técnicas

de otimização para o problema de exploração de arquiteturas visando à redução de energia e

ciclos. Os algoritmos de otimização escolhidos para este trabalho correspondem ao NSGAII,

SPEA2 e o EDDM. Os dois primeiros são algoritmos que já foram utilizados com sucesso no

problema de exploração de hierarquias de memória, e que servirão como referencia para

comparação dos resultados obtidos com o último algoritmo (EDDM) desenvolvido neste

trabalho. Por se tratar de técnicas de otimização não determinísticas, a execução de cada

técnica foi repetida 30 vezes conforme o processo de simulação definido na seção 5.7.

7.2 Ambiente de Simulação

O ambiente de simulação utilizado para gerar os resultados deste trabalho é formado

por cinco componentes: aplicações, ferramenta de simulação, algoritmos de otimização, espaço

de exploração e máquina utilizada para realizar as simulações. O primeiro componente

necessário para realizar as simulações foi a definição das aplicações simuladas. Para este

componente foram escolhidos dois benchmarks, MiBench e MediaBenchII, formados pelas

aplicações bitcount, CRC, dijkstra, SHA, susan, djpeg, mpeg2enc, mpeg2dec e h263enc. O

segundo componente corresponde a ferramenta de simulação. Neste caso foi adotada a

ferramenta desenvolvida pelo grupo de pesquisa chamada CAeTO, que precisou ser integrada

com o novo mecanismo de exploração proposto neste trabalho. Esta integração foi descrita na

seção 5.6. O terceiro componente é representado pelos algoritmos de otimização que foram

adaptados para o problema de exploração de hierarquias de memória cache com três níveis.

Para realizar as simulações foram utilizadas as técnicas de otimização NSGAII, SPEA2, assim

como o algoritmo baseado em evolução diferencial, desenvolvido neste trabalho, apresentado

no capítulo 6. O quarto componente do ambiente de simulação corresponde ao espaço de

exploração definido na seção 5.4.1. O quinto e último componente, corresponde a definição da

máquina utilizada para realizar as simulações. O computador escolhido para executar as

simulações foi um Intel Core i7-2600k 3.4GHz com 8GB de memória RAM com sistema

operacional Ubuntu 10.04 64 bits.

Page 95: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

83

7.3 Análise de Abordagem Proposta

Nesta seção, serão apresentadas algumas análises que permitiram a definição da

população inicial do algoritmo, entender o comportamento da convergência do algoritmo

evolucionário proposto, assim como avaliar o desempenho deste algoritmo.

7.3.1 Impacto do Tamanho da População Inicial

O gráfico da Figura 37 apresenta o número de simulações necessário, em cada geração,

para cinco valores diferentes de população inicial (10, 20, 30, 40 e 50 indivíduos). O gráfico

indica que o número de simulações requeridas aumenta proporcionalmente com o tamanho da

população inicial. O espaço de exploração considerado neste trabalho é formado por 28.800

diferentes configurações de hierarquias de memória válidas, então, a fim de reduzir o tempo de

processamento e manter o número de simulações compatível com as heurísticas de otimização,

foi considerado um tamanho da população inicial com 20 elementos. Adicionalmente, trabalhar

com um número alto para população inicial acarreta em ter que realizar um número excessivo

de simulações, conforme ilustrado na Figura 37.

Figura 37. Número de simulações x Gerações, considerando diferentes populações iniciais (10, 20, 30, 40, 50 indivíduos) e aplicação h263enc

Page 96: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

84

A Figura 38 apresenta o valor da menor energia consumida por um indivíduo da

população em cada geração. Considerando que o valor inicial da população afeta a qualidade

da solução final, seu impacto foi avaliado com respeito à energia consumida e ao número de

gerações máximo de 50, mesmo que não seja necessário, uma vez que a convergência ocorre

antes deste valor máximo. O gráfico ilustra cinco casos para as populações iniciais: 10, 20, 30,

40 e 50 indivíduos. É importante salientar que a escolha dos indivíduos que compõem a

população inicial é feita de forma aleatória.

Figura 38. Evolução do menor valor da energia consumida por uma população em relação ao número da geração para a aplicação h263enc

A simulação Ilustrada na Figura 38 permite extrair as seguintes conclusões: (a) em um

primeiro nível, que inclui somente a população inicial de 10 indivíduos, o mecanismo de

otimização foi incapaz de encontrar um indivíduo com baixo consumo de energia, mesmo

sendo executado em 50 gerações; (b) no secundo nível, que inclui as populações iniciais de 20,

30, 40 e 50 indivíduos, o mecanismo encontrou configurações perto do Pareto Ótimo e a

convergência ficou em torno de 10 gerações; (c) uma pequena diferença entre os níveis de

Page 97: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

85

convergência foi observada no segundo nível, entretanto, a população inicial de 40 indivíduos e

a de 50 indivíduos obtiveram melhores resultados.

Baseado nesta análise de consumo de energia por geração, embora o melhor valor para

população inicial seja algo entre 40 e 50 indivíduos, é recomentada a utilização de 20 indivíduos

como padrão para população inicial, conforme definido na análise da Figura 37, uma vez que o

número de simulações requeridas aumenta bastante com relação ao aumento deste

parâmetro, e os resultados obtidos ficaram próximos aos resultados ótimos.

De forma similar a análise realizada para o consumo de energia, as conclusões para os

experimentos realizados para o número de ciclos em função do número de gerações (Figura 39)

foram idênticas, considerando a mesma aplicação e os mesmos valores para população inicial.

Figura 39. Evolução do menor valor total de ciclos de uma população em relação ao número da geração para a aplicação h263enc

Page 98: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

86

7.3.2 Convergência das Soluções

A técnica de otimização proposta neste trabalho (EDDM) foi aplicada para exploração de

hierarquias considerando três níveis cache conforme descrito no ambiente de simulação da

seção 7.2. Cada ponto exibido na Figura 40 corresponde a uma configuração obtida por esta

técnica e é representado no espaço objetivo como um par (energia, ciclos). O gráfico apresenta

a energia consumida e o número total de ciclos, necessários para executar a aplicação h263enc,

para quatro diferentes gerações (1, 3, 5 e 10). No resultado da exploração para a primeira

geração (representada pelo quadrado azul), os pontos estão espalhados por todo o espaço de

busca, dificultando a definição dos Fronts. O resultado para a terceira geração (representado

pelo circulo verde) mostra uma baixa concentração dos pontos próximos de um Pareto. Na

quinta geração (representada pelo triangulo azul) é possível observar que o Front está quase

formado. Somente depois de dez gerações (representadas pelo losango preto) é possível ver

claramente que o Pareto está mais evidenciado. Portanto, foi possível observar que o algoritmo

de otimização EDDM converge muito rápido, pois entre 5 e 10 gerações já é possível observar a

formação de um Pareto.

Figura 40. Evolução do Pareto em função do número de gerações para a aplicação h263enc e população inicial de 20 indivíduos

Page 99: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

87

7.3.3 Desempenho da Abordagem Proposta

O desempenho do algoritmo de otimização proposto foi avaliado quanto à qualidade

das soluções relacionada com a capacidade de encontrar soluções próximas ao Pareto Ótimo e

ao tempo de necessário para gerar este conjunto de soluções. Os resultados relacionados com

a qualidade das soluções encontradas pelo algoritmo apresentaram um bom desempenho, pois

o algoritmo foi capaz de encontrar soluções próximas ao Pareto Ótimo. Algumas simulações

foram realizadas considerando os resultados das análises das seções 7.3.1 e 7.3.2. O algoritmo

de evolução diferencial, portanto, foi simulado considerando uma população inicial de vinte

indivíduos, assim como foi estabelecido um critério de parada de dez gerações. O valor da

probabilidade de cruzamento foi fixado em 0.3, seguindo os artigos publicados com este tipo de

algoritmo aplicado a problemas de domínio discreto [20]. As simulações foram realizadas para

todas as nove aplicações definidas na seção 7.2. Os resultados apresentados para estas

simulações foram confrontados com o restante do espaço de busca, representando resultados

das simulações exaustivas de cada algoritmo, conforme ilustrado na Figura 41.

Page 100: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

88

Figura 41. EDDE x Simulação Exaustiva para as aplicações dos benchmarks MediabenchII e MiBench. (a) Bitcount. (b) CRC. (c) Dijkstra. (d) DJPEG. (e) H263enc. (f) MPEG2dec. (g)

MPEG2enc. (h) SHA. (i) Susan.

Conforme mostrado na Figura 41, os valores de cada solução da simulação exaustiva

foram representados por quadrados azuis claros, enquanto os resultados do algoritmo de

otimização foram representados por círculos azuis escuros. Apesar dos valores encontrados

pelo mecanismo de otimização proposto estarem bastante próximos ao Pareto Ótimo, a

característica do algoritmo de concentração das soluções ainda se mostrou evidente em alguns

casos, mesmo com a introdução da seleção baseada em crowding distance. As métricas de

avaliação destes resultados serão apresentadas na próxima seção, onde um número grande de

Page 101: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

89

simulações foi realizado e os resultados foram comparados aos de outros algoritmos que são

referências para o problema de otimização de hierarquias de memória.

Outro ponto importante avaliado sobre o mecanismo de otimização proposto foi a

velocidade com que ele consegue gerar o conjunto de soluções ótimas. Como o número de

simulações é fixo para cada tamanho de população inicial, conforme exibido no gráfico da

Figura 37, e para estes testes foi considerado o número máximo de gerações de 10, então, é

possível calcular o percentual do espaço de exploração que foi utilizado pelo algoritmo de

otimização. Este cálculo corresponde a multiplicação do número de indivíduos da população

inicial pelo número de gerações necessárias. Neste caso, foi preciso simular 200 soluções de um

espaço de busca composto por 28.800 soluções, ou seja, foi preciso explorar apenas 0,7% do

espaço total de exploração. Os tempos para encontrar o conjunto de soluções, apresentados na

Tabela 12, estão diretamente relacionados com este baixo percentual de exploração durante o

processo de simulação.

Tabela 12. Tempo de exploração exaustiva x Tempo de exploração otimizada

Aplicação % de exploração Tempo Otimizado Tempo Exaustivo

Djepg 0,7% 03h 06m 18d 16h

mpeg2dec 0,7% 02h 33m 15d 08h

mpeg2enc 0,7% 06h 30m 39d 08h

h263enc 0,7% 02h 13m 13d 08h

Bitcount 0,7% 00h 36m 03d 16h

Crc 0,7% 00h 33m 03d 08h

Dijkstra 0,7% 00h 43m 04d 08h

Sha 0,7% 00h 40m 04d 00h

Susan 0,7% 00h 10m 01d 00h

A utilização do algoritmo de evolução diferencial discreta multi-objetivo para o

problema de exploração de hierarquias de memórias permite ao projetista de hardware

economizar cerca de 99,3% do tempo necessário para decidir sobre a arquitetura ideal do

sistema. Entretanto, para estes testes foi considerado um critério de parada por número

máximo de gerações, baseado no pior caso apresentado no estudo da seção 7.3.2, uma vez que

o algoritmo pode convergir entre 5 a 10 gerações. Na próxima seção serão apresentados os

resultados deste algoritmo para outro critério de parada que permitiu reduzir ainda mais o

tempo de simulação do algoritmo.

Page 102: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

90

7.4 Comparação com Outros Mecanismos de Otimização

O algoritmo de otimização EDDM foi comparado com outros dois algoritmos genéticos

utilizados para o problema de otimização de hierarquias de memória, o NSGAII e o SPEA2. O

processo de simulação adoptado para gerar os resultados desta seção foi definido na seção 5.7.

Conforme descrito neste processo, por se tratarem de técnicas de otimização não

determinísticas, a execução de cada uma delas foi repetida 30 vezes com o intuito de se coletar

a média dos resultados.

O critério de parada adotado por todos os três algoritmos foi baseado em cobertura.

Neste tipo de critério, a execução de cada algoritmo encerra quando as soluções da última

iteração não cobrem mais as soluções da iteração anterior. Dessa forma, o algoritmo executa

até o momento de convergência, o que evita que sejam realizadas simulações que influenciam

pouco na qualidade dos resultados. Este tipo de abordagem é interessante quando o custo de

cada simulação é alto e é importante que se tenha o menor número de simulações possível

para a obtenção do conjunto ótimo de soluções. Outra vantagem da escolha deste critério de

parada é que cada um dos algoritmos tem uma velocidade de convergência diferente. Logo, no

caso de um critério de parada por número máximo de gerações, a qualidade dos resultados de

um algoritmo poderia ficar comprometida, enquanto de outro, seriam realizadas simulações

extras que não trariam ganho na qualidade das soluções, apenas aumentariam o tempo de

simulação delas.

Todas as três técnicas de otimização analisadas nesta seção (NSGAII, SPEA2 e EDDM)

foram avaliadas quanto a sua capacidade de otimizar energia e ciclos para problema de

exploração de hierarquias de memória. Entretanto, avaliar a qualidade das soluções geradas e a

velocidade de geração destas soluções para cada algoritmo não é uma tarefa fácil. Para tanto,

foram escolhidas três formas de comparar os algoritmos de otimização. A primeira visa

comparar a velocidade de geração do conjunto de soluções ótimas. As outras duas formas são

aplicadas para medir a qualidade das soluções propostas por cada uma das técnicas.

A primeira forma de comparar as técnicas, portanto, permite avaliar cada algoritmo

quanto ao número de simulações necessárias para encontrar o conjunto ótimo de soluções.

Cada uma destas técnicas foi executada para as nove aplicações. O resultado desta comparação

está ilustrado na Figura 42. O valor que representa o número de simulações corresponde ao

Page 103: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

91

valor médio calculado a partir do número total de simulações das trinta execuções de cada

algoritmo de otimização. Além disto, a figura apresenta a média do número de simulações para

cada aplicação.

Figura 42. Número de simulações necessárias para cada técnica, para cada aplicação

O número de simulações executado por uma técnica corresponde ao número de vezes

que foi necessário simular uma determinada configuração de cache para observar o

comportamento da arquitetura em relação aos valores de energia e ciclos. Como cada

simulação tem um custo de tempo e processamento, é desejável que as técnicas executem o

menor número de simulações possível.

Conforme apresentado na Figura 42 o algoritmo de otimização EDDM precisa simular

em média 118 soluções do espaço de exploração de 28.800, para encontrar um conjunto de

soluções ótimas. O algoritmo de otimização SPEA2 apresentou um resultado bastante similar ao

do EDDM, precisando em média de 143 simulações. O terceiro algoritmo, NSGAII, apresentou

resultados bem inferiores aos dos outros dois algoritmos, precisando em média de 768

simulações para conseguir gerar um conjunto de soluções ótimas. Apesar deste número de

simulações do último algoritmo parecer elevado, ele corresponde a apenas 2,6% do espaço de

exploração. Outro aspecto sobre o NSGAII é que o número médio de simulações apresentou

uma variação maior de aplicação para aplicação, o que o torna mais imprevisível quando se

quer estimar o número de simulações necessárias. Já os outros dois algoritmos, EDDM e SPEA2,

o número médio de simulações possui uma variação pequena para cada aplicação. Dessa

djpegmpeg2

encmpeg2

dech363enc

bitcount crc dijkstra sha susan Média

NSGAII 934 875 765 800 763 702 705 720 646 768

SPEA2 170 159 142 150 133 130 125 147 128 143

EDDM 142 135 125 116 111 108 112 115 102 118

0

100

200

300

400

500

600

700

800

900

1000

mer

o d

e Si

mu

laçõ

es

Page 104: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

92

forma, é possível dizer que em média o EDDM precisa explorar 0,41% do espaço total de busca

para gerar o conjunto de soluções ótimas, enquanto o SPEA2 e o NSGAII precisam de 0,5% e

2,6% respectivamente.

A segunda forma de comparar as técnicas de otimização é através da utilização de uma

métrica chamada de hipervolume. A característica que difere esta métrica das demais é que ela

consegue medir a convergência das soluções encontradas em relação ao Pareto Ótimo, assim

como o espalhamento das soluções ao longo do Pareto. Quanto maior o valor do hipervolume

melhor, indicando que as soluções encontradas estão mais espalhadas e próximas ao Pareto

Ótimo. Essa é uma métrica bastante utilizada para comparação entre técnicas de otimização

multi-objetivo, assim como é utilizado em [21] [22]. A Tabela 13 apresenta os resultados do

valor médio do indicador de hipervolume calculado sobre as trinta simulações de cada uma das

técnicas de otimização, para cada uma das nove aplicações selecionadas.

Tabela 13. Resultados da métrica de hipervolume

Aplicação EDDM SPEA2 NSGAII Melhor

djpeg 4,44E+15 2,15E+14 1,04E+15 EDDM

h263enc 7,60E+09 3,94E+08 2,11E+09 EDDM

mpeg2enc 5,69E+14 2,82E+13 1,53E+14 EDDM

mpeg2dec 4,07E+10 1,75E+09 8,51E+09 EDDM

bitcount 3,05E+06 1,41E+05 6,54E+05 EDDM

crc 1,68E+07 6,98E+05 3,31E+06 EDDM

dijkstra 5,92E+08 2,36E+07 1,15E+08 EDDM

sha 4,53E+07 2,10E+06 9,37E+06 EDDM

susan 9,83E+02 3,77E+01 1,69E+02 EDDM

Conforme apresentado na Tabela 13, o algoritmo de otimização EDDM obteve os

melhores resultados para o indicador de hipervolume para todas as nove aplicações. O

algoritmo NSGAII também obteve bons resultados, ficando a frente do SPEA2 para os valores

calculados para todas as aplicações.

A terceira forma de comparar os três algoritmos analisados é através do indicador de

distância generacional. Este indicador, assim como o indicador de hipervolume, visa comparar a

qualidade do conjunto de soluções ótimas gerado por cada técnica. Essa métrica mede o quão

próximas estão as soluções encontradas por cada técnica em relação às soluções do Pareto

Ótimo. No entanto, para aplicar esta métrica é preciso saber qual é o Pareto Ótimo, portanto,

foi preciso realizar uma simulação exaustiva para cada aplicação, para então, extrair o conjunto

Page 105: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

93

das melhores soluções que serão utilizadas como referência do cálculo da distância

generacional. Este trabalho de simulação exaustiva, no entanto, já havia sido realizado para

validação do algoritmo de otimização EDDM e, portanto, não precisou ser refeito. No entanto

para casos onde o Pareto Ótimo não possa ser encontrado facilmente, pode-se utilizar um

Pareto Front como referência para o cálculo da métrica. Quanto menor o valor da métrica de

distância generacional, melhor o conjunto de resultados, pois indicam que as soluções

encontradas estão mais próximas do conjunto ótimo de soluções.

A Tabela 14 apresenta os resultados do valor médio do indicador de distância

generacional calculado sobre as trinta simulações de cada uma das técnicas de otimização, para

cada uma das nove aplicações selecionadas.

Tabela 14. Resultados da métrica de distância generacional Aplicação EDDM SPEA2 NSGAII Melhor

djpeg 4,58E+05 3,45E+09 8,46E+09 EDDM

h263enc 1,40E+05 2,22E+05 1,46E+05 EDDM

mpeg2enc 2,37E+04 9,25E+04 2,44E+05 EDDM

mpeg2dec 2,80E+04 5,00E+04 1,94E+05 EDDM

bitcount 1,30E+03 1,24E+02 1,40E+03 SPEA2

crc 5,11E+02 1,91E+03 4,68E+02 NSGAII

dijkstra 7,69E+03 8,65E+03 4,63E+04 EDDM

sha 7,77E+02 2,50E+03 6,65E+03 EDDM

susan 8,83E+00 5,03E+01 3,00E+01 EDDM

Conforme apresentado na Tabela 14 a técnica de otimização EDDM obteve melhores

resultados para sete das nove aplicações simuladas, ou seja, a técnica foi melhor em 78% dos

casos analisados. Dessa forma, é possível afirmar que o conjunto de soluções encontrado pelo

algoritmo evolucionário proposto neste trabalho é capaz de encontrar soluções mais próximas

às soluções do Pareto Ótimo quando comparado aos algoritmos NSGAII e SPEA2, apesar de em

alguns casos o algoritmo EDDM ter obtido resultados bastante próximos aos dois outros

algoritmos, haja vista que o NSGAII e o SPEA2 são técnicas que apresentam bons resultados

para esta métrica de distância generacional.

Finalmente, considerando o desempenho apresentado pelo EDDM para número de

simulações, para os indicadores de hipervolume e distância generacional é possível afirmar que

o EDDM é capaz de gerar soluções ótimas mais rapidamente e com uma qualidade superior a

das técnicas NSGAII e SPEA2, quando aplicado ao problema de exploração de hierarquias de

memória com três níveis de cache visando redução de energia e ciclos.

Page 106: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

94

Capítulo

8

8 Conclusões e Trabalhos Futuros

Este capítulo tem como objetivo apresentar algumas considerações finais sobre os

principais tópicos abordados nesta dissertação, incluindo as contribuições alcançadas e

indicações para trabalhos futuros.

Page 107: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

95

8.1 Considerações Finais e Contribuições

Neste trabalho foi proposto um novo modelo para estimativa de consumo de energia e

desempenho em arquiteturas de sistemas com hierarquias de memória com três níveis de

cache, considerando uma tecnologia de transistores de 32 nanômetros. Para tanto, foi

necessário expandir a ferramenta de simulação de arquiteturas SimpleScalar, a fim de simular o

terceiro nível de memória cache, assim como foi preciso adaptar duas ferramentas de

estimativa de energia de memória cache e memória principal. Por fim, todas as ferramentas

foram integradas em um mecanismo de cálculo de ciclos e energia total que recebe como

entrada aplicações e configurações de hierarquias de memória.

Além disto, um novo algoritmo de otimização baseado em evolução diferencial foi

proposto, visando reduzir o tempo de exploração de hierarquias de memória. Para validação

deste algoritmo, ele foi submetido a nove aplicações de dois benchmarks diferentes (MiBench e

MediaBenchII), e os resultados foram analisados segundo dois indicadores de qualidade

(hipervolume e distância generacional) e um de velocidade (tempo de simulação). Ao analisar

os resultados de velocidade da busca realizada pelo algoritmo, foi concluído que a técnica de

otimização proposta é capaz de gerar um conjunto de soluções ótimas explorando em média

0,41% do espaço de busca, ou seja, reduzindo cerca de 99,6% do tempo de exploração. Quanto

aos indicadores de qualidade, os resultados mostraram que o algoritmo proposto (EDDM) foi

melhor em 100% dos casos estudados para a métrica de hipervolume e 78% dos casos para a

métrica de distância generacional, quando comparados a outros dois algoritmos (NSGAII e

SPEA2) bastante utilizados para o mesmo tipo de problema de exploração de configurações de

hierarquias de memória. Portanto, assim como o trabalho proposto em [20], a evolução

diferencial aplicada a problemas de otimização no domínio discreto obteve bons resultados

quando comparada a outros algoritmos evolucionários.

Finalmente, o novo mecanismo de cálculo de energia e ciclos, junto com o algoritmo de

otimização desenvolvido, foi integrado a um ambiente gráfico de simulação de arquiteturas

capaz de proporcionar ao projetista de hardware a realização de estudos de diversas

arquiteturas em paralelo, o que permite reduzir ainda mais o tempo de projeto de um sistema.

Page 108: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

96

8.2 Trabalhos Futuros

Os principais trabalhos que podem ser realizados a partir deste trabalho são:

1. Expandir o módulo de comparação de resultados disponível no CAeTO para

comparar os resultados das técnicas de otimização aplicadas a hierarquias com três

níveis de cache;

2. Expandir o ambiente gráfico de simulação para suportar vários modelos de

memórias principais;

3. Aumentar o número de aplicações simuladas, visando à simulação de aplicações

cada vez mais complexa e que permitam explorar mais o potencial do terceiro nível

de memória cache;

4. Expandir o modelo de estimativa de energia e ciclos para arquiteturas de sistemas

baseados em NOC (Network-on-Chip).

Page 109: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

97

Referências Bibliográficas

Este capítulo tem como objetivo apresentar as referências bibliográficas detalhadas

utilizadas no processo de elaboração desta Dissertação de Mestrado.

Page 110: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

98

[1] Burger, D.; Austin, T.M.; “The SimpleScalar Tool Set, Version 2.0”; Computer Architecture

News; Vol 25(3). June 1997. pp.13-25.

[2] Sugumar, R.A. and Abraham, S.G.; “Efficient simulation of multiple cache configurations

using binomial trees”, Technical Report CSE-TR-111-91, CSE Division, Univ. of Michigan,

1991.

[3] N. Muralimanohar, R. Balasubramonian, and N. P. Jouppi, “CACTI 6.0: A tool to model large

caches,” 2009. Disponível em: http://www.hpl.hp.com/techreports/2009/HPL-2009-

85.html. Acessado em: 10 de abril de 2013.

[4] M.Ehrgott. Multicriteria Optimization. Springer, Berlin, segunda edição, 2005. ISBN 3-540-

21398-8.

[5] V. Pareto. Cours D’Economie Politique, volume I e II. F. Rouge, Lausanne, 1896.

[6] HORN, J.; NAFPLIOTIS, N.; GOLDBERG, D.E. A Niched Pareto genetic algorithm for

multiobjective optimization. 1st IEEE Conference Of Evolutionary Computation. 1994. vol. 1,

p. 67-72.

[7] SRINIVAS, N; DEB, K. Multiobjective Function Otimization Using Nondominated Sorting

Genetic Algorithms, Evolutionary Computation. 1995. v. 2, p. 221-248.

[8] DEB, K.; AGRAWAL, S.; MEYARIVAN, T. A Fast Elitist Nondominated Sorting Genetic

Algorithm for Multi-objective Optimization: NSGA-II. Parallel Problem Solving from Nature,

2000, p. 849-858.

[9] ZITZLER, E.; LAUMMANS, M.; THIELE, L. SPEA2: Improving the Strength of Pareto

Evolutionary Algorithm for Multiobjective Optimization. Technical Report 103, Computer

Engineering and Networks Laboratory (TIK), Swiss Federal Institute of Technology (ETH),

Switzerland, 2001.

[10] Storn, R. e Price, K., “Differential Evolution - a Simple and Efficient Adaptive Scheme for

Global Optimization over Continuous Spaces” , Technical Report TR-95-012, ICSI, 1995.

[11] Quan-Ke Pan, Mehmet Fatih Tasgetiren, Yun-Chia Liang, A discrete differential evolution

algorithm for the permutation flowshop scheduling problem, Computers & Industrial

Engineering, Volume 55, Issue 4, November 2008, Pages 795-816, ISSN 0360-8352,

http://dx.doi.org/10.1016/j.cie.2008.03.003.

[12] Mingming Zhang; Shuguang Zhao; Xu Wang, "Multi-objective evolutionary algorithm

based on adaptive discrete Differential Evolution," Evolutionary Computation, 2009. CEC

'09. IEEE Congress on , vol., no., pp.614,621, 18-21 May 2009

doi: 10.1109/CEC.2009.4983002.

Page 111: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

99

[13] FONSECA, C. M.; et al. A Tutorial on the Performance Assessment of Stochastic

Multiobjective Optimizers. Third International Conference on Evolutionary Multi-Criterion

Optimization, 2005.

[14] VELDHUIZEN, D. A. V.; LAMONT, G. B. Multiobjective Evolutionary Algorithm Research: A

History and Analysis. Technical Report: TR-98-03, 1998.

[15] ZITZLER, E.; THIELE, L. Multiobjective Optimization Using Evolutionary Algorithms – A

Comparative Case Study. Parallell Problem Solving from Nature, 1998. p. 292-301.

[16] Micron. DDR3L Memory Power Calculator. 2011. Disponível em:

http://www.micron.com/~/media/Documents/Products/Power%20Calculator/DDR3L_Pow

er_Calc.XLSM. Acesso em abril de 2013.

[17] M. R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge,R. B. Brown, Mibench: A

free, commercially representative embedded benchmark suite. In Proceedings of the

Workload Characterization, 2001. WWC-4. IEEE International Workshop, 2001, pp.3–14.

[18] Jason E. Fritts, Frederick W. Steiling,Joseph A. Tucek. MediaBench II video: expediting

the next generation of video systems research. Proc. SPIE 5683, Embedded Processors for

Multimedia and Communications II, 79 Mar. 2005.

[19] ZITZLER, E.; THIELE, L. Multiobjective Optimization Using Evolutionary Algorithms – A

Comparative Case Study. Parallell Problem Solving from Nature, 1998. p. 292-301.

[20] ROBIE, T.; FILIPIE ,B. Differential Evolution Versus Genetic Algorithms in Multiobjective

Optimization. EMO 2007. LINCS., vol 4403, pp. 257-271. Springer, Heidelberg (2007).

[21] ASCIA, G.; CATANIA, V.; PALESI, M. A GA-Based Design Space Exploration Framework for

Parameterized System-On-A-chip Platforms. IEEE Transactions On Evolutionary

Computation, 2004. v. 8, n. 4.

[22] Perez-Perez, R., et al. Multiobjective Algorithms to Optimize Broadcasting Parameters in

Mobile Ad-hoc Networks, Evolutionary Computation. CEC 2007, 2007. p. 3142 - 3149.

[23] Zhang, C.,Vahid, F. A self-tuning cache architecture for embedded systems. In

Proceedings of the Design, Automation and Test (DATE) Conference in Europe, 2004.

[24] Givargis, T., Vahid, F. Platune: a tuning framework for system-ona- chip platforms. IEEE

Transactions on Computer Aided Design,Nov. 2002.

[25] Palesi, M., Givargis, T. Multi-objective design space exploration using genetic algorithms.

Internacional Wordshop on Hardware/Software Codesign, May 2002.

[26] A. Gordon-Ross, F. Vahid, N. Dutt. Automatic Tuning of Two-Level Caches to Embedded

Aplications. Design Automation & Test in Europe, Feb. 2004, pp.208-213.

Page 112: Dissertação de Mestrado§ao... · Primeiramente gostaria de agradecer a Deus por ter me guiado neste caminho de sucesso na minha vida profissional. Agradeço ao meu orientador Prof.

100

[27] Zhang, C., Vahid, F., Cache configuration exploration on prototyping platforms. 14th IEEE

Interational Workshop on Rapid System Prototyping, Jun. 2003.

[28] A.G. Silva-Filho, M.E. Lima, P.S. Nascimento, R. Eskinazi. An Energy-Aware Exploration

Approach Based on Open Software Enviroment, IESS, July 2005, pp.97-102.

[29] A.G. Silva-Filho; F.R. Cordeiro; R.E. Sant’Anna; M.E. Lima. Heuristic for Two-Level Cache

Hierarchy Exploration Considering Energy Consumption and Performance, PATMOS, 2006,

pp.75-83.

[30] A.G. Silva-Filho, C.J.A. Bastos-Filho, R.M.F. Lima, D.M.A Falcão, F.R. Cordeiro and M.P.

Lima. An Intelligent Mechanism to Explore a Two-Level Cache Hierarchy Considering Energy

Consumption and Time Performance, SBAC-PAD, 2007, pp.177-184.

[31] Min Huang; Mehalel, M.; Arvapalli, R.; Songnian He. An energy efficient 32nm 20 MB L3

cache for Intel® Xeon® processor E5 family, Custom Integrated Circuits Conference (CICC),

2012 IEEE , Sept. 2012, pp.1,4, 9-12.

[32] Barth, J.; Plass, D.; Nelson, E.; Hwang, C.; Fredeman, G.; Sperling, M.; Mathews, A.;

Kirihata, T.; Reohr, W.R.; Nair, K.; Nianzheng Caon. A 45 nm SOI Embedded DRAM Macro for

the POWER™ Processor 32 MByte On-Chip L3 Cache, IEEE Journal of Solid-State Circuits,

Vol.46, No.1, Jan. 2011, pp.64, 75.

[33] S. Rusu, S. Tam, H. Muljono, J. Stinson, D. Ayers, J. Chang, R. Barada, M. Ratta, S.

Kottapalli, and S. Vora, “A 45 nm 8-core enterprise XEON processor,” IEEE J. Solid-State

Circuits, vol. 45, pp. 7–14, Jan. 2010.

[34] Jinuk Luke Shin; Golla, R., et al. The Next Generation 64b SPARC Core in a T4 SoC

Processor, IEEE Journal of Solid-State Circuits, Vol.48, No.1, Jan. 2013, pp.82, 90.

[35] Freescale Semiconductor. MPC7450 RISC Microprocessor Family Reference Manual,

MPC7450UM, Rev. 5, 2005.

[36] Freescale Semiconductor. Cache Latencies of the PowerPC MPC7451, Rev. 2, 2006.

[37] John L. Hennessy, David A. Patterson: Computer Architecture - A Quantitative Approach

(5. ed.). Morgan Kaufmann 2012, ISBN 978-0-12-383872-8.