SSD چیست و چگونه کار میکند؟
SSD ها نوع نسبتا جدید و بسیار سریعی از حافظه هستند که نسبت به هارد دیسکها دارای سرعت و امنیت انتقال دادهی بالاتری هستند. اما این حافظهها معایبی از جمله قیمت بالا و کند شدن به مرور زمان دارند. درایوهای حالت جامد نوعی از حافظهی سریع و قابلحمل بوده که در پی تصاحب جایگاه هارد دیسکها هستند. این حافظهها انواع مختلفی دارند که همگی بر پایه سلول فلش نند (NAND) هستند. همیشه شاهد بحث و گفتوگو بین دوستداران تکنولوژی در مورد مزایا و معایب انواع ساختارهای NAND از جمله NAND مسطح در مقابل NAND عمودی یا MLC یا سلول چند لایه (Multi Level Cell) در مقابل TLC یا سلول سه لایه (Triple Level Cell) بودهایم. برای آشنایی بیشتر با SSD ها، چند سؤال در مورد حافظههای ذخیرهسازی میپرسیم و سپس به تک تک آنها جواب میدهیم. SSD ها با حافظههای مبتنی بر دیسک چرخان متفاوت هستند.
SSD ها چگونه کار میکنند؟
هارد SSD یا درایو حالت جامد (Solid State Drive) را به این دلیل با این نام می شناسند که برخلاف هارد دیسکها، سازوکار آن مبتنی بر چرخش اجسام و حرکت اجرای داخلیش نیست. در SSDها، اطلاعات بهجای دیسک چرخان، در دریایی از فلش ناند ذخیره میشوند. ناند خود از اجزایی ساخته شده است که ترانزیستورهای گیت شناور نامیده میشوند. برخلاف ترانزیستورهای استفاه شده در ساخت DRAM یا رم پویا (Dynamic Random Access Memory) که باید هر ثانیه چندین بار رفرش شوند، فلش ناند به گونهای طراحی شده است که حتی اگر منبع انرژی در دسترسش نباشد باز هم بتواند حالت شارژ یا دشارژ خود را حفظ کند. همین امر موجب شده است که ناند را در دستهی حافظههای غیر فرار دستهبندی کنند.
در فلش ناند، صفر بهمعنای آن است که داده در سلول ذخیره شده است و یک بدین معنا است که سلول خالی است. فلش ناند در یک شبکهی توری مانند و مشبک بهصورت منظم چیده میشود. به هرکدام از لایههایی که شبکه را میسازند، صفحه (Page) و به کل این شبکه توری مانند، بلوک میگویند. اندازههای متداول برای صفحات عبارت است از ۲۰۰۰، ۴۰۰۰، ۸۰۰۰ و ۱۶۰۰۰ سلول. در هر بلوک نیز ۱۲۸ یا ۲۵۶ صفحه قرار دارد. پس با این حساب، گنجایش هر بلوک حداقل ۲۵۶ کیلوبایت و حداکثر ۴ مگابایت است. یکی از مزایای هارد SSD، سرعت بسیار بالاتر آنها نسبت به هارد دیسکها است. از آنجا که در درون SSDها هیچ گونه قطعهی متحرکی وجود ندارد، تأخیر کمتر بوده و سرعت انتقال داده بالاتر میرود. جدول زیر، میزان تأخیر دسترسی را در انواع حافظههای معمول بر حسب میکروثانیه نشان میدهد.
NAND از نظر سرعت اصلا قابل مقایسه با حافظههای رم نیست؛ اما در مقایسه با هارد دیسکها بسیار سریعتر است. حتی با وجود آن که سرعت نوشتن حافظههای NAND در مقایسه با سرعت خواندنشان کمتر است، باز هم دراینزمینه بسیار سریعتر از هارد دیسکها هستند. دو نکته در مورد شکل بالا وجود دارد. اول اینکه با کمی دقت میتوان فهمید که هرچه تعداد بیتها در سلول فلش بالاتر میرود، تأخیر در آن بهطور قابل ملاحظهای افزایش می یابد. تأثیر این کند شدن روی نوشتن، بیشتر از خواندن است. مثلا تأخیر خواندن در سلول سه لایه (TLC) نسبت به سلول تک لایه (SLC) حدودا ۴ برابر است؛ اما تأخیر نوشتن در سلول سه لایه، ۶ برابر تأخیر نوشتن در سلول تک لایه است. با افزایش تعداد بیتها در هر سلول فلش، تأخیر در پاک کردن دادهها هم همانند نوشتن و خواندن بسیار بیشتر میشود. اگر تعداد بیتها n برابر شود، لزوما تأخیر هم n برابر نمیشود؛ بلکه بیشتر از n برابر میشود. مثلا اگر به سلول سه لایه نگاه کنیم میبینیم که دو برابر سلول دولایه تأخیر دارد؛ درحالیکه تعداد بیتهای آن تنها ۵۰ درصد بیشتر از تعداد بیتهای سلول دولایه است.
دلیل کندتر بودن سلول سه لایه نسبت به سلولهای دو لایه و تک لایه، نحوهی حرکت اطلاعات در بیرون و داخل سلول است. در سلول تک لایه، تنها اطلاعاتی که کنترلر نیاز دارد این است که بداند بیت متناظر با وضعیت سلول، صفر است یا یک. در سلول دو لایه، به دلیل وجود دو بیت، چهار حالت مختلف ارزش را داریم: ۰۰، ۰۱ ،۱۰ و ۱۱. سلول سه لایه نیز میتواند هشت ارزش مختلف داشته باشد. برای خواندن ارزش سلول از بیرون، کنترلر حافظه باید ولتاژ بسیار دقیق و حساب شدهای را به درون سلول یک لایه یا گروه دو یا سهتایی سلولها بفرستد تا با گرفتن فیدبک بتواند تعیین کند که کدام سلول شارژ شده و کدام یک شارژ نشده است.
خواندن، نوشتن و پاکسازی داده در SSDها چگونه انجام میشود؟
یکی از مشکلات SSDها این است که اگرچه میتوانند اطلاعات را با سرعتی بسیار بالا در درایوهای خالی بنویسند، اما در صورت نوشتن مقادیر زیادی از اطلاعات، به مرور زمان دچار کندی میشوند. دلیل این کندی به یکی از ویژگیهای منحصربهفرد SSDها بر میگردد. SSDها میتوانند داده را از یک صفحه بخوانند یا در یک صفحه بنویسند. اما اگر نیاز به پاک کردن اطلاعات یک سلول باشد، نمیتوانند تنها اطلاعات آن سلول یا حتی آن صفحه را پاک کنند؛ بلکه تمام اطلاعات موجود در آن بلوک را حذف میکنند. زیرا فرض را بر خالی بودن صفحات مجاور میگذارند. دلیل این انتخاب این است که برای پاک کردن اطلاعات از روی صفحات فلش ناند، ولتاژ زیادی لازم است و اگر بهصورت نظری بتوان اطلاعات یک صفحه را پاک کرد، ولتاژ بالای اعمال شده در آن، صفحات مجاور را نیز تحتتأثیر قرار داده و اطلاعات ذخیره شده در آنها بر اثر این ولتاژ بالا دستکاری و غیر قابل استفاده میشوند. بنابراین بهترین راه این است که دادهها را بهصورت بلوکی حذف کنیم تا این مشکل برطرف شود. اما SSDها برای بازنویسی اطلاعات در یک صفحه چگونه عمل میکنند؟ SSDها این کار را در سه مرحله انجام میدهند:
- مرحلهی اول، کپی کردن تمام اطلاعات بلوکی است که صفحهی مورد نظر ما در آن واقع شده است
- مرحلهی دوم، پاک کردن تمام اطلاعات داخل بلوک است
- مرحلهی سوم هم «نوشتن اطلاعات کپی شده + اطلاعات مورد نظر ما» در بلوک و صفحهی مورد نظر است.
بدین ترتیب بدون کوچکترین تغییری در دیگر اطلاعات بلوک، توانستهایم اطلاعات یک صفحه را به روز کنیم. اگر درایو پر باشد و هیچ صفحهی خالی در دسترس نباشد، هارد SSD باید ابتدا بهدنبال بلوکهایی بگردد که قبلا آنها را بهعنوان بلوک حذف شده علامتگذاری کرده، اما اطلاعات داخلشان را حذف نکرده است. پس از یافتن این بلوکها، آنها را پاک کرده و سپس اطلاعات را در صفحه مورد نظر که حالا خالی است بنویسد. دلیل کند شدن SSDها پس از گذشت زمان نیز همین است. یک درایو SSD تقریبا خالی، دارای بلوکهای خالی بسیار زیادی است که میتواند اطلاعات را در آنها بنویسد. به همین دلیل سرعت خیلی زیادی دارد. اما یک هارد SSD تقریبا پر، به احتمال بسیار زیاد باید برای نوشتن اطلاعات، چندین بار چرخهی نوشتن و پاککردن (program/erase cycle) بالا را طی کند و به همین دلیل سرعتش پایین میآید. استفاده از آخرین مگابایتهای بائقیماندهی یک SSD واقعا آزار دهنده است.
اگر تاکنون از هارد SSD استفاده کردهاید، به احتمال زیاد عبارت جمعآوری زباله(Garbage Collection) را هم شنیدهاید. جمع آوری زباله، یک پردازش در پسزمینه است که با انجام یک سری پردازشهای خاص در پسزمینه، به درایو مورد نظر اجازه میدهد که از کاهش بیش از حد سرعت در اثر اجرای مداوم چرخهی نوشتن و پاکسازی جلوگیری کند.