Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM
Autor(a) principal: | |
---|---|
Data de Publicação: | 2013 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFMS |
Texto Completo: | https://repositorio.ufms.br/handle/123456789/2209 |
Resumo: | O objetivo deste trabalho _e apresentar uma proposta integrada para Escalonamento de Instruções e Alocação de Registradores baseada em Isomorfismo de Subgrafos implementada no compilador LLVM. A contribuição principal deste trabalho _e mapear as fases de escalonamento instruções e alocação de registradores como um problema de Isomorfismo de Subgrafos. A resolução _e baseada na modelagem dos recursos de hardware (unidades funcionais, banco de registradores e suas interconexões) como um grafo base e a representação do programa de entrada como um Directed Acyclic Graph (DAG) com vértices representando instruções, operandos de entradas e saída, e as arestas as dependências entre esses vértices. O DAG de entrada possui atributos especiais para indicar a lat^encia de instruções, operandos especiais (registradores de instruções especificas/dedicadas) e dependências de controle. As entradas para o algoritmo são compostas por um DAG G1 e um grafo base G2 que representa a arquitetura alvo. A saída é um grafo G0 2 isomórfico para G1. Outra contribuição é a definição de grafo base como uma ferramenta para modelar diferentes modelos arquiteturais de processadores. A técnica tem-se mostrado particularmente viável para arquiteturas com restrições de registradores e interconexões. No entanto, pode-se vislumbrar extensões para arquiteturas Very Long Instruction Word (VLIW), maquinas escalares e até mesmo processadores que exploram paralelismo em nível de instrução utilizando outros modelos de execução. Experimentos foram realizados visando a validação, caracterização do algoritmo e a comparação com outras técnicas existentes na infraestrutura de compilação LLVM. Os resultados mostram que o algoritmo proposto, apesar de necessitar melhorias quanto ao tempo de compilação, pode obter ganhos de desempenho no código final gerado. |
id |
UFMS_c9b99269c883313347641bcc4543a528 |
---|---|
oai_identifier_str |
oai:repositorio.ufms.br:123456789/2209 |
network_acronym_str |
UFMS |
network_name_str |
Repositório Institucional da UFMS |
repository_id_str |
2124 |
spelling |
2015-04-23T18:20:56Z2021-09-30T19:57:06Z2013https://repositorio.ufms.br/handle/123456789/2209O objetivo deste trabalho _e apresentar uma proposta integrada para Escalonamento de Instruções e Alocação de Registradores baseada em Isomorfismo de Subgrafos implementada no compilador LLVM. A contribuição principal deste trabalho _e mapear as fases de escalonamento instruções e alocação de registradores como um problema de Isomorfismo de Subgrafos. A resolução _e baseada na modelagem dos recursos de hardware (unidades funcionais, banco de registradores e suas interconexões) como um grafo base e a representação do programa de entrada como um Directed Acyclic Graph (DAG) com vértices representando instruções, operandos de entradas e saída, e as arestas as dependências entre esses vértices. O DAG de entrada possui atributos especiais para indicar a lat^encia de instruções, operandos especiais (registradores de instruções especificas/dedicadas) e dependências de controle. As entradas para o algoritmo são compostas por um DAG G1 e um grafo base G2 que representa a arquitetura alvo. A saída é um grafo G0 2 isomórfico para G1. Outra contribuição é a definição de grafo base como uma ferramenta para modelar diferentes modelos arquiteturais de processadores. A técnica tem-se mostrado particularmente viável para arquiteturas com restrições de registradores e interconexões. No entanto, pode-se vislumbrar extensões para arquiteturas Very Long Instruction Word (VLIW), maquinas escalares e até mesmo processadores que exploram paralelismo em nível de instrução utilizando outros modelos de execução. Experimentos foram realizados visando a validação, caracterização do algoritmo e a comparação com outras técnicas existentes na infraestrutura de compilação LLVM. Os resultados mostram que o algoritmo proposto, apesar de necessitar melhorias quanto ao tempo de compilação, pode obter ganhos de desempenho no código final gerado.ABSTRACT - This work aims at providing an integrated Instruction Scheduling and Register Allocation algorithm based on Subgraph Isomorphism theory implemented on the LLVM Compiler. The main contribution of this work is the mapping of instruction scheduling and register allocation as a Subgraph Isomorphism problem. The approach is based on the modelling of the hardware resources (functional units, register les and their interconnections) as a base graph, and the representation of the input program as Directed Acyclic Graphs (DAG) with vertices representing program instructions, input and output operands, and edges representing the dependences between two vertices. This input DAG has also special attributes to indicate the instruction latency, special operands (speci c/dedicated instruction registers), and control dependencies. The algorithm input comprises a DAG G1 of the program and a base graph G2 that represents the target architecture. The output is a graph G0 2 isomorphic to G1. Another contribution is the de nition of base graphs as a tool to model di erent computer architectures to be used by the technique. The technique has shown to be a viable alternative for constrained register and interconnection processor architectures. In addition, the technique can be also extensible for architectures ranging from Very Long InstructionWord (VLIW), scalar, and even processors exploiting instruction level parallelism by using non-conventional execution models. Experiments have been performed to validate and characterize the algorithm. Other experiments have been performed to compare our proposal to classical techniques existing in the LLVM compiler. The results show that proposed algorithm, in spite being a subject for future investigations regarding compilation time, can provide performance gains for programs.porCompiladores (Programas de Computador)Algorítmos ComputacionaisCompilers (Computer Programs)Computer AlgorithmsAlgoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVMinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisSantos, Ricardo Ribeiro dosSilva, Lucas da Costainfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFMSinstname:Universidade Federal de Mato Grosso do Sul (UFMS)instacron:UFMSTHUMBNAILLucas da Costa Silva.pdf.jpgLucas da Costa Silva.pdf.jpgGenerated Thumbnailimage/jpeg1252https://repositorio.ufms.br/bitstream/123456789/2209/4/Lucas%20da%20Costa%20Silva.pdf.jpg66ea2ec92cadd03f54077ca20a655dfcMD54ORIGINALLucas da Costa Silva.pdfLucas da Costa Silva.pdfapplication/pdf3078352https://repositorio.ufms.br/bitstream/123456789/2209/1/Lucas%20da%20Costa%20Silva.pdfbc7ce3bb47d34239d0ed8e01fe3a8403MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://repositorio.ufms.br/bitstream/123456789/2209/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52TEXTLucas da Costa Silva.pdf.txtLucas da Costa Silva.pdf.txtExtracted texttext/plain0https://repositorio.ufms.br/bitstream/123456789/2209/3/Lucas%20da%20Costa%20Silva.pdf.txtd41d8cd98f00b204e9800998ecf8427eMD53123456789/22092021-09-30 15:57:06.405oai:repositorio.ufms.br:123456789/2209Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Repositório InstitucionalPUBhttps://repositorio.ufms.br/oai/requestri.prograd@ufms.bropendoar:21242021-09-30T19:57:06Repositório Institucional da UFMS - Universidade Federal de Mato Grosso do Sul (UFMS)false |
dc.title.pt_BR.fl_str_mv |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
title |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
spellingShingle |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM Silva, Lucas da Costa Compiladores (Programas de Computador) Algorítmos Computacionais Compilers (Computer Programs) Computer Algorithms |
title_short |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
title_full |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
title_fullStr |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
title_full_unstemmed |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
title_sort |
Algoritmos para escalonamento de instruções e alocação de registradores na infraestrutura LLVM |
author |
Silva, Lucas da Costa |
author_facet |
Silva, Lucas da Costa |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Santos, Ricardo Ribeiro dos |
dc.contributor.author.fl_str_mv |
Silva, Lucas da Costa |
contributor_str_mv |
Santos, Ricardo Ribeiro dos |
dc.subject.por.fl_str_mv |
Compiladores (Programas de Computador) Algorítmos Computacionais Compilers (Computer Programs) Computer Algorithms |
topic |
Compiladores (Programas de Computador) Algorítmos Computacionais Compilers (Computer Programs) Computer Algorithms |
description |
O objetivo deste trabalho _e apresentar uma proposta integrada para Escalonamento de Instruções e Alocação de Registradores baseada em Isomorfismo de Subgrafos implementada no compilador LLVM. A contribuição principal deste trabalho _e mapear as fases de escalonamento instruções e alocação de registradores como um problema de Isomorfismo de Subgrafos. A resolução _e baseada na modelagem dos recursos de hardware (unidades funcionais, banco de registradores e suas interconexões) como um grafo base e a representação do programa de entrada como um Directed Acyclic Graph (DAG) com vértices representando instruções, operandos de entradas e saída, e as arestas as dependências entre esses vértices. O DAG de entrada possui atributos especiais para indicar a lat^encia de instruções, operandos especiais (registradores de instruções especificas/dedicadas) e dependências de controle. As entradas para o algoritmo são compostas por um DAG G1 e um grafo base G2 que representa a arquitetura alvo. A saída é um grafo G0 2 isomórfico para G1. Outra contribuição é a definição de grafo base como uma ferramenta para modelar diferentes modelos arquiteturais de processadores. A técnica tem-se mostrado particularmente viável para arquiteturas com restrições de registradores e interconexões. No entanto, pode-se vislumbrar extensões para arquiteturas Very Long Instruction Word (VLIW), maquinas escalares e até mesmo processadores que exploram paralelismo em nível de instrução utilizando outros modelos de execução. Experimentos foram realizados visando a validação, caracterização do algoritmo e a comparação com outras técnicas existentes na infraestrutura de compilação LLVM. Os resultados mostram que o algoritmo proposto, apesar de necessitar melhorias quanto ao tempo de compilação, pode obter ganhos de desempenho no código final gerado. |
publishDate |
2013 |
dc.date.issued.fl_str_mv |
2013 |
dc.date.accessioned.fl_str_mv |
2015-04-23T18:20:56Z |
dc.date.available.fl_str_mv |
2021-09-30T19:57:06Z |
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.ufms.br/handle/123456789/2209 |
url |
https://repositorio.ufms.br/handle/123456789/2209 |
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.source.none.fl_str_mv |
reponame:Repositório Institucional da UFMS instname:Universidade Federal de Mato Grosso do Sul (UFMS) instacron:UFMS |
instname_str |
Universidade Federal de Mato Grosso do Sul (UFMS) |
instacron_str |
UFMS |
institution |
UFMS |
reponame_str |
Repositório Institucional da UFMS |
collection |
Repositório Institucional da UFMS |
bitstream.url.fl_str_mv |
https://repositorio.ufms.br/bitstream/123456789/2209/4/Lucas%20da%20Costa%20Silva.pdf.jpg https://repositorio.ufms.br/bitstream/123456789/2209/1/Lucas%20da%20Costa%20Silva.pdf https://repositorio.ufms.br/bitstream/123456789/2209/2/license.txt https://repositorio.ufms.br/bitstream/123456789/2209/3/Lucas%20da%20Costa%20Silva.pdf.txt |
bitstream.checksum.fl_str_mv |
66ea2ec92cadd03f54077ca20a655dfc bc7ce3bb47d34239d0ed8e01fe3a8403 8a4605be74aa9ea9d79846c1fba20a33 d41d8cd98f00b204e9800998ecf8427e |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFMS - Universidade Federal de Mato Grosso do Sul (UFMS) |
repository.mail.fl_str_mv |
ri.prograd@ufms.br |
_version_ |
1815448038813990912 |