مکانیزمهای محافظت از مموری
Memory scrubbing شامل خواندن از هر مکان حافظه کامپیوتر، تصحیح خطاهای بیتی (در صورت وجود) با کد تصحیح خطا (ECC) و نوشتن دادههای اصلاح شده در همان مکان است.
محافظت از یکپارچگی دادهها در حافظه از جنبه های مهم سیستم های کامپیوتری مدرن است. برخی از جنبه های سخت افزار، مانند خطاهای نرم، پیش بینی یا تشخیص آنها دشوار یا غیرممکن است. این به دلیل ماهیت تصادفی آنها ناشی از پدیدههای فیزیکی مانند برخورد ذرات نوترون و آلفا به تراشه است. علاوه بر این، برای برخی از حافظههای در حال ظهور که در حال تحقیق هستند، کششهای مختلف (به عنوان مثال مقاومت) در سلول ها با گذشت زمان بدتر میشوند که میتوانند حالت خود را تغییر دهند.
برای محافظت از حافظه، سازوکارهایی مانند کدهای تصحیح خطا (ECC) اغلب استفاده میشوند. آنهایی که به طور معمول تصحیح خطای تک بیتی و تشخیص خطای دو بیتی (SECDED) را ارائه میدهند. اگرچه خطاهای بیت منفرد یک رویداد مستقل هستند، اما دو بازدید جداگانه هنوز هم میتوانند دو بیت متفاوت را در یک کلمه یکسان قرار دهند. به عبارت دیگر، خطاهای چند بیتی غیرهمجوار (به عنوان مثال اشعههای کیهانی که به همان ردیف برخورد می کنند) قابل اصلاح نیستند.
به دلیل تراکم بالای ادغام تراشههای حافظه کامپیوتری مدرن، ساختارهای سلولهای حافظه فردی به اندازه کافی کوچک شده اند تا در برابر اشعههای کیهانی و یا انتشار ذرات آلفا آسیب پذیر باشند. خطاهای ناشی از این پدیدهها را خطاهای نرم مینامند. بیش از 8٪ از ماژولهای DIMM حداقل یک خطای قابل اصلاح در سال تجربه میکنند. این میتواند برای حافظههای مبتنی بر DRAM و SRAM مشکل ساز شود. احتمال خطای نرم در هر بیت حافظه منفرد بسیار ناچیز است. با این وجود، همراه با مقدار زیادی حافظه، رایانههای مدرن – به ویژه سرورها – به مجهز شدهاند و همراه با دوره های طولانی مدت به روز، احتمال خطاهای نرم در کل حافظه نصب شده قابل توجه است.
اطلاعات موجود در حافظه ECC به اندازه کافی ذخیره میشود تا خطای تک بیتی را برای کلمه حافظه تصحیح کند. از این رو، یک حافظه ECC میتواند از پاک کردن محتوای حافظه پشتیبانی کند. یعنی، اگر کنترلر حافظه به طور سیستماتیک از طریق حافظه اسکن میکند، میتوان خطاهای تک بیتی را تشخیص داد، بیت اشتباه را میتوان با استفاده از مجموع کنترل ECC تعیین کرد و دادههای اصلاح شده را دوباره در حافظه نوشت.
اسکراب برای حل مسئله خطای چند بیتی طراحی شده است که توسط الگوریتمهای مختلف چند بیتی ECC قابل اصلاح نیست. اسکراب با استفاده از احتمال کم داشتن دو حمله در یک کلمه در هر زمان مشخص، حافظه را از طریق منطق ECC به طور دورهای چرخه میزند تا خطاهای تک بیتی را قبل از جمع شدن تصحیح کند.
قبل از بروز خطاهای چند بیتی در یک کلمه مهم است که هر مکان حافظه را به طور دورهای بررسی کنید، به اندازه کافی و مرتبا، زیرا خطاهای یک بیتی اصلاح میشوند، اما خطاهای چند بیتی اصلاح نمیشوند.
به منظور عدم ایجاد مزاحمت در درخواستهای حافظه منظم از CPU و در نتیجه جلوگیری از کاهش کارایی، اسکراب معمولاً فقط در دورههای بیکار انجام میشود. از آنجا که اسکراب شامل عملکردهای معمول خواندن و نوشتن است، ممکن است مصرف برق را برای حافظه در مقایسه با عملکرد غیر اسکراب افزایش دهد. بنابراین، اسکراب نه به طور مداوم بلکه به صورت دورهای انجام میشود. برای بسیاری از سرورها، دوره اسکراب را میتوان در برنامه راه اندازی BIOS پیکربندی کرد.
حافظه عادی خوانده شده توسط دستگاه های CPU یا DMA از نظر خطاهای ECC بررسی میشود، اما به دلایل محلی بودن دادهها میتوانند در محدوده ای از آدرس ها محدود شده و سایر مکانهای حافظه را برای مدت زمان طولانی دست نخورده نگه دارند. این مکانها میتوانند در معرض بیش از یک خطای نرم قرار بگیرند، در حالی که اسکراب کنترل بررسی کل حافظه را در یک زمان تضمین شده تضمین میکند.
در بعضی از سیستمها، نه تنها حافظه اصلی (مبتنی بر DRAM) قابلیت اسکراب را دارد بلکه حافظه کش پردازنده (مبتنی بر SRAM) است. در اکثر سیستمها میتوان میزان اسکراب را برای هر دو به طور مستقل تنظیم کرد. از آنجا که حافظه کش بسیار کوچکتر از حافظه اصلی است، نیازی نیست که اسکراب برای حافظه کش به دفعات تکرار شود.
اسکراب حافظه قابلیت اطمینان را افزایش میدهد، بنابراین میتوان آن را به عنوان یک ویژگی RAS طبقه بندی کرد.
حالتها:
Patrol Scrubbing
سیستم به طور دورهای از هر ورودی داده در کل حافظه عبور میکند، خطای قابل تصحیحی را بررسی میکند، در صورت امکان / نیاز را تصحیح میکند و مقدار را به حافظه مینویسد. Patrol Scrubbing فرآیندی است که به CPU اجازه میدهد خطاهای حافظه قابل اصلاح شناسایی شده در یک ماژول حافظه را اصلاح کرده و اصلاحات را به درخواست کننده (منبع اصلی) ارسال کند. وقتی این مورد روی Enabled تنظیم شود، اگر تأخیری ناشی از پردازش داخلی نباشد، North Bridge هر 16 سیکل یک خط حافظه کش را خوانده و مینویسد.
Demand Scrubbing
سیستم در صورت درخواست داده، خطای قابل تصحیحی را بررسی میکند. demand Scrubbing فرایندی است که به CPU اجازه میدهد خطاهای حافظه قابل اصلاح موجود در ماژول حافظه را اصلاح کند. وقتی CPU یا I/O دستور تقاضا برای خواندن را صادر میکند و دادههای خوانده شده از حافظه یک خطای قابل تصحیح است، خطا اصلاح شده و به درخواست کننده (منبع اصلی) ارسال میشود. حافظه نیز به روز می شود. Enabled را برای استفاده از Demand Scrubbing برای اصلاح حافظه ECC انتخاب کنید. گزینه ها فعال و غیرفعال هستند.