BRPI0618032A2 - busca de memória endereçável de conteúdo de alta velocidade usando chave codificada armazenada - Google Patents

busca de memória endereçável de conteúdo de alta velocidade usando chave codificada armazenada Download PDF

Info

Publication number
BRPI0618032A2
BRPI0618032A2 BRPI0618032-9A BRPI0618032A BRPI0618032A2 BR PI0618032 A2 BRPI0618032 A2 BR PI0618032A2 BR PI0618032 A BRPI0618032 A BR PI0618032A BR PI0618032 A2 BRPI0618032 A2 BR PI0618032A2
Authority
BR
Brazil
Prior art keywords
encoded
key
cam
address
tlb
Prior art date
Application number
BRPI0618032-9A
Other languages
English (en)
Inventor
Jeffrey Herbert Fischer
Michael Thaithanh Phan
Chiaming Chai
James Norris Dieffenderfer
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 BRPI0618032A2 publication Critical patent/BRPI0618032A2/pt

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/652Page size control

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

<B>BUSCA DE MEMóRIA ENDEREçAVEL DE CONTEUDO DE ALTA VELOCIDADE USANDO CHAVE CODIFICADA ARMAZENADA<D>. A chave de busca e os campos de chave de uma CAM em uma cache são codificados com uma distância Hamming de pelo menos dois para aumentar a velocidade da CAM ao assegurar que cada linha casada em desacordo seja descarregada por pelo menos dois transistores em paralelo. Onde a cache é fisicamente indicada, a chave de busca é um endereço físico. A parte de endereço físico do endereço físico é codificada antes de ser armazenada em um TLB. Os bits de deslocamento de página são codificados em paralelo com o acesso ao TLB, e concatenados com a entrada TLB codificada. Se um endereço de página endereça um tamanho de página de memória grande, uma pluralidade de endereços de sub-página correspondentes podem ser gerados, cada qual endereçando um tamanho de página menor. Estes endereços de sub-página podem ser codificados e armazenados em um micro TLB. A chave codificada e o campo de chave são tolerantes aos erros temporários de bit único.

Description

mBUSCA DE MEMÓRIA ENDEREÇÁVEL DE CONTEÚDO DE ALTAVELOCIDADE USANDO CHAVE CODIFICADA ARMAZENADA".
Campo da Invenção
A presente invenção se refere geralmente ao campode circuitos eletrônicos e especificamente a um método deacesso de alta velocidade a uma memória endereçável deconteúdo utilizando campos de chave codificada e uma chavecodificada armazenada.
Descrição da Técnica Anterior
Os microprocessadores realizam tarefascomputacionais em uma ampla variedade de aplicações,incluindo aplicações integradas tais como dispositivoseletrônicos portáveis. 0 conjunto de recursos e afuncionalidade aperfeiçoada, sempre em expansão, de taisdispositivos exigem processadores computacionalmente aindamais potentes. Portanto, aperfeiçoamentos em processadoresque aumentam a velocidade de execução são desejáveis.
A maioria dos processadores modernos tiraproveito das propriedades de localidade espacial e temporalda maioria dos programas mediante armazenamento dasinstruções recentemente executadas e dos dados recentementeacessados em uma ou mais caches para pronto acesso por umacadeia de execução de instrução. Uma cache é uma estruturade memória de alta velocidade, normalmente em chip,compreendendo uma Memória de Acesso Aleatório (RAM) e umaMemória Endereçável de Conteúdo (CAM) correspondente. Asinstruções ou dados residem em uma "linha" da cachearmazenada na RAM. Para determinar se uma referênciaespecifica reside na RAM, uma parte de seu endereço éaplicada à CAM. Uma CAM é uma estrutura de memóriaespecifica em que uma entrada de comparação aplicada(referenciada aqui como chave ou chave de busca) ésimultaneamente comparada com os dados armazenados em cadaentrada CAM (referenciada aqui como um campo de chave), e asaida da CAM é uma indicação de qual, se houver, campo dechave corresponde com a chave. Em uma cache, a chave e oscampos de chave são partes de endereços (virtuais oufísicos), e se ocorrer uma associação (isto é, o acesso"acerta" na cache), o local da correspondência indexa àRAM, e a linha da cache correspondente é acessada.
A Figura 1 ilustra um diagrama em blocosfuncional de uma parte de um campo de chave de umaestrutura CAM, indicada geralmente pelo número 100. O campode chave CAM j inclui uma linha casada (match Iine) 102 quecobre todas as posições de bit do jesimo campo de chave 110.
A linha casada 102 é elevada por um sinal de PRÉ-CARGAativando a porta de um transistor de passagem 104conectando a linha casada 102 á potência. Em cada bit daJesiina entrada da CAM, um transistor de passagem 106 éinterposto entre a linha casada 102 e o terra. A porta dòtransistor de descarga 106 é o XOR lógico 108 de um bit dechave 112 e o bit do campo de chave 110 correspondente. Emcada iésima posição de bit, se o bit da chave 112 e o bit docampo de chave 110 coincidir, a saída da porta XOR 108 ébaixa e o transistor de passagem 106 não conduz carga dalinha casada 102 para o terra. Se o bit da chave 112 e obit do campo de chave 110 estão em desacordo, a saída daporta XOR 108 é alta, ativando o transistor de passagem 106e baixando a linha casada 102.
Desta maneira, se qualquer bit da chave 112estiver em desacordo com qualquer bit correspondente docampo de chave 110, a linha casada 102 é baixada.
Inversamente, somente se cada bit da chave 112 e do campode chave 110 coincidir, nenhum caminho para o terra éestabelecido, e a linha casada 102 permanece alta. Umcircuito de detecção 114 detecta o nível da Jesima linhacasada 102 em um tempo determinado pelo tempo de descargada linha casada 102 na pior hipótese. Se cada campo dechave 110 for único, que é o caso em operação da memóriatemporária normal, então apenas um campo de chave 110 devecoincidir com a chave 112. Neste caso, apenas uma linhacasada 102 dentro da CAM permanecerá alta. Para garantirque esse seja o caso, a saída de cada circuito de detecçãode linha casada 114 segue para um circuito de detecção decolisão 116, que detecta múltiplos casamentos, e gera umerro se eles ocorrerem. Em aplicações de CAM diferentes deuma memória temporária, múltiplos casamentos podem ocorrer,e um codificador de prioridade (não mostrado) podeselecionar a partir de dois ou mais campos de chave 110 quecoincidem com uma chave aplicada 112.
Os campos de chave 110 de uma CAM representativapodem ter de 20 a 30 bits de largura, e a CAM pode incluir256 entradas. Desse modo, a CAM pode incluir de 5.000 amais de 7.000 transistores de descarga 106 de linha casada.Para implementar tal número grande de transistores 106 emuma pequena área de chip é preciso que cada transistor 106seja pequeno. Como transistores pequenos 106 têm capacidadede transporte de corrente inferior, eles requerem umaduração mais longa para descarregar a linha casada 102 nocaso de comparação errônea de dados. A pior hipótese é umacomparação errônea de um único bit entre a chave 112 e umcampo de chave 110, em que apenas um transistor 106 éligado, e este deve transportar a corrente para dissipartoda a carga na linha casada 102. Se dois ou mais bits nãoforem comparados adequadamente, então dois ou maistransistores 106 trabalhariam em paralelo para descarregarmais rapidamente a linha casada 102. Conseqüentemente, avelocidade total de operação da CAM é determinada porintermédio da temporização de uma comparação errônea de umúnico bit.
A operação de CAM mais rápida, portanto, pode serobtida mediante averiguação de se pelo menos dois bits decada campo de chave 110 em casamento errôneo serãocomparados erroneamente. É conhecido na técnica codificaros campos de chave 110 (e correspondentemente, a chave 112)para aumentar suas distâncias Hamming, que é o número debits que se comparam erroneamente entre quaisquer doisvalores digitais. Por exemplo, uma distância Hamming dedois - também conhecida como paridade de bit único -garante que, para uma chave 112 e um campo de chave 110 quediferem em um bit, dois bits serão comparados erroneamenteentre uma versão codificada da chave 112 e uma versãocodificada do campo de chave 110. Especificamente, os doisbits com comparação errônea nas versões codificadas são osbits que diferem nos dados não-codifiçados, e o bit deparidade. Deste modo, a codificação da chave 112 e doscampos de chave 110 com paridade de bit único garante quepelo menos dois bits terão comparação errônea em cada linhacasada 102 onde existe pelo menos uma diferença de um bitentre a chave 112 e o campo de chave 110. Isto garante quepelo menos dois transistores 106 abaixarão a linha, casada102 em paralelo, resultante em uma operação mais rápida daCAM.
Os campos de chave 112 podem ser facilmentecodificados antes de serem gravados na CAM, quando umalinha da cache é substituída no processamento após umafalha da cache. Contudo, para uma cache fisicamenteindicada, parte da chave 110 - o endereço de página - érecuperada a partir de um Armazenador de Tradução deEndereços (TLB - Translation Lookaside Buffer) que realizatradução de endereço virtual/físico, e o restante - odeslocamento de página - compreende os bits de ordeminferior do endereço virtual gerado na cadeia. No caso deuma cache virtualmente indicada, a chave total 112 é geradana cadeia. Em qualquer um dos casos, recuperar/gerar o endereço e acessar a CAM está no caminho de temporização
critico, e não existe tempo suficiente para codificar toda,ou uma grande parte, da chave 112 antes de comparar a mesmaoutra vez com os campos de chave codificada 110, semaumentar o tempo de ciclo da máquina.
Resumo da Invenção
Em uma ou mais modalidades, a parte de endereçode página de um endereço fisico que é a chave de busca parauma consulta da CAM, é codificada antes de ser armazenadaem um TLB. O endereço de página codificada é então recuperado a partir da TLB na tradução de endereço, e
aplicado a CAM como uma chave de busca codificada, parabusca contra os campos de chave codificada na CAM. Ascodificações garantem uma distância Hamming de pelo menosdois, desse modo garantindo que pelo menos dois transistores em paralelo descarreguem uma linha casada paracada campo de chave de não-casado na CAM. Bits dedeslocamento de página de um endereço fisico, que não sãoarmazenados no TLB, podem ser codificados em paralelo com oacesso TLB, e as duas partes de endereço fisico codificadas e concatenadas, antes de acessar a CAM. Em uma modalidade,
onde o endereço de página armazenado no TLB endereça umtamanho de página de memória grande, o endereço de páginapode ser dividido em uma pluralidade de endereços de sub-página, cada qual endereçando um tamanho de página menor.
Estes endereços de sub-páginas podem ser codificados antesde armazenar os mesmos em um micro TLB.
Uma modalidade refere a um método para acessaruma Memória endereçável de conteúdo (CAM) tendo umapluralidade de campos de chaves codificadas. Uma chave debusca é codificada e armazenada. A CAM é acessadautilizando a chave de busca armazenada, codificada.
Outra modalidade refere a um método para casar umendereço em uma Memória endereçável de conteúdo (CAM). Umaversão codificada do endereço é armazenada como um campo dechave na CAM. Uma versão codificada de pelo menos umaprimeira parte do endereço é armazenada em um Armazenadorde tradução de endereços (TLB). O endereço codificado doTLB é comparado com uma pluralidade de campos de chavecodificada na CAM para detectar um casamento.
Outra modalidade refere a um processador. 0processador inclui uma memória temporária compreendendo umaMemória endereçável de conteúdo (CAM) e uma memória deacesso aleatório (RAM). A memória temporária é operativapara armazenar ou fornecer dados para ou de uma entrada RAMquando uma chave de busca casa com um campo de chavecorrespondente armazenado na CAM. 0 campo chave écodificado por uma distância Hamming de pelo menos dois. 0processador inclui também um Armazenador de Tradução deEndereços (TLB) operativo para armazenar e produzirendereços físicos como chaves de busca para a CAM. Osendereços físicos são codificados pelo mesmo algoritmo comoos campos de chave CAM.
Breve Descrição das Figuras
Figura 1 - é um diagrama em blocos funcional departe de uma linha casada representativa em uma estruturaCAM.
Figura 2 - é um diagrama em blocos funcional deum processador.
Figura 3 - é um fluxograma de codificação earmazenamento de um endereço de página.
Figura 4 - é um fluxograma de recuperação de umendereço de página codificado, codificação de umdeslocamento de página, e aplicação do endereço físicocodificado a uma CAM.
Descrição Detalhada da Invenção
A Figura 2 ilustra um diagrama em blocosfuncional de um processador representativo 10. Oprocessador 10 executa instruções em uma cadeia de execuçãode instrução 12 de acordo com a lógica de controle 14. Acadeia inclui vários registradores ou latches 16,organizados em estágios de cadeia, e uma ou mais UnidadesLógicas Aritméticas (ALU) 18. Um arquivo Registrador dePropósito Geral (GPR) 20 provê registradores compreendendoo topo de uma hierarquia de memória.
A cadeia busca instruções a partir de uma Cachede Instruções (I-cache) 21, que inclui uma CAM 22 e RAM 23.
Permissões e endereçamento de memória de instrução sãogerenciados por um Armazenador de Tradução de Endereços dolado de instrução (ITLB) 24. Os dados são acessados apartir de uma Cache de Dados 25, incluindo uma CAM 26 e umaRAM 27. As permis;sões e endereçamento de memória de dadossão gerenciados por um TLB principal 28. Em váriasmodalidades, o ITLB 24 pode compreender uma cópia de partedo TLB 28. Alternativamente, o ITLB 24 e TLB 28 podem serintegrados.
Adicionalmente, o processador 10 pode incluir ummicro TLB 29. O micro TLB 29 é um circuito de altavelocidade e pequeno que geralmente contém a maioria dosendereços físicos:; recentemente acessados a partir do TLBprincipal 28. 0 processador 10 pode aplicar primeiramenteum endereço virtual ao micro TLB 29, e acessar o TLBprincipal 28 apenas se o endereço e atributos de páginacorrespondentes não forem encontrados no micro TLB 29. Emuma modalidade, as: entradas do micro TLB 29 podem endereçartamanhos de página menores do que as entradas TLB 28correspondentes, como aqui discutido.
Em várias modalidades do processador 10, o I-Cache 21 e D-Cache 25 podem ser integrados, ou unificados.Falhas na I-Cache 21 e/ou D-Cache 25 ocasionam um acesso àmemória principal (off-chip) 32, sob o controle de umainterface de memória 30. O processador 10 pode incluir umainterface de entrada/saida (I/O) 34, . controlando acesso avários dispositivos periféricos 36. Os versados na técnicareconhecerão que diversas variações do processador 10 sãopossíveis. Por exemplo, o processador 10 pode incluir umacache de segundo nível (L2) para qualquer um ou para ambosI e D 21, 25. Além disso, um ou mais dos blocos funcionaisilustrados no processador 10 podem ser omitidos em umamodalidade específica.
Como conhecido na técnica, a maioria dosprogramas executa como se eles tivessem uso exclusivo damemória máxima endereçável de processador (por exemplo, 32bits de endereço). Isto é conhecido como um endereçovirtual, e é o modo de endereçamento utilizado na cadeia.Ao acessar a memória atual, o endereço virtual é traduzidoem um endereço físico pelo TLB 28 (ou ITLB 24 parainstruções). O sistema operacional mapeia cada endereçovirtual do programa para regiões específicas da memóriaconhecidas como páginas de memória. Geralmente, os bitsmais significativos ou superiores de um endereço virtualsão mapeados para um endereço de página (a parte providapelo TLB 28). Os bits menos significativos ou inferiores doendereço virtual, conhecidos como o deslocamento de página,indexam os dados dentro da página de memória; odeslocamento de página não é traduzido. Para simplicidade eclareza, a discussão a seguir é apresentada no contexto deacessos de dados para a D-Cache 25, comparando um endereçoobtido a partir do TLB 2 8 com a CAM 26. Contudo, a mesmadescrição se aplica aos acessos de instrução da I-cache 21,ITLB 24 e CAM de I-cache 22.
Em uma ou mais modalidades, ao acessar uma cachefisicamente indicada 25, a codificação da maior parte dachave 112 a ser aplicada a CAM 26, que é um endereçofisico, é removida do caminho de temporização criticomediante realização da codificação antes do armazenamentodo endereço de página no TLB 28. As tabelas de página sãoestabelecidas no TLB 28 mediante software de sistemaoperacional quando os programas são inicializados. Osendereços de página podem ser codificados neste momento semafetar o desempenho do processador. Subseqüentemente, apartir de um acesso a cache 25, um endereço virtual dacadeia é traduzido pelo TLB 28 para obter um endereço depágina codificado. Os bits de deslocamento de páginanecessários podem ser codificados em paralelo para aconsulta de TLB 28, uma vez que esta parte do endereço émuito mais. curta do que o endereço de página, a operação decodificação pode ser concluída no tempo disponível. 0deslocamento de página codificada pode ser entãoconcatenado com o endereço de página codificada providopelo TLB 28, e os bits de paridade gerados por cadaoperação de codificação XOR para obter o bit de paridadefinal. O endereço físico codificado é então aplicado comouma chave 112 a CAM 26, para comparação com os campos dechave codificada 110. Isto permite a CAM 26 operar com umtempo de comparação mais curto mediante utilização doscampos de chave codificada 110 e uma chave codificada 112para garantir pelo menos duas comparações errôneas e,portanto, pelo menos dois transistores de descarga 106ligados para descarregar a linha casada 102 no evento depior caso de iam casamento errôneo de bit único.O tamanho do endereço de página armazenado no TLB28 varia inversamente com o tamanho da página de memóriaque este endereça. Para um tamanho de página maior, umnúmero menor de bits é traduzido e armazenado no TLB 28, emais bits do endereço virtual são usados para odeslocamento. Em uma aplicação tendo páginas de memóriamuito grandes, o número grande de bits de deslocamento depágina pode impedir a codificação destes bits "emprogresso" (on the fly) , em paralelo com o acesso ao TLB
28. Neste caso, os endereços de página podem ser divididosem dois ou mais endereços de sub-página, cada qualendereçando um tamanho de página de memória menor. Porexemplo, o endereço de página que endereça uma página dememória de 64K pode ser fracionado em quatro endereços desub-página, cada qual endereçando uma página de memória de4K. Os atributos do TLB 28 para a página de 64K podem serreplicados e associados com cada um dos endereços de sub-página .
Os endereços de sub-página de 4K podem não serarmazenados no TLB 28, uma vez que eles colidiriam com oendereço de página de 64K ao realizar uma operação detradução. Em uma modalidade, os endereços de sub-página sãocodificados e armazenados no micro TLB 28. Este é um usoineficiente do micro TLB 29, uma vez que, por exemplo,quatro entradas são exigidas para traduzir a mesma faixa deendereços virtuais que requerem apenas uma entrada no TLBprincipal 28. Contudo, os endereços de sub-páginacodificados armazenados no micro TLB 29 compreendem cadaqual mais bits do que o endereço de página correspondente,deixando um número menor de bits que devem ser traduzidosem progresso antes de acessar a CAM 26.
O processo de codificar e armazenar a chave 112,e acessar a chave codificada armazenada 112 e aplicar estaa CAM 26, de acordo com várias modalidades, é ilustrado nosf luxogramas nas Figuras 3 e 4. A Figura 3 ilustra açõesrealizadas quando o software do sistema operacionalestabelece o TLB 28; a Figura 4 ilustra as etapas deacessar uma CAM 2 6 durante execução do programa (isto é, nocaminho de temporização critico).
Com referência à Figura 3, o software do sistemaoperacional estabelece tabelas de página no TLB 28 (bloco40). Dependendo do tamanho das páginas de memória (bloco42), a codificação pode prosseguir por diferentesprocessos. Se as páginas são relativamente pequenas (bloco42), significando que o endereço de página é longo e odeslocamento de página é curto, o endereço de página écodificado por uma distância Hamming de pelo menos dois(bloco 44). O endereço de página codificada é entãoarmazenado no TLB 28 (bloco 46).
Por um lado, se as páginas de memória são grandes(bloco 42) , significando que o endereço de página é maiscurto e o deslocamento de página é mais longo, pode nãohaver tempo suficiente para codificar a parte necessária dodeslocamento de página era progresso durante tradução deendereço. Neste caso, dois ou mais endereços de sub-páginapodem ser gerados, cada qual endereçando uma página dememória menor do que o endereço de página correspondente(bloco 48) . Isto aumenta o comprimento dos endereços desub-página e reduz o comprimento dos deslocamentos dèpágina correspondentes, permitindo que os deslocamentossejam codificados em progresso sem afetar o tempo de cicloda máquina. Cada endereço de sub-página é codificado poruma distância Hamming de pelo menos dois (bloco 50) , e asentradas de sub-página codificadas são armazenadas no microTLB 29 (bloco 52).
Observe que as denominações de "grande" e"pequeno", assinalando caminhos de saida do bloco dedecisão 42 são relativas. Como usado aqui, um tamanho depágina de memória pequeno é este que gera um deslocamentode página pequeno o suficiente para ser codificado emprogresso por uma distância Hamming de pelo menos dois em
paralelo com um acesso TLB 28. Inversamente, um tamanho depágina de memória grande é este que gera um deslocamento depágina muito grande a ser codificado em progresso emparalelo com um acesso ao TLB 28. 0 tamanho de página dememória atual que qualifica como grande ou pequeno pode
variar para cada implementação, dependendo de muitosfatores tal como tecnologia de semicondutor, velocidade declock, voltagem operacional, etc. Na conclusão dofluxograma da Figura 3, endereços de (sub) páginacodificados de comprimento suficiente são armazenados no
TLB 28 ou micro TLB 29.
Durante execução subseqüente do programa, umainstrução de acesso a memória gera um endereço virtual nacadeia de execução (bloco 54), e apresenta o endereçovirtual ao TLB 28 e/ou micro TLB 29 para tradução. 0 TLB 28
ou micro TLB 29 traduz o endereço virtual, e provê umendereço de (sub) página codificado (bloco 56). Em paralelocom a consulta de TLB 28 ou micro TLB 29, a partenecessária do deslocamento de página é codificada por umadistância Hamming de pelo menos dois (bloco 58) . Em uma
modalidade, o endereço de (sub) página codificada e odeslocamento de página codificada são então concatenados, eos dois bits de paridade são dispostos em XOR, produzindoum endereço físico codificado tendo um único bit deparidade (bloco 60) . Este endereço físico é então
apresentado como uma chave de busca 112 a CAM 2 6 paracomparação com uma pluralidade de campos de chavescodificadas 110 (bloco 62).Em outra modalidade, o endereço de página e odeslocamento de página são armazenados como campos de chaveseparados 110 por entrada CAM 100. Isto é, cada entrada CAM100 inclui dois segmentos de linha casada 102, e umadescarga de qualquer segmento sinalizaria um casamentoerrôneo. Em uma modalidade, cada segmento de linha casada102 inclui um circuito de detecção de linha casada 114, eas saldas dos circuitos de detecção de linha casada 114 sãodispostas em AND juntas antes de serem aplicadas à lógicade detecção de colisão 116. Neste caso, o endereço depágina codificada a partir do TLB 28 ou endereço de sub-página do micro TLB 29 é aplicado à parte de endereço depágina correspondente da CAM 26. Em paralelo com o acessoao TLB 28 ou micro TLB 29, o deslocamento de página écodificado por uma distância Hamming de pelo menos dois. Odeslocamento de página codificada é então aplicado a CAM 26em paralelo com o endereço de (sub) página. Cada endereçode (sub) página codificada e deslocamento de páginacodificada inclui um bit de paridade.
Em outras modalidades, as linhas casadas 102 daCAM 2 6 (e correspondentemente, as chaves 110) podem sertambém segmentadas, quando necessário ou desejado, paravelocidade, leque de saida (fan-out), consumo de energia,'ou outras considerações de projeto. 0 número e ocomprimento de bit de cada segmento pode ser determinadopela tecnologia de implementação, layout, número de bits aser comparado, velocidade de ciclo exigida, e similares.Além disso, os segmentos podem ser configurados e dispostosem uma variedade de formas que requerem apenas um circuitode detecção de linha casada 114 por entrada CAM 100. Porexemplo, em uma modalidade, os segmentos de linhas casadas102 podem ser cascateados em conjunto, ou ondulados, de talmodo que um circuito de descarga ativo 106 em qualquersegmento descarregará toda a linha casada 102. Em outramodalidade, a linha casada 102 pode assumir uma estruturahierárquica em que cada segmento se conecta a uma linhacasada global 102, a qual descarrega sempre que quaisquerdos segmentos anexados descarregarem. Os versados natécnica reconhecerão uma ampla variedade de formas nasquais a linha casada 102 pode ser vantajosamente segregada.
Como considerado pelos versados na técnica, oscampos de chaves codificadas 110 são carregados na CAM 26gradualmente mediante operações de processamento de falhade cache. A partir de uma falha de cache, uma instrução deacesso à memória busca os dados desejados a partir damemória principal, e os coloca na RAM 27, substituindo ainformação existente. A entrada da CAM 26 correspondente ésubstituída com o endereço físico codificado que falhou.
Ao codificar a chave 112 e campos de chave 110 deuma CAM 126 utilizando uma distância Hamming de pelo menosdois, pelo menos dois transistores de descarga 106descarregarão uma linha de casamento 102 para o terra, paracada campo de chave 110 que difere da chave 112 em pelomenos um bit. A temporização de CAM 2 6 total pode servantajosamente ajustada para o tempo exigido para doistransistores 106 descarregarem uma linha casada 102, maispropriamente do que o tempo exigido para que um transistor106 realize isso, desse modo melhorando a velocidadeoperacional da CAM 26.
Toda memória de estado sólido tem tendência aerros temporários, que são erros nos dados armazenadosocasionados por partículas carregadas ou irradiação. Errostemporários podem ser causados por partículas alfa, oudistúrbios elétricos causados por raios cósmicos. Ambas asformas de irradiação são aleatórias, e os erros temporáriospodem induzir um erro de bit único em um campo de chaves110. Isto faz surgir a perspectiva de um casamento errôneode bit único entre a chave 112 e o campo de chaves 110.Várias possibilidades são consideradas.
Primeiro, se a chave 112 casa com um campo dechave 110, e o campo de chaves 110 que casam recebe um errotemporário de bit único, a entrada da CAM 26 correspondentepode ou não ser detectada como um acerto. Devido ao fato datemporização de CAM 26 global ser ajustada utilizando umcenário de pior caso de duas comparações errôneas por linhacasada 102, uma comparação errônea de bit único pode nãoter tempo suficiente para descarregar completamente a linhacasada correspondente 102 antes da avaliação pelo circuitode detecção 114. Neste caso, a linha casada 112 serádetectada em um estado alto, indicando um casamento. Como achave 112 deve casar com esse campo de chave 110, e correapenas o risco de ser interpretada como um casamentoerrôneo devido a um erro temporário, então detectar umcasamento produz operação adequada da cache 25, e o errotemporário não tem conseqüência.
Em um segundo caso, a comparação errônea de bitúnico devido a um erro temporário pode abaixar a linhacasada 102 de forma suficientemente rápida para que ocircuito de detecção associado 114 considere a entrada daCAM 2 6 como não-casada. Como a chave 112 deveadicionalmente estar em desacordo com entradas da CAM 26alternadas, isto resulta em uma perda de endereçoerroneamente na cache quando este deveria ter um acerto. Oprocessador 10 detectará uma falha da cache, e realizará umacesso à memória principal 32, substituindo a linhacorrespondente na cache 25 e atualizando a entrada da CAM26 com o endereço codificado perdido, corrigindo assim oerro temporário (à custa da latência do acesso à memóriaprincipal).Outra possibilidade é que a chave 112 case com umprimeiro campo de chave 110, e seja diferente de um segundocampo de chave 110 por um único bit. Devido à codificaçãoda chave 112 e dos campos de chave 110 com uma distânciaHamming de dois ou mais, o segundo (casamento errôneo)campo de chave 110 poderia normalmente descarregar atravésde pelo menos dois transistores de descarga 106. Sequalquer um dos bits de casamento errôneo ou o bit deparidade é o bit corrompido por um erro temporário, a linhacasada 102 correspondente será descarregada por apenas umtransistor 106, que pode demorar tanto que o circuito dedetecção correspondente 114 detecta a linha casada 102 comoalta, indicando um casamento. A chave 112 adicionalmentecasou com o primeiro campo de chave 110; portanto, a chave112 parece ter casado, ou acertado, mais do que uma entradada CAM 26. Neste caso, o circuito de detecção de colisão116, que monitora a saida de todos os circuitos de detecçãode linha casada 114, detectará o casamento duplicadoaparente e causará um erro.
Ainda outra possibilidade é que uma chave 112seja diferente de um campo de chave 110 por dois bits.Codificar a chave 112 e o campo de chave 110 por umadistância Hamming de dois significa que elas terão o mesmobit de paridade. Por exemplo, um campo de chave 110compreendendo todos os 0, com paridade par, terá um bit deparidade 0. Uma chave 112 compreende dois 1, e todos osoutros bits são 0; esta chave 112 também terá um bit deparidade 0. Se um erro temporário corromper um dos bits 0do campo de chave 110 para um 1, em uma posiçãocorrespondendo a um dos bits 1 na chave 112, então a chave112 e o campo de chave 110 diferem em apenas um bit (ooutro bit 1 na chave 112) . Se a temporização da CAM 26 éajustada para o pior caso de dois circuitos de descarga 106por casamento errôneo, a linha casada 102 pode permaneceralta neste caso, e um casamento errôneo será detectado pelaCAM 26, gerando um acerto errôneo na cache 21, 25.
Uma forma de evitar esta possibilidade é a de codificar a chave 112 e o campo de chave 110 por uma
distância Hamming de três ou mais. Isto é mais complexo emtermos de computação, e requer mais do que um bit deparidade para cada entrada 100 na CAM 26, assim como paracada endereço de (sub) página no TLB 28 ou micro TLB 29.
Por outro lado, uma distância Hamming de três aumentará avelocidade da CAM 26 (para a mesma tecnologia), uma vez quepelo menos três transistores de descargas 106 descarregarãocada linha casada 102 de comparação errônea (pelo menos naausência de erros temporários). Distâncias Hamming de ordem superior são evidentemente possíveis e constituiriam umaimplementação óbvia para os versados na técnica, dado oensinamento desta descrição. Contudo, existe um retornodecrescente na velocidade da CAM 26, à custa de aumentar otamanho da CAM 26 e seu consumo de energia mediante adição de mais elementos de armazenamento redundantes 110, portas
XOR 108, e transistores de. descarga 106.
Como uma alternativa para aumentar a distânciaHamming, a condição errônea descrita acima pode serdetectada pelo controlador de cache após o acerto na cache (errôneo), e um erro gerado se a condição for detectada.
Após um acerto na cache, o controlador de cache lê o campode chave 110. O bit de paridade é posto de lado, e aparidade para o campo de chave restante 110 é gerada ecomparada com a paridade lida a partir da CAM 26. Se os bits de paridade não casarem, o controlador da cacheinvalida a entrada 100 e gera uma exceção. Após restaurar oestado da máquina para este antes do acesso a cache, oprocessador outra vez acessaria a cache 21, 25, gerando umafalha da cache. O campo de chave codificado 110 corretoserá então gravado na CAM 26 como parte da operação deprocessamento de falha da cache. Como o controlador dacache lê e verifica a paridade do campo de chave 110 apósentregar a linha da cache para a cadeia de processador 12,essa operação não afeta adversamente o desempenho da cache.
Embora a presente invenção tenha sido descritaaqui no contexto de uma CAM 26 como parte de uma memória decache 25, os versados na técnica reconhecerão prontamenteque a invenção não é limitada a tal aplicação. Memórias deConteúdo Endereçável são usadas em uma variedade decircuitos e sistemas, incluindo armazenadores de dados ondeos endereços são "espionados" para suportar esquemas decoerência de cache, roteadores de pacote onde endereços IPsão buscados em relação a uma CAM, e semelhantes. Em muitastais aplicações, a velocidade da CAM pode ser aperfeiçoadamediante codificação dos campos de chave para fazer com quedois ou mais circuitos de descarga sejam ativados medianteum casamento errôneo, sem afetar o tempo de ciclo globalmediante armazenamento das chaves codificadas a seremaplicadas contra a CAM.
Embora a presente invenção tenha sido descritaaqui com relação a características, aspectos e modalidadesespecíficas da mesma, será evidente que diversas variações,modificações e outras modalidades são possíveis dentro doescopo amplo da presente invenção e, conseqüentemente,todas as variações, modificações e modalidades devem serconsideradas como dentro do escopo da invenção. Asmodalidades da presente invenção, portanto, devem serconsideradas em todos os aspectos como ilustrativas e nãorestritivas e todas as mudanças incorporadas pelosignificado e faixa de equivalência das reivindicaçõesanexas devem ser aqui aceitas.

Claims (24)

1. Método para acessar uma Memória Endereçável deConteúdo (CAM) (22, 2 6) tendo uma pluralidade de campos dechave codificada, compreendendo:- codificar (44, 50) uma chave de busca (112);- armazenar (46, 52) a chave de busca codificadadentro de um Armazenador de Tradução de Endereço (28, 29) ;e- acessar (62) a CAM (22, 26) utilizando a chavede busca codificada, armazenada.
2. Método, de acordo com a reivindicação 1, emque codificar uma chave de busca compreende codificar achave de busca com uma distância Hamming de dois.
3. Método, de acordo com a reivindicação 1, emque codificar uma chave de busca compreende codificar achave de busca com uma distância Hamming de três.
4. Método, de acordo com a reivindicação 1, emque acessar a CAM utilizando a chave de busca codificada,armazenada gera resultados corretos apesar de um erro debit único em um ou mais campos de chave codificada.
5. Método, de acordo com a reivindicação 1, emque codificar uma chave de busca compreende codificar umaprimeira parte da chave de busca, e em que armazenar achave de busca codificada compreende armazenar a primeiraparte codificada da chave de busca.
6. Método, de acordo com a reivindicação 5,compreendendo também codificar uma segunda parte da chavede busca, e em que acessar a CAM utilizando a chave debusca codificada, armazenada compreende acessar a CAMutilizando a primeira parte codificada, armazenada da chavede busca concatenada com a segunda parte codificada dachave de busca.
7. Método, de acordo com a reivindicação 1, emque a chave de busca compreende um endereço físico.
8. Método, de acordo com a reivindicação 7, emque armazenar a chave de busca codificada compreendearmazenar uma parte de endereço de página codificada doendereço físico em um Armazenador de Tradução de Endereços(TLB).
9. Método, de acordo com a reivindicação 8,compreendendo também:- gerar dois ou mais endereços de sub-página apartir do endereço de página, cada endereço de sub-páginaendereçando um tamanho de página de memória menor do que oendereço de página;- codificar pelo menos um endereço de sub-página;- armazenar os endereços de sub-página codificadaem um micro TLB;em que acessar a CAM utilizando a chave de buscacodificada, armazenada compreende acessar a CAM utilizandoum dos endereços de sub-página codificada no micro TLB.
10. Método, de acordo com a reivindicação 1, emque cada campo de chave codificada é codificado com umadistância Hamming de dois e inclui um bit de paridade, etambém compreende, se um casamento for detectado entre achave de busca codificada e um campo de chave codificado:- ler o campo de chave codificado, incluindo obit de paridade armazenado, a partir da CAM;- regenerar um bit de paridade para o campo dechave codificada;- comparar o bit de paridade regenerado com o bitde paridade armazenado; ese os bits de paridade tiverem comparaçãoerrônea, gerar um erro.
11. Método, de acordo com a reivindicação 1,compreendendo também:- armazenar uma versão codificada de um endereçocomo um campo de chave na CAM;- em que armazenar a chave de busca codificadainclui armazenar uma versão codificada de uma parte deendereço de página do endereço em um TLB; eem que acessar inclui comparar o endereçocodificado a partir do TLB com uma pluralidade de campos dechave codificada na CAM para detectar um casamento.
12. Método, de acordo com a reivindicação 11, emque a versão codificada do endereço é o endereço codificadocom uma distância Hamming de dois.
13. Método, de acordo com a reivindicação 11, emque a versão codificada do endereço é o endereço codificadocom uma distância Hamming de três.
14. Método, de acordo com a reivindicação 11, emque comparar o endereço codificado a partir do TLB com umapluralidade de campos de chave codificada na CAM detectacorretamente um casamento apesar de um erro de bit único emum ou mais campos de chave codificada.
15. Método, de acordo com a reivindicação 11,compreendendo também codificar uma parte de deslocamento depágina do endereço, e em que comparar o endereço codificadoa partir do TLB com uma pluralidade de campos de chavecodificada na CAM compreende comparar o endereço de páginacodificada a partir do TLB concatenado com o deslocamentode página codificada com uma pluralidade de campos de chavecodificada na CAM.
16. Método, de acordo com a reivindicação 11,compreendendo também:- gerar dois ou mais endereços de sub-página apartir do endereço de página, cada endereço de sub-páginaendereçando um tamanho de página de memória menor do que oendereço de página;- codificar pelo menos um endereço de sub-página;e- armazenar os endereços de sub-páginascodificadas em um micro TLB;em que comparar o endereço codificado do TLB comuma pluralidade de campos de chaves codificadas na CAMcompreende comparar um endereço de sub-página codificada doTLB com uma pluralidade de campos de chaves codificadas naCAM.
17. Método, de acordo com a reivindicação 11, emque cada campo de chave codificada na CAM é codificado comuma distância Hamming de dois e inclui um bit de paridade,e compreendendo também, se um casamento for detectado entreo endereço codificado do TLB e um campo de chave codificadana CAM:- ler o campo de chave codificada, incluindo obit de paridade armazenado, a partir da CAM;- regenerar um bit de paridade para o campo dechave codificada;- comparar o bit de paridade regenerado com o bitde paridade armazenado; e se os bits de paridade tiveremcomparação errônea, gerar um erro.
18. Método, de acordo com a reivindicação 1, emque a CAM está incluída em uma cache que é estruturalmenteseparada do TLB.
19. Método, de acordo com a reivindicação 23, emque a cache corresponde a uma cache de instrução ou umacache de dados.
20. Processador, compreendendo:- uma memória cache (21, 25) compreendendo umaMemória Endereçável de Conteúdo (CAM) e Memória de AcessoAleatório (RAM) (23, 27), a cache operativa para armazenarou fornecer dados para ou de uma entrada RAM quando umachave de busca (112) casa com um campo de chave (110)correspondente armazenado na CAM, os campos de chavecodificada por uma distância Hamming, de pelo menos dois; e- um Armazenador de Tradução de Endereços (TLB)(28, 29) operativo para armazenar e produzir endereços depágina como chaves de busca para a CAM, os endereços depágina codificados pelo mesmo algoritmo que os campos dechave da CAM.
21. Processador, de acordo com a reivindicação-20, em que os campos de chave CAM e os endereços físicosTLB são codificados por uma distância Hamming de três.
22. Processador, de acordo com a reivindicação-20, compreendendo também um micro TLB operativo paraarmazenar dois ou mais endereços de sub-páginacorrespondendo a um endereço de página no TLB, os endereçosde sub-página endereçando um tamanho de página de memóriamenor do que o endereço de página TLB, o micro TLBoperativo para fornecer um dos endereços de sub-página comouma chave de busca para a CAM.
23. Processador, de acordo com a reivindicação-20, em que cada entrada CAM compreende uma linha casadapré-carregada para um estado alto, e descarregado atravésde um transistor de descarga para cada bit da chave debusca que casa erroneamente com um bit correspondente docampo de chave armazenado nesta entrada, e em que otransistor de descarga associado a um bit de paridade éoperativo para descarregar mais corrente do que os outrostransistores de descarga na entrada CAM.
24. Processador, de acordo com a reivindicação-20, em que, se uma chave de busca casa com um campo dechave, a cache é também operativa para ler o campo de chavee um bit de paridade de campo de chave armazenado,regenerar um bit de paridade para o campo de chave,comparar o bit de paridade regenerado e o bit de paridadearmazenado, e se os bits de paridade estiverem emdesacordo, gerar um erro.
BRPI0618032-9A 2005-10-28 2006-10-30 busca de memória endereçável de conteúdo de alta velocidade usando chave codificada armazenada BRPI0618032A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/262,063 US7761774B2 (en) 2005-10-28 2005-10-28 High speed CAM lookup using stored encoded key
US11/262,063 2005-10-28
PCT/US2006/060371 WO2007051205A1 (en) 2005-10-28 2006-10-30 High speed cam lookup using stored encoded key

Publications (1)

Publication Number Publication Date
BRPI0618032A2 true BRPI0618032A2 (pt) 2011-08-16

Family

ID=37865671

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0618032-9A BRPI0618032A2 (pt) 2005-10-28 2006-10-30 busca de memória endereçável de conteúdo de alta velocidade usando chave codificada armazenada

Country Status (8)

Country Link
US (1) US7761774B2 (pt)
EP (1) EP1941512B1 (pt)
JP (1) JP5118051B2 (pt)
KR (1) KR100986546B1 (pt)
CN (1) CN101341547B (pt)
BR (1) BRPI0618032A2 (pt)
IL (1) IL191127A0 (pt)
WO (1) WO2007051205A1 (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9559987B1 (en) * 2008-09-26 2017-01-31 Tellabs Operations, Inc Method and apparatus for improving CAM learn throughput using a cache
US8095831B2 (en) * 2008-11-18 2012-01-10 Freescale Semiconductor, Inc. Programmable error actions for a cache in a data processing system
US7881089B2 (en) * 2009-02-24 2011-02-01 International Business Machines Corporation Coding techniques for improving the sense margin in content addressable memories
US8667258B2 (en) 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US9176895B2 (en) 2013-03-16 2015-11-03 Intel Corporation Increased error correction for cache memories through adaptive replacement policies
US9405860B1 (en) * 2014-03-11 2016-08-02 L-3 Communications Corp. Content addressable memory in which keys are embedded in comparators
US9513987B2 (en) * 2014-11-07 2016-12-06 International Business Machines Corporation Using error correcting codes for parity purposes
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9703894B2 (en) 2015-09-25 2017-07-11 International Business Machines Corporation Stored data with temporal proximity analysis for very large scale data with very low built in latency
KR102710346B1 (ko) 2016-05-18 2024-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN106599149A (zh) * 2016-12-07 2017-04-26 爱普(福建)科技有限公司 一种工程文本的编码方法
US10289752B2 (en) * 2016-12-12 2019-05-14 Intel Corporation Accelerator for gather-update-scatter operations including a content-addressable memory (CAM) and CAM controller
CN109979503B (zh) * 2019-03-22 2021-04-30 安徽大学 一种在内存中实现汉明距离计算的静态随机存储器电路结构
JP7235591B2 (ja) * 2019-05-28 2023-03-08 株式会社東芝 情報処理回路及び情報処理方法
US11232038B2 (en) 2019-06-05 2022-01-25 Samsung Electronics Co., Ltd. Ternary content addressable memory and operating method thereof
US11436071B2 (en) * 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory
US11797531B2 (en) * 2020-08-04 2023-10-24 Micron Technology, Inc. Acceleration of data queries in memory
US11614995B2 (en) 2020-12-21 2023-03-28 Honeywell International Inc. Dual redundant memory radiation hardening
US12001716B2 (en) * 2021-03-30 2024-06-04 Micron Technology, Inc. Key-value data storage system using content addressable memory
US12494265B2 (en) * 2023-12-13 2025-12-09 Hewlett Packard Enterprise Development Lp On-access error correction for content-addressable memory

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253328A (en) * 1989-11-17 1993-10-12 Microelectronics & Computer Technology Corp. Neural-network content-addressable memory
US5327534A (en) * 1990-07-30 1994-07-05 Digital Equipment Corporation Detection of duplicate alias addresses
GB9213821D0 (en) * 1992-06-30 1992-08-12 Inmos Ltd Content addressable memory
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
US5680566A (en) * 1995-03-03 1997-10-21 Hal Computer Systems, Inc. Lookaside buffer for inputting multiple address translations in a computer system
WO1996027832A1 (en) * 1995-03-03 1996-09-12 Hal Computer Systems, Inc. Parallel access micro-tlb to speed up address translation
US5652580A (en) * 1995-06-09 1997-07-29 Hal Computer Systems, Inc. Method and apparatus for detecting duplicate entries in a look-up table
JPH0922595A (ja) * 1995-07-05 1997-01-21 Fujitsu Ltd 連想記憶装置
JPH09223070A (ja) * 1996-02-19 1997-08-26 Hitachi Ltd データ変換回路
JP3686480B2 (ja) * 1996-07-11 2005-08-24 株式会社ルネサステクノロジ 半導体集積回路
US6067656A (en) * 1997-12-05 2000-05-23 Intel Corporation Method and apparatus for detecting soft errors in content addressable memory arrays
US6230231B1 (en) * 1998-03-19 2001-05-08 3Com Corporation Hash equation for MAC addresses that supports cache entry tagging and virtual address tables
US6308297B1 (en) * 1998-07-17 2001-10-23 Sun Microsystems, Inc. Method and apparatus for verifying memory addresses
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US6754799B2 (en) * 2001-05-16 2004-06-22 Microsoft Corporation System and method for indexing and retrieving cached objects
US7257763B1 (en) * 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
US6597595B1 (en) * 2001-08-03 2003-07-22 Netlogic Microsystems, Inc. Content addressable memory with error detection signaling
US7237156B1 (en) * 2001-08-03 2007-06-26 Netlogic Microsystems, Inc. Content addressable memory with error detection
US7472231B1 (en) * 2001-09-07 2008-12-30 Netapp, Inc. Storage area network data cache
US6760881B2 (en) * 2001-10-16 2004-07-06 International Business Machines Corporation Method for combining refresh operation with parity validation in a DRAM-based content addressable memory (CAM)
JP4131789B2 (ja) * 2001-10-25 2008-08-13 富士通株式会社 キャッシュ制御装置および方法
US7200793B1 (en) * 2002-03-22 2007-04-03 Altera Corporation Error checking and correcting for content addressable memories (CAMs)
US7216284B2 (en) * 2002-05-15 2007-05-08 International Business Machines Corp. Content addressable memory having reduced power consumption
US6618281B1 (en) * 2002-05-15 2003-09-09 International Business Machines Corporation Content addressable memory (CAM) with error checking and correction (ECC) capability
US7100097B2 (en) * 2002-07-16 2006-08-29 Hewlett-Packard Development Company, L.P. Detection of bit errors in maskable content addressable memories
US6978343B1 (en) * 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US7010741B2 (en) * 2002-10-29 2006-03-07 Mosaid Technologies Method and circuit for error correction in CAM cells
US6993623B2 (en) * 2002-12-23 2006-01-31 Micron Technology, Inc. Parity bit system for a CAM
US7237172B2 (en) * 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US7152140B2 (en) * 2003-06-18 2006-12-19 Intel Corporation Masking parity information associated with a ternary content addressable memory
US7243290B2 (en) 2003-07-11 2007-07-10 Micron Technology, Inc. Data encoding for fast CAM and TCAM access times
US6987684B1 (en) * 2003-07-15 2006-01-17 Integrated Device Technology, Inc. Content addressable memory (CAM) devices having multi-block error detection logic and entry selective error correction logic therein
US6870749B1 (en) * 2003-07-15 2005-03-22 Integrated Device Technology, Inc. Content addressable memory (CAM) devices with dual-function check bit cells that support column redundancy and check bit cells with reduced susceptibility to soft errors
US7089398B2 (en) 2003-07-31 2006-08-08 Silicon Graphics, Inc. Address translation using a page size tag
US7296210B2 (en) * 2003-09-16 2007-11-13 Alcatel-Lucent Inc Facilitating error detection for content addressable memory
US7305519B1 (en) * 2004-03-29 2007-12-04 Cisco Technology, Inc. Error protection for associative memory entries and lookup operations performed thereon
JP2005353238A (ja) * 2004-06-14 2005-12-22 Renesas Technology Corp 連想メモリ
US7366829B1 (en) * 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7304873B1 (en) * 2005-01-25 2007-12-04 Netlogic Microsystems, Inc. Method for on-the-fly error correction in a content addressable memory (CAM) and device therefor

Also Published As

Publication number Publication date
CN101341547A (zh) 2009-01-07
US7761774B2 (en) 2010-07-20
CN101341547B (zh) 2011-10-05
EP1941512B1 (en) 2012-08-15
EP1941512A1 (en) 2008-07-09
IL191127A0 (en) 2008-12-29
JP5118051B2 (ja) 2013-01-16
JP2009514115A (ja) 2009-04-02
US20070113158A1 (en) 2007-05-17
KR100986546B1 (ko) 2010-10-07
KR20080068895A (ko) 2008-07-24
WO2007051205A1 (en) 2007-05-03

Similar Documents

Publication Publication Date Title
BRPI0618032A2 (pt) busca de memória endereçável de conteúdo de alta velocidade usando chave codificada armazenada
US9112537B2 (en) Content-aware caches for reliability
US8028341B2 (en) Providing extended memory protection
US8572441B2 (en) Maximizing encodings of version control bits for memory corruption detection
US8751736B2 (en) Instructions to set and read memory version information
Liu et al. Ps-oram: Efficient crash consistency support for oblivious ram on nvm
Zubair et al. Soteria: Towards resilient integrity-protected and encrypted non-volatile memories
Hemaram et al. Soft and hard error-correction techniques in stt-mram
Alwadi et al. Phoenix: Towards persistently secure, recoverable, and nvm friendly tree of counters
US20250165406A1 (en) Row hammer mitigation using a victim cache
CN116324730A (zh) 针对可靠低电压高速缓存操作的掩蔽故障检测
CN103645964B (zh) 嵌入式处理器的高速缓存容错机制
US7607048B2 (en) Method and apparatus for protecting TLB&#39;s VPN from soft errors
Liu et al. Exploiting asymmetry in eDRAM errors for redundancy-free error-tolerant design
Liu et al. Ehap-oram: Efficient hardware-assisted persistent oram system for non-volatile memory
Huang et al. Update the root of integrity tree in secure non-volatile memory systems with low overhead
Eker et al. Using value similarity of registers for soft error mitigation
Zubair Improving the Security, Availability, and Reliability of Emerging Non-Volatile Memories
Kubo et al. Cachet: A High-Performance Joint-Subtree Integrity Verification for Secure Non-Volatile Memory
Shi et al. A High-Performance and Fast-Recovery Scheme for Secure Non-Volatile Memory Systems
Chen et al. Reliability-availability-serviceability characteristics of a compressed-memory system
Sánchez-Macián et al. Reducing false positives due to double adjacent errors in instruction TLBs
Zhi-Bin et al. A Fault-Tolerant L1 Cache with Predictable Performance by Virtual Filter Cache
CN119473702A (zh) 一种具有组合容错机制的高可靠转译后备缓冲器及其读写方法
Agnola Self-adaptive cache memories

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 ANUI DADE.

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 2216 DE 25/06/2013.