مقایسه رم ECC و non ECC. چرا باید در  سرور ها و سیستم های تجاری از رم ECC استفاده نمود؟

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

به طور معمول رم های معمولی داری 8 چیپ می باشد و لی در رم ECC این امر با اضافه کردن چیپ اصلاح کننده نهم بر روی برد رم ممکن شده است.

این رم ها هر چند نسبت به رم non ECC گران قیمت تر هستند اما امنیت و حفاظت اطلاعاتی را به همراه می آورد که برای برنامه هایی که به حجم زیادی از اطلاعات وابسته هستند نیازی ضروری تلقی می شود.

احتمال بروز خطای حافظه در رم non ECC

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

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

خطاهای تک بیتی

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

خطاهای تک بیتی به دو دسته تقسیم می شوند: خطاهای سخت و خطاهای نرم

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

ECC چگونه عمل می کند؟

در حالیکه می توان از مشکلات و خطاهای سخت افزاری هارد دیسک از طریق راه حل های افزونگی (Redundancy) مانند RAID های آینه ای (mirrored) (مانند RAID 1 که در آن اطلاعات به صورت همزمان بر روی دو هارد دیسک عینا کپی می شود) جلوگیری کرد، اطلاعات ذخیره شده روی یک حافظه رم یک ذخیره سازی موقت، سریع و کوتاه است و قابلیت تهیه نسخه پشتیبان وجود ندارد.

سوال اینجاست: چگونه از بروز خطاهای دسترسی به اطلاعات پیشگیری کنیم؟

 قبل از رم ECC، خطایابی توسط بیت توازن انجام می شد. به طور معمول داده های رایانه ای در گروه های ۸ بیتی ذخیره می شوند که بایت نامیده می شوند. بیت نهم یا بیت توازن برای بررسی خطاها استفاده می شود. توازن زوج و فرد با اضافه کردن یک بیت ۰ یا ۱ در انتهای هر بایت آن را تبدیل به زوج یا فرد می کند. به عنوان مثال اگر توازن زوج مورد استفاده قرار بگیرد، بیتی که به یک بایت با تعداد فرد اضافه خواهد شد ۱ است، در نتیجه تعداد بیت ها به عدد زوج ۸ می رسد. اگر در یک توازن زوج، یک بایت فرد وجود داشته باشند نمایانگر آن است که اطلاعات صدمه دیده و باید مجددا بار گذاری شود.

رم ECC

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

شیوه عملکرد رم ECC یک استفاده منطقی از روش توازن است. در این روش از بیت های چندگانه برای شناسایی و اصلاح خطاهای تک بیتی  داده ها بزرگ تر استفاده می شود. به جای استفاده از ۱ بیت به ازای هر ۸ بیت در روش بیت توازن، روش ECC  از ۷ بیت که به روش خطای تصادفی غیر باینری تولید شده است در ازای هر ۶۴ بیت استفاده می کند. وقتی که ۶۴ بیت توسط دستگاه خوانده شد، یک کد ۷ بیتی دوم تولید می شود سپس با کد ۷ بیتی اولیه مقایسه می شود. اگر کدها با یکدیگر مطابقت داشته باشند بدان معنا است که داده ها بدون خطا هستند. اگر مطابقت نداشته باشند سیستم می تواند خطا را پیدا کند و با مقایسه دو کد ۷ بیتی آن را ثابت کند.

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

اهمیت استفاده از رم ECC برای سرورها در چیست ؟

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

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

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