SSDها چگونه دادهها را ذخیره و مدیریت میکنند؟ این سؤال برای بسیاری از کاربران مطرح است، زیرا سرعت و عملکرد SSDها در مقایسه با هارد دیسکهای سنتی کاملاً متفاوت است. SSD با استفاده از حافظه فلش و بدون قطعات متحرک، عملکردی سریع و قابل اعتماد ارائه میدهد. اما این تنها بخشی از داستان است.
در مقاله SSD چیست ما کامل به جنبه های مختلف این حافظه پرداختیم، حالا برای آشنایی با ساختار داخلی SSD، تفاوتهای NAND، و مقایسه آن با تکنولوژیهای جدیدتر، ادامه این مقاله را بخوانید.
درایوهای حالت جامد یا SSD به این دلیل نامگذاری شدهاند که به قطعات متحرک یا دیسکهای چرخان وابسته نیستند. در عوض، دادهها در یک مجموعه حافظه فلش NAND ذخیره میشوند.
NAND از چیزی به نام ترانزیستورهای شناور گیت ساخته شده است. برخلاف طراحی ترانزیستورهای مورد استفاده در DRAM که باید چندین بار در هر ثانیه تازهسازی شوند، حافظه فلش NAND به گونهای طراحی شده است که حالت بار الکتریکی خود را حتی در زمان خاموش بودن دستگاه حفظ کند. این ویژگی NAND را به نوعی حافظه غیرفرار تبدیل میکند. در مقابل، DRAM حافظهای فرار است که اگر به سرعت تازهسازی نشود، دادههای خود را از دست میدهد.
مطالعه بیشتر : حافظه فلش NAND چیست؟
دیاگرام بالا طراحی سادهای از یک سلول فلش را نشان میدهد. الکترونها در گیت شناور ذخیره میشوند که سپس به عنوان “0” شارژ شده یا “1” بدون شارژ خوانده میشود.
بله، در حافظه فلش NAND، عدد 0 به معنای ذخیره داده در یک سلول است، که برخلاف تصوری است که معمولاً از صفر یا یک داریم.
حافظه فلش NAND به صورت یک شبکه سازماندهی شده است. کل آرایش شبکه به عنوان یک بلوک شناخته میشود، در حالی که ردیفهای فردی که شبکه را تشکیل میدهند، صفحات نامیده میشوند. اندازههای معمول صفحه 2K، 4K، 8K یا 16K است، با 128 تا 256 صفحه در هر بلوک. بنابراین، اندازه بلوک معمولاً بین 256KB تا 4MB متغیر است.
یکی از مزایای این سیستم باید بلافاصله واضح باشد. از آنجا که SSDها هیچ قطعه متحرکی ندارند، میتوانند با سرعتهایی بسیار بالاتر از هارد دیسکهای معمولی عمل کنند. نمودار زیر تأخیر دسترسی برای رسانههای ذخیرهسازی معمولی را بر اساس میکروثانیه نشان میدهد.
NAND به هیچ وجه به اندازه حافظه اصلی سریع نیست، اما سرعت آن چندین برابر سریعتر از هارد دیسکها است. در حالی که تأخیرهای نوشتن در حافظه فلش NAND به طور قابل توجهی کندتر از تأخیرهای خواندن هستند، با این حال همچنان از رسانههای چرخان سنتی سریعتر عمل میکنند.
دو نکته مهم در نمودار بالا قابل توجه است:
اول اینکه، مشاهده کنید چگونه افزودن بیتهای بیشتر در هر سلول NAND تأثیر زیادی بر عملکرد حافظه دارد. این تأثیر بیشتر برای نوشتنها است تا خواندنها، تأخیر معمولی حافظه سه سطحی (TLC) برای خواندن 4 برابر بدتر از حافظه تک سطحی (SLC) است، اما برای نوشتنها، 6 برابر بدتر است.
نکته دوم، تأخیرهای پاکسازی نیز تحت تأثیر قرار میگیرند. تأثیر این تغییرات حتی به صورت تناسبی نیست، حافظه TLC تقریباً دو برابر کندتر از حافظه MLC است، علیرغم اینکه فقط 50 درصد داده بیشتر ذخیره میکند (سه بیت در هر سلول به جای دو بیت). این امر همچنین برای درایوهای QLC صادق است که حتی بیتهای بیشتری را در سطوح ولتاژ مختلف در همان سلول ذخیره میکنند.
دلیل اینکه حافظه فلش NAND سهسطحی (TLC) کندتر از حافظه فلش دو سطحی (MLC) یا یک سطحی (SLC) است به نحوه انتقال دادهها در داخل و خارج سلول NAND مربوط میشود.
در حافظه SLC، کنترل کننده فقط باید بداند که بیت برابر با 0 است یا 1. در حافظه MLC، سلول ممکن است چهار مقدار داشته باشد : 00، 01، 10 یا 11. در حافظه TLC، سلول میتواند هشت مقدار داشته باشد، و در حافظه QLC، شانزده مقدار. خواندن مقدار صحیح از سلول نیازمند این است که کنترل کننده حافظه از ولتاژ دقیق برای تشخیص اینکه آیا سلول خاصی شارژ شده است یا نه استفاده کند.
یکی از محدودیتهای عملکردی SSDها این است که در حالی که میتوانند دادهها را بسیار سریع به یک درایو خالی بخوانند و بنویسند، نوشتن مجدد دادهها بسیار کندتر است.
دلیل اینکه در حالی که SSDها دادهها را در سطح صفحه میخوانند (یعنی از ردیفهای فردی در شبکه حافظه NAND) و میتوانند در سطح صفحه بنویسند، به شرطی که سلولهای اطراف خالی باشند، تنها میتوانند دادهها را در سطح بلوک پاکسازی کنند. این به این دلیل است که عمل پاکسازی حافظه فلش NAND نیاز به ولتاژ بالایی دارد. اگرچه از نظر تئوری میتوان NAND را در سطح صفحه پاکسازی کرد، مقدار ولتاژ مورد نیاز به سلولهای فردی اطراف سلولهایی که در حال بازنویسی هستند فشار وارد میکند. پاکسازی دادهها در سطح بلوک به کاهش این مشکل کمک میکند.
تنها راهی که یک SSD میتواند یک صفحه موجود را بهروزرسانی کند، کپی کردن محتوای کل بلوک به حافظه، پاکسازی بلوک و سپس نوشتن محتوای بلوک قدیمی + صفحه به روزرسانی شده است.
اگر درایو پر باشد و صفحات خالی در دسترس نباشند، SSD ابتدا باید بلوکهایی را که برای حذف علامتگذاری شدهاند اما هنوز حذف نشدهاند، اسکن کند، آنها را پاکسازی کند و سپس دادهها را به صفحهای که اکنون پاک شده است، بنویسد.
به همین دلیل SSDها با گذشت زمان ممکن است کندتر شوند، یک درایو عمدتاً خالی پر از بلوکهایی است که میتوانند بلافاصله نوشته شوند، در حالی که یک درایو عمدتاً پر بیشتر احتمال دارد که مجبور شود از طریق کل فرایند برنامه/پاکسازی عبور کند.
جمع آوری زباله یا “Garbage Collection” یک فرآیند پسزمینه است که به درایو کمک میکند تا تأثیر منفی چرخه برنامه/پاکسازی را با انجام برخی از کارها در پسزمینه کاهش دهد. تصویر زیر مراحل فرآیند جمعآوری زباله را نشان میدهد.
در این مثال، درایو از این واقعیت استفاده کرده است که میتواند دادهها را به صفحات خالی بسیار سریع بنویسد، با نوشتن مقادیر جدید برای چهار بلوک اول (A’-D’). همچنین دو بلوک جدید، E و H، نوشته شدهاند.
بلوکهای A-D اکنون به عنوان بلوکهای منسوخ علامتگذاری شدهاند، به این معنی که اطلاعاتی را شامل میشوند که درایو آن را بهعنوان اطلاعات قدیمی مشخص کرده است.
در زمان بیکاری، SSD صفحات تازه را به بلوک جدید منتقل میکند، بلوک قدیمی را پاکسازی کرده و آن را بهعنوان فضای خالی علامتگذاری میکند. این به این معنی است که دفعه بعد که SSD نیاز به انجام نوشتن داشته باشد، میتواند مستقیماً به بلوک X که اکنون خالی است بنویسد، بدون اینکه نیاز به انجام چرخه برنامه/پاکسازی باشد.
مفهوم بعدی که میخواهم بررسی کنم، TRIM است. وقتی فایلی را در ویندوز 11 از روی یک هارد دیسک معمولی حذف میکنید، فایل بلافاصله حذف نمیشود. در عوض، سیستمعامل به هارد دیسک میگوید که میتواند منطقه فیزیکی دیسک را که دادهها در آن ذخیره شدهاند، هنگام نوشتن بعدی بازنویسی کند.به همین دلیل است که ممکن است فایلها را بازیابی کنید (و به همین دلیل است که حذف فایلها در ویندوز معمولاً فضای فیزیکی دیسک را تا زمانی که سطل بازیافت خالی نشود، آزاد نمیکند).
در یک HDD سنتی، سیستمعامل نیازی ندارد که توجهی به جایی که دادهها نوشته میشوند یا وضعیت نسبی بلوکها یا صفحات داشته باشد. با SSD این موضوع مهم است.
دستور TRIM به سیستم عامل این امکان را میدهد که به SSD بگوید که میتواند هنگام انجام پاکسازی بلوک بعدی، از نوشتن مجدد برخی از دادهها صرفنظر کند.
این موضوع باعث کاهش مجموع دادههایی میشود که درایو مینویسد و طول عمر SSD را افزایش میدهد. همخوانی خواندن و نوشتن به NAND فلش آسیب میزند، اما نوشتنها آسیب بیشتری نسبت به خواندنها وارد میکنند.
Wear leveling به فرایندی اطلاق میشود که در آن، SSD به طور خودکار دادهها را بین سلولهای مختلف درایو توزیع میکند تا از آسیب زودهنگام به برخی از سلولها جلوگیری کند. وقتی درایو SSD مدتی فعال باشد، برخی از سلولها بیشتر از بقیه مورد استفاده قرار میگیرند. بدون wear leveling، این سلولها سریعتر از بقیه فرسوده میشوند. بنابراین، با این تکنیک، دادهها به طور یکنواخت در سطح درایو توزیع میشوند تا همه سلولها تقریبا با هم فرسوده شوند.
Write amplification به پدیدهای گفته میشود که در آن، برای انجام یک تغییر کوچک در دادهها، حجم بیشتری از دادهها نسبت به تغییر اصلی نوشته میشود. به عنوان مثال، اگر تغییراتی در یک فایل 4KB ایجاد کنید، ممکن است مجبور شوید 4MB داده برای بهروزرسانی آن 4KB بنویسید. این پدیده باعث میشود که نوشتن دادهها در SSDها بیشتر از آنچه که لازم است، باشد و در نتیجه موجب افزایش فرسایش و کاهش عمر درایو میشود. جمعآوری زباله و دستور TRIM میتوانند تأثیر این پدیده را کاهش دهند و با آزاد کردن فضای بیشتر و کاهش نوشتنهای اضافی، از تاثیر write amplification کم کنند.
اکنون باید واضح باشد که SSDها به مکانیزمهای کنترلی بسیار پیشرفته تری نسبت به هارد دیسکها نیاز دارند.
کنترلکنندههای SSD در یک کلاس خاص قرار دارند. این کنترلکنندهها معمولاً دارای حافظه DDR3 یا DDR4 برای کمک به مدیریت خود NAND هستند. بسیاری از درایوها همچنین کشهای سلول تکسطحی (SLC) دارند که به عنوان بافر عمل میکنند و با اختصاص NAND سریع به چرخههای خواندن/نوشتن، عملکرد درایو را افزایش میدهند.
از آنجایی که NAND فلش در SSD معمولاً از طریق یک سری کانالهای حافظه موازی به کنترلکننده متصل است، میتوان کنترلکننده درایو را بهعنوان انجام برخی از همان کارهای بالانس بار که در یک آرایه ذخیرهسازی سطح بالا انجام میشود، در نظر گرفت. SSDها RAID داخلی ندارند، اما متعادلسازی سایش، جمعآوری زبالهها، و مدیریت کش SLC همگی مشابه روشهایی هستند که در دنیای سیستمهای بزرگ استفاده میشوند.
برخی از درایوها همچنین از الگوریتمهای فشردهسازی دادهها برای کاهش تعداد کل نوشتارها و بهبود طول عمر درایو استفاده میکنند. کنترلکننده SSD مسئول اصلاح خطا است و الگوریتمهای کنترل خطاهای یکبیتی بهطور فزایندهای پیچیدهتر شدهاند.
در رابطه با رابطها، در ابتدا SSDها از پورتهای SATA مشابه هارد دیسکها استفاده میکردند. در سالهای اخیر، شاهد تغییر به درایوهای M.2 بودهایم، درایوهای بسیار نازک و چند اینچ طول که مستقیماً به مادربورد (یا در برخی موارد، به یک نگهدارنده در کارت PCIe) متصل میشوند.
تا کنون، تولیدکنندگان SSD با ارائه استانداردهای داده سریعتر، پهنای باند بیشتر، و کانالهای بیشتر در هر کنترلر، به همراه استفاده از کشهای SLC که پیشتر ذکر کردیم، عملکرد بهتری ارائه دادهاند. با این حال، در بلندمدت، پیشبینی میشود که NAND با چیزی جایگزین شود.
این چیزی که قرار است جایگزین NAND شود هنوز موضوع بحث است. هم حافظه مغناطیسی (MRAM) و هم حافظه تغییر فازی (PCM) به عنوان گزینههای احتمالی معرفی شدهاند. با این حال، هر دو فناوری هنوز در مراحل اولیه خود قرار دارند. همچنین باید چالشهای قابل توجهی را برای رقابت به عنوان جایگزین NAND پشت سر بگذارند.
این سوال که آیا مصرفکنندگان تفاوت را متوجه خواهند شد هنوز باز است. اگر از HDD به SSD و سپس به یک SSD سریعتر سیستم خود را ارتقا دادهاید، احتمالاً متوجه شدهاید که فاصله میان HDDها و SSDها بسیار بیشتر از فاصله میان SSDها است. بهبود زمانهای دسترسی از میلیثانیه به میکروثانیه بسیار مهم است، اما بهبود آنها از میکروثانیه به نانوثانیه ممکن است در بیشتر موارد کمتر از آن چیزی باشد که انسانها میتوانند واقعاً درک کنند.
برای پوشش دقیقتر موضوعات داغ رسانه های ذخیره ساز(هارد های SSD و همچنین HDD ) سایت ما SSD128 را دنبال کنید.