المدرب: في هذا
الدرس، سنتحدث عن ذاكرة ECC، المعروفة
باسم رمز تصحيح الأخطاء.
لكن أولاً، نحتاج إلى تغطية
مفهوم عدم التكافؤ والتكافؤ من حيث الذاكرة.
الآن عندما نتحدث عن عدم التكافؤ، هذه
هي الذاكرة التي هي مجرد ذاكرة قياسية.
إنه لا يتحقق من الأخطاء ويسمح بإدخال
البيانات أو إخراجها من الذاكرة حسب الرغبة
وهذا هو ما ستكون عليه معظم الذاكرة.
يعد تصنيع عدم التكافؤ رخيصًا جدًا
وله سرعة أعلى من ذاكرة التكافؤ.
من ناحية أخرى، سيتم استخدام
ذاكرة التكافؤ لإجراء فحص الأخطاء الأساسي
وللتأكد من موثوقية محتويات
الذاكرة وسلامتها.
الآن وبسبب هذا،
ستكون هذه الذاكرة أبطأ من الذاكرة غير المتماثلة
ولكنها تتمتع بالموثوقية التي
ستكون مطلوبة للخوادم وبعض
محطات عمل سطح المكتب المتطورة.
الآن الذاكرة التي لديها فحص التكافؤ ستكون
قادرة على إجراء عملية حسابية أساسية
بناءً على ما تراه للتحقق
مما إذا كانت البيانات جيدة أم لا.
وإذا كانت تلك البيانات جيدة، فسوف يستخدمها.
وإذا لم يكن الأمر كذلك، فسيحدث خطأ ولكن
لن يتمكن من إصلاحه.
سيكون بإمكانه فقط أن يقول أن هناك خطأ هنا
ولكني لا أعرف كيفية إصلاحه.
الآن، يعمل هذا بشكل أساسي من خلال
وجود بت تكافؤ مرتبط بكل بايت.
لذا بدلاً من الحصول على ثماني بتات، أصبح لديك الآن تسع
بتات لأن ثماني بتات بيانات بالإضافة إلى بت واحد للتكافؤ.
الآن سيتم تعيين بت التكافؤ هذا في الوقت المناسب.
وبعد ذلك، سيتم حسابها ومقارنتها
عندما تقرأ من الذاكرة لتحديد ما إذا
كان أي من البتات قد تغير منذ آخر
مرة تمت فيها كتابة تلك البيانات في تلك الذاكرة.
يقتصر هذا النوع من
الفحص على اكتشاف أخطاء البتات المفردة.
وإذا كان هناك بتتين تم تغييرهما،
فقد ينجح فحص التكافؤ هذا بالفعل،
لأنه تذكر، يمكن أن تكون البتات 0 أو 1 فقط.
على سبيل المثال، لنفترض أنني قمت بتخزين
الرقم 0 الذي
يتم كتابته كـ 00000000 في النظام الثنائي.
الآن، إذا قمت بجمع كل تلك البتات معًا، سأحصل على ثمانية
أصفار مما يعطيني 0 لبت التكافؤ الخاص بي.
الآن، إذا ذهبت لقراءة هذا الرقم من الذاكرة
ورأيت أن هناك ثمانية أصفار،
أقوم بجمعها معًا وأحصل على 0، 0 يطابق
بت التكافؤ الخاص بي كـ 0، لذا فهذه
بيانات جيدة.
الآن، من ناحية
أخرى، لنفترض أنني
كنت أكتب الرقم 1 الذي يُكتب كـ 00000001.
الآن، إذا قمت بجمع كل هذه الأرقام معًا، فسأحصل على 1.
وسوف أضع ذلك في جزء التكافؤ الخاص بي من الجزء التاسع.
ومن خلال القيام بذلك، قرأت الآن من ذلك
وأحصل على 00000001.
ولأن كل ذلك يصل إلى 1 وهذا
يطابق بت التكافؤ
الخاص بي، أعلم أن البيانات
جيدة ولكن إذا وضعت
ذلك في الذاكرة وظل هناك لبضع
ساعات وتغير ذلك 1 إلى 0 عن طريق الصدفة، إذا قرأت الآن أحصل
على 00000000، وأجمعها معًا، أحصل على 0، وأقارن ذلك ببت التكافؤ الخاص بي الذي يحتوي على 1، وهذا يخبرني الآن
أن هناك خطأ وحدث خطأ ما.
لا أعرف أيًا من تلك الأجزاء الثمانية تم تغييره
ولكن تم تغيير واحدة منها على الأقل.
الآن، من ناحية
أخرى، إذا
تم تغيير هذا الرقم من 00000001 إلى شيء
مثل 01010001، أصبح لدي الآن بتان تم تغييرهما من 0
إلى 1 عن طريق الصدفة
بواسطة الذاكرة.
عندما أنظر إلى التكافؤ الخاص بي، فإنه سيظل 1 لأنه
عندما أقوم بإضافة هذه الأرقام، إذا كان رقمًا فرديًا،
فسيكون 1 لبت التكافؤ الخاص بي.
وإذا قمت بجمعها وكان رقمًا
زوجيًا، فسيكون 0.
لذا، كما ترون، لن تتمكن
من اكتشاف الخطأ إذا
تم تغيير اثنين من البتات داخل هذا
إذا كنت تستخدم حساب نوع التكافؤ.
الآن، الخبر السار هو أن حوالي 90% من معظم الأخطاء ستكون
عبارة عن خطأ من نوع بت واحد، وبالتالي
فإن التحقق من التكافؤ يمكن أن يكون عادةً
كافيًا لمعظم مواقفنا.
ولكن إذا كنت تتعامل مع شيء مثل
تشغيل خوادم لأحد البنوك، فإن وجود
أي نوع من الأخطاء قد يكون أمرًا سيئًا.
لذلك نريد شيئًا أفضل من
التكافؤ وهنا يأتي دور ECC.
الآن ECC تعني رمز تصحيح الخطأ.
رمز تصحيح الخطأ هو نوع الذاكرة الذي
يأخذ التكافؤ إلى المستوى التالي.
الآن، لا يمكنه فقط اكتشاف وجود خطأ،
تمامًا كما يفعل التكافؤ،
بل يمكنه أيضًا تصحيح هذا الخطأ لك أيضًا.
الآن أصبحت ECC أبطأ قليلاً من التكافؤ
وهو أيضًا أبطأ من عدم التكافؤ.
وبالتالي فإنك تتخلى عن
بعض الأداء مقابل هذه الإمكانية
الإضافية ولكنك تحصل على قدر
أكبر من التكامل والموثوقية من ذاكرتك
عند استخدام ECC لأنها ستكون
قادرة على اكتشاف تلك الأخطاء وإصلاحها.
بشكل عام، لن ترى سوى رمز تصحيح الأخطاء
(ECC) أو رمز تصحيح الأخطاء
الذي يتم استخدامه في محطات العمل أو الخوادم المتطورة
بالفعل بسبب التكلفة الإضافية
وهذا المستوى العالي من التكامل مطلوب
فقط في تلك الأنواع من البيئات.
ربما تتساءل
الآن، كيف تحدد ECC بالفعل الخطأ
وكيفية إصلاحه؟
حسنًا، للقيام بذلك،
سيتم استخدام ما يعرف بالذاكرة المخزنة
مؤقتًا أو المسجلة.
تحتوي الذاكرة المخزنة مؤقتًا أو الذاكرة
المسجلة الآن على أجهزة إضافية
ستوضع بين الذاكرة ووحدة المعالجة المركزية أو المعالج.
يُسمى هذا الجهاز بالسجل ويقوم بتخزين
البيانات في مخزن مؤقت قبل
إرسالها إلى وحدة المعالجة المركزية.
يتم استخدام هذه الميزة كمقياس موثوقية في
الكثير من الأنظمة وخاصة
الأنظمة مثل الخوادم التي تحتوي
على الكثير من وحدات الذاكرة المختلفة
حيث يمكن أن تحدث أخطاء.
تتطلب هذه الأنظمة التخزين المؤقت أو تسجيل البيانات
من أجل تقليل الحمل الكهربائي
الذي تستخدمه هذه الأنظمة
التي تحتوي على كميات كبيرة من وحدات الذاكرة،
ويمكن إقران ذلك بذاكرة كود التكافؤ
أو تصحيح الأخطاء لتتمكن من منحك
تلك الموثوقية الإضافية التي الذي
تبحث عنه وتكتشف تلك الأخطاء.
الآن، لكي تتمكن من استخدام وحدات تعليمات برمجية لتصحيح الأخطاء،
يجب أن تدعمها اللوحة الأم لديك بالإضافة إلى وحدة المعالجة المركزية لديك.
إذا كان أي من هذه المكونات لا يدعم ECC،
فحتى إذا قمت بشراء وحدات ECC التي تكلف أكثر،
فلن تحصل على فائدة ECC الإضافية.
لذا ضع ذلك في الاعتبار.
كما أن معظم اللوحات الأم إما تدعم ECC أو لا تدعمها.
إنه ليس خيارًا بشكل عام.
لذا، إذا قمت بشراء لوحة أم تدعم ECC،
فسيتعين عليك شراء وحدات ECC
وهي وحدات الذاكرة المسجلة.
الآن، إذا وجدت لوحة أم تدعم وحدات
ECC أو وحدات غير تابعة لـ
ECC، فلن تدعم كليهما في نفس الوقت.
لذلك يجب أن تكون جميع الوحدات النمطية الخاصة بك ECC وإلا
فلن تكون أي من الوحدات النمطية الخاصة بك ECC.
قد يؤدي وجود خليط منها إلى حدوث أخطاء في النظام ولن
تعرف اللوحة الأم كيفية التعامل معها.
الآن آخر شيء أريد أن أذكره
هو أنه إذا كنت تستخدم DDR5، فإن DDR5
به بعض الأخطاء في التحقق من الأخطاء الداخلية
للوحدات نفسها.
لا يعتبر هذا ECC أو وحدة ECC.
وبالتالي يمكن استخدام
تصحيح الخطأ داخل وحدات DDR5 الأحدث على اللوحات
الأم التي لا تدعم ECC وسيظل لديك بعض القدرة
على التحقق من الأخطاء.
يعد هذا شكلاً مختلفًا من أشكال التحقق
من الأخطاء ولا يعتبر رمزًا لتصحيح الأخطاء.
لذا ضع ذلك في اعتبارك ولا تدع ذلك يربكك عندما
تكون بالخارج في الميدان.
يعد هذا شكلاً مختلفًا من أشكال التحقق
من الأخطاء ولا يزال من الممكن بيع وحدات DDR5 كوحدات
ECC أو وحدات غير تابعة لـ ECC، لأنه بالإضافة إلى التحقق
من الأخطاء الداخلية، يمكنها أيضًا العمل مع وحدة
المعالجة المركزية واللوحة الأم إذا كانت تدعم ECC
وكانت كذلك. الآن خطأ في تصحيح التعليمات
البرمجية كذلك.
أعلم أن هذا الأمر مربك بعض الشيء.
لذا كن على علم بذلك عندما تكون في الميدان.