ANÁLISE DE MEMÓRIAS CACHE USANDO VALGRIND
Por: nulset • 14/9/2019 • Artigo • 1.082 Palavras (5 Páginas) • 196 Visualizações
OrgArq3 – 2013/2
Trabalho sobre Cache
Introdução e Objetivos
O objetivo deste trabalho é executar experimentos de hierarquia de memória usando o simulador de hierarquia de memória, chamado Valgrind/Cachegrind), para gerar dados. Alguns benchmarks são disponibilizados para o experimento, disponíveis em http://www.inf.pucrs.br/alexandre.amory/parsec3-summary.zip.
O objetivo deste experimento é:
- Caracterizar cada benchmak em termos de parâmetros de hierarquia de memória (tamanho da cache, associatividade, e tamanho do bloco).
- Para cada benchmark, analisar dados obtidos e criar gráficos similares aos apresentados nos slides de ‘Aspectos de Projeto de Cache’. É altamente aconselhável os alunos lerem os trechos do livro do Patterson e Stallings referentes aos gráficos apresentados nos slides.
Metodologia
O aluno deve usar o Valgrind como simulador de cache. Siga as instruções do tutorial apresentado em aula para instalar a ferramenta e executar alguns primeiros testes.
Valgrind permite que o usuário modifique alguns parâmetros da cache como:
- tamanho da cache,
- associatividade, e
- tamanho do bloco
sendo que existem 3 caches no Valgrind: cache L1 de dados (L1d), cache L1 de instruções (L1i), e cache L2 (L2, dados+instruções). O aluno deve selecionar uma combinação destes parâmetros para caracterizar o comportamento de cada benchmark. Por exemplo:
blackscholes – L1d (L1 de dados)
Este exemplo descreve do espaço de busca de configuração de L1 de dados para a aplicação blackscholes. Este espaço de busca é caracterizado por combinação de valores, por exemplo:
- tam_cache = {2,4,8,16}
- assoc = {1,2,4}
- bloco = {16, 32, 64}
- Combinação = |tam_cache| * |assoc| * |bloco| = 4 * 3 * 3 = 36 configurações de cache
O Aluno deve executar o simulador de cache para cada configuração, anotando o miss rate obtido, neste exemplo o miss rate de L1 de dados (LDmr).
O mesmo deve ser feito para as outras caches para o mesmo benchmark. Neste exemplo, L1 de instruções (blackscholes – L1i) e a cache L2 (blackscholes – L2 ou LL).
Notem que os valores escolhidos devem fazer sentido e estes valores variam para cada benchmark e para cada tipo de cache(L1d, L1i, L2/LL). Por exemplo, não adianta usar tamanhos de cache muito grandes para um programa pequeno pois, OBVIAMENTE, não haverá quase nenhum cache miss. Lembre-se que um dos objetivos do experimento é montar gráficos similares aos vistos em aula.
Benchmarks
Os benchmarks usados no trabalho fazem parte do Parsec/Splash benchmark (http://parsec.cs.princeton.edu/download.htm). A descrição da função de cada benchmark é secundária para este experimento, mas pode ser encontrada no artigo http://parsec.cs.princeton.edu/publications/bienia08characterization.pdf. Os benchmarks selecionados para o trabalho encontram-se em http://www.inf.pucrs.br/alexandre.amory/parsec3-summary.zip. Neste link você encontra os binários pré-compilados, os arquivos de entrada e um script run.sh para cada bench. Este script automatiza a execução do programa passando os parâmetros adequados. O entendimento de como executar os benchmarks e seus scripts faz parte do trabalho.
Resultados Esperados
O aluno deve apresentar um relatório e o ambiente usado para executar o experimento (scripts). O relatório deve conter:
- Alguns exemplos de gráficos que devem existir no relatório:
- associatividade vs tamanho da cache
- tamanho do bloco vs tamanho da cache
- taxas de acerto para diferentes combinações de tamanho de L1 e L2
- Gráficos 3d (gráfico de superfície ou heat maps): permite avaliar o impacto de mais variáveis ao mesmo tempo, por exemplo, tamanho da cache e tamanho do bloco.
- Lembrando que não basta simplesmente colar a tabela ou gráfico. É necessário explicá-los. Dados não explicados/referenciados/comentados serão desconsiderados.
- Uma seção que explica como usar os scripts que executam os experimentos
- Uma seção analisando cada benchmark. Cada seção deve ter no mínimo:
- Os valores avaliados na configuração de cada tipo de cache
- O número total de combinações avaliadas
- Resultados obtidos (gráficos, tabelas + comentários)
- Conclusões: qual a configuração de hierarquia de memória que provê o melhor desempenho com o menor tamanho de cache?
- Conclusão geral do trabalho. O que foi aprendido? Onde você acha que vai usar o conhecimento obtido? Dificuldades encontradas?
O que vai ser Avaliado
- Habilidade de projetar e desenvolver;
- Habilidade de realizar/analisar experimentos exploratórios;
- Habilidade de comunicação oral e escrita entre colegas e prof.
- Demonstrar aprendizado duradouro;
- Capacidade de resolver problemas (o bom e velho sivirol);
- Ética profissional (exemplo, plágio e outros tipos de trapaças não serão tolerados);
- Capacidade de trabalho em equipe; Correção dos resultados.
Dicas
- Utilizem alguma linguagem de scripts para automatizar a execução das diversas configurações de cache para os diversos benchmarks. Você possivelmente vai precisar repetir esse experimentos várias vezes até a entrega do trabalho. Dificilmente um bom trabalho será feito na ausência de um bom script de automação. Recomendo fortemente o uso de Python ou Bash. Este script deve ser devidamente comentado e será avaliado.
- Inicie logo! Este trabalho não é difícil, mas exige um tempo de desenvolvimento e análise.
- Instalar as ferramentas adequadas (valgrind entre outras). Valgrind não funciona em VM. Deve ser instalado em máquina física. O Valgrind está disponível no LAPRO.
- Rodar valgrind em cada benchmark para ver se os relatórios estão sendo gerados adequadamente. Prestem atenção a número de misses absurdos e a mensagens de warnings apresentadas pelo simuldor.
- Verifique quais são os valores de configuração de cache para cada tipo de cache (L1d, L1i, L2) e para cada benchmark.
- Desenvolva scripts para automatizar a execução dos experimentos
- Desenvolva scripts para fazer a extração dos dados
- Organize os dados em bons gráficos. Existem boas bibliotecas que geram gráficos automaticamente. Por exemplo:
- Matplotlib – bib sugerida para quem for trabalhar com Python
- http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/tutorial.html
- Gnuplot http://t16web.lanl.gov/Kawano/gnuplot/plot3d-e.html
- Não deixe para escrever o relatório no último dia. A qualidade do relatório será avaliada.
- Antes de fazer a entrega final do trabalho, sugiro conversar e mostrar uma prévia do trabalho para o professor. Pode ainda ter tempo de corrigir algum erro de análise. Isto é muito importante para poder detectar algum erro no experimento a tempo de fazer as devidas correções.
- O prof. está sempre disponível para tirar qualquer dúvida. Entrem em contato via mensagem do moodle. Recomendo mostrar ao professor os resultados preliminares, assim eu poderei dar dicas. Na data de apresentação já vai ser tarde demais para fazer correções.
...