بررسی مزایای حافظه های ECC

ECC چیست؟

حافظه ECC که مخفف عبارت Error Correction Code می باشد، در سرورها یا سایر سیستم های داده‌ای با اهمیت، بسیار محبوب است؛ چرا که با شناسایی و اصلاح خودکار خطاهای حافظه، داده ها را در برابر خرابی و آسیب های احتمالی محافظت می کند. حافظه های استاندارد دارای تراشه‌ای با هشت بانک داده هستند که در این بانک ها داده ها ذخیره شده و در صورت نیاز به پردازنده ارسال می شوند. اما حافظه ECC ساختار متفاوتی دارد زیرا علاوه بر داشتن تراشه‌ای برای نگهداری داده ها، دارای یک تراشه حافظه اضافی است که به عنوان تشخیص دهنده خطا و تصحیح تراشه هشت بانکی دیگر عمل می کند.

قبل از ظهور حافظه ECC ، تشخیص خطا از طریق بیت های برابری زوج یا فرد انجام می شد. به این صورت که در سیستم های رایانه‌ای، داده ها معمولاً در بانک های 8 بیتی (بسته های اطلاعاتی) ذخیره می شدند. در روش زوج بودن یا parity ، یک بیت اضافی که همان بیت نهم است نوشته می شود که به سیستم کمک می کند بروز خطا را تشخیص دهد. اگر سیستمی از روش برابری یا همان زوج بودن استفاده کند، بیت های 1 و 0 (به علاوه بیت اضافی) باید در نهایت یک عدد زوج را ارائه دهند. به عنوان مثال اگر داده های نوشته شده روی حافظه “10011011” باشد، طبیعتا با اضافه کردن عدد 1 به داده ها به صورت (1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1) ، یک عدد زوج دریافت می کنید. اگر قرار باشد خطایی رخ داده و داده هایی که حافظه به سیستم ارسال می کند به شکل “10011001+1” باشد، سیستم متوجه می شود که داده ها خراب بوده و دچار خطا هستند.

ECC نیز درواقع یک فرمت از نوع برابری parity است، زیرا از چند بیت برابری اختصاص داده شده استفاده می کند تا نه تنها خطاهای تک بیتی را تشخیص دهد، بلکه آنها را به صورت خودکار نیز اصلاح کند. ECC به جای یک بیت برابری واحد برای هر 8 بیت داده، از یک کد 7 بیتی استفاده می کند که به طور خودکار برای هر 64 بیت داده ذخیره شده در حافظه تولید می شود. وقتی 64 بیت داده توسط سیستم خوانده می شود، یک کد 7 بیتی دوم ایجاد می شود، سپس با کد 7 بیتی اصلی مقایسه می شود. اگر کدها مطابقت داشته باشند، یعنی داده ها بدون خطا هستند. اما اگر کدها مطابقت نداشته باشند، سیستم می تواند خطا را پیدا کرده و با مقایسه دو کد 7 بیتی آن را برطرف کند. (روش مقایسه دو کد معمولاً توسط روش Reed-Solomon انجام می شود.)

بررسی مزایای حافظه های ECC

بررسی و خرید رم سرور

حافظه رجیسترشده چیست؟

حافظه رجیسترشده که معمولا به آن “بافر” نیز گفته می شود، دارای فناوری است که می تواند با حافظه های ECC جفت شود، اما ارتباط مستقیمی با آن نداشته باشد. حافظه رجیسترشده دارای یک “ثبات” است که بین رم و کنترل کننده حافظه سیستم قرار داشته و باعث کاهش حجم بار وارده بر روی کنترل کننده حافظه می شود. این قابلیت باعث می شود تا ماژول های حافظه بیشتری در یک زمان مشخص بتوانند مورد استفاده بگیرند.

نمیتوان همواره یک حافظه ECC را به عنوان یک حافظه رجیسترشده نیز در نظر گرفت، زیرا ممکن است گاهی فقط به قابلیت رفع خطا حافظه های ECC نیاز داشته باشیم. اما در عوض تقریباً تمام حافظه های رجیسترشده، یک نوع حافظه ECC محسوب خواهند شد.

بررسی نرخ خطا حافظه ECC

حافظه ECC از لحاظ پایداری و قابلیت اعتماد نسبت به حافظه های استاندارد برتری دارد، اما بسیاری از اوقات هم اینطور نیست. برای فهمیدن اینکه آیا واقعاً این حافظه ها قابل اطمینان‌تر هستند یا خیر، ما در 3 سال گذشته میزان خرابی حافظه های ECC را با سایر حافظه ها بررسی کردیم.

نکته‌ای که باید توجه داشته باشید این است اگرچه برندهای مختلف حافظه در این مقایسه استفاده شدند، اما به دلیل ضعف دائمی و خرابی بیشتر آنها، در نهایت تصمیم گرفتیم که فقط از حافظه های دسک‌تاپ و سرور Kingston در تجزیه و تحلیل خود استفاده کنیم. در واقع انجام این مقایسه در یک برند تجاری خاص، مقایسه‌ای واقع بینانه‌تر و درست خواهد بود.

بررسی مزایای حافظه های ECC

همانطور که نمودار بالا نشان داده شده، میزان خرابی حافظه های ECC بسیار کمتر از مدل های غیر ECC می باشد. حتی با اینکه نرخ خرابی یک حافظه استاندارد برند کینگستون بسیار مناسب است (حدود 1 درصد)، اما همانطور که انتظار داشتیم حافظه ECC با میانگین خرابی 24/0 درصد، بسیار بهتر و قابل اعتمادتر می باشد.

نکته ای که باید توجه داشت این است که طی سه سال گذشته و به مرور زمان، حافظه های کینگستون از قابلیت اطمینان بیشتری برخوردار شده‌اند. این موضوع برای حافظه های ECC نیز صدق می کند. جالب است بدانید در سال جاری، حتی یک مورد خرابی حافظه های ECC گزارش داده نشده است.

بررسی مزایای حافظه های ECC

بررسی مزایای حافظه های ECC

در حالی که نرخ خرابی بسیار پایین این حافظه ها یک مزیت عالی محسوب می شود، اما بهتر است تا گاهی نیز درباره علت خرابی حافظه ها بررسی کرده و اطلاعات داشته باشیم. خطاهای حافظه یا بی ثباتی سیستم، معمولا از یک ایراد و خرابی ساده POST نشات می گیرد. البته POST نشدن سیستم و بروز چنین خطاهایی معمولا بر داده های ذخیره شده در سیستم تأثیر نمی گذارد. اما از طرف دیگر کنترل نکردن و عدم توجه به خطاهایی که مستقیما در حافظه رخ می دهند، باعث خراب شدن داده ها می شوند.

نکته باورنکردنی در مورد نمودارهای بالا این است که طی سه سال گذشته، حتی یک مورد خطای حافظه یا بی ثباتی سیستم ناشی از حافظه های ECC نداشته‌ایم. هنگامی که حافظه را از نظر خطا آزمایش کردیم، تنها خرابی به دلیل عدم وجود POST یا راه اندازی مجدد سیستم بود. در حالی که مسئله راه اندازی مجدد هم یک ایراد محسوب می شود، اما با این حال 25٪ خرابی مربوط به راه اندازی مجدد سیستم فقط در دو مورد خاص ایجاد شده بود که هر دو آنها نیز در سال 2011 رخ داده بودند.

از طرف دیگر خرابی های تشخیص داده شده در حافظه های غیر ECC ، به طور عمده مربوط به خطاهای حافظه می باشد. در واقع تنها 9٪ از خرابی ها (بدون در نظر گرفتن مواردی مانند توقف فرآیند post یا سرعت نادرست) ، از نوع مشکلاتی بودند که داده های شما را در معرض خطر قرار نمی دهد. اما سایر 91٪ مربوط به مشکلاتی بودند که بدون شک نمی خواهید در سرور یا سیستم هایی که حاوی داده های ارزشمندی است رخ دهد.

نکته مهمی که باید بیان شود این است که اگرچه حافظه های غیر ECC در حال حاضر حدود 1٪ خرابی دارند، اما آزمایشی که روی همه سیستم ها انجام دادیم نشان می دهد که این نرخ  حدود 4 درصد می باشد. بنابراین حافظه ECC مطمئناً برای سرورها و سیستم هایی با داده های بسیار مهم و با ارزش کاربردی است، در حالیکه حافظه های غیر ECC برای استفاده در سیستم های خانگی یا محل کار از پایداری کافی برخوردار هستند.

معایب و نقاط ضعف حافظه های  ECC

ECC نسبت به حافظه های سنتی و استاندارد، بسیار پایدارتر طراحی شده و سوابق خرابی های آن در چند سال اخیر نیز این مورد را تایید کرده است. با این حال استفاده از حافظه های ECC چند نکته منفی نیز دارد. اولین و بارزترین آن این است که هر رایانه‌ای نمی تواند از حافظه ECC استفاده کند. اکثر سرورها و مادربورد سیستم های workstation به حافظه ECC  احتیاج دارند، اما بیشتر سیستم های دسک‌تاپ یا با حافظه ECC به هیچ وجه کار نمی کنند یا عملکرد ECC در آنها غیر فعال است.

دوم اینکه به دلیل تراشه حافظه اضافی و ماهیت پیچیده‌تر حافظه های ECC ، هزینه آنها نیز گران‌تر می باشد. سرانجام اینکه حافظه ECC نسبت به حافظه های غیر ECC کمی کندتر هستند. در واقع تولیدکنندگان این حافظه اعلام کرده‌اند به دلیل زمان اضافی که سیستم برای بررسی هرگونه خطا صرف می کند، باعث می شود تا سرعت حافظه ECC تقریباً 2٪ کندتر از سایر حافظه های استاندارد باشد.

نتیجه گیری

اگر یک سرور یا سیستمی دارید که داده های بسیار ارزشمندی در آن ذخیره شده و ثبات سیستم اهمیت بالایی برایتان دارد، معایبی که درباره حافظه های ECC گفتیم آنچنان هم به چشم نخواهند آمد. همانطور که ممکن است بدانید هزینه های خرید حافظه به تازگی بسیار پایین آمده و حتی افزایش 20 درصدی قیمت نیز مبلغ چندان زیادی نخواهد شد. در مورد کاهش عملکرد نیز مقدار 2٪ به قدری ناچیز و کم است که در برابر قابلیت های حافظه ECC اصلا مورد مهمی محسوب نمی شود.

در عوض با هزینه کردن منطقی و خرید یک حافظه ECC ، می توانید از عملکرد عالی و قابلیت اطمینان آن بهره ببرید. هنگامی که داده های با ارزش شما در امنیت کامل بوده و درگیر خطاهای سیستمی نشوند، مشخصا هزینه های مالی و مبحث سرعت کم این حافظه نادیده گرفته می شود. در واقع پیشنهاد ما این است هر زمانی که شرایط کافی را داشتید و برایتان امکان پذیر بود، از حافظه های ECC استفاده کنید.