چرا حافظه بهطور کامل قابلاعتماد نیست
سلولهای حافظه فیزیکی گاهی میتوانند مقادیر ذخیرهشدهشان توسط نویز الکتریکی، تشعشع، یا نقصهای تولید تغییر یابند، رویدادی به نام Soft Error وقتی که یک برگشت گذرای بیت باشد نه آسیب دائمی سختافزاری. بدون هیچ محافظتی، چنین خطایی میتواند بیسروصدا داده یا دستورات یک برنامه را بدون هیچ هشداری خراب کند.
سادهترین رویکرد: پریتی
سادهترین روش تشخیص خطا Parity است، که یک بیت اضافی تکی به یک گروه از بیتهای داده اضافه میکند، طوری تنظیمشده که تعداد کل بیتهای ۱ در گروه، شامل بیت پریتی، همیشه زوج باشد (یا همیشه فرد، بسته به قرارداد انتخابشده). اگر یک بیت تکی توسط یک خطا برگردد، محاسبه مجدد پریتی هنگام خواندن یک عدمتطابق را آشکار میکند، که نشان میدهد یک خطا رخ داده است.
بیتهای داده: 1011
تعداد بیتهای ۱: 3 (فرد)
بیت پریتی اضافهشده برای فرد کردن مجموع به زوج: 1
ذخیرهشده: 1011 1
اگر یک بیت در طول ذخیرهسازی برگردد: 1001 1
بررسی پریتی محاسبهمجددشده شکست میخورد → خطا تشخیص داده میشودپریتی میتواند تشخیص دهد یک خطای تکبیتی رخ داده، اما نمیتواند تعیین کند کدام بیت خاص نادرست بوده، و بنابراین نمیتواند خطا را تصحیح کند، فقط آن را پرچمگذاری میکند.
فراتر رفتن: کدهای تصحیحکننده خطا
حافظه ECC (Error-Correcting Code) این ایده را با استفاده از چند بیت اضافی که طوری چیده شدهاند که نهتنها یک خطا قابلتشخیص است، بلکه بیت خرابشده خاص میتواند شناسایی و بهطور خودکار به مقدار درست خود برگردانده شود، بدون هیچ نیازی به واکشی مجدد داده از یک منبع کندتر، گسترش میدهد.
یک رویکرد رایج، مبتنی بر اصول Hamming Code، از چند بیت پریتی که در مکانهای خاصی درون داده قرار گرفتهاند استفاده میکند، که هرکدام یک زیرمجموعه متفاوت و همپوشان از بیتهای داده را پوشش میدهند. وقتی یک خطا رخ میدهد، ترکیب خاصی از اینکه کدام بررسیهای پریتی شکست میخورند دقیقاً مشخص میکند کدام بیت نادرست است، چون هر موقعیت بیت با ترکیب منحصربهفردی از گروههای پریتی که به آنها تعلق دارد مطابقت دارد.
کجا این محافظت استفاده میشود
محافظت ECC معمولاً در حافظه سرور و مرکز داده استفاده میشود، جایی که خرابی بیسروصدای داده میتواند پیامدهای جدی داشته باشد، در حالی که اغلب در سختافزار مصرفی ارزانتر برای کاهش هزینه حذف میشود، و یک ریسک کوچک از خطاهای تشخیصدادهنشده را در ازای قیمت پایینتر حافظه میپذیرد.
چرا این موضوع فراتر از تراشههای حافظه اهمیت دارد
همان اصل زیربنایی، افزودن افزونگی ساختاریافته برای تشخیص یا تصحیح خطا، فراتر از تراشههای حافظه منفرد به تکنیکهای قابلیت اطمینان ذخیرهسازی در مقیاس بزرگتر گسترش مییابد، مانند آرایههای دیسک افزونه که بعداً در این مجموعه بحث خواهند شد، جایی که کل درایوهای فیزیکی میتوانند خراب شوند و داده باید همچنان قابلبازیابی باشد.