Τι είναι το Nand Flash και το Bad block;

Oct 25, 2022

1 NAND FLASH

1.1 Εισαγωγή της μνήμης NAND FLASH

Μνήμη NAND FLASH, μνήμη flash κινέζικου ονόματος. Πήρε το όνομά του λόγω της γρήγορης ταχύτητας διαγραφής του.

Το NAND FLASH επινοήθηκε από τον κ. Fujio Masuoka του Ομίλου Toshiba της Ιαπωνίας. Διαφορετικά από άλλες συσκευές αποθήκευσης, οι γραμμές δεδομένων NAND FLASH και οι γραμμές διευθύνσεων πολυπλέκονται και οι γραμμές διευθύνσεων δεν μπορούν να χρησιμοποιηθούν για τυχαία διευθυνσιοδότηση. Επομένως, το NAND FLASH χρησιμοποιεί σελίδες σελίδας ως μονάδα ανάγνωσης (γενικά μια μεμονωμένη σελίδα είναι 2K Byte) και μπλοκ ως μονάδα διαγραφής. (Γενικά ένα μεμονωμένο μπλοκ είναι 128KB ή 256KB). Μετά την αποστολή μιας εντολής διαγραφής, το NAND FLASH διαγράφει όλα τα μπλοκ σε 1 κάθε φορά και όλα τα περιεχόμενα μέσα γίνονται 0xFF. Επειδή ο χρόνος διαγραφής είναι πολύ μικρός, είναι τόσο γρήγορος όσο ο κεραυνός. Έτσι ονομάζουμε αυτή τη μνήμη FLASH Memory.


1.2 Μηχανισμός Εφαρμογής Υλικού του NAND FLASH

Η βασική μονάδα του NAND FLASH είναι ένα MOSFET με πλωτή πύλη.

Τα δεδομένα αποθηκεύονται με τη μορφή ηλεκτρικού φορτίου σε κελιά μνήμης Flash. Η ποσότητα της αποθηκευμένης φόρτισης εξαρτάται από την τάση που εφαρμόζεται στην εξωτερική πύλη. Η αναπαράσταση των δεδομένων αντιπροσωπεύεται από το εάν η τάση της αποθηκευμένης φόρτισης υπερβαίνει ένα συγκεκριμένο όριο Vth, και εάν η αποθηκευμένη φόρτιση είναι αρκετή και υπερβαίνει το όριο Vth, αντιπροσωπεύει το 1. Για την εγγραφή 0, πρέπει να εκφορτιστεί και η χρέωση μειώνεται σε λιγότερο από Vth, που σημαίνει 0.


2 Κακό Μπλοκ

2.1 Ορισμός του Bad block

Δεδομένου ότι η διαδικασία του NAND Flash δεν μπορεί να εγγυηθεί την αξιοπιστία της απόδοσης του NAND Memory Array κατά τη διάρκεια του κύκλου ζωής του, θα προκύψουν κακά μπλοκ κατά την παραγωγή και τη χρήση του NAND. Τα χαρακτηριστικά των κακών μπλοκ είναι: κατά τον προγραμματισμό/διαγραφή αυτού του μπλοκ, ορισμένα bit δεν μπορούν να τραβήξουν ψηλά, γεγονός που θα προκαλέσει σφάλματα στις λειτουργίες Προγράμματος σελίδας και Διαγραφή αποκλεισμού.


2.2 Ταξινόμηση κακών μπλοκ: εργοστασιακό κακό μπλοκ FBB & χρησιμοποιημένο κακό μπλοκ GBB

(1) FBB: Factory Bad Block, το εργοστασιακό κακό μπλοκ, το bad block που μόλις έφυγε από το εργοστάσιο, ονομάζεται Masked bad block ή αρχικό bad/invalid block. Όταν το NAND Flash εγκαταλείψει το εργοστάσιο, θα υπάρξει ένα ορισμένο ποσό κακών μπλοκ λόγω της διαδικασίας κατασκευής. Ταυτόχρονα, το αρχικό εργοστάσιο θα δοκιμάσει το NAND FLASH πριν φύγει από το εργοστάσιο και τα μπλοκ που χρησιμοποιούνται για τη δοκιμή μπορεί επίσης να επισημανθούν ως κακά μπλοκ από το αρχικό εργοστάσιο.

Πριν φύγετε από το εργοστάσιο, το αρχικό εργοστάσιο θα σημειώσει τα κακά μπλοκ. Το συγκεκριμένο σημάδι είναι ότι για το κοινό NAND Flash με μέγεθος σελίδας 2K, για το NAND flash, το σημάδι κακού μπλοκ βρίσκεται γενικά στην πρώτη σελίδα κάθε μπλοκ. Το πρώτο byte της εφεδρικής περιοχής σελίδας. Συγκεκριμένα, μπορείτε να ρωτήσετε το φύλλο δεδομένων διαφορετικών προϊόντων. Εάν δεν είναι 0xFF, σημαίνει ότι είναι κακό μπλοκ. Αντίστοιχα, όλα τα κανονικά μπλοκ, τα καλά μπλοκ και όλα τα δεδομένα σε αυτά είναι 0xFF.

(2) GBB: Grown Bad Block, χρησιμοποιώντας bad block. Κατά τη χρήση του NAND Flash, επειδή η διάρκεια διαγραφής και εγγραφής του NAND Flash είναι περιορισμένη (γενικά όχι περισσότερο από 100,000 φορές), θα προκύψουν επίσης εσφαλμένα μπλοκ μετά από μια συγκεκριμένη περίοδο χρήσης . Εάν εντοπιστεί σφάλμα Διαγραφής Αποκλεισμού ή Προγράμματος Σελίδας, το μπλοκ μπορεί να επισημανθεί ως κακό μπλοκ. Προκειμένου να είναι συνεπής με τις εγγενείς πληροφορίες κακής μπλοκ, το πρώτο byte (byte) της εφεδρικής περιοχής θα επισημαίνεται επίσης με άλλες τιμές εκτός από 0xFF.


2.3 Τραπέζι κακού μπλοκ:

Το πρώτο μπλοκ ενός φλας πρέπει να είναι καλό όταν βγαίνει από το εργοστάσιο, διαφορετικά σημαίνει ότι δεν μπορεί να χρησιμοποιηθεί ολόκληρο το φλας. Επειδή γενικά το πρώτο μπλοκ θα χρησιμοποιηθεί για την αποθήκευση του πίνακα κακών μπλοκ (BBT, Bad Block Table). Λόγω του μηχανισμού λειτουργίας της κακής διαχείρισης μπλοκ (Bad Block Management) στο πρόγραμμα οδήγησης NAND Flash υπό την αρχιτεκτονική του πυρήνα Linux MTD και του προγράμματος οδήγησης NAND Flash του UBOOT, μετά τη φόρτωση του προγράμματος οδήγησης, εάν δεν προσθέσετε παραμέτρους, ζητάτε ενεργά να παραλείψετε η σάρωση του κακού μπλοκ. Εάν ναι, θα σαρώσει ενεργά για κακά μπλοκ και θα δημιουργήσει το απαραίτητο BBT για μετέπειτα διαχείριση κακών μπλοκ.


2.4 Αριθμός και θέση κακών μπλοκ

Το αρχικό εργοστάσιο NAND FLASH θα έχει ένα πρότυπο για τον αριθμό και τη θέση των κακών μπλοκ. Το αρχικό εργοστάσιο υπόσχεται γενικά ότι ο αριθμός των κακών μπλοκ δεν υπερβαίνει το 2 τοις εκατό, αλλά η θέση των κακών μπλοκ δεν είναι εγγυημένη (αλλά το πρώτο μπλοκ πρέπει να είναι καλό όταν φύγει από το εργοστάσιο. , επειδή το πρώτο θα χρησιμοποιηθεί για κατάστημα BTT). Για παράδειγμα, ένα τσιπ NAND έχει 2048 μπλοκ, 2048*0.02=40.96, επομένως ο αριθμός των κακών μπλοκ δεν θα υπερβαίνει τα 40. Αλλά όπου εμφανίζονται τα κακά μπλοκ, αν είναι συνεχή ή τυχαία, δεν υπάρχει εγγύηση.


2.5 Η επίδραση των κακών μπλοκ στα καλά μπλοκ

Ένα κακό μπλοκ δεν επηρεάζει την απόδοση των καλών μπλοκ επειδή απομονώνεται από τις γραμμές bit με επιλεγμένες πύλες)


2.6 Ανίχνευση κακών μπλοκ

Εκτελείται μια λειτουργία "διαγραφής" σε αυτά τα μπλοκ που επισημαίνονται ως "κακά μπλοκ". Εάν παρουσιαστεί το σφάλμα διαγραφής αποκλεισμού, αποδεικνύει ότι το μπλοκ είναι ένα πραγματικό κακό μπλοκ.


2.7 Σημειώσεις σχετικά με τη λειτουργία διαγραφής

Στην πραγματικότητα, μπορούμε επίσης να σβήσουμε επισημασμένα κακά μπλοκ. Μετά τη βίαιη διαγραφή με αυτόν τον τρόπο, οι πληροφορίες για το κακό μπλοκ δεν υπάρχουν πλέον. Για εργοστασιακά ακατάλληλα μπλοκ, γενικά δεν συνιστάται η διαγραφή των σημειωμένων πληροφοριών.

Υπάρχει μια εντολή στο UBOOT που ονομάζεται "nand scrub", η οποία σβήνει όλο το περιεχόμενο στο μπλοκ, συμπεριλαμβανομένου του σήματος κακού μπλοκ, είτε πρόκειται για το εργοστάσιο είτε για το νέο σήμα που εμφανίζεται στη διαδικασία μεταγενέστερης χρήσης. Γενικά δεν συνιστάται η χρήση αυτού. Όταν παράγεται το εργοστάσιο NAND FLASH, τα κακά μπλοκ NAND δοκιμάζονται και επισημαίνονται σε ένα σχετικά μεγάλο εύρος θερμοκρασίας και τάσης. Αυτά τα κακά μπλοκ μπορούν ακόμα να λειτουργήσουν κάτω από μια συγκεκριμένη θερμοκρασία ή τάση, αλλά μπορεί να αλλάξουν κάποια άλλη στιγμή όταν αλλάξουν οι συνθήκες. αποτυχία, μετατρέποντας σε μια πιθανή ωρολογιακή βόμβα. Εάν τα ακατάλληλα μπλοκ που επισημαίνονται από το αρχικό εργοστάσιο διαγράφονται, είναι εύκολο να αντιμετωπίσετε το πρόβλημα της απώλειας δεδομένων κατά την εγγραφή και την αποθήκευση δεδομένων.

Είναι καλύτερο να χρησιμοποιήσετε το "nand erase" για να διαγράψετε μόνο καλά μπλοκ, για μπλοκ που έχουν ήδη επισημανθεί ως κακά μπλοκ, μην διαγράψετε.


3 Κακή διαχείριση μπλοκ

Ο ελεγκτής του Device ή του FLASH θα διαχειρίζεται κακά μπλοκ, που είναι το BBM (Bad Block Management). Θα το προσθέσουμε αργότερα.


Παρατήρηση

1 Γιατί ένα καλό μπλοκ επισημαίνεται με 0xff: επειδή η διαγραφή του Nand Flash είναι να αλλάξει όλα τα bit του αντίστοιχου μπλοκ σε 1, κατά τη λειτουργία εγγραφής, κάθε bit του τσιπ μπορεί να αλλάξει μόνο από 1 προς 0, αλλά όχι. Αλλάξτε από 0 σε 1. 0XFF σημαίνει ότι όλα μπορούν να διαγραφούν σε 11111111. Υποδηλώνει ότι μπορεί να διαγραφεί με επιτυχία και είναι ένα καλό μπλοκ.

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

Δήλωση πνευματικών δικαιωμάτων: Αυτό το άρθρο είναι ένα πρωτότυπο άρθρο του blogger του CSDN "Alexander{{0}}Lai" και ακολουθεί τη συμφωνία πνευματικών δικαιωμάτων CC 4.0 BY-SA. Επισυνάψτε τον σύνδεσμο της αρχικής πηγής και αυτήν τη δήλωση για επανεκτύπωση.