BR112014029956B1 - Método para armazenamento de dados, meio de armazenamento legível e aparelho de computação para descarte otimizado - Google Patents

Método para armazenamento de dados, meio de armazenamento legível e aparelho de computação para descarte otimizado Download PDF

Info

Publication number
BR112014029956B1
BR112014029956B1 BR112014029956-0A BR112014029956A BR112014029956B1 BR 112014029956 B1 BR112014029956 B1 BR 112014029956B1 BR 112014029956 A BR112014029956 A BR 112014029956A BR 112014029956 B1 BR112014029956 B1 BR 112014029956B1
Authority
BR
Brazil
Prior art keywords
segments
paging table
paging
segment
memory
Prior art date
Application number
BR112014029956-0A
Other languages
English (en)
Other versions
BR112014029956A2 (pt
Inventor
Prasun Ratn
Suhas Nayak
Sanjeev N. Trika
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Publication of BR112014029956A2 publication Critical patent/BR112014029956A2/pt
Publication of BR112014029956B1 publication Critical patent/BR112014029956B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

descarte otimizado de contexto para uma unidade de estado sólido (ssd). a presente invenção refere-se a um sistema de armazenamento em massa utilizando uma tabela de paginação, para o redirecionamento da página de memória, e mantém a tabela de paginação para a recuperação de perda de energia (plr), usando uma fila fifo de segmentos da tabela de paginação (l2p) a serem gravados na memória não volátil. a fila fifo identifica uma sequência dos segmentos l2p em conjunto com um número sequencial e dados de marcação dos segmentos afetados para recriar a tabela de paginação. mediante a falha de energia, o mecanismo de recuperação de perda de energia (plr) examina o último segmento gravado com base na fila fifo. o processo de plr recupera as entradas não gravadas da tabela de paginação ao repetir as alterações correspondentes na ordem definida pelos números sequenciais. o processo de recuperação continua para cada número sequencial no contexto atual, até que a informação l2p, na tabela de paginação, seja recriada ao ponto exatamente anterior à perda de energia.

Description

ANTECEDENTES
[0001] As unidades de estado sólido (SSDs) estão ficando maispopulares do que as tradicionais unidades de disco rígido (HDDs) por vários motivos. As SSDs proporcionam capacidade de resposta até 66 por cento mais rápida em comparação com os discos rígidos, permitindo a inicialização do sistema, a inicialização de aplicativo e o recar- regamento mais rápido. As SSDs não têm partes móveis e proporcionam assim confiança mais alta e mais tempo de vida. As SSDs são suficientemente robustas de modo a resistir a pancadas e choques sem que ocorra a perda de dados em razão de “danos à cabeça”, comum com a tolerância física muito próxima entre uma cabeça de leitu- ra/gravação e a superfície rotatória convencional das mídias. Além disso, e as SSDs têm baixo consumo de energia, o que prolonga a vida útil da bateria. Nos dispositivos de computação hospedeiros que empregam um dispositivo de armazenamento em massa, como laptops, tablets, outros dispositivos móveis e dispositivos de mesa, as SSDs estão, dessa forma, tornando-se substituições populares para a HDD, como dispositivo principal de armazenamento em massa. Além disso, as vantagens das SSDs não se limitam somente aos dispositivos de computação clientes, como dispositivos eletrônicos portá- teis/pessoais, mas são muito populares também no segmento empresarial para aplicações mais exigentes em razão do melhor desempenho e da maior confiabilidade que possuem em relação às mídias de superfícies rotativas, como as HDDs convencionais.
[0002] Embora as SSDs utilizem memória não volátil, como a memória flash NAND, determinadas funções podem ser reservadas para memórias voláteis onboard como a DRAM (memória dinâmica de acesso aleatório). Em operação, durante um desligamento “limpo” (ou seja, esperado ou iniciado pelo usuário), a maioria dos sistemas hospedeiros inicia um desligamento ou um comando de ociosidade para uma SSD, a fim de fornecer a ela tempo suficiente para preparar-se para o desligamento. Isso permite que a SSD salve o estado interno ou os dados atuais dos buffers temporários da memória volátil nas mídias não voláteis. No entanto, durante um desligamento repentino ou inesperado, a SSD perde energia abruptamente antes que o sistema hospedeiro consiga iniciar o comando apropriado. Isso pode impedir que os dados nos buffers temporários da memória volátil sejam salvos na memória não volátil.
BREVE DESCRIÇÃO DOS DESENHOS
[0003] O recurso acima citado e outros recursos ficarão evidentesna descrição a seguir das formas de realização específicas divulgadas aqui, conforme ilustrado nos desenhos anexos, em que os caracteres de referência semelhantes referem-se às mesmas partes em todas as diferentes perspectivas. Os desenhos não são necessariamente dimensionados, em vez disso a ênfase é dada na ilustração dos princípios da invenção.
[0004] A Figura 1 é um diagrama de contexto de um ambientecomputacional adequado para ser usado com as configurações mencionadas aqui;
[0005] A Figura 2 é um diagrama em blocos do armazenamento databela de paginação (paging), como na Figura 1;
[0006] A Figura 3 é um fluxograma do armazenamento e recuperação da tabela de paginação (L2P), no ambiente da Figura 1;
[0007] A Figura 4 mostra um diagrama de temporização da abordagem da Figura 3.
[0008] A Figura 5 mostra as bandas de sistema e de usuário usa- das nos componentes da memória da Figura 4; e
[0009] As Figuras 6 a 9 mostram um fluxograma do mecanismo deperda e recuperação de energia, conforme definido aqui.
DESCRIÇÃO DETALHADA
[0010] As SSDs têm várias vantagens sobre as HDDs mecânicasconvencionais. As SSDs não têm peças móveis, são rápidas e têm consumo de energia menor do que sua correspondente rotatória de alta velocidade. Nas SSDs, uma tabela (tabela de paginação) de lógica para física (L2P) é normalmente utilizada para traduzir os endereços lógicos para locais físicos nas SSDs. Os sistemas de computação geralmente utilizam vários tipos de endereçamento virtual e/ou dinâmico para evitar ligar o software a locais físicos de armazenamento em massa. As solicitações das tabelas L2P mapeiam as solicitações de E/S de um sistema de computador hospedeiro para locais de endereço físico por meio da L2P. A L2P fornece o redirecionamento de segmentos ou páginas da memória para otimizar o uso da memória no dispositivo de armazenamento em massa (SSD).
[0011] Em disposições específicas, como as divulgadas aqui, aSSD utiliza a memória volátil mais veloz, como a DRAM, para a tabela L2P, de maneira a facilitar o acesso à memória pelo dispositivo hospedeiro. Qualquer memória volátil adequada pode ser usada, por exemplo, memória síncrona e dinâmica de acesso aleatório (SDRAM), memória dinâmica de acesso aleatório (DRAM), RAMBUS DRAM e SDRAM Double Data Rate three. No entanto, eventos como uma perda de energia podem comprometer a L2P, possivelmente resultando em perda de dados da tabela L2P. A tabela L2P pode ser paginada de maneira a evitar uma representação total de memória volátil de toda a tabela L2P. Nessa abordagem, caso ocorra uma falha de energia, um gerenciador de recuperação de falha de energia garante que a integridade dos dados da tabela de mapeamento de endereços L2P, associ- ada à memória não volátil, seja mantida por meio desse gerenciador que recupera a tabela de mapeamento de endereços L2P associada à memória não volátil, após uma falha de energia ou a ocorrência de colisão.
[0012] Na abordagem proposta, a memória flash não volátil localizada nas SSDs e no cache, oferece um benefício maior em desempenho e energia do que as unidades de disco rígido tradicionais. Descobriu-se antes que um sistema de indireção simples para traduzir os endereços lógicos para físicos (tabela L2P) é útil para proporcionar desempenho compatível, previsível e confiável. A L2P é mantida na memória volátil e salva periodicamente como parte de um “contexto”, ou como um conjunto estável de variáveis do sistema, em memória não volátil, também na hora do desligamento. No caso de uma falha de energia, as alterações na L2P que forem feitas após o último salvamento de contexto são perdidas e devem ser reconstruídas durante a próxima reinicialização. Dependendo da configuração, por exemplo, qualquer memória não volátil adequada pode ser utilizada, incluindo, entre outras, memória flash NAND, memória de mudança de fase (PCM), memória programável apagável eletricamente somente para leitura (EEPROM), ou qualquer tipo de dispositivo de memória não volátil, como as implementações do tipo PCMS, Nanofio e FeTRAM.
[0013] As configurações do presente documento baseiam-se, emparte, na observação de que a recuperação de uma falha de energia para a reconstrução da L2P pode envolver percorrer um grande número de alterações de páginas gravadas anteriormente em disco. Em uma SSD, a L2P pode ter a forma de uma tabela de paginação que exija uma entrada para cada página da memória. Enquanto o tamanho real da tabela de paginação depende do tamanho da página, um fator típico é cerca de 1/1000 da área representada da memória. Sendo assim, uma unidade de 1TB exige 1GB de memória volátil apenas para manter a tabela de paginação. Infelizmente, as abordagens convencionais sofrem uma deficiência que, além de aumentar o custo da SSD por causa da memória volátil, o tamanho maior pode exigir um tempo de recuperação consideravelmente maior no caso de perda de energia para recriar a tabela de paginação.
[0014] Nas aplicações críticas de desempenho, o tempo de recuperação total da falha de energia pode facilmente exceder as exigências de tempo de reinicialização, em razão da sobrecarga na paginação. Dependendo da capacidade da unidade, das características de tamanho e carga de trabalho da memória volátil, a inicialização da unidade pode levar mais de 30 segundos, o que tende a frustrar a expectativa do usuário e o aspecto prático do produto.
[0015] Em algumas configurações, a paginação da tabela L2P diminui um pouco o tempo de recuperação. No entanto, a maioria dos segmentos transferidos (paged out) para o armazenamento auxiliar precisa ser percorrido em um processo de repetição usado para recriar a tabela L2P. Da mesma forma, as configurações do presente documento superam consideravelmente a deficiência de tempo extra para recuperação de perda de energia ao reduzir as referências de paginação (chamadas de "transferências para o armazenamento auxiliar - page outs”) durante o processo de repetição. Esse processo ocorre ao definir uma fila FIFO (first in, first out - primeiro a entrar, primeiro a sair) dos segmentos da tabela de paginação (em contraste com o LRU convencional ou filas menos usadas recentemente), e ao repetir somente os segmentos não descarregados (gravados na memória de armazenamento), um pouco antes da falha de energia. Em detalhes adicionais, o exemplo de disposição utiliza a repetição dos segmentos não descarregados (mas que estavam na memória volátil antes da perda de energia) e também dos segmentos que foram descarregados, desde que o último segmento descarregado tenha sido colocado na fila FIFO durante o tempo de operação. Com base no número de segmentos em fila, a abordagem pode possivelmente descarregar (B- 1) segmentos e, consequentemente, também repeti-los. B é o número máximo de segmentos que podem ser armazenados na memória volátil. Por exemplo, se o segmento 100 for o último descarregado antes da perda de energia, a abordagem descrita irá não apenas repetir do ponto em que esse segmento foi descarregado, mas também do ponto em que esse segmento foi posto na fila FIFO no tempo de execução, e durante essa repetição, pode-se facilmente obter um cenário em que todos os segmentos em FIFO, anteriores ao segmento 100, digamos 1 a 99, são repetidos. Em outras palavras, a operação de repetição percorre mudanças retornando para a última entrada na fila FIFO, para recriar a tabela L2P.
[0016] Uma recuperação de perda de energia (PLR) bem-sucedida, para as SSDs, reconstrói a tabela L2P, e essa técnica exige componentes de tempo de execução e de tempo de recuperação. Durante o tempo de execução, o contexto é salvo periodicamente em conjunto com ponteiros nos fluxos de gravação da memória não volátil. As gravações durante o tempo de execução são associadas a números sequenciais que permitem repetição de forma ordenada, no caso de a PLR ser necessária. Ao ligar, o último contexto salvo é carregado na memória. O algoritmo da PRL começa, então, a repetir a partir dos ponteiros dos fluxos de gravação salvos em diante, atualizando a tabela L2P, até a última gravação feita para a memória não volátil, antes da falha de energia. É discutido, no pedido de patente pendente citado acima, um método para usar indireção simples com memória reduzida para a redução de custo.
[0017] A abordagem retratada abaixo define, portanto, uma filaFIFO de segmentos de tabela de paginação (L2P) a serem gravados na memória não volátil. Cada segmento na tabela de paginação cor- responde a uma página de memória, na qual a própria tabela de paginação é armazenada, e contém uma variedade de entradas, cada uma mapeando outra página de referências de memória por meio de uma tabela de paginação (L2P). Os segmentos são gravados em conjuntos chamados bandas, discutido com mais detalhes abaixo. O limite superior da repetição é então definido pelo tamanho da memória volátil que suporta a tabela de paginação; o restante continua no armazenamento auxiliar. O firmware onboard grava os segmentos com base na fila FIFO em conjunto com um número sequencial e dados de marcação dos segmentos afetados, para recriar a informação de mapeamento da tabela de paginação proveniente do processo de repetição.
[0018] Mediante a falha de energia ou outra forma de comprometimento, o mecanismo de recuperação de perda de energia (PLR) examina o último segmento gravado com base na ordem da fila FIFO, conforme determinado pelos números sequenciais. O processo de PLR recupera as entradas não gravadas da tabela de paginação ao repetir as alterações correspondentes na ordem definida pelos números sequenciais. A repetição utiliza um processo ou sequência de repetições para recriar a tabela L2P, e é usada pela PLR para reconciliar as diferenças entre as páginas (segmentos) realmente gravados na memória não volátil e as referências correspondentes àquelas páginas não voláteis, ainda armazenadas na memória volátil na tabela de paginação. As páginas gravadas recentemente, mas ainda não refletidas na tabela de paginação (L2P), têm marcadores identificando as páginas alteradas e um número sequencial identificando a ordem de gravação (mesma ordem da fila FIFO). As bandas do sistema, discutidas abaixo com mais detalhes, denotam as gravações da tabela de paginação, no armazenamento não volátil. O processo de repetição identifica as páginas alteradas procurando pelos marcadores e identifica a ordem do número sequencial. Assim, a operação de repetição percorre as alterações desde a última entrada na fila FIFO para recriar a tabela L2P. As alterações correspondentes são identificadas pela informação de marcação nos segmentos gravados anteriormente, acelerando as alterações na tabela de paginação. O processo de recuperação continua para cada número sequencial no contexto atual, até que a informação L2P, na tabela de paginação, seja recriada ao ponto exatamente anterior à perda de energia.
[0019] Na implementação, a abordagem proposta aqui adicionauma fila FIFO para rastrear a ordem em que os segmentos ficam sujos (primeiro toque). Os segmentos sujos entram no fim da fila e são expulsos do início da fila. Os segmentos sujos são expulsos usando a política FIFO (em vez da política LRU, nas abordagens existentes). A ordem em que é feita a expulsão é motivada pela necessidade de minimizar a paginação durante a repetição. Além disso, quando um segmento se torna sujo, os locais dos feixes de gravação são gravados e, mais tarde, são salvos como metadados de segmentos, quando o segmento é transferido para o armazenamento auxiliar, de maneira a ajudar o algoritmo de PLR.
[0020] O algoritmo de PLR é modificado para, em primeiro lugar,fazer uma busca do último segmento transferido para o armazenamento auxiliar (identificado por seu número sequencial). Esse segmento especifica os locais dos ponteiros do fluxo de gravação no momento em que o segmento ficou sujo. Na abordagem descrita, a repetição é iniciada desse local, em vez do local do último contexto salvo, a fim de reduzir ainda mais o tempo de PLR. O contexto denota um conjunto de variáveis de sistema, incluindo a informação L2P na tabela de paginação, que representa um estado compatível e estável. A PLR descrita, portanto, minimiza e limita o número necessário de transferências para o armazenamento auxiliar e para o disco (page ins e page outs) durante a recuperação da falha de energia, reduzindo assim o tempo da PLR para alcançar os requisitos alvo e tornando prática a paginação L2P.
[0021] Em outras configurações, a repetição é executada repetindo-se as bandas do sistema da atividade de paginação de segmento, discutida mais abaixo. Da mesma forma, uma disposição alternativa, nos dispositivos hospedeiros com capacidade menor de memória volátil, elimina as transferências para o armazenamento auxiliar durante a repetição. Durante o tempo de execução, cada transferência para o armazenamento auxiliar é acompanhada pelo armazenamento de uma lista de segmentos sujos (modificados) na banda de contexto. A banda de contexto representa um conjunto dos segmentos modificados descarregados (gravados na memória não volátil) juntos, em vez de realizar um descarregamento (gravação) separado para cada segmento. Durante a repetição, somente as atualizações L2P que correspondam ao segmento dessa lista são permitidas. Esse assunto também será discutido mais abaixo.
[0022] A Figura 1 é um diagrama de contexto de um ambientecomputacional adequado para ser usado com as configurações mencionadas aqui. Com relação à Figura 1, em um ambiente computacional 100, um dispositivo hospedeiro 110 responde a um usuário 112. O dispositivo hospedeiro 112 emite solicitações de entrada/saída (E/S) 114 para ler 114-1 e gravar 114-2 dados no dispositivo de armazenamento em massa, ou na SSD 120, na configuração mostrada. Em uma configuração típica, a SSD substitui a unidade de disco mecânica (rotação) convencional do hospedeiro, usando uma interface de barra- mento de armazenamento, como a SATA (Serial Advanced Technology Attachment). No entanto, essa interface pode ser de qualquer disposição de barramento/arquitetura, como Mini-SATA, SAS (Serial Attached SCSI), FC (Flip-Chip), uma disposição com base em PCI (Peripheral Component Interconnect) ou outras. Em resposta, a memória de armazenamento retorna as páginas buscadas 115-1 ou reconhece as páginas gravadas 115-2, normalmente em resposta aos aplicativos de usuário ou ao firmware de SSD 140, para realizar as operações descritas aqui.
[0023] Em uma configuração típica, a SSD 120 normalmente ocupa um compartimento de equipamento no dispositivo hospedeiro 110 e é mostrada de uma forma ampliada, para fins ilustrativos. Na SSD 120, uma memória de armazenamento 122 inclui uma memória flash não volátil, embora qualquer memória não volátil adequada possa ser utilizada, como uma memória de alteração de fase (PCM), memória programável apagável eletricamente somente para leitura (EEPROM), apenas para citar algumas. Uma tabela de paginação 124 que é armazenada na memória volátil pode incluir uma DRAM (memória dinâmica de acesso aleatório) ou outra memória volátil de alta velocidade, como a SDRAM (memória síncrona e dinâmica de acesso aleatório) ou RAMBUS memória dinâmica de acesso aleatório (RDRAM). A tabela de paginação 124 (tabela L2P) inclui entradas 126; cada uma delas redireciona o acesso da memória a páginas 128, na memória não volátil. No entanto, em razão do tamanho da tabela de paginação 124, os segmentos da tabela de paginação 130 podem, eles mesmos, ser trocados 130’ para a memória não volátil 122 (armazenamento). Para enfatizar essa distinção, as operações que se referem à tabela de paginação 124 serão denotadas como segmentos 130; cada um deles contém entradas 126 que apontam para outras páginas 128, na memória de armazenamento. O software ou firmware onboad 140 de sistema contêm instruções para o armazenamento e a recuperação de segmentos de tabela de paginação 130’ provenientes da memória de armazenamento, e para o gerenciamento da fila FIFO das gravações do segmento 130, discutido abaixo na Figura 2. Em uma SSD gerenciada por hospedeiro 110, as instruções emanam do hospedeiro, em vez do firmware onboard 140. Uma interface para a memória de armazenamento 122 e para a memória de paginação para armazenar a tabela de paginação 124, responde ao software/firmware 140 e à lógica da PLR 141.
[0024] Na SSD 120, o firmware 140 inclui a lógica para gerenciar oenfileiramento do tempo de execução e a paginação da tabela de paginação 124, assim como também inclui a lógica da PLR 141 para gerenciar o mecanismo de inicialização/recuperação. Esse assunto será discutido mais abaixo. A tabela de paginação 124 (também chamada de informação de mapeamento L2P) passa por um processo de repetição, executado pela PLR. Nesse processo, as gravações, para a memória de armazenamento 122, previamente comprometidas e que constam na tabela de paginação 124, mas que ainda não foram gravadas na memória de armazenamento 122, como as páginas 130’, são recriadas. As bandas de sistema, discutidas mais abaixo, combinadas com marcadores nas páginas e números sequenciais 131 nos segmentos da tabela de paginação 130’, são utilizadas pela PLR para re-cuperar a tabela de paginação 124 para um estado anterior à perda de energia. Esse assunto também será discutido mais abaixo. Abordagens convencionais exigem repetição de todas as bandas do sistema, de um descarte de contexto anterior, descarregando a tabela de paginação para a memória de armazenamento 122. As configurações apresentadas no presente documento reduzem o tempo de repetição ao utilizar uma fila FIFO para gravar os segmentos da tabela de paginação 130’, de maneira que a repetição fique limitada pelos segmentos da tabela de paginação 144 na fila 142, no momento da falha de energia.
[0025] A Figura 2 é um diagrama em blocos do armazenamento databela de paginação (paging), como na Figura 2. Com referência às Figuras 1 e 2, a SSD mantém uma fila 142 para armazenar os seg- mentos da tabela de paginação 130 a serem descarregados (gravados) na memória de armazenamento 122. O firmware 140 grava entradas na fila na ordem FIFO, isso permite que o mecanismo de PLR recupere os segmentos 130 na mesma ordem em que foram gravados. Cada entrada 144-1..144-4 corresponde a um segmento descarregado 130’ na memória de armazenamento. Um número sequencial 131 acompanha cada segmento descarregado 130’-1..130’-4, facilitando a busca pelos segmentos ordenados 130, ao ligar (PLR) a inicialização. Os marcadores 129 nas páginas gravadas previamente contêm informações para recriar a tabela de paginação 124. Em configurações específicas, os segmentos são descarregados como grupos de bandas de sistema, discutidos mais abaixo.
[0026] A Figura 3 é um fluxograma do armazenamento e recuperação da tabela de paginação (L2P), no ambiente da Figura 1, e retrata um exemplo de configuração executando as operações divulgadas no presente documento. Com referência às Figuras 1 a 3, no passo 200, na SSD 120 que contém uma tabela de paginação 124 para o redireci- onamento de página de memória, o método para manter a tabela de paginação 124 para recuperação de perda de energia (PLR) inclui a manutenção de uma fila 142 para ordenar os segmentos de tabela de paginação 130’, gravados na memória de armazenamento 122. A memória de armazenamento 122 armazena os segmentos da tabela de paginação 144 da fila 142, com um número sequencial correspondente 131, com base na ordem de gravação dos segmentos da tabela de paginação 131’, conforme retratado no passo 201. O número sequencial é utilizado no processo de percorrer os segmentos 130’ na ordem gravada para recriar a tabela de paginação 124, durante uma PLR de recuperação de perda de energia. Mediante o comprometimento da tabela de paginação, como em uma falha de energia, o firmware 140 identifica o último segmento gravado da tabela de paginação 130’-1 (gravado do 144-1), com base no número sequencial 131, conforme mostrado no passo 202 e repete, com base no número sequencial 131, cada segmento da tabela de paginação 130, conforme retratado no passo 203. Como as páginas reais de memória 128, para as quais a tabela de paginação fornece indireção, já foram gravadas na memória de armazenamento, os marcadores 129, nas páginas da memória 128, fornecem a informação de redirecionamento (ponteiro) que, com base nos números sequenciais 131, permitem a recriação da tabela de paginação 124. O firmware 140 recria, com base nos marcadores 129 armazenados com cada segmento da tabela de paginação 128, a tabela de paginação 124 em um estado pré-comprometimento, conforme retratado no passo 204. Como a tabela de paginação 124 denota o mapeamento da página ou índices, refletindo os locais físicos das páginas de dados reais alterados 128, a recriação é realizada pelo ras- treamento das páginas armazenadas anteriormente 128 e pela reapli- cação (repetição) das alterações na tabela de paginação 124.
[0027] Por uma questão de desempenho, essa abordagem limitaas transferências para o armazenamento auxiliar durante a repetição, por causa das observações a seguir. Se levarmos em consideração a sequência de gravações durante o tempo de execução entre: a) o último segmento 130’ da tabela de paginação 124 (L2P) que está sendo transferido para o armazenamento auxiliar, e b) a falha de energia. A tabela de paginação 124 se atualiza para que todas as gravações durante esse período sejam realizadas na memória volátil, sem exigir uma transferência para o armazenamento auxiliar (caso contrário, a alternativa a) acima não será verdadeira). A fila 142 e, consequentemente, a tabela de paginação armazenam um máximo de segmentos |B| 144.
[0028] Durante a repetição, as bandas do sistema (discutidas maisabaixo) são repetidas para reconstruir a tabela de paginação 124. Ca- da banda e segmentos correspondentes dentro da banda têm um número sequencial, de maneira que a ordem em que as bandas foram gravadas seja conhecida. A última gravação na banda aberta (sistema) mais recente é o último segmento L2P transferido para o armazenamento auxiliar (esse segmento é chamado de k, mencionado abaixo, na Figura 4). Os locais do fluxo de gravação são selecionados desse segmento, e a repetição é realizada desses locais em diante. Durante o tempo de execução, pode haver um máximo de |B| - 1 de transferências para o armazenamento auxiliar entre o segmento k, tornando-se sujo, e o segmento k, sendo transferido para o armazenamento auxiliar. Não há transferências para o armazenamento auxiliar entre o segmento k que está sendo transferido para o armazenamento auxiliar e a falha de energia (seguindo da definição do segmento k). Sendo assim, durante a repetição, pode haver um máximo de transferências para o armazenamento auxiliar |B|-1.
[0029] A Figura 4 mostra um diagrama de temporização da abordagem da Figura 3. Com referência às Figuras 2 a 4, a Figura 4 mostra o tempo de gravação e carregamento da fila de segmento 142. Conforme descrito abaixo, a gravação enfileira o segmento na fila 142 para a memória volátil 124; o descarregamento realiza a gravação na memória não volátil 122. Observe que as alterações (fica sujo, é expulso, etc.) no estado do segmento L2P 144 podem ser apresentadas em uma linha do tempo 400 de gravações. O número de segmentos que podem ficar sujos após o último segmento ser transferido para o armazenamento auxiliar é de |B| - 1, em que |B| é o número total de buffers do segmento 130 disponível. Na sequência, o número de seg-mentos que foram transferidos para o armazenamento auxiliar, entre o segmento k que está se tornando sujo e o segmento k que está sendo transferido para o armazenamento auxiliar, é igual ou menor que |B| - 1. Sendo assim, quando o processo de repetição repete as gravações começando do local armazenado nos metadados do segmento k, o número de transferências para o armazenamento auxiliar é limitado por |B| - 1.
[0030] Por exemplo, com relação às Figuras 1, 2 e 4, o segmentoK fica sujo (ou seja, uma alteração é gravada) em 410. O segmento K é inserido na fila 142 no fim da fila, como em 144-4. O firmware transfere para o armazenamento auxiliar os segmentos K1, K2 e K3, como em 144-1..144-3 em 412. Outros segmentos 144 podem seguir dependendo do tamanho da fila 142. Subsequentemente, o segmento K é transferido para o armazenamento auxiliar 414 e é o último segmento a ser paginado (ou seja, gravado na memória de armazenamento como segmento armazenado/descarregado 130’) antes da falha de energia. O máximo de transferências para o armazenamento auxiliar B-1 (segmentos 130 gravados na memória 130’) é limitado pelo tamanho da tabela de paginação 124, determinado pela memória volátil onbo-ard, conforme mostrado em 416. Após as gravações 418 do segmento 130’, ocorre a falha de energia 420. O firmware 140 começa o processo de repetição para repetir as gravações 422 que ocorrem entre a falha de energia 424 e o período em que o segmento K ficou sujo 410, conforme mostrado em 426.
[0031] Um recurso específico fornecido pela abordagem descrita,superior às implementações convencionais, é que a abordagem apresenta um limite superior com relação ao número de transferências para o armazenamento auxiliar (número de page outs) durante o processo de repetição. Isso é importante porque as gravações em uma memória não volátil gastam tempo, e as transferências para o armazenamento auxiliar afetam, de forma adversa, o tempo de recuperação da perda de energia não planejada. Essa abordagem permite um tempo de recuperação limitado da perda de energia não planejada nas SSDs, com disponibilidade restrita na memória volátil. Deve-se observar tam- bém que, com essa abordagem, o descarte de contexto não precisa ser monolítico. No momento do descarte de contexto, todos os segmentos sujos são descarregados na memória não volátil. Isso torna o descarte de contexto mais eficiente e simples.
[0032] A Figura 5 mostra as bandas de sistema e de usuário usadas nos componentes da memória da Figura 4. Com referência às Figuras 4 e 5, na abordagem descrita, o fluxo de gravação para a memória de armazenamento 122 ocorre nas bandas do sistema 150-1 e nas bandas de usuário 150-2, para gravações do sistema e do usuário, respectivamente. As bandas do sistema 150-1 armazenam as alterações gravadas na memória de armazenamento 122 durante um contexto atual. No fim de um contexto, as bandas são atualizadas (descarregadas) e um novo contexto é iniciado. Existe um conjunto separado de bandas 150-2 para os dados do usuário. Cada banda 152 inclui um número de segmentos 156-1,,156-N, correspondente aos segmentos da tabela de paginação 130’ ou aos segmentos do usuário 128, conforme descrito aqui. O procedimento de repetição usa os números se-quenciais 131 das bandas do sistema 150-1 para recriar a tabela de paginação 124, identificando o fluxo de gravação que ocorre entre o último segmento paginado 414 na memória de armazenamento 122 e o último segmento sujo 410. As bandas do sistema 150-1 e as bandas do usuário 150-2 podem gravar nas respectivas áreas do sistema 1221 e do usuário 122-1, da memória de armazenamento 122, ou podem ser misturadas.
[0033] As Figuras 6 a 9 mostram um fluxograma do mecanismo deperda e recuperação de energia, conforme definido aqui. Com referência às Figuras 1 a 9, em um exemplo de disposição, em um sistema de armazenamento em massa que possui uma tabela de paginação 124 para redirecionamento de página de memória (L2P), o método de manutenção da tabela de paginação para a recuperação de perda de energia (PLR), conforme mostrado aqui, inclui, no passo 300, o esta-belecimento de uma fila FIFO para ordenar os segmentos da tabela de paginação 130 gravados na memória de armazenamento 122. O firmware 140 na SSD 120 marca como sujo um segmento da tabela de paginação 126, quando estiver sendo feita uma modificação na tabela de paginação 126. Isso significa que foi feita uma alteração no segmento 130, normalmente resultando de uma alteração em uma entrada do ponteiro de redirecionamento 126 para uma página de memória 128 mencionada pelo segmento da tabela de paginação 130, conforme retratado no passo 301. No passo 302, é realizada uma verificação para determinar se o espaço na fila 142 é limitado, normalmente de uma SSD com memória volátil onboard limitada. No caso de uma memória volátil pequena, é realizada uma otimização maior para reduzir ainda mais a paginação durante a repetição, pela identificação, para cada segmento da tabela de paginação armazenado 130, de uma lista de segmentos de memória modificados 128 representada no segmento da tabela de paginação 130, conforme descrito no passo 303. Essa lista é utilizada durante a repetição. Esse assunto será discutido mais abaixo.
[0034] O firmware 140 enfileira os segmentos sujos 144-1..144-4na ordem marcada, de maneira que a página de memória 128 mencionada pelo segmento sujo tenha sido gravada anteriormente na memória de armazenamento 122, conforme retratado no passo 304. No exemplo de disposição, o firmware 140 mantém a fila 142 usando a ordem de segmentos FIFO (primeiro a entrar, primeiro a sair), de maneira que os segmentos 144 representem as páginas de um mapeamento (na tabela de paginação 124) lógico para físico (L2P), para a memória de armazenamento. Assim, o mapeamento L2P suporta o uso do armazenamento em massa de um dispositivo de computação hospedeiro 110, conforme mostrado no passo 305. O firmware 140 armazena ainda os segmentos da tabela de paginação 130’ da fila 142 com um número sequencial correspondente 131 com base em uma ordem de gravação dos segmentos da tabela de paginação 130, conforme retratado no passo 306. Em contraste com as abordagens convencionais de enfileiramento/caching L2P, que utilizam uma abordagem de enfileiramento LRU, a ordenação FIFO e o número sequencial 131 permitem que a repetição seja realizada seguindo a ordem em que os segmentos 130’ foram gravados na memória de armazenamento 122.
[0035] Na configuração de exemplo, a implementação inclui umfluxo de gravação do usuário 150-2 e um fluxo de gravação do sistema 150-1. O fluxo de gravação do sistema corresponde às tarefas iniciadas pelo sistema, como o gerenciamento da tabela de paginação 124, e os segmentos da tabela de paginação 130 são armazenados usando o fluxo de gravação do sistema 150-1 e identificados em bandas do sistema. Cada banda representa uma diversidade de segmentos da tabela de paginação 144’-1..144’-N, conforme descrito no passo 307.
[0036] Na configuração descrita, a manutenção da fila 142 incluiainda o armazenamento dos segmentos da tabela de paginação 130 em uma área de memória de paginação 124 (memória volátil) e a gravação dos segmentos da tabela de paginação enfileirados 144, da área de memória de paginação, com base na fila 142. A memória de armazenamento 122 é a memória não volátil persistente e independente do fornecimento de energia, conforme retratado no passo 308. A fila 142 fornece então a paginação/permuta para a tabela de paginação 124 que fornece armazenamento de pelo menos uma parte da tabela de paginação 124, na área da memória de paginação na memória volátil, conforme retratado no passo 309, e também fornecer o armazenamento de pelo menos uma parte da tabela de paginação na memória de armazenamento 122, conforme mostrado no passo 310.
[0037] O firmware 140 grava os segmentos da tabela de paginação 144 com base na ordem da fila 142, durante a operação normal, de maneira que a recuperação da perda de energia seja restringida por um número de segmentos 144 representados na fila 142. Sendo assim, a análise do pior caso de desempenho de PLR pode ser acessada pelos limites da memória volátil e/ou fila correspondente 142, conforme retratado no passo 311.
[0038] Um pouco mais tarde, uma perda de energia ou outro evento provoca perda da memória volátil. Da mesma forma, mediante o comprometimento da tabela de paginação 124, o firmware 140 identifica o segmento da tabela de paginação 130’ armazenado por último, com base no número sequencial 131, conforme mostrado no passo 312. A detecção do comprometimento pode incluir ainda a identificação da perda de energia, de maneira que a perda de energia chame a recuperação de perda de energia (PLR) mediante a reinicialização. O mecanismo de PLR identifica as bandas do sistema 150-1 que armazenam alterações recentes na memória de armazenamento 122, conforme descrito no passo 313. Com base na instrução de PLR 141, no firmware 140, a PLR se repete, com base nos números sequenciais 131, cada um dos segmentos da tabela de paginação para recriar a tabela de paginação 124, conforme retratado no passo 314. A PLR 141 sendo repetida percorre os números sequenciais salvos 131 para identificar a ordem das páginas gravadas na memória de armazenamento, de maneira que os segmentos contenham marcadores 129, indicativos das alterações, conforme descrito no passo 315.
[0039] A PLR 141 começa a repetição dos segmentos alterados,desde o último segmento da tabela de paginação 144 gravado antes do comprometimento, conforme retratado no passo 316, e recria, com base nos marcadores 129 armazenados com cada segmento da tabela de paginação, a tabela de paginação em um estado pré- comprometimento, conforme retratado no passo 317. Isso inclui a busca pelo último segmento da tabela de paginação 130’, gravado da fila 142 na memória de armazenamento 122, conforme mostrado no passo 318, e a identificação de segmentos sucessivos da tabela de paginação 130, com base nos números sequenciais 131, conforme retratado no passo 319. A PLR 141 determina, com base nos marcadores armazenados 129 com os segmentos da tabela de paginação, as alterações na tabela de paginação 124 que foram perdidas no comprometimento, conforme mostrado no passo 320.
[0040] Uma adição a esse esquema, especialmente no que se refere aos dispositivos com capacidade menor de memória volátil, empenha-se em eliminar as transferências para o armazenamento auxiliar durante a repetição. Durante o tempo de execução, cada transferência para o armazenamento auxiliar é acompanhada pela queda de uma lista de segmentos sujos na banda de contexto. Durante a repetição, somente as atualizações L2P que correspondem ao segmento dessa lista são permitidas. As outras atualizações devem corresponder a um segmento que foi transferido para o armazenamento auxiliar entre o período em que o segmento k ficou sujo e o período em que o segmento k foi transferido para o armazenamento auxiliar --- tornando essas atualizações desnecessárias. A desvantagem dessa abordagem é que o tamanho da lista de segmentos sujos cresce com o número de segmentos disponíveis, e a sobrecarga pode ser grande demais para maiores capacidades de memória volátil.
[0041] Da mesma forma, é realizada uma verificação, no passo321, complementando a verificação feita no passo 302. Se uma pequena implementação de memória volátil for encontrada, a PRL 141 percorrerá, durante a repetição, a lista de segmentos de memória modificados, conforme retratado no passo 324, e recriará a tabela de paginação 124, usando somente as informações de mapeamento perten- centes aos segmentos de memória modificados, conforme mostrado no passo 325.
[0042] Caso contrário, a PRL 141 começará na reinicialização somente para os segmentos sujos 144, conforme mostrado no passo 322, e irá recuperar as informações do marcador 129 das bandas do sistema, representando o segmento da tabela de paginação gravada anteriormente 130’, conforme mostrado no passo 323.
[0043] Os especialistas na área devem concluir rapidamente queos programas e métodos definidos aqui podem ser realizados em um dispositivo de renderização e processamento de muitas maneiras, incluindo, entre outras, as seguintes opções: a) informação armazenada permanentemente em mídias de armazenamento não graváveis, como os dispositivos ROM; b) informação armazenada, e que pode ser alterada, em mídias de armazenamento não temporárias, como os disquetes, fitas magnéticas, CDs, dispositivos RAM e outras mídias ópticas e magnéticas; ou c) informação transportada para um computador por meio de mídias de comunicação, como em uma rede eletrônica como a internet ou as linhas de modem de telefone. As operações e métodos podem ser implementados em um objeto executável por software ou como um conjunto de instruções codificadas para execução por um processador que responda às instruções. De maneira alternativa, as operações e os métodos descritos aqui podem ser realizados em sua totalidade ou em parte, usando componentes de hardware, como os circuitos integrados de aplicação específica (ASICs), matrizes de porta programável em campo (FPGAs), máquinas de estados, controladores ou outros componentes ou dispositivos de hardware, ou uma combinação de componentes de hardware, software e firmware.
[0044] Embora o sistema e os métodos definidos aqui tenham sidomostrados e descritos particularmente com referências às respectivas formas de realização, os especialistas na área devem entender que podem ser feitas várias alterações na forma e nos detalhes descritos aqui, sem sair do escopo da invenção envolvida pelas reivindicações anexas.

Claims (18)

1. Método para armazenamento de dados caracterizado pelo fato de que compreende:identificar uma sequência de segmentos de tabela de paginação gravada na memória não volátil (122) de uma tabela de paginação (124), a tabela de paginação (124) traduzindo uma referência virtual para um local físico na memória não volátil (122);manter a sequência identificada em uma fila usando a ordem FIFO (primeiro a entrar, primeiro a sair) de ponteiros para segmentos, os segmentos representando páginas de um mapeamento lógico para físico (L2P) para a memória não volátil (122), o mapeamento L2P suportando uso de armazenamento em massa de um dispositivo de computação hospedeiro;armazenar, para cada segmento de tabela de paginação, um número sequencial correspondendo à ordem gravada e pelo menos um marcador correspondendo às alterações no segmento; emediante detecção de um comprometimento de pelo menos uma parte da tabela de paginação (124), recriar os segmentos de tabela de paginação correspondendo à sequência identificada pela repetição das alterações dos marcadores armazenados e gerar novamente os segmentos de tabela de paginação comprometidos, em que a repetição ainda compreende:percorrer os números sequenciais salvos para identificar a ordem de páginas gravadas na memória não volátil (122), os segmentos contendo marcadores que indicam as alterações, ecomeçar a repetição dos segmentos alterados a partir do último segmento de tabela de paginação gravado antes do comprometimento buscando pelo último segmento paginado como identificado pelo seu número sequencial, o último segmento paginado especificando locais de ponteiros de fluxo de gravação no momento quando o seg- mento foi primeiro modificado, e começar a repetição a partir desse segmento.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a recriação ainda compreende:buscar pelo último segmento de tabela de paginação gravado da fila na memória não volátil (122);identificar segmentos sucessivos de tabela de paginação com base nos números sequenciais; edeterminar, a partir de marcadores armazenados com os segmentos de tabela de paginação, as alterações na tabela de paginação (124) que foram perdidas no comprometimento.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a manutenção da fila ainda compreende:armazenar os segmentos de tabela de paginação em uma área de memória de paginação, e gravar os segmentos de tabela de paginação da área de memória de paginação com base na fila, a memória não volátil (122) sendo persistente e independente do fornecimento de energia.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que a manutenção da fila ainda compreende:armazenar pelo menos uma parte da tabela de paginação (124) na área da memória de paginação;armazenar pelo menos uma parte da tabela de paginação (124) na memória não volátil (122); egravar os segmentos de tabela de paginação com base na ordem da fila, a recuperação de perda de energia restrita por um número de segmentos na fila.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a manutenção da sequência identificada inclui uma fila FIFO para rastrear a ordem na qual os segmentos se modificam, para expulsão usando política FIFO.
6. Meio de armazenamento legível por computador não transitório possuindo instruções codificadas no mesmo caracterizado pelo fato de que é para realizar um método de armazenar uma tabela de mapeamente lógica para fisica (L2P), as instruções quando executadas em um dispositivo de computação hospedeiro fazem o dispositivo de computação realizar um método para armazenamento de dados compreendendo:manter uma fila para ordenar segmentos de uma tabela de paginação (124) gravada em uma memória não volátil (122), a tabela de paginação (124) para redirecionamento de página de memória em antecipação a uma recuperação de perda de energia (PLR), manter a sequência identificada incluindo uma fila usando ordem FIFO (primeiro a entrar, primeiro a sair) de ponteiros para segmentos, os segmentos representando páginas de um mapeamento lógico para físico (L2P) para a memória não volátil (122), o mapeamento L2P suportando uso de armazenamento em massa de um dispositivo de computação hospedeiro;armazenar os segmentos de tabela de paginação da fila com um número sequencial correspondente com base em uma ordem de gravação dos segmentos de tabela de paginação;mediante comprometimento da tabela de paginação (124), identificar o último segmento de tabela de paginação armazenado com base no número sequencial;repetir, com base nos números sequenciais, cada um dos segmentos de tabela de paginação; erecriar, com base nos marcadores armazenados com cada segmento de tabela de paginação, a tabela de paginação (124) em um estado pré-comprometimento, em que a repetição ainda compreende:percorrer os números sequenciais salvos para identificar a ordem de páginas gravadas na memória não volátil (122), os segmentos contendo marcadores indicando as alterações, ecomeçar a repetição dos segmentos alterados a partir do último segmento de tabela de paginação gravado antes do comprometimento buscando pelo último segmento paginado como identificado pelo seu número sequencial, o último segmento paginado especificando locais de ponteiros de fluxo de gravação no momento quando o segmento foi primeiro modificado, e começar a repetição a partir desse segmento.
7. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que ainda compreende manter a sequência identificada em uma fila usando a ordem FIFO (primeiro a entrar, primeiro a sair) de segmentos, os segmentos representando páginas de um mapeamento lógico para físico (L2P) para a memória não volátil (122), o mapeamento L2P suportando uso de armazenamento em massa de um dispositivo de computação hospedeiro.
8. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que a recriação ainda compreende:buscar pelo último segmento de tabela de paginação gravado na memória não volátil (122);identificar os segmentos sucessivos de tabela de paginação com base nos números sequenciais; edeterminar, a partir dos marcadores armazenados com os segmentos de tabela de paginação, as alterações na tabela de paginação (124) que foram perdidas no comprometimento.
9. Meio, de acordo com a reivindicação 8, caracterizado pelo fato de que a repetição percorre os números sequenciais salvos para identificar a ordem de páginas gravadas na memória não volátil (122), os segmentos contendo marcadores que indicam as alterações, e começar a repetição dos segmentos alterados a partir do último segmento de tabela de paginação gravado antes do comprometimento.
10. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que detectar o comprometimento ainda compreende identificar uma perda de energia, a perda de energia invocando uma recuperação de perda de energia (PLR) mediante inicialização, a PLR identificando bandas de sistema armazenando alterações recentes na memória não volátil (122).
11. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que ainda compreende gravar um fluxo de gravação de usuário e um fluxo de gravação de sistema, o fluxo de gravação de sistema correspondendo às tarefas iniciadas de sistema, os segmentos de tabela de paginação armazenados usando o fluxo de gravação de sistema e identificados em bandas de sistema, cada banda representando uma pluralidade de segmentos de tabela de paginação.
12. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que a manutenção da fila ainda compreende:marcar um segmento de tabela de paginação como sujo mediante uma modificação ser realizada no segmento de tabela de paginação;enfileirar os segmentos sujos na ordem marcada, de modo que uma página de memória referenciada pelo segmento sujo tenha sido previamente gravada na memória não volátil (122);começar a PLR mediante a inicialização somente para os segmentos sujos; erecuperar informações de marcador das bandas de sistema que representam o segmento de tabela de paginação gravado anteriormente.
13. Meio, de acordo com a reivindicação 6, caracterizado pelo fato de que ainda compreende reduzir paginação durante a repetição, ainda compreendendo:identificar, para cada segmento de tabela de paginação ar-mazenado, uma lista de segmentos de memória modificados representados no segmento de tabela de paginação;percorrer, durante a repetição, a lista de segmentos de memória modificados; erecriar a tabela de paginação (124) usando somente informações de mapeamento pertencentes aos segmentos de memória modificados.
14. Aparelho de computação para armazenar dados caracterizado pelo fato de que compreende:uma memória de paginação para armazenar uma tabela de paginação (124) para redirecionamento de página de memória em antecipação à recuperação de perda de energia (PLR); uma fila para ordenar segmentos da tabela de paginação (124) gravados em uma memória não volátil (122), a fila usando a ordem FIFO (primeiro a entrar, primeiro a sair) de ponteiros para segmentos, a fila mantendo a sequência identificada, os segmentos representando páginas de um mapeamento lógico para físico (L2P) para a memória não volátil (122), o mapeamento L2P suportando uso de armazenamento em massa de um dispositivo de computação hospedeiro;lógica de armazenamento para armazenar os segmentos de tabela de paginação da fila com um número sequencial correspondente com base em uma ordem de gravação dos segmentos de tabela de paginação;lógica de recuperação de perda de energia para, mediante comprometimento da tabela de paginação (124), identificar o segmento de tabela de paginação armazenado por último com base no número sequencial; uma interface para que a memória não volátil (122) repita, com base nos números sequenciais, cada um dos segmentos de tabela de paginação; euma interface para que a memória de paginação recrie, com base nos marcadores armazenados com cada segmento de tabela de paginação, a tabela de paginação (124) para um estado pré- comprometimento, as interfaces adaptadas para:percorrer os números sequenciais salvos para identificar a ordem de páginas gravadas na memória não volátil (122), os segmentos contendo marcadores que indicam as alterações, ecomeçar a repetição dos segmentos alterados a partir do último segmento de tabela de paginação gravado antes do comprometimento buscando pelo último segmento paginado como identificado pelo seu número sequencial, o último segmento paginado especificando locais de ponteiros de fluxo de gravação no momento quando o segmento foi primeiro modificado, e começar a repetição a partir desse segmento.
15. Aparelho, de acordo com a reivindicação 14, caracterizado pelo fato que ainda compreende um fluxo de gravação de usuário e um fluxo de gravação de sistema, o fluxo de gravação de sistema correspondendo às tarefas iniciadas pelo sistema, os segmentos de tabela de paginação são armazenados usando o fluxo de gravação de sistema e identificados em bandas de sistema, cada banda representando uma pluralidade de segmentos de tabela de paginação.
16. Aparelho, acordo com a reivindicação 14, caracterizado pelo fato de que a lógica de armazenamento é para manter a fila armazenando os segmentos de tabela de paginação em uma área de memória de paginação, e gravar os segmentos de tabela de paginação da área de memória de paginação com base na fila, a memória não volátil (122) sendo persistente e independente do fornecimento de energia.
17. Aparelho, de acordo com a reivindicação 16, caracterizado pelo fato de que a lógica de armazenamento é ainda configurada para:armazenar pelo menos uma parte da tabela de paginação (124) na área de memória de paginação;armazenar pelo menos uma parte da tabela de paginação (124) na memória não volátil (122); egravar os segmentos de tabela de paginação com base na ordem da fila, a recuperação da perda de energia sendo restrita por um número de segmentos na fila.
18. Aparelho, de acordo com a reivindicação 14, caracterizado pelo fato de que os segmentos de tabela de paginação ainda compreendem marcadores, a lógica de PLR para percorrer os números sequenciais salvos para identificar a ordem de páginas gravadas na memória não volátil (122), os segmentos contendo marcadores que indicam as alterações, a lógica de PLR para começar a repetição dos segmentos alterados com base no último segmento de tabela de paginação gravado antes do comprometimento.
BR112014029956-0A 2012-06-29 2013-06-26 Método para armazenamento de dados, meio de armazenamento legível e aparelho de computação para descarte otimizado BR112014029956B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/537,377 2012-06-29
US13/537,377 US9037820B2 (en) 2012-06-29 2012-06-29 Optimized context drop for a solid state drive (SSD)
PCT/US2013/047992 WO2014004731A1 (en) 2012-06-29 2013-06-26 Optimized context drop for a solid state drive (ssd)

Publications (2)

Publication Number Publication Date
BR112014029956A2 BR112014029956A2 (pt) 2017-06-27
BR112014029956B1 true BR112014029956B1 (pt) 2022-02-08

Family

ID=49779426

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014029956-0A BR112014029956B1 (pt) 2012-06-29 2013-06-26 Método para armazenamento de dados, meio de armazenamento legível e aparelho de computação para descarte otimizado

Country Status (5)

Country Link
US (1) US9037820B2 (pt)
KR (1) KR101702201B1 (pt)
CN (1) CN104350477B (pt)
BR (1) BR112014029956B1 (pt)
WO (1) WO2014004731A1 (pt)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9141505B1 (en) * 2012-09-27 2015-09-22 Emc Corporation Adaptive failure survivability in a storage system using save time and data transfer after power loss
TWI596612B (zh) * 2015-12-04 2017-08-21 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US9432183B1 (en) * 2015-12-08 2016-08-30 International Business Machines Corporation Encrypted data exchange between computer systems
CN106873901B (zh) * 2015-12-11 2020-02-07 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US9746895B2 (en) * 2016-01-22 2017-08-29 Microsoft Technology Licensing, Llc Use of volatile memory as non-volatile memory
US10157004B2 (en) * 2016-04-14 2018-12-18 Sandisk Technologies Llc Storage system and method for recovering data corrupted in a host memory buffer
US9940261B2 (en) 2016-05-05 2018-04-10 Western Digital Technology, Inc. Zoning of logical to physical data address translation tables with parallelized log list replay
US9946489B2 (en) 2016-07-27 2018-04-17 Western Digital Technologies, Inc. Multi-stream journaled replay
KR20180023190A (ko) 2016-08-25 2018-03-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10031689B2 (en) 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
US10409494B2 (en) * 2017-01-27 2019-09-10 Wyse Technology L.L.C. Enabling redirection of mass storage devices of any interface
US10261721B2 (en) 2017-05-05 2019-04-16 Macronix International Co., Ltd. Memory system and operating method thereof
US11221956B2 (en) * 2017-05-31 2022-01-11 Seagate Technology Llc Hybrid storage device with three-level memory mapping
US10635331B2 (en) 2017-07-05 2020-04-28 Western Digital Technologies, Inc. Distribution of logical-to-physical address entries across bank groups
US10732864B2 (en) 2017-08-02 2020-08-04 Western Digital Technologies, Inc. Internal power analyzer for data storage device
CN107577551A (zh) * 2017-09-06 2018-01-12 郑州云海信息技术有限公司 一种固态硬盘写失败处理方法及系统
US11579789B2 (en) 2017-09-29 2023-02-14 Apple Inc. Techniques for managing context information for a storage device
US11163679B2 (en) * 2018-04-04 2021-11-02 SK Hynix Inc. Garbage collection strategy for memory system and method of executing such garbage collection
US10496334B2 (en) 2018-05-04 2019-12-03 Western Digital Technologies, Inc. Solid state drive using two-level indirection architecture
US11275512B2 (en) * 2018-05-08 2022-03-15 Micron Technology, Inc. Asynchronous power loss impacted data structure
US10636495B2 (en) 2018-06-12 2020-04-28 Western Digital Technologies, Inc. Adjustable read retry order based on decoding success trend
US11126368B2 (en) * 2019-04-30 2021-09-21 Western Digital Technologies, Inc. Systems and methods for finding a last good page in NAND open block
US10860221B1 (en) * 2019-07-05 2020-12-08 EMC IP Holding Company LLC Page write to non-volatile data storage with failure recovery
CN110517002B (zh) * 2019-08-29 2022-11-15 烟台大学 基于强化学习的生产控制方法
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11620234B2 (en) 2020-06-29 2023-04-04 Western Digital Technologies, Inc. Operation-deterministic write operations for data recovery and integrity checks
US11782831B2 (en) 2021-09-01 2023-10-10 Micron Technology, Inc. Managing power loss in a memory device

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189074B1 (en) * 1997-03-19 2001-02-13 Advanced Micro Devices, Inc. Mechanism for storing system level attributes in a translation lookaside buffer
US7321951B2 (en) 2003-11-17 2008-01-22 Micron Technology, Inc. Method for testing flash memory power loss recovery
US7383230B2 (en) * 2004-04-23 2008-06-03 Wolff Gregory J System and method for the efficient exchange and pricing of services and intangible works
US20060136685A1 (en) * 2004-12-17 2006-06-22 Sanrad Ltd. Method and system to maintain data consistency over an internet small computer system interface (iSCSI) network
US7613894B2 (en) 2005-09-02 2009-11-03 Hong Yu Wang Power loss recovery in non-volatile memory
EP1873642B1 (en) * 2006-06-29 2009-08-19 Incard SA Transaction method for managing the storing of persistent data in a transaction stack
US7941692B2 (en) 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US8572309B2 (en) 2009-03-12 2013-10-29 Marvell World Trade Ltd. Apparatus and method to protect metadata against unexpected power down
US8612666B2 (en) 2009-06-30 2013-12-17 Intel Corporation Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8886870B2 (en) 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US9037820B2 (en) 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)

Also Published As

Publication number Publication date
KR101702201B1 (ko) 2017-02-03
WO2014004731A1 (en) 2014-01-03
BR112014029956A2 (pt) 2017-06-27
US9037820B2 (en) 2015-05-19
KR20150035560A (ko) 2015-04-06
US20140006683A1 (en) 2014-01-02
CN104350477A (zh) 2015-02-11
CN104350477B (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
BR112014029956B1 (pt) Método para armazenamento de dados, meio de armazenamento legível e aparelho de computação para descarte otimizado
US10289556B2 (en) Techniques to perform power fail-safe caching without atomic metadata
US11055230B2 (en) Logical to physical mapping
US8595451B2 (en) Managing a storage cache utilizing externally assigned cache priority tags
US8990502B2 (en) Write cache structure in a storage system
KR101790913B1 (ko) 플래시 메모리에 저장된 데이터의 추론적 프리페칭
US8327076B2 (en) Systems and methods of tiered caching
KR101347285B1 (ko) 하드디스크 드라이브의 선반입 방법, 이에 적합한 기록매체 그리고 이에 적합한 장치
US8051249B2 (en) Method for preloading data to improve data-retrieval times
CN106445405B (zh) 一种面向闪存存储的数据访问方法及其装置
CN107526689B (zh) 读高速缓存管理
JP2013196755A (ja) ハイブリッドディスクドライブ中の書込み再配列方法
JP2013143124A (ja) メタデータの永続化のための方法
US10180792B1 (en) Cache management in data storage systems
US9875030B2 (en) Media write operation
US8862819B2 (en) Log structure array
JP2009003934A (ja) データ管理システム及びデータ管理方法、並びにデータ管理方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US10642508B2 (en) Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media
US9928177B2 (en) Managing method for cache memory of solid state drive
US20150120995A1 (en) Data storage device startup
US9880857B2 (en) System file management on a storage device
US10923156B1 (en) Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
Kljajić et al. Performance Analysis of 64-bit ext4, xfs and btrfs filesystems on the Solid-State disk technology
JP2010160544A (ja) キャッシュメモリシステム及びキャッシュメモリの制御方法
Coughlin New storage hierarchy for consumer computers

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 26/06/2013, OBSERVADAS AS CONDICOES LEGAIS.