ECC، مخفف عبارت "Error-Correcting Code" یا "کد تصحیح خطا" است، که در سیستمهای کامپیوتری و سرورها برای تشخیص و تصحیح خطاهای حافظه استفاده میشود. هدف اصلی حافظه ECC افزایش دقت و قابلیت اطمینان حافظهها در ذخیره و بازیابی دادهها است. این نوع حافظه برای کاهش خطاهای احتمالی که به دلیل تداخلهای الکتریکی یا خرابیهای سختافزاری ممکن است رخ دهند، طراحی شده است.
قبل از به وجود آمدن حافظه ecc، خطا در حافظه با استفاده از بیت های برابری زوج یا فرد تشخیص داده می شد. در سیستم های رایانه ای داده ها در بسته های اطلاعاتی 8 بیتی ذخیره می شدند.
در روش برابری یک بیت اضافی که بیت نهم است، به سیستم در تشخیص وقوع خطا کمک می کند. اگر سیستمی از روش parity استفاده می کند، بیت های 1 و 0 (به اضافه بیت اضافی) در نهایت باید یک عدد زوج تولید کنند.
ECC در واقع یک فرمت از نوع parity است. به دلیل اینکه برای تشخیص خطاهای تک بیتی از چند بیت برابری اختصاصی استفاده می کند و همچنین قابلیت تصحیح خودکار آنها را نیز دارد. به جای یک بیت برابری برای هر 8 بیت داده، ECC از یک کد 7 بیتی، به جای یک بیت برابری برای هر 8 بیت داده استفاده می کند. که به طور خودکار برای هر 64 بیت داده ذخیره شده در حافظه، تولید می شود.
هنگامی که سیستم 64 بیت داده را می خواند، یک کد 7 بیتی دیگر تولید می شود و سپس با کد 7 بیتی اصلی مقایسه می شود. اگر کدها مطابقت داشته باشند، به این معنی است که داده ها بدون خطا هستند. اما در صورت عدم تطابق کدها، سیستم می تواند خطا را پیدا کرده و با مقایسه دو کد 7 بیتی آن را اصلاح کند. (روش مقایسه دو کد معمولاً به روش Reed-Solomon انجام می شود.)
حافظه کد تصحیح خطا (ECC) بیشتر در ایستگاه های کاری و سرورها یافت می شود. همچنین از خرابی سرور/ایستگاه کاری جلوگیری می کند. این حافظه ها برای متخصصان فناوری اطلاعات و مشاغل، از جمله موسسات مالی و شرکتهای خدمات ابری ، که در آن خرابی و قطع اطلاعات فاجعهبار است، بسیار کاربردی است.
تفاوت حافظه ECC و غیر ECC
از نظر فیزیکی، حافظه ECC با حافظه غیر ECC (مانند آنچه رم لپتاپ / دسکتاپ مصرفکننده استفاده میکند) متفاوت است، زیرا به جای 8 تراشه، 9 تراشه حافظه دارد (تراشههای حافظه برای ذخیره دادههایی استفاده میشوند که به CPU ارسال میشوند). این تراشه حافظه اضافی ECC RAM برای تشخیص و تصحیح خطا در بین هشت تراشه حافظه دیگر استفاده می شود.
سیستمهایی که حافظه ECC را اجرا میکنند، کمتر خراب میشوند. در سال 2014، Puget Systems معیارهایی را اجرا کرد و متوجه شد که حافظه ECC دارای نرخ خرابی 0.09 است، در حالیکه نرخ خرابی حافظه بدون کد تصحیح خطا 0.6 است.
حافظه ECC بارهای کاری درجه یک سازمانی را هدف قرار می دهد، بنابراین اکثر مادربردهای رایانه های شخصی مصرف کننده یا از رم ECC پشتیبانی نمی کنند و یا بدون عملکرد ECC آن را اجرا می کنند. برای استفاده از مزایای حافظه ECC، به یک مادربرد در سطح ایستگاه کاری / سرور نیاز دارید. همچنین حافظه ECC به دلیل داشتن تراشه حافظه اضافی، گرانتر از رم غیر ECC است.
همانطور که گفته شد حافظه ECC برای ایستگاه های کاری و سرورها طراحی شده است. به این ترتیب، یک CPU قوی برای پشتیبانی از حافظه ECC مورد نیاز است. برای پردازندههای اینتل، تنها Xeon از ECC پشتیبانی میکند.
معایب حافظه ECC
شاید تعجب آور باشد که RAM ECC کندتر از رم غیر ECC است، زیرا بررسی خطاها زمان بیشتری می برد. در همان مطالعه سال 2014 که در بالا ذکر شد، Puget دریافت که RAM دارای کد تصحیح خطا، 0.25 درصد کندتر از RAM غیر ECC است.
حافظه ECC چگونه کار می کند؟
حافظه ECC شامل بیت های حافظه اضافی و کنترل کننده های حافظه است که بیت های اضافی را در یک تراشه اضافی روی ماژول کنترل می کند. حافظه ECC از بیت های اضافی برای ذخیره یک کد رمزگذاری شده هنگام نوشتن داده ها در حافظه استفاده می کند و کد ECC در همان زمان ذخیره می شود. هنگامی که داده ها خوانده می شوند، کد ECC ذخیره شده با کد ECC که هنگام خواندن داده ها ایجاد شده است مقایسه می شود. اگر کد خوانده شده با کد ذخیره شده مطابقت نداشته باشد، توسط بیت های برابری رمزگشایی می شود تا مشخص شود کدام بیت اشتباه بوده است، سپس این بیت بلافاصله تصحیح می شود.
همانطور که داده ها پردازش می شوند، حافظه ECC دائما در حال اسکن کد با یک الگوریتم خاص برای شناسایی و تصحیح خطاهای حافظه تک بیتی است.
در واقع کد تصحیح خطا یک فرآیند ریاضی است که از صحت داده های ذخیره شده در حافظه اطمینان می دهد. در صورت بروز خطا، ECC همچنین به سیستم اجازه می دهد تا داده های صحیح را دوباره ایجاد کند.
منبع: www.tomshardware.com/reviews/ecc-memory-ram-glossary-definition,6013.html
مترجم: محبوبه سردشتیان