SlideShare uma empresa Scribd logo
1 de 2
Baixar para ler offline
set-2011                                                                                                                                       1



                         Implementing Escape Analysis in the Jikes RVM

                                                   Stephen Magill                Daniel Spoonhower

                                                                      April 28, 2003

                                     Resumo realizado por Marcio Machado Pereira – RA 780681

                                                                                 estado da variável ou objeto representado pelo nó. Arestas
                                                                                 representam tanto as referências criadas por atribuições ou
                              I. INTRODUÇÃO                                      referências de um objeto para os seus campos. Nos nós de

N
                                                                                 intersecção do programa, simplesmente faz-se a união dos
      o artigo [1], os autores citam a contribuição de Choi et                   grafos a partir dos nós predecessores.
      al. que, num esforço em limitar o número de objetos
alocados dinamicamente e reduzir o overhead de                                   Escape analysis possibilita ao compilador realizar dois tipos
sincronização, introduziram um novo algorítimo para                              de otimização: ela indica ao compilador oportunidades para
determinar estaticamente se um dado objeto “escapa” seu                          alocação de memória mais restritiva e, portanto, de baixo
método ou linha de execução (thread) [2]. Em particular,                         custo, e oportunidades de remoção de operações de
Choi et al. introduziram uma nova representação estática do                      sincronização desnecessárias. Em Java, objetos e arrays são
estado do programa chamada de grafo de conexão                                   criados pelo operador new, alocados no heap e gerenciados
(connection graph) e uma análise de fluxo de dados (data                         por algum tipo de gerenciamento automático de memória ou
flow analysis – DFA) baseada neste estado. Enquanto Choi et                      coleta de lixo (garbage collection).
al. realizaram suas analises em um compilador estático, High
Performance Compiler for Java – HPCJ, os autores                                 Através da análise se há ou não referências a um objeto fora
implementaram suas analises como um passo de otimização                          do método que o alocou ou da sua thread de execução,
em tempo de execução (run-time optimization) no Jikes                            podemos colocar um limite superior conservador ligado à
Research Virtual Machine – Jikes RVM [3]. Os autores                             vida do objeto. Se o compilador puder determinar
perceberam no entanto que há um custo de performance                             estaticamente que um objeto não sobreviverá ao método que o
significativo neste tipo de análise quando aplicada em tempo                     alocou, o código pode ser transformado para usar uma das
de execução, porém os resultados indicaram que algumas                           técnicas descritas a seguir: o armazenamento do objeto pode
analises adicionais podem oferecer oportunidades para uma                        ser vinculado ao registro de ativação do método.
execução mais eficiente em programas de tempo de execução
longos.

Para endereçar estes problemas, os autores propuseram então                                III.SCALAR REPLACEMENT AND STACK ALLOCATION
modificações requeridas neste tipo de analise para serem
                                                                                 Os autores usaram esta forma de Scape Analysis para realizar
realizadas no contexto de um sistema de otimização em
                                                                                 uma otimização chamada de Scalar Replacement of
tempo de execução. Este resumo traz uma visão geral da
                                                                                 aggregates. Ao invés de alocar objetos e pequenos arrays no
analise usada pelos autores.                                                     heap, eles são definidos na pilha ou mesmo em registradores.
                                                                                 No Jikes RVM esta otimização é realizada sob a
                            II. ESCAPE ANALYSIS
                                                                                 representação intermediária HIR (High-level Intermediate
Park e Goldberg introduziram o termo Escape Analysis para                        Representation). Neste estágio de compilação, pilha e
descrever a analise que determina que partes de uma lista não                    registradores são referenciados uniformemente como
escapa de uma chamada de função. No contexto da linguagem                        registradores virtuais. Com isto, a otimização pode ser
de programação Java estamos interessados em determinar se                        realizada independente de máquina e tirar proveito do passo
um objeto ou vetor (array) não escapa o método que o                             de alocação de registradores. Em contrapartida, há uma série
invocou ou sua thread de execução. Para cada alocação ou                         de restrições sobre estes objetos e arrays considerados para
atribuição no programa, representa-se seu estado corrente                        replacement. O tamanho dos arrays, bem como todas as
como um grafo de conexão. Nós são adicionados para                               operações de indexação, precisam ser determinados
representar a alocação de objetos ou arrays, bem como as                         estaticamente. Além disso, objetos e arrays não podem ser
referências a estas alocações, seus campos e elementos.                          usados com certas operações que requerem uma referência
Atribui-se a cada nó os valores GLOBAL_ESCAPE,                                   para os mesmos (e.g., invoke).
THREAD_LOCAL ou METHOD_LOCAL para indicar o
                                                                                 Choi et al. descrevem uma forma de alocação similar, mas
   
    O trabalho em referência foi apresentado na conferência PACT'07 realizado
entre os dias 15 e 19 de setembro de 2007 na cidade de Brasov, Romenia. O
                                                                                 distinta, conhecida como Stack Allocation. Ao invés de
resumo é parte do trabalho de pesquisa de doutorado do Instituto de Computação   atribuir campos individuais ou elementos para registradores
da UNICAMP (IC-Unicamp) e foi elaborado por Pereira, M. M. (e-mail:              virtuais, aloca-se o objeto inteiro ou array na pilha, incluindo
mpereira@ic.unicamp.br ).                                                        qualquer informação de cabeçalho associada ao objeto ou
set-2011                                                                                                                                        2

array. Stack Allocation é, em muitos casos, menos restritivo     exemplo de quando a substituição não é válida é dada na
que Scalar Replacement, porém ela não é independente de          figura abaixo:
plataforma. Como o compilador trabalha neste caso com
endereços de memória ao invés de registradores virtuais que
pode ou não ser mapeado em memória, Stack Allocation
suporta, por exemplo, operações com indices de arrays não
constantes.

A fim de identificar corretamente as oportunidades para o uso
de Scalar Replacement, os autores tiveram que fazer várias
modificações no algoritmo dado em [2], que é orientado para
Stack Allocation:

Quando um objeto é alocado na pilha, tem-se ainda um
ponteiro para um bloco de memória contendo o objeto. Com
Scalar Replacement, nenhum pointeiro para o objeto está
disponível. O primeiro problema que isto causa é quando uma
variável de referência x aponta para objetos diferentes em
caminhos diferentes através do código. Se pelo menos um          A idéia deste Scalar Repacement é muito similar ao Copy
desses objetos “escapa”, devemos alocar todos os objetos         Propagation. De fato, ele é válido exatamente quando Copy
referenciados por x no heap, pois em algum ponto, x conterá      Propagation é permitido. A última alteração é a inclusão do
um endereço de um objeto real. A solução dada pelos autores      valor BOUNDED_BY_METHOD. Este nome reflete o fato de
para isso foi o de propagar estas informações para trás e para   que os argumentos passados para os procedimentos escapam
frente durante a fase de propagação do algoritmo. O estado       do escopo estático do chamador, mas eles podem ser alocados
escape de um nó de referência é definido como o encontro         na pilha uma vez que sua vida útil é limitada pelo tempo de
dos estados escape dos objetos que ele aponta (backward          vida do método chamado.
propagation). Esta informação é então propagada para frente
                                                                                                 IV. CONCLUSÃO
(forward propagation) para os objetos. Esta sequencia de
propagações backward/forward é repetida até que se convirga      No contexto estático, o custo de um passo de otimização é
para um ponto fixo. Isto é ilustrado na figura abaixo:           muito menos importante do que os resultados. Já em um
                                                                 sistema de otimização em tempo de execução, o custo de cada
                                                                 passo deve ser considerado em relação ao benefício de seu
                                                                 resultado, seja em termos de tempo de execução ou redução
                                                                 dos requisitos de memória. Tem-se afirmado frequentemente
                                                                 que a análise de fluxo de dados é muito cara para uso em
                                                                 tempo de execução. A experiência dos autores fundamenta
                                                                 essa afirmação. Mas, ao mesmo tempo, parece haver benefício
                                                                 significativo para otimizações como a alocação de pilha e
                                                                 eliminação de sincronização. Com base nos resultados
                                                                 obtidos, valeria a pena considerar análises mais rápidas e que
                                                                 permitam que estas otimizações sejam baseadas no formato
                                                                 SSA do programa.

                                                                                               V. REFERENCIAS
                                                                 [1] S. Magill, D. Spoonhower. Implementing Escape Analysis in the Jikes RVM.
                                                                 April 28, 2003.

                                                                 [2] Jong-Deok Choi, Manish Gupta, Mauricio J. Serrano, Vugranam C.
                                                                 Sreedhar, and Samuel P. Midkiff. Escape analysis for Java. In Proceedings of
                                                                 the Conference on Object-Oriented Programming Systems, Languages, and
                                                                 Applications (OOPSLA), pages 1-19, 1999.

                                                                 [3] B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P. Cheng, J.-D. Choi,
                                                                 A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov,
                                                                 M. F. Mergen, T. Ngo. J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S.
                                                                 E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeño virtual
O segundo problema ocorre com instruções do tipo a = b, que      machine. IBM Systems Journal, 39(1):2111-238, 2000.
corresponde a instruções ref_move no Jikes RVM. A única
chance razoável de lidar com isso é quando a e b são
marcados como método local. Pode-se ir em frente
substituindo todos os usos de a.x com o escalar
correspondente b.x no entanto, há que se analisar todos os
usos de a para garantir que esta substituição é válida. Um

Mais conteúdo relacionado

Destaque (14)

Festa da ..
Festa da ..Festa da ..
Festa da ..
 
Portuguese Beacon January 2012
Portuguese Beacon January 2012Portuguese Beacon January 2012
Portuguese Beacon January 2012
 
01 01-2012
01 01-201201 01-2012
01 01-2012
 
Obras de prata
Obras de prataObras de prata
Obras de prata
 
Commodity Research Report 12 September 2016 Ways2Capital
Commodity Research Report 12 September  2016 Ways2CapitalCommodity Research Report 12 September  2016 Ways2Capital
Commodity Research Report 12 September 2016 Ways2Capital
 
Colunista convidado (5)
Colunista convidado (5)Colunista convidado (5)
Colunista convidado (5)
 
8.a danca do_amor
8.a danca do_amor8.a danca do_amor
8.a danca do_amor
 
Escudo
EscudoEscudo
Escudo
 
Acompanhamento notas 3º bimestre eletrotécnica
Acompanhamento notas 3º bimestre eletrotécnicaAcompanhamento notas 3º bimestre eletrotécnica
Acompanhamento notas 3º bimestre eletrotécnica
 
Primera practica
Primera practicaPrimera practica
Primera practica
 
Resultado2011 09v2
Resultado2011 09v2Resultado2011 09v2
Resultado2011 09v2
 
University of phoennix mkt 571 assignments
University of phoennix mkt 571 assignmentsUniversity of phoennix mkt 571 assignments
University of phoennix mkt 571 assignments
 
Euro Trends Rh
Euro Trends RhEuro Trends Rh
Euro Trends Rh
 
Dok2.pdf
Dok2.pdfDok2.pdf
Dok2.pdf
 

Semelhante a [Magill 03] resume

Semelhante a [Magill 03] resume (20)

[Choi ooplsa99] resume
[Choi ooplsa99] resume[Choi ooplsa99] resume
[Choi ooplsa99] resume
 
[Ottoni micro05] resume
[Ottoni micro05] resume[Ottoni micro05] resume
[Ottoni micro05] resume
 
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
[Hind oopsla00] resumo do artigo "Adaptive Optimization in the Jikes RVM"
 
[Zhang pact07] resume
[Zhang pact07] resume[Zhang pact07] resume
[Zhang pact07] resume
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Resolvido Prova Tecnico da Marinha 2013
Resolvido Prova Tecnico da Marinha 2013 Resolvido Prova Tecnico da Marinha 2013
Resolvido Prova Tecnico da Marinha 2013
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
es6
es6es6
es6
 
Es6
Es6Es6
Es6
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Pro model
Pro modelPro model
Pro model
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Akka no Just Java 2012
Akka no Just Java 2012Akka no Just Java 2012
Akka no Just Java 2012
 
Aula-04-UML.pptx
Aula-04-UML.pptxAula-04-UML.pptx
Aula-04-UML.pptx
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Armazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de InformaçãoArmazenamento, Indexação e Recuperação de Informação
Armazenamento, Indexação e Recuperação de Informação
 
EXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEINEXTREME LDAP - GABRIEL STEIN
EXTREME LDAP - GABRIEL STEIN
 

Último

HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfPastor Robson Colaço
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 

Último (20)

HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
HORA DO CONTO3_BECRE D. CARLOS I_2023_2024
 
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdfO Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
O Universo Cuckold - Compartilhando a Esposas Com Amigo.pdf
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 

[Magill 03] resume

  • 1. set-2011 1 Implementing Escape Analysis in the Jikes RVM Stephen Magill Daniel Spoonhower April 28, 2003 Resumo realizado por Marcio Machado Pereira – RA 780681 estado da variável ou objeto representado pelo nó. Arestas representam tanto as referências criadas por atribuições ou I. INTRODUÇÃO referências de um objeto para os seus campos. Nos nós de N intersecção do programa, simplesmente faz-se a união dos o artigo [1], os autores citam a contribuição de Choi et grafos a partir dos nós predecessores. al. que, num esforço em limitar o número de objetos alocados dinamicamente e reduzir o overhead de Escape analysis possibilita ao compilador realizar dois tipos sincronização, introduziram um novo algorítimo para de otimização: ela indica ao compilador oportunidades para determinar estaticamente se um dado objeto “escapa” seu alocação de memória mais restritiva e, portanto, de baixo método ou linha de execução (thread) [2]. Em particular, custo, e oportunidades de remoção de operações de Choi et al. introduziram uma nova representação estática do sincronização desnecessárias. Em Java, objetos e arrays são estado do programa chamada de grafo de conexão criados pelo operador new, alocados no heap e gerenciados (connection graph) e uma análise de fluxo de dados (data por algum tipo de gerenciamento automático de memória ou flow analysis – DFA) baseada neste estado. Enquanto Choi et coleta de lixo (garbage collection). al. realizaram suas analises em um compilador estático, High Performance Compiler for Java – HPCJ, os autores Através da análise se há ou não referências a um objeto fora implementaram suas analises como um passo de otimização do método que o alocou ou da sua thread de execução, em tempo de execução (run-time optimization) no Jikes podemos colocar um limite superior conservador ligado à Research Virtual Machine – Jikes RVM [3]. Os autores vida do objeto. Se o compilador puder determinar perceberam no entanto que há um custo de performance estaticamente que um objeto não sobreviverá ao método que o significativo neste tipo de análise quando aplicada em tempo alocou, o código pode ser transformado para usar uma das de execução, porém os resultados indicaram que algumas técnicas descritas a seguir: o armazenamento do objeto pode analises adicionais podem oferecer oportunidades para uma ser vinculado ao registro de ativação do método. execução mais eficiente em programas de tempo de execução longos. Para endereçar estes problemas, os autores propuseram então III.SCALAR REPLACEMENT AND STACK ALLOCATION modificações requeridas neste tipo de analise para serem Os autores usaram esta forma de Scape Analysis para realizar realizadas no contexto de um sistema de otimização em uma otimização chamada de Scalar Replacement of tempo de execução. Este resumo traz uma visão geral da aggregates. Ao invés de alocar objetos e pequenos arrays no analise usada pelos autores. heap, eles são definidos na pilha ou mesmo em registradores. No Jikes RVM esta otimização é realizada sob a II. ESCAPE ANALYSIS representação intermediária HIR (High-level Intermediate Park e Goldberg introduziram o termo Escape Analysis para Representation). Neste estágio de compilação, pilha e descrever a analise que determina que partes de uma lista não registradores são referenciados uniformemente como escapa de uma chamada de função. No contexto da linguagem registradores virtuais. Com isto, a otimização pode ser de programação Java estamos interessados em determinar se realizada independente de máquina e tirar proveito do passo um objeto ou vetor (array) não escapa o método que o de alocação de registradores. Em contrapartida, há uma série invocou ou sua thread de execução. Para cada alocação ou de restrições sobre estes objetos e arrays considerados para atribuição no programa, representa-se seu estado corrente replacement. O tamanho dos arrays, bem como todas as como um grafo de conexão. Nós são adicionados para operações de indexação, precisam ser determinados representar a alocação de objetos ou arrays, bem como as estaticamente. Além disso, objetos e arrays não podem ser referências a estas alocações, seus campos e elementos. usados com certas operações que requerem uma referência Atribui-se a cada nó os valores GLOBAL_ESCAPE, para os mesmos (e.g., invoke). THREAD_LOCAL ou METHOD_LOCAL para indicar o Choi et al. descrevem uma forma de alocação similar, mas  O trabalho em referência foi apresentado na conferência PACT'07 realizado entre os dias 15 e 19 de setembro de 2007 na cidade de Brasov, Romenia. O distinta, conhecida como Stack Allocation. Ao invés de resumo é parte do trabalho de pesquisa de doutorado do Instituto de Computação atribuir campos individuais ou elementos para registradores da UNICAMP (IC-Unicamp) e foi elaborado por Pereira, M. M. (e-mail: virtuais, aloca-se o objeto inteiro ou array na pilha, incluindo mpereira@ic.unicamp.br ). qualquer informação de cabeçalho associada ao objeto ou
  • 2. set-2011 2 array. Stack Allocation é, em muitos casos, menos restritivo exemplo de quando a substituição não é válida é dada na que Scalar Replacement, porém ela não é independente de figura abaixo: plataforma. Como o compilador trabalha neste caso com endereços de memória ao invés de registradores virtuais que pode ou não ser mapeado em memória, Stack Allocation suporta, por exemplo, operações com indices de arrays não constantes. A fim de identificar corretamente as oportunidades para o uso de Scalar Replacement, os autores tiveram que fazer várias modificações no algoritmo dado em [2], que é orientado para Stack Allocation: Quando um objeto é alocado na pilha, tem-se ainda um ponteiro para um bloco de memória contendo o objeto. Com Scalar Replacement, nenhum pointeiro para o objeto está disponível. O primeiro problema que isto causa é quando uma variável de referência x aponta para objetos diferentes em caminhos diferentes através do código. Se pelo menos um A idéia deste Scalar Repacement é muito similar ao Copy desses objetos “escapa”, devemos alocar todos os objetos Propagation. De fato, ele é válido exatamente quando Copy referenciados por x no heap, pois em algum ponto, x conterá Propagation é permitido. A última alteração é a inclusão do um endereço de um objeto real. A solução dada pelos autores valor BOUNDED_BY_METHOD. Este nome reflete o fato de para isso foi o de propagar estas informações para trás e para que os argumentos passados para os procedimentos escapam frente durante a fase de propagação do algoritmo. O estado do escopo estático do chamador, mas eles podem ser alocados escape de um nó de referência é definido como o encontro na pilha uma vez que sua vida útil é limitada pelo tempo de dos estados escape dos objetos que ele aponta (backward vida do método chamado. propagation). Esta informação é então propagada para frente IV. CONCLUSÃO (forward propagation) para os objetos. Esta sequencia de propagações backward/forward é repetida até que se convirga No contexto estático, o custo de um passo de otimização é para um ponto fixo. Isto é ilustrado na figura abaixo: muito menos importante do que os resultados. Já em um sistema de otimização em tempo de execução, o custo de cada passo deve ser considerado em relação ao benefício de seu resultado, seja em termos de tempo de execução ou redução dos requisitos de memória. Tem-se afirmado frequentemente que a análise de fluxo de dados é muito cara para uso em tempo de execução. A experiência dos autores fundamenta essa afirmação. Mas, ao mesmo tempo, parece haver benefício significativo para otimizações como a alocação de pilha e eliminação de sincronização. Com base nos resultados obtidos, valeria a pena considerar análises mais rápidas e que permitam que estas otimizações sejam baseadas no formato SSA do programa. V. REFERENCIAS [1] S. Magill, D. Spoonhower. Implementing Escape Analysis in the Jikes RVM. April 28, 2003. [2] Jong-Deok Choi, Manish Gupta, Mauricio J. Serrano, Vugranam C. Sreedhar, and Samuel P. Midkiff. Escape analysis for Java. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), pages 1-19, 1999. [3] B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P. Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo. J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeño virtual O segundo problema ocorre com instruções do tipo a = b, que machine. IBM Systems Journal, 39(1):2111-238, 2000. corresponde a instruções ref_move no Jikes RVM. A única chance razoável de lidar com isso é quando a e b são marcados como método local. Pode-se ir em frente substituindo todos os usos de a.x com o escalar correspondente b.x no entanto, há que se analisar todos os usos de a para garantir que esta substituição é válida. Um