امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

کد تصحیح خطا | 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 در حافظه شوند. از آنجا که بیت های مقادیر برنامه ریزی شده شان را به صورت الکتریکی حفظ میکنند هر گونه تداخل در این گونه موارد منجر به بروز این خطا میشود.

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

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

وب سایت توسینسو

حافظه های 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 در حافظه میتواند جلوی بروز اشتباهات جبران ناپذیری را در امر نقل و انتقالات اطلاعات مهم در شبکه بگیرد برای مثال فرض کنید که یک سند محرمانه را میخواهید در شبکه به یک سرور دیگر انتقال دهید حالا اگر یک بیت در این میان جا به جا شود و به مشکل بخورد آن سند دیگر به درد نمیخورد و مسائل و مشکلات ناشی از آن نیز غیر قابل جبران میشود.


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات