همانطور که در بخش اول مقاله دیدیم عملیات نوشتن در NAND-Flash ها بصورت عمده به اندازه یک بلاک در حافظه Flash بستگی دارد. بعنوان یک مثال ساده، نوشتن یک فایل 4KB روی یک Flash درایو معمولی منجر به این می شود که کنترل کننده آن با عملیات نوشتن روی کمترین واحد بلاک که 128KBاست مواجه شود، چرا که ممکن است آن بلاک شامل صفحات یا Page های غیر معتبر یا پاک شده باشد. این به آن معنی است که تمام سلولهای بلاک 128 کیلوبایتی باید در حافظه کش اصلاح شده و دوباره نوشته شوند، با اینکه فقط 4 کیلوبایت آن داده های واقعیست. با این توضیح می بینیم که عملیات نوشتن در عمل ممکن است اندازه ی بیشتری از آنچه را که ما به درایو فرستاده ایم در بر بگیرد.

قوانین SSD ها را بخاطر آورید; شما می توانید از یک Page بخوانید یا روی یک Page بنویسید اما باید یک بلاک را در آن واحد پاک کنید. اگر آن بلاک پر از صفحات غیر معتبر باشد (برای مثال فایلها توسط سیستم عامل OverWrite شده باشند) ، اول باید پاک شود تا بتوان روی آن نوشت.
الگوریتمهای پاک سازی بلاک ها در تمام SSD ها وجود دارد (یکی از مهمترین آنها TRIM است که در بخش قبلی مقاله توضیح دادیم) که در یک درایو نو کاربرد ندارند اما پس از گذشت چند روز، هفته یا ماه بعنوان یک بخش معمول درایوهای SSD فعال می شوند.

نمودار زیر را مشاهده کنید:
photo

مراحل عملیات نوشتن در SSD

در دیاگرام بالا از زاویه دیگری به آنچه که در هنگام رسیدن یک دستور نوشتن رخ می دهد نگاه می کنیم. برای نوشتن جدید از بلاکهای خالی استفاده می شود. (اگر موجود باشد) اما این تنها عملیات نوشتنی نیست که رخ می دهد، چرا که شما باید یکسری عملیات پاکسازی بلاکها (معروف به Garbage Collection) را هم انجام دهید تا بلاکهای خالی شما (به علت غیر معتبر شدن یک یا چند صفحه از صفحات آن) به اتمام نرسد یا عملیات TRIM بطور خودکار اینکار را انجام دهد.

بلاکی با بیشترین داده های غیر معتبر برای پاکسازی انتخاب می شود; داده های آن به بلاک دیگری کپی می شود و خود بلاک پاکسازی شده و به لیست بلاکهای معتبر افزوده می شود. در نمودار بالا در سمت چپ اندازه درخواست نوشتن را می بینید، اما در انتهای سمت راست اندازه واقعی داده های نوشته شده پس از عملیات پاکسازی را هم مشاهده می کنید. این تفاوت در مقدار درخواست شده برای عملیات نوشتن و مقدار واقعی نوشته شده را فاکتور ضریب نوشتن یا write amplification Factor می نامند.

write amplification Factor نسبت بین مقدار داده های ارسال شده برای نوشتن و مقدار واقعی مورد نیاز برای نوشتن روی فلش را بیان می کند. مقدار 1 برای این فاکتور مقدار آرمانی و کامل محسوب می شود، اما در عمل مقدار بالاتری برای فلش ها پیش بینی می شود. هر چقدر مقدار این فاکتور بیشتر باشد، درایو شما سریعتر خراب می شود و راندمان آن هم کمتر می شود. معیاری که زیاد خوشایند ما نیست.

این دلیلیست که کنترل کننده اینتل به بافر DRAM احتیاج دارد. در واقع اینتل آن را بعنوان حافظه کوتاه مدت برای ذخیره داده ها استفاده می کند و در نتیجه می تواند عملیات نوشتن را بطور موثرتر از کنترل کننده های دیگر اجرا کند. اینتل مقدار 1.1 را برای write amplification Factor در درایو X25-M اعلام می کند که به نسبت درایوهای معمولی همرده با مقدار 3، رقم خوبیست. سوال اینجاست که چگونه می توان از روی این مقدار عمر درایو SSD را تخمین بهتری زد؟