Qu'est-ce que Nand Flash et Bad block ?

Oct 25, 2022

1 FLASH NAND

1.1 Présentation de la mémoire FLASH NAND

Mémoire FLASH NAND, mémoire flash de nom chinois. Il tire son nom de sa vitesse d'effacement rapide.

NAND FLASH a été inventé par M. Fujio Masuoka du groupe japonais Toshiba. Contrairement aux autres périphériques de stockage, les lignes de données et les lignes d'adresse NAND FLASH sont multiplexées et les lignes d'adresse ne peuvent pas être utilisées pour un adressage aléatoire. Par conséquent, NAND FLASH utilise des pages de page comme unité de lecture (généralement une seule page est de 2K octets) et des blocs comme unité d'effacement. (Généralement, un seul bloc fait 128 Ko ou 256 Ko). Après avoir envoyé une commande d'effacement, NAND FLASH efface tous les blocs à 1 à la fois, et tout le contenu à l'intérieur devient 0xFF. Parce que le temps d'effacement est très court, il est aussi rapide que l'éclair. Nous appelons donc cette mémoire Mémoire FLASH.


1.2 Mécanisme de mise en œuvre matérielle de NAND FLASH

L'unité de base de NAND FLASH est un MOSFET à grille flottante.

Les données sont stockées sous forme de charge électrique dans des cellules de mémoire Flash. La quantité de charge stockée dépend de la tension appliquée à la grille externe. La représentation des données est représentée par le fait que la tension de la charge stockée dépasse un certain seuil Vth, et si la charge stockée est suffisante et dépasse le seuil Vth, elle représente 1. Pour écrire 0, c'est se décharger il, et la charge est réduite à moins de Vth, ce qui signifie 0.


2 mauvais bloc

2.1 Définition du bloc défectueux

Étant donné que le processus de NAND Flash ne peut garantir la fiabilité des performances de la matrice de mémoire NAND pendant son cycle de vie, des blocs défectueux se produiront pendant la production et l'utilisation de NAND. Les caractéristiques des blocs défectueux sont les suivantes : lors de la programmation/effacement de ce bloc, certains bits ne peuvent pas être mis à l'état haut, ce qui entraînera des erreurs dans les opérations de programmation de page et d'effacement de bloc.


2.2 Classification des blocs défectueux : bloc défectueux d'usine FBB et bloc défectueux utilisé GBB

(1) FBB : Factory Bad Block, le bloc défectueux d'usine, le bloc défectueux qui vient de quitter l'usine, est appelé bloc défectueux masqué ou bloc initial défectueux/invalide. Lorsque NAND Flash quitte l'usine, il y aura un certain nombre de blocs défectueux en raison du processus de fabrication. Dans le même temps, l'usine d'origine testera la NAND FLASH avant de quitter l'usine, et les blocs utilisés pour le test peuvent également être marqués comme blocs défectueux par l'usine d'origine.

Avant de quitter l'usine, l'usine d'origine marquera les blocs défectueux. La marque spécifique est que pour le flash NAND commun avec une taille de page de 2K, pour le flash NAND, la marque de bloc défectueux est généralement située sur la première page de chaque bloc. Le premier octet de la zone de réserve de page. Plus précisément, vous pouvez interroger la fiche technique de différents produits. Si ce n'est pas 0xFF, cela signifie qu'il s'agit d'un bloc défectueux. De même, tous les blocs normaux, les bons blocs et toutes les données qu'ils contiennent sont 0xFF.

(2) GBB : Grown Bad Block, utilisant des blocs défectueux. Pendant l'utilisation de NAND Flash, étant donné que la durée de vie d'effacement et d'écriture de NAND Flash est limitée (généralement pas plus de 100,000 fois), des blocs défectueux se produiront également après une certaine période d'utilisation . Si une erreur d'effacement de bloc ou de programme de page est détectée, le bloc peut être marqué comme bloc défectueux. Afin d'être cohérent avec les informations de bloc défectueux inhérentes, le premier octet (octet) de la zone de réserve sera également marqué avec d'autres valeurs autres que 0xFF.


2.3 Tableau des blocs défectueux:

Le premier bloc d'un flash doit être bon à sa sortie d'usine, sinon cela signifie que tout le flash ne peut pas être utilisé. Car généralement le premier bloc servira à sauvegarder la table des mauvais blocs (BBT, Bad Block Table). En raison du mécanisme de fonctionnement de la mauvaise gestion des blocs (Bad Block Management) dans le pilote Flash NAND sous l'architecture MTD du noyau Linux et le pilote Flash NAND de UBOOT, après le chargement du pilote, si vous n'ajoutez pas de paramètres, vous demandez activement à ignorer l'analyse des blocs défectueux. Si tel est le cas, il recherchera activement les blocs défectueux et établira le BBT nécessaire pour une gestion ultérieure des blocs défectueux.


2.4 Nombre et emplacement des blocs défectueux

L'usine NAND FLASH d'origine aura une norme pour le nombre et l'emplacement des blocs défectueux. L'usine d'origine promet généralement que le nombre de blocs défectueux ne dépasse pas 2%, mais l'emplacement des blocs défectueux n'est pas garanti (mais le premier bloc doit être bon lorsqu'il quitte l'usine. , car le premier servira à magasin BTT). Par exemple, une puce NAND a 2048 blocs, 2048*0.02=40.96, donc le nombre de mauvais blocs ne dépassera pas 40. Mais où les mauvais blocs apparaissent, s'ils sont continus ou aléatoire, il n'y a aucune garantie.


2.5 L'impact des mauvais blocs sur les bons blocs

Un mauvais bloc n'affecte pas les performances des bons blocs car il est isolé des lignes de bit par des portes de sélection)


2.6 Détection des blocs défectueux

Une opération "d'effacement" est effectuée sur ces blocs marqués comme "blocs défectueux". Si l'erreur d'effacement de bloc se produit, cela prouve que le bloc est un vrai mauvais bloc.


2.7 Remarques sur l'opération d'effacement

En fait, nous pouvons également effacer les blocs défectueux marqués. Après avoir été effacées de force de cette manière, les informations de bloc erronées n'existent plus. Pour les blocs défectueux en usine, il n'est généralement pas recommandé d'effacer les informations marquées.

Il existe une commande dans UBOOT appelée "nand scrub", qui efface tout le contenu du bloc, y compris la mauvaise marque de bloc, qu'il s'agisse de l'usine ou de la nouvelle marque qui apparaît dans le processus d'utilisation ultérieur. Il n'est généralement pas recommandé de l'utiliser. Lorsque l'usine NAND FLASH est produite, les blocs défectueux NAND sont testés et marqués dans une plage de température et de tension relativement large. Ces blocs défectueux peuvent toujours fonctionner sous une certaine température ou tension, mais peuvent être changés à un autre moment lorsque les conditions changent. échec, devenant une bombe à retardement potentielle. Si les blocs défectueux marqués par l'usine d'origine sont effacés, il est facile de rencontrer le problème de la perte de données lors de l'écriture et de la sauvegarde des données.

Il est préférable d'utiliser "nand erase" pour n'effacer que les bons blocs, pour les blocs déjà marqués de mauvais blocs, ne pas effacer.


3 Mauvaise gestion des blocs

Le contrôleur de Device ou FLASH gérera les blocs défectueux, c'est-à-dire BBM (Bad Block Management). Nous ajouterons ceci plus tard.


Remarque

1 Pourquoi un bon bloc est-il marqué avec 0xff : parce que l'effacement de Nand Flash consiste à changer tous les bits du bloc correspondant à 1, lors de l'opération d'écriture, chaque bit de la puce ne peut être changé que de 1 à 0, mais pas. Passez de 0 à 1. 0XFF signifie que tout peut être effacé en 11111111. Cela indique qu'il peut être effacé avec succès et que c'est un bon bloc.

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

Déclaration de droit d'auteur : cet article est un article original du blogueur CSDN "Alexander{{0}}Lai" et suit l'accord de droit d'auteur CC 4.0 BY-SA. Veuillez joindre le lien source original et cette déclaration pour réimpression.