O que é Nand Flash e bloco ruim?

Oct 25, 2022

1 NAND FLASH

1.1 Introdução da Memória NAND FLASH

Memória NAND FLASH, memória flash de nome chinês. Ele recebe esse nome por causa de sua velocidade de apagamento rápido.

O NAND FLASH foi inventado pelo Sr. Fujio Masuoka do Grupo Toshiba do Japão. Diferente de outros dispositivos de armazenamento, as linhas de dados NAND FLASH e as linhas de endereço são multiplexadas e as linhas de endereço não podem ser usadas para endereçamento aleatório. Portanto, o NAND FLASH usa páginas de página como unidade de leitura (geralmente uma única página tem 2K Bytes) e blocos como unidade de apagamento. (Geralmente um único bloco tem 128 KB ou 256 KB). Após enviar um comando de apagamento, o NAND FLASH apaga todos os blocos para 1 de cada vez, e todo o conteúdo dentro dele se torna 0xFF. Como o tempo de apagamento é muito curto, é tão rápido quanto um raio. Então, chamamos essa memória de Memória FLASH.


1.2 Mecanismo de Implementação de Hardware do NAND FLASH

A unidade básica do NAND FLASH é um MOSFET com porta flutuante.

Os dados são armazenados na forma de carga elétrica em células de memória Flash. A quantidade de carga armazenada depende da tensão aplicada ao portão externo. A representação dos dados é representada pelo fato de a tensão da carga armazenada exceder um determinado limite Vth, e se a carga armazenada for suficiente e ultrapassar o limite Vth, representa 1. Para escrever 0, é descarregar e a cobrança é reduzida para menos de Vth, o que significa 0.


2 Bloco ruim

2.1 Definição de bloco ruim

Como o processo de NAND Flash não pode garantir a confiabilidade do desempenho do NAND Memory Array durante seu ciclo de vida, blocos defeituosos ocorrerão durante a produção e uso de NAND. As características dos blocos defeituosos são: ao programar/apagar este bloco, alguns bits não podem ser puxados para cima, o que causará erros nas operações de Programação de Página e Apagamento de Bloco.


2.2 Classificação de blocos ruins: bloco ruim de fábrica FBB e bloco ruim usado GBB

(1) FBB: Factory Bad Block, o bloco ruim de fábrica, o bloco ruim que acabou de sair da fábrica, é chamado de bloco ruim mascarado ou bloco ruim/inválido inicial. Quando o NAND Flash sair da fábrica, haverá uma certa quantidade de blocos defeituosos devido ao processo de fabricação. Ao mesmo tempo, a fábrica original testará o NAND FLASH antes de sair da fábrica, e os blocos usados ​​para o teste também podem ser marcados como blocos ruins pela fábrica original.

Antes de sair da fábrica, a fábrica original marcará os blocos defeituosos. A marca específica é que, para o Flash NAND comum com um tamanho de página de 2K, para o flash NAND, a marca de bloco ruim geralmente está localizada na primeira página de cada bloco. O primeiro byte da área sobressalente da página. Especificamente, você pode consultar a folha de dados de diferentes produtos. Se não for 0xFF, significa que é um bloco inválido. Da mesma forma, todos os blocos normais, blocos bons e todos os dados neles contidos são 0xFF.

(2) GBB: Grown Bad Block, usando bad blocks. Durante o uso do NAND Flash, como a vida útil de apagamento e gravação do NAND Flash é limitada (geralmente não mais de 100,000 vezes), bloqueios inválidos também ocorrerão após um determinado período de uso . Se for encontrado um erro de apagamento de bloco ou programa de página, o bloco pode ser marcado como um bloco inválido. Para ser consistente com as informações inerentes do bloco defeituoso, o primeiro byte (byte) da área sobressalente também será marcado com outros valores diferentes de 0xFF.


2.3 Tabela de blocos ruins:

O primeiro bloco de um flash deve estar bom quando sai de fábrica, caso contrário significa que o flash inteiro não pode ser usado. Porque geralmente o primeiro bloco será usado para salvar a tabela de blocos ruins (BBT, Bad Block Table). Devido ao mecanismo de trabalho de gerenciamento de bloco ruim (Bad Block Management) no driver NAND Flash sob a arquitetura MTD do kernel Linux e o driver NAND Flash do UBOOT, após carregar o driver, se você não adicionar parâmetros, você solicita ativamente para pular a varredura de bloco ruim. Nesse caso, ele verificará ativamente blocos defeituosos e estabelecerá o BBT necessário para gerenciamento posterior de blocos defeituosos.


2.4 Número e localização de bad blocks

A fábrica NAND FLASH original terá um padrão para o número e localização dos blocos defeituosos. A fábrica original geralmente promete que o número de blocos defeituosos não excede 2 por cento , mas a localização dos blocos defeituosos não é garantida (mas o primeiro bloco deve estar bom quando sair da fábrica. , pois o primeiro será usado para loja BTT). Por exemplo, um chip NAND tem 2048 blocos, 2048*0.02=40.96, portanto, o número de blocos defeituosos não excederá 40. Mas onde os blocos defeituosos aparecem, se são contínuos ou aleatório, não há garantia.


2.5 The impact of bad blocks on good blocks

Um bloco ruim não afeta o desempenho de blocos bons porque é isolado das linhas de bits por portas selecionadas)


2.6 Detecção de blocos defeituosos

Uma operação de "apagar" é executada nesses blocos marcados como "blocos ruins". Se ocorrer o erro Block Erase, isso prova que o bloco é realmente um bloco ruim.


2.7 Notas sobre a operação de apagamento

Na verdade, também podemos apagar blocos defeituosos marcados. Depois de apagado à força dessa maneira, as informações do bloco defeituoso não existem mais. Para blocos defeituosos de fábrica, geralmente não é recomendado apagar as informações marcadas.

Existe um comando no UBOOT chamado "nand scrub", que apaga todo o conteúdo do bloco, inclusive a marca de bloco ruim, seja ela de fábrica ou a nova marca que aparece no processo de uso posterior. Geralmente não é recomendado usar isso. Quando a fábrica NAND FLASH é produzida, os bad blocks NAND são testados e marcados em uma faixa de temperatura e tensão relativamente ampla. Esses blocos defeituosos ainda podem funcionar sob uma determinada temperatura ou tensão, mas podem ser alterados em outro momento, quando as condições mudarem. falha, tornando-se uma potencial bomba-relógio. Se os blocos defeituosos marcados pela fábrica original forem apagados, é fácil encontrar o problema de perda de dados ao gravar e salvar dados.

É melhor usar "nand erase" para apagar apenas blocos bons, para blocos já marcados como blocos ruins, não apague.


3 Gerenciamento de bloco ruim

O controlador do dispositivo ou FLASH irá gerenciar blocos defeituosos, que é o BBM (Bad Block Management). Nós adicionaremos isso mais tarde.


Observação

1 Por que um bom bloco é marcado com 0xff: como o apagamento do Nand Flash é para mudar todos os bits do bloco correspondente para 1, durante a operação de escrita, cada bit do chip só pode ser alterado de 1 para 0, mas não. Mude de 0 para 1. 0XFF significa que tudo pode ser apagado para 11111111. Indica que pode ser apagado com sucesso e é um bom bloco.

———————————————

Declaração de direitos autorais: este artigo é um artigo original do blogueiro CSDN "Alexander{{0}}Lai" e segue o contrato de direitos autorais CC 4.0 BY-SA. Anexe o link da fonte original e esta declaração para reimpressão.