A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José.

Apresentações semelhantes


Apresentação em tema: "Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José."— Transcrição da apresentação:

1 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José Nelson Amaral University of Alberta Edmonton, AB, Canada http://www.cs.ualberta.ca/~amaral Parte III

2 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20012 Conteúdo zComentários Gerais zEstudo de Caso I: Integração de um novo algoritmo de reordenamento de instruções para minimizar uso de registradores [Govind,Yang,Amaral,Gao2000] zEstudo de Caso II: Projeto e avaliação de um algoritmo para prefetching de ponteiros indutivos [Stouchinin,Douillet,Amaral,Gao2000]

3 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20013 Adaptação do Pro64 para um Novo Processador zCrie uma nova targ_info zAjuste o arquivo de configuração para a Application Binary Interface (ABI) zCrie um novo WHIRL-to-CG-lower para seleção de instruções zAjuste funções de utilidade do CG (p.e., predicação, padrões EBO, custos de SWP, etc.) Advançado Para -O0

4 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20014 Caso I zIntrodução do problema MRIS problem e solução proposta yFormulação do problem yO algoritm proposto zExperiência com o Pro64 yOnde começar? yComo começar? yResultados zResumo

5 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20015 Pesquisadores zR. Govindarajan (Indian Inst. Of Science) zHongbo Yang (Univ. of Delaware) zChihong Zhang (Conexant) zJose Nelson Amaral (Univ. of Alberta) zGuang R. Gao (Univ. of Delaware)

6 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20016 Motivação zProcessadores com o estilo da IA-64 yRedução de spills na fase de alocação local de registradores yRedução de pedidos do Alocador Local de Registradores (LRA) yRedução da pressão por registradores em cada função zProcessadores com Execução fora de ordem yBuffer reordenador de instruções yRenaming de registradores

7 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20017 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

8 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20018 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

9 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20019 Bloco Básico: Exemplo (1) k := 10 (2) i := 1; (3) if i  k goto (13) (4) t1 := ld(x); (5) t2 := t1 + 4; (6) t3 := t1 * 8; (7) t4 := t1 - 4; (8) t5 := t1 / 2; (9) t6 := t2 * t3; (10) t7 := t4 - t5; (11) t8 := t6 * t7; (12) st(y,t8); (13) i := i + 1; (12) if i  20 goto (3) Código de Tres Endereços begin k := 10; i := 1; do begin if(i=k) y = (x+4)*(x*8)*((x-4)-x/2) i = i +1 end while i <= 20 end … Código Fonte

10 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200110 Bloco Básico: Exemplo begin k := 10; i := 1; do begin if(i=k) y = (x+4)*(x*8)*((x-4)-x/2) i = i +1 end while i <= 20 end … (4) t1 := ld(x); (5) t2 := t1 + 4; (6) t3 := t1 * 8; (7) t4 := t1 - 4; (8) t5 := t1 / 2; (9) t6 := t2 * t3; (10) t7 := t4 - t5; (11) t8 := t6 * t7; (12) st(y,t8); Código Fonte (1) k := 10 (2) i := 1; (3) if i  k goto (13) (13) i := i + 1; (14) if i  20 goto (3) (15)... B1 B2 B3 B4 B5 Grafo de Fluxo de Controle

11 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200111 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

12 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200112 Grafo de Dependência de Dados (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8); B3 a

13 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200113 Grafo de Dependência de Dados (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8); B3 a bcde

14 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200114 Grafo de Dependência de Dados B3 a bcde f (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8);

15 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200115 Grafo de Dependência de Dados B3 a bcdefg (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8);

16 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200116 Grafo de Dependência de Dados B3 a bcdefg h (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8);

17 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200117 Grafo de Dependência de Dados B3 a bcdefg h i (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8);

18 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200118 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

19 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200119 Seqüência de Instruções a bcdefg h i (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8); B3 (a) t1 := ld(x); (d) t4 := t1 - 4; (e) t5 := t1 / 2; (g) t7 := t4 - t5; (b) t2 := t1 + 4; (c) t3 := t1 * 8; (f) t6 := t2 * t3; (h) t8 := t6 * t7; (i) st(y,t8); B3’ (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (f) t6 := t2 * t3; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8); B3’’ Seqüência 1 Seqüência 2 Seqüência 3

20 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200120 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

21 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200121 (a) t1 := ld(x); (d) t4 := t1 - 4; (e) t5 := t1 / 2; (g) t7 := t4 - t5; (c) t3 := t1 * 8; (b) t2 := t1 + 4; (f) t6 := t2 * t3; (h) t8 := t6 * t7; (i) st(y,t8); Seqüência 2 Uso de Registradores (a) t1 := ld(x); (b) t2 := t1 + 4; (c) t3 := t1 * 8; (d) t4 := t1 - 4; (e) t5 := t1 / 2; (f) t6 := t2 * t3; (g) t7 := t4 - t5; (h) t8 := t6 * t7; (i) st(y,t8); t1 Seqüência 1 t2 t3 t4 t5 t6 t7 t8 t1 t4 t5 t7 t3 t2 t6 t8 Uso de Registradores = 4Uso de Registradores = 3

22 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200122 Problema de Sequenciamento de Instruções para Minimizar Uso de Registradores (MRIS) Dado um Grafo de Dependência de Dados G para um bloco básico, encontre uma seqüência de instruções S para G que é ótima no sentido de que o uso de registradores seja mínimo.

23 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200123 Intuição para Nossa Solução a bcdefg h i Quais instruções podem/não podem compartilhar registradores neste grafo? Podemos usar o mesmo registrador para os valores produzidos por b e f? Sim, em qualquer seqüência, b e f podem compartilhar o mesmo registrador porque f é o único uso do valor produzido por b. e e g podem compartilhar registradores? Grafo de Dependência de Dados

24 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200124 Intuição para Nossa Solução a bcdefg h i E as instruções f e g? f e g podem compartilhar o mesmo registrador? Não, não existe seqüência legal em que f e g possam compartilhar o mesmo registrador porque h usa os valores de f e g ao mesmo tempo. Grafo de Dependência de Dados

25 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200125 Intuição para Nossa Solução a bcdefg h i E as instruções c e d podem compartilhar o mesmo registrador? Depende da seqüência, para que c e d possam compatilhar o mesmo registrador, nós temos que ou escalar f antes de d, ou g antes de c. Grafo de Dependência de Dados

26 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200126 Intuição para Nossa Solução a bcdefg h i Nossa intuição é encontrar subconjuntos de instruções que podem definitivamente compartilhar um registrador. Esta informação é então usada para guiar o algoritmo de geração de seqüências. Grafo de Dependência de Dados

27 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200127 Intuição para Nossa Solução a bc de fg h i Uma lineagem de instruções é uma seqüência de instruções em que um único registrador é passado de uma instrução a outra (exceto a última instrução da lineage). Como podemos assegurar que as instruções a, b, f, e h poderão compartilhar o mesmo registrador? L1 = [a, b, f, h, i) a b f h Grafo de Dependência de Dados

28 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200128 Arcos de Seqüenciamento a bcde fg h i A formação de lineagens impõe uma restrição no escalonamento do DDG: o herdeiro escolhido de uma instrução tem que ser a última instrução listada entre sues irmãos. L1 = [a, b, f, h, i) Portanto, a formação de lineagens insere arcos de seqüenciamento no DDG. Grafo de Dependência de Dados Aumentado

29 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200129 Altura de uma Instrução a bcde fg h i L1 = [a, b, f, h, i) Se um arco de seqüenciamento produzisse um ciclo no DDG, seria impossível encontrar uma seqüência legal de instruções. Portanto nós usamos a altura da instrução, recomputada após cada formação de lineagem, para selecionar o herdeiro. Desempates são arbitrários. Grafo de Dependência de Dados Aumentado

30 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200130 Formação de Lineagens a bcde fg h i L1 = [a, b, f, h, i) Para a próxima lineagem, as instruções mais altas que ainda não estão em lineagem são: c, d, e, todas com uma altura de 5. L2 = [c, f) c L3 = [e, g, h) e g L4 = [d, g) d Grafo de Dependência de Dados Aumentado

31 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200131 Interferência Entre Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) Duas lineagens Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v m ) definitivamente interferem se: (i) u 1 alcança v n, e (ii) v 1 alcança u m. a bcde fg h i Grafo de Dependência de Dados Aumentado

32 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200132 Grafo de Interferência de Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Quais lineagens definitivamente interferem entre si? Grafo de Dependência de Dados Aumentado

33 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200133 Grafo de Interferência de Lineagens L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Grafo de Interferência de Lineagens Quais lineagens definitivamente interferem entre si? Grafo de Dependência de Dados Aumentado

34 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200134 L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Lineagens Com as restrições de escalonamento impostas pela formação de lineagens, todas as instruções de uma linagem podem compartilhar o mesmo registrador. Seria possível que múltiplas lineagens compartilhassem of mesmo registrador? Como podemos encontrar o número mínimo de registradores se nós considerarmos todas as seqüências legais para o DDG aumentado? Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Grafo de Interferência de Lineagens

35 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200135 L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Lineagens Nós podemos colorir of grafo de interferência de lineagens para encontrar um Limite Heurístico de Registradores (HRB) para o DDG. Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Grafo de Interferência de Lineagens

36 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200136 a bcde fg h i L1 L3L2 L4 Lineagens Nós conseguimos colorir o grafo com três cores, portanto devemos encontrar uma seqüência de instruções que usa três registradores. L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) Grafo de Dependência de Dados Aumentado Colorindo o Grafo de Interferência de Lineagens Grafo de Interferência de Lineagens Nós podemos colorir of grafo de interferência de lineagens para encontrar um Limite Heurístico de Registradores (HRB) para o DDG.

37 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200137 Condição para Fusão de Lineagens a bcde fg h i Grafo de Interferência de Lineagens L1 L3L2 L4 Duas lineagens Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v n ) podem ser fundidas em uma única lineagem se: (i) u 1 alcança v n, e (ii) v 1 não alcança u m. L1 = [a, b, f, h, i) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) Lineagens Grafo de Dependência de Dados Aumentado

38 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200138 L1 = [a, b, f, h, I) L2 = [c, f) L3 = [e, g, h) L4 = [d, g) a bcde fg h i L1 L3L2 L4 Lineagens No exemplo, quais lineagens podem ser fundidas? d alcança f, e c não alcança g Portanto L4 pode ser fundida com L2 para formar L5 = [d, g)  [c, f) Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Condição para Fusão de Lineagens

39 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200139 Fusão de Lineagens L1 = {a, b, f, h, i} L2 = {c, f} L3 = {e, g, h} L4 = {d, g} a bcde fg h i L1 L3L2 L4 Lineagens Quando Lu = [u 1, u 2, …, u m ) e Lv = [v 1, v 2, …, v n ) são fundidas: (1) um arco de seqüenciamento de u m a v 1 é introduzido no DDG aumentado (2) Lu e Lv são removidos do LIG (3) uma nova lineagem Lw = Lu  Lv é inserida no LIG Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens

40 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200140 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) a bcde fg h i L1 L3L5 Lineagens Quantas cores nós precisamos para colorir o LIG? Portanto a fusão de L4 com L2 resulta em L5 = [d, g)  [c, f) Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Fusão de Lineagens

41 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200141 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) a bcde fg h i L1 L3L5 Lineagens Nós ainda precisamos de três cores. Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Fusão de Lineagens

42 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200142 Sequenciamento Usando Escalonamento de Lista RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência

43 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200143 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i a Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

44 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200144 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i ad Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

45 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200145 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i ade Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

46 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200146 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adeg Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

47 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200147 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adegc Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

48 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200148 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adegcb Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

49 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200149 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adegcbf Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

50 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200150 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adegcbfh Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

51 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200151 RA RB RC L1 L3L5 L1 = [a, b, f, h, I) L3 = [e, g, h) L5 = [d, g)  [c, f) Lineagens a bcde fg h i adegcbfhi Grafo de Dependência de Dados Aumentado Grafo de Interferência de Lineagens Registradores Seqüência Sequenciamento Usando Escalonamento de Lista

52 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200152 Sumário do Método de Lineagens zUm “bom” algoritmo para construir o LIG zUm método heurístico efetivo para calcular o HRB zUm método efetivo para escalonamento (sem retentativas) Grafo de Interfer. de Lineagens (LIG) Derive HRB Escalonamento por lista estendido guiado por HRB DDG Uma boa seqüência de instruções

53 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200153 Experiência Implementando no Pro64 zProjeto e Plano de Execução zImplementação zDepuração e validação zAvaliação

54 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200154 Implementation zConstrução do Grafo de Dependências zFormação de Lineagens zConstrução e coloração do LIG zImplementando o algoritmo de reordenação

55 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200155 Porting Plan and Design zEntendendo a infra-estrutura do compilador zEntendendo o modelo de registradores (descrito nos arquivos targ_info) p.e.: yclasses de registradores: (int, float, predicate, app, control) yconvenções para salvar/restaurar registradores: caller/callee save, valor de retorno, passagem de argumentos, ponteiro de pilha, etc. yetc.

56 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200156 Register Allocation GRA Assign_Registers Fix_LRA_Blues Falha? Re-escalona movimento local de código spill registradores globais spill registradores locais Sucesso? LRA: Nível de bloco

57 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200157 Implementação yConstrução do DDG: usa rotinas de serviço nativas: e.g. CG_DEP_Compute_Graph yColorindo o LIG: usa um pacote nativo para manipulação de conjuntos (e.g. bitset.c) yImplementação de Escalonamento: usa suporte nativo para manipulação de vetores (e.g. cg_vector.cxx) yAcesso aod grafo de dependências usa funções nativas: ARC_succs, ARC_preds, ARC_kind

58 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200158 Depuração e Validação zTrace file ytt54:0x1. General trace of LRA ytt45: 0x4. Dependence graph building ytr53. TOP before LRA ytr54. TOP after LRA

59 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200159 Avaliação zMedidas Estáticas: yFat point -tt54: 0x40 zMedidas Dinâmicas yHardware counter in R10k perfex

60 Performance: Static Measurements 14 integer registers and 8 FP registers

61 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200161 Performance: Static Measurements 14 integer registers and 8 FP registers

62 Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 200162 Performance: Dynamic Measurements 14 integer registers and 8 FP registers


Carregar ppt "Workshop em Sistemas Computacionais de Alto Desempenho, Setembro 20011 Usando o Pro64 para Pesquisa e Desenvolvimento em Compiladores Estudos de Caso José."

Apresentações semelhantes


Anúncios Google