Publicado no Encontro de Saberes 2015
Evento: XXIII Seminário de Iniciação Científica
Área: ENGENHARIAS
Subárea: Engenharia de Computação
Título |
Análise da eficiência dos compiladores para diferentes arquiteturas. |
Autores |
RAFAEL DE CASTRO SOARES FONSECA (Autor) Aline da Silva Galantine (Autor) Marco Brando Alves Costa (Autor) Roger Santos Teixeira (Autor) Luiz Guilherme Hilel Drumond Silveira (Orientador) |
Resumo |
Para o desenvolvimento das ferramentas computacionais, têm-se vários estágios, desde a tradução do código de alto para baixo nível, até a execução desses códigos na arquitetura desejada. Em outras palavras, o compilador converte o código que foi executado em alto nível, para uma linguagem de montagem denominada Assembly. Com isso, surge a necessidade de analisar a eficiência destes estágios. Objetiva-se verificar e comparar a eficiência de um código gerado por compilador para uma arquitetura X86 com outro escrito manualmente para mesma arquitetura. Em seguida, desenvolver o mesmo para o MIPS, cuja arquitetura é RISC, a qual possui conjunto reduzido de instruções em relação à CISC. Para realizar a análise desenvolveu-se um pequeno código em C, o qual realiza uma análise combinatória e que foi traduzido manualmente para as linguagens de montagem das arquiteturas MIPS e x86. Esse mesmo código em C foi compilado em um computador de arquitetura x86 e teve seu assembly gerado a partir do compilador GCC. A métrica utilizada na análise de desempenho foi a quantidade de instruções. Os resultados apresentaram que o código MIPS gerou 31 instruções aritméticas, 11 de desvio e 3 de comparação. O X86 gerou 9 aritméticas, 6 de desvio, 1 de comparação e 19 de transferência. O código gerado pelo compilador, na arquitetura X86, gerou 12 instruções aritméticas, 16 de desvio, 2 de comparação, 45 de transferência, 7 de memória e 16 comandos de cabeçalho, sendo o sistema operacional e interoperabilidade do código responsável por esse tipo de instrução, não necessárias para pequenos códigos. Verificou-se que o código escrito manualmente para X86 e até mesmo para a arquitetura RISC gerou menos instruções que o compilador na arquitetura X86. Com base no estudo realizado, conclui-se que os compiladores são menos eficazes quando comparados a pequenos códigos desenvolvidos manualmente. Como trabalhos futuros, projeta-se realizar a análise com códigos mais complexos. |