BRPI0710171A2 - cache de instruções marcada virtualmente com comportamento marcado fisicamente - Google Patents

cache de instruções marcada virtualmente com comportamento marcado fisicamente Download PDF

Info

Publication number
BRPI0710171A2
BRPI0710171A2 BRPI0710171-6A BRPI0710171A BRPI0710171A2 BR PI0710171 A2 BRPI0710171 A2 BR PI0710171A2 BR PI0710171 A BRPI0710171 A BR PI0710171A BR PI0710171 A2 BRPI0710171 A2 BR PI0710171A2
Authority
BR
Brazil
Prior art keywords
cache
instruction
invalidate
instruction cache
virtually
Prior art date
Application number
BRPI0710171-6A
Other languages
English (en)
Inventor
Thomas Andrew Sartorius
Rodney Wayne Smith
Daren Eugene Streett
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38582274&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0710171(A2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0710171A2 publication Critical patent/BRPI0710171A2/pt

Links

Classifications

    • 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
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

CACHE DE INSTRUçõES MARCADA VIRTUALMENTE COM COMPORTAMENTO MARCADO FISICAMENTE é descrito um sistema de cache de instruções possuindo uma cache de instruções marcada virtualmente que, do ponto de vista de um programa de software, opera como se fosse uma cache de instruções marcada fisicamente. O sistema de cache de instruções inclui também um dispositivo para endereçar translação que responde a uma instrução de invalidar endereçar translação e um circuito lógico de controle, O circuito lógico de controle está configurado para invalidar uma entrada na cache de instruções marcada virtualmente em resposta à instrução de invalidar endereçar translação.

Description

"CACHE DE INSTRUÇÕES MARCADA VIRTUALMENTE COM COMPORTAMENTO
MARCADO FISICAMENTE"PEDIDOS CORRELACIONADOS
O presente pedido de patente reivindica aprioridade do Pedido Provisório de Patente U.S. N- de Série60/793 016, depositado em 19 de abril de 2006, e do PedidoProvisório de Patente U.S. N- de Série 60/793 015,depositado em 19 de abril de 2006, ambos aqui incorporadosem sua totalidade pela presente referência.
CAMPO
A presente invenção está de um modo geralrelacionada a sistemas de processamento e maisespecificamente a sistemas de cache marcada virtualmente.
FUNDAMENTOS
Os sistemas de processador comum utilizam oconceito de tradução de endereços em um encadeamento(pipeline) de processador para modificar o endereço de umapágina de dados ou instruções de seu endereço virtual dearmazenamento para seu endereço de armazenamento real,fisico. Um dispositivo de tradução de endereço utiliza umbuffer de previsão de tradução (TLB) que armazenaconvencionalmente várias entradas, em que cada entradainclui um identificador de espaço de aplicativo (ASID),também designado como um identificador de processo (PID),um marcador (tag) de endereço virtual (VT) e um número depágina física (PPN). Dessa forma, o buffer de previsão detradução contém o mapeamento entre um endereço virtual e umendereço físico. Em sua forma mais simples, a linha doprocessador recebe como entrada um endereço virtual de umainstrução, compara uma parte do endereço virtual com asentradas no TLB para encontrar uma entrada correspondente esubstitui a parte do endereço virtual pelo número de páginafísica associada à entrada correspondente para formar umendereço físico. Um dado mapeamento de um endereço físicopara um endereço virtual de um modo geral cobre uma faixado espaço de endereços físico e virtual, tal faixa sendodesignada como uma "página", com o tamanho de uma páginasendo de um modo geral maior do que o tamanho de uma linhade cache em uma cache de instruções, de tal forma quevárias linhas de cache podem estar todas associadas à mesmapágina do espaço de endereço virtual ou físico.
Os sistemas de processador comum incluem tambémuma ou mais caches de instruções que armazenam instruçõesrecém usadas em memória rápida "on-chip" para minimizar oretardo resultante da recuperação de instruções a partir dememórias "off-chip" mais lentas. Uma cache de instruçõespode estar indexada para pesquisa eficiente de uma entrada.0 termo "indexado", tal como usado com relação a caches deinstruções, significa um conjunto de bits em um endereçovirtual ou um endereço físico que é utilizado paraespecificar um conjunto em uma cache de instruçõesassociativo a conjuntos ou uma fila em uma cache deinstruções mapeada diretamente. Uma cache de instruçõesindexada por bits dentro de um endereço virtual é conhecidacomo uma cache indexada virtualmente. Uma cache deinstruções indexada por bits dentro de um endereço físico éconhecida como uma cache indexada fisicamente.
As entradas em uma cache de instruções podemestar marcadas com uma chave a qual é comparada com umaparte de um endereço físico ou uma parte de um endereçovirtual. Uma cache de instruções marcada com uma parte deum endereço físico é conhecida como uma cache de instruçõesmarcada fisicamente. Uma cache de instruções marcada comuma parte de um endereço virtual é conhecida como uma cachede instruções marcada virtualmente. Um projetista de umprocessador escolhe como uma cache de instruções seráindexada e marcada. As caches de instruções convencionaispodem ser indexadas virtualmente e marcadas virtualmente(VIVT), indexadas virtualmente e marcadas fisicamente(VIPT), ou indexadas fisicamente e marcadas fisicamente(PIPT). Através de tradução de endereços, um endereçovirtual é convertido para um endereço físico, o qual podeser utilizado para procurar por uma entrada em uma cache deinstruções marcada fisicamente, ou para acessar uma memóriareal no caso de uma perda ou erro de cache de instruções.
Além de um marcador de endereço virtual, ascaches de instruções marcadas virtualmente convencionaiscomumente incluem um ASID ou um marcador PID. Tal marcadorpermite ao sistema processador diferenciar se uma entradade endereço é válida para o processo de software ativo.Como exemplo, caso o sistema processador esteja executandoinstruções associadas a um processo de software possuindo oASID "x", uma comparação de cache bem sucedida iriarequerer a correspondência tanto do marcador ASID como domarcador de instrução de endereço virtual. Devido a váriassituações, tais como a troca de um ASID ativo, isto é, asubstituição de um processo que usa um dado valor de ASIDpor um novo processo usando o mesmo valor de ASID, ascaches de instruções marcadas virtualmente podem possuiruma ou mais entradas que se tornam obsoletas e não são maisválidas. Dado que acertos ou "hits" de cache economizamtempo do processador para recuperar instruções a partir damemória, os projetistas de sistemas processadores desejamcoerência da cache, uma cache cujo conteúdo refleteinstruções válidas, não obsoletas. Para manter a coerênciade cache, as entradas em uma cache são comumenteinvalidadas em resposta a instruções para invalidar cachede instruções comuns emitidas por um aplicativo desoftware. A quantidade de gerenciamento de uma cache deinstruções requerida pelo aplicativo de software depende dese a cache de instruções é marcada virtualmente ou marcadafisicamente. Dado que um* ou mais endereços virtuais podemestar mapeados para um dado endereço físico, podem ocorrerproblemas de alias e sinônimo em uma cache de instruçõesmarcada virtualmente convencional.
O problema de alias ocorre quando duas ou maisentradas de cache I contendo diferentes combinações deendereço virtual/ASID são mapeadas para o mesmo endereçofísico. Tais combinações diferentes podem ocorrer devido àstrês razões que se seguem. Primeira, o endereço virtual deduas ou mais entradas de cache I podem ser literalmentediferentes porém fazem parte do mesmo processo de softwarepossuindo o mesmo valor do campo ASID. Segunda, osendereços virtuais de duas ou mais entradas de cache Ipodem ser iguais, porém estarem associados a diferentesprocessos de software e, portanto, associados a diferentesvalores do campo ASID. Terceira, os endereços virtuais deduas ou mais entradas de cache I podem ser todos diferentese estar associados a diferentes processos de software,estando, portanto, associados a diferentes valores de ASID.Em qualquer dos três casos, as diferentes combinações podemser mapeadas para o mesmo endereço físico. Como resultadode tal problema de alias, as caches de instruções marcadasvirtualmente convencionais impõem uma carga sobre umaplicativo de software para emitir instruções parainvalidar caches I para mais situações do que o requeridopor uma cache de instruções marcada fisicamente. Comoexemplo, um aplicativo de software escrito para caches deinstruções marcadas virtualmente teria que emitirinstruções para invalidar caches de instruções parainvalidar cada endereço virtual na cache de instruções quepossa estar associada a um endereço físico que se tornoupor si não válido ou que tenha sido modificado.
O problema de sinônimos diz respeito a duas oumais entradas de cache I que estão localizadas emdiferentes índices virtuais da cache I, mas que estãoassociadas ao mesmo endereço físico. 0 problema desinônimos pode ocorrer em caches I indexadas virtualmenteconvencionais independentemente de se tais caches I sãomarcadas virtual ou fisicamente.
As caches de instruções marcadas virtualmentetambém impõem outra carga adicional sobre o software porinvalidar entradas de cache I, em comparação a caches deinstruções marcadas fisicamente. Especificamente, quando omapeamento para a combinação de um dado ASID e página doespaço de endereço virtual é modificado de um endereçofisico para outro, não mais são válidas todas as entradasde cache I em uma cache I marcada virtualmente que estãoassociadas a tal combinação de ASID e página do espaço deendereço virtual, dado que a cache I pode ter armazenado oconteúdo dos locais de memória física anteriores associadosao mapeamento anterior, em lugar do conteúdo dos novoslocais de memória física associados ao novo mapeamento. Talpermanece verdadeiro mesmo que o conteúdo real dos locaisde memória física antigos e novos possa não ter mudado.Portanto, um software escrito para gerenciar uma cache deinstruções marcada virtualmente deve executar operações deinvalidar uma cache de instruções para invalidar todas asentradas de cache de instruções que possam estar associadasà combinação de ASID e página do espaço de endereço virtualpara o qual foi modificado o mapeamento.
Em um processador com uma cache de instruçõesmarcada virtualmente, a tradução de endereços pode serefetuada em um encadeamento em paralelo com a consulta ainstruções provenientes da cache de instruções marcadavirtualmente. Dessa forma, tal paralelismo propicia umapoderosa potência, freqüência e capacidade de transmissãode instruções quando são utilizadas caches de instruçõesmarcadas virtualmente. Portanto, existe uma demanda por umsistema e métodos de caches de instruções que propiciem asvantagens de uma cache de instruções marcada virtualmenteconvencional, eliminando porém a carga adicional exercidasobre aplicativos de software por caches de instruçõesmarcadas virtualmente convencionais com referência aogerenciamento de entradas e que não imponha demandasadicionais a aplicativos de software.
SUMÁRIO
Um aspecto da invenção descreve um sistema decache de instruções que apresenta as vantagens de uma cachede instruções marcada virtualmente e de uma cache deinstruções marcada fisicamente. Tal modalidade da presenteinvenção utiliza uma cache de instruções marcadavirtualmente que, do ponto de vista de um programa desoftware, opera como uma cache de instruções marcadafisicamente.
Outro aspecto da invenção descreve que endereçosvirtuais ou partes dos mesmos são utilizados comomarcadores tanto em um dispositivo de tradução de endereçoscomo em uma cache de instruções marcada virtualmente. Emtal modalidade, instruções não válidas direcionadas aodispositivo de tradução de endereço podem seradicionalmente utilizadas para invalidar entradas na cachede instruções marcada virtualmente.
Em outro aspecto da invenção, um sistema de cachede instruções inclui uma cache de instruções marcadavirtualmente, um dispositivo para tradução de endereços eum circuito lógico de controle. O dispositivo para traduçãode endereços responde a uma instrução de invalidar atradução de endereço. O circuito lógico de controle estáconfigurado para invalidar uma entrada na cache deinstruções marcada virtualmente em resposta à instrução deinvalidar a tradução de endereço.
Em mais outro aspecto, é descrito um método paraque uma cache de instruções marcada virtualmente paraoperar tal como se ele fosse uma cache de instruçõesmarcada fisicamente do ponto de vista de um programa desoftware. O método inclui receber uma instrução deinvalidar uma tradução de endereço e invalidar uma entradaem uma cache de instruções marcada virtualmente em respostaà instrução de invalidar tradução de endereço.
Em mais outro aspecto, é descrito um circuitológico de controle para ordenar a uma cache de instruções marcada virtualmente a operar como se ele fosse umainstrução marcada fisicamente. O circuito lógico decontrole inclui uma primeira entrada para receber umainstrução de invalidar uma tradução de endereço e umdispositivo para gerar sinais de controle para invalidar uma entrada na cache de instruções marcada virtualmente emresposta à instrução de invalidar a tradução de endereço.
Deve ficar claro que outras modalidades dapresente invenção ficarão prontamente claras para ostécnicos na área através da descrição detalhada que se segue, em que várias modalidades da invenção sãoapresentadas e descritas como ilustração. Como será notado,a invenção pode assumir outras modalidades e seus diversosdetalhes podem ser modificados com relação a vários outrospontos, sempre sem constituir um afastamento da presente invenção. Assim sendo, os desenhos e a descrição detalhadadevem ser considerados como sendo de natureza ilustrativa enão restritiva.
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 é um diagrama de blocos funcional de uma modalidade de um processador.
A Figura 2 é uma descrição mais detalhada dosistema de cache de instruções da Figura 1.
A Figura 3 é um diagrama de blocos ilustrando ainvalidação seletiva de um conjunto de entradas de cache I marcadas virtualmente que poderiam ser associadas a umendereço físico em uma cache I mapeada diretamente.
A Figura 4 é um diagrama de blocos ilustrando ainvalidação seletiva de um conjunto de entradas de cache Ivirtualmente marcadas que poderiam estar associadas a umendereço físico em uma cache I associativa de conjunto 2-via.
A Figura 5 é um fluxograma ilustrando um métodopara que uma cache de instruções marcada virtualmente operecomo se ele fosse uma cache de instruções marcadafisicamente do ponto de vista de um programa de software.
DESCRIÇÃO DETALHADA
A descrição detalhada apresentada a seguir emconjunto com os desenhos anexos tenciona ser uma descriçãode várias modalidades da presente invenção, e não arepresentar as únicas modalidades em que a presenteinvenção pode ser praticada. A descrição detalhada incluidetalhes específicos com o propósito de prover uma completacompreensão da presente invenção. No entanto, ficará claropara os técnicos na área que a presente invenção pode serpraticada sem o recurso a tais detalhes específicos. Emalguns casos, estruturas e componentes bem conhecidos sãoapresentados em forma de diagrama de blocos de modo aevitar obscurecer desnecessariamente os conceitos dapresente invenção.
A Figura 1 apresenta um diagrama de blocosfuncional de um processador 100. 0 processador 100 executainstruções em um encadeamento 120 de execução de instruçõesde acordo com o circuito lógico de controle 110. 0processador 100 pode ser qualquer tipo de componente deprocessador linear, incluindo, por exemplo, ummicroprocessador, um processador de sinais digitais (DSP),uma ponte, uma lógica programável, uma lógica detransistores ou de porta individual, ou qualquer outrocomponente de processamento de informações. Em algumasmodalidades, o encadeamento 120 pode ser um esquema superescalar, com múltiplos encadeamentos paralelos. Oencadeamento 120 inclui vários registradores ou latches160a a d, organizados em estágios de linha, e uma ou maisunidades de execução 180. Apesar de estarem representadoscinco estágios de linha na Figura 1, será notado pelostécnicos na área que um número de estágios de linha maiorou menor que os estágios de linha ilustrados podem serincluídos no processador 100. Um arquivo de registrador depropósito geral (GPR) 130 prove registradores constituindoo topo da hierarquia de memória. 0 processador 100 incluium sistema de cache de instruções 127 que inclui uma cachede instruções marcada virtualmente (cache I ou I-cache)122, um buffer de previsão de tradução (TLB) 128 e umcircuito de controle 110.
O encadeamento 120 recupera instruções a partirda cache I 122 provendo um endereço virtual para a cache I122. A tradução de endereço de memória é gerenciada peloTLB 128. Em paralelo ao provimento de um endereço virtualpara a cache I 122, a linha 120 provê o endereço deinstrução virtual para o TLB 128 para determinar o endereçofísico correspondente que seria utilizado para acessar amemória 32 através da interface de memória 30 caso umendereço virtual não seja encontrado (perda de cache) nacache I 122. 0 circuito de lógica de controle 110 recebeinstruções de invalidação provenientes da linha 120 egerencia a invalidação de uma ou mais entradas na cache I122 e no TLB 128. A estrutura e operação do sistema decache de instruções 127 serão mais completamente descritasem conexão com a descrição da Figura 2.
Os dados são acessados a partir de uma cache dedados (cache D) 126, com a tradução de endereço de memóriae permissões gerenciadas pelo buffer de previsão detradução (TLB) 128. Apesar de a Figura 1 apresentar o TLB128 como um TLB integrado, em várias modalidades, o TLB 128pode ser segregado em múltiplos TLBs em que um estádedicado a transladar acessos à cache D 126 e o outro estádedicado a transladar acessos à cache I 122. As perdas nacache I 122 e/ou na cache D 126 causam um acesso à memóriaprincipal (off-chip) 150, sob o controle de uma interfacede memória 140. Tais acessos à memória principal utilizam oendereço físico recuperado a partir do TLB 128.
O processador 100 pode incluir uma interface deentrada/saída (I/O) 134, que controla o acesso a váriosdispositivos periféricos 136 e 138. Os técnicos na áreanotarão que são possíveis inúmeras variações do processador100. Como exemplo, o processador 100 pode incluir uma cachede segundo nível (L2) para uma das, ou para ambas as,caches I 122 e D 126. Além disso, um ou mais dos blocosfuncionais apresentados no processador 100 pode ser omitidode uma modalidade específica.
A Figura 2 é uma representação mais detalhada dosistema de cache de instruções 127 da Figura 1. Em talmodalidade exemplar, o TLB 128 está configurado com trêscolunas 210a a 210c. A coluna 210a contém osidentificadores espaciais de aplicativo (ASIDs) associadosa processos de software. 0 registrador 215 contém o ASID doprocesso de software atualmente em execução, o qual podeestar armazenado em um registrador dedicado ou no arquivoGPR 130. A coluna 210b contém marcadores virtuais TLB. Ummarcador virtual TLB consiste de uma parte de um endereçovirtual. Como exemplo, o endereço virtual 205 é um endereçode 32 bits armazenado em um registrador tal como umregistrador de contador de programa (PC). Neste exemplo, asposições de bits 31 a 12 definem a parte do endereçovirtual que define o marcador virtual TLB.
A coluna 210c contém números de página física(PPN) de 20 bits correspondentes a uma combinação demarcador virtual ASID/TLB. Um número de página física éretornado a partir do TLB 128 quando um ASID ativo(associado a um processo de software em execução) e ummarcador virtual TLB proveniente de um endereço virtual 205estão de acordo com a combinação do marcador ASID emarcador virtual TLB armazenados em uma fileira do TLB 128.O PPN retornado é concatenado com o offset de página paradefinir o endereço fisico correspondente. Em particular,durante a concatenação, o PPN retornado é colocado nasposições de bits 31 a 12, enquanto a parte de offset depágina do endereço virtual continua a ocupar as posições debits 11 a 0.
Nesta modalidade exemplar, a cache I marcadavirtualmente 122 é uma cache de mapeamento direto de 32 KBcom 1024 "conjuntos de 1 linha" e linhas de 32 bytes. Emtal modalidade, a cache I marcada virtualmente 122 estáconfigurado com quatro colunas 220a a 220d. A coluna 220acontém os identificadores espaciais de aplicativo (ASID)associados a processos de software. A coluna 220b contém osmarcadores virtuais de cache I (1$) . A coluna 220c contémuma linha de instrução de 32 bytes associada a umacombinação específica de marcador virtual de cache I eASID. Opcionalmente, a coluna 220d contém indicadoresindicando sob quais condições foi armazenada uma entradaassociada na cache I de modo a limitar o escopo dainvalidação de entradas subseqüentes.
O endereço virtual 205 é mostrado apresentandodois significados superpostos para suas posições de bits.Quando o endereço virtual 205 é utilizado pela cache Imarcada virtualmente 122, as posições de bits 31 a 15definem o marcador virtual de cache I (1$); as posições debits 14 a 5 definem um índice 207 para seleção de uma linhaou conjunto dentre os 1024 "conjuntos de 1 linha" na cacheI 122; e as posições de bits 4 a 0 definem um offset oudeslocamento em uma coluna de linha de instrução 220c. Umafila na cache I mapeada diretamente 122 é também designadacomo um "conjunto de 1 linha". Apesar de, por exemplo, oitoinstruções de 32 bits poderem residir em uma única linha deinstrução, para maior simplicidade, é ilustrada apenas umainstrução por marcador virtual 1$. Deve ficar claro queoutros tamanhos de instruções são contemplados pelapresente invenção. Quando o endereço virtual 205 éutilizado pelo TLB 128 para tradução de endereço, asposições de bits 31 a 12 definem um marcador virtual TLB eas posições de bits 11 a 0 definem um offset de página.
Durante uma consulta à cache I por um endereçovirtual especificado, o índice 207 proveniente do endereçovirtual seleciona uma linha correspondente na cache I 122.O ASID ativo 215 e as posições de bits 31 a 15 do endereçovirtual especificado são a seguir comparados com o tag ASIDe o marcador virtual 1$ armazenado na linha de cacheselecionada.
De forma similar, durante uma translação de TLBpara um endereço virtual especificado, o ASID virtual 215 eas posições de bits 31 a 12 do endereço virtualespecificado são comparados com os tags ASID e marcadoresvirtuais TLB armazenados no TLB 128 para encontrar umaigualdade ou correspondência e, portanto, um PPNcorrespondente.
Apesar de não ser ilustrado aqui, em certasmodalidades a parte de um endereço virtual compreendendo ummarcador virtual TLB pode ser a mesma parte do endereçovirtual compreendendo um marcador virtual de cache I. Ostécnicos na área notarão que, apesar de a cache I marcadavirtualmente 122 ser ilustrado como uma cache mapeadadiretamente, a cache I 122 pode também ser incorporada naforma de uma cache associativa em conjunto de modo aacessar grupos de entradas na forma de conjuntos demúltiplas linhas.
Voltando ao TLB 128, estão ali representadas umarelação "alias" e uma relação de diferenciação. Uma relaçãoalias ocorre quando o mesmo número de página física (PPN)está localizado em duas ou mais entradas no TLB 128. Comoexemplo, as entradas 211 e 213 fazem ambas referência aoPPN 0x80000. Neste exemplo, as entradas 211 e 213 possuem omesmo marcador virtual de TLB, porém estão associadas a umprocesso de software diferente para tornar a combinação detab ASID/marcador virtual TLB exclusiva. As entradas 212 e214 são também aliases entre si, pois ambas fazemreferência ao PPN 0x90000. As entradas 212 e 214, uma emrelação à outra, possuem marcadores virtuais TLB exclusivose tags ASID exclusivos, de modo a definir uma combinação demarcador virtual ASID/TLB exclusiva. Uma relação dediferenciação ocorre quando o mesmo marcador virtual TLB émapeado para dois ou mais números de página físicadiferentes. As entradas 211 e 212 apresentam uma relação dediferenciação pois o mesmo marcador virtual TLB (TLBtagA) émapeado para dois números de página física diferentes,0x80000 e 0x90000, respectivamente.
Considerando-se que os marcadores virtuais TLB emarcadores virtuais 1$ são compostos por posições de bitsem um endereço virtual (algumas das quais são posições debits comuns), as entradas no TLB 128 estão relacionadas aentradas na cache I 122. Conseqüentemente, com a finalidadede nomenclatura, o uso de um sub-escrito na referência a ummarcador virtual 1$ específico (por exemplo, I$tagA) indicaque o valor do marcador virtual 1$ em questão estácorrelacionado ao valor de um marcador virtual TLBpossuindo o mesmo sub-escrito (por exemplo, TLB tagA) .
Na modalidade exemplar da Figura 2, os marcadoresvirtuais TLB contêm mais bits do que o marcador virtual 1$.Conseqüentemente, um marcador virtual TLB pode correspondera um ou mais marcadores virtuais 1$. Dessa forma, umaentrada TLB possuindo um número de página física podecorresponder a uma ou mais entradas de cache I, o quesignifica que a instrução ou instruções na cache I 122podem também estar fisicamente localizadas no número depágina física da entrada TLB correspondente. Para maiorsimplicidade, deve ser notado que nem todas as todas asentradas de cache I relacionadas a uma entrada TLBespecífica estão ilustradas. Dada a relação de uma paravárias acima descrita entre as entradas TLB e as entradasde cache I, caso uma dada fila de cache I esteja associadaao mesmo tag ASID e a um valor de tag de endereço virtualem uma dada fila do TLB, então a instrução ou instruções nafila de cache I em questão podem estar adicionalmentelocalizadas dentro da página do espaço de endereços físicoscorrespondente à página do espaço de endereços virtuaisassociado à fila TLB em questão.
A medida que passa o tempo, as entradas do TLB128 e da cache I 122 podem se tornar obsoletas. Comoexemplo, caso um ASID seja reutilizado por um programa desoftware subseqüente não correlacionado e os mapeamentosvirtuais para físicos do programa subseqüente sejamdiferentes daqueles do programa anterior, então as entradasno TLB e na cache I contendo o ASID reutilizado não maisseriam válidas pois elas seriam mapeadas para os endereçosfísicos associados ao programa de software anterior. Paramanter a coerência de TLB e cache, é utilizado o circuitológico de controle 110 para gerenciamento de entradasobsoletas tanto no TLB 128 como na cache I 122. De um modogeral, os programas de software desenvolvidos para umacache I marcada fisicamente podem ser mais simples do queaqueles desenvolvidos para uma cache I marcadavirtualmente, com relação ao gerenciamento de entradasobsoletas na cache I por várias razões, incluindo o fato deque o problema de cognomes não ocorre em uma cache Imarcada fisicamente e que a mera mudança dos mapeamentos deendereço virtuais para físicos não requer a invalidação decache I em uma cache I marcada fisicamente. No entanto, osprogramas de software escritos para caches I marcadosfisicamente e aqueles escritos para caches I marcadosvirtualmente devem incluir instruções explícitas deinvalidação de TLB quando da mudança do mapeamento de umdado endereço virtual para uma dada ID de processo de umendereço físico para outro.Existem duas classes principais de situações emque as entradas de uma cache I devem ser invalidadas comuma cache de instruções marcada virtualmente. A primeiraclasse de situações envolve mudanças de mapeamentos deendereço em que, por exemplo, um endereço virtual passa aser mapeado para um endereço físico diferente. Emimplementações convencionais de cache I marcadavirtualmente, são utilizadas instruções de invalidação decache I para invalidar a cache I em tal classe desituações. Além disso, na primeira classe de situações, sãoutilizadas instruções de invalidação de TLB para invalidarum TLB tanto em implementações convencionais de cache Imarcada virtualmente como de cache I marcada fisicamente. Asegunda classe de situações envolve o caso em que oconteúdo da memória física é modificado. Na segunda classede situações, são utilizadas instruções de invalidação decache I para invalidar a cache I tanto em implementaçõesconvencionais de cache I marcada virtualmente como emimplementações convencionais de cache I marcadafisicamente. No entanto, em implementações convencionais decache I marcada fisicamente, uma instrução de invalidaçãode cache I deve apenas identificar o endereço físico damemória modificada a ser invalidada, ao contrário de todosos endereços virtuais possíveis que poderiam dizer respeitoa tal endereço físico em uma implementação convencional decache I marcada virtualmente.
0 circuito lógico de controle 110 estáconfigurado para reconhecer que a primeira classe desituações que iria convencionalmente requerer programas desoftware para invocar invalidação de cache I explícita parauma cache I marcada virtualmente também requer programas desoftware para invocar invalidação de TLB mesmo para umacache I marcada fisicamente. Como exemplo, uma situaçãoinclui o caso em que uma combinação de marcador virtualTLB/ASID é mapeada para um novo número de página física. Emtal caso, o circuito lógico de controle 110, em resposta auma instrução de invalidação TLB explicita, invalida asentradas no TLB 128 envolvendo a combinação de marcadorvirtual TLB/ASID e também invalida entradas na cache Imarcada virtualmente 122 envolvendo a combinação demarcador virtual de cache I/ASID. Em certas modalidades, ainstrução de invalidação TLB explicita causa a invalidaçãoflash de todas as entradas na cache I 122 independentementeda combinação de marcador virtual TLB/ASID.
Com referência à segunda classe de situações,referente a modificações efetuadas no conteúdo de umendereço físico especificado, um programa de software emiteuma instrução de invalidação de cache I explícita paralevar a cache I 122 a ser atualizado. O conteúdo dainstrução de invalidação de cache I explícita pode ou nãoespecificar um endereço virtual associado ao endereçofísico modificado ou o endereço físico modificado.
Em uma modalidade, o circuito lógico de controle110, em resposta a tal instrução de invalidação de cache Iexplícita, é configurado para invalidar em flash todas asentradas na cache I marcada virtualmente 122. Em talmodalidade, um endereço virtual associado ao endereçofísico em questão, ou, alternativamente, o endereço físicoem questão, pode ser especificado na instrução deinvalidação de cache I explícita. No entanto, dado quetodas as entradas de cache I são invalidadas em flash, oendereço virtual ou físico especificado da instrução deinvalidação de cache I explícita é simplesmente ignorado.
Em uma modalidade alternativa, o circuito lógicode controle 110, em resposta à instrução de invalidação decache I explícita, é configurado para invalidar entradasseletivamente na cache I marcada virtualmente 122. dado queas entradas de cache I, de um modo geral, possuemmarcadores virtuais que correspondem a um endereço físico,as entradas de cache I que possam corresponder ao endereçofísico especificado deveriam ser invalidadas. É feitareferência às entradas nas filas 212 e 214 no TLB 128 paraum exemplo da identificação de múltiplos endereços virtuaispara os quais as correspondentes entradas de cache Imarcadas virtualmente deveriam ser invalidadas, comoresultado de uma mudança do conteúdo de um endereço físico.Tais entradas são entradas "alias" e são mapeadas para omesmo número de página física 0x90000.
De forma similar, as entradas de cache I 225 e224 contêm instruções que são também encontradas em umendereço físico definido pelos primeiros 17 bits do númerode página física, pois o valor dos marcadores virtuais 1$(1$ tagA e 1$ tagB) estão relacionados ao valor dosmarcadores virtuais TLB (TLB tagA e TLB tagB) ,respectivamente, tal como ilustrado pelo significado duplosuperposto das posições de bits do endereço virtual 205acima descrito. Conseqüentemente, caso, por exemplo, oconteúdo do endereço físico 0x9000_0000 mude, as entradas225 e 224, juntamente com quaisquer outras entradas nãoilustradas cujas instruções são também encontradas noendereço físico 0x9000_0000, serão seletivamenteinvalidadas pelo circuito lógico de controle 110. Maisparticularmente, nesta modalidade de invalidação seletivade entradas na cache I marcada virtualmente 122, o circuitológico de controle 110 está configurado para invalidartodas as entradas associadas a índices virtuais de cache Iespecíficos em que o endereço físico especificado possaresidir, tal como todas as entradas nos conjuntos de cacheI selecionados.
A Figura 3 é um diagrama de blocos ilustrando ainvalidação seletiva de um conjunto de entradas de cache Imarcadas virtualmente que poderiam ser associadas a umendereço físico em uma cache I mapeada diretamente 122.Como mostrado no endereço virtual 205, as posições de bits14 a 12, ou a referência 305, fazem parte dos bits deíndice, também designados como os bits de índice de cacheI, quando o endereço virtual 205 é utilizado pela cache Imarcada virtualmente 122. As posições de bits 14 a 12 fazemtambém parte do marcador virtual TLB. No entanto, dado queas posições de bits 14 a 12 são bits traduzidos durante atradução de endereço, estes mesmos bits fazem parte donúmero de página física correspondente ao endereço virtual205. Dado que as posições de bits 14 a 12 não sãoutilizadas pelo marcador virtual 1$, e que um número depágina física pode ser especificado para invalidação, cadacombinação de bits 14 a 12 define limites 0, 128, 256, ...,8 96, dentro da cache I marcada virtualmente 122, ondepoderia estar localizada uma entrada de cache I associadacorrespondente ao número de página física. Os bits deíndice remanescentes, os bits 11 a 5, ou a referência 315,não são traduzidos durante a tradução de endereço e,portanto, são comuns ao endereço virtual 205 e seu endereçofísico transladado. Conseqüentemente, os bits 11 a 5especificam um offset em relação aos limites definidos paralocalização de entradas de cache I correspondentespotencialmente relacionadas á página física. Dado que areferência 305 contém três bits, o circuito lógico 110, emresposta à invalidação de um endereço físico, pode serconfigurado para invalidar simultaneamente oito entradas nacache I marcada virtualmente 122 por concatenação de cadacombinação de bits 14 a 12 com os bits 11 a 5 do endereçofísico.
De um modo geral, dado que os bits 11 a 0 não sãotraduzidos pela tradução de endereços, eles não variamentre um endereço físico especificado e quaisquer endereçosvirtuais que poderiam ser traduzidos para tal endereçofísico. Posto de outra forma, todos os endereços virtuaisque possam ser mapeados para o endereço físico especificadodevem estar de acordo com o endereço físico nos bits 11 aO. Portanto, quaisquer dos bits dentre aqueles nas posições11 a O que sejam usados como parte do índice de cache Ipara seleção de um conjunto de cache I que possa conterentradas correspondentes ao endereço físico especificado,devem possuir o mesmo valor que os bits correspondentesprovenientes do endereço físico. São apenas aqueles bits deíndice de cache I nas posições 14 a 12, por exemplo, quepoderiam assumir um valor diferente dos bitscorrespondentes provenientes do endereço físico, mas queainda identificam um conjunto de entradas possivelmentecontendo entradas correspondentes ao endereço físicoespecificado.
Em resposta a uma instrução de invalidação decache I explícita identificando um endereço físico a serinvalidado na cache I devido ao conteúdo de tal endereçofísico ter sido modificado, o circuito lógico de controleutiliza as posições de bits 11 a 5 para determinar osoffsets a partir dos limites definidos pelos bits 14 a 12para invalidar todas as entradas no conjunto transladado deentradas qualificadas na cache I, permitindo que a cache Iseja invalidado com base em um conjunto em lugar de combase em todo uma cache I. Com uma única instruçãoespecificando um endereço físico a ser invalidado ou,alternativamente, um endereço virtual associado ao endereçofísico inválido, tal modalidade permite a um softwareescrito para um modelo de cache I marcada fisicamenteinvocar automaticamente a operação de invalidação de cacheI em uma cache I marcada virtualmente para assegurar quetodos os cognomes de endereços virtuais possíveis para oendereço físico especificado sejam removidos da cache. Comodescrito, tal remoção pode ocorrer com base em uma linha,conjunto, ou em toda uma cache. Dessa forma, a cache Imarcada virtualmente é gerenciada apropriadamente semqualquer carga adicional sobre o software que foidesenvolvido para o modelo de cache I marcada fisicamente.O número de índices simultâneos para a cache Imarcada virtualmente 122 pelo circuito lógico de controle110 depende da associação de conjunto de uma cache Imarcada virtualmente. A Figura 4 é um diagrama de blocosilustrando a invalidação seletiva de um conjunto deentradas de cache I virtualmente marcadas que poderiamestar associadas a um endereço físico em uma cache Iassociativa de conjunto 2-via 422. Abstraindo-se suaassociação, a cache I associativa 2-via 422 é uma cache Imarcada virtualmente de 32 KB com linhas de 32 bytes e quepode ser adequadamente similar à cache I 222. O endereçovirtual 405 é um endereço de 32 bits armazenado em umregistrador tal como um contador de programa (PC) e, deforma semelhante ao endereço virtual 205, é representadoapresentando dois significados superpostos para suasposições de bits. A cache I 422 possui um índice 418possuindo um tamanho de nove bits e, portanto, um marcadorvirtual 1$ possuindo um tamanho de 18 bits. Para talmodalidade, as posições de bits 13 a 12, ou as posições debits traduzidas 410, definirão quatro limites, resultandoem quatro índices simultâneos, enquanto as posições de bits11 a 5, ou as posições de bits não traduzidas 415 definirãoum offset a partir de cada um dentre quatro limites parainvalidar seletivamente filas na cache I marcadavirtualmente. Em uma cache associativa de conjuntos 2-via,cada fila inclui duas linhas de cache. Conseqüentemente, ocircuito lógico de controle 110 indexa simultaneamentequatro filas de cache e, portanto invalida oito entradas decache I marcada virtualmente.
Deve ficar claro que vários tamanhos econfigurações de caches I marcados virtualmente sãocontemplados como modalidades adicionais. Como exemplo, umamodalidade associativa de conjunto 4-via de uma cache Imarcada virtualmente de 32 KB com linhas de 32 bytes iriaresultar em um índice possuindo um tamanho de oito bits e,portanto, um marcador virtual 1$ possuindo um tamanho de 19bits. Para uma cache I associativa 4-via, a posição de bit12 irá definir dois limites e as posições de bits 11 a 5definirão o offset a partir dos dois limites para invalidarseletivamente as entradas na cache I 4-via.
Como outro exemplo, uma modalidade associativa deconjunto 8-via de uma cache I marcada virtualmente de 32 kbcom linhas de 32 bytes irá resultar em um índice possuindoum tamanho de sete bits e, portanto, um marcador virtual 1$possuindo um tamanho de 20 bits, o mesmo tamanho de ummarcador virtual TLB e, logo, de um número de páginafísica. Para uma cache I associativa de conjunto 8-via, nãoexistem limites definidos e as posições de bits 11 a 5 irãoindexar para a cache 8-via. No entanto, note-se que cadafila em uma cache 8-via compreende 8 linhas de cache, sendoseletivamente invalidadas oito linhas de cache. Além disso,dado que neste exemplo o tamanho de marcador virtual TLB éigual ao tamanho de marcador -virtual 1$, é garantido quequaisquer entradas na cache I que possam ser associadas aoendereço físico especificado estejam localizadas na via decache I selecionada pelo único índice de cache I, o qualpor sua vez é o mesmo que as posições de bits de índiceprovenientes do endereço físico especificado, uma vez quetais posições de bits não são traduzidas. Dito de outraforma, quando todos os bits de índices de cache I estão emposições de bits dentro de um offset de página, portanto,os bits de índice de cache I não são traduzidos pelomecanismo de tradução de endereço, é garantido quequaisquer entradas na cache I que possam estar associadasao endereço físico especificado estejam localizadas na viade cache I selecionada por tal índice único de cache I.
Os exemplos acima demonstram como uma cache Iassociativa virtualmente indexada e virtualmente marcada deacordo com os ensinamentos da presente invenção afeta ainvalidação seletiva. Em particular, quanto mais alta aassociatividade de conjunto da cache virtualmente indexadae virtualmente marcada, mais baixo o número de bits que sãotraduzidos pelo processo de tradução de endereço, mas quesão utilizados em sua forma não traduzida no índice dacache I, resultando em um número mais baixo de filas decache I sendo seletivamente invalidadas. De forma similar,o tamanho de uma página física afeta o número de bits deendereço que são traduzidos. Portanto, quanto maior otamanho da página, menor o número de bits que sãotraduzidos pelo processo de tradução de endereço, mas quesão utilizados em sua forma não traduzida para o índice dacache I, resultando novamente em um menor número defilas/conjuntos de cache I sendo seletivamente invalidados.
No caso em que o número de bits no número depágina física for o mesmo que o número de bits no marcadorvirtual de cache I, não existem quaisquer bits 305 noíndice de cache I que finalmente sofrerão translação peloprocesso de tradução de endereço. Dessa forma, o conjuntode vias de cache I potenciais é reduzido para uma viagarantida. De um modo geral, o aumento no tamanho de páginaresulta em menos bits de translação e, portanto, é reduzidoo tamanho de entradas de cache I potenciais associadas aoendereço físico.
Fazendo novamente referência à Figura 2, ocircuito lógico de controle 110 recebe, como entrada,instruções de invalidação, tais como instruções deinvalidação de TLB e instruções de invalidação de cache I,provenientes de um programa de software, independentementede se o programa de software foi desenvolvido com uma cacheI marcada fisicamente ou uma cache I marcada virtualmente.Tais instruções de invalidação podem ser providas a partirde um estágio de decodificação na linha 120, tal como oestágio de linha 160b por exemplo. O circuito lógico decontrole 110 responde a um conjunto de instruções parainvalidar TLB para invalidar uma ou mais entradas na cacheI 122, utilizando mecanismos conhecidos, tais como ageração de sinais de controle de cache I para invalidar umaou mais entradas de uma cache I em resposta a instruçõespara invalidar cache I conhecidas. Pela resposta aoconjunto de instruções para invalidar TLB para gerenciaradicionalmente a cache I e responder à instrução deinvalidar cache I para o caso que indica que o conteúdo deum endereço fisico mudou, o circuito lógico de controle 110alivia a carga de um programa de software de ter de emitirinstruções para invalidar cache I separadamente para cadasituação que uma cache I marcada virtualmente convencionalrequeira. Conseqüentemente, os programas de software quesão escritos para gerenciar a cache I fisicamente marcadopodem agora ser vantajosamente executados no processador100 gerenciando a cache I virtualmente indexado evirtualmente marcado de tal forma que ele se comporte comose ele fosse fisicamente indexado e fisicamente marcado, doponto de vista do software.
O circuito lógico de controle 110 também respondea instruções de invalidação de cache I conhecidas parainvalidar uma ou mais entradas na cache I marcadavirtualmente 122 para que os programas de softwareexistentes que são desenvolvidos para gerenciar uma cache Imarcada virtualmente. Adicionalmente, em certasmodalidades, o circuito lógico de controle 110 pode receberum sinal de habilitação opcional 237 proveniente doprocessador 100, que pode ser utilizado caso estejam sendoexecutados programas de software especificamentedesenvolvidos para uma cache I marcada virtualmente. 0sinal de habilitação 237 pode ser invocado como resultadode um bit de estado de processador, um bit de configuraçãoe similares. Quando o sinal de habilitação 237 é invocado,o circuito lógico de controle 110 opera tal como acimadescrito. Quando o sinal de habilitação 237 não forinvocado (desabilitado), o circuito lógico de controle 110irá responder a instruções de invalidação de TLB parainvalidar uma ou mais entradas provenientes do TLB 128 eirá responder a instruções para invalidar cache I parainvalidar uma ou mais entradas na cache I marcadavirtualmente 122. Quando o sinal de habilitação 237 não éinvocado (desabilitado), o circuito lógico de controle 110não irá invalidar entradas na cache I marcada virtualmente122 em resposta às instruções para invalidar TLB e não iránecessariamente invalidar mais entradas de cache I do queaquelas especificamente associadas a um endereço virtualespecificado, em resposta às instruções para invalidarcache I.
Em certas modalidades, o circuito lógico decontrole 110 pode incluir um gerador de sinais de controleTLB 235 e um gerador de sinais de controle de cache I 245.As alimentações 241 e 243 para o gerador de sinais decontrole de cache I 245 acoplam respectivamente instruçõespara invalidar TLB e instruções para invalidar cache I parao gerador de sinais de controle de cache I 245. O geradorde sinais de controle de cache I 245 está configurado paragerar sinais de controle para invalidar uma ou maisentradas na cache I marcada virtualmente 122 com base nainstrução de invalidar recebida. 0 gerador de sinais decontrole TLB 235 gera sinais de controle de uma maneiraconhecida para invalidar uma ou mais entradas no TLB 128com base no tipo especifico de instrução de invalidar TLBrecebida. Quando a entrada ao gerador de sinais de controlede cache I 245 for resultado de uma instrução de invalidarcache I, o gerador de sinais de controle de cache I 245gera sinais de controle de uma maneira conhecida parainvalidar uma ou mais entradas na cache I marcadavirtualmente 122. Adicionalmente, o gerador de sinais decontrole de cache I gera sinais de controle para invalidaruma ou mais entradas na cache I marcada virtualmente 122 emresposta a instruções para invalidar TLB. A tabela que sesegue 'descreve o comportamento funcional do gerador desinais de controle de cache I 245 resultante da recepçãodas seguintes instruções para invalidar TLB:
<table>table see original document page 26</column></row><table>
Tabela 1
A coluna 220d constitui uma modalidade paraassegurar que não ocorra "concordância" errônea em umaentrada na cache I 122 com base em uma comparação de tagvirtual, quando a entrada foi estabelecida em um momento emque o mecanismo de translação estava em um estado dehabilitação, porém a concordância está ocorrendo em ummomento posterior quando o mecanismo de translação está emoutro estado de habilitação. Como exemplo, no caso em queum mecanismo de translação, tal como o TLB 128, possui umrecurso de habilitação que permita ao TLB 128 estar em umestado habilitado ou desabilitado, as entradas armazenadasna cache I 122 podem conter um valor de indicador indicandose o TLB estava ou não operacional no momento em que aentrada foi armazenada. Quando uma entrada é armazenada nacache I durante um TLB 128 não operacional, a entradaarmazenada é associada a um endereço físico que é o mesmoque o endereço virtual não transladado.
No caso em que o TLB passa de desabilitado parahabilitado, as entradas da cache I que forem armazenadasdurante o TLB não operacional são invalidadas pelo circuitológico de controle 110 em resposta ao sinal de transiçãoTLB 239. Além disso, no caso em que o TLB passa dehabilitado para desabilitado, as entradas de cache I queforem armazenadas durante o TLB operacional são invalidadaspelo circuito lógico de controle 110 em resposta ao sinalde transição TLB 239. 0 sinal de transição TLB 239 écomumente gerado quando o TLB passa de desabilitado parahabilitado e vice versa. Em particular, o gerador de sinaisde controle de cache I 245, em resposta ao sinal detransição TLB 239, gera sinais para invalidar as entradasna cache I 122 que estão de acordo com o campo do indicadorindicando as entradas que foram inicialmente armazenadasenquanto o TLB 128 estava no estado do qual ela acabou desair. Em uma modalidade alternativa, os indicadores dacoluna 220d podem ser ajustados quando o estado da tabelade translação é habilitado. Em tal modalidade, quando éefetuada uma consulta à cache I, os indicadores sãoconsiderados para determinar se ocorre uma concordância como estado atual da tabela de translação.
Em outra modalidade alternativa, o problema deassegurar que não ocorra uma "concordância" errônea em umaentrada da cache I estabelecida em um estado inconsistenteanterior é solucionado sem a coluna 229d opcional. Em talmodalidade, o circuito de controle lógico 110 invalida emflash todo a cache 122 quando o sinal de transição TLBhabilitado 239 indica que ocorreu uma transição nomecanismo de habilitação de TLB.Será notado pelos técnicos na área que o tamanhodo endereço virtual 205 e as dimensões do TLB 128 e a cacheI 122 podem ser aplicados a outras modalidades semconstituir um afastamento dos ensinamentos da invenção.
A Figura 5 é um fluxograma ilustrando um método500 para que uma cache de instruções marcada virtualmenteopere como se ele fosse uma cache de instruções marcadafisicamente do ponto de vista de um programa de software.No bloco de função 510, o método recupera uma instrução.
A instrução recuperada passa à decodificação deinstruções 530 onde a instrução recuperada é decodificada.No bloco 540, o método determina o tipo de instrução. Casoo tipo de instrução seja uma instrução de invalidartradução de endereço, o método passa ao bloco 50 queinvalida uma ou mais entradas em um TLB, tal como o TLB128, de acordo com a instrução de invalidar tradução deendereço. 0 método a seguir prossegue para o bloco 560. Nobloco 560, o método também invalida uma ou mais entradas nacache I 122 de acordo com um mapeamento de instruções parainvalidar tradução de endereço tal como definido na Tabela1. Os técnicos na área notarão que a ordem dos blocos 550 e560 pode ser invertida sem afetar o processo deinvalidação. Voltando ao bloco 540, caso o tipo deinstrução seja uma instrução de invalidar cache I, o métodopassa ao bloco 560 para invalidar uma ou mais entradas nacache I 122 de acordo com a instrução de invalidar cache I.Voltando ao bloco 540, caso o tipo de instrução não sejauma instrução de invalidação de qualquer tipo, então volta-se ao bloco 510 para recuperar a próxima instrução.
Os vários exemplos de blocos lógicos, módulos,circuitos, elementos e/ou componentes aqui descritos emconexão com as modalidades aqui apresentadas podem serimplementados ou efetivados por meio de um processador deuso geral, um processador de sinais digitais (DSP), umcircuito integrado especifico para aplicação (ASIC) ,arranjos de porta programáveis no campo (FPGA) ou outrosdispositivos lógicos programáveis, portas individuais oulógica de transistores, componentes de hardwareindividuais, ou quaisquer combinações de tais projetadaspara efetuar as funções aqui descritas. Um processador deuso geral pode ser um microprocessador, porém comoalternativa o processador pode ser qualquer processador,controlador, micro controlador, ou máquina de estadoconvencionais. Um processador pode também ser implementadona forma de uma combinação de dispositivos de computação,por exemplo, uma combinação de um DSP e ummicroprocessador, uma pluralidade de microprocessadores, umou mais microprocessadores em conjunto com um núcleo DSP,ou qualquer outra configuração similar.Os métodos ou algoritmos descritos em conexão com
as modalidades aqui apresentadas podem ser efetivadasdiretamente em hardware, em um módulo de software executadopor um processador, ou em uma combinação de ambos. Ummódulo de software pode residir em uma memória RAM, memóriaflash, memória ROM, memória EPROM, memória EEPR0M,registradores, um disco rígido, um disco removível, um CD-ROM, ou qualquer outra forma de meio de armazenamentoconhecido pelos técnicos na área. Um meio de armazenamentopode ser acoplado ao processador de tal forma que oprocessador possa ler informações provenientes do, e gravarinformações no, meio de armazenamento. Como alternativa, omeio de armazenamento pode estar integrado ao processador.
Apesar de a invenção ser descrita no contexto demodalidades, ficará claro que pode ser empregada uma amplavariedade de implementações pelos técnicos na áreaconsistentes com a descrição acima e com as reivindicaçõesque se seguem.

Claims (20)

1. Um sistema de cache de instruções,compreendendo:uma cache de instruções marcada virtualmente;um dispositivo para tradução de endereço, odispositivo respondendo a uma instrução de invalidartradução de endereço; eum circuito lógico de controle configurado parainvalidar uma entrada na cache de instruções marcadavirtualmente em resposta à instrução de invalidar traduçãode endereço.
2. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o dispositivo para traduçãode endereço consiste de um buffer de previsão de tradução(TLB).
3. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole está configurado para invalidar em flash a cachede instruções marcada virtualmente em resposta à instruçãode invalidar tradução de endereço.
4. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole está configurado para invalidar uma ou maisentradas na cache de instruções marcada virtualmentecorrespondentes a um identificador de serviço de aplicativo(ASID) especificado pela instrução de invalidar tradução deendereço.
5. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole está configurado para invalidar um conjuntoseletivo de entradas na cache de instruções marcadavirtualmente correspondente a um índice especificado nainstrução de invalidar tradução de endereço.
6. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole está configurado para invalidar em flash a cachede instruções marcada virtualmente em resposta aosdispositivos para estado de mudança de tradução deendereço.
7. 0 sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole compreende uma entrada/entrada para receber umsinal de habilitação, o circuito lógico de controle estandoconfigurado para invalidar a entrada na cache de instruçõesmarcada virtualmente somente em resposta à instrução deinvalidar tradução de endereço após receber o sinal dehabilitação.
8. O sistema de cache de instruções, de acordocom a reivindicação 1, no qual o circuito lógico decontrole está configurado para invalidar em flash a cachede instruções marcada virtualmente em resposta a umainstrução de invalidar tradução de endereço especificando ainvalidação de um endereço físico específico.
9. O sistema de cache de instruções, de acordocom a reivindicação 5, no qual o índice compreende posiçõesde bits traduzidas e posições de bits não traduzidas.
10. O sistema de cache de instruções, de acordocom a reivindicação 1, o qual está disposto em umprocessador.
11. Um método para que uma cache de instruçõesmarcada virtualmente opere tal como se ele fosse uma cachede instruções marcada fisicamente do ponto de vista de umprograma de software, o método compreendendo:receber uma instrução de invalidar uma traduçãode endereço; einvalidar uma entrada em uma cache de instruçõesmarcada virtualmente em resposta à instrução de invalidaruma tradução de endereço.
12. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada em uma cache de instruçõesmarcada virtualmente compreende também:invalidar em flash a cache de instruções marcadavirtualmente.
13. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada na cache de instruçõesmarcada virtualmente compreende também:invalidar uma ou mais entradas correspondentes aum identificador de serviço de aplicativo (ASID)especificado pela instrução de invalidar tradução deendereço.
14. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada na cache de instruçõesmarcada virtualmente compreende também:invalidar um conjunto seletivo de entradascorrespondente a um endereço especificado pela instrução deinvalidar tradução de endereço.
15. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada na cache de instruçõesmarcada virtualmente compreende também:invalidar em flash a cache de instruções marcadavirtualmente em resposta a um dispositivo para estado demudança de tradução de endereço.
16. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada na cache de instruçõesmarcada virtualmente compreende também:receber um sinal de habilitação; einvalidar a entrada na cache de instruçõesmarcada virtualmente somente após a recepção do sinal dehabilitação.
17. O método, de acordo com a reivindicação 11,no qual o invalidar a entrada na cache de instruçõesmarcada virtualmente compreende também:receber uma instrução de invalidar cache deinstruções especificando a invalidação de um endereçofísico especifico; einvalidar em flash a cache de instruções marcadavirtualmente em resposta à instrução de invalidar cache deinstruções.
18. Um circuito lógico de controle para ordenara uma cache de instruções marcada virtualmente que operecomo se ele fosse uma cache de instruções marcadafisicamente do ponto de vista de um programa de software,compreendendo:uma primeira entrada/entrada para receber umainstrução de invalidar uma tradução de endereço; eum dispositivo para gerar sinais de controle parainvalidar uma entrada na cache de instruções marcadavirtualmente em resposta à instrução de invalidar umatradução de endereço.
19. 0 circuito lógico de controle, de acordo coma reivindicação 18, compreendendo também:uma segunda entrada/entrada para receber umainstrução de invalidar cache de instruções em que odispositivo para gerar sinais de controle para invalidaruma entrada na cache de instruções marcada virtualmenteresponde também à instrução de invalidar a cache deinstruções.
20. O circuito lógico de controle, de acordo coma reivindicação 19, compreendendo também:uma terceira entrada para desabilitar odispositivo para geração de sinais de controle parainvalidar uma entrada na cache de instruções marcadavirtualmente em resposta à instrução de invalidar umatradução de endereço.
BRPI0710171-6A 2006-04-19 2007-04-17 cache de instruções marcada virtualmente com comportamento marcado fisicamente BRPI0710171A2 (pt)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US79301506P 2006-04-19 2006-04-19
US79301606P 2006-04-19 2006-04-19
US60/793,015 2006-04-19
US60/793,016 2006-04-19
US11/468,850 2006-08-31
US11/468,850 US7802055B2 (en) 2006-04-19 2006-08-31 Virtually-tagged instruction cache with physically-tagged behavior
PCT/US2007/066802 WO2007124307A2 (en) 2006-04-19 2007-04-17 Virtually-tagged instruction cache with physically-tagged behavior

Publications (1)

Publication Number Publication Date
BRPI0710171A2 true BRPI0710171A2 (pt) 2011-08-23

Family

ID=38582274

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0710171-6A BRPI0710171A2 (pt) 2006-04-19 2007-04-17 cache de instruções marcada virtualmente com comportamento marcado fisicamente

Country Status (9)

Country Link
US (1) US7802055B2 (pt)
EP (1) EP2011010B1 (pt)
JP (1) JP5108002B2 (pt)
KR (1) KR101019266B1 (pt)
CN (1) CN101421706B (pt)
BR (1) BRPI0710171A2 (pt)
CA (1) CA2646473C (pt)
MX (1) MX2008013345A (pt)
WO (1) WO2007124307A2 (pt)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
KR20130019891A (ko) * 2011-08-18 2013-02-27 삼성전자주식회사 메타 라이팅 빈도를 줄이기 위한 메타 데이터 라이팅 방법
WO2013058745A1 (en) 2011-10-18 2013-04-25 Soft Machines, Inc. Methods and systems for managing synonyms in virtually indexed physically tagged caches
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
CN102880426B (zh) * 2012-08-01 2015-05-27 龙芯中科技术有限公司 一种系统虚拟机减少tlb刷新的方法及系统虚拟机
US9009413B2 (en) * 2012-12-21 2015-04-14 Intel Corporation Method and apparatus to implement lazy flush in a virtually tagged cache memory
US9405690B2 (en) 2013-08-07 2016-08-02 Oracle International Corporation Method for storing modified instruction data in a shared cache
US9619387B2 (en) 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9740629B2 (en) 2014-12-19 2017-08-22 International Business Machines Corporation Tracking memory accesses when invalidating effective address to real address translations
GB2536205A (en) 2015-03-03 2016-09-14 Advanced Risc Mach Ltd Cache maintenance instruction
US10223279B2 (en) 2016-06-27 2019-03-05 Cavium, Llc Managing virtual-address caches for multiple memory page sizes
US20180089094A1 (en) * 2016-09-23 2018-03-29 Qualcomm Incorporated Precise invalidation of virtually tagged caches
KR102760497B1 (ko) * 2016-11-07 2025-02-03 삼성전자주식회사 전자 장치 및 메모리 액세스 방법
EP3422192B1 (en) * 2017-06-28 2020-08-12 Arm Ltd Address translation data invalidation
US10318436B2 (en) 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10552162B2 (en) * 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
KR102287758B1 (ko) * 2018-03-05 2021-08-09 삼성전자주식회사 부채널 공격으로부터 캐시를 보호하는 시스템
WO2020041473A1 (en) 2018-08-21 2020-02-27 The Regents Of The University Of Michigan Computer system with moving target defenses against vulnerability attacks
US10846239B2 (en) 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
US11086787B2 (en) * 2019-02-05 2021-08-10 International Business Machines Corporation Virtual cache synonym detection using alias tags
WO2021034753A2 (en) * 2019-08-16 2021-02-25 The Regents Of The University Of Michigan Thwarting control plane attacks with displaced and dilated address spaces
TWI890711B (zh) 2019-11-25 2025-07-21 美商賽發馥股份有限公司 積體電路、產生暫存器傳輸邏輯數據結構之系統、以及產生暫存器傳輸邏輯數據結構之方法
US11249764B2 (en) 2020-04-14 2022-02-15 Shanghai Zhaoxin Semiconductor Co., Ltd. Flushing in a microprocessor with multi-step ahead branch predictor and a fetch target queue
CN112099907B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 一种虚拟机运行方法、装置及服务器
US11630771B2 (en) * 2021-07-13 2023-04-18 Apple Inc. Poison mechanisms for deferred invalidates
JP7722162B2 (ja) * 2021-12-13 2025-08-13 富士通株式会社 情報処理装置および制御方法
US11687466B1 (en) * 2022-05-12 2023-06-27 Ventana Micro Systems Inc. Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003459A (en) * 1988-04-01 1991-03-26 Digital Equipment Corporation Cache memory system
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
US6079005A (en) * 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Microprocessor including virtual address branch prediction and current page register to provide page portion of virtual and physical fetch address
US6418525B1 (en) * 1999-01-29 2002-07-09 International Business Machines Corporation Method and apparatus for reducing latency in set-associative caches using set prediction
DE69903707T2 (de) * 1999-02-18 2003-07-10 Texas Instruments France, Villeneuve Loubet Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags
US6338128B1 (en) * 1999-05-20 2002-01-08 International Business Machines Corp. System and method for invalidating an entry in a translation unit
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6470437B1 (en) 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design

Also Published As

Publication number Publication date
WO2007124307A3 (en) 2007-12-27
JP5108002B2 (ja) 2012-12-26
EP2011010B1 (en) 2018-01-10
KR20090007598A (ko) 2009-01-19
CA2646473C (en) 2012-10-02
CN101421706B (zh) 2012-10-10
EP2011010A2 (en) 2009-01-07
CN101421706A (zh) 2009-04-29
US7802055B2 (en) 2010-09-21
CA2646473A1 (en) 2007-11-01
MX2008013345A (es) 2008-11-10
US20070250666A1 (en) 2007-10-25
JP2009534755A (ja) 2009-09-24
WO2007124307A2 (en) 2007-11-01
KR101019266B1 (ko) 2011-03-07

Similar Documents

Publication Publication Date Title
BRPI0710171A2 (pt) cache de instruções marcada virtualmente com comportamento marcado fisicamente
KR100959014B1 (ko) Tlb 록 표시자
US8239657B2 (en) Address translation method and apparatus
CN112631962B (zh) 存储管理装置、存储管理方法、处理器和计算机系统
JP5628404B2 (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US20140095784A1 (en) Techniques for Utilizing Transaction Lookaside Buffer Entry Numbers to Improve Processor Performance
ES2787002T3 (es) Procedimiento y aparato para compresión de etiquetas de memoria caché
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US20160140042A1 (en) Instruction cache translation management
BRPI0617527A2 (pt) atualizaÇço de méltiplos nÍveis de campo de buffers de previsço de traduÇço (tlbs)
US20040181626A1 (en) Partial linearly tagged cache memory system
CN120035817B (zh) 元数据缓存集成电路设备
TW202331509A (zh) 記憶體存取故障之登錄訪客實體位址
WO2023064609A1 (en) Translation tagging for address translation caching
US20260010484A1 (en) System-on-chip and operating method thereof
Chen et al. Decoupling of data and tag arrays for on-chip caches
BR112017024623B1 (pt) Método e equipamento para compressão de indicador de cache
MX2008005091A (en) Caching memory attribute indicators with cached memory data

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal against refusal [chapter 12.2 patent gazette]
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: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2562 DE 11/02/2020.