Geração automática de backend de compiladores baseada em ADLs
Autor(a) principal: | |
---|---|
Data de Publicação: | 2011 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
Texto Completo: | https://hdl.handle.net/20.500.12733/1616716 |
Resumo: | Orientador: Paulo Cesar Centoducatte |
id |
UNICAMP-30_542bae2014a86ca8be0eaba518192d36 |
---|---|
oai_identifier_str |
oai::839953 |
network_acronym_str |
UNICAMP-30 |
network_name_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository_id_str |
|
spelling |
Geração automática de backend de compiladores baseada em ADLsADL based automatic compiler backend generationCompiladores (Computadores)Arquitetura de computadorSistema de computaçãoProgramação automática (Computação)Compiling (Electronic computers)Computer architectureComputer systemsAutomatic programming (Computer science)Orientador: Paulo Cesar CentoducatteDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: O processo de automatização da criação de backends de compiladores, isto é, do componente responsável pela tradução final para código de máquina, é perseguido desde o surgimento dos primeiros compiladores. A separação entre os algoritmos empregados no backend e a descrição formal da máquina, que requer conhecimento sobre a arquitetura alvo, é uma característica bastante desejada, uma vez que propicia a criação de novos backends sem a necessidade de conhecer o projeto do compilador, mas apenas do processador. Por esse motivo, um esforço natural para manter o desenvolvimento simples e intuitivo é a concentração do conhecimento sobre a máquina alvo em uma forma concisa de descrição, a partir da qual seja possível especializar algoritmos genéricos de compilação para este alvo específico. Uma linguagem de descrição de arquiteturas (ADL) permite a especificação das características arquiteturais de processadores, incluindo o seu conjunto de instruções (ISA). Neste trabalho, um estudo de mecanismos para gerar backend de compiladores através de descrições arquiteturais de processadores é apresentado, com ênfase no estudo de caso da ADL ArchC com o compilador LLVM. Um protótipo de um gerador de backends para LLVM a partir de uma descrição em ArchC foi desenvolvido, e backends para as arquiteturas ARM, MIPS, SPARC e PowerPC foram gerados com sucesso. Para alcançar este objetivo, foi usado um algoritmo de busca para resolver o problema da programação automática e inferir como implementar fragmentos pré-selecionados da linguagem intermediária LLVM utilizando instruções de uma arquitetura alvo arbitrária. Quatro técnicas para aumentar a velocidade deste algoritmo são apresentadas, de forma a não somente viabilizar uma solução para a geração automática de backends, mas também concluir o processo em menos de 20 segundos para três das quatro arquiteturas testadas. Programas do benchmark Mibench foram compilados com os compiladores gerados, executados com simuladores ArchC e os resultados comparados com aqueles gerados a partir dos mesmos programas compilados com os compiladores gcc e LLVM original, validando os novos backends. A qualidade do código gerado pode ser comparada com a de compiladores consagrados, caso seja utilizado um otimizador peephole para realizar substituições simples de algumas sequências ineficientesAbstract: Researchers pursue the automation of compiler backend generation, the component responsible for final translation from intermediate language to machine code, since the begining of compilers theory creation. The separation between the algorithms used in the backend and formal machine description, which encompasses knowledge about the target architecture, is an important feature, since it facilitates the creation of new backends without the need for deep understanding of the compiler project. For this reason, an effort to maintain the development natural, simple and intuitive must concentrate the knowledge of the target machine in a concise description in a way it is possible to specialize generic algorithms to this target. An architecture description language (ADL) allows the specification of architectural features of processors, comprising the instruction set architecture available. This work presents a study of mechanisms for generating compiler backend through architectural descriptions of processors, with emphasis on a case study of the ArchC ADL with the LLVM compiler. We developed an automatic backend generator prototype for LLVM backends based on ArchC and successfully generated backends for the architectures ARM, MIPS, PowerPC and SPARC. To achieve this, we used a search algorithm to solve the problem of automatic programming and to infer how to implement pre-selected fragments of LLVM intermediate language using instructions of an arbitrary target architecture. We present four techniques to increase the speed of this algorithm which not only enables a solution for the automatic generation of backends, but also completes the process in less than 20 seconds for three of four architectures tested. Test compilation of Mibench benchmark programs attested the proper functioning of the backend and revealed that the quality of the generated code can compare with that of existing compilers, if a peephole optimizer were used to perform some simple substitutions of inefficient sequencesMestradoCiência da ComputaçãoMestre em Ciência da Computação[s.n.]Centoducatte, Paulo Cesar, 1957-Furtado, Olinto Jose VarelaAzevedo, Rodolfo Jardim deUniversidade Estadual de Campinas (UNICAMP). Instituto de ComputaçãoPrograma de Pós-Graduação em Ciência da ComputaçãoUNIVERSIDADE ESTADUAL DE CAMPINASAuler, Rafael, 1986-2011info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdf129 p. : il.https://hdl.handle.net/20.500.12733/1616716AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024.https://repositorio.unicamp.br/acervo/detalhe/839953porreponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)instname:Universidade Estadual de Campinas (UNICAMP)instacron:UNICAMPinfo:eu-repo/semantics/openAccess2017-02-18T06:28:07Zoai::839953Biblioteca Digital de Teses e DissertaçõesPUBhttp://repositorio.unicamp.br/oai/tese/oai.aspsbubd@unicamp.bropendoar:2017-02-18T06:28:07Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)false |
dc.title.none.fl_str_mv |
Geração automática de backend de compiladores baseada em ADLs ADL based automatic compiler backend generation |
title |
Geração automática de backend de compiladores baseada em ADLs |
spellingShingle |
Geração automática de backend de compiladores baseada em ADLs Auler, Rafael, 1986- Compiladores (Computadores) Arquitetura de computador Sistema de computação Programação automática (Computação) Compiling (Electronic computers) Computer architecture Computer systems Automatic programming (Computer science) |
title_short |
Geração automática de backend de compiladores baseada em ADLs |
title_full |
Geração automática de backend de compiladores baseada em ADLs |
title_fullStr |
Geração automática de backend de compiladores baseada em ADLs |
title_full_unstemmed |
Geração automática de backend de compiladores baseada em ADLs |
title_sort |
Geração automática de backend de compiladores baseada em ADLs |
author |
Auler, Rafael, 1986- |
author_facet |
Auler, Rafael, 1986- |
author_role |
author |
dc.contributor.none.fl_str_mv |
Centoducatte, Paulo Cesar, 1957- Furtado, Olinto Jose Varela Azevedo, Rodolfo Jardim de Universidade Estadual de Campinas (UNICAMP). Instituto de Computação Programa de Pós-Graduação em Ciência da Computação UNIVERSIDADE ESTADUAL DE CAMPINAS |
dc.contributor.author.fl_str_mv |
Auler, Rafael, 1986- |
dc.subject.por.fl_str_mv |
Compiladores (Computadores) Arquitetura de computador Sistema de computação Programação automática (Computação) Compiling (Electronic computers) Computer architecture Computer systems Automatic programming (Computer science) |
topic |
Compiladores (Computadores) Arquitetura de computador Sistema de computação Programação automática (Computação) Compiling (Electronic computers) Computer architecture Computer systems Automatic programming (Computer science) |
description |
Orientador: Paulo Cesar Centoducatte |
publishDate |
2011 |
dc.date.none.fl_str_mv |
2011 |
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://hdl.handle.net/20.500.12733/1616716 AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024. |
url |
https://hdl.handle.net/20.500.12733/1616716 |
identifier_str_mv |
AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024. |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
https://repositorio.unicamp.br/acervo/detalhe/839953 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf 129 p. : il. |
dc.publisher.none.fl_str_mv |
[s.n.] |
publisher.none.fl_str_mv |
[s.n.] |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) instname:Universidade Estadual de Campinas (UNICAMP) instacron:UNICAMP |
instname_str |
Universidade Estadual de Campinas (UNICAMP) |
instacron_str |
UNICAMP |
institution |
UNICAMP |
reponame_str |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
collection |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP) |
repository.mail.fl_str_mv |
sbubd@unicamp.br |
_version_ |
1809189066694983680 |