PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : SSD یا Solid State Drive به زبان ساده و تخصصی



cccamhd.in
02-10-2013, 04:50 PM
این روز ها روی اکثر محصولات الکترونیکی و دیجیتال که ذخیره سازی داشته باشند نام SSD را میبینید . SSD ها که با هدف رفع محدودیت های هارد دیسک ها عرضه شدند تا جایگزین یکی از آخرین قطعات مکانیکی باقی مانده در کامپیوتر ها باشند و با رفع این محدودیت افزایش سرعت و پایداری بیشتری را فراهم آورند . در این بررسی به صورت خلاصه و تخصصی و البته به زبان ساده سعی شده ضمن معرفی SSD و مقایسه ساختاری آن با هارد دیسک ها به معرفی تکنولوژی های استفاده شده در آن و بررسی اجمالی حافظه های فلش NAND بپردازیم ، با ما همراه باشید ...


SSD مخفف عبارت Solid State Drive بوده که به معنای درایو حالت جامد می باشد. اما چرا حالت جامد ؟ جواب این سوال در ساختار یک SSD نهفته است که در ادامه مطلب به آن می پردازیم ، اما برای فهم بهتر مطالب بعدی ابتدا نگاهی مختصر به ساختار یک دیسک سخت متداول امروزی می اندازیم:
[Only registered and activated users can see links]هارد دیسک ها به طور معمول متشکل شده اند از یک یا چند دیسک صلب چرخنده ( پلاتر ) که با ماده ای مغناطیسی پوشیده شده است و همچنین تعدادی هد خواندن/نوشتن با خاصیت مغناطیسی که بالا و پایین هر پلاتر با فاصله ای بسیار کم در حد چند نانومتر قرار می گیرند و وظیفه خواندن و نوشتن اطلاعات را بر/از روی سطح پلاترها بر عهده دارند. نکته قابل توجه اینجاست که هدها نیز بر روی سطح پلاترها حرکت می کنند تا به تمام سطح و در نتیجه اطلاعات دسترسی پیدا کنند.
بدین ترتیب مشاهده می کنید که یک دیسک سخت دارای قسمت های مکانیکی است که موجب محدودیت های فراوانی می شود که از جمله مهم ترین آن ها می توان به موارد زیر اشاره کرد :
1- دسترسی به داده های مورد نظر نیازمند حرکت پلاترها و قرار گرفتن هد های خواندن/ نوشتن بالای آن می باشد که مدت زمانی به طول می انجامد. ( Seek Time )
2- به مرور زمان و با پر و خالی شدن دیسک ها کم کم داده ها در نقاط غیرهم جوار دیسک پخش شده و بدین ترتیب هد برای خواندن/نوشتن یک داده باید به سرعت به نقاط مختلف دیسک حرکت کند که منجر به افزایش تاخیر و افت سرعت می شود. ( Fragmented Data ) به همین علت Defrag کردن دوره ای برای جلوگیری از افت کارایی امریست ضروری.
3- ماهیت مکانیکی هارد دیسک ها منجر به ایجاد نویز ، مصرف و وزنی نسبتاً بالا ( البته در مقایسه با SSD ها ) می شود و همچنین با گذشت زمان کارایی آن افت کرده و درصد وقوع خرابی ها بالا می رود.
4- وجود هدها با فاصله بسیار کم از سطح پلاترها ، و همچنین دیگر ظرافت های مکانیکی ، هارد دیسک ها را تا حد زیادی به ضربه مخصوصاً در زمان فعالیت آسیب پذیر می کند.
این محدودیت ها مدت ها بود که کاربران تشنه سرعت را آزار می داد تا اینکه سرانجام بعد از گذشت سال ها و پیشرفت حافظه های Flash زمینه برای ایجاد یک تغییر بزرگ یعنی ورود SSD ها فراهم شد. SSD های رایج برای ذخیره اطلاعات از حافظه های فلش NAND استفاده می کنند که از ساختاری کاملاً دیجیتال بهره می برند و در نتیجه آن دیگر خبری از قطعات مکانیکی و محدودیت های ذکر شده در بالا نیست. اما آیا این بدین معنی است که SSD ها هیچ محدودیت و عیبی ندارند ؟؟! جواب این سوال در ساختار و نحوه عملکرد SSD ها نهفته است که در ادامه به طور کامل با آن آشنا می شویم.
حافظه های NAND Flash و انواع آن:
[Only registered and activated users can see links]
حافظه های NAND Flash یکی از انواع دو گانه حافظه های Flash هستند که پس از قطع برق نیز قادر به حفظ و نگه داری اطلاعات به صورت دائمی می باشند ( به اصطلاح Non Volatile ). این نوع از حافظه که اولین بار در سال 1989 توسط شرکت توشیبا معرفی شد در عصر حاضر به شکل گسترده ای در گوشی های موبایل ، دوربین های دیجیتال ، MP3 Player ها و از همه آشناتر USB Drive ها که حتماً تا به حال بارها و بارها از آن ها استفاده کرده اید ، به کار می رود.
حافظه های NAND داده ها را در آرایه ای از سلول ها که هر یک خود متشکل از تعدادی ترانزیستور از نوع Floating Gate هستند ذخیره می کنند. این سلول ها بسته به مقدار داده ای که می توانند ذخیره کنند به نوع SLC و MLC تقسیم بندی می شوند :

[Only registered and activated users can see links] [Only registered and activated users can see links]
1- SLC : مخفف عبارت Single Level Cell بوده که در آن هر سلول حافظه تنها قادر به نگه داری یک بیت داده می باشد و از آنجا که هر بیت تنها دو مقدار 0 و 1 را می پذیرد این مقادیر می توانند 0 و یا 1 باشند. این نوع از حافظه ها به دلیل محدودیت ذکر شده دارای ظرفیت ذخیره سازی پایینی هستند اما ویژگی هایی دیگری چون طول عمر ، سرعت بالا و همچنین مصرف کمتر به این نوع از حافظه برتری می بخشد.
2- MLC : مخفف عبارت Multi Level Cell بوده که می تواند بیش از یک بیت را در هر سلول حافظه ذخیره کند. به طور مثال ذخیره 2 بیت به ازای هرسلول که در نتیجه آن چهار حالت پدیدار می شود: 00 ، 01 ، 10 ، 11 . ( البته استفاده از حافظه هایی با ظرفیت بیش از 2 بیت به ازای هر سلول به دلیل افت چشمگیر کارایی و طول عمر حافظه ، در SSD ها رایج نیست و تنها در قطعات ارزان قیمتی چون USB Drive ها استفاده می شود. )
حافظه های نوع MLC نسبت به SLC دارای قدمت کمتری بوده و تنها مزیت آن ها قیمت پایین تر در حجم های یکسان بوده که علت آن هم تراکم بیشتر داده به ازای هر سلول می باشد ، هرچند که این مورد در نهایت باعث کاهش سرعت و طول عمر این نوع از حافظه نیز می شود.
در نهایت جدول زیر به خوبی گویای تفاوت های SLC و MLC می باشد :
[Only registered and activated users can see links]
تقسیمات حافظه های NAND :
از اجتماع تعدادی از سلول های حافظه واحدی به نام صفحه (Page) تشکیل می شود که کوچکترین واحد قابل خواندن/نوشتن در یک SSD می باشد. ( این واحد تقریباً هم ارز با Sector در هارد دیسک ها می باشد) حجم صفحات در محصولات مختلف بوده و می تواند 512 ، 2048 و یا 4096 بایت باشد.
در سطوح بالاتر ، از اجتماع تعدادی صفحه هم یک بلاک (Block) تشکیل می شود که بسته به حجم هر صفحه ممکن است حجم هایی مانند 16 ، 128 ، 256 و یا 512 کیلوبایت را در برگیرد. مجموعه ای از این بلاک ها سرانجام تشکیل یک Die یا به اصطلاح چیپ را می دهد و نهایتا 1 تا 8 عدد از این چیپ ها در یک بسته (Package ) قرار می گیرد. افزایش تعداد چیپ ها به ازای هر بسته ی حافظه ، باعث بالا رفتن سرعت خواندن و نوشتن می شود.

[Only registered and activated users can see links] در تصویر زیر یک عدد چیپ حافظه NAND ساخته شرکت اینتل را مشاهده می کنید که به کمک تکنولوژی ساخت 25nm تولید شده است:
[Only registered and activated users can see links]


ویژگی ها و محدودیت های اصلی حافظه های NAND :
یکی از مهمترین محدودیت های حافظه های NAND تعداد دفعاتی است که می توان اطلاعات آن را پاک کرد و مجدداً اطلاعات جدیدی بر روی آن نوشت) به اصطلاح Program/Erase cycles یا P/E cycles ) بعد از اتمام این مقدار ، سلول های حافظه شروع به فرسوده شدن می کنند و دیگر تضمینی برای عملکرد صحیح آن ها نیست. این مقدار برای حافظه های نوع SLC بین 50000 تا 100000 می باشد و در حال حاضر برای نوع MLC بین 3000 تا 5000 متغیر می باشد که متاسفانه با کوچکتر شدن تکنولوژی ساخت حافظه های Flash و افزایش تراکم ترانزیستور در واحد سطح این مقدار کمتر هم می شود ! البته نگران نباشید چون آزمایشات نشان داده اند که یک SSD مبتنی بر حافظه MLC تحت استفاده شدید هم تا چندین سال بدون مشکل خواهد بود.
محدودیت دیگر این حافظه ها این بوده که بر خلاف اینکه داده ها می توانند بر/از روی یک صفحه نوشته/خوانده شوند نمی توان فقط داده ی یک صفحه را پاک کرد و این عملیات تنها با پاک کردن مجموعه ای از صفحات که تشکیل یک بلاک را می دهند امکان پذیر است.
پیش از ادامه مطلب توجه به این نکته ضروریست که هم در هارد دیسک ها و هم در SSD ها وقتی شما دستور پاک کردن یک فایل را صادر می کنید تنها سیستم عامل از آن مطلع می شود و بلاک های مورد نظر تنها به صورت نرم افزاری ( به عبارت دیگر منطقی ) پاک می شوند ( در واقع سیستم عامل در لیست بلاک های خود آن را خالی شده تلقی می کند ) این در صورتیست که در سطح سخت افزاری هیچ اتفاقی نمی افتد تا زمانی که شما نیاز به نوشتن بر روی همان بلاک را پیدا کنید. در این حالت هارد دیسک می تواند به صورت مستقیم و بدون نیاز به هیچ گونه عملیات اضافه ای داده های جدید را بر روی داده های قبلی بازنویسی کند.
اما SSD ها در این بخش به مشکل بزرگی برخورد می کنند. بر خلاف دیسک های سخت حافظه های فلش قابلیت بازنویسی مستقیم را ندارند و پیش از نوشتن داده های جدید نیاز به پاک شدن دارند. در نتیجه در این حالت باید ابتدا کل بلاکی که حاوی صفحات غیر معتبر ( صفحاتی که از دید سیستم عامل قبلاً پاک شده اند ) است خوانده شود ، اطلاعات معتبر آن بر روی بلاک آزاد دیگری کپی شود تا بدین ترتیب صفحات حاوی اطلاعات نامعتبر آزاد شوند و بتوان اطلاعات جدید را بر روی آن ها نوشت. ( این فرآیند که در واقع به احیای صفحات حاوی داده های نامعتبر می پردازد Garbage Collection نامیده می شود ) در همین راستا بلاک اولیه نیز به طور کامل پاک شده و برای استفاده های بعدی تجدید می شود.
برای فهم بهتر این مطلب به تصویر و مثال زیر توجه کنید:

[Only registered and activated users can see links] در ابتدا صفحات A تا D که حاوی اطلاعات معتبر هستند بر روی بلاک X نوشته شده اند.(تصویر اول از سمت چپ ) بعد از گذشت زمان اطلاعات جدیدی نیز در قالب صفحات E تا H بر روی بلاک X نوشته می شوند. همچنین با انجام تغییراتی بر روی محتوای صفحات A تا D ( مثلا ویرایش یک فایل Word ) داده های جایگزین تحت نام های A´ تا D´ بر روی همان بلاک X ذخیره می شوند و محتوای صفحات A تا D دیگر معتبر نیست و باید در اولین فرصت تخلیه شوند که این امر ممکن نیست مگر آنکه کل بلاک X پاک شود. ( تصویر دوم از سمت چپ ) در نهایت برای استفاده مجدد از صفحات A تا D کل صفحات معتبر از روی بلاک X خوانده شده و بر روی بلاک Y نوشته می شود تا در آخر بتوان هم بلاک X را تخلیه کرد و هم صفحات A تا D را مجددا آماده دریافت اطلاعات جدید کرد.
این عملیات های اضافی نوشتن با عبارت Write Amplification شناخته می شود و نسبت آن از تقسیم مقدار حجمی که در عمل و به صورت فیزیکی نوشته می شود به مقداری که توسط کاربر درخواست شده است به دست می آید.
[Only registered and activated users can see links]
چیزی که مسلم است این مقدار همواره بزرگ تر و یا مساوی یک می باشد. در اینجا به طور مثال شما قصد نوشتن 1مگابایت را داشتید اما به واسطه Write Amplification علاوه بر نوشته شدن حجم در خواستی شما چندین مگابایت اضافه هم خوانده و نوشته می شود که در نهایت هم سرعت نوشتن را کاهش چشمگیری می دهد و هم از طول عمر سلول های حافظه می کاهد.
وجود این پدیده های ناخوشایند در حافظه های NAND ، طراحان را به فکر راه حل انداخت که در ادامه با مهم ترین آن ها به صورت خلاصه آشنا می شویم :
دستور TRIM : اجرا شدن این دستور نیاز به پشتیبانی همزمان سیستم عامل های چون ویندوز 7 یا MAC OS X 10.6.8 و Firmware به کار رفته در SSD را دارد. نحوه عملکرد آن هم بدین صورت است که همزمان با پاک کردن یک داده توسط کاربر اینبار علاوه بر اطلاع سیستم عامل ، به کمک فرستاده شدن دستور TRIM به کنترلر SSD ، صفحات مورد نظر فوراً غیر معتبر شناخته شده و عملیات احیای صفحات ( که قبلاً توضیح داده شد ) بر روی آن ها انجام می شود و در آینده در صورت نیاز به نوشتن مجدد به دلیل عدم نیاز به پاک کردن صفحات و به طبع آن کل بلاک ، عملیات نوشتن با حداکثر سرعت انجام می شود.
تصویر زیر به خوبی گویای مراحل انجام این دستور می باشد:
[Only registered and activated users can see links]مربع سبز رنگ = صفحات خالی
مرع آبی رتگ = صفحات حاوی داده های معتبر
مربع قرمز رنگ = صفحات حاوی داده های غیر معتبر
بدین ترتیب مشکل افت سرعت نوشتن داده ها به دلیل پر شدن SSD ، تا حد زیادی برطرف می شود.
Wear Leveling : این مورد الگوریتمی است که به کمک آن کنترلر SSD تا آنجا که ممکن است نوشتن داده ها را بر روی بلاک های مختلف به صورت مساوی پخش می کند به طوریکه هیچ بلاکی بیشتر از سایرین پاک و مجدداً نوشته نشود ، زیرا در غیر اینصورت به مرور زمان بلاک هایی که بیشتر مورد اسفاده قرار می گیرد زودتر از سایرین به پایان عمر خود می رسند و ایجاد مشکل می کنند.
Over Provisioning : کلیه کمپانی های تولیده کننده SSD بسته به صلاح دید خود باید مقداری از حافظه NAND به کار رفته در محصول خود را به انجام عملیات پشت پرده ای همچون Wear Leveling و Garbage Collection اختصاص دهند که همواره نیاز به یک فضای خالی دارند. این فضا که از دید کاربر مخفیست تقریباً حکم یک چرک نویس ! را دارد که نهایتا باعث کاهش Write Amplification و افزایش طول عمر سلول های حافظه می شود.
مقدار Over Provisioning از رابطه زیر محاسبه می شود :
[Only registered and activated users can see links]
یکی دیگر از محدودیت های حافظه های NAND قیمت بالا به ازای هر گیگابایت می باشد به طوریکه خرید SSD هایی با حجم بالا را مشکل می کند. البته با گذر زمان و کوچک تر شدن تکنولوژی ساخت چیپ های حافظه می توان انتظار کاهش قیمت را داشت کما اینکه در حال حاضر هم این قیمت به نسبت سال های قبل تا حد زیادی کاهش داشته است و این روال همچنان ادامه خواهد داشت.

کنترلر و ارتباط آن با حافظه های NAND :
تا اینجای کار با حافظه های NAND و ویژگی های آن که یکی از اصلی ترین بخش های یک SSD می باشد آشنا شدیم.
در این قسمت نوبت به معرفی کنترلر می رسد که یکی دیگر از مهم ترین اجزای SSD می باشد. یک کنترلر در حالت کلی پردازنده ای است که وظیفه اجرای دستورات Firmware را بر عهده دارد که شامل مدیریت و کنترل حافظه های NAND و اجرای دستورات ورودی و خروجی می باشد که در نتیجه اهمیت بسیار زیادی در عملکرد یک SSD ایفا می کند.
در حال حاضر کمپانی های همچون JMicron ، Marvell ، SandForce ، Intel و Indilinx در ساخت کنترلر فعالیت دارند.
مهمترین وظایف یک کنترلر به صورت تیتر وار به شرح زیر می باشد :


انجام و مدیریت عملیاتی مهمی چون Wear Leveling و Garbage Collection
تصحیح خطاهای احتمالی به وجود آمده در داده ها
مدیریت و اجرای دستورات ورودی و خروجی ( دستورات ورودی شامل نوشتن و دستورات خروجی شامل خواندن داده از حافظه های NAND می شوند )
انجام عملیات رمز گذاری بر روی داده ها بر ارتقای سطح امنیت اطلاعات

علاوه بر موارد بالا نوع حافظه های NAND و نوع رابط ورودی/خروجی نیز توسط کنترلر تعیین می شوند.
در تمام SSD ها یک کنترلر از طریق تعدادی کانال ارتباطی به طور همزمان به چندین چیپ حافظه NAND متصل می باشد که همین ویژگی کلیدی سرعت بالای SSD را در انجام عملیات خواندن و نوشتن رقم می زند. در اینجا باید به این نکته توجه داشت که هر چیپ حافظه NAND به تنهایی دارای سرعت خواندن و نوشتن پایینی است ولی این مشکل زمانی که به طور مثال از 8 و یا 16 چیپ به طور همزمان برای خواندن و نوشتن یک یا چند داده استفاده می شود به طور کامل برطرف می شود. اجازه دهید با چند تصویر و مثال ساده این عملکرد را توضیح دهیم :
[Only registered and activated users can see links]
مطابق تصویر فرض کنید می خواهید دو داده هریک با حجم 64 کیلوبایت را بر روی SSD بنویسید. ما در اینجا 4 چیپ حافظه هریک با حجم 32 کیلوبایت ( متشکل از 8 صفحه 4 کیلوبایتی ) در اختیار داریم که از طریق 4 کاناله جداگانه به کنترلر متصل می باشند. در اینجا هر داده 64 کیلوبایتی به دلیل حجم زیاد قابلیت تقسیم به 4 قسمت را داشته و توسط کنترلر به طور همزمان بر روی 4 چیپ حافظه نوشته می شود ، بدین ترتیب اگر تصور کنیم که هر چیپ به تنهایی دارای حداکثر سرعتی معادل 40 مگابایت بر ثانیه است می توان انتظار داشت در این حالت داده ها با حداکثر سرعت 160 مگابایت بر ثانیه نوشته شوند.
این حالت بیشتر در نوشتن و خواندن فایل های حجیم اتفاق می افتد.
[Only registered and activated users can see links]

در تصویر بعدی این بار تنها یک داده 4 کیلوبایتی در انتظار نوشته شدن می باشد که به دلیل حجم کم دیگر نمی توان آن را به 4 قسمت تقسیم کرد و به طور همزمان بر روی چیپ های حافظه نوشت. در اینجا این داده تنها بر روی یکی از چیپ ها با سرعت پایین نوشته می شود.
[Only registered and activated users can see links]
در تصویر دیگر اینبار 4 دستور ورودی هر یک با حجم 4 کیلوبایت به طور همزمان در صف نوشتن قرار گرفته اند که اینبار کنترلر می تواند به جای اینکه این دستورات را پشت سرهم اجرا کند هر 4 دستور را به طور همزمان بر روی چیپ های حافظه بنویسد که باز هم شاهد افزایش چشمگیر کارایی خواهیم بود.
این دو حالت اخیر در استفاده های معمول ، زیاد اتفاق می افتد و کنترلر SSD همواره سعی می کند تا با جمع آوری چندین دستورالعمل کم حجم آن ها را به طور همزمان اجرا کند تا شاهد افت کارایی نباشیم.
توجه داشته باشید که در هر سه حالت بالا هنگام خواندن داده ها هم حالتی مشابه رخ می دهد.
نکته ای که می توان از توضیح بالا استنباط کرد این است که به صورت تئوری با افزایش تعداد چیپ های حافظه و تعداد کانال ها امکان موازی سازی بیشتر عملیات خواندن و نوشتن و به دنبال آن افزایش سرعت فراهم می شود. به همین علت معمولاً SSD های با حجم های بالا از سرعت بیشتری برخوردار می باشند .
در آخر امیدواریم SSD ها از امروز برای شما کاملاً آشنا و ملموس باشند و با اشراف به معایب و مزایای آن ها بتوانید انتخاب درستی داشته باشید . همچنین پیشنهاد می کنیم برای مشاهده این تکنولوژی ها و مباحث در عمل ، به بررسی SSD های مختلف که روی وب سایت شهر سخت افزار منتشر شده است توجه فرمایید ...