Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication

Detalhes bibliográficos
Autor(a) principal: Andrade, Gabriel Arthur Gerber
Data de Publicação: 2017
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Institucional da UFSC
Texto Completo: https://repositorio.ufsc.br/xmlui/handle/123456789/176786
Resumo: Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2017.
id UFSC_4358b894484af868816e89e8f86c4d8c
oai_identifier_str oai:repositorio.ufsc.br:123456789/176786
network_acronym_str UFSC
network_name_str Repositório Institucional da UFSC
repository_id_str 2373
spelling Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication ComputaçãoProgramas de computador -VerificacaoMemória compartilhada distribuídaDissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2017.Introdução A verificação funcional do projeto de um sistema com multiprocessamento em chip (CMP) vem se tornando cada vez mais desafiadora por causa da crescente complexidade para suportar a abstração de memória compartilhada coerente, a qual provavelmente manterá seu papel crucial para multiprocessamento em chip, mesmo na escala de centenas de processadores. A verificação funcional baseia-se principalmente na geração de programas de teste aleatórios.Trabalhos Correlatos e Gerador Proposto Embora frameworks de verificação funcional que se baseiam na solução de problemas de satisfação de restrições possuam a vantagem de oferecer uma abordagem unificada para gerar estímulos aleatórios capazes de verificar todo o sistema, eles não são projetados para explorar não-determinismo, que é um importante mecanismo para expôr erros de memória compartilhada. Esta dissertação reporta novas técnicas que se baseiam em lições aprendidas de ambos? os frameworks de verificação de propósitos gerais e as abordagens especializadas em verificar o modelo de memória. Elas exploram restrições sobre endereços e cadeias canônicas de dependência para melhorar a geração de testes aleatórios enquanto mantêm o papel crucial do não-determinismo como um mecanismo-chave para a exposição de erros. Geração de Sequências Ao invés de selecionar instruções aleatoriamente, como faz uma técnica convencional, o gerador proposto seleciona instruções de acordo com cadeias de dependências pré-definidas que são comprovadamente significativas para preservar o modelo de memória sob verificação. Esta dissertação explora cadeias canônicas, definidas por Gharachorloo, para evitar a indução de instruções que, sendo desnecessárias para preservar o modelo de memória sob verificação, resultem na geração de testes ineficazes. Assinalamento de Endereços Em vez de selecionar aleatoriamente padrões binários para servir de endereços efetivos de memória, como faz um gerador convencional, o gerador proposto aceita restrições à formação desses endereços de forma a forçar o alinhamento de objetos em memória, evitar falso compartilhamento entre variáveis e especificar o grau de competição de endereços por uma mesma linha de cache. Avaliação Experimental Um novo gerador, construído com as técnicas propostas, foi comparado com um gerador convencional de testes aleatórios. Ambos foram avaliados em arquiteturas de 8, 16, e 32 núcleos, ao sintetizar 1200 programas de testes distintos para verificar 5 projetos derivados, cada um contendo um diferente tipo de erro (6000 casos de uso por arquitetura). Os testes sintetizados exploraram uma ampla variedade de parâmetros de geração (5 tamanhos de programas, 4 quantidades de posições compartilhadas de memória, 4 mixes de instruções, e 15 sementes aleatórias). Os resultados experimentais mostram que, em comparação com um convencional, o novo gerador tende a expor erros para um maior número de configurações dos parâmetros: ele aumentou em 38% o potencial de expor erros de projeto. Pela análise dos resultados da verificação sobre todo o espectro de parâmetros, descobriu-se que os geradores requerem um número bastante distinto de posições de memória para alcançar sua melhor exposição. Os geradores foram comparados quando cada um explorou a quantidade de posições de memória correspondente à sua melhor exposição. Nestas condições, quando destinados a projetos com 32 núcleos através da exploração de todo o espectro de tamanhos de testes, o novo gerador expôs um tipo de erro tão frequentemente quanto a técnica convencional, dois tipos com 11% mais frequência, um tipo duas vezes, e um tipo 4 vezes mais frequentemente. Com os testes mais longos (64000 operações) ambos os geradores foram capazes de expor todos os tipos de erros, mas o novo gerador precisou de 1,5 a 15 vezes menor esforço para expor cada erro, exceto por um (para o qual uma degradação de 19% foi observada). Conclusões e Perspectivas Com base na avaliação realizada, conclui-se que, quando se escolhe um número suficientemente grande de variáveis compartilhadas como parâmetro, o gerador proposto requer programas de teste mais curtos para expor erros de projeto e, portanto, resulta em menor esforço, quando comparado a um gerador convencional.<br>Abstract : Albeit general functional processor verification frameworks relying on the solution of constraint satisfaction problems have the advantage of offering a unified approach for generating random stimuli to verify the whole system, they are not designed to exploit non-determinism, which is an important mechanism to expose shared-memory errors. This dissertation reports new techniques that build upon the lessons learned from both - the general verification frameworks and the approaches specifically targeting memory-model verification. They exploit address biasing constraints and canonical dependence chains to improve random test generation while keeping the crucial role of non-determinism as a key mechanism to error exposure. A new generator, built with the proposed techniques, was compared to a conventional random test generator. Both were evaluated for 8, 16, and 32-core architectures, when synthesizing 1200 distinct test programs for verifying 5 derivative designs containing each a different type of error (6000 use cases per architecture). The synthesized tests explored a wide variety of generation parameters (5 program sizes, 4 shared-location counts, 4 instruction mixes, and 15 random seeds). The experimental results show that, as compared to a conventional one, the new generator tends to expose errors for a larger number of parameter settings: it increased by 38% the potential for exposing design errors. By analyzing the verification out-comes over the full parameter ranges, we found out that the generators require quite distinct numbers of shared locations to reach best exposure. We compared them when each generator exploited the location count leading to its best exposure. In such conditions, when targeting32-core designs by exploring the whole range of test lengths, the new generator exposed one type of error as often as the conventional technique, two types 11% more often, one type twice as often, and one type4 times as often. With the longest tests (64000 operations) both generators were able to expose all types of errors, but the new generator required from 1.5 to 15 times less effort to expose each error, except for one (for which a degradation of 19% was observed).Santos, Luiz Claudio Villar dosUniversidade Federal de Santa CatarinaAndrade, Gabriel Arthur Gerber2017-06-27T04:21:32Z2017-06-27T04:21:32Z2017info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesis107 p.| il., gráfs., tabs.application/pdf345872https://repositorio.ufsc.br/xmlui/handle/123456789/176786engreponame:Repositório Institucional da UFSCinstname:Universidade Federal de Santa Catarina (UFSC)instacron:UFSCinfo:eu-repo/semantics/openAccess2017-06-27T04:21:32Zoai:repositorio.ufsc.br:123456789/176786Repositório InstitucionalPUBhttp://150.162.242.35/oai/requestopendoar:23732017-06-27T04:21:32Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)false
dc.title.none.fl_str_mv Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
title Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
spellingShingle Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
Andrade, Gabriel Arthur Gerber
Computação
Programas de computador -
Verificacao
Memória compartilhada distribuída
title_short Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
title_full Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
title_fullStr Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
title_full_unstemmed Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
title_sort Exploiting canonical dependence chains and address biasing constraints to improve random test generation for shared-memory veridication
author Andrade, Gabriel Arthur Gerber
author_facet Andrade, Gabriel Arthur Gerber
author_role author
dc.contributor.none.fl_str_mv Santos, Luiz Claudio Villar dos
Universidade Federal de Santa Catarina
dc.contributor.author.fl_str_mv Andrade, Gabriel Arthur Gerber
dc.subject.por.fl_str_mv Computação
Programas de computador -
Verificacao
Memória compartilhada distribuída
topic Computação
Programas de computador -
Verificacao
Memória compartilhada distribuída
description Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2017.
publishDate 2017
dc.date.none.fl_str_mv 2017-06-27T04:21:32Z
2017-06-27T04:21:32Z
2017
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv 345872
https://repositorio.ufsc.br/xmlui/handle/123456789/176786
identifier_str_mv 345872
url https://repositorio.ufsc.br/xmlui/handle/123456789/176786
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv 107 p.| il., gráfs., tabs.
application/pdf
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFSC
instname:Universidade Federal de Santa Catarina (UFSC)
instacron:UFSC
instname_str Universidade Federal de Santa Catarina (UFSC)
instacron_str UFSC
institution UFSC
reponame_str Repositório Institucional da UFSC
collection Repositório Institucional da UFSC
repository.name.fl_str_mv Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)
repository.mail.fl_str_mv
_version_ 1808651935584092160