قابلیت اصلاح کدها از خطا ECC

قابلیت اصلاح کدها از خطا ECC

قابلیت اصلاح کدها از خطا ECC: کد تصحیح خطا (Error Correction Code) یا به اختصار ECC قابلیتی فوق العاده مهم در حافظه های RAM است که از به وجود آمدن خطا های احتمالی ناشی از پردازش داده ها جلوگیری می کند و به حفظ یکپارچگی داده ها کمک شایانی میکند. ECC در حافظه های RAM موجود در سرور های مراکز داده استفاده می شود. ECC روشی برای شناسایی و تصحیح خطاهای حافظه تک بیتی است. single-bit memory errors یا خطای حافظه تک بیتی یک خطای بوجود آمده در سرور است که از پردازش داده ها توسط سرور ها ناشی می شود. این خطاها تاثیر زیادی در عملکرد سرورها و سرویس دهی آنها می گذارد. دو نوع single-bit memory errors وجود دارد که عبارتند از : Hard errors و Soft errors.

  • همانطور که از نام Hard errors نیز معلوم است این ارور یا خطاها ناشی از صدمات فیزیکی وارد بر حافظه می باشد نظیر تغییرات بیش از حد دما، فشار ولتاژ و صدمات فیزیکی
  • Soft errors شامل ارور هایی هستند که در مکانیزم کاری حافظه اختلال ایجاد می کنند به عنوان مثال نوشتن و خواندن داده ها به صورت متفاوت از آنچه که برای آن در نظر گرفته شده است مانند به وجود آمدن تغییرات ولتاژ در مادربورد سیستم، اثرات ناشی از امواج رادیواکتیو، امواج فرابنفش و… که می توانند موجب بروز single-bit errors از نوع Soft در حافظه شوند. از آنجا که بیت های مقادیر برنامه ریزی شده شان را به صورت الکتریکی حفظ می کنند هر گونه تداخل در این گونه موارد منجر به بروز این خطا میشود (قابلیت اصلاح کدها از خطا ECC).

قابلیت اصلاح کدها از خطا ECC

در سرورها مکان های مختلفی برای بروز خطا ها وجود دارد که شامل دستگاه های ذخیره سازی، پردازنده سرور، ارتباطات شبکه و در انواع حافظه ها. برای دستگاه های Workstation یا ایستگاه های کاری (کلاینت ها و …) و همچنین سرور ها نباید این گونه خطا ها به وجود بیاید و بهترین کار این است که از حافظه های پشتیبانی کننده از تکنولوژی ECC استفاده شود. خب بهتر است به چگونگی کار کردن قابلیت ECC بپردازیم. همانگونه که میدانید پردازش داده ها در دستگاه های کامپیوتر بر اساس Bit (بیت) که کوچکترین واحد از یک داده است انجام می شود. یعنی نقل و انتقالات داده ها بر اساس بیت انجام می شود. یک بیت یا مقدار صفر دارد و یا مقدار یک. وقتی بیت ها با یکدیگر گروه بندی می شوند کد باینری (دودویی) را ایجاد می کنند. این کدهای باینری بین پردازنده CPU و حافظه RAM سیستم آدرس دهی و منتقل می شوند. به عنوان مثال 8 بیت کد باینری معادل 10110001 می باشد (قابلیت اصلاح کدها از خطا ECC).

حافظه های RAM پشتیبانی کننده از تکنولوژی ECC علاوه بر هشت بیت ذکر شده از یک بیت اضافی نیز استفاده میکنند که به Parity bit معروف است. Parity bit کد باینری 8 بیتی را به شکل 101100010 در می آورد. بیت (صفر) آخر همان Parity bit ما می باشد و برای شناسایی خطا های حافظه RAM مورد استفاده قرار میگیرد. اگر مجموع یک(1) های در یک خط از کد زوج باشد (به استثناء Parity bit) آن خط از کد Parity زوج نامیده میشوند. کد های بدون خطا یا در اصطلاح فنی Error-free code ها همیشه Parity شان زوج است. در هر صورت Parity دارای دو محدودیت است بدین شرح که Parity تنها قادر به شناسایی اعداد فرد از خطا میباشند مانند اعداد ( 1 ، 3 ، 5 ، 7 و … ) و از مقادیر زوج مانند ( 2 ، 4 ، 6 ، 8 و … ) را پشتیبانی میکنند. Parity همچنین قادر به تصحیح کردن خطا ها نیست و تنها خطا ها را میتواند شناسایی کند این جاست که ECC وارد عمل میشود.

حافظه پشتیبانی کننده از تکنولوژی ECC از بیت های Parity برای ذخیره سازی کدهای رمزنگاری شده به هنگام نوشتن داده ها در حافظه RAM استفاده میکند و کد ECC در همان لحظه در حافظه RAM نیز ذخیره میشود. وقتی داده ها از حافظه خوانده میشوند کد ECC ذخیره شده در حافظه RAM با کد ECC ای که هنگام خواندن داده ها تولید شده بود مقایسه میشود. اگر کد ECC ای که هنگام خواندن داده ها از روی حافظه RAM با کد ECC ای که در حافظه RAM هنگام نوشتن داده ها ذخیره شده بود برابر نبود کد ECC ای که هنگام نوشتن داده ها روی حافظه با کد Parity رمزنگاری شده بود از حالت رمزنگاری خارج میشود تا بیتی که دچار مشکل شده است شناسایی شود (الان دریافتید که بیت Parity دقیقاََ چگونه عمل میکند) سپس آن بیت بلافاصله تصحیح میشود. جداول Syndrome تکنیکی(ریاضیاتی) است که برای شناسایی و تصحیح بیت های به مشکل افتاده استفاده میشود. از آنجا که داده ها مورد پردازش قرار میگیرند تکنولوژی ECC به طور پیوسته کدها را با یک الگوریتم خاص برای شناسایی و تصحیح single-bit errors اسکن میکند.قابلیت اصلاح کدها از خطا ECC

تکنولوژی ECC در حافظه میتواند جلوی بروز اشتباهات جبران ناپذیری را در امر نقل و انتقالات اطلاعات مهم در شبکه بگیرد برای مثال فرض کنید که یک سند محرمانه را میخواهید در شبکه به یک سرور دیگر انتقال دهید حالا اگر یک بیت در این میان جا به جا شود و به مشکل بخورد آن سند دیگر به درد نمیخورد و مسائل و مشکلات ناشی از آن نیز غیر قابل جبران میشود. نویسنده : امیرحسین کریم پور منبع : ITPRO

مطالعه تکمیلی