پیشنهاد سردبیرسخت افزار

تک پدیا: Over Provisioning در اس اس دی چیست؟

Over Provisioning چطور روی بازدهی و طول عمر حافظه‌های اس اس دی اثر می‌گذارد؟

درحالی که حافظه‌های اس اس دی در جنبه‌های مختلفی نظیر ابعاد یا درگاه‌های ورودی و خروجی (SATA یا رابط NVMe) شباهت‌های بسیاری با یک‌دیگر دارند، اما از لحاظ عملیات و فرآیندهای سطوح داخلی پایین (Internal Low Level) تفاوت‌های زیادی بین اس اس دی ها و مکانیزم دیسک گردان مغناطیسی در هارد دیسک‌های HDD شاهد هستیم. امروز در این مقاله از «تک پدیا» قصد داریم درباره حافظه‌های اس اس دی و مفهوم Over Provisioning در این نوع درایو‌ها صحبت کنیم، با لیون تک در ادامه این مطلب همراه باشید.

Over Provisioning در اس اس دی‌ چیست؟

حتماً تاکنون متوجه این موضوع شده‌اید که ظرفیت حافظه اس اس دی شما که در دسترس قرار دارد با اندازه‌ای که هنگام خرید به شما اعلام شده متفاوت است. جالب است بدانید که شرکت‌های سازنده پس از اینکه درایوهای مذکور را اسمبل می‌کنند، مقداری از ظرفیت حافظه را به جهت Over Provisioning یا OP حین برنامه نویسی Firmware در نظر می‌گیرند. OP به اس اس دی کمک می‌کند تا بازدهی و ماندگاری بیشتری داشته باشد، این امر تعداد فلش‌های NAND در دسترس برای درایو را افزایش می‌دهد و سبب می‌شود تا عمر مفید اس اس دی طولانی‌تر شود.

به طور کلی میزان ظرفیت آن قسمت از حافظه که به Over Provisioning تعلق دارد از محاسبه اختلاف ظرفیت فیزیکی یا واقعی با ظرفیت در اختیار کاربر به دست می‌آید. در جدول ذیل می‌توانید میزان ظرفیتی که در این نوع درایو‌ها به OP اختصاص داده می‌‍شود را مشاهده کنید.

جدول میزان فضای اختصاص یافته به Over Provisioning براساس ظرفیت درایو

ظرفیت فیزیکی ظرفیت در اختیار کاربر درصد Over Provisioning نوع کلاس نرم افزارهای کاربردی
64 گیگابایت 60 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
96 گیگابایت 90 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
128 گیگابایت 120 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
128 گیگابایت 100 گیگابایت 28 درصد تمرکز بیشتر روی نوشتن داده
256 گیگابایت 240 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
256 گیگابایت 200 گیگابایت 28 درصد تمرکز بیشتر روی نوشتن داده
512 گیگابایت 480 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
512 گیگابایت 400 گیگابایت 28 درصد تمرکز بیشتر روی نوشتن داده
1024 گیگابایت 960 گیگابایت 7 درصد متمرکز روی خواندن داده‌ها
1024 گیگابایت 800 گیگابایت 28 درصد تمرکز بیشتر روی نوشتن داده
2048 گیگابایت 1800 گیگابایت 14 درصد متمرکز روی خواندن داده‌ها
2048 گیگابایت 1600 گیگابایت 28 درصد تمرکز بیشتر روی نوشتن داده

نرم افزارها به دو شکل روی حافظه تمرکز دارند

به طور کلی نرم افزارها می‌توانند هم روی نوشتن و هم روی خواندن داده‌ها متمرکز باشند. برای مثال در نرم افزاری که به صورت متمرکز روی خواندن یا Read Intensive کار می‌کند، کاربر برای انجام کارهای خود 20 درصد از توانایی درایو برای خواندن و 80 درصد از توانایی آن را برای نوشتن در اختیار خواهد داشت. اگر یک نرم افزار به صورت متمرکز روی نوشتن یا Write Intensive فعالیت کند، شرایط تغییر کرده و بیشتر توانایی درایو به فرآیند نوشتن داده‌ها اختصاص خواهد یافت. اندازه ظرفیتی که از حافظه برای Over Provisioning در نظر گرفته می‌شود بسته به نوع و کلاس نرم افزارهای مورد استفاده، ظرفیت اس اس دی و تعداد فلش‌های NAND آن متفاوت خواهد بود.

درایوهای اس اس دی که در ظرفیت‌های بالاتر عرضه می‌شوند به فضای بیشتری برای Over Provisioning نیاز خواهند داشت. چرا که از این درایوها با توجه به نوع نرم افزارهایی که استفاده می‌شود، به منابع بیشتری برای فرآیندهایی نظیر جمع آوری فایل‌های زباله (Garbage Collection)، حفظ امنیت داده‌های بهتر و Spare Block نیاز خواهد بود. فضای اختصاص یافته به OP برای کاربر قابل دسترسی نبوده و توسط سیستم عامل میزبان نیز قابل مشاهده نیست. این فضا موکداً برای کنترلر اس اس دی رزرو شده و دسترسی به آن غیر ممکن است.

حال به مزایای Over Provisioning و اینکه چطور بازدهی اس اس دی را بهبود می‌دهد می‌پردازیم

در اس اس دی‌ ها بستر هر فلش NAND از چندین بلاک (Block) که هر کدام دارای تعدادی صفحه هستند، تشکیل شده است. فلش‌های NAND قادر هستند رو یک صفحه هم بنویسند و هم بخوانند اما تنها می‌توانند از روی یک سطح بلاک داده‌ای را حذف کنند. اگر یک صفحه از یک بلاک که قبلاً از آن استفاده شده نیاز به ویرایش یا حذف داشته باشد، ابتدا باید تمام محتویات بلاک مذکور روی حافظه موقت یک بار ذخیره شده و سپس آن صفحه مورد نظر خالی یا به اصطلاح حذف شود. در آخر نیز باقی مانده محتویات بلاک که نیازی به ویرایش یا حذف نداشته‌اند دوباره به همان قسمت منتقل و به صورت دائمی ذخیره می‌شوند. تنها سنارویی که در آن می‌توان یک صفحه را به طور مستقیم در یک بلاک از فلش NAND بدون انجام فرآیندهای مذکور ویرایش کنیم، زمانی است که صفحه در وضعیت کاملاً خالی قرار داشته باشد.

خالی نگه داشتن تعداد کافی از بلاک‌ها و رزرو کردن آن‌ها برای Over Provisioning، پایداری و بازدهی را به خصوص در سناریوهای نوشتن تصادفی داده‌ها که به تقویت فاکتور نوشتن یا Write Amplification Factor نیاز دارد، افزایش می‌دهد.

Over Provisioning چطور سبب افزایش طول عمر اس اس دی می‌شود؟

برای درک بهتر این موضوع که چرا اس اس دی‌ ها به همراه Over Provisioning پیکربندی می‌شوند و چه سودی شامل حال کنترلر این درایوها می‌شود، باید کمی به عملکرد معمول این نوع درایوها و محدودیت‌های غیر فرار یا Non Volatile فلش‌های NAND بپردازیم. هر سلول از یک فلش NAND دارای طول عمر مفید محدودی است، این طول عمر به برنامه و تعداد فرآیندهای حذف یا P/E آن که توسط شرکت سازنده مشخص می‌شود بستگی دارد. به طور کلی هر برنامه‌ای که اجرا و هر فرآیند حذفی که روی حافظه NAND انجام شود، توانایی سلول را برای ذخیره بار الکتریکی کاهش داده و این موضوع می‌تواند یکپارچگی داده‌ها را تهدید کند. با این حال، با تغییر هندسه حافظه‌های NAND از دو بعدی به سه بعدی، ماندگاری این حافظه‌ها بیشتر، چگالی بستر کمتر و هزینه تولید نیز کاهش داشته است که در آخر اس اس دی‌ ها را مقرون به صرفه‌تر کرده است.

به طور خلاصه سه فاکتور اصلی که باعث کاهش ماندگاری و عمر مفید حافظه‌های اس اس دی می‌شوند عبارت‌اند از:

  • ظرفیت حافظه اس اس دی، هرچقدر ظرفیت بالاتر باشد طول عمر کمتر خواهد بود.
  • بازدهی و توانایی‌های کنترلر به کار رفته در اس اس دی. بازدهی کنترلر در فرآیندهای Garbage Collection، مدیریت بلاک‌ها، ECC یا Error Correcting Code، میزان سایش سطوح حافظه یا Wear Leveling و WAF روی طول عمر آن تأثیر مستقیم دارد.
  • برنامه فلش NAND یا آستانه حافظه در تعداد انجام فرآیند حذف و پیچیدگی فرآیندهای خواندن و نوشتن و حذف مربوط به ساختار هندسی حافظه (در اینجا ساختار هندسی شامل دو نوع سه بعدی و دو بعدی می‌شود) می‌توانند به طور مستقیم روی عمر مفید اس اس دی تأثیرگذار باشند.

حفظ عملکرد و ماندگاری با استفاده از Over Provisioning

برای جلوگیری از تحقق سناریویی که در آن اس اس دی کاملاً با صفحات نامعتبر پر شده است، کنترلر با قابلیت Over Provisioning و با استفاده از فرآیند Garbage Collection یک فضای موقت را برای مدیریت ادغام صفحات معتبر برنامه ریزی شده ایجاد می‌کند تا بتوان بلاک‌هایی را که با صفحات نامعبتر پر شده‌اند دوباره تجدید کرد. سپس تمام صفحات و بلاک‌های پس گرفته شده به فضای OP اضافه می‌شوند تا بازدهی و عملکرد را در پیک ترافیکی درایو افزایش دهند. چرا که فرآیندهای خواندن، نوشتن و حذف روی یک درایو که تمام بلاک‌های آن کاملاً پر شده باشند با مشکل و به کندی انجام می‌شود، به کمک Over Provisioning می‌توان از ایجاد چنین مشکلاتی جلوگیری کرد.

در Over Provisioning قابلیت Garbage Collection به طور مستقل از سیستم عامل فعالیت می‌کند و به در بازه‌های زمانی که درایو فعالیت پایینی دارد به صورت خودکار و یا با صدور دستور TRIM در ATA Data Set Management برای جمع آوری داده‌های زباله به طور برنامه ریزی شده، فعال می‌شود.

تعداد بلاک‌هایی که به لطف قابلیت Over Provisioning همیشه در دسترس هستند، می‌توانند در زمینه Wear Leveling یا سایش حافظه NAND در اس اس دی‌ ها تأثیر مثبت داشته باشند. چرا که کنترلر حافظه در این صورت فرآیند نوشتن را بین تمام حافظه‌های NAND توزیع می‌کند تا این فرآیند در زمان پیک بار ترافیکی روی بازدهی کلی درایو تأثیری نداشته باشد. به علاوه اینکه دستور TRIM از ATA Data Set Management نیز می‌تواند با پس گرفتن صفحات نامعتبری که هرگز استفاده نشده‌اند، ظرفیت قابل دسترسی توسط کاربر را افزایش دهد.

بررسی عملکرد اس اس دی Kingston با قابلیت Over Provisioning در شرایط مختلف

برای درک بهتر اثرگذاری قابلیت Over Provisioning، ما حافظه اس اس دی Kingston Enterprise DCR500R را مورد بررسی قرار دادیم. این اس اس دی‌ ها در ظرفیت‌های مختلفی تا حداکثر 3.84 ترابایت عرضه می‌شوند و به کاربر اجازه می‌دهند تا ظرفیت OP را با استفاده از ابزار Kingston SSD Manager تنظیم کنند. با تنظیم کردن اندازه OP می‌توانیم ببینیم که ظرفیت 7 یا 32 درصدی این قابلیت چقدر روی بازدهی درایو تأثیرگذار است. نتایج بدست آمده در بررسی‌های انجام شده را می‌توانید در جدولی که در ادامه قرار داده شده مشاهده کنید.

جدول ظرفیت Over Provisioning بر اساس ظرفیت و کلاس کاربرد

ظرفیت حافظه فرمت شده ظرفیت Over Provision شده سرعت خواندن و نوشتن متوالی حالت پایدار خواندن و نوشتن 4K TBW (JEDEC Enterprise) DWPD
480 گیگابایت (DC500R) 7 درصد 550/500 مگابایت در ثانیه 98,000/12,000 IOPS 438 0.5
480 گیگابایت (DC500M) 32 درصد 555/520 مگابایت در ثانیه 98,000/58,000 IOPS 1139 1.3
960 گیگابایت (DC500R) 7 درصد 555/520 مگابایت در ثانیه 98,000/20,000 IOPS 876 0.5
960 گیگابایت (DC500M) 32 درصد 555/520 مگابایت در ثانیه 98,000/70,000 IOPS 2278 1.3
1920 گیگابایت (DC500R) 7 درصد 555/520 مگابایت در ثانیه 98,000/24,000 IOPS 1752 0.5
1920 گیگابایت (DC500M) 32 درصد 555/520 مگابایت در ثانیه 98,000/75,000 IOPS 4555 1.3
3840 گیگابایت (DC500R) 7 درصد 555/520 مگابایت در ثانیه 98,000/28,000 IOPS 3504 0.5
3840 گیگابایت (DC500M) 32 درصد 555/520 مگابایت در ثانیه 98,000/75,000 IOPS 9110 1.3

پس از مقایسه ظرفیت‌های مختلف Over Provisioning، نتایج ذیل حاصل شدند:

  1. درایوهایی که ظرفیت بالایی دارند با استفاده از ظرفیت OP کمتر، همچنان قادر هستند تا بازدهی قبلی در انتقال داده و پهنای باند را حفظ کنند، اما در نوشتن‌های تصادفی و تعداد ورودی و خروجی‌ها در ثانیه (IOPS) شاهد کاهش چشم‌گیری بودیم. این بدان معناست که ظرفیت پایین OP می‌تواند در زمینه نرم افزارهای متمرکز روی خواندن داده عملکرد خوبی داشته باشد اما مککن است در کار با نرم افزارهای متمرکز روی نوشتن داده در مقایسه با درایوهایی که از 32 درصد OP بهره‌مند هستند با ضعف مواجه شود.
  2. همچنین استفاده از ظرفیت کمتر Over Provisioning بدین معنی است که تعداد مجموع بایت‌های نوشته (TBW) در مقیاس ترابایت روی درایو کمتر خواهد بود. بنابراین هرچقدر که درصد OP بیشتر باشد، طول عمر درایو نیز بیشتر خواهد بود. یک درایو DC500R با 960 گیگابایت حافظه می‌تواند تا حداکثر 876 ترابایت داده بنویسد، این درحالی است که نسخه 800 گیگابایتی آن تنها 860 ترابایت TBW خواهد داشت. مقادیر مربوط به TBW توسط شرکت Kingston و با استفاده از پردازش‌های JEDEC به عنوان مرجع به دست آمده‌اند.
  3. زمانی که گفته می‌شود تعداد TBW یک درایو برابر با تعداد فرآیندهای نوشتن یک درایو در طول زمان گارانتی آن است، می‌توان مشاهده کرد که در درایوهایی که از 32 درصد Over Provisioning استفاده می‌کنند این مقدار دو برابر می‌‍شود. به همین خاطر است که درایوهای 32 درصدی برای استفاده در کنار نرم افزارهای که روی نوشتن متمرکز هستند پیشنهاد می‌شوند.

به پایان مقاله‌ای دیگر از «تک پدیا» رسیدیم و از اینکه تاکنون همراه ما بودید سپاسگزاریم. امیدواریم مطالب امروز درباره عملکرد Over Provisioning در اس اس دی‌ ها برای شما مفید واقع شده باشد. اگر همچنان سوالی در رابطه با این موضوع دارید حتماً در بخش دیدگاه‌ها از ما بپرسید.

نمایش بیشتر

ایمان ایمانی

یه مهندس نرم‌افزار 25 ساله که خورۀ گیم و سخت‌افزاره 👨‍💻

نوشته های مشابه

دکمه بازگشت به بالا