حافظه قابل‌اعتماد: سخت‌افزار چگونه خطاهای داده را تشخیص و تصحیح می‌کند

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

قابلیت اطمینان حافظهتشخیص و تصحیح خطاECCپریتی و

~3 min read · Updated Sep 6, 2026

چرا حافظه به‌طور کامل قابل‌اعتماد نیست

سلول‌های حافظه فیزیکی گاهی می‌توانند مقادیر ذخیره‌شده‌شان توسط نویز الکتریکی، تشعشع، یا نقص‌های تولید تغییر یابند، رویدادی به نام Soft Error وقتی که یک برگشت گذرای بیت باشد نه آسیب دائمی سخت‌افزاری. بدون هیچ محافظتی، چنین خطایی می‌تواند بی‌سروصدا داده یا دستورات یک برنامه را بدون هیچ هشداری خراب کند.

ساده‌ترین رویکرد: پریتی

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

بیت‌های داده: 1011
تعداد بیت‌های ۱: 3 (فرد)
بیت پریتی اضافه‌شده برای فرد کردن مجموع به زوج: 1
ذخیره‌شده: 1011 1

اگر یک بیت در طول ذخیره‌سازی برگردد: 1001 1
بررسی پریتی محاسبه‌مجدد‌شده شکست می‌خورد → خطا تشخیص داده می‌شود

پریتی می‌تواند تشخیص دهد یک خطای تک‌بیتی رخ داده، اما نمی‌تواند تعیین کند کدام بیت خاص نادرست بوده، و بنابراین نمی‌تواند خطا را تصحیح کند، فقط آن را پرچم‌گذاری می‌کند.

فراتر رفتن: کدهای تصحیح‌کننده خطا

حافظه ECC (Error-Correcting Code) این ایده را با استفاده از چند بیت اضافی که طوری چیده‌ شده‌اند که نه‌تنها یک خطا قابل‌تشخیص است، بلکه بیت خراب‌شده خاص می‌تواند شناسایی و به‌طور خودکار به مقدار درست خود برگردانده شود، بدون هیچ نیازی به واکشی مجدد داده از یک منبع کندتر، گسترش می‌دهد.

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

کجا این محافظت استفاده می‌شود

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

چرا این موضوع فراتر از تراشه‌های حافظه اهمیت دارد

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

یک کلاستر از ماشین‌ها فقط زمانی مفید است که بتواند به‌طور کارآمد هم داخلی و هم با دنیای بیرون ارتباط برقرار کند. این مقاله لایه‌های شبکه‌سازی درگیر در ارتباط کلاستر، مبادلات بین تأخیر و پهنای باند در مقیاس، و اینکه کلاسترها چگونه به شبکه‌های خارجی و کاربران متصل می‌شوند را پوشش می‌دهد.

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

Continue