BRPI0610069A2 - lidar com perda de cache em uma instrução cruzando uma fronteira de linha de cache - Google Patents

lidar com perda de cache em uma instrução cruzando uma fronteira de linha de cache Download PDF

Info

Publication number
BRPI0610069A2
BRPI0610069A2 BRPI0610069-4A BRPI0610069A BRPI0610069A2 BR PI0610069 A2 BRPI0610069 A2 BR PI0610069A2 BR PI0610069 A BRPI0610069 A BR PI0610069A BR PI0610069 A2 BRPI0610069 A2 BR PI0610069A2
Authority
BR
Brazil
Prior art keywords
instruction
line
cache
stage
data
Prior art date
Application number
BRPI0610069-4A
Other languages
English (en)
Inventor
Brian Michael Stempel
Jeffrey Todd Bridges
Thomas Andrew Sartorius
Rodney Wayne Smith
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 BRPI0610069A2 publication Critical patent/BRPI0610069A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection

Landscapes

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

Abstract

LIDAR COM PERDA DE CACHE EM UMA INSTRUçãO CRUZANDO UMA FRONTEIRA DE LINHA DE CACHE. Uma seção de busca de um processador compreende uma cache de instruções e um encadeamento de vários estágios para obter instruções. Instruções podem cruzar fronteiras de linha de cache. Os estágios de encadeamento processam dois endereços para recuperar uma instrução que cruza fronteira completamente. Durante esse processamento, se o segundo pedaço da instrução não estiver na cache, a busca com relação à primeira linha é invalidada e reciclada. Nessa primeira passagem, o processamento do endereço para a segunda parte da instrução é tratado como uma solicitação de pré-busca para carregar dados de instruções para a cache a partir da memória de nível mais elevado, sem passar nenhum desses dados para os estágios posteriores do processador. Quando o endereço da primeira linha passa através dos estágios de re-buscar, o endereço da segunda linha segue na ordem normal, e os dois pedaços da instrução podem ser buscados a partir da cache e combinados no modo normal.

Description

TRATAMENTO DE PERDA DE CACHE EM UMA INSTRUÇÃO CRUZANDO UMAFRONTEIRA DE LINHA DE CACHE
CAMPO TÉCNICO
A presente matéria refere-se a técnicas earquiteturas de processador para tratar eficazmente dabusca de uma instrução cruzando um limite de linha decache, particularmente onde uma segunda porção da instruçãonão está ainda na cache a partir da qual o processadortenta buscar a instrução (perda de cache).
FUNDAMENTOS
Microprocessadores modernos e outros circuitos deprocessador programáveis utilizam uma hierarquia dememórias para armazenar e prover instruções. Uma hierarquiacomum inclui uma cache de instrução ou cache LI que estárelativamente próxima ao núcleo do processador, porexemplo, no chip do processador. Instruções são carregadasna cache de instrução LI a partir de uma cache L2 ou de umcerto modo mais remoto, que armazena tanto instruções comodados. Uma ou ambas as caches são carregadas com instruçõesa partir da memória principal, e a memória principal podeser, carregada a partir de fontes mais remotas, comounidades de disco do dispositivo que incorpora oprocessador. As memórias de cache aperfeiçoam o desempenho.Devido a sua proximidade do núcleo de processador, porexemplo, a busca de instruções a partir da cache Ll érelativamente rápida.
Em muitas implementações, uma linha da cache deinstrução mantém um número de instruções. Se o número debits por instrução for fixo para todas as instruções, umalinha de cache pode ser dimensionada para reter um númerointeiro de tais instruções. Por exemplo, se cada instruçãotiver 32 bits, uma linha de cache de 256 bits manterá oitodessas instruções, e os limites das primeira e últimainstruções armazenadas na linha casam ou alinham-se com oslimites da linha de cache. Entretanto, se o processadormanipular instruções de diferentes comprimentos, porexemplo, instruções de 32 bits e instruções de 16 bits,então as instruções em uma dada linha de cache podem não sealinhar com os limites daquela linha. Se a arquitetura deprocessador determinar que uma instrução não pode sobrepora duas linhas de cache, então haverá um certo desperdício.Entretanto, muitas arquiteturas não impõem tal restrição decache. Nos casos mencionados posteriormente, problemasocorrem na leitura de uma instrução que tem partearmazenada em uma linha e o resto armazenado em outralinha, por exemplo, uma instrução de 32 bits tendo 16 bitsno final de uma linha da cache e os outros 16 bitsarmazenados no inicio da linha de cache seguinte.
Circuitos de processador programáveis modernos sebaseiam, freqüentemente, em uma arquitetura deprocessamento de pipeline, para melhorar a velocidade deexecução. Um processador pipelined inclui múltiplas etapasde processamento para processar seqüencialmente cadainstrução à medida que se move através do pipeline.Evidentemente enquanto um estágio está processando umainstrução, outros estágios ao longo do pipeline estãosimultaneamente processando outras instruções. Cada estágiode um pipeline executa uma função diferente necessária noprocessamento geral de cada instrução de programa. Embora aordem e/ou funções possam variam levemente, um pipelinesimples, tipico inclui um estágio de Buscar instrução, umestágio de Decodificar instrução, um estágio de Leitura ouacesso de memória, um estágio de Executar instrução e umestágio de responder resultado. Desenhos de processadormais avançados quebram alguns ou todos estes estágios emvários estágios separados para executar sub-porções dessasfunções. Desenhos super escalares dividem as funçõesadicionalmente e/ou provêem funções duplicatas, paraexecutar operações em pipelines paralelos de profundidade similar.
0 estágio de Buscar é a porção do processador depipeline que obtém as instruções a partir do sistema dememória hierárquico. Em muitos desenhos de pipeline, aoperação de Buscar é dividida em dois ou mais estágios.
Desses estágios, um estágio coleta as instruções quandobuscas a partir da cache LI e comunica-se com as memóriasde nivel mais elevado para obter dados de instrução nãoencontrados na cache LI.
Um problema pode ocorrer nessa operação de buscaronde os limites das instruções cruzam os limites de linhade cache , e parte de uma instrução desejada não está aindapresente na cache LI. Por exemplo, se o estágio que coletaas instruções buscadas a partir da cache LI recebe umaprimeira parte da instrução, não se comunicará com asmemórias de nivel mais elevado porque a instrução foiencontrada na cache LI. Similarmente, se aquele estágio jáobteve a linha contendo o primeiro pedaço a partir damemória de nivel mais elevado, não iniciará uma segundasolicitação para a linha contendo o outro pedaço dainstrução. Em vez disso, espera para receber o resto dainstrução a partir do processamento da próxima linha decache pelo estágio precedente. Entretanto, se o estágioprecedente detectar que o resto da instrução desejada nãoestá na linha apropriada da cache LI (um erro) , não podeprover a parte restante da instrução, e não tem acapacidade de acessar as memórias de nivel mais elevadopara obter o pedaço ausente da instrução. Normalmente, nocaso de um erro, esse estágio abandonaria o endereço para oestágio seguinte para solicitar os dados da memória denivel mais elevado, porém aquele estágio seguinte estáesperando que o segundo pedaço de uma instrução divididavenha do estágio precedente. Em alguns casos extremos, oprocessamento de Buscar pode travar por algum períodoesperando por uma porção da instrução que nenhum estágiopode solicitar.
Poderia ser possível permitir que mais de umestágio na seção de buscar do pipeline solicite instruçõesa partir dos outros recursos de memória, para evitar oproblema acima identificado. Tal solução, entretanto,acrescenta complexidade, na construção dos estágios debuscar, na interconexão dos estágios de buscar com outrosrecursos de memória e no gerenciamento de fluxo deinstruções para e através dos estágios de buscar. Para umdesempenho de processador com desempenho elevado, édesejável fazer solicitações para recursos de memória denivel mais elevado a partir de tão poucos lugares quantopossível, porque cada tal solicitação retarda outroprocessamento enquanto espera pelo retorno de dadossolicitados. Conseqüentemente, há ainda espaço adicionalpara aperfeiçoamento em instruções de busca, onde asinstruções podem cruzar limites de linha de cache.
SUMÁRIO
Os ensinamentos da presente invenção provêemtratamento mais eficaz do perda de cache, onde umainstrução cruza um limite de linha de cache.Essencialmente, um endereço correspondendo à linha de cachepara a primeira parte da instrução é reciclado para acabeça da parte de buscar do pipeline, sem nenhuma daprimeira parte associada da instrução a partir da linha decache cair para os estágios posteriores do pipeline. 0endereço que corresponde à linha para a segunda parte dainstrução, isto quer dizer o endereço que resultou na perdade cache, é tratada como uma solicitação de pré-busca. Umavez que há um erro, o processador começa a carregar osdados de instrução necessários na cache de instrução, porémesses dados também não caem nos estágios posteriores dopipeline nessa passagem através dos estágios de buscar.Quando o primeiro endereço de linha passa através dosestágios de buscar novamente, e o segundo endereço de linhasegue em seqüência normal, todos os pedaços da instruçãosão disponíveis e podem ser buscados e combinados no modonormal.
Aqui, aspectos do presente ensinamento abrangemmétodos de buscar uma instrução a partir da memória paraexecução em um processador programável, no qual instruçõespodem cruzar um limite de linha. Um exemplo de um talmétodo poderia envolver detectar que uma instrução a serbuscada cruza um limite entre linhas de instrução. Apósbuscar uma primeira linha de dados de instrução contendo umprimeiro pedaço da instrução que cruza limite, umadeterminação é feita se um segundo pedaço da instrução quecruza limite está ou não em memória de cache. Casonegativo, a busca da primeira linha de dados de instrução éreciclada, sem saida de qualquer da instrução a partir daprimeira linha de dados. Então, o método envolve pré-buscaruma segunda linha de dados de instrução, que inclui opedaço da instrução ausente. Tendo reciclado a busca para aprimeira linha, o processamento então abrange buscar aprimeira linha de dados de instrução e buscar a segundalinha de dados de instrução. Os pedaços a partir dasprimeira e segunda linhas de dados de instrução buscadassão combinados para transmitir a instrução que cruzalimite.Caso haja qualquer busca posterior que tenhainiciado antes da segunda busca em relação à primeiralinha, isto quer dizer, se houvesse qualquer outra operaçãode busca em andamento entre a busca reciclada e a pré-buscapara a segunda linha, qualquer tal processamento de buscainterferente é retirado do pipeline de busca. Quando abusca em relação à primeira linha é reciclada, os dadosresultantes da busca durante a passagem inicial sãoinvalidados, de modo que nenhum dado sai da seção de busca.
Outros aspectos dos presentes ensinamentosabrangem sistemas ou seções de busca, para buscarinstruções para processamento através de um processadorprogramável, como um processador de pipeline. Em umexemplo, tal seção de busca compreende uma cache deinstrução e pelo menos um estágio de processamento paraprocessar endereços em seqüência. Para cada endereço, oprocessamento identifica uma linha de memória na cache deinstrução que pode conter uma instrução ou uma porção domesmo correspondendo a cada endereço respectivo. 0processamento também lê dados a partir da linhaidentificada. Meios são providos para reciclar uma buscacom relação a um primeiro endereço para o primeiro estágiode processamento de cache de instrução e para converter umabusca com relação ao segundo endereço para uma pré-busca afim de permitir carregamento de uma linha de dados deinstrução a partir do recurso de memória de nível mais altopara a cache de instrução, no caso de uma instrução quecruze um limite entre linhas e uma linha da cachecorrespondendo ao segundo endereço para aquela instruçãonão contiver inicialmente um pedaço da instrução que cruzalimite.
Outros aspectos dos presentes ensinamentosabrangem processadores programáveis, particularmenteprocessadores de pipeline, incorporando uma tal seção debusca.
Objetivos, vantagens e características novasadicionais serão expostas em parte na descrição que sesegue, e em parte tornar-se-ão evidentes para aquelesversados na técnica após exame dos desenhos que se segue eassociados ou podem ser aprendidos pela produção ouoperação dos exemplos. Os objetivos e vantagens dospresentes ensinamentos podem ser realizados e obtidos pelaprática ou uso das metodologias, meios e combinaçõesparticularmente indicados nas reivindicações apensas.
BREVE DESCRIÇÃO DOS DESENHOS
As figuras dos desenhos representam uma ou maisimplementações de acordo com os presentes ensinamentos,somente como exemplo, não como limitação. Nas figuras,numerais de referência similares se referem aos elementosiguais ou similares.
A figura 1 é um diagrama de blocos de nivelelevado de uma porção do processador programável, incluindoelementos exemplares de uma seção de busca implementandotécnicas para tratamento eficiente de instruções que cruzamlimites.
A figura 2 é um diagrama de blocos funcional deuma implementação de pipeline de um processadorprogramável, que pode incorporar os elementos mostrados nafigura 1.
A figura 3 representa dados de instrução a partirde uma linha da cache de instrução, onde a linha de cachecontém oito instruções de 32 bits.
A figura 4 representa dados de instrução a partirde uma linha da cache de instrução, onde a linha de cachecontém dezesseis instruções de 16 bits.A figura 5 representa dados de instrução a partirde duas linhas da cache de instrução, cada uma das quaisinclui uma mistura de instruções de 16 bits e 32 bits e umaporção de uma instrução de 32 bits cruzando limite.
A figura 6 representa dados em um registro de 64bits, antes do processamento de alinhamento de dados deinstrução para compilar bits selecionados em uma instruçãode 32 bits.
A figura 7 representa a instrução de 32 bitsresultante, recuperada por busca das duas linhas contendoporções da instrução que cruza limite.
DESCRIÇÃO DETALHADA
Na seguinte descrição detalhada, inúmerosdetalhes específicos são expostos como exemplos para proveruma compreensão completa dos ensinamentos relevantes.Entretanto, deve ser evidente para aqueles versados natécnica que os presentes ensinamentos podem ser postos emprática sem tais detalhes. Em outras ocorrências, métodosbem conhecidos, procedimentos, componentes e conjunto decircuitos foram descritos em um nivel relativamente alto,sem detalhe, para evitar obscurecer desnecessariamenteaspectos dos presentes ensinamentos.
Como discutido aqui, um exemplo de um sistema ouseção de um processador destinado a buscar instruções parao processador compreende uma cache de instrução e umapluralidade de estágios de processamento. Como tal, aprópria seção de buscar é formada tipicamente de umpipeline de estágios de processamento. As instruções sãopermitidas cruzarem limites de linha de cache. Quando umestágio a partir do qual solicitações para memórias denivel mais elevado são feitas tem uma primeira parte de umainstrução que cruza um limite de linha de cache, verifica alinha seguinte. Se aquele estágio determinar que a segundaparte dos dados de instrução que cruza limite não estácontida na cache (Ll) , invalida a busca inicial da parte dainstrução a partir da primeira alinha e retorna o primeiroendereço de busca de volta para inicio de pipeline debuscar. Quando o processamento para o segundo endereço semove para aquele estágio, a segunda busca foi convertidapara uma operação de toque ou pré-busca. 0 processamento,portanto, carrega dados na cache de instrução, porém nãopassa a segunda linha para o estágio de decodificar nessaprimeira passagem através do pipeline de buscar. Comoresultado, a linha de instrução contendo o segundo pedaçoda instrução está na cache. Quando os estágios de buscaprocessam o primeiro endereço novamente (após reciclagem),o segundo endereço segue novamente na ordem normal, e alinha na cache para o segundo endereço contém agora osegundo pedaço necessário da instrução que cruza limite. Aparte para a instrução desejada a partir da segunda linhapode ser deixada cair na primeira linha buscada(substituindo um pedaço de dado de outro modo nãonecessário na primeira linha), para concluir a instruçãodesejada em um ciclo de saida a partir do estágio debuscar.
No exemplo, quaisquer estágios do pipeline maiselevados do que (precedendo) o estágio contendo o segundoendereço de buscar são nivelados. Como resultado, nenhumdado de linha de instrução é transmitido a partir dopipeline de buscar até que a instrução desejada sejacombinada em um ciclo durante a segunda passagem através dopipeline de buscar instrução.
Faz-se referência agora em detalhe aos exemplosilustrados nos desenhos em anexo e discutidos abaixo. Afigura 1 ilustra vários estágios de um processador depipeline e memórias associadas. A figura 2 representa opipeline geral, ao passo que a figura 1 mostra de um certomodo mais detalhe de uma primeira seção do pipeline, comoserá envolvido na busca de instruções a partir das memóriase tratar instruções que cruzam limites de linha de cachecomo discutido aqui.
Com referência à figura 2, o processador depipeline simplificado 10 inclui cinco categorias principaisde estágios de processamento de pipeline, Buscar 11,Decodificar 13, Leitura 15, Executar 17 e responder 19. Assetas no diagrama representam fluxos de dados lógicos, nãonecessariamente conexões fisicas. Aqueles versados natécnica reconhecerão que qualquer um ou todos essesestágios podem ser divididos em múltiplos estágios queexecutam porções da função relevante, ou que o pipelinepode incluir estágios adicionais para prover funcionalidadeadicional. Um exemplo super escalar efetivo pode consistirem dois ou mais pipelines paralelos, cada um por exemplocompreendendo múltiplos estágios. Para fins de discussão,várias das principais categorias de estágios são mostradascomo estágios únicos, embora tipicamente cada uma sejadividida em dois ou mais estágios. A seção de interesseespecifico para a presente discussão do tratamento deinstruções que cruzam limites de linha de cache é a seçãode Buscar 11, conseqüentemente os estágios separados queformam aquela seção são mostrados em mais detalhe na figura1. Embora não mostrado separadamente nas figuras 1 e 2,cada estágio do pipeline 10 compreende, tipicamente umamáquina de estado ou similar implementando as funçõeslógicas relevantes e um registro associado para passar ainstrução e/ou quaisquer resultados de processamento para oestágio seguinte ou de volta para o arquivo de registro GPRNo pipeline exemplar 10, a primeira seção doprocessador de pipeline 10 executa uma função de Buscarinstrução 11. A seção de Buscar compreende uma ou maisestações para obter instruções para processamento porestágios posteriores. 0(s) estágio(s) de Buscar 11obtém(êm) as instruções a partir de uma hierarquia dememórias representadas genericamente pelas memórias 21. Asmemórias 21 incluem, tipicamente, uma cache de instrução(iCache) às vezes mencionada como cache de nivel 1 (LI) 23,cache de nivel 2 (L2) 25 e memória principal 27. Asinstruções podem ser carregadas na memória principal apartir de outras fontes, por exemplo, um ROM boot ouunidade de disco. Embora algumas das memórias, como a cachede instrução, possam estar em ou próximas ao núcleo doprocessador 10, outras memórias, como a memória principal,estarão fora ou separadas do processador 10. Em algumasarquiteturas, a cache de instrução 23 pode ser um elementoda seção de Buscar 11 (como mostrado, por exemplo, nafigura 1).
A cache L2 27 armazena tanto instruções comodados a serem processados (dados operando). A cache L2 27 écompartilhada tanto pela cache de instrução 23 como pelacache de dados (não mostrada) utilizado durante leitura dedados de operando, por exemplo, pelo estágio 15. A cache L227 é tanto maior como mais lenta para acessar do que acache de instrução 23. A memória principal 27, por sua vezé ainda maior e mais lenta para acessar, porém armazenaconsideravelmente mais informações. Uma busca a partir dacache de instrução 23, por exemplo, pode exigir três ciclosde processamento, uma busca a partir da cache L2 25 podeconsumir 10 ou aproximadamente 10 ciclos de processamento,ao passo que uma busca a partir da memória principal 27pode exigir algo da ordem de 100 ciclos de processamento.O estágio de Busca 11 prove cada instrução paraum estágio de Decodificar 13. A lógica do estágio deDecodificar instrução 13 decodifica os bytes de instruçãorecebidos e prove o resultado para o estágio seguinte dopipeline.
A principal categoria de estágios seguinte proveacesso ou Leitura de dados, como representado coletivamentepelo estágio 15. A lógica do(s) estágio(s) de Leitura 15acessa dados operando em registros especificados em umarquivo de registro de finalidade geral (GPR) 29. Em algunscasos, a lógica do(s) estágio(s) de Leitura 15 pode obterdados de operando a partir da memória ou outros recursos(não mostrados).
Os dados operando e instrução são passados paraum ou mais estágios 17 provendo a função Executar. 0(s)estágio(s) Executar 17 executa(m) essencialmente a funçãoespecifica de cada instrução nos dados operando recuperadose produz(em) um resultado. O estágio ou estágios 17provendo a função Executar pode, por exemplo, implementaruma unidade de lógica aritmética (ALU). O estágio 19 gravaos resultados de volta para um registro no arquivo 29 oupara a memória como a cache L2 25 e/ou memória principal27.
Como observado, a figura 1 mostra os estágios deum pipeline e elementos associados formando a seção deBuscar 11 de um certo modo em mais detalhe. Como mostradona mesma, uma seção de Buscar 11 exemplar compreende trêsestágios de pipeline 31, 33 e 35 para processarseqüencialmente endereços. À medida que os endereços fluematravés dos estágios da seção de pipeline de Buscar 11,somente um endereço está em e sendo processado em cada umdos estágios em qualquer momento dado. Genericamente, paraum dado endereço, um primeiro ciclo (no estágio IC1 31)processa o endereço para identificar o indicador para alinha de memória apropriada da cache de instrução 23. 0segundo ciclo (no estágio IC2 33) utiliza o indicador paraacessar a linha específica da cache de instrução 23. Aseção de alinhamento de dados de instrução (IDA) dopipeline de buscar inclui um estágio de IDA 35 paraprocessar os dados de endereço, deixados cair a partir doiCache 23 para extrair instruções efetivas.
Conseqüentemente, o terceiro ciclo (em elementos IDA 35 e39) processa os dados a partir da linha específica da cachede instrução 23 para recuperar pelo menos uma instrução,por exemplo, uma instrução de 16 ou 32 bits a partir de 8ou mais na linha, para saída para o estágio de Decodificar13. Aqueles versados na técnica entenderão que oprocessador pode ser projetado para extrair duas ou maisinstruções a partir de uma linha de dados de cache noestágio IDA.
Mais especificamente, endereços para instruçõessão providos ao primeiro estágio IC1 31 na ordem deexecução pretendida. Freqüentemente, a ordem é seqüencial,embora a execução de programa possa alterar a ordem, porexemplo, após ocorrência da condição para uma instrução dederivação condicional. Uma linha de memória da cache deinstrução 23 é acessada utilizando um indicadorcorrespondente. 0 primeiro estágio de processamento decache de instrução (IC1) 31 utiliza uma memória de conteúdoendereçável (CAM) para identificar indicadores para linhasde cache, em resposta aos endereços de instrução recebidos.
O indicador é um subconjunto do endereço utilizado paraprocurar instruções armazenadas em cache. Essencialmente, oestágio CAM (IC1) 31 toma o endereço (indicador) e comparao mesmo com os indicadores possíveis que poderiam casar nacache 23, criando um conjunto de resultados de busca. Essessão capturados no término do ciclo de CAM e utilizadosdurante o ciclo RAM (IC2) quando o endereço está no estágio33, de modo a dirigir os dados corretos para fora da cache23 para serem capturados no estágio de dados IDA 39. Atrava 37 mostrada na saida da cache 23 na figura 1 é umatrava transparente, no caso de pipeline impedir capturaimediata dos dados transmitidos pela cache para IDA.
Como observado acima, um indicador corresponde auma linha de memória na cache de instrução 23, porém cadalinha retém um número de instruções. Conseqüentemente, oprocessamento de um indicador para recuperar uma linhaespecificada a partir da memória recupera uma pluralidadede instruções armazenadas no estágio IC2 33. 0 terceiroestágio 35, mencionado aqui 'como o estágio IDA (alinhamentode dados de instrução), controla uma seção de processamentode dados IDA 39 para receber e processar dados a partir dalinha de instrução selecionada. A linha inferior ouregistro 37 da cache de instrução 23 retém os dados deinstrução a partir da linha de memória selecionada. A seçãode Dados IDA 39 inclui registro 41 para receber e processardados a partir da trava 37. Em um exemplo, o registro 41pode ser uma trava de 64 bits. 0 processamento de IDA noestágio 35 e o registro 37 essencialmente selecionam bitsapropriados a partir da parte inferior 39 da cache deinstrução 23, reorganiza aqueles bits como necessário demodo a alinhar os bits para reformar os mesmos como umainstrução, e transmite a instrução recuperada para oestágio de decodificar 13. Como discutido posteriormente,outros elementos da seção de Dados IDA 39 executam funçõesrelacionadas, como obter dados de instrução a partir dememórias de nivel mais elevado 25 e 27 no evento de umaperda de cache.Algumas arquiteturas de processador, comoprocessadores do tipo XARM' licenciados por Advanced RiscMachines Limited, suportam pelo menos dois conjuntos deinstrução, onde as instruções de um conjunto têm umcomprimento diferente daquelas no outro conjunto. Em umprocessador do tipo ARM, por exemplo, as instruções padrãotêm 32 bits de comprimento. 0 segundo conjunto deinstruções ou conjunto de instruções ^Thumb' consiste eminstruções compactadas de 16 bits e instruções de 32 bitscodificadas de forma diferente a partir de suas cópias noestado ARM. Instruções Thumb de 16 bits são descompactadasem seus equivalentes ARM de 32 bits e então podem serprocessadas no modo normal. Entretanto, devido aocomprimento reduzido, as instruções Thumb de 16 bitsrequerem menos armazenamento nos vários dispositivos dememória em ou associados ao processador 10. Tipicamente, asinstruções tendo o comprimento mais longo de palavraoferecem uma gama mais ampla de operações e/ou operaçõesmais potentes ou mais envolvidas. Como observado, asinstruções tendo comprimento mais curto de palavra provêemeconomia de memória para programas ou sub-rotinas para osquais as capacidades limitadas do conjunto de instruçãomenor são adequadas.
A máquina opera em um de vários "Estados" - ARM,Thumb, Jazelle-X/T2EE, etc... e somente pode atuar eminstruções que são arquitetadas para aquele Estado. EstadoARM inclui somente instruções de 32 bits, e qualquercodificação é legal nos cinco bits mais significativos.Estado Thumb inclui uma mistura de instruções de 16 e 32bits, como também T2EE. Nesses Estados, os cincos bits maissignificativos determinam se a instrução em questão é umainstrução de 16 bits ou uma instrução de 32 bits.Como mostrado na figura 3, um exemplo de umalinha de memória de cache de 256 bits pode reter oitoinstruções de 32 bits. Em ARM, cada instrução consiste emuma palavra de 32 bits, e cada instrução de 32 bits alinha-se com um limite de linha de palavra de 32 bits, porexemplo em linhas da cache de instrução 23. Se uma linha decache incluir somente instruções Thumb de 16 bits, porexemplo quando o processador está operando em um modoThumb, a mesma linha de cache pode reter dezesseisinstruções de 16 bits, como mostrado na figura 4. Algunsprocessadores e/ou alguns modos de operações, incluindoThumb., permitirão mistura de instruções de 32 bits e 16bits, e desse modo uma linha de cache conterá uma misturade instruções de 32 bits e 16 bits.
A figura 5 mostra duas linhas sucessivas, retendocombinações diferentes de instruções de 32 bits e 16 bitsem cada linha de cache. 0 arranjo das instruções nas linhasé puramente arbitrário e variará com o passar do tempo àmedida que o processador 10 opera em diferentes instruçõesThumb e ARM. Às vezes, as instruções alinhar-se-ão comlimites de linha de cache. Entretanto, situações ocorrerãoàs vezes, como representado pelo exemplo da figura 5, nasquais uma instrução de 32 bits cruza um limite entre duaslinhas de cache. Nesse exemplo, os últimos 16 bits naprimeira linha CL1 retêm metade A de uma instrução de 32bits. Os primeiros 16 bits na segunda linha CL2 retêm aoutra metade B da mesma instrução de 32 bits. Considereagora o processamento da instrução A-B através do pipelinede Busca 11 da figura 1.
Durante um primeiro ciclo de processamento, oestágio IC1 31 recebe inicialmente o endereço quecorresponde à linha CL1 contendo parte A e processa aqueleendereço para recuperar o indicador para a linha CL1. Nociclo de processamento seguinte, o estágio IC2 33 utilizaaquele indicador para acessar a linha CL1 e move os dadosnaquela linha para a trava 37 na parte inferior da cache deinstrução 23. A cache 23 também prove uma indicação deacerto na linha 43 de erro (M) ou acerto (H) indicando quea linha CL1 agora na trava 37 na parte inferior da cachecontém a parte desejada A da instrução. Enquanto IC2 estáprocessando os resultados de busca para CL1, isto querdizer durante o segundo ciclo de processamento, o estágioIC1 31 recebe o endereço seguinte, nesse caso, o endereçocorrespondendo à linha CL2 contendo parte B. O estágio IC131 processa aquele endereço para recuperar os resultados debusca para a linha CL2.
No terceiro ciclo de processamento de busca, oendereço para a linha CL1 contendo a parte A cai para o
eságio IDA 35. Em resposta à indicação de acerto (H) apartir do ciclo anterior, o processamento do estágio IDA 35faz com que o registro 41 na seção de Dados IDA 39 capturebits, incluindo os 16 bits da parte A da instrução, apartir da trava 37 na parte inferior da cache de instrução23. Ao mesmo tempo, o estágio IC2 33 utiliza o indicadorpara a linha CL2 para recuperar dados a partir daquelalinha de memória e carrega os dados na trava 37 na parteinferior da cache de instrução 23.
Quando o estágio IDA 35 recebe o primeiroendereço, examina os dados vindos da trava 37.
Essencialmente, está procurando os dados para a instruçãodesejada. Como parte de sua análise, identificará se ainstrução solicitada cruza um limite de linha de cache.
Utilizando ARM e Thumb como exemplos dasinstruções, uma instrução Thumb de 32 bits sempre começacom um de três valores possiveis para os 5 bits maissignificativos (11101; 11110; ou 11111). Essencialmente, alógica pode olhar em cada pedaço de 16 bits dos dados natrava 41. Se os 5 bits mais significativos não tiverem umdos três valores exigidos para uma instrução de 32 bits,então os 16 bits representam uma instrução Thumb.
Entretanto, cada vez que a lógica verifica que os 5 bitsmais significativos têm um dos três valores necessáriospara instruções de 32 bits, então reconhece os 16 bits comoa primeira metade de uma instrução de 32 bits. Considerandoque a partição não está na extremidade traseira da linha decache, os 16 bits seguintes serão a outra metade dainstrução de 32 bits. Se a partição com um dos três valorespara as instruções de 32 bits, como os 5 bits maissignificativos, estiver na extremidade traseira da linha decache, então a instrução de 32 bits cruza o limite de linhade cache. Conseqüentemente, o estágio IDA 35 podedeterminar que parte A da instrução está no término daprimeira linha CLl porém necessita olhar para outra linhapara encontrar a parte B da instrução desejada.
Inicialmente, assumimos para esse exemplo que aoutra parte da instrução estava contida na linha de cacheseguinte CL2. Durante o segundo ciclo de processamento debuscar, a cache 23 também prove uma indicação de acerto (H)na linha H/M 43 indicando que a linha CL2 agora na trava 37na parte inferior da cache 23 contém a parte desejada B dainstrução. Desse modo, a parte B aparece na parte inferiorda cache. O estágio IDA 35 novamente examina as seções de16 bits dos dados de linha de cache, e encontra o segundopedaço de 16 bits da instrução que cruzou o limite entre alinha CLl e a linha CL2. O estágio IDA 35 faz com que oregistro 41 capture a parte adicional B da instruçãodesejada. A trava de 64 bits que forma o registro 41 contémagora os dois pedaços da instrução desejada, embora ospedaços possam não ser adequadamente alinhados, comorepresentado diagramaticamente pela figura 6. Oprocessamento adicional pelo estágio de dados IDA 39 e oregistro 41 alinha e combina os bits de dados das duaspartes A e B em uma instrução de 32 bits, como representadodiagramaticamente pela figura 7, e passa a instruçãocombinada para o estágio de Decodificar 13.
0 exemplo precedente, assumiu que ambas as partesA e B da instrução desejada estavam presentes nas linhas decache CL1 e CL2 na cache de instrução 23, isto quer dizer,uma situação acerto-acerto. Aqueles versados na técnicaentenderão, entretanto, que esse nem sempre será o caso.Situações surgirão onde a tentativa de buscar a segundaparte da instrução resultarão em um perda de cache, comrelação aos dados de instrução na linha acessada da cachede instrução 23. Considere agora o caso de acerto-erro. Aprimeira parte A está presente na linha CL1 (acerto), poréma parte B não está inicialmente presente na linha CL2quando recuperada pelo processamento do estágio IC2 33(erro).
Como no exemplo anterior, durante um primeirociclo de processamento, o estágio IC1 31 recebeinicialmente o endereço que corresponde à linha CL1contendo a parte A e processa aquele endereço pararecuperar resultados de busca para a linha CL1. No ciclo deprocessamento seguinte, o estágio IC2 33 utiliza aquelesresultados de busca para acessar a linha CL1 e mover osdados naquela linha para a trava 37 na parte inferior dacache de instrução 23. A cache 23 também prove umaindicação de acerto (H) na linha 43 indicando que a linhaCL1 agora na trava 37 na parte inferior da cache contém aparte desejada A da instrução. Enquanto IC2 estáprocessando os resultados de busca para CL1, isto querdizer durante o segundo ciclo de processamento, o estágioIC1 31 recebe o endereço seguinte, nesse caso, o endereçoque corresponde à linha CL2 que se espera contenha a parteB. O estágio IC1 31 processa aquele endereço para recuperaros resultados de busca para a linha CL2.
No terceiro ciclo de processamento de busca, oendereço para a linha CLl contendo a parte A cai para oestágio IDA 35. Em. resposta à indicação de acerto (H) apartir do ciclo anterior, o processamento do estágio IDA 35faz com que o registro 41 na seção de Dados IDA 39 capturebits, incluindo os 16 bits da parte A da instrução, apartir da trava 37 na parte inferior da cache de instrução23. Ao mesmo tempo, o estágio IC2 33 tenta utilizar osresultados de busca para a linha CL2 para recuperar dados apartir daquela linha de memória e carregar os dados natrava 37 na parte inferior da cache de instrução 23.
Até esse ponto, o processamento do exemplo deacerto-erro é essencialmente igual ao primeiro exemplo deacerto-acerto. Nesse segundo exemplo, entretanto, quando oestágio IC2 33 moveria de outro modo os dados a partir dalinha CL2 para a trava 37, a cache 23 prove uma indicaçãode erro (M) na linha H/M 43 indicando que a linha CL2 agorana parte inferior da cache 23 não contém a parte B desejadada instrução.
Nesse exemplo, a instrução A-B cruza um limite delinha de cache, e a lógica na seção 11 determinou que tem(buscado com sucesso) a primeira parte A dos dados deinstrução na primeira linha CLl de dados acessados a partirda cache de instrução 23, porém a segunda parte B dos dadosde instrução não está na segunda linha CL2 de dadosacessados a partir da cache 23. Conseqüentemente, a lógicado estágio IDA 35 invalida a busca do endereçocorrespondendo à linha CLl (de modo a não passar nenhumdado de instrução para o estágio de Decodificar 13) . Alémdisso, quaisquer estágios do pipeline mais elevados do que(precedendo) o estágio contendo o segundo endereço de buscasão nivelados. Na arquitetura de Buscar de três estágiosilustrada, o estágio IC1 31 é o único estágio acima doestágio IC2 que retém o endereço para a linha CL2, de modo
que o estágio IC1 31 seja nivelado.
Nesse ponto, a lógica do estágio IDA 35 tambémretorna o primeiro endereço de busca correspondendo a CL1de volta para o inicio do pipeline de busca 11, através deum estágio de Buscar novamente 45. O estágio de Buscarnovamente 4 5 serve para prover o endereço reciclado como opróximo endereço entrado no estágio IC1 31 no cicloseguinte e redefinir a seqüência de entradas de endereçopara aquele primeiro endereço, de modo que endereços deentrada subseqüentes são aqueles que apropriadamente seguemem ordem após o endereço reciclado, nesse caso, após oendereço que identificou a linha de CL1 e parte A dainstrução. Especificamente, isso significa que quando oprocessamento reinicia com relação àquele primeiroendereço, o endereço correspondendo à linha CL2 que seespera contenha a parte B, fluirá novamente através dosestágios imediatamente após aquele primeiro endereço, comona primeira passagem através do pipeline de buscar 11.
Durante o terceiro ciclo de processamento, quandofoi determinado que a segunda linha CL2 produziu um erro, oestágio IC2 33 converteu a busca para aquela linha a partirde uma busca (F) para um toque (T) ou operação de pré-busca. Uma operação de busca recupera uma instrução e passaa instrução para o estágio de . Decodificar 13, que por suavez passa a mesma para execução eventual. Uma operação detoque (T) ou pré-busca somente extrai a instrução, . sabendoque sê á instrução não estiver ainda na cache de instrução23, o processamento carregará a instrução naquela cache 23.A pré-busca assegura que os dados de instrução estão nacache de instrução 23, para processamento posterior, semdeixar cair a instrução para os estágios posteriores paraexecução. Onde a operação resultou em um erro, issosignifica que o processamento de toque obterá os dados deinstrução necessários a partir de outros recursos dememória, como a cache L2 25 e/ou memória principal 27, e alinha de dados de instrução estará presente da próxima vezque o endereço relevante fluir através dos estágios daseção de Buscar 11.
A lógica do estágio IC2 33 inclui uma trava ousimilar contendo um campo do tipo T/F 47, tipicamente umbit de flag, que indica quando um endereço em processonaquele estágio 33 se refere a uma operação do tipo Toqueou Busca, A lógica do estágio IDA 35 inclui uma trava ousimilar contendo um campo do tipo T/F similar 49. Quando oestágio IC2 33 passa um endereço para o estágio IDA 35, oestágio IC2 33 passa a indicação do tipo T ou F a partir deseu campo 47 para o campo 49 no estágio IDA 35.
Para fins dessa discussão, quando o segundoendereço é inicialmente recebido no estágio IC2 33, osestágios IC2 tratam o mesmo como uma operação de busca (F) .
Entretanto, para a instrução que cruza um limite de linhade cache, quando a cache prove a indicação de erro (M) nalinha 43 indicando que o segundo pedaço B não está na linhade cache CL2, o estágio IC2 muda o F no tipo arquivado 47para um T, convertendo eficazmente a busca em um toque. Aseguir, passa a indicação de toque (T) para o estágio IDA35, como representado pela seta de linha pontilhada nafigura 1.
Durante o quarto ciclo de processamento, quando oprimeiro endereço foi passado para o estágio de Nova busca45, o segundo endereço é passado para. o estágio IDA 35. Comesse endereço, o estágio IC2 33 passa agora uma indicaçãode que o endereço deve ser utilizado somente paraprocessamento de pré-busca, por exemplo, pela passagem daindicarão de toque (T) para uso no campo 49 na lógica deestágio IDA. 0 estágio IDA 35 também sabe que os dados deinstrução desejados não estão na linha na cache, a partirda indicação de erro (M) na linha 43. Conseqüentemente, oestágio IDA 35 e seção de Dados IDA 39 podem iniciar etapaspara carregar os dados de instrução necessários a partirdo(s) recurso(s) de memória de nivel mais elevado. Oselementos IDA 35, 39 e 41 tratam o processamento de toquecom relação ao segundo endereço como uma pré-busca,essencialmente para carregar dados para a cache deinstrução 23, porém não passam nenhum resultado para oestágio de Decodificar 13. Como resultado, uma linha deinstrução é carregada a partir da memória de nivel maiselevado na cache 23 e é disponível para processamentoposterior.
Quando a seção de Buscar 11 processa a primeirabusca com relação ao primeiro endereço novamente, apósreciclagem, o segundo endereço segue novamente, porém alinha para o segundo endereço está agora na cache deinstrução LI 23. A parte B para a instrução desejada apartir da segunda linha CL2 pode ser deixada cair com aparte A a partir da primeira linha buscada CL2 durante oprocessamento IDA, substituindo um pedaço de dados de outromodo não necessário na linha, para completar a instruçãodesejada em uma linha de saida a partir da seção de Buscar11, exatamente como no exemplo acerto-acerto discutidoacima. Para apreciar essas operações, entretanto, pode serútil considerar as operações do toque para o segundoendereço de linha que atinge o estágio IDA de um certo modoem mais detalhe.A seção de Buscar 11 do pipeline inclui doisbuffers.. de enchimento 51 e 53, utilizados paratransferência de dados de instrução a partir da cache L2 25para o registro 41 na seção de Dados IDA 39. Quando umaoperação do tipo buscar para um endereço especificadoatinge o estágio IDA 35 e resulta em um erro (M) , a seçãode Dados IDA 39 envia uma solicitação para a linha deinstrução ausente para a cache L2 25. A cache L2 25 podeconter os dados para a linha solicitada, ou caso negativo,a cache L2 25 obtém os dados para a linha solicitada,tipicamente a partir da memória principal 27. A cache L2 25carrega metade da linha no buffer 51 e a outra metade nobuffer 53. A lógica da seção de Dados IDA 39 carrega aporção relevante dos dados de linha de cache no registro41, em um modo análogo ao carregamento daqueles dados apartir da trava 37 na cache 23 para dentro do registro 41.Ao mesmo tempo, os buffers 51 e 53 provêem a linha inteirade dados de instrução para a cache de instrução 23 paraarmazenamento e uso futuro.
Em nosso exemplo de acerto-erro, o toque para osegundo endereço de linha de cache utiliza essas operaçõesdos elementos IDA e os buffers de enchimento para carregaros dados para a linha necessária CL2 na cache de instrução23. Porções podem ir para a seção de dados IDA porémtipicamente não são carregados no registro IDA 41, uma vezque nenhum dado é deixado cair para o estágio deDecodificar. 0 estágio IDA considera esse primeiro fluxocom relação àquele endereço como sendo uma operação do tipotoque, isto é, uma pré-busca somente.
No ciclo seguinte após término do toque, oprimeiro endereço é processado novamente no estágio IC1 31para identificar o indicador para a primeira linha de cacheCL1. 0 estágio IC1 31 passa o primeiro indicador para oestágio IC2 33. No ciclo seguinte, o estágio IC2 lê a linhade cache IC1, enquanto o segundo endereço é processadonovamente no estágio IC2 33 para identificar o indicadorpara a primeira linha de cache CL2. 0 processamento doestágio IC2 33 carrega os dados a partir da linha CL1 paraa trava 37, e no ciclo seguinte, essa linha de dados caicom porções selecionadas fluindo para o registro IDA 41.
Com os dados CL1 relevantes no registro 41, o estágio IC233 lê a linha de cache CL2 e carrega os dados a partirdaquela linha para a trava 37. Nessa segunda passagem, asleituras das duas linhas de cache produzem acertos, como noexemplo acerto-acerto anterior.
Desse modo, a parte B aparece na parte inferiorda cache na segunda passagem das instruções através dopipeline da seção de Busca 11, e o estágio IDA 35 faz comque o registro .41 capture aquela parte adicional dainstrução desejada. A trava de 64 bits que forma o registro41 contém agora os dois pedaços da instrução desejada,embora os pedaços possam não ser adequadamente alinhados,novamente como representado diagramaticamente pela figura6. O processamento adicional pelo estágio de dados IDA 39 eregistro .41 alinha e combina os bits de dados das duaspartes A e B em uma instrução de 32 bits, como representadodiagramaticamente pela figura 7, e passa a instruçãocombinada para o estágio de Decodificar 13, como no exemploanterior.
No exemplo, quando o processamento retornou oprimeiro endereço de buscar para o inicio do pipeline debuscar 11, sua passagem inicial foi simultaneamenteinvalidada, de modo a não passar para o estágio de
Decodificar. Além disso, quaisquer estágios do pipelinemais elevados do que (precedentes) o estágio contendo osegundo endereço de trava foram nivelados. Quando oprimeiro endereço é reciclado, não há in-flight de endereçoentre o mesmo e o toque para o segundo endereço. Quando apré-busca está completa, o estágio IDA 35 descarta oendereço e os dados associados no registro IDA 41. Comoresultado, nenhum dado de linha de instrução é transmitidoa partir do pipeline de busca 11 até que a instruçãodesejada seja combinada durante a segunda passagem atravésdo pipeline de busca de instrução.
Com esse tipo de processamento, somente oselementos IDA podem iniciar uma busca a partir dos recursosde memória de nivel mais elevado. Isso facilita um desenhode processador com desempenho elevado, visto que há somenteum estágio no processamento de busca de instrução que fazsolicitações para recursos de memória de nivel maiselevado. O primeiro endereço reciclado normalmente gastasomente um ciclo em Nova busca 45 antes de cair de volta emIC1, IC2 e então IDA. Nesses casos, normalmente não épossivel que a cache L2 25 já tenha retornado o segundopedaço dos dados de instrução para a cache 23 a tempo paraa segunda passagem através dos estágios de busca.Conseqüentemente, o estágio IDA senta e espera a cache L225 e recebe a segunda metade dos dados de instruçãodiretamente a partir dos buffers de enchimento 51, 53.
No exemplo precedente, o processamento das duaslinhas para a instrução que cruza o limite de linha decache resultou em um acerto-erro, em que a primeira linhacontinha parte da instrução porém a segunda linha nãocontinha. Processamento substancialmente similar aplica-seno caso onde nenhuma linha de cache contém a parte desejadada instrução, isto quer dizer o caso erro-erro. Nesse casoposterior, o processamento para a primeira linha obtém osdados a partir da cache L2 25 ou memória principal 27 ecarrega a linha de dados de instrução na cache de instrução23. Após determinar que a segunda linha é um erro, oprimeiro endereço é reciclado; a segunda busca é convertidaem um toque; e o processamento continua como no exemploacerto-erro.
0 caso onde a primeira linha de cache não contémparte da instrução desejada porém a segunda linha contém(erro-acerto) flui através dos estágios da seção de Buscar11 de forma muito similar para o caso de um acerto-acerto.0 processamento da primeira linha resulta em um erro, porémo processamento IDA obtém a linha necessária de dados deinstrução a partir de recursos de memória de nivel maiselevado. Os bits são selecionados a partir dos buffers deenchimento 51, 53 para povoar o registro IDA 41 para aprimeira linha. Após isso, o processamento da segunda linhaa partir da trava 37 (o acerto na segunda linha) é igual aodo exemplo acerto-acerto.
Para resumir a lógica de processamento, umadeterminação é feita quando uma operação de busca deinstrução primeiramente atinge o estágio IDA 35 e tem todosos dados de instrução para sua linha de cache alvodisponível. 0 estágio de IDA determina se a instrução cruzaum limite de linha. Caso negativo, o estágio IDA processa ainstrução no modo normal. Caso haja um cruzamento de limitede linha, entretanto, a lógica do estágio IDA 35 olha aindicação de acerto/erro a partir da cache 23 paradeterminar se há um acerto na linha seguinte que deveconter o segundo pedaço da instrução de cruzamento delimite. Caso positivo, então o estágio IDA pode capturar osegundo pedaço a partir da cache e prover a instruçãocompleta para o estágio de Decodificar 13. Entretanto, sehouver um erro na linha seguinte pendente no estágio IC233, isto quer dizer se a linha de cache seguinte nãocontiver o segundo pedaço necessário da instrução que cruzalimite, " então os estágios IDA e IC2 implementam oprocessamento ensinado aqui.
Em tal caso, o estágio IDA 35 invalida a buscaatual em relação ao primeiro endereço e recicla o endereçopara a primeira linha de cache, por exemplo, através doestágio de Buscar novamente 45. 0 endereço para a segundalinha cai para o estágio IDA 35. Entretanto, ao fazer isso,o processo para o segundo endereço foi convertido a partirde uma operação do tipo busca para uma operação do tipopré-busca. 0 estágio IC1 é nivelado. 0 estágio IDA iniciaoperações para carregar os dados de instrução necessários apartir da cache L2 25 e/ou a partir da memória principal27. Até o momento do término desse upload, os dados sãoarmazenados na cache de instrução 23, e o estágio IC1 31pode reiniciar o processamento a partir do primeiroendereço reciclado. À medida que os dois endereços fluematravés dos estágios da seção de Buscar 11 uma segunda vez,todos os dados necessários para a instrução de cruzarlimite estão presentes nas duas linhas apropriadas namemória de cache 23, e a seção de Buscar pode recuperaresses pedaços, compilar os bits dos mesmos em uma instruçãoe transmitir a instrução para o estágio seguinte pelopipeline 10, por exemplo, para decodificação.
0 processamento delineado acima se aplica quandoa cache de instrução 23 é totalmente operacional.Entretanto, processamento similar pode ser aplicado paracarregamento de dados através dos buffers de enchimento 51e 53, em momentos em que a cache de instrução 23 édesabilitada, por exemplo, durante partida. Nesse caso, ofluxo de processo resulta essencialmente em uma situação deerro-erro nas linhas da cache 23. Quando o segundo endereçoé convertido em um toque, um dos buffers de enchimento éutilizado como uma cache temporária para reter a metaderelevante da linha para o pedaço de instrução B. Quando aprimeira instrução cicla de volta através, a porçãorelevante da primeira linha é carregada para o outro bufferde enchimento, e a seção de Dados IDA pode compilar ainstrução a partir dos dois buffers 51 e 53, essencialmentecomo seria para uma instrução que não tinha cruzado umlimite de linha.
Os números de bits dados na discussão acima, comoos comprimentos de 16 e 32 bits dos tipos diferentes deinstruções, o comprimento de 8 palavras das linhas de cachee os diversos tamanhos das travas, registradores e bufferssão somente exemplos representativos. Aqueles versados natécnica reconhecerão que comprimentos de instrução etamanhos de vários componentes podem ser mais longos oumais curtos em diferentes arquiteturas de processador eimplementações. Além disso, pode haver uma gama mais amplade tamanhos de instrução possíveis na mistura, por exemplo,16 bits, ..32 bits, 64 bits, ou mais. Além disso, o número deestágios na seção de Buscar 11 ou mesmo no pipeline 10 podevariar consideravelmente, ainda assim o processador podeimplementar seu processamento de busca de instruçõescruzando limites de linha de acordo com ensinamentos aquidiscutidos.
Embora o acima tenha descrito o que é consideradocomo sendo o melhor modo e/ou outros exemplos, entende-seque várias modificações podem ser feitas na mesma e que amatéria aqui revelada pode ser implementadas em váriasformas e exemplos, e que os ensinamentos podem seraplicados em inúmeras aplicações, somente algumas das quaisforam aqui descritas. Pretende-se pelas reivindicações quese seguem reivindicar todas e quaisquer aplicações,modificações e variações que estejam compreendidas noverdadeiro escopo dos presentes ensinamentos.

Claims (18)

1. Método de buscar uma instrução a partir damemória para execução em um processador programável, noqual as instruções podem cruzar um limite de linha dememória, o método compreendendo:buscar inicialmente uma primeira linha de dadosde instrução em resposta a um primeiro endereço;determinar a partir da primeira linha de dados deinstrução se uma instrução a ser buscada cruza um limiteentre a primeira linha de dados de instrução e uma segundalinha de dados de instrução, onde a primeira linha busca dedados de instrução contém um primeiro pedaço da instrução aser buscada;após determinar que a instrução a ser buscadacruza o limite, determinar se uma linha de memória de cachecorrespondendo a um segundo endereço contém ou não umsegundo pedaço da instrução a ser buscada;após determinar que a memória de cachecorrespondendo ao segundo endereço não contém o segundopedaço da instrução a ser buscado:a) invalidar a busca inicial da primeira linha dedados de instrução e reciclar o primeiro endereço;b) pré-buscar a segunda linha de dados deinstrução a partir de um recurso de memória de nivel maiselevado;c) em resposta ao primeiro endereço reciclado,buscaria primeira linha de dados de instrução;d) buscar a segunda linha pré-busca de dados deinstrução em resposta ao segundo endereço; ee) copilar os pedaços da instrução a serembuscados a partir das primeira e segunda linhas de dados deinstrução buscadas.
2. Método, de acordo com a reivindicação 1, emque a invalidação da busca inicial da primeira linha dedados de instrução evita saida de qualquer da instrução aser buscada a partir da primeira linha de dados deinstrução inicialmente buscada para outros elementos doprocessador.
3. Método, de acordo com a reivindicação 2, emque a pré-busca carrega a segunda linha de dados deinstrução a partir do recurso de memória de nivel maiselevado na memória de cache sem saida de qualquer dasegunda linha de dados de instrução para outros elementosdo processador antes da busca subseqüente da segunda linhade dados de instrução a partir da memória de cache.
4. Método, de acordo com a reivindicação 3, emque a etapa de pré-busca abrange a conversão de umaoperação de busca com relação ao segundo endereço em umaoperação de toque com relação ao segundo endereço.
5. Método, de acordo com a reivindicação 1,compreendendo ainda nivelar qualquer processamentorelacionado à busca que já possa ter iniciado com relação aum endereço subseqüente, após a determinação de que amemória» de cache correspondendo ao segundo endereço nãocontém o segundo pedaço da instrução a ser buscada.
6. Método de buscar uma instrução para umprocessador programável, compreendendo:detectar que uma instrução a ser buscada cruza umlimite entre linhas de instrução;após buscar uma primeira linha de dados deinstrução contendo um primeiro pedaço da instrução quecruza limite, detectar que um segundo pedaço da instruçãoque cruza limite não está em memória de cache;resposta à detecção de que o segundo pedaço nãoestá na :>memória de cache, reciclar a busca da primeiralinha de dados de instrução sem saida de qualquer dainstrução a ser buscada a partir da primeira linha de dadosde instrução;pré-buscar uma segunda linha de dados deinstrução;com base na reciclagem, buscar a primeira linhade dados de instrução, e buscar a segunda linha de dados deinstrução pré-buscados; ecombinar os pedaços a partir das primeira esegunda linhas de dados de instrução buscados paratransmitir a instrução de cruzar limite.
7. Método, de acordo com a reivindicação 6, emque a reciclagem da busca da primeira linha compreendeinvalidar qualquer porção da instrução a ser buscada apartir da primeira linha que foi buscada antes da detecçãode que o segundo pedaço não está na memória de cache.
8. Método, de acordo com a reivindicação 6, emque a pré-busca da segunda linha inclui converter umaoperação de busca com relação à segunda linha em pré-buscacom relação à segunda linha.
9. Método, de acordo com a reivindicação 6,compreendendo ainda nivelar qualquer operação de busca emprogresso entre a pré-busca da segunda linha e a buscareciclada da primeira linha.
10. Seção de busca para um processador depipeline, compreendendo:umS cache de instrução;um primeiro estágio de processamento de cache deinstrução para identificar uma linha de cachecorrespondendo a cada endereço respectivo em uma seqüênciade entrada de endereços;um segundo estágio de processamento de cache deinstrução, responsivo a cada identificação de uma linha decache, para leitura de dados de instrução a partir de umalinha de memória na cache correspondendo ao endereçorespectivo;uma seção de alinhamento de dados de instrução,responsivo a uma ou mais linhas de dados de instrução lidaspelo segundo estágio de processamento de cache de instruçãopara transmitir instruções buscadas, a seção de alinhamentode dados de instrução também obtendo dados a partir de umrecurso de memória de nivel mais elevado para qualquerinstrução ou porção da mesma não encontrada inicialmente nacache de instrução; emeio para reciclar uma busca com relação a umprimeiro endereço para o primeiro estágio de processamentode cache de instrução e para converter uma busca comrelação ao segundo endereço em uma pré-busca para fazer comque a seção de alinhamento de dados de instrução carregueuma linha de dados de instrução a partir do recurso dememória de nivel mais elevado na cache de instrução, apósdetectar que uma instrução cruza um limite entre as linhascorrespondendo aos primeiro e segundo endereços e uma linhada cache correspondendo ao segundo endereço não contéminicialmente um pedaço da instrução que cruza limite.
11. Estágio de busca, de acordo com areivindicação 10, em que cada linha da cache de instruçãopode armazenar uma pluralidade de instruções de dois oumais comprimentos diferentes.
12. Estágio de busca, de acordo com areivindicação 10, em que o meio para reciclagem inclui umestágio de busca novamente para passar o primeiro endereçode volta para uma entrada do primeiro estágio deprocessamento de cache de instrução.
13. Processador de pipeline compreendendo oestágio de busca, de acordo com a reivindicação 10,compreendendo ainda um estágio de decodificar paradecodificar as instruções buscadas, um estágio de leiturapara obter dados de operando para processamento de acordocom instruções decodificadas, um estágio de execução paraexecutar instruções decodificadas em dados de operando, eum estágio de responder para gravar resultados de execuçãopara armazenamento.
14. Seção de busca para um processador depipeline, compreendendo:umS cache de instrução;pelo menos um estágio de processamento paraprocessar cada de uma pluralidade de endereços emseqüência, para identificar uma linha de memória na cachede instrução que pode conter uma instrução ou uma porção damesma correspondendo a cada respectivo endereço e para lerdados a partir da linha identificada; emeio para detectar uma instrução a ser buscadacruzando um limite de linha de cache e ausência de umaporção da instrução que cruza limite em uma segunda de duaslinhas de cache endereçadas, e em resposta, para invalidaruma busca com relação a um endereço correspondendo a umaprimeira das duas linhas de cache e reciclar o endereçocorrespondente para entrada em pelo menos um estágio deprocessamento e pré-buscar dados contendo a porção ausentepara a segunda linha de cache a partir da memória de nivelmais elevado para permitir busca completa da instrução quecruza o limite em um segundo fluxo do endereçocorrespondente através da seção de busca.
15. Seção de busca, de acordo com a reivindicação-14, em que pelo menos um estágio de processamento inclui:um primeiro estágio de processamento de cache deinstrução para identificar uma linha de cachecorrespondendo a cada endereço respectivo em uma seqüênciade entrada de endereços;um segundo estágio de processamento de cache deinstrução, responsivo a cada identificação de uma linha decache, para leitura de dados de instrução a partir de umalinha de memória na cache correspondendo ao endereçorespectivo; euma seção de alinhamento de dados de instrução,responsiva a uma ou mais linhas de dados de instrução lidospelo segundo estágio de processamento de cache de instruçãopara transmitir instruções buscadas, a seção de alinhamentode dados de instrução também obtendo dados a partir de umrecurso de memória de nivel mais elevado para qualquerinstrução ou porção da mesma não inicialmente encontrada nacache de instrução.
16. Estágio de busca, de acordo como areivindicação 14, em que cada linha da cache de instruçãopode armazenar uma pluralidade de instruções de dois oumais comprimentos diferentes.
17. Estágio de busca, de acordo com areivindicação 14, em que o meio para reciclagem inclui umestágio de buscar novamente para passar o primeiro endereçode volta para uma entrada de pelo menos um estágio deprocessamento.
18. Processador de pipeline compreendendo oestágio de busca, de acordo com a reivindicação 14,compreendendo ainda: um estágio de decodificar paradecodificar as instruções buscadas, um estágio de leiturapara obter dados de operando para processamento de acordocom instruções decodificadas, um estágio de execução paraexecutar instruções decodificadas em dados de operando, eum es'tágio de responder para gravar resultados de execuçãopara armazenamento.
BRPI0610069-4A 2005-05-18 2006-05-18 lidar com perda de cache em uma instrução cruzando uma fronteira de linha de cache BRPI0610069A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/132,749 US7404042B2 (en) 2005-05-18 2005-05-18 Handling cache miss in an instruction crossing a cache line boundary
US11/132,749 2005-05-18
PCT/US2006/019789 WO2006125220A2 (en) 2005-05-18 2006-05-18 Handling cache miss in an instruction crossing a cache line boundary

Publications (1)

Publication Number Publication Date
BRPI0610069A2 true BRPI0610069A2 (pt) 2010-05-25

Family

ID=37025150

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0610069-4A BRPI0610069A2 (pt) 2005-05-18 2006-05-18 lidar com perda de cache em uma instrução cruzando uma fronteira de linha de cache

Country Status (9)

Country Link
US (1) US7404042B2 (pt)
EP (1) EP1886218B1 (pt)
JP (1) JP5059749B2 (pt)
KR (1) KR100974023B1 (pt)
CN (1) CN100583028C (pt)
BR (1) BRPI0610069A2 (pt)
IL (1) IL187464A0 (pt)
TW (1) TWI319157B (pt)
WO (1) WO2006125220A2 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454596B2 (en) * 2006-06-29 2008-11-18 Intel Corporation Method and apparatus for partitioned pipelined fetching of multiple execution threads
US8239657B2 (en) * 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US20120144123A1 (en) 2010-12-01 2012-06-07 International Business Machines Corporation Read-ahead processing in networked client-server architecture
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US10120692B2 (en) 2011-07-28 2018-11-06 Qualcomm Incorporated Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form
WO2013101031A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US9460018B2 (en) 2012-05-09 2016-10-04 Qualcomm Incorporated Method and apparatus for tracking extra data permissions in an instruction cache
US8819342B2 (en) * 2012-09-26 2014-08-26 Qualcomm Incorporated Methods and apparatus for managing page crossing instructions with different cacheability
US9424046B2 (en) 2012-10-11 2016-08-23 Soft Machines Inc. Systems and methods for load canceling in a processor that is connected to an external interconnect fabric
US9348754B2 (en) 2012-10-11 2016-05-24 Soft Machines Inc. Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher
US10671391B2 (en) * 2014-02-25 2020-06-02 MIPS Tech, LLC Modeless instruction execution with 64/32-bit addressing
US9495297B2 (en) 2014-07-22 2016-11-15 International Business Machines Corporation Cache line crossing load techniques for a caching system
CN109240944B (zh) * 2018-08-16 2021-02-19 上海天数智芯半导体有限公司 一种基于可变长缓存行的数据读写方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
US6167506A (en) * 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
US6938126B2 (en) * 2002-04-12 2005-08-30 Intel Corporation Cache-line reuse-buffer
US6877082B1 (en) * 2002-12-23 2005-04-05 Lsi Logic Corporation Central processing unit including address generation system and instruction fetch apparatus
US7437512B2 (en) * 2004-02-26 2008-10-14 Marvell International Ltd. Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions
US7437537B2 (en) * 2005-02-17 2008-10-14 Qualcomm Incorporated Methods and apparatus for predicting unaligned memory access
US7509472B2 (en) * 2006-02-01 2009-03-24 Sun Microsystems, Inc. Collapsible front-end translation for instruction fetch
US7917731B2 (en) * 2006-08-02 2011-03-29 Qualcomm Incorporated Method and apparatus for prefetching non-sequential instruction addresses

Also Published As

Publication number Publication date
TWI319157B (en) 2010-01-01
EP1886218B1 (en) 2018-10-24
JP2008541314A (ja) 2008-11-20
US20060265572A1 (en) 2006-11-23
TW200713033A (en) 2007-04-01
WO2006125220A3 (en) 2007-05-10
CN100583028C (zh) 2010-01-20
EP1886218A2 (en) 2008-02-13
KR20080015017A (ko) 2008-02-15
IL187464A0 (en) 2008-03-20
US7404042B2 (en) 2008-07-22
KR100974023B1 (ko) 2010-08-05
JP5059749B2 (ja) 2012-10-31
CN101223503A (zh) 2008-07-16
WO2006125220A2 (en) 2006-11-23

Similar Documents

Publication Publication Date Title
BRPI0610069A2 (pt) lidar com perda de cache em uma instrução cruzando uma fronteira de linha de cache
TWI770009B (zh) 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
KR100783828B1 (ko) 단일 스레드 프로그램의 암시적 멀티스레디드 실행을 행할수 있는 멀티스레디드 프로세서
US7546420B1 (en) Efficient trace cache management during self-modifying code processing
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
US20070050592A1 (en) Method and apparatus for accessing misaligned data streams
US9740623B2 (en) Object liveness tracking for use in processing device cache
KR101787851B1 (ko) 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법
Ghose et al. The processing-in-memory paradigm: Mechanisms to enable adoption
US20200233664A1 (en) Efficient range-based memory writeback to improve host to device communication for optimal power and performance
TWI564798B (zh) 於多核心處理器中的先前存取資料之檢索技術
US11016893B2 (en) Method and apparatus for smart store operations with conditional ownership requests
US20140201446A1 (en) High bandwidth full-block write commands
US9201792B2 (en) Short circuit of probes in a chain
CN111353156A (zh) 可缩放多密钥总存储器加密引擎
KR20210070935A (ko) 보안 멀티쓰레딩 실행을 위한 파이프라인들
US20040181626A1 (en) Partial linearly tagged cache memory system
JP2020536310A (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US11500779B1 (en) Vector prefetching for computing systems
CN113849222A (zh) 流水线化乱序页未命中处理程序
US7234027B2 (en) Instructions for test & set with selectively enabled cache invalidate
US20230161709A1 (en) Processor, computer system, and method for flushing hierarchical cache structure based on a designated key identification code and a designated address
US11693780B2 (en) System, method, and apparatus for enhanced pointer identification and prefetching

Legal Events

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

Free format text: REFERENTE A 6A 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: NAO APRESENTADA A GUIA DE CUMPRIMENTO DE EXIGENCIA. REFERENTE A 6A ANUIDADE.