SSDها نوع نسبتا جدید و بسیار سریعی از حافظه هستند که نسبت به هارد دیسکها دارای سرعت و امنیت انتقال دادهی بالاتری هستند. اما این حافظهها معایبی از جمله قیمت بالا و کند شدن به مرور زمان دارند. با ما باشید تا با هم به بررسی نحوهی عملکرد این حافظهها بپردازیم.
درایوهای حالت جامد نوعی از حافظهی سریع و قابلحمل بوده که در پی تصاحب جایگاه هارد دیسکها هستند. این حافظهها انواع مختلفی دارند که همگی بر پایه سلول فلش ناند هستند. همیشه شاهد بحث و گفتگو بین دوستداران تکنولوژی در مورد مزایا و معایب انواع ساختارهای NAND از جمله NAND مسطح در مقابل NAND عمودی یا MLC یا سلول چند لایه(Multi Level Cell) در مقابل TLC یا سلول سه لایه(Triple Level Cell) بودهایم. برای آشنایی بیشتر با SSDها، چند سوال در مورد حافظههای ذخیره سازی میپرسیم و سپس به تک تک آنها جواب میدهیم. SSDها با حافظههای مبتنی بر دیسک چرخان متفاوت هستند. بنابراین پیش از آشنا شدن با SSD ها، لازم است که ابتدا با هارد دیسکها آشنا شویم.
هارد دیسک چیست و چگونه کار میکند؟
یک هارد دیسک(Hard Disc Drive)، اطلاعات را بر روی دیسکهای مغناطیسی چرخان ذخیره میکند. این دیسکهای مغناطیسی را پلاتر (Platter) مینامند. در درون هر هارد دیسک یک بازوی فعالکننده نیز وجود دارد که سرهای مخصوص خواندن و نوشتن اطلاعات بر روی آن سوار هستند تا به همهجای دیسک دسترسی داشته باشند. بازوی مورد نظر، هنگام نیاز به خواندن یا نوشتن اطلاعات، این سرهای مخصوص خواندن و نوشتن را در مکان مناسب بر روی دیسک مغناطیسی قرار میدهد تا اطلاعات خوانده یا نوشته شوند.
از آنجا که برای خواندن یا نوشتن اطلاعات یا اجرای یک برنامهی خاص، سرهای درایو باید اطلاعات را از روی دیسک استخراج کرده یا روی آن بنویسند، و از آنجا که این دیسک دائم در حال چرخش است، مدت زمانی طول میکشد تا سرها دقیقا بر روی نقطهی مورد نظر قرار گرفته و عملیات استخراج یا نوشتن داده را آغاز کنند. ممکن است که برای استخراج داده، نیاز باشد که اطلاعات از چندین جای مختلف دیسک خوانده شوند. در این صورت دیسک باید چندین بار چرخیده و هربار یکی از نقاط مورد نظر را در مقابل سرهای مخصوص قرار دهد تا اطلاعات خوانده یا نوشته شوند. اگر درایوی در حالت خواب (Sleep) یا حالت انرژی کم (Low Power Mode) باشد، از آغاز به حرکت آن تا رسیدنش به حداکثر سرعت برای انتقال داده، چند ثانیه طول میکشد.
از ابتدا معلوم بود که هارد دیسکها توانایی آن را ندارند که با سرعت پردازندهها کار کرده و پا به پای آنها جلو بیایند. تاخیر در هارد دیسکها با میلی ثانیه سنجیده میشود؛ در حالی که در پردازندهها، تاخیر در حد چند نانو ثانیه است. بنابراین تاخیر هارد دیسکها چند میلیون برابر پردازندهها است! برای یک هارد معمولی حدود ۱۰ الی ۱۵ میلی ثانیه زمان نیاز است تا اطلاعات را بر روی دیسک یافته و شروع به خواندن آنها کند. با این حال صنعت هارد دیسک تمام تلاش خود را کرده است تا سرعت این محصولات را بالا ببرد. از جمله این تلاشها میتوان به کاهش اندازهی پلاترها، افزایش سرعت گردانندهی دیسک و استفاده از حافظهی کش(Cache) بر روی دیسک اشاره کرد. با وجود این تلاشها، سریعترین هارد دیسکهای قابل استفاده برای کاربران عادی در جهان، خانوادهی هاردهای VelociRapors شرکت وسترن دیجیتال هستند که دارای سرعت چرخش ۱۰,۰۰۰ دور بر دقیقه هستند. هارد دیسکهایی نیز وجود دارند که سرعت چرخش ۱۵,۰۰۰ دور بر دقیقه دارند، اما برای کاربران عادی قابل استفاده نیستند. مشکل هارد دیسکها این است که حتی سریعترین نمونههای آنها در جهان نیز سرعتشان در مقایسه با پردازندهها آن قدر کم است که حتی قابل درصد دهی هم نیست!
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) را هم شنیدهاید. جمع آوری زباله، یک پردازش در پسزمینه است که با انجام یک سری پردازشهای خاص در پس زمینه، به درایو مورد نظر اجازه میدهد که از کاهش بیش از حد سرعت در اثر اجرای مداوم چرخهی نوشتن و پاکسازی جلوگیری کند. تصویر زیر به درک بهتر این عملکرد کمک میکند.
در مورد عکس بالا این نکته را هم مد نظر داشته باشید که این درایو، از این واقعیت بهره گرفته است که با نوشتن ارزش جدید برای چهار بلوک ‘C’ ،B’ ،A، و ‘D میتواند با سرعت بسیار بالایی اقدام به نوشتن اطلاعات در صفحات خالی کند. این درایو همچنین دو بلوک جدید با نامهای E و H را نیز نوشته است. بلوکهای C، B، A و D بلوکهای کهنه محسوب میشوند. یعنی اطلاعات موجود در آنها به عنوان اطلاعات تاریخ مصرف گذشته علامتگذاری شدهاند. هنگامی که درایو مشغول خواندن یا نوشتن اطلاعات نبوده و در حال استراحت باشد، به طور اتوماتیک اطلاعات موجود در صفحات تازه را به یک بلوک جدید منتقل کرده و بلوک یا بلوکهای قدیمی را پاک میکند تا فضای خالی برای اطلاعات جدید آینده ایجاد شود. این بدان معنا است که دفعهی بعدی که SSD نیاز به نوشتن اطلاعات پیدا کند، میتواند به جای اجرای چندین باره چرخهی نوشتن و پاکسازی، اطلاعات را مستقیما در بلوک ایکس که اکنون خالی شده است بنویسد.
برای خرید کلیک کنید
منبع : زومیت