حافظه ECC Unbuffered در مقابل حافظه ECC registered – تفاوت بین UDIMM و RDIMM
امروزه، اکثریت قریب به اتفاق حافظههای مورد استفاده در رایانههای رومیزی، نوتبوکها و دستگاههای تلفن همراه، DRAM غیر ECC (تصحیح و تشخیص خطا) بدون بافر است. در واقع، مگر اینکه کسی از پردازندههای اینتل یا AMD استفاده کند که از حافظه ECC پشتیبانی میکنند، حافظه DRAM ECC بدون بافر تنها انتخاب برای اکثر کاربران است. به عنوان مثال، پردازندههای Intel Xeon از حافظه ECC پشتیبانی میکنند، در حالی که حتی پردازندههای جدید Core i7 این قابلیت را ندارند. AMD پشتیبانی بسیار گستردهتری از ECC در سطح CPU دارد، اما بسیاری از مادربردهای AMD از ویژگیهای حافظه ECC پشتیبانی نمیکنند، بنابراین این پشتیبانی همهگیر نیست.
حافظه ECC چه کاری انجام میدهد؟
حافظه با قابلیت تشخیص و تصحیح خطا (ECC) امروزه عمدتاً در محیطهای سازمانی ضروری تلقی میشود. تشخیص و تصحیح خطای تک بیتی در یک بایت 8 بیتی، امکان تشخیص و تصحیح خطاهای تک بیتی را در زمان وقوع فراهم میکند. جالب اینجاست که نحوه عملکرد این ECC تک بیتی چندان متفاوت از RAID 4 و RAID 5 نیست، جایی که از یک الگوریتم XOR برای تولید بیتهای توازن استفاده میشود. به جای از دست دادن ظرفیت حافظه قابل استفاده، سازندگان حافظه تمایل دارند به ازای هر هشت تراشه حافظه، یک تراشه اضافی به حافظه ECC اضافه کنند. هنگامی که یک خطای تک بیتی تشخیص داده میشود، از اطلاعات توازن برای بازسازی دادههای دارای خطا استفاده میشود. باز هم، این مفهوم شبیه به نحوه عملکرد RAID 4 و RAID 5 در پاکسازی و رفع خطاهای داده در آرایههای ذخیرهسازی است. خطاهای بزرگتر از چند بیتی قابل تشخیص هستند اما توسط طرح توازن ECC تک بیتی قابل تصحیح نیستند.
برای رایانههای رومیزی، این موضوع اهمیت کمتری دارد زیرا بسیاری از آمارها نشان میدهند که خطاهای تک بیتی در محدوده 1 خطا در هر 1 یا 2 گیگابایت حافظه در هر ماه رخ میدهند. برای یک کاربر رایانه رومیزی، این ممکن است باعث از کار افتادن یک برنامه یا در بدترین حالت نیاز به راهاندازی مجدد شود. در سرورها، ECC برای حفظ یکپارچگی داده و زمان کارکرد ضروری است. با توجه به اختلاف قیمت جزئی فعلی بین DIMMهای ECC بدون بافر و غیر ECC، دلیل کمی برای تهیه حافظه غیر ECC برای سرور وجود دارد.

حافظه ECC بدون بافر در مقابل حافظه ECC ثبتشده
علاوه بر مفهوم ECC، دو مفهوم دیگر نیز مطرح است: ماژولهای حافظه ECC بدون بافر و ثبتشده. تفاوت اساسی این است که دستورات حافظه در پیکربندیهای حافظه بدون بافر مستقیماً از کنترلر به ماژول حافظه میروند، در حالی که در پیکربندیهای حافظه ثبتشده، دستورات ابتدا به رجیسترهای بانکهای حافظه ارسال میشوند و سپس به ماژولها فرستاده میشوند. این مفهوم ممکن است دشوار به نظر برسد، اما در اینجا یک دیدگاه بسیار ساده/مفهومی در مورد آنچه در حال وقوع است ارائه شده است.
در مثال بالا، کنترلر حافظه مستقیماً به بانکهای حافظه دسترسی پیدا میکند. فرض بر این است که کنترلر حافظه در داخل بسته CPU قرار دارد، همانطور که در معماریهای CPU مدرن وجود دارد. با نگاهی به سیستمهای قدیمیتر، کنترلر حافظه در پل شمالی CPU قرار داشت. این را با مثال حافظه ثبتشده در زیر مقایسه کنید.

در اینجا، CPU با رجیسترهای بانکهای حافظه روی هر ماژول ارتباط برقرار میکند. از آنجا، این رجیسترها با DRAM ارتباط برقرار میکنند. پیامدهای این امر دوگانه است. اول، از جنبه منفی، به دلیل وجود رجیستر بانک به عنوان واسطه، اجرای دستورالعملها تقریباً یک سیکل CPU بیشتر طول میکشد. از جنبه مثبت، این بافرینگ فشار روی کنترلر حافظه CPU را کاهش میدهد زیرا به جای دسترسی مستقیم به DRAM، به رجیستر واسطه اختصاصی اشاره میکند. برای کنترلر حافظه، مدیریت تعداد کمتری هدف آسانتر است.
این ویژگی در سناریوهای سرور بسیار مهم است، زیرا به عنوان مثال، یک پلتفرم سری Intel 3400، مانند Supermicro X8SI6-F یا Intel S3420GPLC از 16 گیگابایت حافظه ECC بدون بافر و 32 گیگابایت حافظه ECC ثبتشده پشتیبانی میکند. به طور مشابه، در سیستمهای دو پردازندهای، مانند Supermicro X8DTH-6F مبتنی بر سری E5600 ، این اختلاف بسیار بیشتر است و تا 48 گیگابایت حافظه ECC ثبتنشده یا 192 گیگابایت حافظه ECC ثبتشده پشتیبانی میشود. برای محیطهای مجازیسازی که در آن حافظه و پهنای باند حافظه کلید دستیابی به معیارهای تجمیع و تراکم بالا است، حافظه ECC ثبتشده معمولاً بهترین گزینه است. اگر کسی سروری با DIMMهای ECC ثبتنشده خریداری کند و سپس به ظرفیت بیشتری نیاز داشته باشد، عملیات ارتقاء مستلزم بیرون کشیدن و جایگزینی تمام ماژولهای UDIMM خواهد بود که این امر یک پیشنهاد پرهزینه است.
ممنون بابت مقالتون همکار گرامی
بسیار عالی