Soft error – خطاهای مرموز و پنهان در کامپیوترها!

soft error یکسری از خطاها هستن که بصورت طبیعی در کامپیوترها رخ میدن.

منشاء soft error چیست؟

مواد بکار رفته در ساخت چیپ های رایانه ممکن است حاوی مقدار کمی ایزوتوپ های رادیواکتیو باشند که این اتمها دچار فروپاشی شده و ذرات آلفا از خود صادر میکنند که برخورد این ذرات با قسمتهای حساس مدارهای منطقی میتواند باعث تغییر وضعیت آنها (0 یا 1) شود.

البته حساس ترین قسمت مدارهای رایانه که مورد بحث است، حافظهء RAM میباشد.

همچنین نویزهای الکتریکی و الکترومغناطیس در مدارهای رایانه میتوانند باعث تغییر وضعیت بیت ها شوند.

خطاهای نرم در خطوط انتقال، مدارهای منطقی دیجیتال، مدارهای آنالوگ، حافظهء مغناطیسی و جاهای دیگر میتوانند رخ دهند اما بیشتر درمورد فناوری ذخیره سازی نیمه های شناخته شده اند.

به مرور که مدارهای مجتمع فشرده تر شده و ولتاژ کار آنها پایین تر آمده، آسیب پذیری آنها در برابر خطاهای نرم بیشتر شده است، لذا این مسئله امروزه مسئلهء واقعی و مهمی بحساب می آید که در صنایع حساس (درمانی، حفاظتی، مالی، …) یا محیطهایی که میزان تشعشع های محیطی بیشتر است (بطور مثال در ارتفاعات، ماهواره ها، تجهیزات تشخیص و درمان هسته ای، …) باید مورد توجه و تمهید جدی قرار گیرد.

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

ذرات آلفا میتوانند وضعیت بیت ها را تغییر دهند.

یک مقالهء 2011 هکرهای سیاه نتایج ضمنی چنان تغییر وضعیت بیت ها را در سیستم DNS اینترنت بررسی میکند. مقاله بیش از 3 هزار درخواست اشتباه در هر روز را بعلت تغییر بیت ها برای دامنه های متداول مختلف یافت. بسیاری از این تغییر وضعیت بیت ها میتوانند به خرابی های سخت افزار نسبت داده شوند، اما بعضی از آنها نیز میتوانند به ذرات آلفا نسبت داده شوند.

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

هرچند ذرهء اصلی اشعهء کیهانی عموما به سطح زمین نمیرسد، اما بارانی از ذرات ثانویه پرانرژی ایجاد میکند. در سطح زمین، تقریبا 95 درصد از ذراتی که قادرند باعث خطاهای نرم شوند نوترون های پرانرژی هستند و بقیه از پروتون ها و پیون ها (pion) تشکیل شده اند. IBM در 1996 برآورد کرد که یک خطا در هر ماه به ازای هر 256 مگابایت RAM برای یک رایانهء دسکتاپ انتظار میرود.

به ازای هر هزار متر افزایش ارتفاع نسبت به سطح دریا، میزان این تشعشع ها با فاکتور 2.2 افزایش پیدا میکند. رایانه هایی که در روی کوه ها قرار دارند 10 برابر رایانه هایی در سطح دریا دچار خطای نرم میشوند. نرخ خطا در هواپیماها میتواند بیشتر از 300 برابر سطح دریا باشد.
در زیر زمین، میزان خطاهای نرم ناشی از اشعه های کیهانی به سرعت کم شده و به نزدیک صفر میرسد، اما خطاهای نرم ناشی از دیگر منابع تشعشع محیطی ممکن است هنوز وجود داشته باشند.

خطاهای نرم همچنین میتوانند بوسیلهء نویز تصادفی یا تداخل های القایی یا باری ایجاد شوند. اما عموما این منابع بخش کوچکی از نرخ کلی خطاهای نرم را شامل میشوند و بخش عمدهء خطاها بخاطر اثر تشعشعات میباشد.

در یک آزمایش میزان خطای نرم در سطح دریا حدود 6 هزار FIT به ازای هر چیپ DRAM اندازه گیری شد. وقتی که همان آزمایش در یک غار زیرزمینی که با حدود 15 متر صخره محافظت میشد که عملا جلوی تمامی اشعهء کیهانی را میگیرد تکرار شد، عدد صفر خطا ثبت شد. در این آزمایش بقیهء منابع خطاهای نرم آنقدر کوچک بودند که در مقابل نرخ خطای حاصل شده از اشعه های کیهانی قابل اندازه گیری نبودند.

روشهایی برای مقاوم تر کردن چیپ ها در برابر تشعشع (Radiation hardening) وجود دارند. این بخصوص درمورد کاربردهای ماهواره، سفینه های فضایی، هواپیماهای نظامی، نیروگاه های اتمی و سلاح های اتمی اهمیت دارد. ضمنا در فضا غیر از اشعهء کیهانی منابع دیگری از تشعشع نیز وجود دارند.
علاوه بر روشهای ساخت چیپ های مقاوم تر در مقابل خطاهای نرم، از روشها و الگوریتم های تشخیص و اصطلاح خطا (در سطح سخت افزار) نیز استفاده میشود که چیپ های مجهز به این فناوری بطور مثال در سرورها کاربرد دارند.

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

بطور سنتی بیشترین توجه برای کاهش یا مدیریت کردن خطاهای نرم به DRAM معطوف بوده است، بخاطر اینکه DRAM بیشترین سطح مستعد خطاهای نرم در رایانه های دسکتاپ و سرور را دربر میگیرد. بخاطر همین است که ECC RAM در سرورها متداول است.

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

————————————–

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

معمولا حافظهء ECC از خطاهای تک بیتی در امان است؛ یعنی داده ای که از هر کلمهء حافظه خوانده میشود همیشه برابر کلمه ایست که در آن کلمهء حافظه نوشته شده بود، حتی اگر یک یا چند بیت آن تغییر کرده باشد. بیشتر حافظه های غیر ECC نمیتوانند خطاها را کشف کنند، هرچند بعضی از حافظه های غیر ECC با پشتیبانی parity اجازهء کشف خطا را میدهند اما امکان اصلاح آن را ندارند.

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

فضای پیمای Cassini–Huygens که در سال 1997 پرتاب شد شامل دو دستگاه ضبط پرواز یکسان است که هرکدام 2.5 گیگابیت حافظه از نوع DRAM های تجاری دارند. به لطف امکانات تشخیص و برطرف کردن خطا، گزارش های مهندسی از دور راه فضاپیما تعداد خطاهای تک بیتی (قابل اصلاح خودکار) در هر کلمهء حافظه و تعداد خطاهای دو بیتی (غیرقابل اصلاح خودکار) در هر کلمهء حافظه را گزارش میکند. در طی 2.5 سال نخست پرواز، فضاپیما یک نرخ خطا درحدود 280 خطا در هر روز را گزارش کرد. اما در 6 نوامبر 1997 در مدت نخستین ماه در فضا، تعداد خطاها با ضریب بیش از 4 برابر در آن روز افزایش پیدا کرد. این به یک حادثهء ذره ای خورشیدی که توسط ماهوارهء GOES 9 آشکارسازی شد نسبت داده میشود.

تحقیقات منتشر شده بین 2007 تا 2009 نرخ های خطای بسیار متغییری را با تفاوت بیش از 10 میلیون برابر نشان داد، یعنی از یک بیت خطا در هر ساعت به ازای هر گیگابایت حافظه تا یک بیت خطا در هر هزار سال به ازای هر گیگابایت از حافظه.

یک تحقیق در مقیاس بسیار بزرگ بر اساس تعداد خیلی زیاد سرورهای گوگل نشان داد که تعداد واقعی خطاها خیلی بیشتر از تحقیقات مقیاس کوچک یا آزمایشگاهی قبلی است. این تحقیق نشان داد که در حدود 5 خطای تک بیتی در هر ساعت به ازای هر 8 گیگابایت RAM رخ میدهد و بیش از 8% ماجول های حافظه DIMM در هر سال تحت تاثیر خطاها قرار میگیرند.

نتایج یک خطای حافظه وابسته به سیستم است. در سیستمهایی بدون ECC، یک خطا میتواند منجر به crash یا خرابی داده ها شود. در سایتهای مقیاس خیلی بزرگ، خطاهای حافظه یکی از دلایل سخت افزاری متداول برای crash کردن دستگاه ها هستند. خطاهای حافظه میتوانند موجب آسیب پذیری های امنیتی شوند. یک خطای حافظه میتواند هیچ اثری نداشته باشد اگر آن یک بیت را تغییر میدهد که نه باعث بد عمل کردن قابل مشاهده و نه باعث تحت تاثیر قرار گرفتن داده های استفاده شده در محاسبات میشود و نه ذخیره میگردد. یک آزمایش شبیه سازی در 2010 نشان داده که برای یک مرورگر وب، بخاطر اینکه بسیاری خطاهای حافظه دوره ای و بهم وابسته هستند، تاثیر خطاها بیشتر از آنچه بود که برای خطاهای مستقل انتظار میرفت.

یک نمونه از خطای تک بیتی که در یک سیستم بدون قابلیت چک کردن خطا نادیده گرفته میشود، موجب متوقف شدن یک سیستم دارای چک parity میشود، یا بوسیلهء ECC بطور خودکار اصلاح میشود. تصور کنید که یک بیت حافظه بعلت یک چیپ معیوب یا بخاطر تشعشعات حاصل از اشعهء کیهانی یا محیط به مقدار 1 ست شده است. یک صفحهء گسترده که عددها را در فرمت ASCII ذخیره میکند در حافظه load میشود و کاراکتر 8 در بایتی که حاوی بیت خطادار در کم ارزش ترین جایگاه بیتی آن بایت است ذخیره میشود. سپس توسط کاربر تغییری در سند صفحهء گسترده انجام میشود و تغییرات save میشوند. اکنون عدد 8 بدون اطلاع کاربر به 9 تبدیل شده است.

IBM PC اصلی و تمام PC ها تا اوایل 1990 از چک parity استفاده میکردند، اما بیشتر رایانه های بعدی اینطور نبودند. باس های پهن تر حافظه، چک کردن parity و بخصوص ECC را ممکن تر نموده اند. بسیاری از کنترلرهای حافظه ریزپردازنده فعلی، شامل تقریبا تمامی نمونه های 64 بیتی AMD، از ECC پشتیبانی میکنند، اما بسیاری از مادربوردها و بخصوص آنهایی که از چیپ ست های ارزان استفاده میکنند این پشتیبانی را ندارند.

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

بسیاری پردازنده ها از کدهای تشخیص و اصلاح خطا در cache روی چیپ استفاده میکنند، شامل پردازنده های Intel Itanium و AMD Athlon و Opteron و DEC Alpha 21264.

ECC در مقابل خرابی پنهان داده ها در حافظه محافظت میکند و در رایانه هایی که چنان خرابی هایی غیرقابل قبول است، مثلا در بعضی کاربردهای پردازشهای علمی و مالی یا در فایل سرورها استفاده میشود. ECC همچنین تعداد crash ها را کاهش میدهد. بیشتر مادربوردها و پردازنده ها برای کاربردهای کمتر حیاتی، برای پشتیبانی ECC طراحی نشده اند تا قیمت شان پایین بماند.

==========================

منابع:
https://en.wikipedia.org/wiki/Soft_error
https://en.wikipedia.org/wiki/ECC_memory

————————-

این بحث مهمی بودا!
من خودم قبلا از این قضیهء اشعه های کیهانی اطلاع داشتم راجع بهش چیزهایی خونده بودم (ولی فکر میکردم بیشتر روی CPU تاثیر میذارن)، گزینه های مربوط به ECC و اینا رو هم توی بایوس کامپیوتر دیده بودم و حدسهایی میزدم، اما نمیدونستم قضیه چقدر واقعی و جدیه.
فکر میکنم خیلی های دیگه هم نمیدونن. بخاطر همین این مقاله رو ترجمه کردم.
مثلا آیا این همه کامپیوترها و سیستمهایی که برای عملیات بانکی/مالی، علمی، امنیتی/سلامتی، کارهای خطیر و حساس و مهم در کشور استفاده میشن واقعا متخصصان مطلع بودن که ممکنه به این دلایل خطا کنن ممکنه حتی اطلاعات توی فایلها خودبخود عوض بشه؟ آیا از سیستمهای مناسب این کارها، بطور مثال مجهز به RAM و CPU و Motherboard دارای پشتیبانی از ECC (یا انواع دیگر مکانیزمهای کشف/اصلاح خطا) استفاده کردن و این گزینه ها رو فعال کردن؟

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

بارها دیدیم اپراتورها میگن کامپیوتر اشتباه کرده قاط زده و غیره. خب شاید حداقل بعضی وقتا علتش همین مسائل باشه واقعا اپراتورها اشتباه فکر نکردن یا اشتباهات و ضعفهای شخصی خودشون رو ماست مالی نمیکنن.

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>