پاک‌سازی حافظه

پاک‌سازی حافظه ((به انگلیسی: Memory scrubbing)) فرایندی است که در آن از هر مکان حافظه رایانه داده خوانده می‌شود، خطاهای بیتی احتمالی با استفاده از کد تصحیح خطا (ECC) اصلاح می‌شوند و سپس دادهٔ اصلاح‌شده دوباره در همان مکان نوشته می‌شود.[۱]

به‌سبب تراکم بالای یکپارچه‌سازی در تراشه‌های حافظه مدرن، ساختار سلول‌های حافظه آن‌قدر کوچک شده‌است که در برابر پرتوهای کیهانی و نیز گسیل ذرات آلفا آسیب‌پذیر باشند. خطاهای ناشی از این پدیده‌ها را خطای نرم می‌نامند. بیش از ۸٪ از ماژول‌های حافظه خطی دوگانه (DIMM) دست‌کم سالی یک خطای قابل‌تصحیح را تجربه می‌کنند.[۲] این مسئله می‌تواند برای حافظه‌های مبتنی بر DRAM و SRAM مشکل‌ساز باشد. احتمال وقوع یک خطای نرم در هر بیت حافظه به‌تنهایی بسیار کم است؛ اما با توجه به حجم زیاد حافظه در رایانه‌های مدرن، به‌ویژه کارسازها، و نیز دوره‌های طولانی زمان کارکرد، احتمال بروز خطاهای نرم در کل حافظهٔ نصب‌شده قابل توجه است.

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

نمای کلی

لازم است هر مکان حافظه به‌طور دوره‌ای و با فاصلهٔ زمانی مناسب بررسی شود، پیش از آن‌که احتمال رخ‌داد چند خطای بیتی در یک واژهٔ واحد بیش از حد بالا برود؛ زیرا در ماژول‌های معمول حافظهٔ ECC، خطاهای تک‌بیتی قابل اصلاح‌اند اما خطاهای چندبیتی قابل اصلاح نیستند.

برای جلوگیری از اختلال در درخواست‌های عادی حافظه از سوی پردازنده و در نتیجه جلوگیری از کاهش کارایی، پاک‌سازی معمولاً فقط در زمان بیکاری سامانه انجام می‌شود. از آنجا که این فرایند شامل عملیات عادی خواندن و نوشتن است، ممکن است در مقایسه با حالت بدون پاک‌سازی، مصرف توان حافظه را افزایش دهد. از همین رو، پاک‌سازی به‌طور پیوسته انجام نمی‌شود، بلکه به‌صورت دوره‌ای صورت می‌گیرد. در بسیاری از کارسازها، دورهٔ پاک‌سازی را می‌توان در برنامهٔ تنظیمات بایوس پیکربندی کرد.

خواندن‌های معمول حافظه که از سوی پردازنده یا دستگاه‌های DMA انجام می‌شوند، از نظر خطاهای ECC بررسی می‌شوند؛ اما به‌دلیل مکان‌مندی داده‌ها، این بررسی ممکن است تنها به بازهٔ کوچکی از نشانی‌ها محدود شود و سایر بخش‌های حافظه برای مدت طولانی بررسی نشوند. این بخش‌ها ممکن است در معرض بیش از یک خطای نرم قرار گیرند، در حالی که پاک‌سازی حافظه بررسی کل حافظه را در یک بازهٔ زمانی تضمین‌شده ممکن می‌سازد.

در برخی سامانه‌ها، افزون بر حافظهٔ اصلی مبتنی بر DRAM، حافظه‌های نهان پردازنده که مبتنی بر SRAM هستند نیز قابل پاک‌سازی‌اند. در بیشتر سامانه‌ها، نرخ پاک‌سازی این دو را می‌توان مستقل از یکدیگر تنظیم کرد. چون حافظهٔ نهان بسیار کوچک‌تر از حافظهٔ اصلی است، لازم نیست پاک‌سازی آن به همان اندازهٔ حافظهٔ اصلی پرتکرار باشد.

پاک‌سازی حافظه قابلیت اطمینان سامانه را افزایش می‌دهد؛ از این‌رو، می‌توان آن را از ویژگی‌های قابلیت اطمینان، دسترس‌پذیری و خدمت‌رسانی (RAS) دانست.

انواع

معمولاً دو گونهٔ اصلی از پاک‌سازی حافظه وجود دارد که با نام‌های پاک‌سازی گشتی (patrol scrubbing) و پاک‌سازی درخواستی (demand scrubbing) شناخته می‌شوند. هرچند هر دو گونه اساساً فرایند پاک‌سازی حافظه و اصلاح خطاهای وابسته را، در صورت امکان، انجام می‌دهند، تفاوت اصلی آن‌ها در چگونگی آغاز و اجرای آن‌هاست. پاک‌سازی گشتی به‌صورت خودکار و هنگامی که سامانه بیکار است انجام می‌شود، در حالی که در پاک‌سازی درخواستی، اصلاح خطا زمانی انجام می‌شود که داده واقعاً از حافظهٔ اصلی درخواست شود.[۳]

جستارهای وابسته

  • پاک‌سازی داده‌ها، رده‌ای کلی که پاک‌سازی حافظه را نیز در بر می‌گیرد.
  • خطای نرم، یکی از دلایل اصلی انجام پاک‌سازی حافظه.
  • تشخیص و اصلاح خطا، نظریهٔ کلی مورد استفاده در پاک‌سازی حافظه.
  • تازه‌سازی حافظه، فرایندی برای حفظ اطلاعات ذخیره‌شده در حافظه.

منابع

  1. ↑ Ronald K. Burek. "The NEAR Solid-State Data Recorders". Johns Hopkins APL Technical Digest. 1998.
  2. ↑ DRAM Errors in the Wild: A Large-Scale Field Study
  3. ↑ «Supermicro X9SRA motherboard manual» (PDF). Supermicro. ۵ مارس ۲۰۱۴. صص. ۴–۱۰. دریافت‌شده در ۲۲ فوریه ۲۰۱۵.{{cite web}}: نگهداری یادکرد:تاریخ به‌طور خودکار ترجمه‌شده (رده)