مفهوم حافظه ECC

مفهوم حافظه ECC

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

تفاوت‌های حافظه ECC و غیر ECC

مفهوم حافظه ECC
مفهوم حافظه ECC

از لحاظ ظاهری، تفاوت‌هایی بین حافظه ECC نسبت به انواع حافظه‌های غیر ECC (مانند انواع مورد استفاده در رم لپ‌تاپ‌ها یا کامپیوترهای دسکتاپ) وجود دارد. حافظه ECC، شامل 9 تراشه حافظه به‌جای 8 تراشه است (تراشه‌های حافظه برای ذخیره داده‌هایی که به CPU جهت پردازش ارسال می‌شوند کاربرد دارند). این تراشه مازاد به‌عنوان تراشه اصلی تشخیص خطا و اصلاح مورد استفاده قرار می گیرد.

سیستم‌هایی که از حافظه ECC استفاده می‌کنند آسیب کمتری می‌بینند. طبق مطالعات انجام شده توسط شرکت Puget System که در سال 2014 انجام شد، نرخ خطای حافظه ECC حدود ۰.۰۹ درصد در مقایسه با انواع غیر ECC به میزان ۰.۶ درصد است. این موضوع نشان‌دهنده قابلیت بالای اطمینان به انواع حافظه ECC است.

چه دستگاه هایی از حافظه های ECC پشتیبانی می کنند ؟

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

به دلیل کاربرد سازمانی این نوع حافظه، به‌کارگیری CPU قوی که از حافظه ECC پشتیبانی کند، ضروری است. در پردازنده‌های اینتل، تنها مدل Xeon است که ECC را پشتیبانی می‌کند. در انواع دیگر پردازنده‌ها نیز پردازنده AMD از حافظه ECC پشتیبانی می‌کند.

نقطه ضعف حافظه ECC

با وجود مزایای ذکر شده، رم‌های ECC  جهت بررسی خطاها به زمان بیشتری نیاز دارند و در نتیجه، به نسبت انواع غیر ECC کندتر هستند. مطالعات شرکت Puget نشان داد که نرخ دریافت رم‌های ECC به میزان ۰.۲۵درصد کندتر از رم‌های غیر ECC است که حتی در برخی موارد به ۰.۴۴ درصد نیز می‌رسد بااین‌حال، تفاوت عملکرد حافظه ECC نکته‌ای قابل چشم‌پوشی است.

حافظه ECC چگونه کارمی‌کند؟

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

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

اکثر دستگاه‌های محاسباتی، داده‌ها را در تراکم‌های بزرگ‌تر 64 بیت (که به‌عنوان «کلمه» خوانده می‌شوند) انتقال می‌دهند. به‌جای تولید یک بیت توازن اضافی برای هر هشت بیت داده، ECC هفت بیت اضافی به ازای هر 64 بیت داده تولید می‌کند. این سیستم برای اطمینان از درستی 64 بیت دیگر یک الگوریتم پیچیده ریاضی را بر روی هفت بیت داده اضافی اجرا می‌کند. در حالتی که یک بیت نادرست باشد (خطای تک بیت) الگوریتم ECC می‌تواند داده‌ها را مجدداً بازسازی کند اما تنها می‌تواند خطاهای بزرگتر (دو یا چند بیت) را به سیستم اطلاع دهد.

حافظه رجیستر یا بافر

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