UNIVERSIDADEFEDERALDORIOGRANDEDOSUL INSTITUTODEINFORMÁTICA PROGRAMADEPÓS-GRADUAÇÃOEMCOMPUTAÇÃO RAFAELBALDIATIPARIZI Implementação e Avaliação da Técnica ACCE para Detecção e Correção de Erros de Fluxo de Controle no LLVM Dissertaçãoapresentadacomorequisitoparcial paraaobtençãodograude MestreemCiênciadaComputação Prof.Dr.ÁlvaroFreitasMoreira Orientador Prof.Dr.LuigiCarro Co-orientador PortoAlegre,maiode2013 CIP–CATALOGAÇÃONAPUBLICAÇÃO Parizi,RafaelBaldiati Implementação e Avaliação da Técnica ACCE para Detecção eCorreçãodeErrosdeFluxodeControlenoLLVM/RafaelBal- diatiParizi.–PortoAlegre: PPGCdaUFRGS,2013. 105 f.: il. Dissertação(mestrado)–UniversidadeFederaldoRioGrande do Sul. Programa de Pós-Graduação em Computação, Porto Ale- gre, BR–RS, 2013. Orientador: Álvaro Freitas Moreira; Co- orientador: LuigiCarro. 1.Tolerânciaafalhas. 2.Errosdefluxodecontrole. 3.ACCE. 4.LLVM. I.Moreira,ÁlvaroFreitas. II.Carro,Luigi. III.Título. UNIVERSIDADEFEDERALDORIOGRANDEDOSUL Reitor: Prof.CarlosAlexandreNetto Vice-Reitor: Prof.RuiVicenteOppermann Pró-ReitordePós-Graduação: Prof.AldoBoltenLucion DiretordoInstitutodeInformática: Prof.LuísdaCunhaLamb CoordenadordoPPGC:Prof.LuigiCarro Bibliotecária-chefedoInstitutodeInformática: BeatrizReginaBastosHaro “Ao ser produzido, o conhecimento novo supera outro que antes foi novo e se fez velho e se dispõe a ser ultrapassado por outro amanhã.” — PAULO FREIRE AGRADECIMENTOS Agradeço a Deus por me disponibilizar uma vida repleta de desafios que, ao superá- los,encho-mededisposiçãoecoragemparaseguircrescendopessoaleprofissionalmente. Agradeço à minha mãe, que sempre se fez presente na minha vida, assumindo o papel de paiemãe,mostrando-meocaminhoemeensinandoaseguiremfrente. Aomeupai,que dealgumlugarmeprotegeemedáforçasparabatalharpelosmeusobjetivos. Aosdemais familiares, que me ajudam das mais variadas formas, com ações de apoio e carinho. Aos meus amigos, pelo companheirismo, amizade e que entenderam minha ausência em di- versas festas e confraternizações. Ao CNPQ, pelo auxílio, fundamental e imprescindível paraaminhasubsistênciaemPortoAlegre. Aomeuorientador,ProfessorÁlvaroMoreira, pelo apoio e ensinamentos, acompanhando constantemente as atividades relacionadas ao trabalho. Ao professor Luigi Carro e ao Ronaldo Ferreira, que colaboraram de forma efetiva no desenvolvimento do trabalho. Aos colegas do laboratório 67-202 no Instituto de Informática da UFRGS, pelo companheirismo e amizade. Por fim, a todos que direta ou indiretamente colaboraram para minha formação profissional, pessoal e acadêmica, Obrigado! SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS . . . . . . . . . . . . . . . . . . . . 7 LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 RESUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1 ContextoeMotivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 ObjetivoseResultadosAlcançados . . . . . . . . . . . . . . . . . . . . . 14 1.3 OrganizaçãodoTexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 FALHAS TRANSIENTES E ERROS DE FLUXO DE CONTROLE . . . 16 2.1 FalhasTransientesdeHardware . . . . . . . . . . . . . . . . . . . . . . 16 2.2 ErrosdeFluxodeControle . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3 CFESdetectadosecorrigidosporACCE . . . . . . . . . . . . . . . . . . 17 2.4 TratamentodeCFEscomSoftware . . . . . . . . . . . . . . . . . . . . . 18 3 LLVM E LLVM-IR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1 LLVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1.2 ALinguagemIntermediáriaLLVM-IR . . . . . . . . . . . . . . . . . . . 22 4 IMPLEMENTAÇÃO DE ACCE NO LLVM . . . . . . . . . . . . . . . . . 24 4.1 ObtençãodeAssinaturasparaosBlocosBásicos . . . . . . . . . . . . . 24 4.1.1 Cálculodapartesuperiordasassinaturas . . . . . . . . . . . . . . . . . . 27 4.1.2 Cálculodaparteinferiordasassinaturas . . . . . . . . . . . . . . . . . . 27 4.2 Transformaçãodeprogramas . . . . . . . . . . . . . . . . . . . . . . . . 30 4.2.1 Adiçãodenovasvariáveisglobais . . . . . . . . . . . . . . . . . . . . . 30 4.2.2 TransformaçãodeFunções . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3 Transformação de Programas em Tempo de Compilação: Implementa- çãonoLLVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4 DetecçãodeErrosdeFluxodeControleemTempodeExecução . . . . 41 4.5 CorreçãodoControledoProgramaemTempodeExecução . . . . . . . 42 5 EXPERIMENTOS E RESULTADOS . . . . . . . . . . . . . . . . . . . . 50 5.1 ObjetivoseConclusõesdosExperimentos . . . . . . . . . . . . . . . . . 50 5.2 MetodologiadosExperimentos . . . . . . . . . . . . . . . . . . . . . . . 51 5.2.1 BenchmarksUtilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2.2 InjeçãodeFalhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.2.3 CenáriosdeExperimentação . . . . . . . . . . . . . . . . . . . . . . . . 54 5.3 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.3.1 AplicaçãoIndividualdeTransformaçõesseguidasporACCE . . . . . . . 56 5.3.2 AplicaçãodeCombinaçõesdeTransformaçõesseguidasporACCE . . . . 65 5.3.3 AvaliaçãodeACCEemtermosdeConsumoEnergéticoeDesempenho . . 68 6 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . . . 70 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 ANEXO I - SINTAXE DA LINGUAGEM LLVM-IR . . . . . . . . . . . . . . . 77 ANEXO II - ARTIGOS PUBLICADOS . . . . . . . . . . . . . . . . . . . . . 83 LISTA DE ABREVIATURAS E SIGLAS ABFT AlgorithmBasedFaultTolerance ACCE AutomaticCorrectionofControl-flowErrors A_sig AssinaturaSemelhante CEDA ControlflowErrorsDetectionthroughAssertions CFC ControlFlowChecking CFE ControlFlowError CFG ControlFlowGraph CFCSS ControlFlowCheckingbySoftwareSignatures CRC32 32-bitCyclicRedundancyCheck FEH FunctionErrorHandler FFT FastfourierTransform GCC GnuCompilerCollection GDB GnuDebbuger GEH GlobalErrorHandler IDE IntegratedDevelopmentEnvironment LLVM LowLevelVirtualMachine LLVM-IRLowLevelVirtualMachineIntermediateRepresentation NES NodeExitSignature Net Network NS NodeSignature NT NodeType PC ProgramCounter S Signature SSA SingleStaticAssignment SIHFT SoftwareImplementedHardwareFaultTolerance YACCA YetAnotherControlflowCheckingApproach LISTA DE FIGURAS Figura2.1: Exemplo de código fonte e seu grafo de fluxo de controle (OLGA etal.,2006) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Figura3.1: EtapasdacompilaçãorealizadaspeloLLVM. . . . . . . . . . . . . . 21 Figura3.2: ComandoseprocessodecompilaçãodoLLVM. . . . . . . . . . . . 21 Figura3.3: Exemplodeutilizaçãodeinstruçõesφ . . . . . . . . . . . . . . . . . 23 Figura4.1: Exemplodegrafodefluxodecontrole. . . . . . . . . . . . . . . . . 25 Figura4.2: AdiçãodenovasvariáveisglobaisporACCE. . . . . . . . . . . . . . 31 Figura4.3: RepresentaçãodatransformaçãorealizadaporACCEnasfunçõesdos programas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Figura4.4: Transformaçãodeblocodeentradadefunção. . . . . . . . . . . . . . 33 Figura4.5: Representaçãodatransformaçãorealizadaemblocosbásicosregulares. 35 Figura4.6: BlocosFEH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Figura4.7: FunçãoGEH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Figura4.8: ComandosparaaativaçãodeACCEduranteacompilaçãodeprogra- mascomoLLVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Figura4.9: ExemplodedetecçãodeerrodefluxodecontroleporACCE . . . . . 42 Figura4.10: ExemplodecorreçãodeCFEporACCEemblocosdamesmafunção -Blocosbásicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Figura4.11: ExemplodecorreçãodeCFEporACCEemblocosdamesmafunção -FEH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Figura4.12: Exemplo de correção de CFE por ACCE em blocos de funções dife- rentes-representaçãodafunção1. . . . . . . . . . . . . . . . . . . . 47 Figura4.13: Exemplo de correção de CFE por ACCE em blocos de funções dife- rentes-representaçãodafunção2. . . . . . . . . . . . . . . . . . . . 48 Figura4.14: Exemplo de correção de CFE por ACCE em blocos de funções dife- rentes-representaçãodeGEH. . . . . . . . . . . . . . . . . . . . . . 49 Figura5.1: ProcessodeaplicaçãodatécnicaACCEnoLLVM. . . . . . . . . . . 50 Figura5.2: Esquematizaçãodocenário2dosexperimentos. . . . . . . . . . . . . 55 Figura5.3: Esquematizaçãodocenário3dosexperimentos. . . . . . . . . . . . . 55 Figura5.4: Esquematizaçãodocenário4dosexperimentos. . . . . . . . . . . . . 55 Figura5.5: TaxasdecorreçãodeACCEquandocombinadacom1transformação. 56 Figura5.6: DesviopadrãodacorreçãodeACCEquandocombinadacom1trans- formação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Figura5.7: Efeitodeloop-reducesobreacorreçãodeCFEsnosbenchmarks. . . 57 Figura5.8: Taxa de correção de falhas de algumas transformações aplicadas em Dijkstra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Figura5.9: CFGcorrespondenteaocódigodaListagem5.1 . . . . . . . . . . . . 61 Figura5.10: CFG correspondente ao código da Listagem 5.1 transformado com Loop-rotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Figura5.11: CFG da função main do programa basicmath antes da aplicação de loop-rotate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Figura5.12: CFG da função main após a aplicação da transformação loop-rotate embasicmath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Figura5.13: CFG da função main de bitcount após a aplicação da transformação loop-rotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Figura5.14: CFGdafunçãomaindefft compiladocominstcombine . . . . . . . . 66 Figura5.15: TaxasdecorreçãodeACCEnocenáriodetransformaçõescombinadas. 67 Figura5.16: Desviopadrãonocenáriodetransformaçõescombinadas. . . . . . . 67 Figura6.1: SintaxedeumsubcojuntodeLLVM-IR . . . . . . . . . . . . . . . . 77 Figura6.2: ExemplodeprogramaemLinguagemLLVM-IR . . . . . . . . . . . 82 LISTA DE TABELAS Tabela4.1: BlocoseseuspredecessoresobtidosapartirdoCFGdaFigura4.1. . 25 Tabela4.2: NetseseuspredecessoresobtidosapartirdoCFGdaFigura4.1. . . . 26 Tabela4.3: NetserespectivosA_Sig. . . . . . . . . . . . . . . . . . . . . . . . 27 Tabela4.4: NS eNES deblocos. . . . . . . . . . . . . . . . . . . . . . . . . . 27 u u Tabela4.5: NS eNES deblocos. . . . . . . . . . . . . . . . . . . . . . . . . . . 28 l l Tabela4.6: NS eNES deblocos. . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Tabela4.7: NS eNES deblocosembits. . . . . . . . . . . . . . . . . . . . . . 29 u u Tabela4.8: d ed dosblocosembits. . . . . . . . . . . . . . . . . . . . . . . . 30 1 2 Tabela5.1: Programasdebenchmark disponíveisnasuíteMibench . . . . . . . . 52 Tabela5.2: ResultadosdacorreçãodeCFEscomACCEparacadaotimizaçãodo LLVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Tabela5.3: Número de blocos básicos correspondente a cada benchmark para cadaumadastransformaçõesdisponibilizadaspeloLLVM . . . . . . 60 Tabela5.4: Valores da correção de falhas resultante da aplicação das combina- çõesdetransformaçõesnosbenchmarkscomparadoscomobaseline . 68 Tabela5.5: Avaliação de energia de três programas transformados com otimiza- çõesfornecidaspeloLLVM,seguidasporACCE. . . . . . . . . . . . 69 Tabela5.6: Avaliação do tempo de execução de três programas otimizados pelas transformaçõesfornecidaspeloLLVMeACCE. . . . . . . . . . . . 69 Tabela6.1: TiposdeLLVM-IR . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Tabela6.2: ComandosemLLVM-IR . . . . . . . . . . . . . . . . . . . . . . . . 79 Tabela6.3: Instruçõesdetérmino . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Description: