Você está na página 1de 7

PIBIC CNPq/UFMS/Voluntrio

RELATRIO PARCIAL
MODALIDADE: BOLSA CNPq

BOLSA UFMS

VOLUNTRIO

_____________________________________________________________________________ _ INCIO: AGOSTO DE 2012 TRMINO: JULHO DE 2013

01- IDENTIFICAO DO ORIENTADOR (A):


NOME: Ricardo Ribeiro dos Santos CENTRO/CMPUS/FACULDADE: FACOM

02- IDENTIFICAO DO (A) ACADMICO (A)


NOME: Ricardo Espindola de Aguiar TTULO DO PLANO DE TRABALHO: Gerao de Back-end LLVM e Experimentos com Gerao de Cdigo para o Processador -vex

03- HOUVE ALTERAES NO SEU PLANO DE TRABALHO? QUAIS? (Justifique)


Sim. Devido s limitaes encontradas na ferramenta de compilao utilizada (LLVM) e em comum acordo e cincia do orientador, as anlises de gerao de cdigo que, pelo plano de trabalho, seriam executadas sobre o processador r-vex passaram a ser executadas sobre o processador MIPS.

04- ATIVIDADES DESENVOLVIDAS:


As atividades desenvolvidas no perodo de Agosto/2012 a Fevereiro/2013 focaram no estudo da plataforma de compilao LLVM, do algoritmo de escalonamento de instrues e alocao de registradores baseado no isomorfismo de subgrafos, alm do acompanhamento de todo o desenvolvimento da implementao do algoritmo e realizao de experimentos com o cdigo gerado para o processador MIPS. Essas atividades correspondem s etapas 1, 2, 3 (parcialmente) e 4 (parcialmente), descritas na metodologia do plano de trabalho.

A seguir descreve-se a plataforma de compilao LLVM, o problema do escalonamento de instrues e alocao de registradores e o algoritmo de escalonamento de instrues e alocao de registradores baseado no isomorfismo de subgrafos. 4.1) Infraestrutura de compilao LLVM No comeo dos anos 2000, a maioria dos compiladores eram modelados de forma que seu uso era muito especfico, ou seja, compilava determinada linguagem para determinada arquitetura. Alm disso, o reso de ferramentas de um compilador esttico para um compilador no-esttico era difcil. Os poucos compiladores que fugiam essa regra tinham o cdigo pouco compartilhado. Diante disso nasceu o LLVM (Low Level Virtual Machine) [1, 2], uma plataforma de compilao de cdigo aberto com o propsito de ser um compilador multi-uso, com diversas ferramentas reutilizveis. O que permite o reso de cdigo no LLVM a utilizao de uma linguagem intermediria (LLVM IR) na fase do otimizador, entre as fases do frontend e backend do compilador. Assim, para gerar cdigo a partir de uma linguagem especfica necessrio implementar apenas o frontend, e analogamente, para se gerar cdigo para uma arquitetura especfica implementa-se apenas o backend, ao invs do compilador inteiro. A Figura 1 apresenta de maneira simples a organizao funcional do compilador LLVM:

Figura 1: Organizao do compilador LLVM [1]

Com essa estrutura possvel atender a uma grande quantidade de programadores, que podem contribuir para a melhoria do compilador. 4.2) Escalonamento de instrues e alocao de registradores Para melhorar o desempenho computacional essencial a gerao de cdigo eficiente. O escalonamento de instrues e a alocao de registradores [2] so etapas importantes nesse

processo. O escalonamento de instrues tem por objetivo atribuir operaes do programa aos recursos fsicos do processador, de tal forma que este execute-os em uma determinada ordem. A alocao de registradores consiste em mapear os registradores virtuais nos registradores fsicos da arquitetura alvo. Quando no h registradores disponveis, deve-se carregar o contedo de um registrador na memria (load), e depois de us-lo recuperar seu contedo (store). Esse processo chamado de spill e o que se busca com um bom alocador de registradores diminuir o spill, pois assim diminui o nmero de instrues e acessos memria. 4.3) Algoritmo de Escalonamento de Instrues e Alocao de Registradores baseado no Isomorfismo de Subgrafos No problema de isomorfismo de grafos, dois grafos G= (V, E) e G= (V, E) so ditos isomorfos, denotado por G G, se existe uma bijeo : V V tal que, para todo par de vrtices vi, vj V vale que (vi, vj) E se e somente se ((vi), (vj)) E. No problema de isomorfismo de subgrafos, o grafo G = (V, E) isomorfo ao grafo G = (V, E) se existe um subgrafo de G, por exemplo G', tal que GG'. No contexto deste relatrio, denomina-se G de grafo de entrada e G de grafo base. [3]

(a) Grafo G

(b) Grafo G Figura 2: Exemplo de isomorfismo de subgrafos [3]

(c) Grafo G'

O grafo base um grafo que representa a arquitetura alvo. A figura 3 mostra o grafo base referente a arquitetura MIPS. Para simplificar, foram representados apenas quatro registradores e as duas unidades funcionais. O grafo base redimensionado quando um subgrafo isomorfo ao grafo de entrada no encontrado, de modo a aumentar as chances de se obter o isomorfismo.

Figura 3: Grafo base do MIPS representado com quatro registradores [4]

A figura 4 mostra o isomorfismo entre o DAG do trecho de cdigo abaixo e um subgrafo do grafo base. DAGs (Directed Acyclic Graph) so grafos dirigidos que no possuem ciclos. Utilizando a ordenao topolgica no DAG, tem-se que suas arestas apontam sempre para frente. Cdigo: addu and $2, $3, $4 $6, $2, $5

(a) Grafo de entrada

(b) Grafo base do MIPS

(c) Grafo resultante

Figura 4: Exemplo de isomorfismo de subgrafos no grafo base do MIPS

Os vrtices quadrados do DAG de entrada representam as instrues e os vrtices circulares representam os registradores que so dados como fonte e destino das instrues. Observe que o grafo base da arquitetura teve de ser redimensionado de forma que pudesse haver um subgrafo isomorfo ao DAG de entrada. [4]

05- RESULTADOS

Foram realizados alguns experimentos com os cdigos gerados para o processador MIPS com o uso do algoritmo de escalonamento de instrues e alocao de registradores baseado no isomorfismo de subgrafos. Os experimentos foram feitos com dois simuladores, ArchC e EDUMIPS. 5.1) Experimentos com ArchC Os experimentos foram realizados com um simulador que o ArchC gerou a partir da descrio da arquitetura. A arquitetura em questo o MIPS I. A Tabela 1 mostra as estatsticas obtidas da simulao com o algoritmo baseado em isomorfismo de subgrafos (isomorphism), e a Tabela 2 com o algoritmo greedy, alocador presente no compilador LLVM: Tabela 1: Resultados dos experimentos com ArchC com o Isomorphism Programas Dag Double_linked_list Eight Fib(25000000) Hello Ifthen Local_var_test Nestedloop Isomorphism Instrues Executadas Loads 8204 0 424 18 11095 0 3991 514 1184 182 270028 0 3473 442 842161063 219 Stores 0 83 0 410 167 0 375 213

Tabela 2: Resultados dos experimentos com ArchC com o Greedy Programas Dag Double_linked_list Eight Fib(25000000) Hello Ifthen Local_var_test Nestedloop Greedy Instrues Executadas Loads 8458 0 392 2 11095 0 4240 523 1184 182 270028 0 3675 455 842162640 347 5.2) Experimentos com EDUMIPS O simulador EDUMIPS simula cdigo para processadores MIPS de 64 bits. A Tabela 3 mostra as estatsticas obtidas com o algoritmo baseado em isomorfismo de subgrafos (isomorphism), e a Tabela 4 com o algoritmo greedy, alocador presente no compilador LLVM: Stores 0 67 0 412 167 0 388 326

Tabela 3: Resultados dos experimentos do EDUMIPS com o Isomorphism Programas Dag Double_linked_list Eight Hyper ifthen Ciclos 12550 692 21149 9941 410037 Isomorphism Instrues CPI (Ciclos por 6788 410 9723 4410 230018 instruo) 1,848 1,687 2,175 2,254 1,782 RAW Stalls 4352 241 10059 5286 140014 Tamnho do cdigo (bytes) 196 348 180 140 156

Tabela 4: Resultados dos experimentos do EDUMIPS com o Greedy Programas Dag Double_linked_list Eight Hyper ifthen Ciclos 13318 628 22000 9741 400037 Instrues 7043 378 9723 4410 230018 Greedy CPI (Ciclos por instruo) 1,89 1,661 2,262 2,208 1,739 RAW Stalls 4865 209 10910 5086 130014 Tamnho do cdigo (bytes) 200 340 180 140 156

Referncias Bibliogrficas [1] Lattner C., et al. The Architecture of Open Source Applications. [2] L. Santos Silva. Algoritmos para escalonamento de instrues e alocao de registradores na infraestrutura LLVM. Qualificao de Mestrado, Faculdade de Computao Universidade Federal de Mato Grosso do Sul. [3] R. Santos, R. Azevedo, e G. Araujo. Instruction Scheduling Based on Subgraph Isomorphism for a High Performance Computer Processor. Journal of Universal Computer Science, 14(21):3465-3480, 2008. [4] Silva, Lucas; Silva, Richard; Santos, Ricardo. An Integrated Technique for Instruction Scheduling and Register Allocation Based on Subgraph Isomorphism. In: Proc. of the 16th Brazilian Symposium on Programming Languages, 2012, Natal, Brazil.

05- DIFICULDADES ENCONTRADAS

Foram encontradas dificuldades em relao aos experimentos com o cdigo gerado com o algoritmo. A maioria das ferramentas de simulao so limitadas, o que dificulta a simulao de um cdigo real.

LOCAL/DATA:

----------------------------------------(ASSINATURA DO ORIENTADOR)

-----------------------------------------------(ASSINATURA DO ACADMICO)