BRPI0607628A2 - método para conservar coerência de pelo menos uma memória cache acessìvel, sistema, suporte legìvel por computador - Google Patents

método para conservar coerência de pelo menos uma memória cache acessìvel, sistema, suporte legìvel por computador Download PDF

Info

Publication number
BRPI0607628A2
BRPI0607628A2 BRPI0607628-9A BRPI0607628A BRPI0607628A2 BR PI0607628 A2 BRPI0607628 A2 BR PI0607628A2 BR PI0607628 A BRPI0607628 A BR PI0607628A BR PI0607628 A2 BRPI0607628 A2 BR PI0607628A2
Authority
BR
Brazil
Prior art keywords
data
entry
partition
processes
entries
Prior art date
Application number
BRPI0607628-9A
Other languages
English (en)
Inventor
Ros Frédérick
Isnardy Lue
Reynaud Claudine
Rubenstein Wayne
Daniello Rudy
Original Assignee
Amadeus S.A.S.
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 Amadeus S.A.S. filed Critical Amadeus S.A.S.
Publication of BRPI0607628A2 publication Critical patent/BRPI0607628A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

MéTODO PARA CONSERVAR COERêNCIA DE PELO MENOS UMA MEMóRIA CACHE ACESSìVEL, SISTEMA, SUPORTE LEGìVEL POR COMPUTADOR. São descritos um método e um sistema para conservar a coerência de uma memória cache, acessível por processos independentes múltiplos. Os processos podem compartilhar dados comuns. Os processos efetuam operações simultâneas de busca de dados, seguidas opcionalmente por uma disponibilização dos dados aos processos, de uma remoção destes ou de uma inserção de dados novos. As operações de busca, remoção e inserção se executam exaustivamente, uma vez iniciadas pelos processos independentes. Elas se executam exclusivamente uma da outra quando elas devem operar sobre dados comuns. Cada uma das operações de remoção ou de inserção é completamente reversível. Dentro deste quadro, a invenção prevê que as operações de disponibilização, de remoção ou de inserção dos dados têm uma duração finita ou limitada de execução para impedir todo bloqueio. Mais exatamente, a operação de inserção que inclui uma etapa de liberação de uma entrada quando uma partição da memória cache está plena, se ela necessita examinar toda a partição para operar uma escolha, é, no entanto, possivelmente interrompida se for atingido um tempo máximo de exame. Neste caso, é liberada a entrada a mais apropriada, dentre as entradas já examinadas. As entradas da citada partição são examinadas exaustivamente, o que é feito memorizando-se o último endereço consultado da partição depois de cada liberação.

Description

MÉTODO PARA CONSERVAR COERÊNCIA DE PELO MENOS UMA MEMÓRIACACHE ACESSÍVEL, SISTEMA, SUPORTE LEGÍVEL POR COMPUTADOR
DOMÍNIO TÉCNICO DA INVENÇÃO
A presente invenção refere-se à engenharia de softwareem geral, e descreve mais especificamente um método e umsistema para conservar a longo prazo a coerência dos dados emuma memória cache compartilhada por processos independentesem um ambiente informático que exige uma disponibilidadepermanente destes dados e assegura tempos de acesso curtos aestes dados.
ESTADO DA TÉCNICA
Se o poder de cálculo dos computadores e de sua unidadecentral de processamento (UC ou CPU, isto é, ''CentralProcessing Unit" na literatura técnica inglesa) não cessou deaumentar consideravelmente no decorrer dos anos, asaplicações de software cada vez mais exigentes conseguem aomesmo tempo utilizar este aumento de poder de processamentorecorrendo cada vez mais a estas unidades centrais. Éespecificamente o caso quando estas devem acessar dadosdisponiveis em uma memória centralizada que pode ter queacumular quantidades enormes de informações, como porexemplo, as bases de dados que contêm as ofertas mundiais dotráfico aéreo. Estes dados devem poder ser consultadosconstantemente a partir de inúmeras agências de viagem epontos de vendas, e ser atualizados pelas companhias aéreasno mundo inteiro, 7 dias por semana, 24 horas por dia.
Quaisquer que sejam as suas configurações, as redes decomputadores e as soluções informáticas utilizadas para seobter este resultado, os desempenhos esperados,principalmente os tempos curtos de acesso às informaçõesprocuradas, passam sempre pela utilização de uma hierarquiade memórias. As informações buscadas devem, na verdade, seremlevadas a uma memória que as unidades centrais podem acessarcom uma rapidez suficiente, mesmo que uma tal memória nãopossa então conter o conjunto das informações suscetíveis deserem buscadas. Este tipo de memória é denominado memóriacache ou antememória. A memória cache serve para armazenar osdados, aos quais o sistema recorre, a um dado momento commaior freqüência, permitindo assim, reduzir os estados deespera das unidades centrais e processadores doscomputadores.
O tamanho necessariamente limitado de uma memória cachedeve poder ser compartilhado pelos diferentes processosindependentes que devem se executar simultaneamente nasunidades centrais. Além disso, quando eles trabalham sobredados comuns, as múltiplas tarefas independentes devem poderfazê-lo, de preferência, sem ter que duplicar seus dados.
A gestão de uma memória cache compartilhada porprocessos múltiplos é, portanto, um assunto complexo. Éespecialmente essencial se manter a coerência dos dadoscomuns a diversos processos. Se um deles deve modificar oscitados dados, é especialmente importante que um outroprocesso não possa os utilizar antes que eles tenham sidocompletamente modificados e atualizados. Embora se saiba queisso possa ser obtido pela troca de mensagens entreprocessos, nesse caso se trata de um método que impacta, noentanto, seriamente os desempenhos de acesso a estes dadosdevido ao tempo necessário para a troca de mensagens.
Um outro método atualmente praticado consiste em sepermitir que um processo obtenha sozinho, temporariamente, odireito de acesso a dados compartilhados bloqueando assim oacesso dos demais processos que devem ficar esperando. Noentanto, logo que um processo obtém um tal direito de acessoexclusivo, ele pode também ter que esperar por sua vez que umoutro processo libere os dados que ele deve também utilizar.Há, portanto, evidentemente casos em que dois ou maisprocessos se bloqueiam mutuamente. Um esperando que o outrose j a terminado e reciprocamente. As tarefas que devemexecutar estes processos não avançam mais, há um bloqueio.
Na verdade, também se pode ter o mesmo número dememórias cache que de processos. Há, portanto, repetição dosdados comuns na memória cache, o que se queria evitar emprimeiro lugar a fim de se utilizar do melhor modo possivel oespaço de memória disponível, e que novamente apresenta oproblema da coerência das repetições no interior destaúltima.
Por outro lado, uma memória cache não contém somentedaçlos de trabalho utilizados pelos processos propriamenteditos, mas deve ser rigidamente organizada. Uma memória cachena verdade é sempre uma vista parcial, extremamente dinâmicado conjunto dos dados presentes em uma memória mais lenta,econômica, mas de dimensões muitos grandes e situada emsegundo plano, tipicamente, baterias de discos magnéticos quepodem armazenar os teraoctetos (IO12 octetos) de dados. Estesdados de trabalho são todos potencialmente acessíveis pelosprocessos a um dado momento depois da sua transferência paraa memória cache compartilhada. Os dados de organização damemória cache devem, portanto, permitir que se mantenhasempre a coerência entre os dados de trabalho efetivamentepresentes a um momento dado na memória cache, e suacorrespondência na memória situada em segundo plano. Noentanto, se um processo chegar a ser interrompido antes doseu fim normal (simplesmente, por exemplo, porque um operadorterminou prematuramente uma solicitação) ou executar de modoincorreto devido a uma fraqueza da programação do software,pode então ocorrer que os dados de organização da memóriacache não sejam atualizados completamente ou que eles o sejamde um modo incorreto. As tabelas de controle que contêm estesdados de organização se tornam, então, parcialmentecorrompidas. Se, em geral, os softwares de aplicação sãoconcebidos para serem tolerantes às avarias e erros, a fim dese evitar que corrupções parciais acarretem conseqüênciasmais graves, seu acúmulo em um sistema que deve seroperacional 24 horas por dia produz a degradação a longoprazo dos desempenhos e da eficácia da memória cachereduzindo, principalmente, as dimensões efetivamenteutilizáveis desta, o que não permite mais lançar a mesmaquantidade de dados de trabalho compartilháveis pelo conjuntode processos que devem se desenrolar a um dado momento parasatisfazer as múltiplas solicitações oriundas de computadoresque devem acessar bases de dados muito grandes, tais comoaquelas que contêm as informações sobre o tráfego aéreomundial ou as reservas de grandes cadeias de hotéis.
O tamanho efetivamente utilizável de uma memória cacheé, portanto, um parâmetro chave do seu funcionamento. 0 seupreenchimento deve ser ótimo. Mais especificamente, umprocesso deve sempre poder lançar dados de trabalho novospara satisfazer as novas solicitações de clientes, e isto,mesmo se a memória cache já estiver cheia. Isto não podeentão se produzir senão liberando-se espaço e removendo-se,portanto, da memória os dados de trabalho que têm uma menorpossibilidade de serem reutilizáveis ou aqueles que estãoefetivamente vencidos. Esta gestão é complicada pelo fato dosprocessos serem completamente independentes uns dos outros.Uma solução atualmente utilizada consiste, portanto, em seter uma tarefa de fundo que se executa em adição a todos osprocessos para a atualização das tabelas de controle damemória cache e a liberação dos dados de trabalho que estãovencidos ou são muito antigos. Esta solução apresenta o graveinconveniente de que, quando a tarefa de fundo não se executamais normalmente, a memória cache se torna rapidamenteinutilizável, uma vez que ela se enche de dados vencidos.
Além disso, a tarefa de fundo não poderá em geral liberar osdados corrompidos por um processo que não tenha sidoexecutado completamente ou normalmente.
Em um sistema que deve funcionar 24 horas por dia e aoqual não se dá nunca partida, portanto, a confiabilidade nãodeve se . basear sobre o bom funcionamento de um elementotipicamente único, a tarefa de fundo descrita acima, como é,no entanto, freqüentemente o caso.
Foi proposto um mecanismo que tende a remediar algumasdas fraquezas da técnica anterior que já foram descritasacima em um pedido de patente depositado no instituto depatentes americano ou USPTO (United States Patent andTrademark Office) com o número 2003/01958 66, publicado em 16de outubro de 2003 com o titulo "Transaction-aware cachingfor access control metadata", este pedido de patente não sededica, no entanto, a descrever o mecanismo especifico paraliberar o espaço em uma cache j á cheia. Uma operação, noentanto, que é necessária com muita freqüência depois de umdeterminado tempo de utilização em um sistema no qual nuncase dá partida e no qual as solicitações sucessivas tendemconstantemente a acumular dados na memória cache.
O obj etivo da presente invenção é, portanto, o deremediar em geral as fraquezas da técnica anterior e decontribuir com melhoramentos referentes à gestão de umamemória cache impedindo qualquer bloqueio de processosprincipalmente para permitir a liberação de espaço quandoesta memória deve acolher novos dados.
SUMÁRIO DA INVENÇÃO
A presente invenção descreve um mecanismo para aconservação da coerência de uma memória cache, açcessivel aosprocessos independentes. Os processos podem compartilhardados comuns. Os processos efetuam operações simultâneas debusca de dados seguidas opcionalmente por umadisponibilização dos dados aos processos, de uma remoçãodestes ou de uma inserção de novos dados. As operações debusca, de remoção e de inserção se' executam exaustivamente,uma vez iniciadas pelos processos independentes. Elas seexecutam exclusivamente uma em relação à outra quando elasdevem operar com dados comuns. Cada uma das operações deremoção ou de inserção é completamente reversível. Dentrodeste quadro, a invenção prevê que as operações dedisponibilização, de remoção ou de inserção dos dados tenhamuma duração limitada ou finita de execução, visando impedirqualquer bloqueio. Mais especificamente, a operação deinserção que inclui uma etapa de liberação de uma entrada,quando uma partição da memória cache está cheia, solicitar oexame de toda a partição a fim de efetuar uma escolha, é, noentanto, possivelmente, interrompida, se for atingido umtempo de exame máximo. Neste caso, é liberada a entrada maisapropriada, dentre as entradas já procuradas. As entradas dapartição são examinadas exaustivamente, o que se obtémmemorizando-se o último endereço consultado da partiçãodepois de cada liberação.
BREVE DESCRIÇÃO DAS FIGURAS
As metas, objetivos, assim como as características evantagens da presente invenção serão mais evidentes lendo-sea descrição detalhada de uma modalidade preferida derealização desta última que é ilustrada pelos desenhosapensos em que:
A Figura 1 descreve o ambiente em que a invenção écolocada em prática.
A Figura 2 ilustra a partilha de um ELC pelos processosindependentes.
A Figura 3 descreve o caso em que uma multiplicidade deELC é acessada pelos processos independentes.
A Figura 4 descreve a estrutura das tabelas de dados deuma ELC.
A Figura 5 descreve a tabela de controle associada àstabelas de dados.
A Figura 6 dá um exemplo do conteúdo de uma partição databela de controle.
A Figura 7 descreve a estrutura da tabela das partições.
A Figura 8 descreve a estrutura e o endereçamento databela de espalhamento.
A Figura 9 descreve o método de busca dos dados em uma ELC.
A Figura 10 descreve os métodos para a disponibilização,a remoção, a substituição e a inserção de dados em uma ELC.
A Figura 11 descreve o método para se liberar umaentrada em uma tabela de dados cheia.
A Figura 12 descreve as etapas da execução de umprocesso que serve para manter a coerência das tabelas.
DESCRIÇÃO DETALHADA DA INVENÇÃO
Conforme esquematizado na Figura 1, a invenção se situadentro do contexto de um sistema (100) que inclui uma oudiversas unidades centrais (UC) de computadores (110)compartilhando um meio de armazenagem de rápido acesso (120)-Embora seja de dimensões limitadas, a memória compartilhada(MP) pode por sua vez, acessar uma ou mais memórias de massa(MM) situadas em segundo plano e constituídas geralmente porbaterias de discos magnéticos (130) que podem memorizarquantidades muito grandes de dados. Mais especialmente, basesde dados, conforme, por exemplo, aquelas que devem serconsultadas pelas agências de viagens em todo o mundo e quecontêm o conjunto de informações sobre o tráfego aéreomundial ou os estados de reserva de cadeias de hotéisinternacionais. As unidades centrais operam sob o controle deum sistema de exploração. UNIX, por exemplo, é um sistema deexploração freqüentemente utilizado, pois ele permite que setrate não somente usuários numerosos (140) simultaneamente,mas ele é também capaz de gerenciar um grande número detarefas ou processos que operam independentemente ao mesmotempo. Assim,, na memória compartilhada que compreende um órgão de controle (125), o sistema de exploração,diretamente, ou por meio de camadas de software suplementarintegradas ao sistema de exploração, permite que se definauma ou mais entidades lógicas da cache (ELC). Conforme já foidiscutido no parágrafo sobre o estado da técnica, afinalidade destas memórias cache (150) é poder levar a umamemória de acesso rápido, a memória compartilhada (120), apartir da memória de massa (130), os dados com os quais osprocessos independentes iniciados pelas unidades centrais(110) devem poder operar num dado momento.
A Figura 2 descreve mais especificamente um aspectoinédito da presente invenção que permite que processosindependentes (200), neste exemplo com referências de 1 a 5,possam compartilhar uma entidade de dados comuns (210) depoisque um único destes processos, aquele que porta o número 3neste exemplo, tenha tido necessidade de novamente encontraros dados na memória de massa (230), e tenha tido que efetuaras formatações e cálculos necessários (220) para a suautilização efetiva pelo conjunto dos processos suscetíveis deterem que operar com estes dados a um dado momento. Este modode operar conduz a uma grande minimização das necessidades dearmazenagem nas memórias cache contidas na memóriacompartilhada, aumentando, mantendo-se iguais todas as demaismedidas, sua eficácia e aliviando muito as unidades centrais,uma vez que os cálculos de formatação são efetuados peloúnico processo, portanto o número 3 neste exemplo somente.
A Figura 3 tem por objetivo mostrar que se os dadospodem ser vantajosamente compartilhados entre os processos emuma mesma ELC, a presente invenção permite também, no caso emque diversos ELCs coexistem (300) na memória compartilhada,que os processos (310) não tenham obrigatoriamente acesso atodas as ELCs. Assim, neste exemplo especifico, o processo 1tem acesso às ELCs A e C, ao passo que o processo 2 temacesso às ELCs B e C. Somente os dados presentes na ELC Csão, portanto comuns aos processos 1 e 2, o que pode provarser útil para impedir que o processo 2, por exemplo, possaalterar dados que somente o processo 1 está autorizado amodificar, dados que estarão então contidos, de preferência,na ELC A.
As figuras que seguem descrevem as diferentes tabelasutilizadas por uma ELC para recuperar e atualizar os dadoscontidos em um dado momento na memória cache. A Figura 4descreve a organização de uma tabela de dados. Conforme onome sugere, uma tabela de dados (400) serve, antes de maisnada, para memorizar os dados de usuário assim como a chaveúnica ou identificador associado a eles e parâmetrosdescritos abaixo. O número máximo de tabelas de dados quepodem estar presentes em uma ELC é parametrável durante aconfiguração do sistema. Poderá ser autorizada a criação deuma centena de tabelas de dados, por exemplo. Além disso,cada uma destas tabelas poderá compreender um número variávelde entradas (410), em número de quatro neste exemplo, tendoelas por sua vez o tamanho especificável durante aconfiguração, a fim de se adaptar melhor as tabelas aos dadosde usuário que elas devem acolher em uma aplicação especificada invenção. O formato de cada uma das entradas de uma tabelade dados compreende quatro campos contendo:
- o tamanho da chave (420),
- o tamanho dos dados de usuários (430),
a chave única identificando os dados (440).Tipicamente, esta chave é um campo de algumas dezenas deoctetos incluindo uma quantidade suficiente de informações para se identificar o tipo de dados associados.
- os dados de usuário propriamente ditos (450). Serão,por exemplo, tarifas praticadas por uma companhia aérea, porexemplo, para uma dada destinação e um dado periodo.
A Figura 5 descreve a tabela de controle que é utilizada para guardar o vestigio dos dados de usuários que estãopresentes em um dado momento em uma ELC. Há umacorrespondência biunivoca entre as entradas da tabela decontrole (500) e as dos dados (510, 520) . 0 número deentradas na tabela de controle é, portanto, igual ao númeromáximo de tabelas de dados que foi especificado no momento daconfiguração, multiplicado pelo número de entradas em cadauma destas tabelas. No exemplo simples da Figura 5 que mostrasomente duas tabelas de dados, a primeira (510) compreendendoquatro entradas e a segunda (520) cinco, a tabela de controle associada (500) compreende então um total de 9 entradasativas.
Observar-se-á que a entrada 0 destas tabelas é sempreutilizada para permitir que o campo 0 tenha um significadoespecifico: o de indicar uma ausência de referência a umaentrada.
Cada entrada da tabela de controle compreende asseguintes informações:
- O valor de espalhamento da chave associada aos dados.
- A data da inserção dos dados.
- A data de vencimento dos dados.
O tamanho dos dados memorizados na entradacorrespondente da tabela dos dados,
- A entrada seguinte na lista encadeada de entradas(livres ou utilizadas) das tabelas de controle e de dados ouo valor 0 se não houver outra entrada encadeada.
- A entrada encadeada precedente ou o valor 0 se nãohouver outra entrada encadeada.
- A entrada correspondente da tabela de espalhamento queé descrita com a Figura 8 ou o valor 0 quando se tratar dalista encadeada de entradas livres.
- O número da tabela de dados associada com esta entradada tabela de controle.
- A entrada correspondente na tabela de dados.
- O contador de utilização (para determinar qual dasentradas foi menos utilizada recentemente).
- Parâmetros diversos incluindo principalmente umindicador binário para marcar que a entrada correspondenteestá livre e pode ser utilizada.
A Figura 6 dá um exemplo do que poderia conter apartição da tabela de controle correspondente à tabela dedados 1 da Figura 5. A titulo de clareza, os parâmetros dalista acima citada não aparecem todos na tabela da Figura 6.
Neste exemplo, as entradas 2 e 4 estão livres (600).Elas estão duplamente encadeadas para poder examinar a listanas duas direções e, poderiam ser utilizadas para memorizardados de usuários. A entrada livre 2 é referência, portanto,à entrada livre seguinte, a 4 (610). Esta última, éreferência à entrada livre precedente, a 2 (620).
As entradas utilizadas 1 e 3 pertencem aqui a uma mesmalista encadeada que serve para resolver as colisõesprovenientes de um espalhamento idêntico de chaves que são,no entanto, diferentes. Elas são, referência a uma entradaespecifica da tabela de espalhamento (630) à entrada 123. Atabela de espalhamento e o espalhamento das chaves deidentificação serão discutidos em detalhes na Figura 8abaixo. Assim, como a lista das entradas livres, aqueladestinada a resolver as colisões é também duplamenteencadeada: a entrada 1 é referência à entrada utilizadaseguinte (640), a 3 que é por sua vez referência à precedente(650) da lista, a 1.
Conforme já foi discutido, os valores nulos das colunas "entrada seguinte" e "entrada precedente" não fazemreferência a nenhuma entrada e começam ou terminam uma listaencadeada.
A Figura 7 descreve a tabela de partições (700). Como oseu nome sugere, a tabela de partições serve para armazenaras informações necessárias para se determinar como a tabelade controle e as de dados são organizadas e repartidas. Há,portanto, o mesmo número de entradas (710) na tabela departição que de tabelas de dados, ou seja, duas com o exemplodas figuras precedentes. Cada uma das entradas da tabela departições que são referência à tabela de dados correspondente(a primeira entrada é referência à tabela n° 1 e assim pordiante) compreende os seguintes parâmetros, que, a titulo declareza, não aparecem, no entanto, todos no esquema da tabelade partições da Figura 7:
- O indice na tabela de controle da primeira entrada dapartição correspondente (720).
- O índice da última entrada (730).
- O número de entradas desta partição.
- O tamanho das entradas nesta partição.
- O número de entradas livres.
- A primeira entrada da lista encadeada das entradaslivres (740).
- Um indicador de bloqueio da partição.
- O índice na tabela de controle do ponto em que aseguinte busca de uma entrada, suscetível de ser removida,deverá começar.
A Figura 8 descreve a tabela de espalhamento (800) que éo ponto de entrada para toda busca em uma ELC.
O ponto de entrada na tabela de espalhamento (810) é o valor resultante do espalhamento da chave de identificaçãodos dados. A chave única, associada aos dados, e ' que édescrita nas figuras precedentes. Pelos motivos já citados, aentrada 0 deve permanecer sem utilização e a função deespalhamento deve fornecer um valor compreendido entre 1 e olimite superior de endereçamento da tabela de espalhamento. Atabela de espalhamento é parametrável durante a configuraçãodo sistema. A invenção não pressupõe a utilização de umafunção de espalhamento especifico. A fim de se tentar aobtenção de um minimo de colisões, objetivo final de todafunção de espalhamento, eventualmente em função da estruturadas chaves, poderá ser escolhida uma ou outra das numerosasfunções e métodos de espalhamento que foram propostos naabundante literatura técnica que trata deste assunto. Afunção de espalhamento deverá, no entanto, ser escolhida ouadaptada para que o valor 0 seja sempre excluído.
Em uma modalidade preferida da presente invençãorepresentada na Figura 8, a única chave de identificação(840) que necessita tipicamente de 50 a 100 octetos ésubmetida a um primeiro espalhamento (850) para ser obtido umvalor que se inscreve, por exemplo, em um campo de 64 bits edenominado doravante H[int]. A tabela de espalhamento nãopodendo, no entanto, compreender na prática 264 entradas, éefetuado um segundo espalhamento (860) de H[int] para seobter uma tabela (800) de tamanho razoável. Será desejável,por exemplo, se devolver o campo de 64 bits a um campo de 18bits, ou seja, aproximadamente 256 quilos entradas (218) . Avantagem de se proceder a um duplo espalhamento consiste emse poder conciliar uma tabela de espalhamento de tamanhorazoável, permitindo ao mesmo tempo a comparação para seeliminar a dúvida em caso de colisão na tabela deespalhamento, sobre um campo de bits (64 bits) rapidamentemanipulável por um processo. Uma escolha criteriosa daprimeira função de espalhamento permite na verdade, que seobtenha uma probabilidade de colisão quase nula, mesmo se ascolisões vierem a ser mais numerosas depois de uma reduçãosuplementar a 18 bits, por exemplo. Uma comparação completadas chaves, compreendendo de 50 a 100 octetos, não terá assimpraticamente nunca que ser efetuada mais de uma vez, conformediscutido antes no tocante à Figura 9.
Se nos referirmos novamente à Figura 6, é, portanto, ovalor de espalhamento intermediário H[int] que compreende 64bits no exemplo acima, que está presente na tabela decontrole (660) e que será utilizado em primeiro lugar a fimde acelerar as comparações.
O valor final de espalhamento (810) da chave associadaaos dados H[CLEF] é utilizado para consultar a tabela deespalhamento. A entrada correspondente contém as seguintesinformações:
- Um indicador de bloqueio (V) da entrada para permitirque um único processo de cada vez possa modificar a listaencadeada (820) começando nesta entrada da tabela deespalhamento. Este aspecto da invenção é discutido maisabaixo na descrição.
- A primeira entrada na tabela de controle da listaencadeada utilizada para resolver as possíveis colisõesresultantes do espalhamento das chaves. Naturalmente, se oespalhamento das chaves de dados não der nenhuma colisão auma entrada especifica da tabela de espalhamento, a listaencadeada correspondente será reduzida a um único elemento.
Os valores nulos na tabela de espalhamento (830) não são,referência a nenhuma entrada da tabela de controle. Nenhumadas chaves de dados dá um valor de espalhamento para estaentrada.
A Figura 9 descreve o método de acesso (900) aos dadosem uma ELC. A busca dos dados em uma ELC começa peloespalhamento da chave (910) associada aos dados buscados. Ovalor obtido serve para se comunicar à tabela de espalhamentoprecedentemente descrita (920). Se a entrada correspondentefor nula, a busca pode ser declarada imediatamenteinfrutífera (932). Este resultado é indicado imediatamente(940) ao processo que busca os dados, para informá-lo de queeles não se encontram presentes na ELC interrogada.
Se a entrada comunicada não for nula (934), a tabela decontrole da ELC deve ser lida na entrada referenciada pelatabela de espalhamento (950). Esta entrada contém o primeiroelemento, possivelmente o único, de uma lista encadeada deentradas suscetíveis de conter a informação buscada,
Esta consulta da tabela de controle não será feita, noentanto, imediatamente, se a entrada correspondente estiverbloqueada por um outro processo (945). Será necessário entãose esperar que este último desbloqueie a entrada paracontinuar. O processo em curso, se ele for suscetível deacarretar uma modificação das tabelas (remoção ou inserção),bloqueia por sua vez a entrada da tabela de espalhamento(947) .
É efetuada uma primeira comparação dos valores deespalhamento de chave (960). Isto é, compara-se inicialmenteo valor de espalhamento da chave buscada com aquela extraídada tabela de controle. Conforme discutido no tocante à Figura8, em uma modalidade preferida da presente invenção, acomparação se efetua sobre um valor intermediário deespalhamento H[int].
Se eles forem diferentes (974), a busca deve continuar aexaminar a lista encadeada (980) se ela contiver mais de umelemento. Se houver somente um único elemento, ou quando seatinge o último elemento da lista (982), a busca deve serdeclarada infrutífera (940).
Se os valores de espalhamento forem, no entanto,idênticos (972), a chave buscada terá sido possivelmenteencontrada. Como qualquer uma das funções de espalhamentopode, no entanto, resultar em dois valores idênticos deespalhamento, a partir de chaves diferentes, deve-se fazeruma verificação. Para se eliminar a dúvida, as chaves devementão ser comparadas (990) . Em uma modalidade preferida dapresente invenção, para acelerar a comparação, o tamanho dachave buscada é inicialmente comparado com o daquela que estámemorizada na tabela de dados (na entrada correspondendoàquela da tabela de controle). Se as chaves forem de tamanhosdiferentes, elas não podem ser idênticas e a busca devecontinuar (994) como precedentemente, examinando-se a lista encadeada, se esta contiver mais de um elemento. Caso contrário, a busca deve ser declarada infrutífera (940).
Se os tamanhos das chaves forem iguais, efetua—se uma comparação completa delas finalmente. Se as chaves forem efetivamente idênticas (992), a busca é frutífera. Os dados buscados são apresentados na tabela de dados. Se as chaves forem diferentes, a busca deve continuar, como precedentemente, examinando a lista encadeada.
Observar-se-á que na maior parte dos casos bastará umaúnica comparação completa das chaves (de 50 a 100 octetos) quando os dados tiverem sido efetivamente encontrados. A probabilidade de se ter que fazer mais de uma comparação completa das chaves depende da eficácia da primeira função deespalhamento retida para minimizar as colisões e descrita na Figura 8. Conforme já discutido, esta probabilidade é praticamente nula.
A Figura 10 descreve as diferentes ações que se seguem à busca de dados em uma ELC.
Em todos os casos, se a busca for infrutífera, oprocesso que originou a busca será informado do fato (1000).
Se a busca for frutífera e tiver sido iniciada por um processo visando consultar os dados, estes são extraídos da tabela de dados e colocados à disposição do processo que serviu de origem para a busca (1010).
Se a busca for frutífera e tiver sido iniciada por um processo visando a remoção (1020) dos dados correspondentes da ELC, a tabela de controle deve ser modificada (1025) . A entrada correspondente da partição deve ser removida da lista encadeada das entradas utilizadas desta partição e acrescentada à das entradas livres. A remoção de uma entrada da lista encadeada das entradas utilizadas, se efetua, evidentemente reconstituindo-se, se for necessário, a lista encadeada por modificação dos campos de entrada "seguinte" e "precedente", conforme indicado na Figura 6.
Quando o desenrolar da inserção de novos dados (1030) emuma ELC, depende em primeiro lugar do fato da chave já estar presente ou não, a inserção exige sempre que o tamanho necessário para se poder inserir estes dados seja inicialmente calculado (1035), a fim de se determinar quais as entradas livres das tabelas de dados são utilizáveis.
Se a busca tiver sido infrutífera, a inserção dependerá então de se saber se resta pelo menos um espaço livre de tamanho adequado para acolher os dados novos. Se este for o caso (1042) uma entrada livre é selecionada (1060) e a inserção dos dados novos é efetuada (1070), o que inclui a modificação ou a criação de listas encadeadas na tabela de controle.
Se não houver espaço livre de tamanho adequado (1044), é necessário então liberar um espaço na ELC (1050) para se poder proceder à inserção (1070) . 0 método para se liberar um espaço está descrito mais precisamente na Figura 11.
Se a busca tiver sido frutífera, a chave buscada já se encontra presente, trata-se de uma modificação dos dados contidos na tabela de dados. Surge o problema então de saber se há espaço suficiente para memorizar os novos dados na mesma entrada. Se a resposta for positiva (104 6) pode-se proceder imediatamente à inserção (1070). Entretanto, se o tamanho não convier (1048), será necessário, como precedentemente, liberar uma entrada de tamanho adequado (1050). Previamente, ter-se-á também liberado a entrada cujo tamanho mostrou ser insuficiente para que ela possa ser reutilizada (1045). Esta etapa é equivalente àquela já descrita acima e que consiste em remover os dados de ELC (1020) .
No tocante à Figura 10, observar-se-á finalmente que aofim de uma operação que acarreta uma modificação das tabelas, isto é, as operações de remoção (1025) ou de inserção (1070) da entrada correspondente da tabela de espalhamento devem estar desbloqueadas, uma vez que a operação está terminada.
A Figura 11 descreve mais especificamente a etapa (1050) da Figura 10 que consiste em buscar a melhor entrada a serliberada quando não há mais espaço livre para acolher os novos dados a serem inseridos. 0 método é descrito utilizando-se um exemplo de uma partição da tabela de controle (1100) compreendendo 8 entradas, de tamanho suficiente para acolher os novos dados, todos utilizados. A titulo de clareza, somente são representados os campos da tabela de controle necessários para a compreensão do mecanismo de inserção.
Neste exemplo, a partição que é referência à tabela de dados n°l (1110) e as entradas 0-7 (1120) compreendem 3 listas encadeadas (1130) que começam respectivamente nos endereços 1, 4 e 5 e compreendem respectivamente 3, 3 e 2 entradas. Os inícios de cadeias são, por sua vez, endereçados pela tabela de espalhamento já descrita.
Para se liberar uma entrada, o algoritmo de inserção vai utilizar uma ou outra das duas informações abaixo presentes na tabela de controle ou ambas:
- O tempo (hora/data) em que a validade dos dados associados à entrada vai expirar (1140). Este tempo deve ser comparado ao tempo corrente para determinar, examinando-se todas as entradas da partição, se uma das entradas já estiver vencida e puder ser removida. Na prática, este tempo, conforme mostrado, assume a forma de um valor que um simples contador deve atingir quando o tempo de validade dos dados expirar.
- A utilização efetiva das entradas (1150), de tal modo que se possa determinar qual é a entrada que permaneceu sem utilização a mais tempo (utilizada menos recentemente ou "LRU", isto é, "least recently used" na literatura técnica em língua inglesa sobre estes assuntos). No exemplo da Figura 11, o valor mais elevado do campo "utilização" indica a entrada que permaneceu sem utilização por mais tempo, isto é, a ■ do endereço 7 da tabela de controle (1155). É esta a entrada que seria, portanto, suscetível de ser substituída.
Dependendo do tipo de utilização da invenção, oscritérios para se escolher a remoção de uma entrada em vez de uma outra, poderão ser regulados de modo muito diferente. Uma utilização habitual destes parâmetros consiste em observar primeiro se há uma entrada cujos dados estejam vencidos. Se houver pelo menos uma entrada que satisfaça este critério, é, por exemplo, a primeira encontrada, durante o exame de todas as entradas (1160) que é selecionada. Se nenhuma delas tiver dados vencidos poder-se-á então escolher a remoção daquela entrada que permaneceu sem ser utilizada durante mais tempo (1155) . Para se evitar, no entanto, a remoção dos dados com demasiada rapidez, poderá ser atribuído um limiar para se levar em conta este último parâmetro. Poderá ocorrer, então, que os critérios de remoção de uma entrada não sejam satisfeitos em um primeiro tempo, devendo neste caso o algoritmo prever uma estratégia de recuo, menos restringente, como aquela que permitisse se escolher uma entrada cujo tempo de expiração fosse o mais possivel próximo do tempo corrente.
Observe-se que, se a invenção não pressuponha um método especifico de utilização destes parâmetros para liberar uma entrada, ela levanta, no entanto, explicitamente a hipótese de que uma entrada será sempre liberada para poder acolher novos dados no cache.
O exemplo da Figura 11 pressupõe que, se o tempo corrente tem um valor de 15, a entrada 2 da tabela de controle pode ser removida, uma vez que os dados desta entrada venceram no tempo 12 que é anterior (1145). Como a entrada 2 fazia parte de uma lista encadeada, esta deve ser modificada (1134) e a nova entrada que compreende somente um elemento, ser inserida (1132) . 0 novo estado da partição é, portanto, conforme indicado na tabela de baixo (1105).
Neste exemplo, pressupôs-se implicitamente que a nova entrada correspondesse também a uma nova entrada na tabela de espalhamento e que não havia, portanto, colisão. Será compreendido que a nova entrada poderia corresponder a um valor de espalhamento que já está sendo utilizado. Neste caso, ela deveria ser acrescentada à lista encadeadacorrespondente em vez de formar uma lista suplementar que compreende por enquanto um único elemento. A manipulação de listas encadeadas é uma prática bem conhecida dos versados na técnica neste dominio e não será, portanto, descrita.
Conforme já foi discutido no decorrer da descrição, os processos têm a liberdade de utilizar concomitantemente uma ELC. Somente se aplicam duas restrições para se evitar que um processo possa utilizar dados incompletamente modificados por um outro processo.
Como já foi indicado para a Figura 8, cada entrada da tabela de espalhamento compreende um indicador de bloqueio para impedir que dois processos possam tentar modificar simultaneamente uma entrada de ELC. Como mostrado mais precisamente na etapa (945) na Figura 9, o acesso é bloqueado se um processo que deve modificar as tabelas de dados se executa já a partir desta entrada. Pode, no entanto, haver tantos acessos simultâneos a uma ELC quantas as entradas diferentes na tabela de espalhamento. Somente os acessos múltiplos a partir de um mesmo valor de espalhamento para operações que devem acarretar uma modificação das mesmas, não são possíveis, uma vez que o resultado estaria trabalhando sobre as mesmas listas encadeadas.
Existe também um indicador de bloqueio nas entradas da tabela de partições descrita na Figura 7. A finalidade destebloqueio consiste na proteção da atualização das listas encadeadas de entradas livres de processos independentes, que estariam trabalhando em uma mesma partição, desejariam modificar. As entradas da tabela das partições são bloqueadas, principalmente quando se libera espaço, isto é, nas etapas (1045), (1050) ou (1025) descritas na Figura 10 e desbloqueadas nas mesmas condições que as da tabela de espalhamento.
Assim, as operações iniciadas pelos processos que acarretam uma modificação das tabelas de dados se executam sempre exaustivamente, antes que as entradas em curso de modificação possam ser novamente utilizadas por um outroprocesso. Como os processos devem trabalhar sobre as entradas comuns das tabelas de controles, eles se excluem mutuamente durante a sua execução.
Conforme indicado na Figura 11, será observado aliás que o algoritmo de inserção pressupõe que se possa ter que liberar uma entrada em uma tabela de controle cheia e que é necessário então examinar esta tabela (1160) para selecionar a entrada mais apropriada. Para se evitar que um processo possa bloquear uma entrada durante um periodo de tempo demasiado longo, a invenção prevê que este exame poderá ser limitado, especificando-se, por exemplo, um número máximo de leituras consecutivas da tabela de controle. Este é o motivo porque a tabela de partição, descrita na Figura 7 inclui também um parâmetro para especificar o ponto a partir do qual a busca de uma entrada deve recomeçar, cada vez que este mecanismo for utilizado, visando se evitar com isso que o exame da tabela de controle se efetue sempre a partir do mesmo ponto, da primeira entrada, por exemplo. Isto permite que todas as entradas sejam eventualmente examinadas e que cada uma delas tenha a oportunidade de ser substituida.
Como os processos são de duração finita ou limitados no que concerne àqueles que solicitam a liberação de uma entrada durante o exame da tabela de controle, não podem se produzir, portanto, nenhum bloqueio permanente.
A Figura 12 explica o caso dos processos que devem alterar normalmente (1200) no decorrer de sua execução, as tabelas que controlam uma ELC.
Tal é o caso, antes de mais nada, da inserção de dados novos, operação descrita na Figura 10 que solicita que se criem ou que se modifiquem listas encadeadas.
Um processo que deve modificar as tabelas de uma ELC, e que não chegaria até o seu termo, não deve deixar estas num estado incoerente, perturbando listas encadeadas, por exemplo, que não poderiam ser mais examinadas normalmente, o que condenaria as entradas associadas das tabelas de dados. A invenção prevê que os processos potencialmente perigososdevem salvaguardar o contexto das tabelas (1210) antes que eles se executem, isto é, que eles devem memorizar todas as informações necessárias, tendo em vista a possibilidade de se restaurar o estado anterior das tabelas, se eles não se executassem completamente, ou se uma anomalia fosse detectada no decorrer da execução.
Cada processo tem um identificador único (ID) e utiliza uma zona de memória de trabalho dedicada, na qual estas informações são memorizadas durante toda a duração de sua execução. Se um bloqueio for criado na tabela de espalhamento, por exemplo, o identificador do processo será registrado, assim como a referência da entrada da tabela de espalhamento correspondente. De um modo análogo, são registrados os vínculos de uma lista encadeada que vai ser modificada por . um processo. Se o processo encontrar um problema (1232) , recorre-se a uma função associada aos processos que se encarregará de restaurar o estado anterior (124 0). Nos exemplos acima, será desfeito o bloqueio da tabela de espalhamento e serão restabelecidos os vínculos da lista encadeada. No decorrer de sua execução (1220), cada processo estabelece não somente as estatísticas que servem entre outras coisas a medir a eficácia da memória cache, como também um estado de completado que é utilizado (1230) para determinar se o processo foi terminado normalmente (1234).
A colocação em prática da salvaguarda e da restauração do contexto das tabelas assim como o estabelecimento de um estado de completado do processo não recorrem a mecanismos próprios à invenção. Podem ser empregados todos os métodos bem conhecidos dos especialistas da engenharia de software para colocar em prática tais mecanismos e estes métodos não serão, portanto, descritos.

Claims (7)

1. Método para conservar coerência de pelo menos uma memória cache acessível, por uma multiplicidade de processos independentes (200) que podem compartilhar dados comuns (210), efetuando tal multiplicidade de processos operações de busca (900) simultâneas dos dados seguidas opcionalmente de uma disponibilização (1010), de uma remoção (1020) ou de uma inserção (1030) dos dados, executando-se as operações de busca, remoção e de inserção exaustivamente logo que elas tenham sido iniciadas pela multiplicidade de processos independentes, executando-se exclusivamente uma da outra quando elas operam sobre os dados comuns e sendo cada uma completamente reversível, caracterizado pelo fato de que as operações de busca, seguidas opcionalmente de uma das operações de disponibilização, de remoção ou de inserção dos dados, têm uma duração finita ou limitada de execução.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a operação de inserção inclui uma etapa de liberação (1050) de uma entrada na partição da tabela de controle se a partição estiver cheia, consistindo o método em: examinar (1160) a partição a fim de operar uma escolha, sendo o exame possivelmente interrompido se for atingido um tempo máximo de exame; selecionar a entrada (1145) a mais adequada dentre as entradas examinadas; liberar a entrada (1050) .
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa de seleção consiste em selecionar incondicionalmente a última das entradas examinadas de, um tamanho suficiente para acolher os novos dados.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que na etapa de exame (1160) todas as entradas da partição são examinadas exaustivamente.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que a exaustividade do exame é obtida memorizando-se (7 00) o último endereço consultadodepois de cada liberação.
6. Sistema, e especialmente memória cache (150) utilizada para disponibilizar para uma multiplicidade de unidades centrais de tratamento (110), dados armazenados em uma memória de massa (130), caracterizado pelo fato de que compreende meios adaptados para colocar em prática o método descrito em qualquer uma das reivindicações precedentes.
7. Suporte legível por computador, compreendendo as instruções de um programa executável pelo computador, caracterizado pelo fato de que coloca em prática o método como definido em qualquer uma das reivindicações 1 a 5.
BRPI0607628-9A 2005-03-16 2006-03-08 método para conservar coerência de pelo menos uma memória cache acessìvel, sistema, suporte legìvel por computador BRPI0607628A2 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US66191305P 2005-03-16 2005-03-16
US60/661.913 2005-03-16
EP05102054A EP1703404A1 (fr) 2005-03-16 2005-03-16 Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants
EP05102054.3 2005-03-16
PCT/EP2006/060567 WO2006097424A1 (fr) 2005-03-16 2006-03-08 Méthode et système pour maintenir la cohérence d'une mémoire cache utilisée par de multiples processus indépendants

Publications (1)

Publication Number Publication Date
BRPI0607628A2 true BRPI0607628A2 (pt) 2010-04-20

Family

ID=34938990

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0607628-9A BRPI0607628A2 (pt) 2005-03-16 2006-03-08 método para conservar coerência de pelo menos uma memória cache acessìvel, sistema, suporte legìvel por computador

Country Status (12)

Country Link
US (1) US7971000B2 (pt)
EP (2) EP1703404A1 (pt)
JP (1) JP4999833B2 (pt)
KR (1) KR101268437B1 (pt)
CN (1) CN100594483C (pt)
AT (1) ATE403187T1 (pt)
AU (1) AU2006224669B2 (pt)
BR (1) BRPI0607628A2 (pt)
CA (1) CA2596290C (pt)
DE (1) DE602006002032D1 (pt)
ES (1) ES2312119T3 (pt)
WO (1) WO2006097424A1 (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100489814C (zh) * 2007-08-01 2009-05-20 杭州华三通信技术有限公司 一种共享缓存系统及实现方法
US9436502B2 (en) * 2010-12-10 2016-09-06 Microsoft Technology Licensing, Llc Eventually consistent storage and transactions in cloud based environment
CN103136080B (zh) * 2013-03-12 2016-07-13 青岛中星微电子有限公司 一种缓存锁定功能的测试方法和装置
US10049078B1 (en) * 2015-06-25 2018-08-14 Amazon Technologies, Inc. Accessing a memory location using a two-stage hash scheme
JP6674092B2 (ja) * 2016-02-10 2020-04-01 富士通株式会社 データ管理プログラム、データ管理装置、及びデータ管理方法
CN106020999B (zh) * 2016-05-31 2017-10-17 广东欧珀移动通信有限公司 一种操作系统内部的通信方法及设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103794B2 (en) * 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
US6275832B1 (en) * 1998-09-21 2001-08-14 International Business Machines Corporation Providing transaction undo without logging
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US7203709B2 (en) * 2000-05-12 2007-04-10 Oracle International Corporation Transaction-aware caching for access control metadata
US6842832B1 (en) * 2000-08-25 2005-01-11 International Business Machines Corporation Reclaim space reserve for a compressed memory system
KR100832222B1 (ko) * 2001-06-09 2008-05-23 자프 아게 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법
US7020746B2 (en) * 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction

Also Published As

Publication number Publication date
US7971000B2 (en) 2011-06-28
EP1866770B1 (fr) 2008-07-30
AU2006224669A1 (en) 2006-09-21
ES2312119T3 (es) 2009-02-16
ATE403187T1 (de) 2008-08-15
EP1703404A1 (fr) 2006-09-20
WO2006097424A1 (fr) 2006-09-21
CN100594483C (zh) 2010-03-17
JP2008533600A (ja) 2008-08-21
CA2596290A1 (fr) 2006-09-21
EP1866770A1 (fr) 2007-12-19
CN101185068A (zh) 2008-05-21
KR101268437B1 (ko) 2013-06-04
US20080183970A1 (en) 2008-07-31
AU2006224669B2 (en) 2011-09-08
JP4999833B2 (ja) 2012-08-15
DE602006002032D1 (de) 2008-09-11
CA2596290C (fr) 2014-08-19
KR20080023285A (ko) 2008-03-13

Similar Documents

Publication Publication Date Title
US6581063B1 (en) Method and apparatus for maintaining a linked list
US6868414B2 (en) Technique for serializing data structure updates and retrievals without requiring searchers to use locks
US8667001B2 (en) Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US9047351B2 (en) Cluster of processing nodes with distributed global flash memory using commodity server technology
US8719307B2 (en) Concurrent linked hashed maps
Howley et al. A non-blocking internal binary search tree
US7533138B1 (en) Practical lock-free doubly-linked list
Fernandes et al. Lock-free and scalable multi-version software transactional memory
JP4237354B2 (ja) トランザクション処理方法及びトランザクション処理システム
BRPI0607628A2 (pt) método para conservar coerência de pelo menos uma memória cache acessìvel, sistema, suporte legìvel por computador
US9207997B2 (en) Multithreaded lock management
US20080021908A1 (en) Synchronization and dynamic resizing of a segmented linear hash table
BR112015019280B1 (pt) Método para recuperar dados específicos de aplicativo e sistema
Marathe et al. Toward high performance nonblocking software transactional memory
US20200142829A1 (en) Method and apparatus for implementing lock-free data structures
WO2017012667A1 (en) Hardware transactional memory in non volatile memory with log and no lock
Avni et al. Hardware transactions in nonvolatile memory
Zheng et al. Hmvfs: A hybrid memory versioning file system
CN107667353A (zh) 将核存储器内容转储清除并恢复到外部存储器
Do et al. Fast peak-to-peak behavior with SSD buffer pool
Attiya et al. Tracking in order to recover: Recoverable lock-free data structures
Siakavaras et al. RCU‐HTM: A generic synchronization technique for highly efficient concurrent search trees
JP3620889B2 (ja) データ世代管理方式
Costa et al. FLeeC: a Fast Lock-Free Application Cache
Mao Fast in-memory storage systems: two aspects

Legal Events

Date Code Title Description
B06G Technical and formal requirements: other requirements [chapter 6.7 patent gazette]

Free format text: SOLICITA-SE A REGULARIZACAO DA PROCURACAO, UMA VEZ QUE BASEADO NO ARTIGO 216 1O DA LPI, O DOCUMENTO DE PROCURACAO DEVE SER APRESENTADO EM SUA FORMA AUTENTICADA; OU SEGUNDO PARECER DA PROCURADORIA MEMO/INPI/PROC/NO 074/93, DEVE CONSTAR UMA DECLARACAO DE VERACIDADE, A QUAL DEVE SER ASSINADA POR UMA PESSOA DEVIDAMENTE AUTORIZADA A REPRESENTAR O INTERESSADO, DEVENDO A MESMA CONSTAR NO INSTRUMENTO DE PROCURACAO, OU NO SEU SUBSTABELECIMENTO.

B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06F 12/08

Ipc: G06F 12/0806 (2016.01)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B11D Dismissal acc. art. 38, par 2 of ipl - failure to pay fee after grant in time