على الإنترنت ، كانت هناك أعمال شغب تسمى "لماذا شحن محرك أقراص فلاش USB". للوهلة الأولى ، إنه أمر مضحك ، لكنني أقترح التفكير مرة أخرى وفهم المشكلة. بعد قراءة هذا المقال ، ستبدأ في شحن محركات أقراص فلاش أيضًا.
شخصيًا ، ألقى كبير المصممين لإحدى شركات صناعة الإذاعة الإلكترونية رابطًا لمقال بعبارة "هل تريد الصهيل؟"
زوجان من الروابط ذات الصلة:
- www.youtube.com/watch؟v=EuCSS9VtxCA
- zen.yandex.ru/media/id/5cebc7044d24ad00b31ddccc/zachem-liudi-zariajaiut-fleshnakopiteli-5d113734e1551900b0ad97a9
بالطبع ضحكت ولكن ليس بسبب ما كنت تعتقد. اضطررت إلى المشاركة في تطوير محركات الأقراص ذات الحالة الصلبة استنادًا إلى ذاكرة NAND-flash ، بما في ذلك أقراص USB. للوهلة الأولى ، بالنسبة لشخص خبير في التكنولوجيا ، يبدو من الواضح أن توصيل محرك الأقراص بالشاحن لا معنى له ، لأنه إلى جانب توفير الطاقة ، لا يتم تنفيذ أي إجراءات أخرى مع محرك الأقراص ، وبالتالي ، لن نحصل على أي شيء سوى تبديد الحرارة. هناك العديد من "الاكتشافات" المختلفة على الإنترنت ، والضحك الضاحك وحتى المزاح الصريح على العاملين في المجال الإنساني الفقراء الذين يسألون عما إذا كان الأمر يستحق شحن محرك أقراص فلاش. يمكنك أن تضحك ، لكنني رأيت بأم عيني كيف قام مطورو محركات الأقراص المحمولة "بشحن" منتجاتهم عن طريق تثبيتها في أجهزة الشحن لفترة من الوقت!
محرك أقراص فلاش USB عبارة عن جهاز تخزين كتلة: يتم تقسيم مساحة العنوان بالكامل إلى قطاعات 512 بايت. يمكن لنظام التشغيل الوصول إلى عنوان قطاع معين (LBA) وقراءته أو الكتابة فوقه ، كل شيء بسيط.
الآن دعونا نلقي نظرة تحت غطاء محرك الأقراص المحمول الخاص بنا ...
يتضمن محرك الأقراص المحمول دوائر كهربائية صغيرة:
- مراقب؛
- ذاكرة فلاش NAND.
يتم ترتيب شرائح الذاكرة بطريقة محددة إلى حد ما من حيث معالجة البيانات وكتابتها وتخزينها ، والتي تمليها بنيتها (ويجب أن نحبها كما هي). تم تحديد القواعد التالية لـ NAND-flash:
- تنقسم الذاكرة إلى كتل بحجم ميغا بايت ؛
- قبل الكتابة إلى كتلة الذاكرة ، يجب محوها. عند محوها ، يتم تعيين كافة بايتات البيانات في الكتلة إلى 0xFF ؛
- تتكون الكتلة من صفحات بحجم عشرات الكيلو بايت ؛
- , ;
- ;
- .
هنا ، تحول هذه المجموعة من القواعد مثل هذا الإجراء البسيط (من وجهة نظر المستخدم) كيفية كتابة قطاع واحد إلى محرك أقراص فلاش USB إلى لغز حقيقي لمطور وحدة التحكم في محرك الأقراص المحمول نفسه.
حاول أن تتخيل كيف ستحل هذه المشكلة ، وسترى أوجه التشابه مع لعبة برج هانوي .
من أجل "تكوين صداقات" عنونة كتلة محرك الأقراص سهلة الاستخدام والعناوين السادية السادية لذاكرة NAND-flash ، يدور المعالج داخل وحدة التحكم في محرك أقراص فلاش ، والتي تنفذ خوارزمية ترجمة العنوان ، والمعروفة أيضًا باسم FTL (طبقة ترجمة فلاش). تشمل مهام خوارزمية FTL ما يلي:
- بناء جدول تعيين الصفحات والحفاظ عليه ؛
- جمع القمامة
- ارتداء تسوية كتل ذاكرة NAND-flash.
سيقول الأشخاص المطلعون أن هناك مهام أخرى ، مثل تتبع الكتل السيئة لذاكرة NAND-flash (إدارة كتلة سيئة) ، لكنني لا أريد التحدث عن هذا الآن ، لأنه لا ينطبق على الحالة الحالية ...
برنامج تعليمي صغير حول النقاط المشار إليها :
تعيين الصفحة
حسنًا ، هنا ، ربما ، كل شيء واضح ... تتم ترجمة مساحة العنوان المنطقية لمحرك الأقراص (LBA) إلى عناوين كتل وصفحات ذاكرة فلاش NAND (العنوان الفعلي) من خلال مصفوفة ضخمة ، يشير فهرسها إلى LBA ، وقيمة العنصر هي العنوان الفعلي. إذا كان من الضروري إعادة كتابة صفحة واحدة ، فستتم كتابة بيانات هذه الصفحة في كتلة حرة بالترتيب ، ثم في المصفوفة ، يتم استبدال رقم الصفحة بالصفحة المكتوبة حديثًا. عندما يشتري طالب محرك أقراص فلاش 32 جيجا بايت ويكتشف أنه يحتوي على 29 جيجا بايت فقط ، لا يعرف الطالب بعد أنه لم يكن الصينيون هم من سرقوا المساحة المفقودة في المصنع ، ولكن مطورو خوارزمية FTL. لتتمكن من كتابة البيانات على محرك الأقراص.
جمع القمامة
وماذا سيحدث للصفحة التي فقدت أهميتها؟ لم تعد هناك حاجة للبيانات المكتوبة فيه ، لكن لا يمكننا محوها ، لأنه لا يُسمح بالمسح إلا في كتل ، وفي نفس الكتلة قد تظل هناك صفحات فعلية. عاجلاً أم آجلاً ، سيتطور الموقف عندما لا يكون لدينا كتل مجانية يمكننا من خلالها كتابة صفحات. لكن في الكتل المتبقية ، هنا وهناك ستكون هناك صفحات غير ذات صلة. لمنع حدوث ذلك ، فإن وظيفة "جامع القمامة" تدور في محركات الأقراص ، والتي تعمل على إيجاد الكتل "المتسربة" ، والتي تحتوي على أقل عدد من الصفحات ذات الصلة ، وتنقل الصفحات الفعلية إلى كتلة جديدة. وبالتالي ، يتم تحرير كتلة "التسريب" تمامًا من الصفحات الفعلية ويمكن محوها ... وفي الكتلة الجديدة ، تظل جميع الصفحات ذات صلة. تذكرنا بإلغاء التجزئة.
ارتداء التسوية
لا شيء يدوم إلى الأبد تحت القمر ، وخاصة فلاش NAND. لقد حدث فقط أن ذاكرة NAND-flash لها موارد محدودة ، والتي يتم التعبير عنها من خلال عدد محدود من دورات محو الكتلة (عمر الكتلة). الكتل التي تم محوها مرات أكثر (الكتل القديمة) هي أكثر عرضة للفشل من تلك الأقل تآكلًا (الكتل الصغيرة).
هل فكرت يومًا في نقل جدول FAT من صفر عناوين لمحرك الأقراص إلى مكان آخر حتى لا تمسح فجوة في مساحة العنوان لمحرك الأقراص المحمول؟ هذا غير محتمل ولا ينبغي التفكير فيه. لأن آلية تسوية تآكل الكتلة تعمل في محرك أقراص فلاش. جوهرها هو أن الكتل الصغيرة تضطر إلى تبديل الأماكن بأخرى قديمة ، بحيث يكون تآكل جميع الكتل موحدًا أثناء تشغيل محرك الأقراص. لذا فإن للقيادة فرصة للعيش في سعادة دائمة حتى تموت كل كتلها في يوم واحد.
والآن حول الشيء الرئيسي - لماذا "شحن" محرك أقراص فلاش؟
1) هل سبق لك أن واجهت موقفًا حيث ستغسل جواربك يومًا بعد يوم ، ولكن يتبين أن الأمر ليس كذلك كل مساء؟ ثم تأتي اللحظة التي لا يتبقى فيها أي جوارب نظيفة للغد! ومن ثم عليك التضحية بالنوم لغسل جواربك. بل إن الأمر أسوأ إذا كان عليك أن تتأخر عن العمل مع وجود مجفف شعر في يدك.
يحدث الشيء نفسه مع خوارزمية جمع البيانات المهملة في FTL. غالبًا ما يستخدم المستخدم محرك أقراص USB محمولاً لنقل بعض البيانات من كمبيوتر إلى آخر. في هذه الحالة ، يكون سيناريو الإجراءات كما يلي: قم بتوصيل محرك أقراص فلاش USB بالكمبيوتر - اكتب الملفات بسرعة - اسحب محرك أقراص فلاش USB - قم بتشغيل جهاز كمبيوتر آخر - قم بتوصيل محرك أقراص فلاش USB - اقرأ الملفات. بعد فترة ، يبدأ المستخدم في ملاحظة أن قيادته بطيئة. عادة ، في مثل هذه الحالات ، يخطئون في حقيقة أنه "حسنًا ، إنه مجرد محرك أقراص محمول قديم رخيص. هنا ، سأشتري واحدة جديدة ، وسوف تطير! " وسوف يكون حقا! لكنها ، على الأرجح ، ستعاني من نفس المصير بعد مرور بعض الوقت. الحقيقة هي أن سيناريو مثل هذه "الأفلام القصيرة" لا يسمح لخوارزمية جمع البيانات المهملة بإصدار كتل للكتابة ، والتي ستؤدي عاجلاً أم آجلاً إلى حقيقة أنه لن يكون هناك المزيد من الكتل المجانية.ومن ثم تضطر وحدة التحكم إلى التعامل أولاً مع الكتل الحرة ، ثم كتابة الملفات عليها فقط ، وبالتالي فقدان السرعة. لكي تكون جاهزًا لاستلام بياناتك بأقصى سرعة ، يحتاج محرك الأقراص إلى إجازة "لغسل الجوارب" مسبقًا. كما قد تتخيل ، فإن "شحن" محرك الأقراص المحمول يزيل هذه المشكلة ، ويمنح وحدة التحكم الوقت الكافي لاستعادة النظام في البيانات.
2) مشكلة عدم وجود "وقت شخصي" لوحدة التحكم ذات صلة أيضًا بخوارزمية تسوية التآكل. يتم تنفيذ خوارزمية Wear Leveling بواسطة وحدة التحكم عندما يكون محرك الأقراص خاملاً ، بينما لا توجد مهام لكتابة أو قراءة بيانات المستخدم. إذا كان محرك الأقراص يعمل في وضع "الأفلام القصيرة" ، فلن يكون هناك وقت لتسوية تآكل الكتلة. يؤدي التآكل غير المتساوي للكتل إلى حقيقة أن الكتل القديمة تفشل. في الوقت نفسه ، يتناقص عدد الكتل المتاحة للكتابة حتى تأتي لحظة حرجة حيث لن يكون هناك أي كتل مجانية للكتابة ، على الرغم من أن ذاكرة NAND-flash ككل لم تتآكل بعد ويمكن أن تعمل لفترة طويلة.
3) لقد علمنا التطور أن ندفن الأشياء الثمينة العزيزة علينا في مكان ما بعيدًا عن الممرات. هذا يعمل بشكل جيد للكنوز والجزر غير المأهولة. ولكن مع البيانات الرقمية و NAND ، فإن العكس هو الصحيح. بالتأكيد ، كان لديك حالات عندما ألقيت بعض الصور من حفل زفاف صديق على محرك أقراص فلاش ، لمدة عام كان محرك الأقراص المحمول في درج مكتب (كما بدا لك ، آمن وسليم) ، ثم تمت قراءة نصف الصور فقط. الحقيقة هي أن المعلومات المسجلة في ذاكرة فلاش NAND يمكن أن "تتعفن" بمرور الوقت. لا تضمن الشركة المصنعة للذاكرة الاحتفاظ بالبيانات بنسبة 100٪ ، ولكنها تعلن ببساطة عن احتمال حدوث أخطاء بت.
بالطبع ، تحل وحدة التحكم في محرك الأقراص مشكلة التخلص من أخطاء البت عن طريق إضافة رمز فائض إلى البيانات ، ولكن بغض النظر عن حجم هذا الرمز ، بمرور الوقت ، تتحلل الشحنة في خلايا ذاكرة NAND ، ويمكن أن يتجاوز عدد أخطاء البت أي قدرة تصحيح. لا ينبغي ترك البيانات بمفردها لفترة طويلة في ذاكرة فلاش NAND ؛ يجب العناية بها. وهي - الكتابة بشكل دوري. تقوم وحدة التحكم الصحيحة بإعادة قراءة البيانات بشكل دوري ، وتتحقق من عدد أخطاء البتات وتعيد كتابة البيانات إذا لزم الأمر (حتى يتجاوز عدد أخطاء البت القيمة المسموح بها). بالطبع ، تحتاج وحدة التحكم أيضًا إلى "وقت فراغ" لهذا الغرض.
من كل ما سبق ، سألخص: لا تتردد في "شحن" محركات أقراص فلاش ، فهذا له تأثير مفيد على سرعتها وموثوقيتها. وإذا ضربك التقنيون ، فما عليك سوى إعطائهم رابطًا لهذه المقالة.