מה זה Nand Flash ו-Bad block?
Oct 25, 2022
1 פלאש NAND
1.1 הקדמה של זיכרון NAND FLASH
NAND FLASH Memory, שם סיני זיכרון פלאש. הוא מקבל את שמו בגלל מהירות המחיקה המהירה שלו.
NAND FLASH הומצא על ידי מר פוג'יו מאסווקה מקבוצת טושיבה היפנית. בשונה מהתקני אחסון אחרים, קווי הנתונים וקווי הכתובת של NAND FLASH מרובים, ולא ניתן להשתמש בקווי כתובת עבור כתובת אקראית. לכן, NAND FLASH משתמש בדפי עמודים כיחידת הקריאה (בדרך כלל עמוד בודד הוא 2K Bytes), ובבלוקים כיחידת המחיקה. (בדרך כלל בלוק בודד הוא 128KB או 256KB). לאחר שליחת פקודת מחיקה, NAND FLASH מוחק את כל הבלוקים ל-1 בכל פעם, וכל התוכן בפנים הופך ל-0xFF. מכיוון שזמן המחיקה קצר מאוד, הוא מהיר כמו ברק. אז אנחנו קוראים לזיכרון הזה FLASH Memory.
1.2 מנגנון יישום חומרה של NAND FLASH
היחידה הבסיסית של NAND FLASH היא MOSFET עם שער צף.
הנתונים מאוחסנים בצורה של מטען חשמלי בתאי זיכרון פלאש. כמות המטען המאוחסנת תלויה במתח המופעל על השער החיצוני. ייצוג הנתונים מיוצג על ידי האם המתח של המטען המאוחסן חורג מסף ספציפי Vth, ואם המטען המאוחסן מספיק ועובר את הסף Vth, הוא מייצג 1. לכתיבת 0, זה לפרוק זה, והחיוב מצטמצם לפחות מ-Vth, כלומר 0.
2 בלוק רע
2.1 הגדרה של בלוק רע
מכיוון שתהליך NAND Flash אינו יכול להבטיח את מהימנות הביצועים של מערך הזיכרון NAND במהלך מחזור החיים שלו, חסימות רעות יתרחשו במהלך הייצור והשימוש ב-NAND. המאפיינים של בלוקים גרועים הם: בעת תכנות/מחיקת בלוק זה, לא ניתן למשוך חלק מהסיביות גבוה, מה שיגרום לשגיאות בפעולות תוכנית עמוד ומחיקת בלוק.
2.2 סיווג של בלוקים פגומים: בלוק רע במפעל FBB & בלוק רע בשימוש GBB
(1) FBB: Factory Bad Block, הבלוק הפגום של המפעל, הבלוק הפגום שיצא זה עתה מהמפעל, נקרא Masked bad block או בלוק התחלתי רע/לא חוקי. כאשר NAND Flash עוזב את המפעל, תהיה כמות מסוימת של בלוקים גרועים עקב תהליך הייצור. במקביל, המפעל המקורי יבדוק את ה-NAND FLASH לפני עזיבת המפעל, והבלוקים ששימשו לבדיקה עשויים להיות מסומנים גם כבלוקים גרועים על ידי המפעל המקורי.
לפני היציאה מהמפעל, המפעל המקורי יסמן את הבלוקים הרעים. הסימן הספציפי הוא שעבור NAND Flash הנפוץ עם גודל עמוד של 2K, עבור NAND flash, סימן הבלוק הרע ממוקם בדרך כלל בעמוד הראשון של כל בלוק. הבית הראשון של אזור הדף הפנוי. באופן ספציפי, אתה יכול לשאול את גיליון הנתונים של מוצרים שונים. אם זה לא 0xFF, זה אומר שזה בלוק רע. בהתאם, כל הבלוקים הרגילים, הבלוקים הטובים וכל הנתונים שבהם הם 0xFF.
(2) GBB: Grown 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 ההשפעה של בלוקים רעים על בלוקים טובים
בלוק רע אינו משפיע על הביצועים של בלוקים טובים מכיוון שהוא מבודד מקווי הסיביות על ידי שערים נבחרים)
2.6 איתור בלוקים פגומים
פעולת "מחיקה" מתבצעת על בלוקים אלה המסומנים כ"בלוקים רעים". אם מתרחשת שגיאת מחיקת החסימה, היא מוכיחה שהחסימה היא בלוק ממש רע.
2.7 הערות על פעולת המחיקה
למעשה, אנו יכולים גם למחוק בלוקים רעים מסומנים. לאחר מחיקה בכפייה בדרך זו, מידע הבלוק הרע אינו קיים עוד. עבור בלוקים גרועים מהמפעל, בדרך כלל לא מומלץ למחוק את המידע המסומן.
ישנה פקודה ב-UBOOT שנקראת "nand scrub", אשר מוחקת את כל התוכן בבלוק, כולל סימן הבלוק הרע, בין אם זה המפעל או הסימן החדש שמופיע בתהליך השימוש מאוחר יותר. בדרך כלל לא מומלץ להשתמש בזה. כאשר מיוצר מפעל NAND FLASH, בלוקים גרועים של NAND נבדקים ומסומנים בטווח טמפרטורה ומתח רחב יחסית. בלוקים רעים אלה עדיין יכולים לעבוד תחת טמפרטורה או מתח מסוימים, אך עשויים להשתנות במועד אחר כאשר התנאים משתנים. כישלון, הופך לפצצת זמן מתקתקת פוטנציאלית. אם הבלוקים הרעים שסומנו על ידי המפעל המקורי נמחקים, קל להיתקל בבעיה של אובדן נתונים בעת כתיבה ושמירת נתונים.
עדיף להשתמש ב-"nand erase" כדי למחוק רק בלוקים טובים, עבור בלוקים שכבר סומנו בלוקים רעים, אין למחוק.
3 ניהול בלוקים גרוע
הבקר של Device או FLASH ינהל בלוקים גרועים, שזה BBM (ניהול בלוק רע). נוסיף זאת בהמשך.
הֶעָרָה
1 מדוע מסומן בלוק טוב ב-0xff: מכיוון שמחיקת Nand Flash היא לשנות את כל הביטים של הבלוק המתאים ל-1, במהלך פעולת הכתיבה, ניתן לשנות כל סיביות של השבב רק מ-1 אל 0, אבל לא. שנה מ-0 ל-1. 0XFF פירושו שניתן למחוק את כולם ל-11111111. זה מציין שניתן למחוק אותו בהצלחה, וזה חסם טוב.
———————————————
הצהרת זכויות יוצרים: מאמר זה הוא מאמר מקורי מאת בלוגר CSDN "Alexander{{0}}Lai" ועוקב אחר הסכם זכויות היוצרים CC 4.0 BY-SA. אנא צרף את קישור המקור המקורי ואת ההצהרה הזו להדפסה מחדש.







