42
Uma arquitetura Uma arquitetura objeto-ciente da objeto-ciente da memória memória

Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Embed Size (px)

Citation preview

Page 1: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Uma arquitetura objeto-ciente Uma arquitetura objeto-ciente da memóriada memória

Page 2: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade da arquitetura. Nós Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade da arquitetura. Nós propomos uma arquitetura da memória da novel que suporte objetos e coleção do lixo (GC). Nossa arquitetura co-é propomos uma arquitetura da memória da novel que suporte objetos e coleção do lixo (GC). Nossa arquitetura co-é projetada com um JavaTM Máquina virtual (JVMTM) 1 para melhorar a funcionalidade e a eficiência da gerência da projetada com um JavaTM Máquina virtual (JVMTM) 1 para melhorar a funcionalidade e a eficiência da gerência da memória do heap. A arquitetura é baseada em um espaço de endereço para objetos alcançou usando o objeto IDs traçado memória do heap. A arquitetura é baseada em um espaço de endereço para objetos alcançou usando o objeto IDs traçado por um tradutor aos endereços físicos. Para suportar isto, o sistema inclui caches objeto-dirigidos, uma barreira do GC da por um tradutor aos endereços físicos. Para suportar isto, o sistema inclui caches objeto-dirigidos, uma barreira do GC da ferragem para permitir o GC do em-cache dos objetos, e uma estrutura exposta do cache controlada cooperativa pelo JVM. ferragem para permitir o GC do em-cache dos objetos, e uma estrutura exposta do cache controlada cooperativa pelo JVM. Estes estendem uma arquitetura convencional, sem compatibilidade ou desempenho comprometendo para binaries do Estes estendem uma arquitetura convencional, sem compatibilidade ou desempenho comprometendo para binaries do legacy. Nossas inovações permitem várias melhorias como: uma técnica da novela para a coleção paralela e simultânea do legacy. Nossas inovações permitem várias melhorias como: uma técnica da novela para a coleção paralela e simultânea do lixo, sem reque alguma sincronização global; um coletor do lixo do em-cache, que nunca alcance a memória principal; lixo, sem reque alguma sincronização global; um coletor do lixo do em-cache, que nunca alcance a memória principal; compactação simultâneo dos objetos; e eliminação de a maioria de overheads da barreira da loja do GC. Nós compactação simultâneo dos objetos; e eliminação de a maioria de overheads da barreira da loja do GC. Nós comparamos o comportamento de nosso sistema de encontro àquele de um coletor gerenciador convencional do lixo, com comparamos o comportamento de nosso sistema de encontro àquele de um coletor gerenciador convencional do lixo, com e sem uma operação explícita do aloc-em-cache que elimine muitos escrevem a falta. Nosso esquema negocia e sem uma operação explícita do aloc-em-cache que elimine muitos escrevem a falta. Nosso esquema negocia adicionalmente a falta L2 para operações do em-cache, e fornece a ação indireta traçando requerida para a compactação adicionalmente a falta L2 para operações do em-cache, e fornece a ação indireta traçando requerida para a compactação simultânea. c Sun Microsystems Inc. 2006 publicou por Elsevier B.V. Todos os direitos reservados. palavra-chave: Coleção simultânea. c Sun Microsystems Inc. 2006 publicou por Elsevier B.V. Todos os direitos reservados. palavra-chave: Coleção do lixo; Máquinas virtuais; Memória do objeto do lixo; Máquinas virtuais; Memória do objeto

1. Introdução e motivação 1. Introdução e motivação A programação orientada a objeto é o paradigma dominante do desenvolvimento do software, e realizou-se assim para a A programação orientada a objeto é o paradigma dominante do desenvolvimento do software, e realizou-se assim para a última década. As línguas de programação orientada a objeto, tais como JavaTM e C#, convergiram em um modelo comum última década. As línguas de programação orientada a objeto, tais como JavaTM e C#, convergiram em um modelo comum do objeto cujas raízes podem ser encontradas no Smalltalk [1]. Para nossas finalidades nós podemos sumariar o modelo do objeto cujas raízes podem ser encontradas no Smalltalk [1]. Para nossas finalidades nós podemos sumariar o modelo com três propriedades. Em primeiro lugar, os objetos são pequenos, barato e abundante. Em segundo lugar, o com três propriedades. Em primeiro lugar, os objetos são pequenos, barato e abundante. Em segundo lugar, o armazenamento do objeto é recuperado automaticamente através da coleção do lixo (GC). em terceiro lugar, embora a armazenamento do objeto é recuperado automaticamente através da coleção do lixo (GC). em terceiro lugar, embora a referência do objeto seja imprescindível, todas as permissões são controladas através das verificações feitas em referência do objeto seja imprescindível, todas as permissões são controladas através das verificações feitas em classloading ou compilar o tempo (a língua de Java combina o tipo de estática segurança com os controles de acesso classloading ou compilar o tempo (a língua de Java combina o tipo de estática segurança com os controles de acesso pacotes-baseados). Embora nosso trabalho focaliza em Java que é igualmente aplicável a outras línguas com um modelo pacotes-baseados). Embora nosso trabalho focaliza em Java que é igualmente aplicável a outras línguas com um modelo similar; nós anotamos que não pode similar; nós anotamos que não pode Autor correspondente. Telefone.: +1 650 786 6568. Endereços do E-mail: Autor correspondente. Telefone.: +1 650 786 6568. Endereços do E-mail: [email protected]@Sun.com (G. Wright), (G. Wright), [email protected]@Sun.com (M.L. Seidl), (M.L. Seidl), [email protected]@Sun.com (M. Wolczko). 1 Java e todas as marcas Java-baseadas (M. Wolczko). 1 Java e todas as marcas Java-baseadas são as marcas registradas ou as marcas registradas de Sun Microsystems, Inc., nos Estados Unidos e em outros países. são as marcas registradas ou as marcas registradas de Sun Microsystems, Inc., nos Estados Unidos e em outros países. 0167-6423/$ - ver o exame preliminar c Sun Microsystems Inc. 2006 publicou por Elsevier B.V. Todos os direitos 0167-6423/$ - ver o exame preliminar c Sun Microsystems Inc. 2006 publicou por Elsevier B.V. Todos os direitos reservados. reservados. /Ciência do computador que programa 62 (2006) 145-163 fornecer todos os benefícios para alguns outros modelos da /Ciência do computador que programa 62 (2006) 145-163 fornecer todos os benefícios para alguns outros modelos da língua (o mais notavelmente C++ e o subconjunto inseguro de C#, que permitem a aritmética arbitrária do ponteiro).língua (o mais notavelmente C++ e o subconjunto inseguro de C#, que permitem a aritmética arbitrária do ponteiro).

Page 3: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

A arquitetura de computador ignorou na maior parte este modelo do objeto. No detalhe as exigências, e A arquitetura de computador ignorou na maior parte este modelo do objeto. No detalhe as exigências, e nos confinamentos de sobre, o sistema da memória são completamente diferentes daquelas de um nos confinamentos de sobre, o sistema da memória são completamente diferentes daquelas de um plano, memória virtual paginada - por exemplo, os objetos pequenos reduzem a eficácia das linhas plano, memória virtual paginada - por exemplo, os objetos pequenos reduzem a eficácia das linhas longas do cache e do TLBs [2] porque a localidade do interobjeto não é assegurada. O desempenho do longas do cache e do TLBs [2] porque a localidade do interobjeto não é assegurada. O desempenho do sistema da memória é importante no mercado comercial do usuário, onde as aplicações de Java podem sistema da memória é importante no mercado comercial do usuário, onde as aplicações de Java podem requeri muitos gigabytes do espaço do heap. A relação arquitetural preliminar às aplicações de Java está requeri muitos gigabytes do espaço do heap. A relação arquitetural preliminar às aplicações de Java está no nível virtual da máquina (JVM), e esta dá a liberdade considerável para inovasse através do limite da no nível virtual da máquina (JVM), e esta dá a liberdade considerável para inovasse através do limite da ferragem/software. Nós estamos investigando como sustentação da ferragem para objetos, co-projetada ferragem/software. Nós estamos investigando como sustentação da ferragem para objetos, co-projetada com a máquina virtual, podemos conduzir para melhorar o desempenho do sistema da memória e com a máquina virtual, podemos conduzir para melhorar o desempenho do sistema da memória e também permitir os algoritmos novos da gerência da memória que não podem atualmente ser executado também permitir os algoritmos novos da gerência da memória que não podem atualmente ser executado eficientemente no software. Nós supomos que as mudanças podem ser feitas à máquina virtual, ao eficientemente no software. Nós supomos que as mudanças podem ser feitas à máquina virtual, ao sistema se operando e à ferragem, mas nós não consideramos completamente um ‘projeto da folha sistema se operando e à ferragem, mas nós não consideramos completamente um ‘projeto da folha limpa’: as aplicações do legacy devem funcionar imutável no mesmo sistema. Nós estendemos limpa’: as aplicações do legacy devem funcionar imutável no mesmo sistema. Nós estendemos conseqüentemente uma arquitetura convencional do jogo de instrução onde apropriado, retendo para conseqüentemente uma arquitetura convencional do jogo de instrução onde apropriado, retendo para trás a compatibilidade. As modificações arquiteturais são somente sustentação para os algoritmos do trás a compatibilidade. As modificações arquiteturais são somente sustentação para os algoritmos do software; nós propomos as estruturas da ferragem somente onde oferecem a funcionalidade ou a software; nós propomos as estruturas da ferragem somente onde oferecem a funcionalidade ou a eficiência que o software não pode combinar, e deixam tanta flexibilidade como possível para uma eficiência que o software não pode combinar, e deixam tanta flexibilidade como possível para uma inovação mais atrasada do software. No detalhe, nós não estamos propondo execuções de ferragem dos inovação mais atrasada do software. No detalhe, nós não estamos propondo execuções de ferragem dos coletores completos do lixo [3.4], da execução do bytecode [5.6], ou na proteção fine-grained [7-9]. coletores completos do lixo [3.4], da execução do bytecode [5.6], ou na proteção fine-grained [7-9]. Nossa aproximação é centrada em torno de duas idéias: sustentação para objetos como entidades Nossa aproximação é centrada em torno de duas idéias: sustentação para objetos como entidades primeira classe no sistema da memória, e colaboração entre a ferragem e o software para a gerência da primeira classe no sistema da memória, e colaboração entre a ferragem e o software para a gerência da memória. O fundamento do propostos à arquitetura é apresentado na seção 2, e as extensões GC-memória. O fundamento do propostos à arquitetura é apresentado na seção 2, e as extensões GC-relacionadas são descritas na seção 3. As comparações com trabalho relacionado estão na seção 4, a relacionadas são descritas na seção 3. As comparações com trabalho relacionado estão na seção 4, a seguir a seção 5 descreve nossa metodologia da avaliação e a seção 6 apresenta os resultados de seguir a seção 5 descreve nossa metodologia da avaliação e a seção 6 apresenta os resultados de nossa avaliação inicial. Na seção 7 nós apresentamos conclusões, e a seção 8 sugere o trabalho futuro.nossa avaliação inicial. Na seção 7 nós apresentamos conclusões, e a seção 8 sugere o trabalho futuro.

Page 4: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2. Uma hierarquia da memória 2. Uma hierarquia da memória para objetospara objetos

Uso que atual de JVMs da produção uma representação direta do ponteiro para o objeto referenciado: cada objeto Uso que atual de JVMs da produção uma representação direta do ponteiro para o objeto referenciado: cada objeto referenciado por seu endereço virtual baixo. O sistema convencional da memória virtual traça virtual aos referenciado por seu endereço virtual baixo. O sistema convencional da memória virtual traça virtual aos endereços físicos. Isto está no contraste às máquinas virtuais adiantadas, tais como o Smalltalk VMs dos 80’s [1], endereços físicos. Isto está no contraste às máquinas virtuais adiantadas, tais como o Smalltalk VMs dos 80’s [1], que usaram uma representação indireta: os objetos foram consultados pertos a um objeto posição-independente que usaram uma representação indireta: os objetos foram consultados pertos a um objeto posição-independente ID (OID), realmente um índice em uma tabela do objeto. A entrada da tabela do objeto de um objeto (OTE ID (OID), realmente um índice em uma tabela do objeto. A entrada da tabela do objeto de um objeto (OTE dependente) da carga de a no acesso do campo pelo mutator (código da aplicação, a diferencia do coletor ) dependente) da carga de a no acesso do campo pelo mutator (código da aplicação, a diferencia do coletor ) conteve o endereço de memória virtual do objeto. A representação direta conserva a instrução (do lixo); a conteve o endereço de memória virtual do objeto. A representação direta conserva a instrução (do lixo); a representação indireta faz o realocação mais fácil porque o endereço de memória de um objeto é armazenado em representação indireta faz o realocação mais fácil porque o endereço de memória de um objeto é armazenado em somente um lugar. O Realocagem é um componente importante de uma variedade de funções da gerência da somente um lugar. O Realocagem é um componente importante de uma variedade de funções da gerência da memória, o mais notavelmente a compactação do heap que supera a fragmentação. Entretanto, desde 80’s memória, o mais notavelmente a compactação do heap que supera a fragmentação. Entretanto, desde 80’s atrasados o acesso direto foi o método da escolha, porque as despesas gerais da ação indireta da tabela do objeto atrasados o acesso direto foi o método da escolha, porque as despesas gerais da ação indireta da tabela do objeto foram demasiado elevadas [10]. As propriedades temporal de algoritmos da gerência da memória são importantes foram demasiado elevadas [10]. As propriedades temporal de algoritmos da gerência da memória são importantes quando scaling aos heaps grandes: é desejável ter o throughput médio bom do mutator, isto é, despesas gerais de quando scaling aos heaps grandes: é desejável ter o throughput médio bom do mutator, isto é, despesas gerais de gerência baixas da memória, e assegurar-se também esse as pausas, durante que o trabalho do mutator é gerência baixas da memória, e assegurar-se também esse as pausas, durante que o trabalho do mutator é suspendido, são mantidas dentro dos limites aceitáveis. O Concurrent, ou mostlyconcurrent [11], coleção do lixo suspendido, são mantidas dentro dos limites aceitáveis. O Concurrent, ou mostlyconcurrent [11], coleção do lixo são muito atrativos para evitar pausas longas ao operar-se no multi-gigabyte heaps: aqui o coletor funciona ao são muito atrativos para evitar pausas longas ao operar-se no multi-gigabyte heaps: aqui o coletor funciona ao mesmo tempo que o mutator, com alguns mecanismos da sincronização (barreiras, suspensão da linha do mesmo tempo que o mutator, com alguns mecanismos da sincronização (barreiras, suspensão da linha do mutator, etc.) para assegurar a exatidão. O compactação simultâneo é mais difícil: um objeto deve realocado com mutator, etc.) para assegurar a exatidão. O compactação simultâneo é mais difícil: um objeto deve realocado com o atomacidade aparente ao mutator. Com uma representação direta do ponteiro isto significa atualizar todas as o atomacidade aparente ao mutator. Com uma representação direta do ponteiro isto significa atualizar todas as referências a um objeto “em uma vez” (e é estritamente mais duro do que meramente determinando que um objeto referências a um objeto “em uma vez” (e é estritamente mais duro do que meramente determinando que um objeto é resgatado, que requeira somente a leitura de uma única referência). Uma representação indireta executada em é resgatado, que requeira somente a leitura de uma única referência). Uma representação indireta executada em uma arquitetura convencional ainda requer a sincronização extra no mutator porque a carga-carga ou carga-uma arquitetura convencional ainda requer a sincronização extra no mutator porque a carga-carga ou carga-armazena a ação indireta através da tabela do objeto não é atômica. A sustentação Arquitetural para objetos pode armazena a ação indireta através da tabela do objeto não é atômica. A sustentação Arquitetural para objetos pode fornecer o melhor de ambos os mundos: acesso rápido aos objetos no caso comum, com realocaçõa fácil. Com fornecer o melhor de ambos os mundos: acesso rápido aos objetos no caso comum, com realocaçõa fácil. Com pouca sustentação da ferragem nós podemos também executar o realocação sincronizado com nenhumas pouca sustentação da ferragem nós podemos também executar o realocação sincronizado com nenhumas despesas gerais no mutator: isto permite o compactação verdadeiramente simultâneo. Com realocação simultâneo despesas gerais no mutator: isto permite o compactação verdadeiramente simultâneo. Com realocação simultâneo nós podemos mover os objetos quando todas as linhas do mutator forem ativas, assim permitindo que os vários nós podemos mover os objetos quando todas as linhas do mutator forem ativas, assim permitindo que os vários otimização sejam executados no heap e melhorando os tamanhos do heap do máximo que podem ser segurados otimização sejam executados no heap e melhorando os tamanhos do heap do máximo que podem ser segurados sem induzir a coleção inaceitável pauses.2.007 do lixosem induzir a coleção inaceitável pauses.2.007 do lixoG. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 147 1. Encontrando uma referência G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 147 1. Encontrando uma referência físico-etiquetada em um cache convencional.físico-etiquetada em um cache convencional.

Page 5: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 1. Finding a physically-tagged datum in a conventional cache.

Page 6: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.1. cache Objetos-dirigidos2.1. cache Objetos-dirigidosEm um sistema convencional a instrução para carregar um campo do objeto faz exame de dois Em um sistema convencional a instrução para carregar um campo do objeto faz exame de dois operandos da fonte: a referência ao objeto (isto é, seu endereço virtual baixo) e o campo operandos da fonte: a referência ao objeto (isto é, seu endereço virtual baixo) e o campo deslocaram dentro do objeto. O ponteiro e o offset são somados para produzir o endereço virtual deslocaram dentro do objeto. O ponteiro e o offset são somados para produzir o endereço virtual do campo que é alimentado ao TLB e L1 (físico-etiquetado) o cache (1). Um cache objeto-do campo que é alimentado ao TLB e L1 (físico-etiquetado) o cache (1). Um cache objeto-dirigido [12] tem preferivelmente as linhas do cache etiquetadas diretamente com (OID, offset) os dirigido [12] tem preferivelmente as linhas do cache etiquetadas diretamente com (OID, offset) os endereços, e assim contem partes dos objetos melhor que blocos da memória física (2). Esta endereços, e assim contem partes dos objetos melhor que blocos da memória física (2). Esta organização é similar à virtualidade de endereço o cache, a não ser que aquela o OID e os organização é similar à virtualidade de endereço o cache, a não ser que aquela o OID e os bocados offset seja concatenada melhor que somada (uma simplificação ligeira para agora, ver bocados offset seja concatenada melhor que somada (uma simplificação ligeira para agora, ver mais detalhes na seção 2.2 abaixo); não há nenhum aliasing de endereços do objeto. Uma mais detalhes na seção 2.2 abaixo); não há nenhum aliasing de endereços do objeto. Uma instrução da objeto-carga faz exame dos mesmos dois operandos da fonte que a carga instrução da objeto-carga faz exame dos mesmos dois operandos da fonte que a carga convencional, mas melhor que sendo adicionado contorneiam o TLB e ir diretamente à ferragem convencional, mas melhor que sendo adicionado contorneiam o TLB e ir diretamente à ferragem do fósforo do end do cache. Os Tag de um cache objeto-dirigido devem ser mais longos segurar do fósforo do end do cache. Os Tag de um cache objeto-dirigido devem ser mais longos segurar o tamanho (virtual) desejado do espaço do objeto. O tamanho máximo do objeto pode ser o tamanho (virtual) desejado do espaço do objeto. O tamanho máximo do objeto pode ser restrito: 10 bocados offset (256 campos de 4 bytes cada um) cobrem a maioria dos objetos na restrito: 10 bocados offset (256 campos de 4 bytes cada um) cobrem a maioria dos objetos na prática, e uns objetos mais longos podem ser compostos pela máquina virtual no muito a mesma prática, e uns objetos mais longos podem ser compostos pela máquina virtual no muito a mesma maneira que um sistema de lima fornece o ilusão de limas contíguas grandes usando blocos maneira que um sistema de lima fornece o ilusão de limas contíguas grandes usando blocos pequenos do disco. Os endereços e os Tag do objeto podem conseqüentemente ser somente pequenos do disco. Os endereços e os Tag do objeto podem conseqüentemente ser somente alguns bocados mais por muito tempo do que os endereços físicos segurados já em sistemas alguns bocados mais por muito tempo do que os endereços físicos segurados já em sistemas upcoming. O espaço de endereço de OID é (non-virtualized) um recurso compartilhado, mas os upcoming. O espaço de endereço de OID é (non-virtualized) um recurso compartilhado, mas os processos múltiplos do aplicação-nível podem residir dentro de um único JVM [13]. Nós processos múltiplos do aplicação-nível podem residir dentro de um único JVM [13]. Nós supomos que o sistema se operando coordena dividir do espaço de OID se diverso JVMs for supomos que o sistema se operando coordena dividir do espaço de OID se diverso JVMs for requerido. Alternativamente, o espaço de OID podia ser virtualizado com a adição da ferragem requerido. Alternativamente, o espaço de OID podia ser virtualizado com a adição da ferragem extra, em alguma penalidade no custo e no desempenhoextra, em alguma penalidade no custo e no desempenho

Page 7: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

..148 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 2. Um cache objeto-148 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 2. Um cache objeto-dirigido (simplificado). Cada linha do cache do objeto contem a parte de somente um objeto; os objetos dirigido (simplificado). Cada linha do cache do objeto contem a parte de somente um objeto; os objetos podem medir linhas múltiplas do cache, mas a maioria de objetos ocuparão somente um (dado 64 linhas do podem medir linhas múltiplas do cache, mas a maioria de objetos ocuparão somente um (dado 64 linhas do cache do byte). Algum espaço nas extremidades de linhas será não utilizado (fragmentação externa). A cache do byte). Algum espaço nas extremidades de linhas será não utilizado (fragmentação externa). A fragmentação tem dois efeitos potencial negativos no sistema. Firstly, reduz a capacidade eficaz do cache: fragmentação tem dois efeitos potencial negativos no sistema. Firstly, reduz a capacidade eficaz do cache: com a embalagem mais densa mais objetos caberiam no cache. , remove a possibilidade que um prefetch da com a embalagem mais densa mais objetos caberiam no cache. , remove a possibilidade que um prefetch da vontade da falta de cache um objeto adjacente. A embalagem e prefetching confiam no localização espacial vontade da falta de cache um objeto adjacente. A embalagem e prefetching confiam no localização espacial entre os objetos: em sua ausência os objetos adjacentes não são usados e não fornecem nenhum benefício. entre os objetos: em sua ausência os objetos adjacentes não são usados e não fornecem nenhum benefício. Em nosso sistema, os objetos são alocados diretamente no cache (seção 2.3); o efeito prefetching é Em nosso sistema, os objetos são alocados diretamente no cache (seção 2.3); o efeito prefetching é somente relevante para os objetos velhos bastante evite previamente do cache. Alguns estudos somente relevante para os objetos velhos bastante evite previamente do cache. Alguns estudos demonstraram o localização espacial entre objetos recente-alocados mas pouco para uns objetos mais demonstraram o localização espacial entre objetos recente-alocados mas pouco para uns objetos mais velhos [14], assim nós não esperaríamos muito benefício dos objetos mais velhos prefetching em nenhum velhos [14], assim nós não esperaríamos muito benefício dos objetos mais velhos prefetching em nenhum caso. Ambos estes efeitos naturalmente são refletidos em nossos resultados: são os custos que nós caso. Ambos estes efeitos naturalmente são refletidos em nossos resultados: são os custos que nós pagamos na troca pelos outros benefícios de nosso sistema. Um benefício adicional de um cache do objeto é pagamos na troca pelos outros benefícios de nosso sistema. Um benefício adicional de um cache do objeto é que impossibilita compartilhar falso entre objetos diferentes. Depois de nosso princípio que objeta a que impossibilita compartilhar falso entre objetos diferentes. Depois de nosso princípio que objeta a funcionalidade estende meramente um sistema existente, nós permite o ordinário physicallytagged linhas do funcionalidade estende meramente um sistema existente, nós permite o ordinário physicallytagged linhas do cache para coexistir no cache do objeto com as linhas objeto-etiquetadas do cache. Contanto que os Tag cache para coexistir no cache do objeto com as linhas objeto-etiquetadas do cache. Contanto que os Tag não colidirem, assegurado por exemplo encaixando os endereços do objeto em uma escala de endereço não colidirem, assegurado por exemplo encaixando os endereços do objeto em uma escala de endereço mais elevada do que a memória física (por exemplo, um bocado high-order do jogo), a ferragem do cache mais elevada do que a memória física (por exemplo, um bocado high-order do jogo), a ferragem do cache opera-se na maneira usual depois que o estágio da geração do endereço e é-se inconsciente que está opera-se na maneira usual depois que o estágio da geração do endereço e é-se inconsciente que está tratando dos objetos. Nós usaremos o endereço físico estendido ‘’ (EPA) significar um endereço (corda de tratando dos objetos. Nós usaremos o endereço físico estendido ‘’ (EPA) significar um endereço (corda de bocado) que seja uma posição de memória física ou (OID, offset) um endereço codificado. A maioria de bocado) que seja uma posição de memória física ou (OID, offset) um endereço codificado. A maioria de mecanismos da coerência do cache trabalham inalterável ao usar EPAs em vez do exame direto endereços; mecanismos da coerência do cache trabalham inalterável ao usar EPAs em vez do exame direto endereços; os snoops de outros processadores centrais destine para endereços do objeto combinarão nos Tag os snoops de outros processadores centrais destine para endereços do objeto combinarão nos Tag codificados e mudarão estados da coerência na maneira usual. Os casos incomuns são falta de cache em codificados e mudarão estados da coerência na maneira usual. Os casos incomuns são falta de cache em todos os níveis da hierarquia, que necessitam um acesso de memória (ver a seção 2.4), e os diretórios em todos os níveis da hierarquia, que necessitam um acesso de memória (ver a seção 2.4), e os diretórios em protocolos diretório-baseados. Embora a coerência diretório-baseada do objeto seja possível, os detalhes protocolos diretório-baseados. Embora a coerência diretório-baseada do objeto seja possível, os detalhes são além do espaço deste papel.são além do espaço deste papel.

Page 8: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.2. Encoding do endereço do 2.2. Encoding do endereço do objetoobjeto

Um sistema executou exatamente como descrito acima teria a colocação pobre dos objetos dentro do cache. Os Um sistema executou exatamente como descrito acima teria a colocação pobre dos objetos dentro do cache. Os caches associativos de Nonfully- são posicionados convencionalmente usando um subconjunto dos bocados do caches associativos de Nonfully- são posicionados convencionalmente usando um subconjunto dos bocados do endereço (do exame). Isto tem o efeito de distribuir endereços consecutivos através do cache na esperança de endereço (do exame). Isto tem o efeito de distribuir endereços consecutivos através do cache na esperança de reduzir conflitos, e é barato computar. Com objetos no cache o índice deve nem consistir unicamente em reduzir conflitos, e é barato computar. Com objetos no cache o índice deve nem consistir unicamente em bocados de OID (de modo que os diversos cache linhas de objetos grandes opõem dentro de um cache bocados de OID (de modo que os diversos cache linhas de objetos grandes opõem dentro de um cache ajustado), nem somente em bocados offset (de modo que os objetos pequenos são restringidos a uma parcela ajustado), nem somente em bocados offset (de modo que os objetos pequenos são restringidos a uma parcela do cache). nós codificamos (OID, offset) endereços na escala de EPA usando traçar invectiveis que combina a do cache). nós codificamos (OID, offset) endereços na escala de EPA usando traçar invectiveis que combina a parte do OID e bocados offset nos bocados do índice. O inclusão dos bocados offset espalha máxima para fora parte do OID e bocados offset nos bocados do índice. O inclusão dos bocados offset espalha máxima para fora as linhas do cache de um único objeto, e as linhas do cache dos objetos diferentes são distribuídas através do as linhas do cache de um único objeto, e as linhas do cache dos objetos diferentes são distribuídas através do cache pelos bocados de OID.cache pelos bocados de OID.G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 149 3. Encoding do endereço do G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 149 3. Encoding do endereço do objeto (exemplo com bocado 40 OID + bocado 12 deslocado). 4. Um objeto pequeno com e sem enviesar. usar-objeto (exemplo com bocado 40 OID + bocado 12 deslocado). 4. Um objeto pequeno com e sem enviesar. usar-se exclusivo-ou combinação do exemplo são ilustradas em 3. O Indexem pela extração do bocado terá o efeito se exclusivo-ou combinação do exemplo são ilustradas em 3. O Indexem pela extração do bocado terá o efeito desejado, e o ‘’ OID real e o offset (quando necessário) podem ser recuperados invertendo o encoding. Outra desejado, e o ‘’ OID real e o offset (quando necessário) podem ser recuperados invertendo o encoding. Outra uma operação é executada como parte do encoding. [15.16] sustentações bifurcated de uma disposição do uma operação é executada como parte do encoding. [15.16] sustentações bifurcated de uma disposição do objeto [rapidamente identificação das referências para o coletor do lixo: o encabeçamento do objeto está no meio objeto [rapidamente identificação das referências para o coletor do lixo: o encabeçamento do objeto está no meio do objeto com referências em offsets negativos e em valores primitivos em offsets positivos (os campos de Java do objeto com referências em offsets negativos e em valores primitivos em offsets positivos (os campos de Java são declarados como conter um ou o outro, ao contrário do Smalltalk). Em uma execução direta mesmo os são declarados como conter um ou o outro, ao contrário do Smalltalk). Em uma execução direta mesmo os objetos pequenos ocupariam duas linhas do cache, umas despesas gerais intolerável. Nós enviesamos objetos pequenos ocupariam duas linhas do cache, umas despesas gerais intolerável. Nós enviesamos conseqüentemente objetos dentro das linhas do cache: o OID contem um pequeno número de bocados que conseqüentemente objetos dentro das linhas do cache: o OID contem um pequeno número de bocados que especificam onde dentro de sua linha do cache o encabeçamento do objeto (offset lógico zero) deve encontrar-especificam onde dentro de sua linha do cache o encabeçamento do objeto (offset lógico zero) deve encontrar-se. 4 mostras como um objeto é enviesado de modo que os campos da referência cabidos dentro do mesmo se. 4 mostras como um objeto é enviesado de modo que os campos da referência cabidos dentro do mesmo cache alinhem como o encabeçamento do objeto. O valor enviesado está adicionado ao offset lógico pedido cache alinhem como o encabeçamento do objeto. O valor enviesado está adicionado ao offset lógico pedido como parte da geração do endereço, quando (OID, offset) o endereço é codificado para dar forma ao EPA. 5 como parte da geração do endereço, quando (OID, offset) o endereço é codificado para dar forma ao EPA. 5 mostras como 4 são modificados para incluir o enviesamento; três bocados enviesados são feitos exame aqui mostras como 4 são modificados para incluir o enviesamento; três bocados enviesados são feitos exame aqui dos bocados high-order do OID, permitindo enviesar a um todo o limite de 8 byte dentro da linha do cache de 64 dos bocados high-order do OID, permitindo enviesar a um todo o limite de 8 byte dentro da linha do cache de 64 byte. Enviesar é na maior parte transparente a software; somente o allocator e o coletor do lixo, que deve saber byte. Enviesar é na maior parte transparente a software; somente o allocator e o coletor do lixo, que deve saber os campos são organizados dentro das linhas do cache, estão cientes. O valor enviesado desejado é constante os campos são organizados dentro das linhas do cache, estão cientes. O valor enviesado desejado é constante para uma classe particular.para uma classe particular.

Page 9: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 2. An object-addressed cache (simplified).

Page 10: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 3. Object address encoding (example with 40 bit OID + 12 bit offset).

Page 11: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 4. A small object with and without skewing.

Page 12: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.3. Gerência do cache: 2.3. Gerência do cache: Alocamento e desalocagem do Alocamento e desalocagem do

objetoobjeto

Os caches em sistemas convencionais são projetados operar-se na maior Os caches em sistemas convencionais são projetados operar-se na maior parte transparente ao código da aplicação, embora alguns as partes do parte transparente ao código da aplicação, embora alguns as partes do sistema operando-se podem necessitar estar cientes da organização do sistema operando-se podem necessitar estar cientes da organização do cache. As sugestões, tais como instruções do prefetch, podem ser cache. As sugestões, tais como instruções do prefetch, podem ser fornecidas para o desempenho mas são semanticamente viaveis. Em fornecidas para o desempenho mas são semanticamente viaveis. Em nosso caso, co-projetar da ferragem e virtualnosso caso, co-projetar da ferragem e virtualG150 G. Wright e outros. /Ciência do computador que programa 62 (2006) G150 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 5. Encoding do endereço do objeto (exemplo com enviesamento). 145-163 5. Encoding do endereço do objeto (exemplo com enviesamento). a máquina permite uma comunicação melhor da intenção. Por exemplo, a máquina permite uma comunicação melhor da intenção. Por exemplo, quando alocar um objeto novo lá não é nenhuma necessidade buscar os quando alocar um objeto novo lá não é nenhuma necessidade buscar os índices da memória no construtor do cache- overwrite todos os dados. Uma índices da memória no construtor do cache- overwrite todos os dados. Uma instrução do zero-e-alocamento, como o PowerPC DCBZ (bloco zero) do instrução do zero-e-alocamento, como o PowerPC DCBZ (bloco zero) do cache dos dados [17], pede que uma linha do cache seja writable alocado cache dos dados [17], pede que uma linha do cache seja writable alocado no cache e que os índices estejam ajustados a zero. Similarmente, uma vez no cache e que os índices estejam ajustados a zero. Similarmente, uma vez que um objeto é sabido para ser lixo não há nenhuma necessidade que um objeto é sabido para ser lixo não há nenhuma necessidade escrever para trás seus índices do cache à memória; livrar suas linhas do escrever para trás seus índices do cache à memória; livrar suas linhas do cache imediatamente impedirá o tráfego desnecessário da memória e cache imediatamente impedirá o tráfego desnecessário da memória e permitirá a colocação melhor de objetos novos no cache. Os Variantes de permitirá a colocação melhor de objetos novos no cache. Os Variantes de ambas estas operações foram propostos dentro ambas estas operações foram propostos dentro

Page 13: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 5. Object address encoding (example with skew).

Page 14: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.4. Tradução2.4. Tradução Um cache do objeto permite o acesso rápido aos objetos, no exemplo comum (da batida), usando somente o Um cache do objeto permite o acesso rápido aos objetos, no exemplo comum (da batida), usando somente o posição-independente objeto ID. No exemplo de uma falta ou de um eviction de cache o sistema deve imóvel posição-independente objeto ID. No exemplo de uma falta ou de um eviction de cache o sistema deve imóvel fornecer meios de recuperar ou de armazenar o estado do objeto; a tradução envolve olhar acima do endereço fornecer meios de recuperar ou de armazenar o estado do objeto; a tradução envolve olhar acima do endereço físico do objeto na tabela do objeto e então reconciling os índices do cache do objeto alinhar com a físico do objeto na tabela do objeto e então reconciling os índices do cache do objeto alinhar com a reapresentação da em-memória do objeto. Nós realizamos este com um mecanismo da ferragem interposed reapresentação da em-memória do objeto. Nós realizamos este com um mecanismo da ferragem interposed logicamente entre a hierarquia do cache e a memória principal (6). Os intercepts do tradutor a falta de cache ao logicamente entre a hierarquia do cache e a memória principal (6). Os intercepts do tradutor a falta de cache ao objeto EPAs e, usando uma máquina simples do estado, lê a entrada da tabela do objeto para começar o objeto EPAs e, usando uma máquina simples do estado, lê a entrada da tabela do objeto para começar o endereço físico e gera (cache coherent) esforços das linhas físicas necessárias do cache; o lookup de tabela do endereço físico e gera (cache coherent) esforços das linhas físicas necessárias do cache; o lookup de tabela do objeto é similar a uma caminhada page-table da ferragem. Uma única linha do cache do objeto pode sobrepor objeto é similar a uma caminhada page-table da ferragem. Uma única linha do cache do objeto pode sobrepor um ou dois linha-objetos físicos do cache na memória palavra-é alinhada, não cache-linha alinhada, para evitar a um ou dois linha-objetos físicos do cache na memória palavra-é alinhada, não cache-linha alinhada, para evitar a perda da memória do heap à fragmentação. A fragmentação do Heap é mais menos aceitável do que a perda da memória do heap à fragmentação. A fragmentação do Heap é mais menos aceitável do que a fragmentação nos caches porque os caches podem conter somente uma fração pequena de um heap do fragmentação nos caches porque os caches podem conter somente uma fração pequena de um heap do multigigabyte, mas o DRAM main-memory faz exame de um componente muito significativo de orçamentos do multigigabyte, mas o DRAM main-memory faz exame de um componente muito significativo de orçamentos do poder e de custo de uma máquina. A entrada da tabela do objeto contem também a informação do tamanho de poder e de custo de uma máquina. A entrada da tabela do objeto contem também a informação do tamanho de modo que as extremidades dos objetos sejam seguradas corretamente. Uma vista lógica da tabela do objeto é modo que as extremidades dos objetos sejam seguradas corretamente. Uma vista lógica da tabela do objeto é mostrada em 7, mas não são uma estrutura fisicamente separada; como com as tabelas de página mostrada em 7, mas não são uma estrutura fisicamente separada; como com as tabelas de página convencionais, a tabela do objeto é armazenada na memória coherent e o VM manipula-a com cargas e lojas. convencionais, a tabela do objeto é armazenada na memória coherent e o VM manipula-a com cargas e lojas. Deve-se enfatizar que a linha reapresentação do cache do objeto de um objeto não está mantida coherent com a Deve-se enfatizar que a linha reapresentação do cache do objeto de um objeto não está mantida coherent com a vista de sua reapresentação física da memória como visto com os acessos de memória convencionais. A vista de sua reapresentação física da memória como visto com os acessos de memória convencionais. A coerência trabalha completamente independentemente nas linhas do cache do objeto e em linhas físico-coerência trabalha completamente independentemente nas linhas do cache do objeto e em linhas físico-etiquetadas do cache; o tradutor reconciles somente os dois quando uma linha do cache do objeto é construída etiquetadas do cache; o tradutor reconciles somente os dois quando uma linha do cache do objeto é construída em uma falta de cache ou escrita para trás no eviction. A vista dos mutator do objeto é unicamente através das em uma falta de cache ou escrita para trás no eviction. A vista dos mutator do objeto é unicamente através das linhas do cache do objeto. A máquina virtual deve ciao para não modificar um objeto usando cargas e lojas linhas do cache do objeto. A máquina virtual deve ciao para não modificar um objeto usando cargas e lojas convencionais, que seja conseguido facilmente nunca traçando o heap no espaço de endereço virtual convencionais, que seja conseguido facilmente nunca traçando o heap no espaço de endereço virtual convencional. Os processadores centrais têm o acesso corrente ao armazenamento físico de um objeto somente convencional. Os processadores centrais têm o acesso corrente ao armazenamento físico de um objeto somente para funções internas do VM tais como o realocação.para funções internas do VM tais como o realocação.

Page 15: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.5. Relocação simultâneo do 2.5. Relocação simultâneo do objetoobjeto

Um sistema long-running do objeto deve realocar objetos vivos para evitar a fragmentação do heap; este Um sistema long-running do objeto deve realocar objetos vivos para evitar a fragmentação do heap; este compactação do heap deve ser simultâneo ou incremental evitar pausas longas do mutator. Como discutido compactação do heap deve ser simultâneo ou incremental evitar pausas longas do mutator. Como discutido acima, referências indiretas com anualacima, referências indiretas com anual  G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 151 6. Diagrama esquemático da G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 151 6. Diagrama esquemático da arquitetura proposta. Unshaded caixas representa unidades novas; as linhas tracejadas são trajetos de dados arquitetura proposta. Unshaded caixas representa unidades novas; as linhas tracejadas são trajetos de dados novos. O diagrama superior representa um sistema 2-CPU single-chip, como simulado. Um diagrama mais baixo novos. O diagrama superior representa um sistema 2-CPU single-chip, como simulado. Um diagrama mais baixo mostra extensões: Múltiplo-CMP sistema, caches fora do limite do GC. 7. A organização de um objeto dentro do mostra extensões: Múltiplo-CMP sistema, caches fora do limite do GC. 7. A organização de um objeto dentro do cache e na memória, e sua entrada associada da tabela do objeto. a tabela do objeto pode fazer o realocaçõa cache e na memória, e sua entrada associada da tabela do objeto. a tabela do objeto pode fazer o realocaçõa muito mais fácil porque o endereço físico de um objeto é armazenado em somente um lugar. Aqui nós muito mais fácil porque o endereço físico de um objeto é armazenado em somente um lugar. Aqui nós descrevemos como sincronizar a tradução e o realocaçõa na hierarquia da memória do objeto de modo que descrevemos como sincronizar a tradução e o realocaçõa na hierarquia da memória do objeto de modo que mutation, com suas traduções implicadas, podem prosseguir simultaneamente com o compactação. O modelo mutation, com suas traduções implicadas, podem prosseguir simultaneamente com o compactação. O modelo básico para o realocaçõa de copi é que o compactor lê os índices do revestimento protetor físico da memória o básico para o realocaçõa de copi é que o compactor lê os índices do revestimento protetor físico da memória o objeto, cópias aqueles dados à posição nova, e atualiza então a entrada da tabela do objeto para apontar à área objeto, cópias aqueles dados à posição nova, e atualiza então a entrada da tabela do objeto para apontar à área nova. A leitura e a escrita são executadas usando cargas ordinárias e as lojas que operam-se em endereços nova. A leitura e a escrita são executadas usando cargas ordinárias e as lojas que operam-se em endereços físicos; estes as operações não passam através do tradutor. Quando o copi ocorrer há dois problemas da físicos; estes as operações não passam através do tradutor. Quando o copi ocorrer há dois problemas da simultaneidade com respeito à tradução: firstly, uma escrev-tradução (eviction do cache) de uma linha do cache simultaneidade com respeito à tradução: firstly, uma escrev-tradução (eviction do cache) de uma linha do cache do objeto deve ser refletida no do objeto deve ser refletida no G.152 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 copí, e, secondly, uma l-G.152 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 copí, e, secondly, uma l-tradução deve usar a posição velha até que a cópia esteja completa. O problema lido é mais fácil: na ausência tradução deve usar a posição velha até que a cópia esteja completa. O problema lido é mais fácil: na ausência de escrever traduções que as duas versões são idênticas quando a cópia está feita, assim que o atomacidadede escrever traduções que as duas versões são idênticas quando a cópia está feita, assim que o atomacidade aparente com respeito ao update de OTE não é crítico. Nós resolvemos o problema da escrev-tradução usando aparente com respeito ao update de OTE não é crítico. Nós resolvemos o problema da escrev-tradução usando um único ‘evicted’ mordido em cada OTE. Sempre que o tradutor executa uma escrev-tradução na parte de um um único ‘evicted’ mordido em cada OTE. Sempre que o tradutor executa uma escrev-tradução na parte de um objeto que ajuste este bocado atômica com respeito ao update das linhas físicas do cache, por exemplo objeto que ajuste este bocado atômica com respeito ao update das linhas físicas do cache, por exemplo prendendo a linha do cache que contem o OTE até que os updates estejam completos. O compactor cancela o prendendo a linha do cache que contem o OTE até que os updates estejam completos. O compactor cancela o bocado antes de começar um realocaçõa, copía a memória física, e troca então o endereço físico novo em usar-bocado antes de começar um realocaçõa, copía a memória física, e troca então o endereço físico novo em usar-se de OTE compar-e-troca a operação (CAS). O CAS falhará e a cópia retried se o tradutor entrementes se de OTE compar-e-troca a operação (CAS). O CAS falhará e a cópia retried se o tradutor entrementes processar um eviction de qualquer parte desse objeto; se o CAS suceder a posição nova está comutada atômica processar um eviction de qualquer parte desse objeto; se o CAS suceder a posição nova está comutada atômica dentro, e nesse ponto as cópias são idênticas. dentro, e nesse ponto as cópias são idênticas.

Page 16: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 6. Schematic of the proposed architecture. The unshaded boxes represent new units; dashed lines are new data paths. Upper diagram

representsa 2-CPU single-chip system, as simulated. Lower diagram shows

extensions: multiple-CMP system, caches outside the GC boundary.

Page 17: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 7. The organization of an object within the cache and in memory, and its associated object table entry.

Page 18: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

2.6. Sumário2.6. Sumário

Nós descrevemos uma hierarquia da memória para objetos, o Nós descrevemos uma hierarquia da memória para objetos, o realocaçõa simultâneo oferecendo e a flexibilidade de uma tabela realocaçõa simultâneo oferecendo e a flexibilidade de uma tabela do objeto com nenhuma penalidade do tamanho ou da velocidade do objeto com nenhuma penalidade do tamanho ou da velocidade de código (no caso comum). Um cache do objeto prende as partes de código (no caso comum). Um cache do objeto prende as partes dos objetos, etiquetadas diretamente com o objeto posição-dos objetos, etiquetadas diretamente com o objeto posição-independente ID e o offset, ao lado das linhas físico-etiquetadas independente ID e o offset, ao lado das linhas físico-etiquetadas convencionais do cache. A função do índice do cache para convencionais do cache. A função do índice do cache para endereços do objeto é determinada pela escolha de codificar na endereços do objeto é determinada pela escolha de codificar na escala de endereço prolongada. As linhas do cache do objeto são escala de endereço prolongada. As linhas do cache do objeto são mantidas coherent usando o mecanismo normal da coerência do mantidas coherent usando o mecanismo normal da coerência do cache. Um tradutor da ferragem segura a conversão de linhas do cache. Um tradutor da ferragem segura a conversão de linhas do cache do objeto a e da reapresentação na memória física no cache do objeto a e da reapresentação na memória física no exemplo de uma falta ou de um eviction de cache. A hierarquia da exemplo de uma falta ou de um eviction de cache. A hierarquia da memória para objetos dá forma a uma base para o trabalho futuro memória para objetos dá forma a uma base para o trabalho futuro na gerência altamente scalable, simultânea da memória algoritmos. na gerência altamente scalable, simultânea da memória algoritmos. A seção seguinte apresenta uma possibilidade, construindo nas A seção seguinte apresenta uma possibilidade, construindo nas características do cache do objeto. características do cache do objeto.

Page 19: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3. coleção do lixo do Em-cache3. coleção do lixo do Em-cache

A coleção do lixo é um processo inefficient para caches: o gráfico A coleção do lixo é um processo inefficient para caches: o gráfico do objeto é atravessado tipicamente pelo marca-varre campos do objeto é atravessado tipicamente pelo marca-varre campos tocantes da referência do coletor em cada um objeto vivo tocantes da referência do coletor em cada um objeto vivo exatamente uma vez; embora haja algum localização espacial exatamente uma vez; embora haja algum localização espacial dentro dos objetos há pouco localização entre os objetos dentro dos objetos há pouco localização entre os objetos referenciado neste teste padrão [19]. Se a maioria de acessos referenciado neste teste padrão [19]. Se a maioria de acessos forem aos objetos recentemente alocados, aos caches e à geração forem aos objetos recentemente alocados, aos caches e à geração a mais nova de parcelas similares de uma preensão gerenciador do a mais nova de parcelas similares de uma preensão gerenciador do coletor do lixo do heap. Os objetos são alocados certamente no coletor do lixo do heap. Os objetos são alocados certamente no cache; os objetos short-lived morrerão também no cache. Com cache; os objetos short-lived morrerão também no cache. Com alguma sustentação da ferragem, nós podemos construir um coletor alguma sustentação da ferragem, nós podemos construir um coletor novo do lixo da geração que se opere inteiramente dentro dos novo do lixo da geração que se opere inteiramente dentro dos caches do objeto, com quase nenhumas referências externas da caches do objeto, com quase nenhumas referências externas da memória requeridas: coleção do lixo do em-cache. Isto dá coleções memória requeridas: coleção do lixo do em-cache. Isto dá coleções rápidas, predictable sem tráfego global da memória ou rápidas, predictable sem tráfego global da memória ou sincronização e conserva a escrita para trás de objetos do lixo à sincronização e conserva a escrita para trás de objetos do lixo à memória. memória.

Page 20: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.1. Limites da coleção do lixo3.1. Limites da coleção do lixo

Para as finalidades da coleção do lixo do em-cache nós Para as finalidades da coleção do lixo do em-cache nós agrupamos os processadores centrais e seus caches associados agrupamos os processadores centrais e seus caches associados dentro de um ou mais limites do GC. Um limite do GC limita um dentro de um ou mais limites do GC. Um limite do GC limita um grupo dos processadores centrais em que o mutation será pausado grupo dos processadores centrais em que o mutation será pausado e o lixo o coletor funcionará, e os caches dentro de que coleção e o lixo o coletor funcionará, e os caches dentro de que coleção ocorrerão; nós esperamos uma comunicação rápida dentro do limite ocorrerão; nós esperamos uma comunicação rápida dentro do limite do GC. No exemplo de um multiprocessor single-chip (CMP) com do GC. No exemplo de um multiprocessor single-chip (CMP) com diversos a em-microplaqueta L1s e um L2 compartilhado o limite diversos a em-microplaqueta L1s e um L2 compartilhado o limite natural do GC coincide com o limite da microplaqueta e contem natural do GC coincide com o limite da microplaqueta e contem todos os processadores centrais e caches da em-microplaqueta (6). todos os processadores centrais e caches da em-microplaqueta (6). Um multiprocessor construído de diversos tais CMPs teria uma Um multiprocessor construído de diversos tais CMPs teria uma região do GC por a microplaqueta. Para o concreteness nós região do GC por a microplaqueta. Para o concreteness nós suporemos esta organização, mas outros são possíveis. suporemos esta organização, mas outros são possíveis.

Page 21: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.2. Objetos locais e a barreira 3.2. Objetos locais e a barreira do GCdo GC

Um objeto é elegível para a coleção do em-cache se estiver criado dentro do limite do GC e uma referência a ela Um objeto é elegível para a coleção do em-cache se estiver criado dentro do limite do GC e uma referência a ela nunca sair do limite, isto é, todas as referências ao objeto estão sabidas para remanescer nos caches da em-nunca sair do limite, isto é, todas as referências ao objeto estão sabidas para remanescer nos caches da em-microplaqueta [20]. O liveness de um objeto tão local pode ser determinado sem operações de memória globais microplaqueta [20]. O liveness de um objeto tão local pode ser determinado sem operações de memória globais examinando os índices dos caches; nenhuma linha que executa em um processador central remoto pode examinando os índices dos caches; nenhuma linha que executa em um processador central remoto pode começar a preensão de uma referência sem uma comunicação com a memória compartilhada. o objeto está dito começar a preensão de uma referência sem uma comunicação com a memória compartilhada. o objeto está dito ser non-local se este for já não verdadeiro: uma referência a ela saiu do cache. Os objetos Non-local são ser non-local se este for já não verdadeiro: uma referência a ela saiu do cache. Os objetos Non-local são supostos para estar vivos; todos os objetos non-local nos caches são raizes para a coleção do em-cache. Nós supostos para estar vivos; todos os objetos non-local nos caches são raizes para a coleção do em-cache. Nós seguimos o estado local dos objetos com o um estado extra mordido por a linha do cache. O bocado non-local seguimos o estado local dos objetos com o um estado extra mordido por a linha do cache. O bocado non-local da linha do cache do encabeçamento de um objeto (a linha do cache que contem o offset zero) é ajustado da linha do cache do encabeçamento de um objeto (a linha do cache que contem o offset zero) é ajustado quando uma referência a esse objeto sae do limite do GC.quando uma referência a esse objeto sae do limite do GC.

G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 153 8. Estado extra do GC mantido G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 153 8. Estado extra do GC mantido em um cache do objeto. Para manter esta barreira um a parte de ferragem, que nós chamamos o warden, em um cache do objeto. Para manter esta barreira um a parte de ferragem, que nós chamamos o warden, examina linhas que parte do cache para encontrar as referências. Em um pedido transmit-non-local, o warden examina linhas que parte do cache para encontrar as referências. Em um pedido transmit-non-local, o warden transmite o OIDs referenciado aos caches dentro do limite, rather como um snoop-invalidation; um fósforo do Tag transmite o OIDs referenciado aos caches dentro do limite, rather como um snoop-invalidation; um fósforo do Tag na linha do cache do encabeçamento ajustará o bocado non-local. O warden processa referências de outros na linha do cache do encabeçamento ajustará o bocado non-local. O warden processa referências de outros objetos (linhas do cache do objeto), e do VM estruturas de dados e as pilhas physicallytagged dentro linhas do objetos (linhas do cache do objeto), e do VM estruturas de dados e as pilhas physicallytagged dentro linhas do cache. O warden ajusta também o bocado non-local de todas as linhas entrantes do cache: nós não podemos cache. O warden ajusta também o bocado non-local de todas as linhas entrantes do cache: nós não podemos seguir referências quando um objeto é fora do cache, assim os objetos que saíram do cache são non-local seguir referências quando um objeto é fora do cache, assim os objetos que saíram do cache são non-local conservadora marcado. O jogo de objetos locais corresponde aproximadamente à geração a mais nova de um conservadora marcado. O jogo de objetos locais corresponde aproximadamente à geração a mais nova de um coletor gerenciador do lixo [19]. Um objeto está promovido fora da geração do em-cache quando uma referência coletor gerenciador do lixo [19]. Um objeto está promovido fora da geração do em-cache quando uma referência a ela escapa do limite do GC, e o warden mantém a barreira associada do GC. a ela escapa do limite do GC, e o warden mantém a barreira associada do GC.

Page 22: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 8. Extra GC state maintained in an object cache.

Page 23: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.3. Encontrando referências e 3.3. Encontrando referências e raízesraízes

As referências dentro dos objetos podem ser identificadas usando o conhecimento da disposição As referências dentro dos objetos podem ser identificadas usando o conhecimento da disposição bifurcated do objeto. Referências dentro a memória física (isto é, na pilha ou em outras bifurcated do objeto. Referências dentro a memória física (isto é, na pilha ou em outras estruturas e daqui raizes de dados do VM para a coleção do em-cache) é indistinguivel dos estruturas e daqui raizes de dados do VM para a coleção do em-cache) é indistinguivel dos inteiros, e é encontrada convencionalmente usando mapas da pilha, parsers feitos sob inteiros, e é encontrada convencionalmente usando mapas da pilha, parsers feitos sob encomenda da estrutura de dados, etc., mas tendo o processo do warden estas estruturas de encomenda da estrutura de dados, etc., mas tendo o processo do warden estas estruturas de dados complexas são indesejáveis. Uma solução mais geral envolve a memória etiquetada: um dados complexas são indesejáveis. Uma solução mais geral envolve a memória etiquetada: um bocado extra adicionado a cada palavra no sistema distingue referências dos inteiros. Nós bocado extra adicionado a cada palavra no sistema distingue referências dos inteiros. Nós podemos começar os benefícios da memória etiquetada para a coleção do em-cache mas sem a podemos começar os benefícios da memória etiquetada para a coleção do em-cache mas sem a despesa de 33 - ou uma memória de 65 bocados durante todo o sistema usando bocados despesa de 33 - ou uma memória de 65 bocados durante todo o sistema usando bocados modificados da referência somente dentro dos caches; o custo é um bocado extra por a palavra modificados da referência somente dentro dos caches; o custo é um bocado extra por a palavra do cache. Isto trabalha porque o warden e o coletor do em-cache necessitam somente encontrar do cache. Isto trabalha porque o warden e o coletor do em-cache necessitam somente encontrar referências aos objetos locais; uma linha do cache fora do limite do GC não pode conter referências aos objetos locais; uma linha do cache fora do limite do GC não pode conter nenhumas referências locais por causa da ação do warden. Jogos de instrução da armazen-nenhumas referências locais por causa da ação do warden. Jogos de instrução da armazen-referência o bocado da modific-referência, e espaços livres de uma instrução do armazen-inteiro referência o bocado da modific-referência, e espaços livres de uma instrução do armazen-inteiro ele, se na memória do objeto ou do non-objeto. O warden emite pedidos transmit-non-locais para ele, se na memória do objeto ou do non-objeto. O warden emite pedidos transmit-non-locais para palavras que parte com bocados da modific-referência do jogo. Similarmente, o coletor do palavras que parte com bocados da modific-referência do jogo. Similarmente, o coletor do incache pode encontrar raizes fora dos objetos procurando referências modificadas dentro do incache pode encontrar raizes fora dos objetos procurando referências modificadas dentro do limite do GC. Há alguma redundância em usar os bocados da modific-referência junto com a limite do GC. Há alguma redundância em usar os bocados da modific-referência junto com a disposição bifurcated do objeto, pelo menos para o coletor do em-cache. A finalidade principal disposição bifurcated do objeto, pelo menos para o coletor do em-cache. A finalidade principal dos bocados da modific-referência’ está encontrando referências fora dos objetos, mas servem dos bocados da modific-referência’ está encontrando referências fora dos objetos, mas servem ainda como um optimization dentro dos objetos: reduzem o número das referências processadas ainda como um optimization dentro dos objetos: reduzem o número das referências processadas pelo warden e pelo coletor. Dado os bocados da modific-referência, a disposição bifurcated não pelo warden e pelo coletor. Dado os bocados da modific-referência, a disposição bifurcated não é requerida, mas reduz o número das linhas do cache examinadas pelo coletor e é também útil é requerida, mas reduz o número das linhas do cache examinadas pelo coletor e é também útil para a coleção do velho-espaço. para a coleção do velho-espaço.

Page 24: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.4. O algoritmo da coleção do 3.4. O algoritmo da coleção do em-cacheem-cache

O coletor do lixo do em-cache (ICGC) é um simples marca-varre o coletor do lixo mas com a ferragem introduzida acima dela é ambo o O coletor do lixo do em-cache (ICGC) é um simples marca-varre o coletor do lixo mas com a ferragem introduzida acima dela é ambo o paralelo, usando todos os processadores centrais dentro do limite do GC durante uma coleção, e concurrent, que o mutation pode paralelo, usando todos os processadores centrais dentro do limite do GC durante uma coleção, e concurrent, que o mutation pode continuar em outros processadores centrais fora do limite do GC. O GC usa dois bocados extra por a linha do cache (8), etiquetando os continuar em outros processadores centrais fora do limite do GC. O GC usa dois bocados extra por a linha do cache (8), etiquetando os como a marca mordida e o bocado feito. O bocado da marca da linha do encabeçamento do objeto designa um objeto vivo e o bocado como a marca mordida e o bocado feito. O bocado da marca da linha do encabeçamento do objeto designa um objeto vivo e o bocado feito indica uma linha do objeto que seja feita a varredura. Na terminologia tri-color comum, o bocado da marca implica cinzento ou preto feito indica uma linha do objeto que seja feita a varredura. Na terminologia tri-color comum, o bocado da marca implica cinzento ou preto (ser ou foi feito a varredura), e o bocado feito indica o preto.(ser ou foi feito a varredura), e o bocado feito indica o preto.Cada processador central dentro do limite itera sobre todos os caches confidenciais a ele e uma parcela de qualquer cache Cada processador central dentro do limite itera sobre todos os caches confidenciais a ele e uma parcela de qualquer cache compartilhado. Cada linha do cache que contem uma parte de um objeto é feita a varredura se o encabeçamento desse objeto tiver da compartilhado. Cada linha do cache que contem uma parte de um objeto é feita a varredura se o encabeçamento desse objeto tiver da marca ou dos bocados non-local ajustada. Todas as referências modificadas dentro da parte do objeto transmit-são marcadas então; marca ou dos bocados non-local ajustada. Todas as referências modificadas dentro da parte do objeto transmit-são marcadas então; esta é a mesma operação provocada pelo warden a não ser que aquela ele ajuste o bocado da marca em vez do bocado non-local e é esta é a mesma operação provocada pelo warden a não ser que aquela ele ajuste o bocado da marca em vez do bocado non-local e é exposta ao controle do software. Durante a fase do GC, toda a transmissão que bater unmarked o encabeçamento de lugares de um exposta ao controle do software. Durante a fase do GC, toda a transmissão que bater unmarked o encabeçamento de lugares de um objeto o OID em uma fila, associado com esse cache, porque marcado recentemente (cinza) objeta. O processador central responsável objeto o OID em uma fila, associado com esse cache, porque marcado recentemente (cinza) objeta. O processador central responsável estalam então o OID desta fila da marca e as varreduras que objetam se residirem no cache. A fila é um optimization: a alternativa é estalam então o OID desta fila da marca e as varreduras que objetam se residirem no cache. A fila é um optimization: a alternativa é tornar a varrer (partes de) o cache para encontrar as linhas recentemente marcadas. Nas simulações descritas mais tarde nós supomos tornar a varrer (partes de) o cache para encontrar as linhas recentemente marcadas. Nas simulações descritas mais tarde nós supomos um tamanho ilimitado da fila; uma discussão mais detalhada do excesso da fila é além do espaço deste papel. As raizes para a coleção um tamanho ilimitado da fila; uma discussão mais detalhada do excesso da fila é além do espaço deste papel. As raizes para a coleção do em-cache são objetos non-local, objetam os fragmentos (partes dos objetos cujo o encabeçamento é fora do limite do GC), e as do em-cache são objetos non-local, objetam os fragmentos (partes dos objetos cujo o encabeçamento é fora do limite do GC), e as referências modificadas contidas em linhas físico-etiquetadas do cache. Com a referência modificada mordida nós não necessitamos referências modificadas contidas em linhas físico-etiquetadas do cache. Com a referência modificada mordida nós não necessitamos usar mapas da pilha ou outras técnicas mais complexas para encontrar referências na pilha ou posições fora do heap. Uma única usar mapas da pilha ou outras técnicas mais complexas para encontrar referências na pilha ou posições fora do heap. Uma única passagem através do cache encontra todas as raizes; o reachability recursiva é segurado através do mecanismo da transmissão. Nós passagem através do cache encontra todas as raizes; o reachability recursiva é segurado através do mecanismo da transmissão. Nós expomos os índices do cache para a inspeção pelo coletor: um mecanismo é fornecido para iterar sobre os jogos do cache que retornam expomos os índices do cache para a inspeção pelo coletor: um mecanismo é fornecido para iterar sobre os jogos do cache que retornam o Tag e o estado (non-local, marcado, etc.). Baseado neste estado o GC emite cargas ordinárias e armazena-as para ler os índices o Tag e o estado (non-local, marcado, etc.). Baseado neste estado o GC emite cargas ordinárias e armazena-as para ler os índices daquelas linhas do cache onde necessário. A fase da marca termina quando todos os objetos non-local e marcados foram feitos a daquelas linhas do cache onde necessário. A fase da marca termina quando todos os objetos non-local e marcados foram feitos a varredura. Nós podemos então recuperar o OIDs e cache linhas de todos os objetos que não tiverem tampouco destes bocados varredura. Nós podemos então recuperar o OIDs e cache linhas de todos os objetos que não tiverem tampouco destes bocados ajustados. Nós recuperamos as linhas do cache simplesmente invalidating seus índices durante uma outra passagem através do cache. ajustados. Nós recuperamos as linhas do cache simplesmente invalidating seus índices durante uma outra passagem através do cache. O não validação impede aqueles índices, que são já não válidos, da escrita para trás à memória principal, livra o espaço para O não validação impede aqueles índices, que são já não válidos, da escrita para trás à memória principal, livra o espaço para alocamento novos do em-cache, e conserva o tráfego de barra-ônibus. Este algoritmo está paralelo; cada processador central dentro do alocamento novos do em-cache, e conserva o tráfego de barra-ônibus. Este algoritmo está paralelo; cada processador central dentro do limite pode ser objetos da exploração simultaneamente. Linhas do GC comunicar-se através das filas da marca descritas mais cedo. limite pode ser objetos da exploração simultaneamente. Linhas do GC comunicar-se através das filas da marca descritas mais cedo. Uma fase final da sincronização assegura-se de que todos os processos estejam prontos para se mover na fase da varredura. O Uma fase final da sincronização assegura-se de que todos os processos estejam prontos para se mover na fase da varredura. O algoritmo é também concurrent que o mutation fora do limite do GC pode continuar sem explícito sincronização com as linhas do GC. As algoritmo é também concurrent que o mutation fora do limite do GC pode continuar sem explícito sincronização com as linhas do GC. As linhas que funcionam fora do limite do GC podem continuar a usar objetos e mesmo pedir e obter objetos dentro do limite do GC durante linhas que funcionam fora do limite do GC podem continuar a usar objetos e mesmo pedir e obter objetos dentro do limite do GC durante uma coleção. O warden segura todos os objetos que deixam o limite do GC durante uma coleção justo como durante a operação normal, uma coleção. O warden segura todos os objetos que deixam o limite do GC durante uma coleção justo como durante a operação normal, assim assegurando isso a referência escapando-se é esclarecida. Adicionalmente, as linhas do mutator que foram suspendidas dentro assim assegurando isso a referência escapando-se é esclarecida. Adicionalmente, as linhas do mutator que foram suspendidas dentro do limite do GC podem rescheduled a outros processadores centrais. Como cada linha alcança objetos e pilhas que depopulate o limite do limite do GC podem rescheduled a outros processadores centrais. Como cada linha alcança objetos e pilhas que depopulate o limite do GC que está sendo coletado, mas toda a sair dos objetos será objetos viv-inoperantes será saída atrás para a coleção. do GC que está sendo coletado, mas toda a sair dos objetos será objetos viv-inoperantes será saída atrás para a coleção.

Page 25: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.5. Limitações do GC do em-3.5. Limitações do GC do em-cachecache

o GC do Em-cache tem algumas limitações não o GC do Em-cache tem algumas limitações não sofridas por coletores convencionais. O mais sofridas por coletores convencionais. O mais fundamental é que o tamanho da região fundamental é que o tamanho da região collectable está reparado na ferragem. Uma collectable está reparado na ferragem. Uma geração nova do software pode ser aumentada geração nova do software pode ser aumentada no tamanho para caber as propriedades no tamanho para caber as propriedades específicas da aplicação e para melhorar a específicas da aplicação e para melhorar a eficiência do GC. É sempre possível escolher eficiência do GC. É sempre possível escolher como freqüentemente funcionar o GC do em-como freqüentemente funcionar o GC do em-cache, ou o incapacitar mesmo completamente cache, ou o incapacitar mesmo completamente sem desempenho do mutator penalizing, mas o sem desempenho do mutator penalizing, mas o custo da execução de ferragem têm sido custo da execução de ferragem têm sido pagadas já.pagadas já.

Page 26: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

3.6. Sumário3.6. Sumário

a coleção do lixo do Em-cache opera objetos a coleção do lixo do Em-cache opera objetos sobre novo-alocados com nenhuma falta de sobre novo-alocados com nenhuma falta de cache e nenhumas despesas gerais da barreira cache e nenhumas despesas gerais da barreira do software. Embora o mutation seja do software. Embora o mutation seja suspendido em alguma divisória da máquina a suspendido em alguma divisória da máquina a coleção é simultânea com outras divisórias, e a coleção é simultânea com outras divisórias, e a coleção prossegui na paralela em todos os coleção prossegui na paralela em todos os processadores centrais dentro da divisória. A processadores centrais dentro da divisória. A tabela 1 sumaria a ferragem e as extensões de tabela 1 sumaria a ferragem e as extensões de ISA introduzidas.ISA introduzidas.

Page 27: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

4. Trabalho relacionado4. Trabalho relacionado O projeto do COGUMELO introduziu os caches do objeto [12] e o GC do em-cache [20], originando algumas das O projeto do COGUMELO introduziu os caches do objeto [12] e o GC do em-cache [20], originando algumas das idéias descreveu aqui. Entretanto, o COGUMELO era estritamente um projeto do único-processador, e o idéias descreveu aqui. Entretanto, o COGUMELO era estritamente um projeto do único-processador, e o enchimento, os evictions e a barreira do cache processando (similar a nossos warden e tradutor) foram enchimento, os evictions e a barreira do cache processando (similar a nossos warden e tradutor) foram controlados no software por alimentadores da armadilha com nenhuma simultaneidaderequerido. A memória foi controlados no software por alimentadores da armadilha com nenhuma simultaneidaderequerido. A memória foi etiquetada throughout, como um sistema puro do Smalltalk, e o objeto misturado/caches convencionais não era etiquetada throughout, como um sistema puro do Smalltalk, e o objeto misturado/caches convencionais não era necessária. Os caches do objeto com tradução atrasada são relacionados próxima aos caches virtual-dirigidos, necessária. Os caches do objeto com tradução atrasada são relacionados próxima aos caches virtual-dirigidos, por exemplo o Berkeley DENTE RETO [21]. O exemplo do objeto é realmente mais fácil; nós não temos por exemplo o Berkeley DENTE RETO [21]. O exemplo do objeto é realmente mais fácil; nós não temos problemas com aliasing do endereço nem não invertemos (físico a virtual) traduções. o alocamento do Em-cache problemas com aliasing do endereço nem não invertemos (físico a virtual) traduções. o alocamento do Em-cache e etiquetar do lixo foram propostos dentro [18]; os autores discutiram que o lixo deve ser detectado whilst ainda e etiquetar do lixo foram propostos dentro [18]; os autores discutiram que o lixo deve ser detectado whilst ainda no cache, mas não acoplou o GC com os índices do cache como nós. Os vários esquemas do GC da ferragem no cache, mas não acoplou o GC com os índices do cache como nós. Os vários esquemas do GC da ferragem foram propostos [3.4.22.23]; nosso esquema fornece o auxílio da ferragem para a coletor software-baseado. foram propostos [3.4.22.23]; nosso esquema fornece o auxílio da ferragem para a coletor software-baseado. Nosso sistema compartilha do motivation com as máquinas virtuais co-projetadas de [24] mas a memória e o GC Nosso sistema compartilha do motivation com as máquinas virtuais co-projetadas de [24] mas a memória e o GC específicos a organização é muito diferente. Os vários estudos da interação do GC e de caches convencionais específicos a organização é muito diferente. Os vários estudos da interação do GC e de caches convencionais foram publicados [25-27]. Nenhum relacionou-se a parte traseira da atividade do ferragem-nível à atividade high-foram publicados [25-27]. Nenhum relacionou-se a parte traseira da atividade do ferragem-nível à atividade high-level como nós fazemos na seção 6. Nossas operações da inspeção e da manipulação do cache são similares level como nós fazemos na seção 6. Nossas operações da inspeção e da manipulação do cache são similares no espírito àquelas descritas dentro [28]. Os sistemas de Azul desenvolveram uma arquitetura CMP-baseada no espírito àquelas descritas dentro [28]. Os sistemas de Azul desenvolveram uma arquitetura CMP-baseada para Java que inclui a sustentação da ferragem para barreiras do GC sobre uma hierarquia convencional da para Java que inclui a sustentação da ferragem para barreiras do GC sobre uma hierarquia convencional da memória [29]. Seu coletor requer todas as linhas do mutator fazer exame de diversas pausas curtas durante memória [29]. Seu coletor requer todas as linhas do mutator fazer exame de diversas pausas curtas durante cada ciclo da coleção, embora não sejam todas suspendidas simultaneamente; o realocação está segurado cada ciclo da coleção, embora não sejam todas suspendidas simultaneamente; o realocação está segurado pageprotecting parcelas do heap, fazendo com que os mutators prendam e reparem acima das referências se pageprotecting parcelas do heap, fazendo com que os mutators prendam e reparem acima das referências se tentarem aceder. No contraste, nosso o GC do em-cache suspende o mutation dentro de um limite particular do tentarem aceder. No contraste, nosso o GC do em-cache suspende o mutation dentro de um limite particular do GC para a duração da coleção, com nenhum impacto em mutators funcionar em outra parte no sistema, e em GC para a duração da coleção, com nenhum impacto em mutators funcionar em outra parte no sistema, e em realocaçõa dos objetos pode prosseguir completamente simultaneamente em a base do por-objeto. Nosso realocaçõa dos objetos pode prosseguir completamente simultaneamente em a base do por-objeto. Nosso processar da barreira ocorre completamente na ferragem, quando o algoritmo de Pauseless de Azul usar as processar da barreira ocorre completamente na ferragem, quando o algoritmo de Pauseless de Azul usar as instruções feitas sob encomenda compiladas no córrego da instrução para testar a barreira com um alimentador instruções feitas sob encomenda compiladas no córrego da instrução para testar a barreira com um alimentador da armadilha de software para executar processar se necessário.da armadilha de software para executar processar se necessário.

Page 28: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

4.1. Trabalho Unrelated4.1. Trabalho Unrelated

A proteção em Java é controlada completamente no A proteção em Java é controlada completamente no nível virtual da máquina. As referências em nosso nível virtual da máquina. As referências em nosso sistema são desprotegidas pelo ISA, e o processador sistema são desprotegidas pelo ISA, e o processador central não tem nenhum conhecimento especial de central não tem nenhum conhecimento especial de referências do objeto à exceção das instruções da referências do objeto à exceção das instruções da armazen-referência. Nós não requeremos a proteção da armazen-referência. Nós não requeremos a proteção da ferragem ou compartilhar controlado baseada no ferragem ou compartilhar controlado baseada no controle de acesso [9] ou nas potencialidades [8.30]. O controle de acesso [9] ou nas potencialidades [8.30]. O núcleo do processador central é mudado mínima; não núcleo do processador central é mudado mínima; não processa objetos, disposição do objeto ou processa objetos, disposição do objeto ou comportamento objeto-relacionado à exceção das comportamento objeto-relacionado à exceção das instruções do armazen-à-objeto-espaço do loadand. Ao instruções do armazen-à-objeto-espaço do loadand. Ao contrário de Intel 432 [7], nós não suportamos um contrário de Intel 432 [7], nós não suportamos um modelo cheio do objeto do língua-nível na ferragem.modelo cheio do objeto do língua-nível na ferragem.

Page 29: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

5. Metodologia da simulação 5. Metodologia da simulação metodologiametodologia

Na seção seguinte nós apresentamos uma avaliação preliminar da Na seção seguinte nós apresentamos uma avaliação preliminar da arquitetura proposta. Para avaliar a arquitetura nós construímos arquitetura proposta. Para avaliar a arquitetura nós construímos uma simulação dirigida pelos traços obtidos de um JVM modificado. uma simulação dirigida pelos traços obtidos de um JVM modificado. Nossa arquitetura proposta incorpora instruções novas (por Nossa arquitetura proposta incorpora instruções novas (por exemplo, carrega e lojas para objetar o espaço) e daqui nós não exemplo, carrega e lojas para objetar o espaço) e daqui nós não podemos fazer exame de traços do instrução-nível de um JVM podemos fazer exame de traços do instrução-nível de um JVM existente. Seria possível modificar um JVM existente para emitir-se existente. Seria possível modificar um JVM existente para emitir-se 156 G. Wright e outros. /Ciência do computador que programa 62 156 G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 estas instruções, mas então nós também (2006) 145-163 estas instruções, mas então nós também necessitaríamos um simulador combinando do instrução-nível e necessitaríamos um simulador combinando do instrução-nível e uma execução do algoritmo novo do GC dentro do JVM. Para uma uma execução do algoritmo novo do GC dentro do JVM. Para uma avaliação preliminar nós decidimo-nos adotar uma estratégia avaliação preliminar nós decidimo-nos adotar uma estratégia diferente. Melhor que construindo uma execução completa do GC diferente. Melhor que construindo uma execução completa do GC nós escolhemos construir uma simulação das estruturas relevantes nós escolhemos construir uma simulação das estruturas relevantes da ferragem e do algoritmo proposto do GC. Isto permite-nos ao da ferragem e do algoritmo proposto do GC. Isto permite-nos ao finesse muitos dos detalhes da execução e dá-o uma estrutura finesse muitos dos detalhes da execução e dá-o uma estrutura muito mais malleable para a experimentação.muito mais malleable para a experimentação.

Page 30: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

5.1. Estrutura malleable da 5.1. Estrutura malleable da geração e da simulação do traço geração e da simulação do traço

para a experimentaçãopara a experimentação..O simulador é dirigido pelos traços das aplicações de Java que funcionam em um JVM modificado, chamados o VM seguindo (TVM) [31]. O TVM O simulador é dirigido pelos traços das aplicações de Java que funcionam em um JVM modificado, chamados o VM seguindo (TVM) [31]. O TVM emite-se traços do objeto-nível do comportamento da aplicação, including todas as criações do objeto, os acessos aos objetos, variáveis de estática e emite-se traços do objeto-nível do comportamento da aplicação, including todas as criações do objeto, os acessos aos objetos, variáveis de estática e pilhas das linhas' (como definido na especificação de JVM [32]), o carregamento e definição das classes, etc. O traço é uma descrição completa da pilhas das linhas' (como definido na especificação de JVM [32]), o carregamento e definição das classes, etc. O traço é uma descrição completa da execução do programa nos termos de seus efeitos nos objetos, pilhas e dados de estática, mas é na maior parte independem da execução real dentro execução do programa nos termos de seus efeitos nos objetos, pilhas e dados de estática, mas é na maior parte independem da execução real dentro do TVM. Por exemplo, cada objeto nomeado no traço é identificado por um ID original unrelated ao endereço de memória do objeto dentro do TVM. do TVM. Por exemplo, cada objeto nomeado no traço é identificado por um ID original unrelated ao endereço de memória do objeto dentro do TVM. Isto permite que nós simulem estratégias diversas da gerência da memória. Com esta aproximação à simulação nós podemos atribuir eventos Isto permite que nós simulem estratégias diversas da gerência da memória. Com esta aproximação à simulação nós podemos atribuir eventos nivelados da ferragem (tais como a falta de cache) a suas causas do highlevel (comportamento da aplicação, atividade do GC, etc.) com facilidade nivelados da ferragem (tais como a falta de cache) a suas causas do highlevel (comportamento da aplicação, atividade do GC, etc.) com facilidade relativa. As medidas do ferragem-nível sumariadas na seção seguinte são quebradas para fora pela atividade high-level; nós acreditamos que este é a relativa. As medidas do ferragem-nível sumariadas na seção seguinte são quebradas para fora pela atividade high-level; nós acreditamos que este é a primeira vez que este foi feito. Além a um simulador de nossos arquitetura e JVM propostos, nós construímos também uma simulação da referência de primeira vez que este foi feito. Além a um simulador de nossos arquitetura e JVM propostos, nós construímos também uma simulação da referência de uma arquitetura convencional com um heap gerencia e um limpador para a geração nova, como usada nos muitos a produção JVMs. Esta simulação uma arquitetura convencional com um heap gerencia e um limpador para a geração nova, como usada nos muitos a produção JVMs. Esta simulação reside na mesma estrutura da simulação, e é dirigida pelos mesmos traços, permitindo uma comparação direta dos dois sistemas. Nenhum sistema reside na mesma estrutura da simulação, e é dirigida pelos mesmos traços, permitindo uma comparação direta dos dois sistemas. Nenhum sistema inclui um coletor ou um compactor do velho-espaço; aqui nós estamos interessados no comportamento do alocamento e da geração a mais nova do inclui um coletor ou um compactor do velho-espaço; aqui nós estamos interessados no comportamento do alocamento e da geração a mais nova do GC. Um inconveniente desta estrutura da simulação é que nós temos a informação insuficiente para derivar o tempo de execução estimativas para GC. Um inconveniente desta estrutura da simulação é que nós temos a informação insuficiente para derivar o tempo de execução estimativas para uma execução plausivel. Nosso simulador modela somente a atividade do sistema da memória induzida pela máquina virtual em dados manipulando; uma execução plausivel. Nosso simulador modela somente a atividade do sistema da memória induzida pela máquina virtual em dados manipulando; não tem nenhuma noção das instruções, encanamentos ou latências e daqui nós podemos somente comparar efeitos do sistema da memória (tais não tem nenhuma noção das instruções, encanamentos ou latências e daqui nós podemos somente comparar efeitos do sistema da memória (tais como a falta de cache). Entretanto, a atividade do sistema da memória é um componente principal do tempo gastado executando a maioria de como a falta de cache). Entretanto, a atividade do sistema da memória é um componente principal do tempo gastado executando a maioria de aplicações de Java, e, desde que nosso trabalho é focalizado nesta área sozinho, nós acreditamos que é razoável limitar o estudo a esta área para aplicações de Java, e, desde que nosso trabalho é focalizado nesta área sozinho, nós acreditamos que é razoável limitar o estudo a esta área para agora. Na seção 8 nós descreveremos algumas etapas seguintes possíveis. Uma conseqüência de nossa estrutura simplificada da simulação é que agora. Na seção 8 nós descreveremos algumas etapas seguintes possíveis. Uma conseqüência de nossa estrutura simplificada da simulação é que não modela uma variedade dos efeitos que são importantes em determinar o desempenho real-world mas que nós acreditamos ser neutro em nossa não modela uma variedade dos efeitos que são importantes em determinar o desempenho real-world mas que nós acreditamos ser neutro em nossa comparação (ou, se qualquer coisa, penalize nossa arquitetura proposta): (1) Os traços de TVM descrevem a execução nos termos da interpretação comparação (ou, se qualquer coisa, penalize nossa arquitetura proposta): (1) Os traços de TVM descrevem a execução nos termos da interpretação simples do bytecode de Java: por exemplo, “adicionar” resultados do bytecode em dois PNF e um impulso à pilha de uma linha, visto que uma simples do bytecode de Java: por exemplo, “adicionar” resultados do bytecode em dois PNF e um impulso à pilha de uma linha, visto que uma produção JVM usaria um compilador dinâmico otimiza esta em uma operação register-based. Daqui há muitas mais operações de memória às pilhas produção JVM usaria um compilador dinâmico otimiza esta em uma operação register-based. Daqui há muitas mais operações de memória às pilhas em nossa simulação do que estar atual em um sistema de produção. Entretanto, estas operações estão as mesmas em ambos os modelos simulados; em nossa simulação do que estar atual em um sistema de produção. Entretanto, estas operações estão as mesmas em ambos os modelos simulados; nós subtraímos para fora empilhamos a atividade de modo que a outra atividade pudesse ser comparada sem polluted pelos dados da pilha. (2) Nosso nós subtraímos para fora empilhamos a atividade de modo que a outra atividade pudesse ser comparada sem polluted pelos dados da pilha. (2) Nosso simulador não modela nenhuma atividade do instrução-lado (Eu-caches, ou atividade do sistema da memória devido a buscar instruções) ou a simulador não modela nenhuma atividade do instrução-lado (Eu-caches, ou atividade do sistema da memória devido a buscar instruções) ou a compilação just-in-time. As seqüências de instrução no mutator são mais curtas em nossa arquitetura proposta devido ao eliminação de uma barreira compilação just-in-time. As seqüências de instrução no mutator são mais curtas em nossa arquitetura proposta devido ao eliminação de uma barreira do GC do software, assim favores deste efeito o sistema da referência. A única peça da máquina virtual que seria significativamente diferente é o do GC do software, assim favores deste efeito o sistema da referência. A única peça da máquina virtual que seria significativamente diferente é o código do GC, que tende a ser rather pequeno e tem o locality bom; nossas modificações propostas devem fazê-la cache-mais amigável. (3) Nosso código do GC, que tende a ser rather pequeno e tem o locality bom; nossas modificações propostas devem fazê-la cache-mais amigável. (3) Nosso simulador não modela a atividade do sistema da memória fora do heap, das pilhas e dos dados de estática, isto é, às estruturas de dados de JVM ou simulador não modela a atividade do sistema da memória fora do heap, das pilhas e dos dados de estática, isto é, às estruturas de dados de JVM ou ao código nativo. Nossas técnicas do GC reduzirão o tráfego da memória às estruturas de dados de JVM (por exemplo, não há nenhuma estrutura de ao código nativo. Nossas técnicas do GC reduzirão o tráfego da memória às estruturas de dados de JVM (por exemplo, não há nenhuma estrutura de dados requerida para encontrar referências em pilhas ou dentro dos objetos). Nossas modificações são neutras com respeito ao código nativo. Nós dados requerida para encontrar referências em pilhas ou dentro dos objetos). Nossas modificações são neutras com respeito ao código nativo. Nós modelamos o alocamento de OIDs, no sistema do objeto, em algum detalhe. A gerência de OID é fornecida construindo uma lista ligada de objetos modelamos o alocamento de OIDs, no sistema do objeto, em algum detalhe. A gerência de OID é fornecida construindo uma lista ligada de objetos disponíveis usando alguns dos objetos livres eles mesmos. Para embalar um OIDs mais disponível dentro do cache, nós utilizamos o espaço dentro disponíveis usando alguns dos objetos livres eles mesmos. Para embalar um OIDs mais disponível dentro do cache, nós utilizamos o espaço dentro dos objetos da lista livre para armazenar OIDs livre adicional. Assim quando um OID novo é necessitado a cabeça da lista livre é perguntada para um dos objetos da lista livre para armazenar OIDs livre adicional. Assim quando um OID novo é necessitado a cabeça da lista livre é perguntada para um valor livre de OID; se nenhum estiver atual então a cabeça própria está estalado dolista e usado. Os objetos que contêm a lista livre podem valor livre de OID; se nenhum estiver atual então a cabeça própria está estalado dolista e usado. Os objetos que contêm a lista livre podem ocasionalmente evicted do cache, assim que é possível que o alocamento pode causar uma falta de cache. Quando os objetos são coletados o ocasionalmente evicted do cache, assim que é possível que o alocamento pode causar uma falta de cache. Quando os objetos são coletados o primeiro objeto coletado está usado como um elemento novo da lista livre, com o OIDs livre subseqüente colocado dentro deste objeto. Quando esse primeiro objeto coletado está usado como um elemento novo da lista livre, com o OIDs livre subseqüente colocado dentro deste objeto. Quando esse objeto se enche o objeto livre seguinte está usado como um elemento da lista livre, e assim por diante. Porque estes objetos eram recentemente objeto se enche o objeto livre seguinte está usado como um elemento da lista livre, e assim por diante. Porque estes objetos eram recentemente residente do cache para a coleção, o processo de construir a lista livre não encontra nenhuma falta de cache. As operações de memória de nossas residente do cache para a coleção, o processo de construir a lista livre não encontra nenhuma falta de cache. As operações de memória de nossas características adicionais da ferragem (o warden e o tradutor) são incluídas no simulações. Nós podemos antecipar algum aumento na latência ao características adicionais da ferragem (o warden e o tradutor) são incluídas no simulações. Nós podemos antecipar algum aumento na latência ao processar a falta de cache, mas como indicado acima nós não tentamos reduzir nossos dados às estimativas do tempo.processar a falta de cache, mas como indicado acima nós não tentamos reduzir nossos dados às estimativas do tempo.

Page 31: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

5.2. Os Workloads usaram-se5.2. Os Workloads usaram-se

Para dirigir nosso simulador nós fizemos exame de traços de TVM Para dirigir nosso simulador nós fizemos exame de traços de TVM dos seguintes programas: (1) O suite das especs. JVM98, usando dos seguintes programas: (1) O suite das especs. JVM98, usando os funcionamentos do tamanho 100 [33]. (2) Especs. JBB2000 [34], os funcionamentos do tamanho 100 [33]. (2) Especs. JBB2000 [34], usando 4 armazéns, uma tabela do artigo do half-size (10.000 usando 4 armazéns, uma tabela do artigo do half-size (10.000 entradas), e um intervalo prolongado da medida neutralizar o entradas), e um intervalo prolongado da medida neutralizar o slowdown causado seguindo. (3) Uma aplicação multi-enfiada do slowdown causado seguindo. (3) Uma aplicação multi-enfiada do macio-switching das telecomunicações (telco app do `'), dirigida por macio-switching das telecomunicações (telco app do `'), dirigida por um workload sintético. A tabela 2 contem medidas do um workload sintético. A tabela 2 contem medidas do comportamento do alocamento de cada traço: o número de bytes e comportamento do alocamento de cada traço: o número de bytes e objetos alocados no heap (para disposições e non-pôr objetos) e objetos alocados no heap (para disposições e non-pôr objetos) e áreas de estática, os tamanhos médios do objeto e da disposição, e áreas de estática, os tamanhos médios do objeto e da disposição, e o número das classes carregou (classes do objeto e da disposição). o número das classes carregou (classes do objeto e da disposição). Os tamanhos do objeto são uniformemente pequenos; os tamanhos Os tamanhos do objeto são uniformemente pequenos; os tamanhos da disposição variam mais. A tabela 3 alista o comprimento de cada da disposição variam mais. A tabela 3 alista o comprimento de cada traço (medido pelo número de eventos de TVM), e o número de traço (medido pelo número de eventos de TVM), e o número de eventos da carga e da loja para objetos, disposições, pilhas e áreas eventos da carga e da loja para objetos, disposições, pilhas e áreas de estática. 158de estática. 158

Page 32: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

5.3. Parâmetros da simulação5.3. Parâmetros da simulação Nossa máquina simulada (ilustrada em 6) consiste em dois processadores centrais idênticos Nossa máquina simulada (ilustrada em 6) consiste em dois processadores centrais idênticos cada um com caches de 64 KB L1 (8- maneira associativa com 64 linhas do cache do byte). cada um com caches de 64 KB L1 (8- maneira associativa com 64 linhas do cache do byte). Estes processadores centrais compartilham 8 de um cache do MB L2 (também maneira 8 Estes processadores centrais compartilham 8 de um cache do MB L2 (também maneira 8 associativa). A política da recolocação do cache usada é resultados atuais de pseudo-LRU.We associativa). A política da recolocação do cache usada é resultados atuais de pseudo-LRU.We somente desta configuração como nós a acreditamos representante de execuções possíveis somente desta configuração como nós a acreditamos representante de execuções possíveis diversos anos para fora. O coletor do lixo da referência usou dois 16 semi-espaços do MB com diversos anos para fora. O coletor do lixo da referência usou dois 16 semi-espaços do MB com um ilimitado tenured a geração. Os objetos eram tenured depois que sobreviveram três ciclos da um ilimitado tenured a geração. Os objetos eram tenured depois que sobreviveram três ciclos da coleção. Os semi-espaços menores (4 MB e MB 8) foram tentados também; nós relatamos coleção. Os semi-espaços menores (4 MB e MB 8) foram tentados também; nós relatamos resultados somente para MB 16 como executou o mais melhor e somos também um ajuste típico resultados somente para MB 16 como executou o mais melhor e somos também um ajuste típico para a produção JVMs. Os semi-espaços maiores conduzem para freqüentar mais menos para a produção JVMs. Os semi-espaços maiores conduzem para freqüentar mais menos coleções do lixo, assim potencial recuperar mais lixo para menos trabalho, mas conduz a uma coleções do lixo, assim potencial recuperar mais lixo para menos trabalho, mas conduz a uma pegada total mais grande e a umas pausas individuais mais longas do GC. Todas as linhas pegada total mais grande e a umas pausas individuais mais longas do GC. Todas as linhas alocam no mesmo semi-espaço, mas para impedir compartilhar falso no alocamento que alocam no mesmo semi-espaço, mas para impedir compartilhar falso no alocamento que reivindicam os blocos (64 KB) grandes que são subdivididos então em objetos. O cache do reivindicam os blocos (64 KB) grandes que são subdivididos então em objetos. O cache do objeto zero-e-aloca a operação impede a falta de cache ao alocar objetos. Como proposto objeto zero-e-aloca a operação impede a falta de cache ao alocar objetos. Como proposto originalmente [18], tal operação poderia também ser usada em um sistema convencional tal originalmente [18], tal operação poderia também ser usada em um sistema convencional tal como nossa referência. Nós isolamos seu efeito também simulando nosso usar-se do sistema da como nossa referência. Nós isolamos seu efeito também simulando nosso usar-se do sistema da referência zero-e-alocamos durante o alocamento do objeto e o GC (objetos de copi no semi-referência zero-e-alocamos durante o alocamento do objeto e o GC (objetos de copi no semi-espaço novo). O ICGC é iniciado mais freqüentemente do que o coletor da referência, de modo espaço novo). O ICGC é iniciado mais freqüentemente do que o coletor da referência, de modo que os alocamento não encham o cache e não comecem a evict objetos potencial reclaimable. que os alocamento não encham o cache e não comecem a evict objetos potencial reclaimable. Nós escolhemos mandar o ICGC coletar cada MB 4 do alocamento, como aquele era infrequënte Nós escolhemos mandar o ICGC coletar cada MB 4 do alocamento, como aquele era infrequënte bastante permitir que o lixo resulte, mas freqüentemente bastante aquele os objetos do lixo não bastante permitir que o lixo resulte, mas freqüentemente bastante aquele os objetos do lixo não era forçado do cache por alocamento novos. No general, nós encontramos que, para caches de era forçado do cache por alocamento novos. No general, nós encontramos que, para caches de MB 8 ou de mais, trabalhou bem para coletar depois que os alocamento novos usaram MB 8 ou de mais, trabalhou bem para coletar depois que os alocamento novos usaram aproximadamente a metade do cache. Porque os tamanhos do cache aumentam os aproximadamente a metade do cache. Porque os tamanhos do cache aumentam os funcionamentos de ICGC menos freqüentemente e menos lixo ilude-o.funcionamentos de ICGC menos freqüentemente e menos lixo ilude-o.

Page 33: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6. Resultados preliminares6. Resultados preliminares Nós fizemos exame de traços dos workloads e simulamos o sistema da referência (sabido daqui por diante como Nós fizemos exame de traços dos workloads e simulamos o sistema da referência (sabido daqui por diante como o `convencional o sistema'), com e zero-e-aloca without, e o sistema do cache do objeto. Para cada simulação o `convencional o sistema'), com e zero-e-aloca without, e o sistema do cache do objeto. Para cada simulação nós contamos batidas de cache e faltamo-las, lemo-las e escrevemo-las, tráfego da coerência, e traduções. nós contamos batidas de cache e faltamo-las, lemo-las e escrevemo-las, tráfego da coerência, e traduções. Cada evento foi atribuído ao um ou outro o coletor, a atividade da pilha dos mutator (que nós não relatamos, Cada evento foi atribuído ao um ou outro o coletor, a atividade da pilha dos mutator (que nós não relatamos, porque as razões enumerated mais cedo), a atividade do heap dos mutator, e, para o cache do objeto, as porque as razões enumerated mais cedo), a atividade do heap dos mutator, e, para o cache do objeto, as operações extra envolvidas em controlar a tabela do objeto (gerência do `OID'). 9 mostras os resultados em cada operações extra envolvidas em controlar a tabela do objeto (gerência do `OID'). 9 mostras os resultados em cada nível da hierarquia da memória, normalizado pelo número dos eventos em cada traço (analogous ao tempo). nível da hierarquia da memória, normalizado pelo número dos eventos em cada traço (analogous ao tempo). Para cada workload a barra esquerda é para o sistema convencional (C), o meio para o sistema convencional Para cada workload a barra esquerda é para o sistema convencional (C), o meio para o sistema convencional com zero-e-aloca (Z), e a direita para o sistema do objeto (O). Cada barra decomposed mais mais no trabalho com zero-e-aloca (Z), e a direita para o sistema do objeto (O). Cada barra decomposed mais mais no trabalho executado durante o mutation e o GC, e no sistema do objeto um componente adicional é devido à gerência de executado durante o mutation e o GC, e no sistema do objeto um componente adicional é devido à gerência de OID. Nós incluímos as operações do limite do GC (GCB), que representam zero-e-alocam, inspeção do cache e OID. Nós incluímos as operações do limite do GC (GCB), que representam zero-e-alocam, inspeção do cache e objeto operações da gerência, na carta com as batidas L2: nosso GCB inclui o L2, assim que nós esperamos objeto operações da gerência, na carta com as batidas L2: nosso GCB inclui o L2, assim que nós esperamos operações de GCB ter custo mais ou menos idêntico como as batidas L2. No exemplo de zero-e-alocar isto pode operações de GCB ter custo mais ou menos idêntico como as batidas L2. No exemplo de zero-e-alocar isto pode ser impropriamente generoso, dependendo do execução. Os dados crus para cada operação estão disponíveis ser impropriamente generoso, dependendo do execução. Os dados crus para cada operação estão disponíveis em nosso relatório técnico [35]. Examinando os gráficos do alto ao fundo, nós vemos que o sistema do objeto em nosso relatório técnico [35]. Examinando os gráficos do alto ao fundo, nós vemos que o sistema do objeto tem tipicamente ligeiramente poucas batidas L1 no mutator. O número de acessos do mutator é mais baixo tem tipicamente ligeiramente poucas batidas L1 no mutator. O número de acessos do mutator é mais baixo porque zero-e-alocar substitui escreve no alocamento (C indo visto a Z), e também porque a tabela de cartão porque zero-e-alocar substitui escreve no alocamento (C indo visto a Z), e também porque a tabela de cartão escreve é eliminada; a relação da batida L1 é ligeiramente mais má em O do que Z por causa da embalagem escreve é eliminada; a relação da batida L1 é ligeiramente mais má em O do que Z por causa da embalagem mais menos densa dos objetos (daqui o número ligeiramente mais grande de batidas do mutator L2 e, em alguns mais menos densa dos objetos (daqui o número ligeiramente mais grande de batidas do mutator L2 e, em alguns casos, em falta no sistema do objeto). O meio geométrico das relações das batidas L1 no sistema do objeto às casos, em falta no sistema do objeto). O meio geométrico das relações das batidas L1 no sistema do objeto às batidas L1 no sistema convencional é 0.98. O ICGC negocía eficazmente mais operações de L2 ou de GCB para batidas L1 no sistema convencional é 0.98. O ICGC negocía eficazmente mais operações de L2 ou de GCB para um número reduzido da falta L2 (à exceção de DB 201 compressa e 209). O meio geométrico das relações de um número reduzido da falta L2 (à exceção de DB 201 compressa e 209). O meio geométrico das relações de batidas do objeto L2 e de operações de GCB às batidas L2 convencionais é 7.5, quando para a falta L2 for 0.24. batidas do objeto L2 e de operações de GCB às batidas L2 convencionais é 7.5, quando para a falta L2 for 0.24. As tomadas do coletor do em-cache essencialmente nenhuma falta de cache L2, conduzindo a uma redução As tomadas do coletor do em-cache essencialmente nenhuma falta de cache L2, conduzindo a uma redução dramática na falta L2 total nos programas onde eram significativa (213 javac, JBB). Zero-andallocate ajuda dramática na falta L2 total nos programas onde eram significativa (213 javac, JBB). Zero-andallocate ajuda também ao sistema da referência reduzindo a falta do mutator L2 (alocamento), mas o ICGC reduz o total falta também ao sistema da referência reduzindo a falta do mutator L2 (alocamento), mas o ICGC reduz o total falta mesmo mais adicional. Porque o custo relativo de L2 falta aumentos nós esperamos este resultar em um ganho mesmo mais adicional. Porque o custo relativo de L2 falta aumentos nós esperamos este resultar em um ganho líquido do desempenho para o sistema do objeto. Durante a coleção mais da atividade no cache do objeto é líquido do desempenho para o sistema do objeto. Durante a coleção mais da atividade no cache do objeto é devido às operações de GCB (como o coletor está fazendo inspeção do cache e trabalho consideráveis do devido às operações de GCB (como o coletor está fazendo inspeção do cache e trabalho consideráveis do invalidation). Anotar que o mpegaudio 222 não aloca bastante objetos para provocar uma única coleção invalidation). Anotar que o mpegaudio 222 não aloca bastante objetos para provocar uma única coleção convencional.convencional.

Page 34: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

Fig. 9. Cache activity for each workload on conventional (C), conventional with zero-and-allocate (Z), and object (O) caches, normalized to trace

events. Top: L1 cache hits; Middle: L2 cache hits and GC boundary operations; Bottom: L2 cache misses. Each bar is further decomposed by

software activity (mutation, garbage collection and OID management).

Page 35: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.1. Linha utilização do cache6.1. Linha utilização do cacheComo esperado, nossas taxas da falta do cache (no detalhe no L1) são ligeiramente Como esperado, nossas taxas da falta do cache (no detalhe no L1) são ligeiramente mais más porque nós não embalamos objetos densa em linhas do cache. A marca mais más porque nós não embalamos objetos densa em linhas do cache. A marca de nível a mais má neste respeito é o DB 209, que se usa na média somente 34.1% de nível a mais má neste respeito é o DB 209, que se usa na média somente 34.1% de cada linha do cache (referências 32-bit, 64 linhas do cache do byte); neste caso de cada linha do cache (referências 32-bit, 64 linhas do cache do byte); neste caso interage mal com o teste padrão de referência da aplicação, explicando o aumento interage mal com o teste padrão de referência da aplicação, explicando o aumento na falta L2 para o sistema do objeto. O meio sobre todas as marcas de nível é na falta L2 para o sistema do objeto. O meio sobre todas as marcas de nível é 55.5%. Estes números melhoram por 10%-15% com um movimento às referências 55.5%. Estes números melhoram por 10%-15% com um movimento às referências 64-bit. A tabela 4 contem os resultados completos da utilização. Este efeito será mais 64-bit. A tabela 4 contem os resultados completos da utilização. Este efeito será mais significativo para marcas de nível pequenas (tais como o suite das especs. JVM98), significativo para marcas de nível pequenas (tais como o suite das especs. JVM98), onde mesmo as estruturas de dados relativamente long-lived podem imóvel residir onde mesmo as estruturas de dados relativamente long-lived podem imóvel residir no espaço novo. Nós esperamos que menos locality spatial do inter-objeto no no espaço novo. Nós esperamos que menos locality spatial do inter-objeto no tenured dados das aplicações grandes, long-running, onde este efeito deve ser tenured dados das aplicações grandes, long-running, onde este efeito deve ser menos significativo (a pesquisa está continuando neste sentido).menos significativo (a pesquisa está continuando neste sentido).Nós não acreditamos que a fragmentação no cache é uma edição séria. Claramente, Nós não acreditamos que a fragmentação no cache é uma edição séria. Claramente, afeta negativamente as taxas da falta de cache para algumas aplicações. Entretanto, afeta negativamente as taxas da falta de cache para algumas aplicações. Entretanto, nossos resultados incluem os custos deste efeito e mostram ainda uma melhoria no nossos resultados incluem os custos deste efeito e mostram ainda uma melhoria no desempenho total. O custo da fragmentação (poucos objetos cabidos no cache) é desempenho total. O custo da fragmentação (poucos objetos cabidos no cache) é mais do que compensado pela melhoria na eficiência do GC. Na seção 6.3 nós mais do que compensado pela melhoria na eficiência do GC. Na seção 6.3 nós investigamos mais mais o efeito de usar as linhas do cache que são investigamos mais mais o efeito de usar as linhas do cache que são significativamente maiores do que objetos. significativamente maiores do que objetos.

Page 36: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.2. Javac study-213 detalhado6.2. Javac study-213 detalhado

A tabela 5 apresenta um olhar detalhado nos resultados para um de nossos A tabela 5 apresenta um olhar detalhado nos resultados para um de nossos programas de marca de nível, javac 213. A tabela apresenta a cache contagens e programas de marca de nível, javac 213. A tabela apresenta a cache contagens e relações de leitura/gravação da falta para os dois caches L1 (agregados) e o cache relações de leitura/gravação da falta para os dois caches L1 (agregados) e o cache L2, as well as o número das traduções e dos outros statistics do cache. Cada uma L2, as well as o número das traduções e dos outros statistics do cache. Cada uma métrica é pena quebrada pela atividade (GC contra o mutator contra a gerência de métrica é pena quebrada pela atividade (GC contra o mutator contra a gerência de OID). Os resultados para outras marcas de nível estão também em nosso relatório OID). Os resultados para outras marcas de nível estão também em nosso relatório técnico [35]. G. Wright e outros. /Ciência do computador que programa 62 (2006) técnico [35]. G. Wright e outros. /Ciência do computador que programa 62 (2006) 145-163 161 Total, o número da falta de cache L2 é consideravelmente menor com o 145-163 161 Total, o número da falta de cache L2 é consideravelmente menor com o ICGC. O coletor convencional faz o uso muito pobre do cache L2, com uma relação ICGC. O coletor convencional faz o uso muito pobre do cache L2, com uma relação lida 52% da falta e sobre 99% escrever a relação da falta (causada copí objetos no lida 52% da falta e sobre 99% escrever a relação da falta (causada copí objetos no semi-espaço novo ou promovendo os), quando o ICGC leu a relação da falta é perto semi-espaço novo ou promovendo os), quando o ICGC leu a relação da falta é perto de zero e há nenhum escreve a falta em tudo. A linha do mutator no sistema de zero e há nenhum escreve a falta em tudo. A linha do mutator no sistema convencional vê a elevação escrever também taxas da falta, porque busca linhas do convencional vê a elevação escrever também taxas da falta, porque busca linhas do cache da memória durante o alocamento do objeto. O uso de zero-e-aloca no cache da memória durante o alocamento do objeto. O uso de zero-e-aloca no sistema convencional elimina a maioria da falta da escrita, e no fato conserva 56M sistema convencional elimina a maioria da falta da escrita, e no fato conserva 56M que o alocamento escreve (28%), mas o GC faz exame ainda muitos da falta lida. O que o alocamento escreve (28%), mas o GC faz exame ainda muitos da falta lida. O GC do em-cache no sistema do objeto elimina com sucesso toda a falta L2 durante o GC do em-cache no sistema do objeto elimina com sucesso toda a falta L2 durante o GC, tendo por resultado um total da metade da falta L2 do sistema convencional com GC, tendo por resultado um total da metade da falta L2 do sistema convencional com zero-e-alocar, ou menos de um quarto without.zero-e-alocar, ou menos de um quarto without.

Page 37: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.3. Estudos da sensibilidade6.3. Estudos da sensibilidade

Os resultados relataram acima, porque a Os resultados relataram acima, porque a configuração descrita na seção 5.3, explora configuração descrita na seção 5.3, explora somente um único ponto em um espaço muito somente um único ponto em um espaço muito grande do parâmetro. Nós executamos alguns grande do parâmetro. Nós executamos alguns estudos limitados da sensibilidade para estudos limitados da sensibilidade para determinar como nossos resultados podem ser determinar como nossos resultados podem ser afetados por escolhas diferentes do tamanho do afetados por escolhas diferentes do tamanho do cache, da linha tamanho do cache, e do cache, da linha tamanho do cache, e do intervalo da coleção. Para conservar o espaço intervalo da coleção. Para conservar o espaço nós não incluímos os dados crus para estas nós não incluímos os dados crus para estas experiências.experiências.

Page 38: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.3.1. Intervalo da coleção6.3.1. Intervalo da coleçãoO sistema do objeto recupera mais lixo quando coleta mais freqüentemente; o O sistema do objeto recupera mais lixo quando coleta mais freqüentemente; o sistema convencional, dado a política tenuring no uso, recupera mais lixo coletando sistema convencional, dado a política tenuring no uso, recupera mais lixo coletando menos freqüentemente (isto é, usando semi-espaços maiores). Para o sistema menos freqüentemente (isto é, usando semi-espaços maiores). Para o sistema convencional, nossa mostra dos resultados uma melhoria pequena mas consistente convencional, nossa mostra dos resultados uma melhoria pequena mas consistente no lixo recuperado como o tamanho do semi-espaço é aumentada de 2 a MB 4, 8, e no lixo recuperado como o tamanho do semi-espaço é aumentada de 2 a MB 4, 8, e então 16. Em algumas marcas de nível a ascensão da falta de cache L2 a um pico então 16. Em algumas marcas de nível a ascensão da falta de cache L2 a um pico com 8 semi-espaços do MB e começa então melhorar, embora esta não seja com 8 semi-espaços do MB e começa então melhorar, embora esta não seja universal. Quando os semi-espaços não cabem nos semi-espaços maiores do cache universal. Quando os semi-espaços não cabem nos semi-espaços maiores do cache deve somente melhorar matérias, e o trade-off padrão do throughput contra a pegada deve somente melhorar matérias, e o trade-off padrão do throughput contra a pegada do heap deve determinar a escolha do tamanho do semi-espaço. No sistema do do heap deve determinar a escolha do tamanho do semi-espaço. No sistema do objeto o número da falta L2 é muito insensitive ao intervalo da coleção. A decisão do objeto o número da falta L2 é muito insensitive ao intervalo da coleção. A decisão do custo/benefício está conseqüentemente entre o lixo recuperado e o número de custo/benefício está conseqüentemente entre o lixo recuperado e o número de operações do em-cache. Coletando cada MB 2 de recuperações do alocamento operações do em-cache. Coletando cada MB 2 de recuperações do alocamento aproximadamente 10%-20% mais lixo do que nossa escolha do defeito de MB 4, no aproximadamente 10%-20% mais lixo do que nossa escolha do defeito de MB 4, no custo aproximadamente duas vezes de tantas como operações do incache. Na uma custo aproximadamente duas vezes de tantas como operações do incache. Na uma mão, coletar cada MB 8 (o tamanho do cache L2) resulta em uma diminuição similar mão, coletar cada MB 8 (o tamanho do cache L2) resulta em uma diminuição similar na recuperação para uma redução a aproximadamente 40% em operações do em-na recuperação para uma redução a aproximadamente 40% em operações do em-cache. Dado a sensibilidade a este parâmetro, nós conclímos que nossa escolha de cache. Dado a sensibilidade a este parâmetro, nós conclímos que nossa escolha de MB 4 é justa mas que mais pesquisa é needed em políticas da iniciação do GC do MB 4 é justa mas que mais pesquisa é needed em políticas da iniciação do GC do em-cache, including técnicas adaptáveis.em-cache, including técnicas adaptáveis.

Page 39: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.3.2. Tamanho do cache6.3.2. Tamanho do cache

tamanho Um menor, 4 MB, cache L2 resulta na tamanho Um menor, 4 MB, cache L2 resulta na recuperação de somente ao redor 75% do lixo recuperação de somente ao redor 75% do lixo que é coletado no cache do objeto do MB 8. que é coletado no cache do objeto do MB 8. Este número poderia ser melhorado coletando Este número poderia ser melhorado coletando mais freqüentemente, mas o custo elevado foi mais freqüentemente, mas o custo elevado foi discutido acima e o cache menor resultará em discutido acima e o cache menor resultará em mais lixo que escapa-se em todo o caso. O mais lixo que escapa-se em todo o caso. O tamanho do cache deve certamente ser fatorado tamanho do cache deve certamente ser fatorado na política da iniciação do GC.na política da iniciação do GC.

Page 40: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

6.3.3. Linha tamanho do cachê6.3.3. Linha tamanho do cachê

O resultado o mais interessante é a variação com respeito à linha O resultado o mais interessante é a variação com respeito à linha tamanho do cache. Nós não vemos uma penalidade, na falta de tamanho do cache. Nós não vemos uma penalidade, na falta de cache ou no lixo recuperado, para o byte 128 em vez de 64 linhas cache ou no lixo recuperado, para o byte 128 em vez de 64 linhas do cache do byte no sistema do objeto, mantendo o tamanho do do cache do byte no sistema do objeto, mantendo o tamanho do cache constante em MB 8 em cada caso. Como o poder cache constante em MB 8 em cada caso. Como o poder esperaram-se, o curtos non-põem objetos sofrem algum mais falta esperaram-se, o curtos non-põem objetos sofrem algum mais falta de cache, mas o totais uma diminuição na falta para disposições de cache, mas o totais uma diminuição na falta para disposições mais do que compensam. Esta é uma evidência mais adicional que mais do que compensam. Esta é uma evidência mais adicional que alguma fragmentação no cache do objeto, que é mais mau com as alguma fragmentação no cache do objeto, que é mais mau com as linhas mais longas do cache, é aceitável. Cache linhas de 256 bytes linhas mais longas do cache, é aceitável. Cache linhas de 256 bytes e de um começo mais longo para causar aumentos significativos na e de um começo mais longo para causar aumentos significativos na falta de cache em algumas marcas de nível. No sistema falta de cache em algumas marcas de nível. No sistema convencional, sem a instrução do zero-e-alocamento, uma fração convencional, sem a instrução do zero-e-alocamento, uma fração substancial da falta é devido ao alocamento, e as linhas muito substancial da falta é devido ao alocamento, e as linhas muito longas do cache, até 512 bytes, continuam a mostrar melhorias na longas do cache, até 512 bytes, continuam a mostrar melhorias na falta L2. Anotar que neste caso, embora o número da falta seja falta L2. Anotar que neste caso, embora o número da falta seja reduzido, mais bytes estão no fato que está sendo movido ao redor reduzido, mais bytes estão no fato que está sendo movido ao redor através do sistema da memória.através do sistema da memória.

Page 41: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

7. Sumário e conclusões7. Sumário e conclusões Nós descrevemos uma arquitetura da memória da novel para objetos que estendesse um Nós descrevemos uma arquitetura da memória da novel para objetos que estendesse um sistema classico A arquitetura é baseada em um cache objeto-convencional hybrid, um warden sistema classico A arquitetura é baseada em um cache objeto-convencional hybrid, um warden para policiar a barreira do GC, e um tradutor para traçar nomes do objeto ao exame dirige-se para policiar a barreira do GC, e um tradutor para traçar nomes do objeto ao exame dirige-se usando uma tabela do objeto. Os objetos são dirigidos usando um objeto ID e o offset; o cache usando uma tabela do objeto. Os objetos são dirigidos usando um objeto ID e o offset; o cache do objeto também é posicionado e etiquetado usando formulários codificados destes. Um coletor do objeto também é posicionado e etiquetado usando formulários codificados destes. Um coletor do lixo do em-cache explora a arquitetura para fornecer barato, baixo-pausa coleções, do lixo do em-cache explora a arquitetura para fornecer barato, baixo-pausa coleções, inteiramente dentro dos caches em um limite do GC, sem reque a sincronização explícita com inteiramente dentro dos caches em um limite do GC, sem reque a sincronização explícita com processar fora do limite do GC. Uma disposição bifurcated do objeto permite o GC exato sem processar fora do limite do GC. Uma disposição bifurcated do objeto permite o GC exato sem reque estruturas traçando adicionais. Enviesar resulta nos objetos bifurcated que residem reque estruturas traçando adicionais. Enviesar resulta nos objetos bifurcated que residem (geralmente) no número mínimo de linhas do cache. A arquitetura permite o relocação (geralmente) no número mínimo de linhas do cache. A arquitetura permite o relocação simultâneo dos objetos e daqui a compactação simultâneo do heap. Nossos resultados indicam simultâneo dos objetos e daqui a compactação simultâneo do heap. Nossos resultados indicam que o desempenho da coleção do lixo do cache e do em-cache do objeto compara favoràvel que o desempenho da coleção do lixo do cache e do em-cache do objeto compara favoràvel com um sistema classical, no entanto o cache do objeto permite que nós executem o compaction com um sistema classical, no entanto o cache do objeto permite que nós executem o compaction e o relocation incrementais. O GC do cache e do em-cache do objeto reduz a falta de cache e o relocation incrementais. O GC do cache e do em-cache do objeto reduz a falta de cache consideravelmente, no custo de operações extra para controlar o cache. Nós conclímos que consideravelmente, no custo de operações extra para controlar o cache. Nós conclímos que caching do objeto é uma técnica prometedora para escalar sistemas aos heaps muito grandes. caching do objeto é uma técnica prometedora para escalar sistemas aos heaps muito grandes. Os dados para o GC do incache são mais menos conclusive: se uma vantagem do desempenho Os dados para o GC do incache são mais menos conclusive: se uma vantagem do desempenho estaria vista depende dos custos e das latências em uma execução particular, e nossas estaria vista depende dos custos e das latências em uma execução particular, e nossas simulações não são pretendidas modelar uma execução nesse nível da exatidão. O coletor simulações não são pretendidas modelar uma execução nesse nível da exatidão. O coletor convencional do scavenging do semi-espaço tem duas vantagens: o alocamento ponteiro-convencional do scavenging do semi-espaço tem duas vantagens: o alocamento ponteiro-colidindo é mais barato do que a gerência de uma lista livre de OID, e a eficiência do tempo do colidindo é mais barato do que a gerência de uma lista livre de OID, e a eficiência do tempo do GC pode ser melhorada usando semi-espaços maiores porque o GC do scavenging não toca GC pode ser melhorada usando semi-espaços maiores porque o GC do scavenging não toca nos objetos inoperantes. As ofertas do GC do em-cache ferragem-suportaram a simultaneidade nos objetos inoperantes. As ofertas do GC do em-cache ferragem-suportaram a simultaneidade e a recuperação sem falta de cache L2, mas se há uma vantagem no throughput depende “dos e a recuperação sem falta de cache L2, mas se há uma vantagem no throughput depende “dos fatores constantes”. Nossas simulações mostram uma paridade áspera no desempenho se o fatores constantes”. Nossas simulações mostram uma paridade áspera no desempenho se o custo de uma falta de cache L2 for igualado a aproximadamente 10 batidas de cachêcusto de uma falta de cache L2 for igualado a aproximadamente 10 batidas de cachê

Page 42: Uma arquitetura objeto-ciente da memória Sumário Sumário Apesar de sua dominância, a computação orientação a objeto recebeu a atenção scant da comunidade

8. Trabalho futuro8. Trabalho futuroMuitos detalhes remanescem ser terminados, e há muito espaço para uma Muitos detalhes remanescem ser terminados, e há muito espaço para uma investigação mais adicional. Nossos resultados mostram que o cache do objeto não investigação mais adicional. Nossos resultados mostram que o cache do objeto não penalize adversamente aplicações small-scale em seu comportamento do GC do penalize adversamente aplicações small-scale em seu comportamento do GC do cache e do newspace. Nós temos para demonstrar ainda as vantagens do cache e do newspace. Nós temos para demonstrar ainda as vantagens do desempenho e do scaling que o cache do objeto deve facilitar para aplicações desempenho e do scaling que o cache do objeto deve facilitar para aplicações grandes; isto requererá modelar de aplicações long-running com heaps grandes. grandes; isto requererá modelar de aplicações long-running com heaps grandes. Nossos resultados mostram que um componente grande da atividade do GC no Nossos resultados mostram que um componente grande da atividade do GC no cache do objeto é devido à gerência de OID. Este código não optimized cache do objeto é devido à gerência de OID. Este código não optimized pesadamente e deve ser possível reduzir estes overheads. Nós estamos pesadamente e deve ser possível reduzir estes overheads. Nós estamos investigando o GC além dos caches (do “GC velho-espaço”), e a contribuição o investigando o GC além dos caches (do “GC velho-espaço”), e a contribuição o warden e o tradutor pode fazer a este. Ao contrário de outros esquemas warden e o tradutor pode fazer a este. Ao contrário de outros esquemas generational, a iniciação da coleção do em-cache afeta somente o desempenho e generational, a iniciação da coleção do em-cache afeta somente o desempenho e não a exatidão, assim que nós planeamos investigar o heuristics para que quando não a exatidão, assim que nós planeamos investigar o heuristics para que quando inicíe o GC do em-cache. Uma avaliação mais completa para obter estimativas do inicíe o GC do em-cache. Uma avaliação mais completa para obter estimativas do desempenho requer a execução de um modelo realístico do processador e de mover desempenho requer a execução de um modelo realístico do processador e de mover e a modificação de um JVM avançado a este modelo. Além, nós planeamos explorar e a modificação de um JVM avançado a este modelo. Além, nós planeamos explorar as aplicações novas que estas adições podem permitir ou simplificar na máquina as aplicações novas que estas adições podem permitir ou simplificar na máquina virtual. Algumas das aplicações que nós temos considerado são sustentação para virtual. Algumas das aplicações que nós temos considerado são sustentação para lojas persistentes transparentes do objeto e objetos reservar para relocated dentro lojas persistentes transparentes do objeto e objetos reservar para relocated dentro de um conjunto dos usuários. Ambas estas técnicas podem ser permitidas em umas de um conjunto dos usuários. Ambas estas técnicas podem ser permitidas em umas despesas gerais muito mais baixas através da ferragem do tradutor.despesas gerais muito mais baixas através da ferragem do tradutor.