BRPI0616926A2 - gerenciamento de memória flash - Google Patents
gerenciamento de memória flash Download PDFInfo
- Publication number
- BRPI0616926A2 BRPI0616926A2 BRPI0616926-0A BRPI0616926A BRPI0616926A2 BR PI0616926 A2 BRPI0616926 A2 BR PI0616926A2 BR PI0616926 A BRPI0616926 A BR PI0616926A BR PI0616926 A2 BRPI0616926 A2 BR PI0616926A2
- Authority
- BR
- Brazil
- Prior art keywords
- memory
- page
- block
- data structure
- management data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
GERENCIAMENTO DE MEMóRIA FLASH. Memória flash é gerenciada utilizando estruturas de dados de gerenciamento de memória residindo em uma memória volátil de um dispositivo de memória flash. As estruturas de dados de gerenciamento de memória são criadas e atualizadas cada vez que energia for fornecida ao dispositivo de memória. Durante operações de gravação para a memória flash, locais específicos na memória flash são atualizados para refletir o status atual da memória flash. Quando a energia é interrompida, as estruturas de dados de gerenciamento de memória são recriadas mediante reaplicação da energia. A memória flash é varrida e a informação obtida a partir dos locais específicos na memória flash é utilizada para construir as estruturas de dados de gerenciamento de memória. Nenhuma tabela de blocos ruins é exigida. A memória flash é gerenciada para prover desempenho de gravação aleatória, relativamente bom e para acomodar interrupções de energia. As aplicações incluem o uso de memória flash para computação de uso geral e dispositivos nos quais a energia pode falhar a qualquer momento (por exemplo, ao serem desconectados).
Description
"GERENCIAMENTO DE MEMÓRIA FLASH"
CAMPO TÉCNICO
O campo técnico se refere geralmente à eletrônicae mais especificamente ao gerenciamento de memória dos dis-positivos de memória flash.
ANTECEDENTES
Memória flash é uma forma de memória de leituraprogramável eletricamente apagável (EEPROM). Ao contrário daEEPROM típica, a qual é apagável 1 byte de uma vez, a memó-ria flash é tipicamente apagada um bloco de uma vez. Os ta-manhos dos blocos variam para diversos dispositivos de memó-ria flash. 0 gerenciamento da memória flash freqüentemente éespecífico para o dispositivo de memória. Os dispositivos dememória flash são tipicamente pequenos, leves, mantêm o es-tado na ausência de energia, e consomem pouca energia. Dessemodo, a memória flash é apropriada para dispositivos taiscomo: dispositivos móveis, dispositivos acionados por bate-ria, dispositivos desejando baixo consumo de energia, câme-ras digitais, tocadores de MP3, e/ou pequenos dispositivos,por exemplo.
o uso de memória flash USB em tais dispositivo en-volve tipicamente gravações seqüenciais de quantidades dedados relativamente grandes e não é muito útil para opera-ções de gravação aleatória de quantidades de dados relativa- mente pequenas. Além disso, muitos dispositivos de memóriaflash podem ser conectados e desconectados de outros dispo-sitivos por intermédio da interface USB enquanto as aplica-ções estão em execução. Desse modo, é possível para um dis-positivo de memória flash USB perder energia (por exemplo,ão ser desconectado) no meio de uma operação de leitura ougravação.
SUMÁRIO
A memória é gerenciada para acomodar adequadamenteas interrupções de energia e prover performance de gravaçãoaleatória relativamente adequada. Estruturas de dados de ge-renciamento de memória são criadas e atualizadas cada vezque a energia é fornecida a um dispositivo de memória talcomo um dispositivo de memória flash. Em uma modalidade e-xemplar, as estruturas de dados de gerenciamento de memóriasão formadas na memória volátil. Desse modo, as estruturasde dados de gerenciamento de memória são perdidas quando aenergia é perdida, e são recriadas cada vez que a energia ésubseqüentemente fornecida. Durante as operações de gravaçãopara a memória flash, locais específicos na memória flashsão atualizados para refletir o status atual da memória fla-sh. Quando a energia é interrompida, as estruturas de dadosde gerenciamento de memória são criadas a partir da reapli-cação de energia. A memória flash é examinada e a informaçãoobtida a partir dos locais específicos na memória flash éutilizada para construir as estruturas de dados de gerencia-mento de memória.
DESCRIÇÃO RESUMIDA DOS DESENHOS
Os objetivos, aspectos e vantagens anteriormentemencionados e outros, serão mais bem-entendidos a partir dadescrição detalhada a seguir com referência aos desenhos,nos quais:A Figura 1 é um diagrama de blocos de um disposi-tivo de memória flash exemplar;
A Figura 2 é um diagrama de blocos de outra moda-lidade e exemplar de um dispositivo de memória flash;
A Figura 3 é uma ilustração de uma estrutura dedados de memória flash exemplar compreendendo blocos e páginas ;
A Figura 4 é um diagrama de uma designação exem-plar de páginas em um bloco;
A Figura 5 é um diagrama de uma estrutura de dadose metadados exemplar de uma página;
A Figura 6 é um diagrama de uma estrutura de dadosexemplar para uma página de sumário;
A Figura 7 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar relacionada aosendereços de blocos lógicos (LBAs) para endereços de páginaflash;
A Figura 8 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrando blocoslivres;
A Figura 9 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrando o nú-mero de páginas válidas em um bloco;
A Figura 10 é uma estrutura de dados de gerencia-mento de memória exemplar ilustrando números de seqüência depágina associado às páginas em um bloco;
A Figura 11 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrando umbloco ativo e uma página ativa;
A Figura 12 é um fluxograma de um processo exem-plar para varredura de blocos;
A Figura 13 é um fluxograma de um processo exem-plar para varredura de uma página de sumário;
A Figura 14 é um fluxograma ou um processo exem-plar para realizar uma varredura de bloco completa;
A Figura 15 é um fluxograma de um processo exem-plar para realizar mapeamento de LBA; e
A Figura 16 é um fluxograma de um processo exem-plar para atribuir um bloco ativo e uma página ativa.
DESCRIÇÃO DETALHADA DAS MODALIDADES ILUSTRATIVASO gerenciamento de memória é descrito aqui quandoaplicado à memória flash. Contudo, deve ser entendido que aaplicação de gerenciamento de memória, conforme descrita a-qui, não deve ser a ela limitada. 0 gerenciamento de memóriaaqui descrito é uma aplicação para qualquer tipo apropriadode meio de armazenamento, tal como memória flash NAND, memó-ria flash NOR, memória não-flash, memória dinâmica, memóriavolátil, memória não-volátil, memória de semicondutor, memó-ria magnética, memória de disco rígido, memória de disquetememória ótica, ou semelhante, por exemplo.
A Figura 1 é um diagrama de blocos de um disposi-tivo de memória flash exemplar 12 compreendendo uma porçãode memória volátil 14, uma porção controladora 16, e umaporção de memória não-volátil 18. Em uma modalidade exem-plar, a porção de memória não-volátil 18 compreende memóriaflash. Contudo, qualquer memória apropriada pode ser utili-zada. Não é necessário que a porção de memória volátil 14compreenda memória volátil, e desse modo em uma modalidadealternativa, a porção de memória volátil 14 compreende memó-ria não-volátil. Além disso, em modalidades exemplares, aporção de memória volátil 14 e/ou a porção de memória não-volátil 18 pode compreender bancos de dados. 0 dispositivode memória flash 12 pode ser implementado em um único pro-cessador, ou múltiplos processadores. Múltiplos processado-res podem ser distribuídos ou centralmente localizados. Múl-tiplos processadores podem se comunicar sem fio, por inter-médio de linha de fios, ou uma combinação dos mesmos. Porexemplo, a porção controladora 16 do dispositivo de memóriaflash 12 pode ser implementada por intermédio de múltiplosprocessadores distribuídos.
Conforme descrito em mais detalhe abaixo, a porçãocontroladora 16 gerencia acesso à porção de memória flash18. O termo "acesso" conforme aqui usado compreende leitura,gravação, apagamento, ou uma combinação dos mesmos. A porçãocontroladora 16 também constrói estruturas de dados de ge-renciamento de memória dentro da porção de memória volátil 14.
O dispositivo de memória flash 12 pode ser acopla-do por intermédio da interface 20 com qualquer dispositivoapropriado desejando acesso (dispositivo que acessa não mos-trado na Figura 1) ao dispositivo de memória flash 12. Odispositivo que acessa (por exemplo, câmera digital ou toca-dor de MP3) é acoplado à porção controladora de memória 16pode intermédio da interface 20. A interface 20 pode compre-ender qualquer interface apropriada, tal como Barramento Se-rial Universal (USB), por exemplo. Em uma modalidade, a por-ção controladora 16 é transparente para o dispositivo queacessa e o dispositivo que acessa "pensa" que ele está eminterface diretamente com a memória flash 18. Em outra moda-lidade exemplar, o controlador 16 emula a memória de disco,e. o dispositivo que acessa "pensa" que ele está em interfacediretamente com um disco. A interface 20 pode ser um linksem fio, uma interface de ligação física, ou uma combinaçãodos mesmos.
A Figura 2 é um diagrama de blocos ilustrando ou-tra modalidade exemplar de um dispositivo de memória flash.
Na configuração ilustrada na Figura 2, o dispositivo de me-mória flash compreende múltiplas porções de memória não-volátil 22. Em uma modalidade exemplar, o dispositivo de me-mória flash compreende meio para separadamente acessar cadaporção (22a - 22k) da porção de memória não-volátil 22. Por-ções separadas 22a - 22k podem representar porções de memó-ria flash separadas em um único chip, chips separados, ouuma combinação dos mesmos. Em uma modalidade exemplar, aces-so separado a cada porção da memória não-volátil 22 pode serimplementado mediante qualquer meio apropriado, tal como me-diante comutadores para habilitar/desabilitar separados, porexemplo. Acesso separado às porções selecionadas da porçãode memória não-volátil 22 permite que múltiplas funções se-jam realizadas simultaneamente. Por exemplo, porções sele-cionadas da porção de memória não-volátil 22 podem aceitarcomandos, enquanto que outras porções podem estar realizandooperações que exigem períodos de tempo mais longos.
Com referência outra vez à Figura 1, com o propó-sito de simplicidade, a porção de memória não-volátil 18também é referida aqui como a memória flash. Em uma modali-dade exemplar, quando energia é aplicada ao dispositivo dememória flash 12, o controlador 16 examina a memória flash18. 0 controlador 16 utiliza informação obtida a partir davarredura da memória flash 18 para construir estruturas dedados de gerenciamento de memória na porção de memória volá- til 14. A porção controladora 16 obtém informação que dizrespeito ao status dos blocos e páginas da memória flash 18a partir de páginas selecionadas dos blocos selecionados damemória flash 18.
A Figura 3 é um diagrama da memória flash 18 ilus-trando uma estrutura de dados exemplar para blocos e pági-nas. A memória flash 18 compreende um número fixo de blocos.Cada bloco compreende um número fixo de páginas. Em uma mo-dalidade exemplar, a memória flash 18 compreende "Ν" + 1bloco e cada bloco compreende "L" + 1 página, conforme ilus- trado na Figura 3. Cada página compreende um número fixo debytes. Em uma modalidade exemplar, o dispositivo de memóriaflash compreende 4.096 blocos (blocos de 4K) por porção dememória flash 18 (isto é, N = 4.095), e cada bloco compreen-de 64 páginas (isto é, L = 63) . Conseqüentemente, cada por-ção de memória flash 18 compreende páginas de 256K (4K χ64). Adicionalmente, cada página compreende 2.112 bytes, (2KB, designados para dados e 64 B designados para metadados).Contudo, diversas outras configurações são consideradas.Antes dos dados poderem ser gravados na memóriaflash, a memória deve ser apagada. Mais especificamente, an-tes de um bloco poder ser usado para gravação, o bloco deveser apagado. A memória flash pode ser gravada em uma páginade cada vez. A memória flash é apagada um bloco de cada vez.Desse modo, as operações de apagamento são realizadas em umabase por blocos, e as operações de programa (gravação) sãorealizadas em uma base por página. As operações de leituratambém são realizadas em uma base por página. As páginas emum bloco são gravadas seqüencialmente a partir de endereçobaixo para endereço alto. Desse modo, com referência à Figu-ra 3, a página 1 seria gravada antes que a página 2 pudesseser gravada. Quando uma página tiver sido gravada, as pági-nas anteriores no bloco não mais podem ser gravadas até de-pois do próximo apagamento (do bloco). Conforme descrito emmais detalhe abaixo, a condição de gravação seqüencial é u-tilizada para determinar falhas de apagamento. Células dememória flash recebem um valor binário 1 quando apagadas.Quando programadas (gravadas), as células recebem um valorbinário 0.
Com referência agora à Figura 1 e Figura 3, em umamodalidade exemplar, uma operação de leitura envolve ler umapágina inteira a partir da memória flash 18. 0 conteúdo dapágina é copiado para um registrador da porção controladora16. Nessa modalidade exemplar, o tamanho do registrador é de2112 bytes (2KB + 64 bytes) . O conteúdo do registrador estádisponível para ser transferido para um dispositivo de aces-so por intermédio da interface 20 (por exemplo, USB). O con-teúdo do registrador pode ser transferido em sua totalidadeou qualquer parte do mesmo pode ser transferida. Conformedescrito acima as operações de gravação são realizadas emuma ordem seqüencial de páginas. Uma página pode ser gravadaaté quatro vezes entre apagamentos. Contudo, a mesma porçãode uma página não pode ser gravada até que tenha ocorrido umapagamento. Isto é, uma célula não pode ser gravada duas ve-zes, por exemplo, um zero não pode ser transformado em 1(sem apagamento). Desse modo, quando uma célula de memória égravada com 0, a célula não pode ser gravada com 1 até queocorra um apagamento. As operações de gravação são realiza-das pela porção controladora 16. Os dados a serem gravadosna memória flash 18 são colocados em um registrador no con-trolador 16, e o conteúdo do registrador é transferido paraa memória flash 18. 0 conteúdo do registrador pode sertransferido para a memória flash 18 em até quatro transfe-rências. Desse modo, uma página pode ser gravada até quatrovezes antes de um apagamento, em que nenhuma porção da pági-na é regravada entre apagamentos.
Vários meios podem ser usados para garantir que osdados sendo lidos a partir da memória flash 18 estejam cor-retos (por exemplo, não tenham sido corrompidos). Em uma mo-dalidade exemplar, correção e detecção de erro, referidoscomo ECC, são utilizadas durante uma operação de leitura.Qualquer esquema ECC apropriado pode ser usado. Em uma moda-lidade exemplar, é usado código Hamming de correção de errode bit único e detecção de erro de bit duplo. Quando uma pá-gina de dados é lida a partir da memória flash 18, ECC é re-10alizado na página inteira pela porção controladora 16. Senenhum erro for detectado, ou se erros detectados forem cor-rigidos, determina-se que a página está boa. Se um erro fordetectado e não puder ser corrigido, determina-se que a pá-gina está ruim.
Outro meio para garantir que os dados lidos a par-tir da memória flash 18 estão corretos é um esquema, referi-do como detecção segura de erro, empregando uma função hash.Uma função hash é uma função que converte uma entrada decomprimento variável em uma saida de comprimento fixo, refe-rido como o valor de hash. Dentro dos limites matemáticos,duas entradas diferentes para uma função hash não resultarãono mesmo valor de hash. Em uma modalidade exemplar, uma fun-ção hash criptográfica, tal como MD5 ou SHA-I, bem conheci-das, por exemplo, é utilizada. Quando os dados são gravadosem uma página, pelo menos uma porção dos dados é operada poruma função hash. Essa operação é referida como hashing dosdados. O valor de hash resultante é armazenado na páginajunto com os dados. 0 valor de hash é armazenado na porçãode metadados da página. Hashing é realizado pela porção con-troladora 16. Quando os dados são lidos a partir de uma pá-gina, o controlador 16 realiza hash nos dados utilizando amesma função de hash que foi usada para gravar os dados. 0valor de hash resultante é comparado com o valor de hash ar-mazenado na porção de metadados da página. Se os dois valo-res de hash combinarem, determina-se que os dados estãobons. Se os dois valores de hash diferirem, determina-se queos dados estão ruins.A Figura 4 é um diagrama de uma designação exem-plar de páginas em um bloco. As páginas em cada bloco sãodesignadas como páginas de dados ou páginas de sumário. Namodalidade exemplar aqui descrita, conforme ilustrado na Fi-gura 4, a última página (página L) de cada bloco é designadacomo a página de sumário. Todas as outras páginas (páginas 0a L-I) são designadas como páginas de dados. Das páginas dedados de cada bloco, a página 0 é tratada especialmente,conforme descrito abaixo. Todas as páginas de dados estãodisponíveis para uso geral como: leitura, gravação e apaga-mento. A página 0 de cada página contém informação de blocoespecífico e a página L de cada bloco contém informação desumário pertencendo ao bloco e às páginas no bloco.
A Figura 5 é um diagrama de uma estrutura de dadosexemplar de uma página compreendendo uma porção de carga ú-til 24 e uma porção de metadados 26. A Figura 5 ilustra umaestrutura de dados exemplar para todas as páginas na memóriaflash exceto a página L. A porção de carga útil 24 compreen-de quatro subpáginas. Cada subpágina tem 512 bytes de tama-nho. Isto é, cada subpágina pode acomodar 512 bytes de da-dos. Desse modo, a porção de carga útil 24 tem um tamanho de2048 bytes (2 KB). A porção de metadados 26 tem um.tamanhode 64 bytes. A porção de metadados 2 6 compreende uma porção32 de indicador de blocos ruins (BBI), uma porção de númerode seqüência de bloco 36, uma porção de selagem 34, uma por-ção de correção e detecção de erro 38, e uma porção de ende-reço de bloco lógico (LBA) 28 que tem um tamanho de 18 bitse é capaz de acomodar a LBA a página. A porção de metadados26 contém também uma porção de subpágina válida 30 que temum tamanho de 4 bits. A porção de subpágina válida 30 é ca-paz de acomodar 4 bits, bit de validade 1 (VBl) , bit de va-lidade 2 (VB2) , bit de validade 3 (VB3) , bit de validade 4(VB4) , cada bit indicando se uma subpágina é ou não válida.A porção de detecção e correção de erro é subdividida em 4segmentos: um por gravação em perspectiva da página. (Naprática, a maioria das páginas apenas será gravada uma vez).Nas leituras, apenas o segmento lido mais recentemente (porexemplo, o último) é aplicado. O código de detecção de errocobre os dados e metadados da página. O ECC cobre os dados,metadados, e código de detecção de erro. Observar que o con-teúdo ilustrado na Figura 5 não é encontrado em todas as pá-ginas de um bloco. Por exemplo, conforme descrito abaixo,certo conteúdo é encontrado apenas na página 0 de um bloco.
Se um bloco estiver ruim quando testado após fa-bricação, a página 0 ou página 1 daquele bloco é marcada pa-ra indicar que o bloco está ruim. A porção BBI 32 compreendeuma indicação do status do bloco como ruim ou bom. A porçãoBBI 32 da página é relevante apenas para as primeiras duaspáginas de um bloco. Em uma modalidade exemplar, se a porçãoBBI 32 for de todos binários 1 para ambas as páginas, o blo-co está bom. Se o bloco estiver ruim, a porção BBI 32 com-preenderá outros do que todos os binários 1, para página 0ou página 1. A porção de número de seqüência de bloco 36 temum tamanho de 32 bits. Cada vez que um bloco é gravado pelaprimeira vez após apagamento, um número de seqüência global(por exemplo, através de todos os blocos) é incrementado, eo valor é colocado aqui. 0 número de seqüência de blocos i-dênticos será gravado nos metadados da página de sumário debloco, quando e se for gravado. 0 número de seqüência debloco 36 é ignorado para os blocos diferentes do primeiro ouúltimo bloco.
A porção de selagem 34 acomoda uma indicação dostatus de apagamento do bloco. 0 indicador é referido comouma selagem. Ele é relevante apenas para a página 0 de umbloco. Uma selagem é um padrão de bit distinto usado paraindicar que um bloco ou é completamente apagado ou não com-pletamente apagado. Quando o bloco apagado é "selado", o pa-drão distintivo é gravado na porção de selagem 34 da porçãode metadados 2 6 da página 0 do bloco sem ECC ou código dedetecção de erro 38. Qualquer padrão característico apropri-ado pode ser usado. Quando o bloco é primeiramente gravadoapós ser selado, a selagem é ajustada para todos os binários 0.
A Figura 6 é um diagrama de uma estrutura de dadosexemplar para uma página de sumário compreendendo uma porçãode endereço de blocos todos lógicos (LBAs) e porção de bitsde validade 40 e uma porção de metadados 26 equivalente à-quela descrita para as páginas de dados (por exemplo, Figura5) . Quando a página seguinte à última (página L-I) de umbloco é gravada, a última página (página L) também é gravadacom informação de sumário relacionada ao bloco. O LBA paracada página no bloco e os bits de validade para cada páginano bloco são gravados em todos os LBAs e porção de bits devalidade 40. Todos os LBAs e porção de bits de validade 40constituem 18 9 bits de tamanho, desse modo acomodando até 3bytes, por página, para cada uma das 63 páginas de dados emum bloco. Um número de seqüência de bloco é gravado na por-ção de número de seqüência de bloco 36 dos metadados 26. 0número de seqüência de blocos é usado para construir a es-trutura de dados de gerenciamento de memória durante liga-ção .
A memória flash é gerenciada de acordo com as es-truturas de dados de gerenciamento de memória que são cons-truidas na memória volátil. As estruturas de dados de geren-ciamento de memória são regeneradas cada vez que energia éaplicada. Durante uma falha de energia, considera-se que e-xista uma reserva de energia suficiente (por exemplo, porintermédio de capacitância elétrica) no dispositivo de memó-flash para completar qualquer operação de gravação quepossa estar em andamento quando a energia falha. Não se es-pera que quaisquer novas operações sejam iniciadas após umafalha de energia até que a energia seja reaplicada. As es-truturas de dados de gerenciamento de memória são ilustradasaqui como tabelas. Enfatiza—se, contudo, que os diagramas eas ilustrações, aqui apresentados, são exemplares e não pre-tendem inferir uma configuração e/ou implementação especifi-ca .
A Figura 7 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrada comouma tabela, Tabela I, relacionando endereços de blocos lógi-cos (LBAs) aos endereços de página flash. Considera-se que oLBA é um índice usado para se fazer uso da Tabela I, mas,para clareza, é ilustrado como parte da Tabela I. Um LBA éum endereço usado por um dispositivo de acesso (por exemplo,computador conectado através de USB, câmera digital ou toca-dor de MP3) para acessar a memória. Não é incomum que um en-dereço de acesso recorra à memória por intermédio de um USBem segmentos de 4 KB. A memória flash, contudo, é endereçá-vel no segmento de 2 KB. A estrutura de dados de gerencia-mento de memória, representada pela Tabela I, mapeia os LBAsendereçáveis de 4 KB para os endereços de página de memóriaflash endereçáveis de 2 KB. Em uma modalidade exemplar, aTabela I compreende fileiras de 256K (256 χ 1024). A TabelaI é indexada pelos LBAs. Cada fileira compreende um LBA e umendereço de página de memória flash correspondente. Cada fi-leira também contém os bits de validade, VBl, VB2, VB3, eVB4 para as subpáginas de 512 KB respectivas de cada páginade memória flash.
Outra estrutura de dados de gerenciamento de memó-ria exemplar é ilustrada na Figura 8 como Tabela II. A Tabe-la II indica quais blocos estão livres. Um bloco livre é umbloco que foi apagado e está disponível para gravação. Emuma modalidade exemplar, o bloco 0 não é incluído na TabelaII. O bloco 0 é tipicamente garantido pela fabricante dodisposit ivo de memória flash para ser completamente bom.
Também é tipicamente garantido que o bloco 0 pode ser grava-do e apagado corretamente até 1000 vezes. E uma modalidadeexemplar, o bloco 0 não é usado para leitura e gravação ge-ral de dados. Em uma modalidade exemplar, um bloco livre éindicado por um único bit na coluna de bloco livre para cadabloco respectivo.
A Figura 10 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrada na Ta-bela III. A Tabela III indica o número de páginas válidas em cada bloco e se um bloco está abandonado. Se um bloco esti-ver abandonado, um padrão de bit predeterminado e armazenadona coluna de indicador livre da Tabela III. Qualquer padrãode bit apropriado pode ser usado para indicar que um blocoestá abandonado. Determina-se que uma página é válida se a página contiver conteúdo utilizável (dados). Por exemplo, seo conteúdo de uma página (página antiga) estiver gravado emoutra página (página nova), determina-se que a página antigaé inválida. A nova página é determinada como válida. O valorindicando o número de páginas válidas em um bloco está entre o e 63 porque cada bloco contém 63 páginas de dados. Em umamodalidade exemplar, quando um novo bloco é necessário, obloco tendo o menor número de páginas válidas é determinadocomo sendo um candidato para apagamento. Apagar o bloco ten-do o menor número de páginas válidas recuperará a maioriadas páginas quando apagadas. A Tabela III pode ser usada pa-ra determinar se um bloco é um candidato para apagamento. Emuma modalidade exemplar, se um bloco contém quaisquer pági-nas válidas, ele não é um candidato para apagamento. Consi-dera-se que alguns blocos apagados serão reservados. Blocos apagados reservados podem ser usados para lidar com grava-ções longas sem se ter que compactar e apagar os blocos du-rante uma transferência. Além disso, blocos apagados reser-vados podem ser usados para evitar rápida reutilização dobloco quando o dispositivo de memória flash está quase chei-o. Blocos apagados reservados também podem ser usados paralidar com os blocos que se tornam ruins durante a vida útildo dispositivo de memória flash.
A Figura 10 é uma ilustração de uma estrutura dedados de gerenciamento de memória, exemplar, ilustrada comoTabela IV. A Tabela IV indica o bloco ativo e a página ati-va. Em qualquer momento, haverá no máximo um bloco ativo euma página ativa dentro do bloco ativo. 0 bloco ativo é obloco atualmente sendo acessado. A página ativa é a primeirapágina apagada dentro do bloco ativo. A página ativa é a pá-gina que será a seguir gravada em resposta a um comando degravação. Embora ilustrado como Tabela IV, considera-se queem uma modalidade exemplar, os blocos ativos e as páginasativas podem ser implementados como variáveis de tempo deexecução, dinâmicas que são inicializadas durante varredurade ligação.
A Figura 11 é uma ilustração de uma estrutura dedados de gerenciamento de memória exemplar ilustrada comoTabela V. A Tabela V indica um número de seqüência de blocopara cada bloco. A Tabela V é usada enquanto construindo asoutras estruturas de dados de gerenciamento de memória (porexemplo, Tabelas I-IV). Quando um dispositivo de memóriaflash é inventado, ele não tem blocos gravados. Para cadaapagamento de bloco subseqüente, um número de seqüência ló-gico é incrementado e gravado nos metadados da página 0 dobloco recentemente gravado. 0 número de seqüência também égravado, identicamente, na página de sumário do bloco se ouquando a página for gravada. 0 número de seqüência é usadoquando nenhuma varredura de ligação detecta duas páginas quereivindicam mapear para o mesmo LBA. Esse conflito é resol-vido principalmente mediante escolha da página no bloco como maior número de seqüência. Se houver múltiplas tais pági-nas (necessariamente no mesmo bloco), então, aquela com omaior número de página é escolhida. A Tabela V compreende umnúmero de seqüência de bloco de todos os blocos encontradosna varredura. Isso permite a determinação do número do blocopara qualquer candidato previamente descoberto para um de-terminado LBA, de modo a fazer a comparação acima. Em umamodalidade exemplar, a Tabela V é descartada após inicialização.
A Figura 12 é um fluxograma de um processo exem-plar para varredura de blocos a partir da inicialização. Ca-da bloco é examinado como parte do processo para construiras estruturas de dados de gerenciamento de memória. Quandoenergia é aplicada, a memória flash (por exemplo, memóriaf-lash 18) do dispositivo de memória flash (por exemplo, dis-positivo de memória flash 12) é examinada (por exemplo, pelaporção controladora 16) para obter a informação necessáriapara construir as estruturas de dados de gerenciamento dememória (por exemplo, a porção de memória volátil 14). Emuma modalidade exemplar, a informação sobre os blocos da me-mória flash é obtida e a informação sobre as páginas dosblocos que não foram abandonadas é obtida. Mediante aplica-ção de energia, ou apropriadamente posteriormente, em umamodalidade exemplar, o processo de construção da estruturade dados de gerenciamento de memória inicia mediante varre-dura das páginas de sumário dos blocos e, então, conformeapropriado, a varredura das outras páginas nos blocos. Enfa-tiza-se que essa seqüência é exemplar e que qualquer seqüên-cia apropriada de varredura de blocos e páginas pode ser u-tilizada.
A partir da energia sendo aplicada, ou apropriada-mente, posteriormente, os blocos da memória flash são exami-nados e as estruturas de dados de gerenciamento de memóriasão criadas/povoadas. Cada bloco é examinado para determinarse a página de sumário do bloco está boa (etapa 46) , se obloco está selado (etapa 48), se o bloco está defeituoso (e-tapa 50) , e se o bloco está apagado (etapa 52) . As estrutu-ras de dados apropriadas são criadas/atualizadas de acordo com os resultados de cada uma dessas determinações.
O processo prossegue para o bloco 1 na etapa 44. Obloco o é pulado. Determina-se se a página de sumário dobloco está boa na etapa 46. Se for determinado (etapa 46)que a página de sumário está boa, a página de sumário é exa- minada na etapa 54. Em uma modalidade exemplar, a página desumário é examinada de acordo com o fluxograma exemplar i-lustrado na Figura 13. A varredura da página de sumário co-meça na entrada para a página 0, conforme ilustrado na etapa78 da Figura 13. As entradas na página de sumário são usadaspara povoar a Tabela I na etapa 80. Em uma modalidade exem-plar, a Tabela I é povoada de acordo com o processo exemplarilustrado na Figura 15. Determina-se, na etapa 114, se exis-te uma entrada na Tabela I para a entrada LBA na página desumário. Se for determinado (etapa 114) que não existe en-trada LBA, a Tabela I é atualizada com a entrada LBA na pá-gina de sumário na etapa 120. Isso inclui mapear toda a in-formação pertencendo à LBA, tal como o número de bloco, osíndices de página, a informação de bit de validade. Se fordeterminado (etapa 114) que existe uma entrada LBA na TabelaI para a entrada LBA na página de sumário, determina-se, naetapa 116, se o número de seqüência de bloco do bloco de me-mória flash associado é inferior ou igual ao número de se-qüência de bloco conforme denotado na Tabela V. Se afirmati-vo, a Tabela I é povoada na etapa 120. Caso contrário, con-forme ilustrado na etapa 118, o processo prossegue para eta-pa 80 da Figura 13.
Na etapa 84, é determinado se existem mais páginasno bloco. Se houver mais páginas, o processo prossegue paraa próxima página na etapa 82. O processo prossegue para eta-pa 80 e povoa a Tabela I de acordo com o fluxograma exemplarilustrado na Figura 15 conforme descrito acima. Se for de-terminado (etapa 84) que não existem mais páginas, o proces-so prossegue, conforme ilustrado na etapa 86, para a etapa54 da Figura 12. Na etapa 68 determina-se se há mais blocosa serem examinados. Se for determinado (etapa 68) que hámais blocos a serem examinados, o processo prossegue para opróximo bloco na etapa 66. É determinado, na etapa 46, se apágina de sumário para o bloco é boa. Se a página de sumáriofor boa, o processo prossegue através das etapas 54, etapa68, e 66, conforme descrito acima, até que não haja qualquerbloco restante.Se for determinado (etapa 46) que a página de su-mário para o bloco não está boa, é determinado, na etapa 48,se o bloco está selado. A porção de selagem da porção de me-tadados da página 0 é verificada para determinar se o blocoestá selado (vide Figura 5) . Se o padrão característico daselagem for detectado, o bloco é selado. Se o bloco for se-lado, o bloco é colocado na lista livre na etapa 56. 0 blocoé colocado na lista livre mediante atualização da estruturade dados de gerenciamento de memória indicando o status Ii-vre de cada bloco, tal com Tabela II e Tabela III, por exem-plo, (vide Figura 8 e Figura 9) . Se o bloco não for selado(etapa 48), determina-se se o bloco está defeituoso na etapa50. As porções indicadoras de bloco defeituoso (BBI) das pá-ginas Oel (vide Figura 5) são verificadas para determinarse os blocos estão defeituosos. Em uma modalidade exemplar,o bloco não está defeituoso se as porções BBI das páginas 0e 1 contiverem todos os binários Ieo bloco está defeituosoem todos os outros casos. Se o bloco estiver defeituoso (e-tapa 50), o bloco é abandonado e a estrutura de dados de ge-renciamento de memória indicando blocos disponíveis, tal co-mo Tabela I, por exemplo, (vide Figura 8), é conformementeatualizado.
Se for determinado (etapa 50) que o bloco não estádefeituoso, é determinado na etapa 52, se o bloco é apagado.Um bloco é considerado como apagado se cada bit no bloco for1. Se for determinado (etapa 52) que o bloco é apagado, obloco é selado na etapa 60 e o bloco é colocado na lista li-vre na etapa 64. O bloco é colocado na lista livre na etapa64 mediante atualização da estrutura de dados de gerencia-mento de memória indicando o status de livre de cada bloco,tal como Tabela II e Tabela III, por exemplo, (vide Figura 8e Figura 9). Se for determinado (etapa 52) que o bloco não é apagado, as páginas do bloco são examinadas na etapa 62. Emuma modalidade exemplar, o bloco é examinado de acordo com odiagrama de fluxo exemplar ilustrado na Figura 14.
A varredura dos blocos começa na página 0 na etapa88. Na etapa 90, é determinado se a página é boa. A página édeterminada como boa se o ECC e os algoritmos de detecção deerro, potentes, resultar em nenhum erro. Se for determinado(etapa 90) que a página não é boa, é determinado na etapa 96se a página é apagada (isto é, contém todos os 1). Se a pá-gina não for apagada (etapa 96), o bloco é abandonado na e- tapa 110 e, conforme ilustrado na etapa 112, o processoprossegue para a etapa 62 da Figura 12. Se a página é apaga-da (etapa 96) , indicadores de bloco ativo e de página ativasão atualizados na etapa 102. Em uma modalidade exemplar, osindicadores de bloco ativo e de página ativa são atualizadosde acordo com o processo exemplar ilustrado na Figura 16.Uma página é designada como a página ativa se ela for a pri-meira página apagada no bloco com o número de seqüência debloco maior e o bloco não foi abandonado. Se um bloco ativojá tiver sido designado, uma página ativa é selecionada apartir do bloco ativo conforme descrito abaixo. Contudo, épossível que um bloco ativo não exista. Isso poderia ser oresultado, por exemplo, de energia falhando após um blocoter sido preenchido, mas, antes da próxima solicitação degravação chegar, ou antes, de a página de sumário poder sergravada. Em qualquer um dos casos, o último bloco alocadoestá completamente cheio, e não há página ativa.
Na etapa 120, é determinado se existe uma páginaativa. Se não existir página ativa (etapa 120), o bloco atu-al e a página são armazenados como bloco ativo e página ati-va em perspectiva, na etapa 126. Se houver uma página ativa(etapa 120), é determinado, na etapa 122, se o número de se-qüência do bloco da página ativa é menor do que o número deseqüência do bloco atual (conforme determinado, por exemplo,pela Tabela V). Se afirmativo, o bloco atual e a página sãoarmazenados como bloco ativo e página ativa em perspectiva,na etapa 126. Caso contrário, conforme ilustrado na etapa124, o processo prossegue para etapa 102 da Figura 14. É de-terminado na etapa 106 se a última página do bloco foi exa-minada. Se houver mais páginas para examinar, a próxima pá-gina é acessada na etapa 104. O processo prossegue para eta-pa 90 e, se a página for boa, prossegue através da etapa 96e etapa 102, conforme descrito acima.
Se, na etapa 90, for determinado que a página nãoé boa, é determinado se a página atual é a página 0 na etapa92. Se a página atual é a página 0, o número de seqüência debloco é registrado na estrutura de dados de gerenciamento dememória, apropriada na etapa 98. Em uma modalidade exemplar,o número de seqüência de bloco é gravado na Tabela V. Estru-turas de dados de gerenciamento de memória apropriadas sãoatualizadas com os LBAs bons na etapa 100. Em uma modalidadeexemplar, a Tabela I é atualizada de acordo com o processoexemplar ilustrado na Figura 16, conforme descrito acima. Édeterminado na etapa 106 se a última página do bloco foi e-xaminada. Se houver mais páginas para examinar, a próximapágina é recuperada na etapa 104, e o processo prossegue pa-ra a etapa 90 conforme descrito acima.
Se for determinado (etapa 92) que a página atualnão é a página 0, é determinado, na etapa 94, se a página éapagada. Se for determinado (etapa 94) que a página anterioré apagada, o bloco é abandonado na etapa 110, e conforme i-lustrado pela etapa 112, o processo prossegue para a etapa62 da Figura 12. Se for determinado (etapa 94) que a páginaanterior não é apagada, as estruturas de dados de gerencia-mento de memória, apropriadas são atualizadas com os LBAsbons na etapa 100. Em uma modalidade exemplar, a Tabela I é15 atualizada de acordo com o processo exemplar ilustrado naFigura 15, conforme descrito acima. É determinado na etapa106 se a última página do bloco foi examinada. Se houvermais páginas para examinar, a próxima página é acessada naetapa 104, e o processo prossegue para etapa 90 conforme20 descrito acima.
Com referência outra vez à Figura 12, na conclusãoda etapa 54, etapa 58, etapa 64, ou etapa 62, é determinado,na etapa 68, se há mais blocos para serem examinados. Sehouver mais blocos a serem examinados, o processo prossegue25 para a etapa 66 e continua conforme descrito acima. Se fordeterminado (etapa 68) que não há mais blocos a serem exami-nados, o número de seqüência de bloco atual é estabelecidopara o número de seqüência de bloco máximo, excluindo osblocos abandonados. As estruturas de dados de gerenciamentode memória, apropriadas são atualizadas (Tabela III e TabelaV, por exemplo) para refletir o estabelecimento do número deseqüência do bloco atual. Na etapa 72, é determinado se onúmero de seqüência do bloco ativo atual é menor do que onúmero de seqüência de bloco máximo. Se não for, o processode ligação é concluído na etapa 76. Se for, o bloco ativo ézerado na etapa 74. Isto é, o indicador de bloco ativo é es-tabelecido para indicar que não há bloco ativo.
Em uma modalidade exemplar, apagamentos são tenta-dos para distribuição igualmente através dos blocos da memó-ria flash. Esse processo é referido como nivelação de des-gaste. De acordo com um processo de nivelação de desgasteexemplar, um número indicativo do número de vezes que umbloco foi apagado (contagem de apagamento) é gravado na por-ção de metadados da página de sumário de cada bloco. Em umamodalidade exemplar, a contagem de apagamento é gravada napágina de sumário quando o bloco está sendo selado. A conta-gem de apagamento para cada bloco é mantida nas estruturasde dados de gerenciamento de memória e é recuperável a par-tir da página de sumário de cada bloco durante a construçãodas estruturas de dados de gerenciamento de memória durantea ligação.
Como mencionado acima, embora modalidades exempla-res de gerenciamento de memória tenham sido descritas em co-nexão com vários dispositivos de computação, os conceitossubjacentes podem ser empregados em qualquer dispositivo ousistema de computação capaz de gerenciar memória.As várias técnicas aqui descritas podem ser imple-mentadas em conexão com hardware ou software ou, onde apro-priado, com uma combinação dos dois. Desse modo, os métodose aparelhos para gerenciar memória, ou certos aspectos ou porções dos mesmos, podem assumir a forma de código de pro-grama (isto é, instruções) incorporado em meios tangíveis,tais como disquetes, CD-ROMs, discos rígidos, ou qualqueroutro meio de armazenamento legível por máquina, em que,quando o código de programa é carregado em uma máquina e e- xecutado por ela, tal como um computador, a máquina se tornaum aparelho para praticar gerenciamento de memória. No casode execução de código de programa em computadores programá-veis, o dispositivo de computação geralmente incluirá umprocessador, um meio de armazenamento legível pelo processa-dor (incluindo memória volátil e não-volátil e/ou elementosde armazenamento), pelo menos um dispositivo de entrada, epelo menos um dispositivo de saída. 0 programa (s) pode serimplementado em linguagem de montagem ou de máquina, se de-sejado. Em qualquer caso, a linguagem pode ser uma linguagemcompilada ou interpretada, e combinada com implementações dehardware.
Os métodos e aparelhos para gerenciamento de memó-ria também podem ser praticados por intermédio de comunica-ções incorporadas na forma de código de programa que étransmitido através de algum meio de transmissão, tal comoatravés de fios ou cabos elétricos, através de fibras óti-cas, ou através de qualquer outra forma de transmissão, emque, quando o código de programa é recebido e carregado emuma máquina e executado por ela, tal como uma EPROM, um ar-ranjo de portas, um dispositivo lógico programável (PLD), umcomputador de cliente, ou semelhante, a máquina se torna umaparelho para prática da invenção. Quando implementado em umprocessador de uso geral, o código de programa combina com oprocessador para prover um aparelho único que opera para in-vocar a funcionalidade da presente invenção. Adicionalmente,quaisquer técnicas de armazenamento usadas em conexão com apresente invenção invariavelmente podem constituir uma com-binação de hardware e software.
Embora o gerenciamento de memória tenha sido des-crito em conexão com as modalidades exemplares das váriasfiguras, deve ser entendido que outras modalidades similarespodem ser usadas ou que modificações e adições podem ser15 feitas nas modalidades descritas para realizar as mesmasfunções de gerenciamento de memória sem se desviar da mesma.Portanto, gerenciamento de memória conforme descrito aquinão deve ser limitado a qualquer modalidade individual, po-rém, mais propriamente deve ser considerado em amplitude e20 escopo de acordo com as reivindicações anexas.
Claims (20)
1. Método para gerenciar memória, o método sendoCARACTERIZADO por compreender:acessar a memória de acordo com uma estrutura dedados de gerenciamento de memória, a estrutura de dados degerenciamento de memória compreendendo informação pertencen-te à memória;atualizar dinamicamente os locais designados damemória com informação relacionada ao status da memória; eatualizar dinamicamente a estrutura de dados degerenciamento de memória com informação relacionada ao sta-tus da memória.
2. Método, de acordo com a reivindicação 1,CARACTERIZADO por compreender ainda:criar a estrutura de dados de gerenciamento de me-mória de acordo com a informação armazenada nos locais de-signados na memória.
3. Método, de acordo com a reivindicação 2,CARACTERIZADO pelo fato de que:a memória compreende memória flash;a estrutura de dados de gerenciamento de memória éarmazenada na memória volátil; ea estrutura de dados de gerenciamento de memória éconstruída cada vez que energia for aplicada à memória volá-til subseqüente a uma falta de energia para a memória volátil.
4. Método, de acordo com a reivindicação 1, a me-mória sendo CARACTERIZADA por compreender uma pluralidade deblocos, cada bloco compreendendo uma pluralidade de páginas,em que os locais designados na memória compreendem:uma primeira página designada em cada bloco, cadaprimeira página designada de cada bloco respectivo sendo in-dicativa de:um status de um bloco respectivo sendo um de, bome ruim; eum bloco respectivo sendo um de, apagado e não a-pagado; euma segunda página designada em cada bloco, cadasegunda página designada de cada bloco respectivo sendo in-dicativa de:uma relação entre um endereço de bloco lógico ecada página de um bloco respectivo;um status de validade de porções de cada página deum bloco respectivo; eum número de seqüência de bloco indicativo de umnúmero de vezes em que os blocos na memória foram apagados.
5. Método, de acordo com a reivindicação 4,CARACTERIZADO por compreender ainda construir a estrutura dedados de gerenciamento de memória, a ação de construir com-preendendo :ler cada primeira página designada em cada bloco;construir a estrutura de dados de gerenciamento dememória de acordo com a informação contida em cada primeirapágina designada lida;ler cada segunda página designada em cada bloco; econstruir a estrutura de dados de gerenciamento dememória de acordo com a informação contida em cada segundapágina designada lida.
6. Método, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que:a segunda página designada é lida antes de se ten-tar ler a segunda página designada; ea primeira página designada é lida apenas se ocor-rer um erro na leitura da segunda página designada.
7. Método, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que a estrutura de dados de ge-renciamento de memória é reconstruída cada vez que energiafor aplicada à memória subseqüente a uma falta de energiapara a memória.
8. Método, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que a estrutura de dados de ge-renciamento de memória é indicativa de uma página ativa damemória, em que uma página ativa é indicativa de uma próximapágina a ser gravada em resposta a um comando de gravação.
9. Método, de acordo com a reivindicação 8,CARACTERIZADO por compreender ainda:a partir da gravação na página ativa, atualizar aestrutura de dados de gerenciamento de memória para ser in-dicativa de uma localização de uma próxima página ativa, emque a próxima página ativa compreende uma página apagadatendo um mais baixo endereço de página em um de:um bloco atualmente sendo acessado; ese o bloco atualmente sendo acessado está cheio,um próximo bloco disponível.
10. Método, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a memória compreende uma plu-ralidade de blocos e cada bloco compreendendo uma pluralida-de de páginas, em que a estrutura de dados de gerenciamentode memória compreende pelo menos um de:uma estrutura de dados indicativa de uma relaçãoentre os endereços de blocos lógicos e os endereços de pági-na da memória e um status de validade das porções de cadapágina de um bloco respectivo;uma estrutura de dados indicativa de blocos apaga-dos disponíveis para gravação;uma estrutura de dados indicativa de um número depáginas válidas em cada bloco;uma estrutura de dados indicativa de uma próximapágina a ser gravada em resposta a um comando de gravação; euma estrutura de dados indicativa de um número deseqüência de blocos indicativo de um número de vezes em queos blocos na memória foram apagados.
11. Aparelho para gerenciar memória, aparelho sen-do CARACTERIZADO por compreender:uma primeira porção de memória para compreenderuma estrutura de dados de gerenciamento de memória para ge-renciar uma segunda porção de memória;a segunda porção de memória compreendendo uma plu-ralidade de blocos, cada bloco compreendendo uma pluralidadede páginas; euma porção controladora para:controlar acesso à segunda porção de memória; econstruir a estrutura de dados de gerenciamento dememória.
12. Aparelho, de acordo com a reivindicação 11,CARACTERIZADO pelo fato de que:a primeira porção de memória compreende memóriavolátil; ea segunda porção de memória compreende memórianão-volátil.
13. Aparelho, de acordo com a reivindicação 11,CARACTERIZADO pelo fato de que a segunda porção de memóriacompreende memória flash.
14. Aparelho, de acordo com a reivindicação 11,CARACTERIZADO pelo fato de que a segunda porção de memóriacompreende:uma primeira página designada em cada bloco, cadaprimeira página designada de cada bloco respectivo sendo in-dicativa de:um status de um bloco respectivo sendo um de bom eruim; eum bloco respectivo sendo um de apagado e não apa-gado; euma segunda página designada em cada bloco, cadasegunda página designada de cada bloco respectiva sendo in-dicativa de:uma associação entre um endereço de blocos lógicose cada página de um bloco respectivo;um status de validade de porções de cada página deum bloco respectivo; eum número de seqüência de blocos indicativo de umnúmero de vezes que um bloco na memória foi apagado.
15. Aparelho, de acordo com a reivindicação 14,CARACTERIZADO pelo fato de que a porção controladora cons-trói a estrutura de dados de gerenciamento de memória naprimeira porção de memória de acordo com a informação conti-da na primeira e segunda página designada cada vez que ener-gia for aplicada à primeira porção de memória subseqüente auma falta de energia para a primeira porção de memória.
16. Aparelho, de acordo com a reivindicação 11,CARACTERIZADO pelo fato de que a estrutura de dados de ge-renciamento de memória compreende pelo menos um de:uma estrutura de dados indicativa de uma relaçãoentre endereços de blocos lógicos e endereços de página dasegunda porção de memória e um status de validade de porçõesde cada página de um bloco respectivo;uma estrutura de dados indicativa de blocos apaga-dos disponíveis para gravação;uma estrutura de dados indicativa de um número depáginas válidas em cada bloco;uma estrutura de dados indicativa de uma próximapágina a ser gravada em resposta a um comando de gravação; euma estrutura de dados indicativa de um número deseqüência de blocos indicativo de um número de vezes que osblocos na memória foram apagados.
17. Meio legível por computador, CARACTERIZADO porter instruções executáveis por computador para realizar asações de:criar uma estrutura de dados de gerenciamento dememória em uma primeira memória de acordo com a informaçãoarmazenada nos locais designados em uma segunda memória, emque a estrutura de dados de gerenciamento de memória é cria-a cada vez que energia for aplicada à primeira memória sub-seqüentemente à falta de energia para a primeira memória; eacessar a segunda memória de acordo com a estrutu-ra de dados de gerenciamento de memória, a estrutura de da-dos de gerenciamento de memória compreendendo informação re-lacionada à segunda memória;atualizar dinamicamente os locais designados dasegunda memória com informação relacionada ao status da se-gunda memória; eatualizar dinamicamente a estrutura de dados de gerenciamento de memória com informação relacionada ao sta-tus da segunda memória.
18. Meio legível por computador, de acordo com areivindicação 17, CARACTERIZADO pelo fato de que a segundamemória compreende uma pluralidade de blocos e cada blococompreende uma pluralidade de páginas, o meio legível porcomputador tendo ainda instruções executáveis por computadorpara:ler uma primeira página designada em cada blocorespectivo, em que uma primeira página é designada de cadabloco respectivo é indicativa de:um status de um bloco respectivo sendo um de bom eruim; eum bloco respectivo sendo um de apagado e não apa-gado;construir a estrutura de dados de gerenciamento dememória de acordo com a informação contida em cada primeirapágina designada lida;ler uma segunda página designada em cada blocorespectivo, em que uma segunda página designada de cada blo-co respectivo é indicativa de:uma relação entre um endereço de bloco lógico ecada página de um bloco respectivo;um status de validade de porções de cada página deum bloco respectivo; eum número de seqüência de blocos indicativo de umnúmero de vezes que os blocos na memória foram apagados; econstruir a estrutura de dados de gerenciamento dememória de acordo com a informação contida em cada segundapágina designada.
19. Meio legível por computador, de acordo com areivindicação 17, CARACTERIZADO pelo fato de que a estruturade dados de gerenciamento de memória é indicativa de uma pá-gina ativa da segunda memória, a página ativa sendo indica-tiva de uma próxima página a ser gravada, em resposta a umcomando de gravação, o meio legível por computador tendo a-inda instruções executáveis por computador para:a partir da gravação da página ativa, atualizar aestrutura de dados de gerenciamento de memória para ser in-dicativa de um local de uma próxima página ativa, em que apróxima página ativa compreende uma página apagada tendo ummais baixo endereço de página em um de:um bloco atualmente sendo acessado; ese o bloco atualmente sendo acessado estiver chei-o, um próximo bloco disponível.
20. Meio legível por computador, de acordo com areivindicação 17, a segunda memória compreendendo uma plura-lidade de blocos e cada bloco compreendendo uma pluralidadede páginas, CARACTERIZADO pelo fato de que a estrutura dedados de gerenciamento de memória compreende pelo menos umde:uma estrutura de dados indicativa de uma relaçãoentre endereços de blocos lógicos e endereços de página dasegunda memória e um status de validade de porções de cadapágina de um bloco respectivo;uma estrutura de dados indicativa de blocos apaga-dos disponíveis para gravação;uma estrutura de dados indicativa de um número depáginas válidas em cada bloco;uma estrutura de dados indicativa de uma próximapágina a ser gravada em resposta a um comando de gravação; euma estrutura de dados indicativa de um número deseqüência de blocos indicativo de um número de vezes que osblocos na memória foram apagados.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/245.919 | 2005-10-07 | ||
US11/245,919 US20070083697A1 (en) | 2005-10-07 | 2005-10-07 | Flash memory management |
PCT/US2006/039192 WO2007044541A1 (en) | 2005-10-07 | 2006-10-06 | Flash memory management |
Publications (1)
Publication Number | Publication Date |
---|---|
BRPI0616926A2 true BRPI0616926A2 (pt) | 2011-07-05 |
Family
ID=37912139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0616926-0A BRPI0616926A2 (pt) | 2005-10-07 | 2006-10-06 | gerenciamento de memória flash |
Country Status (7)
Country | Link |
---|---|
US (1) | US20070083697A1 (pt) |
EP (1) | EP1934752A4 (pt) |
JP (1) | JP2009512022A (pt) |
KR (1) | KR20080063466A (pt) |
CN (1) | CN101283335A (pt) |
BR (1) | BRPI0616926A2 (pt) |
WO (1) | WO2007044541A1 (pt) |
Families Citing this family (142)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
US8266367B2 (en) * | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US8341332B2 (en) * | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US20090193184A1 (en) * | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US20110145489A1 (en) * | 2004-04-05 | 2011-06-16 | Super Talent Electronics, Inc. | Hybrid storage device |
US20110179219A1 (en) * | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US7692682B2 (en) | 2005-04-28 | 2010-04-06 | Apple Inc. | Video encoding in a video conference |
US7558804B1 (en) * | 2005-08-26 | 2009-07-07 | American Megatrends, Inc. | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory |
WO2007058617A1 (en) * | 2005-11-17 | 2007-05-24 | Chee Keng Chang | A controller for non-volatile memories, and methods of operating the memory controller |
FI20060427L (fi) * | 2006-05-03 | 2007-11-04 | Tellabs Oy | Menetelmä ja laitteisto peräkkäistiedoston käsittelemiseksi |
US20070268905A1 (en) * | 2006-05-18 | 2007-11-22 | Sigmatel, Inc. | Non-volatile memory error correction system and method |
US7536500B2 (en) * | 2006-09-29 | 2009-05-19 | Intel Corporation | Header blocks for flash memory writes |
KR100791325B1 (ko) * | 2006-10-27 | 2008-01-03 | 삼성전자주식회사 | 비휘발성 메모리를 관리하는 장치 및 방법 |
WO2008106686A1 (en) * | 2007-03-01 | 2008-09-04 | Douglas Dumitru | Fast block device and methodology |
US8041883B2 (en) * | 2007-05-09 | 2011-10-18 | Stmicroelectronics S.R.L. | Restoring storage devices based on flash memories and related circuit, system, and method |
US7991942B2 (en) | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
US7882301B2 (en) * | 2007-05-09 | 2011-02-01 | Stmicroelectronics S.R.L. | Wear leveling in storage devices based on flash memories and related circuit, system, and method |
DE102007023408A1 (de) * | 2007-05-18 | 2008-11-20 | Mobotix Ag | Verfahren zur Speicherverwaltung |
US8850102B2 (en) * | 2007-08-23 | 2014-09-30 | Nokia Corporation | Flash memory with small data programming capability |
US9141477B2 (en) * | 2007-10-12 | 2015-09-22 | International Business Machines Corporation | Data protection for variable length records by utilizing high performance block storage metadata |
KR101464338B1 (ko) * | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
KR20100133359A (ko) * | 2007-12-24 | 2010-12-21 | 동우 화인켐 주식회사 | 이리듐 착물, 이를 포함하는 유기전기발광소자 |
US8621138B2 (en) * | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US20090198952A1 (en) * | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US8230317B2 (en) * | 2008-04-09 | 2012-07-24 | International Business Machines Corporation | Data protection method for variable length records by utilizing high performance block storage metadata |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8504776B2 (en) * | 2008-08-29 | 2013-08-06 | Infineon Technologies Ag | Device and method for controlling caches |
US8732388B2 (en) | 2008-09-16 | 2014-05-20 | Micron Technology, Inc. | Embedded mapping information for memory devices |
CN101676882B (zh) * | 2008-09-16 | 2013-01-16 | 美光科技公司 | 存储器装置的内嵌映射信息 |
US7962801B2 (en) * | 2008-10-15 | 2011-06-14 | Silicon Motion, Inc. | Link table recovery method |
US8285970B2 (en) * | 2008-11-06 | 2012-10-09 | Silicon Motion Inc. | Method for managing a memory apparatus, and associated memory apparatus thereof |
CN101710237B (zh) * | 2008-12-30 | 2012-10-24 | 深圳市江波龙电子有限公司 | 以闪存为存储介质的设备生产流程 |
US8190832B2 (en) * | 2009-01-29 | 2012-05-29 | International Business Machines Corporation | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata |
CN101510445B (zh) * | 2009-03-19 | 2012-11-21 | 无锡中星微电子有限公司 | 存储器坏块表的保存方法以及装置 |
TWI433157B (zh) * | 2009-09-04 | 2014-04-01 | Silicon Motion Inc | 存取快閃記憶體的方法以及相關之記憶裝置 |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
TWI421870B (zh) * | 2009-10-30 | 2014-01-01 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
US9021185B2 (en) * | 2009-11-23 | 2015-04-28 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
JP2011154547A (ja) * | 2010-01-27 | 2011-08-11 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
US8726126B2 (en) * | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US8892981B2 (en) | 2010-09-30 | 2014-11-18 | Apple Inc. | Data recovery using outer codewords stored in volatile memory |
WO2012048118A2 (en) | 2010-10-06 | 2012-04-12 | Blackbird Technology Holdings, Inc. | Method and apparatus for adaptive searching of distributed datasets |
US9042353B2 (en) | 2010-10-06 | 2015-05-26 | Blackbird Technology Holdings, Inc. | Method and apparatus for low-power, long-range networking |
US9104548B2 (en) * | 2011-01-21 | 2015-08-11 | Blackbird Technology Holdings, Inc. | Method and apparatus for memory management |
US8954647B2 (en) | 2011-01-28 | 2015-02-10 | Apple Inc. | Systems and methods for redundantly storing metadata for non-volatile memory |
US9497715B2 (en) | 2011-03-02 | 2016-11-15 | Blackbird Technology Holdings, Inc. | Method and apparatus for addressing in a resource-constrained network |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8806112B2 (en) * | 2011-07-14 | 2014-08-12 | Lsi Corporation | Meta data handling within a flash media controller |
US8929961B2 (en) | 2011-07-15 | 2015-01-06 | Blackbird Technology Holdings, Inc. | Protective case for adding wireless functionality to a handheld electronic device |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US20130275692A1 (en) * | 2012-04-16 | 2013-10-17 | Shak Loong Kwok | Storage device and methods thereof |
CN102722442A (zh) * | 2012-06-13 | 2012-10-10 | 禹芙蓉 | 一种宏状态自动分析方法及其装置 |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
JP2014191372A (ja) * | 2013-03-26 | 2014-10-06 | Mega Chips Corp | 不揮発性記憶システム、不揮発性記憶装置、メモリコントローラ、および、プログラム |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9317421B2 (en) * | 2013-09-27 | 2016-04-19 | Intel Corporation | Memory management |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
CN104679661B (zh) * | 2013-11-27 | 2019-12-10 | 阿里巴巴集团控股有限公司 | 混合存储的控制方法及混合存储系统 |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
TWI514401B (zh) * | 2014-03-11 | 2015-12-21 | Winbond Electronics Corp | 串列反及式快閃記憶體及其內建可變式壞區的管理方法 |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
JP5950286B2 (ja) | 2014-05-29 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | アドレス変換テーブルを書き込む装置及び方法 |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9996297B2 (en) * | 2014-11-14 | 2018-06-12 | SK Hynix Inc. | Hot-cold data separation method in flash translation layer |
CN106776362B (zh) * | 2015-11-24 | 2019-12-03 | 中芯国际集成电路制造(上海)有限公司 | 存储器的控制方法及装置 |
US10203888B2 (en) * | 2015-12-18 | 2019-02-12 | Intel Corporation | Technologies for performing a data copy operation on a data storage device with a power-fail-safe data structure |
KR102299682B1 (ko) | 2017-09-13 | 2021-09-09 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치 및 저장 장치의 동작 방법 |
US10620870B2 (en) | 2017-12-08 | 2020-04-14 | Intel Corporation | Data storage device with bytewise copy |
US10936199B2 (en) | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
US11216349B2 (en) * | 2018-10-12 | 2022-01-04 | Micron Technology, Inc. | Reactive read based on metrics to screen defect prone memory blocks |
CN110471620B (zh) * | 2019-07-09 | 2022-11-22 | 深圳市德明利技术股份有限公司 | 一种闪存的数据引导方法和装置以及设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5295101A (en) * | 1992-01-31 | 1994-03-15 | Texas Instruments Incorporated | Array block level redundancy with steering logic |
US5341339A (en) * | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for wear leveling in a flash EEPROM memory |
JP2856621B2 (ja) * | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
KR970008188B1 (ko) * | 1993-04-08 | 1997-05-21 | 가부시끼가이샤 히다찌세이사꾸쇼 | 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 |
US5845313A (en) * | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US5930815A (en) * | 1995-07-31 | 1999-07-27 | Lexar Media, Inc. | Moving sequential sectors within a block of information in a flash memory mass storage architecture |
US5758056A (en) * | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
US5835430A (en) * | 1997-07-25 | 1998-11-10 | Rockwell International Corporation | Method of providing redundancy in electrically alterable memories |
GB9903490D0 (en) * | 1999-02-17 | 1999-04-07 | Memory Corp Plc | Memory system |
US20020019814A1 (en) * | 2001-03-01 | 2002-02-14 | Krishnamurthy Ganesan | Specifying rights in a digital rights license according to events |
US7103574B1 (en) * | 1999-03-27 | 2006-09-05 | Microsoft Corporation | Enforcement architecture and method for digital rights management |
US6297988B1 (en) * | 2000-02-25 | 2001-10-02 | Advanced Micro Devices, Inc. | Mode indicator for multi-level memory |
DE60009031D1 (de) * | 2000-03-28 | 2004-04-22 | St Microelectronics Srl | Verfahren zur logischen Aufteilung einer nichtflüchtigen Speichermatrix |
US6772274B1 (en) * | 2000-09-13 | 2004-08-03 | Lexar Media, Inc. | Flash memory system and method implementing LBA to PBA correlation within flash memory array |
JP3692313B2 (ja) * | 2001-06-28 | 2005-09-07 | 松下電器産業株式会社 | 不揮発性メモリの制御方法 |
GB0123415D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
US6977847B2 (en) * | 2001-11-23 | 2005-12-20 | M-Systems Flash Disk Pioneers Ltd. | Detecting partially erased units in flash devices |
US7496540B2 (en) * | 2002-03-27 | 2009-02-24 | Convergys Cmg Utah | System and method for securing digital content |
US7366915B2 (en) * | 2002-04-30 | 2008-04-29 | Microsoft Corporation | Digital license with referral information |
KR100457812B1 (ko) * | 2002-11-14 | 2004-11-18 | 삼성전자주식회사 | 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 |
WO2005033892A2 (en) * | 2003-10-03 | 2005-04-14 | Sony Electronics, Inc. | Rendering rights delegation system and method |
KR20060089486A (ko) * | 2005-02-04 | 2006-08-09 | 엘지전자 주식회사 | 플래시 파일 시스템의 오류 복구 방법 |
-
2005
- 2005-10-07 US US11/245,919 patent/US20070083697A1/en not_active Abandoned
-
2006
- 2006-10-06 EP EP06825577A patent/EP1934752A4/en not_active Withdrawn
- 2006-10-06 KR KR1020087007944A patent/KR20080063466A/ko not_active Application Discontinuation
- 2006-10-06 WO PCT/US2006/039192 patent/WO2007044541A1/en active Application Filing
- 2006-10-06 CN CNA2006800373316A patent/CN101283335A/zh active Pending
- 2006-10-06 BR BRPI0616926-0A patent/BRPI0616926A2/pt not_active Application Discontinuation
- 2006-10-06 JP JP2008534724A patent/JP2009512022A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1934752A4 (en) | 2009-04-08 |
EP1934752A1 (en) | 2008-06-25 |
WO2007044541A1 (en) | 2007-04-19 |
CN101283335A (zh) | 2008-10-08 |
KR20080063466A (ko) | 2008-07-04 |
US20070083697A1 (en) | 2007-04-12 |
JP2009512022A (ja) | 2009-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BRPI0616926A2 (pt) | gerenciamento de memória flash | |
US11301373B2 (en) | Reconstruction of address mapping in a host of a storage system | |
US8812816B2 (en) | Garbage collection schemes for index block | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US9552290B2 (en) | Partial R-block recycling | |
US12093140B2 (en) | Data recovery method, apparatus, and solid state drive | |
TWI625626B (zh) | 管理記憶體裝置中記憶體單元的實體資訊的方法及系統 | |
US20020085433A1 (en) | Data management system and data management method | |
KR20120134144A (ko) | 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 | |
TWI277980B (en) | Memory card, semiconductor device, and method of controlling semiconductor memory | |
CN107710169A (zh) | 一种闪存设备的访问方法和装置 | |
JP2014038593A (ja) | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 | |
JPWO2007119267A1 (ja) | フラッシュメモリ用のメモリコントローラ | |
US11568074B2 (en) | Memory system | |
US8392691B2 (en) | Data management method, memory controller and memory storage apparatus | |
TWI237759B (en) | Method for data accessing in a computer and the computer thereof | |
TW201403319A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
TWI493341B (zh) | 記憶體儲存裝置及其修復方法 | |
TWI714830B (zh) | 目錄資料的管理方法與記憶體裝置 | |
TWI467364B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
TWI783522B (zh) | 資料重建方法、記憶體儲存裝置及記憶體控制電路單元 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
Xiao et al. | Per-file secure deletion for flash-based solid state drives | |
TWI813362B (zh) | 部分抹除管理方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI826161B (zh) | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
B11Y | Definitive dismissal - extension of time limit for request of examination expired [chapter 11.1.1 patent gazette] |