الرئيسيةبحث

ذاكرة مخبئية


إن تنظيم الذواكر في بنية هرمية يسمح لنا بالاستفادة من ميزتي السرعة العالية للذواكر الصغيرة والسعة الضخمة للذواكر الكبيرة البطيئة. من المكن التغلب على بطء الولوج إلى الذاكرة الثانوية باعتماد خطة منهجية لنقل الصفحات بين مستويات الذاكرة المختلفة ، ومع ذالك يبقى تفاوت بين سرعة عمل بين سرعة عمل وحدة الحساب وسرعة الحصول على المعلومات من الذاكرة الرئيسية.يمكن ملاحظة سبب هذا التفاوت بسهولة فالعناصر المستخدمة في بناء وحدة التخزين الرئيسية اصغر حجماً بكثير واقل كلفة من تلك المستخدمة في بناء وحدة الحساب.

من المنطقي أن نتساءل:هل يمكن استخدام ذاكرة أخرى اقل سعة و أسرع من الذاكرة الرئيسية, لكنها تعمل بسرعة تقارب سرعة وحدة الحاسب والمنطق لتشكل بذالك مرحلة إضافية بين المعالج والذاكرة الرئيسية؟طبعاً نعم ، تؤمن الذاكرة المخبئية كل هذه المتطلبات . والذاكرة المخبئية هي ذاكرة صغيرة جدا وسريعة جداً تتوضع بين المعالج والذاكرة الرئيسية ،تتألف الذاكرة المخبئية من عدد من المسجلات ،وتتضمن هذه المسجلات المعلومات التي يستخدمها المعالج حالياً. بذالك ينخفض عدد مرات الولوج إلى الذاكرة الرئيسية وبشكل كبير ،كما ينخفض أيضا معدل زمن الولوج بالنسبة للكلمة الواحدة, ونتيجة لذالك تقترب السرعة الفعلية للذاكرة من سرعة الذاكرة المخبئية.

يتم نقل المعلومات بين الذاكرة المخبئية والذاكرة الرئيسية كلمة تلو الأخرى .إلا أن بعض الأنظمة تلجا إلى نقل مجموعات من الكلمات في كل عملية نقل.تدعى هذه المجموعات "أسطر" أو "كتل (blocks) ،وهي تكافئ الصفحات في الذاكرة الظاهرية.

فهرس

عمل الذاكرة المخبئية

عندما يحاول المعالج الوصول إلى موقع ما, تختبر الذاكرة المخبئية أولا, فإذا كانت محتويات هذا الموقع موجودة في الذاكرة المخبئية تقرأ منها دون الرجوع إلى الذاكرة الرئيسية, أما إذا لم تكن المعلومات موجودة في الذاكرة المخبئية فتولد إشارة خطأ تستدعي الرجوع إلى الذاكرة الرئيسية .يتعلق أداء الذاكرة المخبئية باحتمال وجود المعلومات المطلوبة فيها, و بالإستراتيجية المتبعة لتنظيم المعلومات التي تحتويها في أي لحظة .

أما بالنسبة لتعليمة الكتابة, فتكتب في الذاكرة الرئيسية, ويبين الشكلان التالين طريقة عمل هذه الذاكرة. هناك تشابه ملحوظ بين مفهومي الذاكرة المخبئية والذاكرة الظاهرية. لكن هناك فروقاً هامة في كيفية إدارة كل منهما, إن نسبة زمن ولوج الذاكرة الثانوية إلى زمن ولوج الذاكرة الرئيسية في جوار الـ10000 ، أما نسبة زمن ولوج الذاكرة الرئيسية إلى زمن ولوج الذاكرة المخبئية فهي حوالي الـ 10. بالنتيجة فإنه خطأ الصفحة في الذواكر الظاهرية مكلف جداً أما خطأ الذاكرة المخبئية فهو أقل كلفة بكثير.

يعتبر استخدام المكونات الالكترونية المعقدة والكلفة نسبياً عند تنفيذ الذاكرة الظاهرية وذالك للسعة الكبيرة التي توفها هذه الذاكرة, أما الذاكرة المخبئية فهي محدودة السعة ويجب أن تعمل بسرعة عالية جداً لذاكرة توضع قيود عديدة على كلفة وتعقيد أنظمة الذاكرة المخبئية.

من ناحية أخرى, تتواجد الصفحة في أنظمة الذاكرة الظاهرية إما في الذاكرة الرئيسية وإما في الذاكرة الثانوية وليس في كليهما ، وبالتالي تصبح سعة الذاكرة المتاحة تساوي إلى مجموع سعتي الذاكرة الرئيسية والذاكرة الثانوية أما الذاكرة المخبئية فتحتوي على "صورة"بعض المواقع (تلك المستخدمة بكثرة من قبل المعالج), وبالتالي لا تزيد من سعة ذاكرة النظام.

يتم نقل المعلومات بين الذاكرة الرئيسية والذاكرة المخبئية على شكل كلمات منفصلة (أو كتل صغيرة تحتوي عدة كلمات ), أما في أنظمة الذاكرة الظاهرية فتنقل المعلومات على شكل صفحات, ومن الشائع أن تتضمن الصفحة 1000 كلمة.

ومن المقبول استخدام البرمجيات لإدارة عملية نقل المعلومات بين المستويات المختلفة في الذاكرة الظاهرية, إذ لا تشكل أزمة تنفيذ مثل هذه البرمجيات عائقاً في وجه أداء الذاكرة الظاهرية, أما بالنسبة للذاكرة المخبئية فتحقق كل إجرائيات إدارة عمليات نقل المعلومات على شكل دارات إلكترونية (HARDWARE ) أو باعتماد التحكم بواسطة برامج صغريه (’Micro-programmed control ).

لا يقتصر استخدام الذواكر المخبئية على تخزين المعطيات فقط, بل تستخدم أيضا لتخزين التعليمات التي ينفذها المعالج حالياً. فعند تنفيذ المعالج لحلقة تعليمات (loop) يمكن وضع هذه التعليمات في الذاكرة المخبئية والاستغناء عن الرجوع إلى الذاكرة الرئيسية طيلة فترة تنفيذ الحلقة.

عمل الذاكرة المخبئية في أنظمة تستخدم ذاكرة ظاهرية

كيف تخزن الذاكرة المخبئية العناوين عندما تستخدم مع نظام الذاكرة الظاهرية؟ هل تخزن العنوان الحقيقي أم العنوان الافتراضي؟

إن تخزين العنوان الحقيقي يبطئ سرعة عمل الذاكرة, إذ يجب عندئذ أن تتم عملية ترجمة العنوان الافتراضي إلى عنوان حقيقي كجزء من حلقة الذاكرة قبل مقارنة العناوين,أما عند تخزين العنوان الافتراضي فيمكن مقارنة العناوين مباشرة, لكن هذا الخيار مشاكله أيضا. فإذا أدت عملية إدخال إلى الكتابة فوق موقع في الذاكرة, يجب حذف أو تحديث صورة هذا الموقع في الذاكرة المخبئية, إذ وجدت هذه الصورة, ويستلزم هذا عملية ترجمة معاكسة من العنوان الحقيقي إلى العنوان الافتراضي وهي عملية صعبة. من ناحية أخرى, يمكن أن يتم الوصول إلى نفس الموقع في الذاكرة الرئيسية من قبل عدة برامج تستخدم عناوين افتراضية مختلفة, وسيؤدي ذالك لظهور عدة مداخل في الذاكرة المخبئية مرتبطة بنفس الموقع.

بناء على ما تقدم يفضل الخيار الأول: أي تخزين العناوين الحقيقية فقط. ويمكن التغلب على لخسارة الزمنية الناتجة عن ترجمة العناوين باستخدام تقنيات أنابيب التجزئة(pipelining). نذكر هنا أن ما يتغير أثناء الانتقال من العنوان الافتراضي إلى العنوان الحقيقي هو عنوان الصفحة فقط, أما عنوان السطر فيبقى كما هو. وتستخدم الطريقة التالية: في الخطوة الأولى يرسل عنوان الصفحة الافتراضي .ليترجم إلى العنوان الحقيقي, وفي نفس الوقت يرسل عنوان السطر إلى الذاكرة المخبئية (لأنه لا يحتاج إلى ترجمة), يقارن هذا العنوان مع المقاطع (Segment) المناسبة في جدول مداخل الذاكرة المخبئية, و تعطي الذاكرة عناوين الكتل التي حدث فيها التطابق.

في الخطوة الثانية, يقارن العنوان الحقيقي الذي حصلنا عليه مع العدد القليل من عناوين الكتل التي حصلنا عليها من الذاكرة المخبئية, فإذا حدث تطابق يزود المعالج بالمدخل المناسب, كل هذه العملية تتم خلال حلقة واحدة.

انسجام الذواكر المخبئية

تضم بعض الأنظمة عدداً من المعالجات لكل منها ذاكرة مخبئية خاصة به, في مثل هذه الحالة قد يتواجد عنصر المعطيات في أكثر من وحدة ذاكرة مخبئية, وبالتالي فعندما تعدل قيمة عنصر المعطيات هذا في إحدى الذواكر يجب إجراء التعديل على كل الذواكر المخبئية التي تحتوي على نفس العنصر, ويمكن تحقيق ذلك بطريقتين:

بروتوكول الترابط (Coherence protocol)

1- إذا صادف المعالج أثناء محاولة قراءة عنصر معطيات, حالة فقدان في ذاكرته الخاصة,عليه أن يستجوب كل الذواكر المخبئية الأخرى (للتحقق إذا كانت واحدة منها تحتوي على أحدث قيمة لعنصر المعطيات), فإذا كانت اثنتان أو أكثر من هذه الذواكر تحوي عنصر المعطيات, يجب أن تعيد كلها القيمة نفسها (بفرض أن الانسجام موجود).

2- عند كتابة أي عنصر معطيات في الذاكرة الرئيسية (سواء وجد أم لم يوجد في الذاكرة المخبئية المحلية) يجب تحديث كل الذواكر الأخرى التي تحتوي على هذا العنصر, طبعاً يمكن إما أن يتم تحديث قيمة العنصر أو حذفه ببساطة كونه لم يعد صحيحاً.

البروتوكول المعدل (Modified protocol)

إذا كان عنصر المعطيات موجوداً في ذاكرة واحدة فقط, لن يكون ضرورياً تعميم عملية الكتابة لتشمل بقية الذواكر المخبئية. يمكن إذا تعديل البروتوكول السابق ليصبح أكثر فعالية بالطريقة التالية:

1- عندما يجلب المعالج عنصر معطيات إلى الذاكرة المخبئية يربط به علامة حصر الاستخدام (Exclusive tag).

2- عندما يقوم معالج آخر بالتعامل مع العنصر نفسه, تلغى إشارة حصر الاستخدام.

3- عند الكتابة ينفذ أحد إجراءين:

(أ) يقوم المعالج الذي يباشر عملية الكتابة بإضافة علامة حصر استخدام العنصر بالذاكرة المخبئية الخاصة به, وتقوم الذواكر الأخرى بحذف قيمة العنصر القديمة (إذا كانت موجودة), في هذه الحالة تقتصر العملية على إرسال عنوان الموقع دون إرسال القيمة الجديدة.

(ب) عند تلقي الذواكر لإشارة الكتابة تقوم كل منها بتفحص محتوياتها, فإذا كانت تحتوي هذا العنصر تقوم بتحديثه و تلغي علامة حصر الاستخدام, وتعلم المعالج الذي بدأ الكتابة أن لديها نسخة من العنصر و بالتالي يقوم هذا المعالج بإلغاء علامة حصر استخدام العنصر, أما إذا لم يتلق المعالج أي إعلام فيضع علامة حصر استخدام العنصر.

من الواضح أن الخيار (ب) أكثر تعقيداً.

توجد طرق أخرى عديدة لضمان انسجام الذواكر و تحديد أيها الأفضل يعتمد على شروط عمل النظام.

المراجع

المبادئ النظرية لبرمجيات نظم التشغيل

ترجمة وإعداد المهندس فادي حجار, شعاع للنشر والعلوم

مواضيع ذات صلة

وصلات داخلية

- تنظيم الذاكرة المخبئية

- تنظيم الكاش في المعالجات التفرعية

-Cache

وصلات خارجية

- Cache Memory

- How Caching Works