BRPI0707149A2 - gerenciamento eficiente de hierarquia de memória - Google Patents

gerenciamento eficiente de hierarquia de memória Download PDF

Info

Publication number
BRPI0707149A2
BRPI0707149A2 BRPI0707149-3A BRPI0707149A BRPI0707149A2 BR PI0707149 A2 BRPI0707149 A2 BR PI0707149A2 BR PI0707149 A BRPI0707149 A BR PI0707149A BR PI0707149 A2 BRPI0707149 A2 BR PI0707149A2
Authority
BR
Brazil
Prior art keywords
instruction
cache
data
data cache
address
Prior art date
Application number
BRPI0707149-3A
Other languages
English (en)
Inventor
Michael William Morrow
Thomas Andrew Sartorius
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0707149A2 publication Critical patent/BRPI0707149A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Communication Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

GERENCIAMENTO EFICIENTE DE HIERARQUIA DE MEMóRIA. Em um processador, existem situações onde instruções e certas partes de um programa podem residir em uma cache de dados antes da execução do programa. Técnicas de hardware e software são providas para buscar uma instrução na cache de dados após ter uma falha em uma cache de instrução para melhorar o desempenho do processador. Se uma instrução não estiver presente na cache de instrução, um endereço de busca de instrução é enviado como um endereço de busca de dados para a cache de dados. Se houver dados válidos presentes na cache de dados no endereço de busca de instrução fornecido, os dados na realidade são uma instrução e a entrada de cache de dados é buscada e fornecida como uma instrução para o complexo de processador. Um bit adicional pode ser incluído em uma tabela de página de instrução para indicar uma falha na cache de instrução e que a cache de dados deve ser verificada para a instrução.

Description

"GERENCIAMENTO EFICIENTE DE HIERARQUIA DE MEMÓRIA"
CAMPO
A presente revelação se refere geralmente àstécnicas para buscar instruções a partir da memória tendouma cache de instrução e uma . cache de dados e, maisespecificamente, a uma abordagem aperfeiçoada para buscaruma instrução após uma falha na cache de instrução medianteação de diretamente buscar a instrução a partir da cache dedados se a instrução residir nesse lugar.
FUNDAMENTOS
Produtos comumente portáteis, tais como telefonescelulares, computadores laptop, assistentes pessoais dedados (PDAs) ou semelhantes, requerem o uso de umprocessador executando programas, tal como, programas decomunicação e de multimídia. O sistema de processamentopara tais produtos inclui um complexo de processador ememória para armazenar instruções e dados. Por exemplo, asinstruções e os dados podem ser armazenados em uma memóriahierárquica consistindo em múltiplos níveis de caches,incluindo, por exemplo, uma cache de instrução, uma cachede dados, e uma memória de sistema. O uso de uma cache deinstrução separada e uma cache de dados separada éconhecido como uma arquitetura Harvard. Como a arquiteturaHarvard isola a cache de instruções da cache de dados,podem surgir problemas quando as instruções são armazenadasna cache de dados.
Em geral os sistemas processando com urnaarquitetura Harvard, existem situações que surgem nas quaisas instruções podem ser armazenadas na cache de dados. Porexemplo, se um programa é criptografado ou está em umaforma compactada, ele deve ser decodificado/descompactadoantes de permitir a execução pelo programa. O processo dedecodificação/descompactação trata o programacodificado/compactado como dados para processar os mesmos earmazena as instruções decodificadas/descompactadas comodados em uma cache de dados, por exemplo, uma cache dedados nível 1, em seu caminho para a memória do sistema. Ageração de instruções a partir de códigos de byte Java éoutra situação na qual as instruções são inicialmentetratadas como dados que são armazenados utilizando ocaminho de dados, incluindo a cache de dados, para amemória de sistema. O estado inicial de um programa no qualas instruções de programa estão sendo tratadas como dadoscria um problema de coerência dentro da hierarquia dememória, uma vez que pelo menos certas partes de umprograma podem residir na cache de dados antes da execuçãodo programa.
Para resolver o problema de coerência, umaabordagem de software é tipicamente realizada em que oprograma ou os segmentos de programa na cache de dados sãomovidos para a memória de sistema sob controle do programa,a cache de instrução é tipicamente invalidada para limpar acache de quaisquer segmentos do programa antigo, e asinstruções compreendendo o programa são então buscadas apartir da memória de sistema. 0 movimento das instruções dacache de dados até a memória de sistema, e a ação de buscaras instruções, a partir da memória de sistema antes daexecução, pode consumir vários ciclos, reduzindo odesempenho do processador devido ao overhead de tempo deprocessamento que deve ocorrer para acessar as instruçõesinicialmente residindo na cache de dados antes do programaexecutando no processador.
SUMÁRIO
Entre seus vários aspectos, a presente revelaçãoreconhece que o overhead relacionado às instruções em umacache de dados pode limitar o desempenho do processador e,possivelmente, limitar a qualidade de serviço que pode serobtida. A presente invenção também reconhece que pode serdesejável acessar instruções que estejam em uma cache dedados.
Além disso, a presente revelação descreveequipamento, métodos, e meio legível por computador para irbuscar diretamente uma instrução a partir de uma cache dedados quando aquela instrução não foi encontrada na cachede instrução, uma falha da cache de instrução, e sedetermina que a instrução esteja na cache de dados.
Mediante ação de buscar a instrução diretamente a partir dacache de dados, após uma falha da cache de instrução, odesempenho do processador pode ser aperfeiçoado.
Com essa finalidade, uma modalidade da presenteinvenção inclui um método de encontrar uma instrução em umacache de dados que é separado de uma cache de instrução. Emtal método, é determinado que uma tentativa de busca falhouna cache de instrução para a instrução em um endereço debusca de instrução. O endereço de busca de instrução étransformado em um endereço de busca de dados. Além disso,uma tentativa de busca na cache de dados é feita a partirda instrução no endereço de busca de dados transformado.
Outra modalidade da invenção trata de um complexode processador para buscar instruções. 0 complexo deprocessador pode incluir adequadamente uma cache deinstrução, uma cache de dados, e um primeiro seletor. Oprimeiro seletor é usado para selecionar um endereço debusca de instrução ou um endereço de busca de dados. Umendereço de busca selecionado é aplicado a uma cache dedados pelo que instruções ou dados podem ser seletivamentebuscados a partir da cache de dados.
Um entendimento mais completo dos conceitosinventivos da presente invenção, aqui revelados, assim comooutras características, serão evidentes a partir daDescrição Detalhada a seguir e dos desenhos anexos.
DESCRIÇÃO RESUMIDA DOS DESENHOS
A Figura 1 é um diagrama de blocos de um sistemade comunicação sem fio exemplar no qual uma modalidade darevelação pode ser empregada;
A Figura 2 é um diagrama funcional de blocos deum complexo de processador e memória no qual a operação decache de dados é adaptada para operações eficientes dememória de busca de instrução de acordo com uma modalidadeda presente invenção;
A Figura 3 é um fluxograma de um método exemplarpara buscar uma instrução armazenada em uma cache de dados,para reduzir o overhead de execução de falha associado coma instrução inicialmente armazenada como dados na cache dedados de acordo com a presente revelação;
A Figura 4 é um diagrama funcional de blocos deum complexo de processador e memória que inclui uma tabelade páginas de instrução na qual a operação de cache dedados é adaptada para busca de instrução eficiente deacordo com a presente revelação;
A Figura 5 é um fluxograma de um método exemplarpara buscar uma instrução armazenada em uma cache de dadosde acordo com a presente revelação; e
A Figura 6 é um fluxograma de um método exemplarpara executar código que é gerado como dados e armazenadoem uma cache de dados, de acordo com a presente revelação.
DESCRIÇÃO DETALHADA
Aspectos inventivos da presente revelação serãoilustrados mais completamente com referência aos desenhosanexos, nos quais várias modalidades da revelação sãomostradas. A modalidade dessa invenção pode, contudo, serincorporada em várias formas e não deve ser consideradacomo limitada às modalidades aqui apresentadas. Maispropriamente, essas modalidades são providas de modo queessa revelação será completa e meticulosa, e transmitiráintegralmente o escopo da revelação para aqueles versadosna técnica.
Será considerado que a presente invenção pode serincorporada como métodos, sistemas, ou produtos de programade computador. Conseqüentemente, os conceitos inventivos dapresente invenção, aqui revelados, podem assumir a forma deuma modalidade de hardware, uma modalidade de software ouuma modalidade combinando aspectos , de software e dehardware. Adicionalmente, os conceitos inventivos dapresente invenção, aqui revelados, podem assumir a forma deum produto de programa de computador em um meio dearmazenamento utilizável por computador tendo código deprograma utilizável por computador incorporado no meio.
Qualquer meio legível por computador adequado pode serutilizado incluindo discos rígidos, CD-ROMs, dispositivosde armazenamento ótico, memórias flash, ou dispositivos dearmazenamento magnético.
Código de programa de computador que pode sercompilado, montado e carregado em um processador pode serinicialmente escrito em uma linguagem de programação talcomo C, C++, native Assembler, JAVA®, Smalltalk,JavaScript®, Visual Basic®, TSQL, Perl, ou em várias outraslinguagens de programação de acordo com os ensinamentos dapresente revelação. Código de programa ou meio legível porcomputador se refere ao código de linguagem de máquina talcomo código e objeto cujo formato pode ser entendido por umprocessador. Modalidades de software da revelação nãodependem de sua implementação com uma linguagem deprogramação específica. Quando o código de programa éexecutado, é criada uma nova tarefa que define o ambientede operação para o código de programa.
A Figura 1 mostra um sistema de comunicação semfio exemplar 100 no qual uma modalidade da revelação podeser empregada. Para fins de ilustração, a Figura 1 mostratrês unidades remotas 120, 130, e 150 e duas estações base140. Será reconhecido que sistemas típicos de comunicaçãosem fio podem ter unidades remotas e estações base. Asunidades remotas 120, 130 e 150 incluem componentes dehardware, componentes de software, ou ambos conformerepresentado pelos componentes 125A, 125C, e 125B,respectivamente, os quais foram adaptados para incorporar arevelação conforme discutido adicionalmente abaixo. AFigura 1 mostra sinais de link direto 180 a partir dasestações base 140 para as unidades remotas 120, 130 e 150 esinais de link reverso 190 a partir das unidades remotas120, 130 e 150 para as estações base 140.
Na Figura 1, a unidade remota 120 é apresentadacomo um telefone móvel; a unidade remota 130 é mostradacomo um computador portátil; e a unidade remota 150 seapresenta como uma unidade remota de posição fixa em umsistema de Ioop local sem fio. Por exemplo, as unidadesremotas podem ser telefones celulares, unidades de sistemade comunicação pessoal de mão (PCS), unidades portáteis dedados tais como assistentes pessoais de dados, ou unidadesde dados de posição fixa tal como equipamento de leitura demedidor. Embora a Figura 1 ilustre unidades remotas deacordo com os ensinamentos da revelação, a revelação não élimitada a essas unidades exemplares ilustradas. Arevelação pode ser empregada adequadamente em qualquer.dispositivo tendo um processador com uma cache deinstrução, uma cache de dados, e uma memória de sistema.
A Figura 2 é um diagrama funcional de blocos deum complexo de processador e memória 200 no qual a operaçãonormal da cache de dados é adaptada para busca de instruçãomais eficiente conforme descrito adicionalmente aqui. Ocomplexo de processador e memória 200 inclui um processador202, uma cache de instrução de nivel 1 (Ll) 204, umaunidade de controle de cache de instrução Ll 206, uma cachede dados Ll 208, uma unidade de controle de cache de dadosLl 210, uma seção de controle 211, e uma memória de sistema212. A unidade de controle de cache de instrução Ll 206pode incluir uma memória endereçável de conteúdo deinstrução para casamento de identificador de instrução,conforme pode ser usado em uma cache associativaestabelecida. A seção de controle 211 inclui elementos demultiplexação 220, 226, e 234, dispositivos de portas 232 e238, e um inversor 240. Dispositivos periféricos, os quaispodem se conectar ao complexo de processador, não sãomostrados para clareza de discussão da presente revelação.
O complexo de processador e memória 200 pode seradequadamente empregado nos componentes 125A-C paraexecutar códigos de programa que são armazenados na memóriade sistema 212.
Para buscar uma instrução no complexo deprocessador e memória 200, o processador 202 gera umendereço de busca de instrução (IA) 214 da instruçãodesejada e envia o endereço de busca de instrução para aunidade de controle de cache de instrução Ll 206. A unidadede controle de cache de instrução Ll 206 verifica se ainstrução está presente na cache de instrução Ll 204. Essaverificação é realizada, por exemplo, através do uso de umamemória endereçável de conteúdo interno (CAM) em uma buscaassociativa para um casamento com o endereço de busca deinstrução fornecido. Quando a instrução está presente, umcasamento ocorre e a unidade de controle de cache deinstrução Ll 206 indica que a instrução está presente nacache de instrução 204. Se a instrução não estiverpresente, nenhum casamento será encontrado na buscaassociativa CAM e a unidade de controle de cache deinstrução Ll 206 indica que a instrução não está presentena cache de instrução 204.
Se a instrução estiver presente, a instrução noendereço de busca de instrução é selecionada a partir dacache de instrução 204. A instrução então é enviada nobarramento de saida de instrução 216 através do elemento demultiplexação 226 para o processador 202.
Se a instrução não estiver presente na cache deinstrução, um sinal de falha de cache de instrução (I$M=1)218 é ativado indicando que ocorreu uma falha. A partir dadetecção de uma falha na cache de instrução, o complexo deprocessador e memória 200 tenta buscar a instrução desejadaa partir da cache de dados Ll 208. Com essa finalidade, oelemento de multiplexação 220 é habilitado pelo sinal defalha (I$M=1) 218 para selecionar o endereço de busca deinstrução 214. O endereço de busca de instrução 214 passaentão através de um elemento de multiplexação 220 para umbarramento Daddress 222 e é enviado para a unidade decontrole de cache de dados Ll 210 como um endereço de buscade dados. Observa-se que o complexo de processador ememória 200 representa uma visão lógica do sistema, uma vezque, por exemplo, a aplicação do endereço de busca deinstrução 214 para o barramento Daddress 222 pode exigiruma arbitragem ou um período e espera antes que o acesso aobarramento Daddress 222 possa ser obtido. A abordagemrealizada para multiplexar o endereço de busca de instrução214 com o endereço de dados gerado pelo processador 223pode ser variada e depende da abordagem específicarealizada nos projetos de cache de instrução e de cache dedados.A unidade de controle de cache de dados Ll 210verifica se existe um acerto na cache de dados Ll 208 noendereço de busca de instrução fornecida, através de umabusca associativa interna, por exemplo, no endereço debusca de instrução, fornecido. Um acerto indica que existemdados presentes no endereço de busca de instrução,fornecido. Esses dados são na realidade uma instrução e aentrada de cache de dados é buscada a partir da cache dedados Ll 208 e colocada no barramento de saida de dados224. Para fornecer os dados buscados a partir da cache dedados Ll 208 como uma instrução para o processador, umelemento de multiplexação 22 6 pode ser adequadamenteempregado. O barramento de saida de dados 224 é selecionadopelo- elemento de multiplexação 226 colocando os dadosbuscados a partir da cache de dados no barramento deinstrução 228 do processador, onde existe uma falha nacache de instrução seguido por um acerto na cache de dadosno endereço de busca de instrução. A ocorrência da falha nacache de instrução, indicada pelo sinal de falha (I$M=1)218 sendo ativa verdadeira seguida pelo acerto na cache dedados no mesmo endereço de busca de instrução, indicado porum sinal de acerto (D$M=1) 230 sendo ativo verdadeiro, élogicamente representada pela porta E 232. A saida da portaE 232 é o sinal de seleção 233 para o elemento demultiplexação 22 6. A instrução encontrada na cache de dadostambém é multiplexada para carregamento na cache deinstrução 204 pelo elemento de multiplexação 234 utilizandoo sinal de seleção 233 logicamente provido pela porta E232. Enquanto o barramento de saida de dados 224 estáenviando a instrução para o processador, a entrada de dadosde leitura 236 do processador é desativada pela porta E 238utilizando o inversor 240 para prover um inverso do sinalde seleção 233.Se foi determinado que houve uma falha na cachede dados no endereço de busca de instrução fornecido, ainstrução não está na cache de dados e a instrução ébuscada a partir da memória de sistema 212. O sinal deacerto ((D$M=1) 230 também é enviado para a unidade decontrole de cache de instrução Ll 206 para indicar medianteseu estado inativo que uma falha ocorreu na tentativa delocalizar a instrução na cache de dados 208. Observar queoutro meio de sinalização pode ser usado para indicar queuma falha ocorreu na tentativa de localizar a instrução nacache de dados 208. Como a instrução não está na cache deinstrução 204 e não está na cache de dados 208 ela deve serbuscada a partir da memória de sistema 212. Quando ainstrução é obtida a partir da memória de sistema 212 ela é.enviada para o processador 202. Observar que os caminhos apartir da memória de sistema para fornecimento de umainstrução devido a uma fala na cache de instrução ou nacache de dados e para fornecer dados devido a uma falha nacache de dados não são mostrados para ilustrar claramente apresente revelação.
A Figura 3 é um fluxograma exemplar de um método300 para diretamente buscar uma instrução em uma cache dedados após ter uma falha na cache de instrução, paraminimizar o overhead comumente associado com o manejo dainstrução inicialmente armazenada como dados na cache dedados. Relações exemplares entre as etapas da Figura 3 e oselementos da Figura 2 são indicadas mediante descrição decomo os elementos a partir do complexo de processador ememória 200 podem cooperar adequadamente para realizar asetapas do método 300.
Para buscar uma instrução, um endereço de buscade instrução é gerado na etapa 304. Por exemplo, umprocessador, tal como o processador 202, gera um endereçode busca de instrução da instrução desejada e envia oendereço de busca de instrução 214 para o controlador decache de instrução Ll 206. Na etapa 308, é determinado seexiste um acerto ou uma falha de cache de instrução. Porexemplo, o controlador de cache de instrução Ll 206verifica se a instrução está presente na cache de instrução204. Se a instrução estiver presente, sua presença éindicada como um acerto. Se a instrução estiver presente, ométodo 300 prossegue para a etapa 312 e a instrução noendereço de busca de instrução é selecionada. Na etapa 316,a instrução é enviada para o processador. Por exemplo, ainstrução selecionada é colocada no barramento de saida deinstrução 216 e enviada para o processador 202 através doelemento de multiplexação 226.
Se a instrução não estiver presente na cache deinstrução conforme determinado na etapa 308, é fornecidauma indicação de que uma falha ocorreu e é feita umatentativa de buscar a instrução a partir da cache de dadosna etapa 320. Por exemplo, o endereço de busca de instrução214 é enviado através do elemento de multiplexação 220 comoum endereço de busca de dados 222 para a cache de dados208. Na etapa 324, é feita uma verificação, por exemplo,pelo controlador de cache de dados Ll 210 para verificar seexistem dados válidos presentes no endereço de busca deinstrução fornecido. Se existem dados válidos presentes nacache de dados no endereço de busca de instrução fornecido,os dados efetivamente são uma instrução e a entrada decache de dados é buscada na etapa 328. Na etapa 316, osdados buscados a partir da cache de dados são enviados comouma instrução para o processador. Por exemplo, os dadosbuscados no barramento de saída de dados 224 a partir dacache de dados 208 são enviados através do elemento demultiplexação 226 e fornecidos como uma instrução para oprocessador 202 no barramento de instrução 228.
Na etapa 324, se houve uma falha na cache dedados no endereço de busca de instrução fornecido, ainstrução não está na cache de dados e na etapa 332 ainstrução é buscada a partir da memória de sistema. Porexemplo, o sinal de acerto de cache de dados D$M=1 230 éenviado para a unidade de controle de cache de instrução Ll206 para indicar por intermédio de seu estado inativo queuma falha ocorreu na tentativa de localizar a instrução nacache de dados 208. Como a instrução não está na cache déinstrução 204 e não está na cache de dados 208 ela deve serbuscada a partir da memória de sistema 212. Quando ainstrução é obtida a partir da memória de sistema 212, ainstrução é enviada para o processador 202, conformeindicado na etapa 316.
A Figura 4 é um diagrama funcional de blocos deum complexo de processador e memória 400 que inclui umatabela de páginas de instrução na qual a operação de cachede dados normal é adaptada para operação eficiente de buscade instrução de acordo com a presente revelação. O complexode processador e memória 400 inclui um processador 402, umacache de instrução de nivel 1 (Ll) 404, uma unidade degerenciamento de memória de instrução (IMMU) e controle decache (IMMU/$Control) 406, uma cache de dados Ll 408, umaunidade de gerenciamento de memória de dados (DMMU) econtrole de cache (DMMU/$Control) 410, uma seção decontrole 411, e uma hierarquia de memória 412. 0IMMU/$Control 406 pode incluir, por exemplo, um processo deconversão de endereço de instrução de virtual para física.
A seção de controle 411 inclui elementos de multiplexação432, 438, e 448, dispositivos de portas 428, 444, e 452, eum inversor 454. Dispositivos periféricos, os quais podemconectar o complexo de processador, não são mostrados paraclareza de discussão na presente revelação. O complexo deprocessador e memória 400 pode ser empregado adequadamenteem componentes 125A-C para executar código de programa queé armazenado na memória de sistema 412.
A cache de instrução pode utilizar um armazenadorde tradução look-aside (TLB) que contém uma tabela depágina de instrução para melhorar o desempenho da cache deinstrução. A tabela de páginas de instrução tendo, porexemplo, uma lista de números de páginas físicas associadascom números de páginas virtuais e informação adicionalassociada com cada entrada de número de página. Uma entradade tabela de páginas de instrução é criada quando umapágina da memória na faixa de endereços de instrução écarregada na cache de instrução ou na cache de dados. Ocarregamento de uma página de memória pode ocorrer sob asupervisão de um sistema operacional (OS) . Em operação, atabela de página de instrução é examinada no sentido de umcasamento com um número de página virtual fornecido ao TLB.
Embora um TLB tendo uma tabela de páginas de instrução seja.descrito aqui como parte da MMU de instrução e controle decache 406, será reconhecido que abordagens alternativaspodem ser usadas.
Para buscar uma instrução no complexo deprocessador e memória 400, o processador 402 gera umendereço de busca de instrução (IA) 414 para a instruçãodesejada e envia o endereço de busca de instrução para oIMMU/$Control 406. Uma entrada apropriada em uma tabela depágina de instrução, tal com tabela de página 416localizada no IMMU/$Control 406 é selecionada com base emum número de página fornecido que é parte do IA 414. Oendereço de instrução baseado na entrada de tabela depágina selecionada é combinado com um endereço de página,também parte do IA 414, gerando um endereço de instrução(GA) 418 que é aplicado internamente à cache de instruçãoLl 404. A entrada selecionada a partir da tabela de páginas416 inclui informação adicional armazenada com aquelaentrada. Um dos bits adicionais de informação que pode serarmazenado com cada entrada de tabela de página é umatributo de cache de dados de verificação, rotulado comobit D 420.
O bit D é ajustado para um "1" quando a entradana tabela de página de instrução é criada devido aocarregamento de uma página de instrução na cache de dadosou ao gerar instruções que são armazenadas em uma página nacache de dados durante processamento. 0 bit D é tipicamenteestabelecido pelo sistema operacional OS para indicar queum conteúdo da página pode ser usado como ambos, dados einstruções. Em um cenário exemplar, um programa, gerandodados que serão usados como instruções, chama o OS parasolicitar que as páginas apropriadas sejam marcadasmediante ajuste do bit D nas entradas de tabela de página,associadas. Em outro cenário, um programa também podesolicitar páginas a partir do OS que já estão estabelecidascom o bit D ajustado. 0 bit D não precisa necessariamenteser explicitamente cancelado. Se um programa especifica quea cache de dados pode conter instruções mediante ação defazer com que o bit D ou bits D apropriados sejamajustados, então aquela especificação pode ser válidadurante a vida do programa. 0 bit D ou bits D podem serposteriormente cancelados quando a tabela de páginas forusada para um processo diferente.
0 IMMU/$Control 406 verifica se a instrução estápresente na cache de instrução 404. Se a instrução estiverpresente, essa presença é indicada como um acerto. Se ainstrução estiver presente, a instrução no endereço debusca de instrução é selecionada a partir da cache deinstrução 404. A instrução então é enviada no barramento desaida de instrução 422 através de elemento de multiplexação438 para o processador 402. Se a instrução não estiverpresente, é fornecida uma indicação pelo IMMU/$Control 406de que ocorreu uma falha e um sinal de falha de cache deinstrução (I$M=1) 424 é ativado indicando que ocorreu umafalha.
Ao detectar uma falha na cache de instrução emconjunto com o bit D selecionado sendo ajustado para um"1", o complexo de processador e memória 400 tenta buscar ainstrução desejada a partir da cache de dados Ll 408. Essatentativa pode ser realizada adequadamente, por exemplo,mediante uso do bit D selecionado em uma função de porta. 0bit D 420 a partir da entrada de tabela de páginaselecionada é enviado como sinal de bit D 426y. Os sinaisde bit D 426 são, por exemplo, ANDed, pela porta E 428, comindicação de falha (I$M=1) 424. A saída 430 da porta E 428é, então, usada pelo elemento de multiplexação 432 paraselecionar o endereço de instrução gerado (GA) 418 ou umendereço de dados 433 a partir do processador 402. Quandoselecionado, o GA 418 passa através do elemento demultiplexação 432 para o barramento Daddress (DA) 434 e éenviado para o MMU de dados e controle de cache 410 paradeterminar se a instrução reside na cache de dados 4 08 noendereço de busca de dados. Observa-se que o complexo deprocessador e memória 400 representa uma visão lógica dosistema, uma vez que, por exemplo, a aplicação do endereçode instrução geral 418 no barramento Daddress 434 podeexigir uma arbitragem ou um período de espera antes de oacesso ao barramento Daddress 434 poder ser obtido. Aabordagem realizada para multiplexar o endereço deinstrução gerado 418 com o endereço de dados gerado peloprocessador 433 pode ser variada e depende da abordagemespecifica realizada nos projetos de cache de instrução ede cache de dados.
A cache de dados então verifica se existem dadosválidos presentes no endereço de busca de instruçãofornecido. Se houver dados válidos presentes no endereço debusca de instrução fornecido, os dados na realidade são umainstrução e a entrada de cache de dados é buscada a partirda cache de dados Ll 4 08 e colocada no barramento de saidade dados 436. Para fornecer a entrada de cache de dadoscomo "uma instrução para o processador, é usado um elementode multiplexação 438, por exemplo. 0 elemento demultiplexação 438 é habilitado a passar o barramento desaida de dados 436 para o barramento de instrução 440 doprocessador quando houver uma falha na cache de instrução eo bit D selecionado é ajustado para um "1" seguido por umacerto na cache de dados no endereço de busca de instrução.
A ocorrência da falha na cache de instrução, indicada pelosinal de falha (I$M=1) 424 sendo altamente ativo, e o sinalde bit D 426 ajustado para um "1" seguido pelo acerto nacache de dados no endereço de instrução gerado, indicadopelo sinal de acerto (D$H=1) 442 sendo altamente ativo, érepresentado logicamente pela porta E 444. A saida da portaE 444 é o sinal de seleção 446 para o elemento demultiplexação 438. A instrução no barramento de saida dedados também é multiplexada para carregamento na cache deinstrução pelo elemento de multiplexação 448 utilizando osinal de seleção 446. Enquanto o barramento de saida dedados de cache de dados Ll 436 está enviando a instruçãopara o processador 402, o barramento de saida de dados 436é fechado para transferências para a entrada de dados deleitura 450 do processador pela porta E 452 utilizando uminverso do sinal de seleção 446 provido pelo inversor 454.
Se foi determinado que havia uma falha na cachede dados no endereço de busca de instrução fornecido, ainstrução não está na cache de dados e a instrução ébuscada a partir da memória de sistema 412. O sinal deacerto (D$H=1) 442 também é enviado para o IMMU/$Control406 para indicar por intermédio de seu estado inativo queuma falha ocorreu na tentativa de localizar a instrução nacache de dados 408. Quando a instrução é obtida a partir damemória de sistema 412, ela é enviada para o processador402. Observar que os caminhos a partir da hierarquia dememória para fornecer uma instrução devido a uma falha nacache de instrução ou cache de dados e para fornecer dadosdevido a uma falha na cache de dados não são mostrados,porém qualquer uma de uma ampla variedade de abordagens deconexão pode ser empregada consistente com a aplicação e oprocessador empregado.
A Figura 5 é um fluxograma exemplar de um método500 para buscar uma instrução em uma cache de dados apóster uma falha na cache de instrução e um atributo de cachede dados de verificação indica que a cache de dados deveser verificado para a instrução. Relações exemplares entreas etapas da Figura 5 e os elementos da Figura 4 sãoindicadas mediante referência aos elementos exemplares apartir do complexo de processador e memória 400 que podeser adequadamente empregado para realizar as etapas dométodo 500 da Figura 5.
Para buscar uma instrução, um endereço de buscade instrução para a instrução desejada é gerado na etapa502. Por exemplo, um processador, tal como o processador402 gera um endereço de busca de instrução e envia oendereço de busca de instrução 414 para o controlador decache· de instrução Ll 406. O endereço de busca de instruçãopode ser um endereço virtual composto de um número depágina 504 e um endereço de página 506. Na etapa 508, umaentrada apropriada em uma tabela de página de instrução,tal como tabela de página de instrução 416, é selecionadacom base no número de página fornecido 504. O endereçogerado com base na entrada de tabela de página selecionadaé combinado na etapa 509 com o endereço de página 506 paraproduzir um endereço de cache de instrução.
A entrada selecionada a partir da tabela depágina de instrução 416 inclui informação adicionalarmazenada com aquela entrada. Um dos bits adicionais deinformação que podem ser armazenados com cada entrada detabela de página é um atributo de cache de dados deverificação, tal como o bit rotulado como bit D 420. Esseatributo é selecionado na etapa 510.
Na etapa 512, determina-se se existe um acerto decache de instrução, ou uma falha. Por exemplo, a cache deinstrução verifica se a instrução está presente. Se ainstrução estiver presente, sua presença é indicada como umacerto. Se a instrução estiver presente, o método 500prossegue para a etapa 514 e a instrução no endereço debusca de instrução é selecionada. Na etapa 516, a instruçãoé enviada para o processador. Por exemplo, a instruçãoselecionada é colocada no barramento de saida de instrução422 é enviada através do elemento de multiplexação 438 parao barramento de instrução 440 do processador 402.
Se a instrução não estiver presente na cache deinstrução conforme determinado na etapa 512, uma indicaçãoé dada no sentido de que ocorreu uma falha e o método 500prossegue para a etapa 518. Na etapa 518, o bit D que foiselecionado na etapa 510 é verificado no sentido de se eleestá ajustado para um "1" indicando que a cache de dadosdeve ser verificado para a instrução. Se o bit D foiajustado para um "1", processador tenta buscar a instruçãoa partir da cache de dados na etapa 520. Por exemplo, oendereço de busca de instrução gerado 418 é enviado como umendereço de busca de dados 434 para a cache de dados.
Na etapa 524, a cache de dados verifica seexistem dados válidos presentes no endereço de busca deinstrução, fornecido. Se houver dados válidos presentes noendereço de busca de instrução, fornecido, os dados narealidade são uma instrução e a entrada de caixa de dados ébuscada na entrada 528. Na etapa 516, os dados buscados apartir da cache de dados são enviados como uma instruçãopara o processador. Por exemplo, os dados buscados nobarramento de saida de dados 436 são enviados através doelemento de multiplexação 438 e fornecidos como umainstrução para o processador 402 no barramento de instrução 440.
Retornando à etapa 518, se for determinado naetapa 518 que o bit D era um "0", sabe-se que a instruçãonão está presente na cache de dados e o método 500prossegue para a etapa 522. A etapa 522 também é alcançadapara a situação onde havia uma falha na cache de dados noendereço de busca de instrução fornecido, conformedeterminado na etapa 524. Em qualquer caso, a instrução nãoé reconhecida como estando presente na cache de instruçãoou na cache de dados e a instrução é buscada a partir damemória de sistema, conforme indicado na etapa 522. Porexemplo, a memória de sistema 412 será acessada para ainstrução. Quando a instrução é obtida a partir da memóriade sistema 412, a instrução é enviada para o processador402, conforme indicado na etapa 516.
A Figura 6 é um fluxograma exemplar de um método.600 para executar código de programa que é gerado comodados e armazenado em uma cache de dados. Código deprograma após esse método pode ser executado em um complexode processador e memória tendo uma cache de instrução, umacache de dados, e uma memória de sistema, tal como, aquelesdiscutidos em conexão com as Figuras 2 e 4, e pode seradequadamente empregado em componentes 125A-C da Figura 1.
Na etapa 602, um programa gera o código. Talgeração pode ocorrer, por exemplo, quando um programa geracódigo executável a partir de um programa compactado. 0código gerado é inicialmente tratado como dados earmazenado na cache de dados após ele ser gerado. Antes deexecutar o programa, uma cache de instrução é invalidada naetapa 64. A etapa de invalidação garante que não existaminstruções no mesmo endereço que o código gerado. Na etapa606, o código gerado é executado pelo processador mediantebusca das instruções a partir do espaço de endereço deprograma na cache de instrução e pode incluir instruçõesque são armazenadas na cache de dados. Para aquelasinstruções armazenadas na cache de dados, as técnicas dapresente revelação são seguidas permitindo que a cache dedados seja verificado para instruções em uma ocorrência deuma falha na cache de instruções. Ao descobrir umainstrução na cache de dados, a instrução é diretamentebuscada a partir da cache de dados para execução no.processador.
Embora a presente revelação tenha sido reveladaem um contexto atualmente preferido, será reconhecido queos presentes ensinamentos podem ser adaptados para umavariedade de contextos consistentes com essa revelação ecom as reivindicações a seguir.

Claims (20)

1. Método de achar uma instrução em uma cache dedados que é separado de uma cache de instruções, o métodocompreendendo:determinar que uma tentativa de busca falhou nacache de instrução para a instrução em um endereço de buscade instrução;transformar o endereço de busca de instrução emum endereço de busca de dados; erealizar uma tentativa de busca na cache de dadospara a instrução no endereço de busca de dadostransformado.
2. Método, de acordo com a reivindicação 1,compreendendo ainda:ativar um atributo de cache de dados deverificação ao gerar instruções que são armazenadas comodados na cache de dados.
3. Método, de acordo com a reivindicação 2,compreendendo ainda:determinar se um atributo de cache de dados deverificação está ativo; ehabilitar a tentativa de busca na cache de dadospara a instrução apenas se o atributo de cache de dados deverificação estiver ativo.
4. Método, de acordo com a reivindicação 2, emque o atributo de cache de dados de verificação é um bitarmazenado em uma tabela de páginas de instrução.
5. Método, de acordo com a reivindicação 1, emque a etapa de transformar o endereço de busca de instruçãocompreende ainda:multiplexar o endereço de busca de instrução e umendereço de busca de dados; eselecionar o endereço de busca de instrução paraaplicação à cache de dados como o endereço de busca dedados transformado, em que o endereço de busca de instruçãoé selecionado após determinação de que a tentativa de buscade instrução falhou na cache de instrução.
6. Método, de acordo com a reivindicação 1, emque a etapa de fazer uma tentativa de busca na cache dedados compreende ainda:determinar o acerto de instrução na cache dedados; ebuscar a instrução a partir da cache de dados.
7. Método, de acordo com a reivindicação 1,compreendendo ainda:determinar a tentativa de busca na cache de dadosque falhou; einformar um controle de memória de instrução deque a tentativa de busca na cache de dados falhou.
8. Método, de acordo com a reivindicação 7,compreendendo ainda:buscar a instrução a partir de uma memória desistema.
9. Complexo de processador compreendendo:uma cache de instrução;uma cache de dados; eum primeiro seletor para selecionar um endereçode busca de instrução ou um endereço de busca de dados combase'"em um sinal de seleção, o sinal de seleção fazendo comque o endereço de busca de instrução ou o endereço de buscade dados seja aplicado à cache de dados pelo que instruçõesou dados podem ser buscados seletivamente a partir da cachede dados.
10. Complexo de processador, de acordo com areivindicação 9, em que o sinal de seleção do primeiroseletor seleciona o endereço de busca de dados em respostaa uma operação de acesso de dados.
11. Complexo de processador, de acordo com areivindicação 9, em que o sinal de seleção do primeiroseletor seleciona o endereço de busca de instrução se umsinal de falha de instrução indicar que ocorreu uma falhaem uma operação de busca de instrução na cache deinstrução.
12. Complexo de processador, de acordo com areivindicação 9, compreendendo ainda:um segundo seletor para selecionar um barramentode saida de instrução a partir da cache de instrução ou umbarramento de saida de dados a partir da cache de dados aser aplicada a uma entrada de barramento de instrução doprocessador.
13. Complexo de processador, de acordo com areivindicação 12, em que o segundo seletor seleciona obarramento de saida de dados a partir da cache de dados seuma falha ocorreu na cache de instrução e um acerto ocorreuna cache de dados no endereço de busca de instruçãoselecionada através do primeiro seletor.
14. Complexo de processador, de acordo com areivindicação 12, e que o segundo seletor seleciona obarramento de saida de instrução se um acerto ocorrer nacache de instrução.
15. Complexo de processador, de acordo com areivindicação 9, compreendendo ainda:um terceiro seletor para selecionar um barramentode saida de memória a partir de uma memória de sistema ouum barramento de saida de dados a partir da cache de dadosa ser aplicado à entrada de barramento de instrução dacache de instrução.
16. Complexo de processador, de acordo com areivindicação 15, em que o terceiro seletor seleciona obarramento de saída de dados a partir da cache de dados seuma falha ocorreu na cache de instrução e um acerto ocorreuna cache de dados no endereço de busca de instruçãoselecionada através do primeiro seletor.
17. Método para executar código de programacompreendendo:gerar instruções que são armazenadas como dadosem uma cache de dados;invalidar uma cache de instrução antes daexecução do código de programa que utiliza as instruçõesgeradas; ebuscar uma instrução diretamente a partir dacache de dados se a instrução não for encontrada na cachede instrução, pelo que o código de programa é executado.
18. Método, de acordo com a reivindicação 17, emque a geração da etapa de instrução inclui a operação decarregar instruções na cache de dados.
19. Método, de acordo com a reivindicação 17, emque a invalidação da cache de instrução compreende ainda:invalidar apenas uma porção da cache de instruçãoonde.i.as instruções geradas são armazenadas.
20. Método, de acordo com a reivindicação 17,compreendendo ainda:estabelecer um atributo de cache de dados deverificação em uma tabela de página de instrução paraindicar que uma instrução pode estar na cache de dados; ebuscar a instrução a partir da cache de dados sea instrução não for encontrada na cache de instrução e oatributo de cache de dados de verificação estiver ativado.
BRPI0707149-3A 2006-01-20 2007-01-22 gerenciamento eficiente de hierarquia de memória BRPI0707149A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/336,282 US7552283B2 (en) 2006-01-20 2006-01-20 Efficient memory hierarchy management
US11/336,282 2006-01-20
PCT/US2007/060815 WO2007085011A2 (en) 2006-01-20 2007-01-22 Efficient memory hierarchy management

Publications (1)

Publication Number Publication Date
BRPI0707149A2 true BRPI0707149A2 (pt) 2011-04-19

Family

ID=38058452

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0707149-3A BRPI0707149A2 (pt) 2006-01-20 2007-01-22 gerenciamento eficiente de hierarquia de memória

Country Status (12)

Country Link
US (1) US7552283B2 (pt)
EP (1) EP1974256B1 (pt)
JP (1) JP5065298B2 (pt)
KR (1) KR100955101B1 (pt)
CN (2) CN102866879B (pt)
AT (1) ATE467174T1 (pt)
BR (1) BRPI0707149A2 (pt)
CA (1) CA2635116C (pt)
DE (1) DE602007006276D1 (pt)
ES (1) ES2345733T3 (pt)
RU (1) RU2397534C2 (pt)
WO (1) WO2007085011A2 (pt)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8033004B2 (en) * 2004-11-22 2011-10-11 Honda Motor Co., Ltd. Method for installing run channel for automobile
JP4376173B2 (ja) 2004-11-30 2009-12-02 本田技研工業株式会社 モール装着方法及びその装置
FI20041572L (fi) 2004-12-03 2006-06-04 Biolan Oy Kasvihuone, kasvihuoneen ilmastonsäätöjärjestelmä ja menetelmä kasvihuoneen ilmaston säätämiseksi
WO2007057978A1 (ja) * 2005-11-16 2007-05-24 Honda Motor Co., Ltd. 軟性部材の取付方法及びその取付装置
WO2007060750A1 (ja) * 2005-11-24 2007-05-31 Honda Motor Co., Ltd. オープンシールの取付方法及びその取付装置
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
KR100877611B1 (ko) * 2007-02-08 2009-01-09 삼성전자주식회사 플래시 메모리 내장 마이크로 컨트롤러 유닛 시스템 및상기 마이크로 컨트롤러 유닛의 플래시 메모리 접근 방법
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
CN104205043B (zh) * 2012-02-22 2017-09-22 慧与发展有限责任合伙企业 对计算机上的操作系统隐藏逻辑处理器
WO2014142867A1 (en) 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9747116B2 (en) 2013-03-28 2017-08-29 Hewlett Packard Enterprise Development Lp Identifying memory of a blade device for use by an operating system of a partition including the blade device
CN105074653B (zh) 2013-03-28 2018-11-23 慧与发展有限责任合伙企业 使计算刀片设备和扩展刀片设备的存储器可供由操作系统使用
US10289467B2 (en) 2013-03-28 2019-05-14 Hewlett Packard Enterprise Development Lp Error coordination message for a blade device having a logical processor in another system firmware domain
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses
US9734083B2 (en) * 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719568A (en) * 1982-12-30 1988-01-12 International Business Machines Corporation Hierarchical memory system including separate cache memories for storing data and instructions
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5440707A (en) * 1992-04-29 1995-08-08 Sun Microsystems, Inc. Instruction and data cache with a shared TLB for split accesses and snooping in the same clock cycle
JPH06100982B2 (ja) * 1992-05-20 1994-12-12 工業技術院長 階層キャッシュ・メモリ装置
RU2037874C1 (ru) * 1993-05-10 1995-06-19 Валерий Алексеевич Харитонов Устройство управления памятью
JPH086853A (ja) * 1994-06-22 1996-01-12 Hitachi Ltd 記憶制御方法
US5737749A (en) 1996-05-20 1998-04-07 International Business Machines Corporation Method and system for dynamically sharing cache capacity in a microprocessor
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
JP2002007212A (ja) 2000-06-19 2002-01-11 Sony Corp キャッシュ・メモリ・システム及びキャッシュ・メモリ制御方法
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
GB2426082B (en) 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing

Also Published As

Publication number Publication date
CA2635116C (en) 2011-05-17
CN102866879B (zh) 2015-10-28
US20070174553A1 (en) 2007-07-26
CN102866879A (zh) 2013-01-09
DE602007006276D1 (de) 2010-06-17
KR100955101B1 (ko) 2010-04-28
WO2007085011A2 (en) 2007-07-26
RU2008134124A (ru) 2010-02-27
EP1974256B1 (en) 2010-05-05
ATE467174T1 (de) 2010-05-15
US7552283B2 (en) 2009-06-23
WO2007085011A3 (en) 2007-10-04
ES2345733T3 (es) 2010-09-30
CN101371224A (zh) 2009-02-18
CA2635116A1 (en) 2007-07-26
KR20080091481A (ko) 2008-10-13
CN101371224B (zh) 2013-03-27
JP5065298B2 (ja) 2012-10-31
RU2397534C2 (ru) 2010-08-20
EP1974256A2 (en) 2008-10-01
JP2009524168A (ja) 2009-06-25

Similar Documents

Publication Publication Date Title
BRPI0707149A2 (pt) gerenciamento eficiente de hierarquia de memória
US12591520B2 (en) Linear to physical address translation with support for page attributes
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
KR101009220B1 (ko) 캐시된 메모리 데이터를 가진 메모리 속성 표시자의 캐시
US8190652B2 (en) Achieving coherence between dynamically optimized code and original code
US20130262816A1 (en) Translation lookaside buffer for multiple context compute engine
CN112368684B (zh) 使用保留标记字段位的基于高速缓存的跟踪重放断点
US8924648B1 (en) Method and system for caching attribute data for matching attributes with physical addresses
US20150339233A1 (en) Facilitating efficient prefetching for scatter/gather operations
BRPI0710171A2 (pt) cache de instruções marcada virtualmente com comportamento marcado fisicamente
JP5623370B2 (ja) キャッシュ・メモリに対する直接アクセスのための装置および方法
US6931504B2 (en) Method and apparatus for relocating objects within an object-addressed memory hierarchy
US11593109B2 (en) Sharing instruction cache lines between multiple threads
JP2024520742A (ja) 複数のスレッド間での命令キャッシュのフットプリントの共有
US7171540B1 (en) Object-addressed memory hierarchy that facilitates accessing objects stored outside of main memory
MX2008009316A (en) Efficient memory hierarchy management

Legal Events

Date Code Title Description
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B11B Dismissal acc. art. 36, par 1 of ipl - no reply within 90 days to fullfil the necessary requirements
B11N Dismissal: publication cancelled [chapter 11.14 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 11.2 NA RPI NO 2489 DE 18/09/2018 POR TER SIDO INDEVIDA.

B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 13A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: EM VIRTUDE DO ARQUIVAMENTO PUBLICADO NA RPI 2550 DE 19-11-2019 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDO O ARQUIVAMENTO DO PEDIDO DE PATENTE, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.