Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip

Detalhes bibliográficos
Autor(a) principal: Henschel, Olav Philipp
Data de Publicação: 2014
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFSC
Texto Completo: https://repositorio.ufsc.br/xmlui/handle/123456789/129395
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, 2014
id UFSC_25bba9d55d2dc8272831e312debb9cdb
oai_identifier_str oai:repositorio.ufsc.br:123456789/129395
network_acronym_str UFSC
network_name_str Repositório Institucional da UFSC
repository_id_str 2373
spelling Universidade Federal de Santa CatarinaHenschel, Olav PhilippSantos, Luiz Claudio Villar dos2015-02-05T21:02:33Z2015-02-05T21:02:33Z2014330255https://repositorio.ufsc.br/xmlui/handle/123456789/129395Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2014O multiprocessamento em chip sob a crescente demanda por desempenho leva a um número crescente de núcleos de processamento, que interagem através de uma complexa hierarquia de memória compartilhada, a qual deve obedecer a requisitos de coerência e consistência, capturados na interface hardware-software na forma de um modelo de memória. Dada uma execução de um programa paralelo, verificar se a hierarquia obedece aqueles requisitos é um problema intratável quando a observabilidade do sistema restringe-se a um trace de memória para cada processador, tal como ocorre em um checker dinâmico pós-silício. Esses checkers (baseados em inferências sobre traces) requerem o uso de backtracking para excluir falsos negativos. Por outro lado, checkers pré-silício podem se beneficiar da observabilidade ilimitada de representações de projeto para induzir um problema de verificação que pode ser resolvido em tempo polinomial (sem o uso de backtracking) e com plenas garantias de verificação (sem falsos negativos nem falsos positivos). Esta dissertação faz uma avaliação experimental comparativa de checkers dinâmicos baseados em diferentes mecanismos (inferências, emparelhamento em grafo bipartido, scoreboard única e múltiplas scoreboards). Os checkers são comparados para exatamente o mesmo conjunto de casos de teste: 200 programas paralelos não sincronizados, gerados de forma pseudo-aleatória, obtidos variando a frequência de ocorrência de instruções (4 mixes), o número de endereços compartilhados (entre 2 e 32) e o número total de operações de memória (entre 250 e 64K). A partir de uma mesma representação pré-validada do sistema, foram construídas oito representações derivadas, cada uma contendo um erro de projeto distinto. Para reproduzir condições compatíveis com as tendências arquiteturais, os checkers foram comparados ao verificar um modelo com máxima relaxação de ordem de programa (bastante similar ao usado, por exemplo, nas arquiteturas Alpha e ARMv7) para sistemas contendo de 2 a 32 núcleos de processamento. Não é do conhecimento do autor a existência na literatura de uma avaliação experimental tão ampla. Os resultados mostram a inviabilidade do uso de checkers baseados em inferências em tempo de projeto: têm o mais alto esforço computacional e a maior taxa de crescimento com o aumento do número de processadores. A avaliação indica que a forma mais eficiente de construir um checker pré-silício corresponde a uma observabilidade de três pontos de monitoramento por processador, ao uso de verificação on-the-fly (ao invés de análise post-mortem) e à utilização de múltiplos mecanismos para verificar separadamente e em paralelo os subespaços de verificação definidos pelo escopo individual de cada processador, enquanto os subespaços entre processadores são verificados globalmente. Como um desdobramento da avaliação experimental, a dissertação identifica uma deficiência comum a todos os checkers analisados: sua inadequação para verificar modelos de memória com fraca atomicidade de escrita, exatamente aqueles apontados como tendência e já presentes em arquiteturas recentes (e.g. ARMv8). Diante disso, a dissertação propõe algoritmos generalizados capazes de verificar tais modelos.<br>Abstract: Chip multiprocessing under the growing demand for performance leads to agrowing number of processing cores, which interact through a complex shared memory hierarchy that must satisfy coherence and consistency requirements captured as a memory model in the hardware-software interface. Given an execution of a parallel program, verifying if the hierarchy complies to those requirements is an intractable problem when the system observability is limited to a memory trace per processor, as in dynamic post-silicon checkers.Those checkers (based on inferences over traces) require the use of backtracking to avoid false negatives. On the other hand, pre-silicon checkers may benefit from the unlimited observability of design representations to induce a verification problem that may be solved in polynomial time (without the use of backtracking) with full verification guarantees (i.e. neither false negatives nor false positives). This dissertation provides an experimental evaluation of dynamic checkers based on different mechanisms (inferences, bipartite graph matching, single scoreboard and multiple scoreboards). The checkers are compared under exactly the same set of test cases: 200 non-synchronized parallel programs, generated pseudo-randomly, obtained by varying the frequency of instructions (4 mixes), the number of shared addresses (between 2 and 32) and the total number of memory operations (between 250 and 64K). From the same pre-validated system representation, eight distinct representations were built, each one containing a single and unique design error. To reproduce conditions compatible with architectural trends, the checkers were compared while verifying a memory model with maximal relaxation of program order (similar, for example, to those used in Alpha and ARMv7 architectures) and systems containing 2 to 32 processing cores. To the author's best knowledge, no broader experimental evaluation is available in the literature. The results show that the use of inference-based checkers at design time is impractical: they have the highest computational effort and the highest rate of growth with the number of cores. The evaluation shows that the most efficient way of building a pre-silicon checker corresponds to three observable points per core, the use of on-the-fly analysis (instead of post-mortem) and the usage of multiple engines to check the verification subspaces defined by the scope of each processor independently and in parallel, while checking globally the inter-processor subspaces. As a spin-off from the experimental evaluation, the dissertation identifies a deficiency common to all analyzed checkers: their unsuitability to handle memory models with weak write atomicity, which are precisely those pointed out as the trend and are present in architectures already in the market (e.g. ARMv8). In face of this, the dissertation proposes generic algorithms capable of verifying such models.91 p.| il., tabs., grafs.porComputaçãoMemória compartilhada distribuídaGerenciamento de memoria (Computação)Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chipinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisreponame:Repositório Institucional da UFSCinstname:Universidade Federal de Santa Catarina (UFSC)instacron:UFSCinfo:eu-repo/semantics/openAccessORIGINAL330255.pdfapplication/pdf3149547https://repositorio.ufsc.br/bitstream/123456789/129395/1/330255.pdf67161f66dc891b9dd0fe6599ef298d40MD51123456789/1293952015-02-05 19:02:34.005oai:repositorio.ufsc.br:123456789/129395Repositório de PublicaçõesPUBhttp://150.162.242.35/oai/requestopendoar:23732015-02-05T21:02:34Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)false
dc.title.pt_BR.fl_str_mv Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
title Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
spellingShingle Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
Henschel, Olav Philipp
Computação
Memória compartilhada distribuída
Gerenciamento de memoria (Computação)
title_short Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
title_full Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
title_fullStr Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
title_full_unstemmed Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
title_sort Verificação de consistência e coerência de memória compartilhada para multiprocessamento em chip
author Henschel, Olav Philipp
author_facet Henschel, Olav Philipp
author_role author
dc.contributor.pt_BR.fl_str_mv Universidade Federal de Santa Catarina
dc.contributor.author.fl_str_mv Henschel, Olav Philipp
dc.contributor.advisor1.fl_str_mv Santos, Luiz Claudio Villar dos
contributor_str_mv Santos, Luiz Claudio Villar dos
dc.subject.classification.pt_BR.fl_str_mv Computação
Memória compartilhada distribuída
Gerenciamento de memoria (Computação)
topic Computação
Memória compartilhada distribuída
Gerenciamento de memoria (Computação)
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, 2014
publishDate 2014
dc.date.issued.fl_str_mv 2014
dc.date.accessioned.fl_str_mv 2015-02-05T21:02:33Z
dc.date.available.fl_str_mv 2015-02-05T21:02:33Z
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 https://repositorio.ufsc.br/xmlui/handle/123456789/129395
dc.identifier.other.pt_BR.fl_str_mv 330255
identifier_str_mv 330255
url https://repositorio.ufsc.br/xmlui/handle/123456789/129395
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv 91 p.| il., tabs., grafs.
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
bitstream.url.fl_str_mv https://repositorio.ufsc.br/bitstream/123456789/129395/1/330255.pdf
bitstream.checksum.fl_str_mv 67161f66dc891b9dd0fe6599ef298d40
bitstream.checksumAlgorithm.fl_str_mv MD5
repository.name.fl_str_mv Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)
repository.mail.fl_str_mv
_version_ 1766805260652773376