(RAM (Error Correction Code در سرورها یا سیستمهای دیگر با داده های دارای ارزش بالا بسیار محبوب است ، زیرا با شناسایی و تصحیح خطاهای حافظه ، در برابر خرابی اطلاعات محافظت می کند. RAM استاندارد از بانکهای هشت تراشه حافظه استفاده می کند که در آن داده ها ذخیره شده و در صورت تقاضا به CPU ارائه می شود. رم ECC متفاوت است زیرا دارای یک تراشه حافظه اضافی است که به عنوان تشخیص خطا و تصحیح برای هشت تراشه RAM دیگر نیز عمل می کند.
قبل از حافظه ECC ، تشخیص خطا از طریق بیت برابری parity یکنواخت انجام می شود. در رایانه ، داده ها معمولاً به صورت تکه های 8 بیتی ذخیره می شوند. هنگامی که از parity استفاده می شود ، یک بیت نهم اضافی – یا بیت برابری parity – نوشته شده است که به سیستم اجازه می دهد هنگام بروز خطا ، سیستم را تشخیص دهد. اگر سیستم حتی از برابری استفاده می کند ، 1 و 0 (از جمله بیت برابری parity اضافی) باید به یک عدد مساوی اضافه شوند.
به عنوان مثال:
اگر داده های نوشته شده به RAM “10011011” باشد ، از آنجا که حتی از parity نیز استفاده می شود ، 1 به داده ها اضافه می شود به طوری که هنگام اضافه کردن اعداد (1 + 0 + 0 + 1 + 1 + 0) + 1 + 1 + 1 ) ، یک عدد مساوی دریافت می کنید. اگر خطایی رخ دهد و داده هایی که RAM به سیستم ارسال می کند در عوض “100110 0 1 + 1″ (که به یک عدد عجیب اضافه می شود) ، سپس سیستم می داند که داده ها خراب هستند.
ECC با استفاده از چندین بیت برابری parity که به بخشهای بزرگتر داده اختصاص داده می شود نه تنها خطاهای یک بیت را تشخیص می دهد بلکه به صورت خودکار آنها را تصحیح می کند. به جای یک بیت برابری parity واحد برای هر 8 بیت داده ، ECC از یک کد 7 بیتی استفاده می کند که به طور خودکار برای هر 64 بیت از داده های ذخیره شده در RAM تولید میشود. هنگامی که 64 بیت داده توسط سیستم خوانده می شود ، یک کد 7 بیتی دوم تولید می شود ، و سپس با کد 7 بیتی اصلی مقایسه می شود. اگر کدها مطابقت داشته باشند ، داده ها عاری از خطا هستند. اگر کدها مطابقت نداشته باشند ، سیستم می تواند خطا را تعیین کند و با مقایسه دو کد 7 بیتی ، آن را برطرف کند.
روش مقایسه این دو کد معمولاً توسط کد Reed-Solomon انجام می شود.
Registered Memory چیست؟
حافظه ثبت شده (Registered Memory) (که اغلب به آن “بافر” گفته می شود) از فناوری ای استفاده می کند که اغلب با RAM ECC ارتباط برقرار می کند ، اما به طور مستقیم با آن مرتبط نیست. حافظه ثبت شده (Registered Memory) دارای یک “register” است که بین RAM و کنترل کننده حافظه سیستم قرار دارد و باعث می شود بار کمتری که روی خود کنترلر حافظه قرار می گیرد ، کم شود. این اجازه می دهد تا از ماژول های حافظه بیشتری در یک زمان استفاده شود تا در غیر این صورت ممکن باشد.
در حالی که رم های ECC همیشه Register نمی شوند (از آنجا که ممکن است شما بدون نیاز به مقادیر بزرگی که توسط حافظه ثبت شده (Registered Memory) امکان تصحیح خطا در ECC وجود دارد) نیاز به تصحیح خطا دارید ، تقریباً تمام حافظه های ثبت شده ECC خواهند بود. این فقط به این دلیل است که سیستم هایی که از مقدار زیادی حافظه استفاده می کنند تقریباً همیشه در اولویت ثبات هستند.
تجزیه و تحلیل میزان عدم موفقیت ECC
رم ECC از نظر تئوری با ثبات تر و قابل اعتماد تر از RAM استاندارد است ، اما بسیاری از تئوری ها با واقعیت مطابقت ندارد. برای اینکه ببینیم آیا رم ECC واقعاً قابل اطمینان تر است ، ما طی 3 سال گذشته نرخ شکست خود را برای رم های ECC و غیر ECC جستجو کردیم.
نکته ای که باید آن توجه داشته باشید این است که در حالی که ما در طی این سالها بسیاری از مدل های مختلف حافظه را امتحان کرده ایم ، همیشه به دلیل ضعف مداوم پایین آنها به کینگستون بازگشتیم – در بعضی موارد تا 6 برابر بهتر! به همین دلیل ، ما تصمیم گرفتیم که در تحلیل میزان خرابی ، فقط حافظه دسکتاپ / سرور کینگستون را درج کنیم. از جمله مدل های دیگر ، باعث می شود رم ECC حتی بهتر به نظر برسد ، اما احساس می کنیم مقایسه در یک مارک واحد مقایسه ای واقع بینانه تر است.
همانطور که در نمودار بالا نشان داده شده است ، رم ECC از میزان خرابی بسیار کمتری نسبت به رم غیر ECC برخوردار است. میزان شکست٪1 درصدی RAM غیر ECC کینگستون هنوز بسیار خوب است (به همین دلیل در درجه اول از Kingston استفاده می کنیم) ، اما رم ECC حتی با میانگین شکست 24/0٪ حتی بهتر است.
نکته:
قابل توجه این است که طی سه سال گذشته ، رم کینگستون با گذشت زمان حتی قابل اعتماد تر شد. این مسئله هم برای رم های ECC و هم غیر ECC صحیح است و در حال حاضر در جایی است که ما امسال اصلاً یک مورد خرابی ECC RAM را نداشته ایم.
در حالی که مطمئناً میزان شکست پایین بسیار عالی است ، ارزش آن را دارد که کمی بیشتر تحقیق کنیم تا علت این خرابی چیست. خطاهای حافظه یا بی ثباتی سیستم بسیار بدتر از یک عدم موفقیت در POST است. یک خرابی حافظه RAM که باعث عدم POST سیستم می شود ، ناراحتی است ، اما بعید است که روی داده های ذخیره شده روی سیستم تأثیر بگذارد. از طرف دیگر ، خطاهای حافظه در صورت عدم کنترل ، احتمال خراب شدن اطلاعات را دارند.
نکته جالب در مورد نمودارهای بالا این است که طی سه سال گذشته ، ما هیچ موردی از خطاهای حافظه یا بی ثباتی سیستم ناشی از رم ECC نداشته ایم. هر خرابی منفرد ناشی از عدم وجود POST یا اجرای مجدد سیستم در هنگام آزمایش حافظه برای خطاها بود. از طرف دیگر ، خرابی برای رم غیر ECC به طور عمده ناشی از خطاهای حافظه است. در حقیقت ، تنها 9٪ از خرابی ها (بدون ارسال ، سایر ارسال ها / اشتباه و اندازه و سرعت نادرست) نوع خرابی بوده اند که باعث نمی شود اطلاعات شما در معرض خطر قرار بگیرد. 91٪ دیگر از خرابی ها نوعی بود که شما کاملاً نمی خواهید در یک سرور یا سیستم دیگر که حاوی داده های ارزشمند است ، مشاهده کنید.
نکته:
نکته ای که می خواهیم روشن کنیم این است که اگرچه RAM غیر ECC در حال حاضر حدود 1٪ شکست دارد ، اما آزمایشاتی که در تمام سیستمهای خود انجام می دهیم اکثر مشکلات را به خود جلب می کند. در این زمینه ، میزان خرابی برای رم غیر ECC کینگستون تنها در حدود 4/4 درصد است ، یا تقریباً یک عدد برای هر 250 قلمی که می فروشیم. بنابراین در حالی که حافظه رم ECC مطمئناً برای سرورها و سیستمهایی که دارای داده های با ارزش هستند بسیار مهم است ، رم غیر ECC برای استفاده در اکثر سیستم های خانه یا کار نسبت به اندازه کافی پایدار است.
خطوط جانبی رم ECC
ECC به گونه ای طراحی شده است که از RAM سنتی پایدارتر باشد و سوابق خرابی ما نشان می دهد که در واقع چنین است. با این حال ، در اینجا چند نکته جانبی برای استفاده از رم ECC وجود دارد. اولین و بدیهی ترین این است که هر رایانه ای نمی تواند از حافظه ECC استفاده کند. بیشتر سرورها به رم ECC احتیاج دارند ، اما اکثر سیستم های دسک تاپ یا به هیچ وجه با رم ECC کار نمی کنند یا عملکرد ECC غیرفعال می شود.
با توجه به تراشه اضافی حافظه و ذاتا پیچیده تر رم ECC ، هزینه آن بیشتر از رم غیر ECC است. مقدار آن متفاوت است ، اما انتظار دارید که بسته به اندازه حافظه ، تقریباً 10-20٪ بیشتر بپردازید.
کندی رم ECC نسبت به رم غیر ECC
رم ECC کمی آهسته تر از RAM غیر ECC است. بسیاری از تولید کنندگان حافظه می گویند که رم ECC تقریباً 2٪ کندتر از RAM معمولی به دلیل زمان اضافی که برای بررسی هرگونه خطای حافظه در نظر گرفته می شود. برای تأیید این موضوع ، ما چندین معیار را بررسی کردیم که روی هر سیستمی که تولید می کنیم اجرا می شود. با استفاده از CPU های قابل مقایسه (به عنوان مثال: Intel Core i7 4771 3.5GHz Quad Core 8MB در مقابل Intel Xeon E3-1275 V3 3.5GHZ Quad Core 8MB) متوجه شدیم که این تخمین 2٪ تقریباً صحیح است. معیارهای خود ما نشان داد که عملکرد عملکردی از 0.72 تا 2.2٪ است که با توجه به انحرافات تست طبیعی ، مطابق با تخمین 2٪ است.