wear leveling چیست

Wear leveling چیست ؟

بازدید: 43
4.5/5 - (2 امتیاز)

تسطیح فرسودگی یا Wear Leveling

Wear Leveling یا “تسطیح فرسودگی” فرآیندی است که برای افزایش عمر دستگاه‌های ذخیره‌سازی حالت‌جامد Solid State Drive  طراحی شده است.

ذخیره سازهای حالت‌جامد SSD از میکروچیپ‌هایی ساخته شده‌اند که داده‌ها را درون بلاک‌ها ذخیره‌سازی می‌کنند. هر بلاک تا قبل از نامطمئن شدن (از لحاظ ثبات اطلاعات) می‌تواند تعداد محدودی از چرخه نوشتن/پاک کردن را تحمل کند. به عنوان مثال سلول تک‌سطحی (SLC) فلش NAND معمولا بین 50000 تا 100000 چرخه نوشتن/پاک کردن است. Wear leveling داده‌ها را به گونه‌ای مرتب می‌کند که چرخه نوشتن/پاک کردن به طور مساوی میان تمامی بلاک‌های موجود در دستگاه توزیع می‌شود.

این فرآیند معمولا توسط کنترل‌کننده فلش مدیریت می‌شود، که با استفاده از یک الگوریتم تعیین می‌کند در هر زمان از نوشتن داده، کدام یک از بلاک‌ها مورد استفاده قرار بگیرند.

حتی ممکن است Wear leveling در دستگاه‌های سلول چند‌سطحی (MLC) فلش NAND مهم‌تر جلوه کند. در حالیکه سلول تک‌سطحی (SLC) اجازه می‌دهد که یک بیت در یک بلاک حافظه نوشته شود، دو بیت می‌توانند یک مرتبه در بلاک‌های سلول چند‌سطحی نوشته شود. این موضوع به کاهش قیمت درایوهای حالت‌جامد (SSD) کمک می‌کند اما فرسایش (Wear) را افزایش خواهد داد. به منظور کمک به کاهش  فرسایش درایوهای حالت‌جامد (SSD)، از MLC یا eMLC های تجاری که سرعت نوشتن و در نتیجه نرخ  فرسایش را کاهش می‌دهند استفاده می‌شود.

تسطیح فرسودگی ایستا در مقابل تسطیح فرسودگی پویا  Static Wear Leveling vs Dynamic Wear Leveling

دو شیوه تسطیح فرسودگی SSD وجود دارد : پویا و ایستا (Dynamic & Static). نوع پویا از میان بلاک‌های پاک شده مخزن حافظه، بلاک‌هایی را که کمترین میزان پاک شدن را دارند برای نوشتن اطلاعات در نوبت بعدی در نظر می‌گیرد. ضعف تسطیح فرسودگی پویا یا Dynamic در این است که اگر بلاکی، داده‌ای را نگهداری کند که مورد استفاده قرار نمی‌گیرد. هیچگاه به بلاک دیگری منتقل نخواهد شد. این مسئله تعداد بلاک‌هایی که تحت تسطیح فرسودگی قرار می‌گیرند را محدود می‌سازد.

تسطیح فرسودگی ایستا مانند تسطیح فرسودگی پویا است با این تفاوت که اطمینان می‌دهد که داده‌های ثابت، زمانی که دفعات پاک شدن آن بلاک از آستانه مشخصی کمتر قرار گیرد، انتقال یابند. این مرحله اضافی برای انتقال داده‌ها می‌تواند عمل نوشتن را به دلایل ناشی از سربار بر روی کنترل کننده فلش، کند نماید، اما به طور قابل ملاحظه ای روش ایستا نسبت به روش پویا برای افزایش عمر درایوهای  حالت جامد، موثرتر است.

یکسان‌سازی پوشش ایستا در مقابل یکسان‌سازی پوشش پویا  Static Wear Leveling vs Dynamic Wear Leveling

Wear leveling در برابر TRIM

دستور TRIM  در سیستم‌عامل کامپیوتر تعریف شده است و زمانی اعمال می‌شود که  یک بلاک حافظه در یک دستگاه فلش NAND دیگر مورد استفاده قرار نمی‌گیرد و می‌تواند پاک شود. فرآیند TRIM بر روی درایو‌های حالت جامد صورت می‌گیرد. در درایو‌های حالت جامد مبتنی بر SAS یا (SAS-based SSD) دستور مشابه‌ای به نام UNMAP وجود دارد.

از سوی دیگر، برخلاف TRIM فرآیند Wear leveling توسط کنترل کننده فلش مدیریت می‌شود و نه سیستم عامل، wear leveling تنها زمانی عمل می‌کند که داده‌ها در حال نوشتن بر روی SSD هستند، به این صورت که کنترل‌کننده، فلش را به منظور شناسایی مجموعه بلاک‌هایی با کمترین تعداد چرخه نوشته/پاک شده فراخوانی می‌نماید بر این اساس داده می‌توانند بر روی آن‌ها نوشته شوند. TRIM زمانی رخ می‌دهد که سیستم‌عامل متوجه می‌شود که یکی از بلاک‌های حافظه، دیگر داده‌ها را نگهداری نمی‌کند.

TRIM تقریبا توسط همه کامپیوترها و سیستم عامل‌های سرور، پشتیبانی می‌شود و از سال 2013 توسط سیستم عامل تلفن همراه اندروید نیز پشتیبانی می‌شود.

Wear leveling در برابر TRIM

Wear leveling در برابر garbage collection

بازیافت حافظه (garbage collection) یکی دیگر از روش‌های بهبود طول عمر کاربردی و سرعت عملکرد نوشتن بر روی SSD است.

سلول‌های حافظه در یک SSD از بلاک‌ها تشکیل شده است، و هر بخش از داده در صفحاتی از یک بلاک  نوشته می‌شود، صفحات مجزا، با هر نگاشت جدید بروزرسانی می‌شوند، اما به هنگام پاک کردن داده‌ها، تمامی یک بلاک بطور یکجا پاک می‌شود. این به این معنی است که بروزرسانی داده‌های کوچک،  چرخه‌های پاکسازی برای کل صفحات استفاده نشده در یک بلاک را به هدر می‌دهد.

در هنگام بازیافت حافظه، تمام صفحاتی که در یک بلاک نوشته شده‌اند به بلاک جدیدی منتقل می‌شوند و صفحات بدون تغییر، در بلوک قبلی پاک می‌شوند. این عمل به طور کامل، بلاک قبلی را برای استفاده در wear leveling خالی می‌کند.

منبع : techtarget