ذاكره خبييه
Cache memory - Mémoire cache
الذاكرة الخبيئة
الذاكرة الخبيئة cache memory هي ذاكرة وسيطة سريعة توضع بين وحدة المعالجة المركزية والذاكرة الرئيسة لتسريع أداء مجموعة الحاسوب.
فقد كانت المكونات المتنوعة في الحواسيب الأولى، تتصف ببطء سرعتها. ولكن التقدم التقاني في صناعة المكوِّنات عامةً، والمعالجات خاصةً، أحدث هوة بين سرعة المعالج والذاكرة الرئيسة main memory، وهذا من شأنه الإساءة إلى أداء النظام الحاسوبي إجمالاً. ولردم هذه الهوة، تستخدم النظم الحاسوبية تراتيباً للذاكرة hierarchy بحيث يتبادل المعالج في أغلب الأحيان المعلومات مع ذاكرة صغيرة الحجم وسـريعة تقع في أعلى هرم التراتيب، هي الذاكرة الخبيئة، ولا يُضطر إلى التعامل مع الذاكرة الرئيـسة الكبيرة الحجم والبطيئة إلا في حالات معينة (الـشكل-1).
والذاكرة الخبيئة لغة هي مكان مخفي يُحفظ بداخله المال أو المؤن أو الذخيرة. وقد استعير لفظ الذاكرة الخبيئة في علوم الحاسوب للدلالة إلى ذاكرة تحفظ المعلومات، وتتجدد محتوياتها باستمرار.
مبادئ عمل الذاكرة الخبيئة
تعتمد هذه الذاكرة في عملها على خاصتين تتسم بهما معظم البرامج الحاسوبية هما :
1- المحلية الزمانية: وتدل على أن احتمال إعادة تنفيذ تعليمة ما، بعد أن اكتمل تنفيذها للتو، مرتفع بسبب حلقات التكرار.
2- المحلية المكانية: وتعني أن احتمال النفاذ إلى تعليمات تجاور التعليمة المنفذة حالياً مرتفع.
الأنواع الأساسية للذاكرة الخبيئة
تُبنى الذاكرة الخبيئة من رقاقات ذاكرة سكونية static memory سريعة. وقد تُكامَل الذاكرة الخبيئة مع رقاقة وحدة المعالجة المركزية لتقليص زمن النفاذ، وتسمى عندئذٍ بالذاكرة الخبيئة الأساسية. وتوضع عادة ذواكر خبيئة أكبر حجماً وأقل سرعة خارج الرقاقة، وتسمى بالذاكرة الخبيئة الثانوية. وقد تُستخدم في الحواسيب ذاكرة خبيئة واحدة لتخزين المعطيات والتعليمات لتسهيل التصميم، وتسمى عندها بالذاكرة الخبيئة الموحدة. وقد تُفصل ذاكرة خبيئة المعطيات عن التعليمات بهدف رفع الأداء على حساب تعقيد التصميم، وتسمى عندئذٍ بالذاكرة الخبيئة المشطورة.
تُنظم الذاكرة الخبيئة داخلياً في سطور lines (أو بلوكات blocks)، بحيث يضم كل سطر مجموعة بايتات bytes، يمكن النفاذ إلى أي منها إفرادياً. وتُقابَل سطور الذاكرة الخبيئة مع كتل الذاكرة الرئيسة وفق واحد من أشكال ثلاثة:
1ـ الذاكرة الخبيئة ذات التقابل المباشر direct memory mapping: يقابل فيها كل سطر كتلة معينة في الذاكرة الرئيسة. وتشترك عدة كتل في الذاكرة الرئيسة بالتقابل مع السطر ذاته في الذاكرة الخبيئة. تعدّ هذه التقنية الأبسط من حيث المفهوم والإنجاز، ولكنها تعاني من قلة المرونة. تنظر هذه الذاكرة الخبيئة إلى أي عنوان ذاكرة رئيسة كقيمة مؤلفة من حقل كلمة/بايت word/byte لتحديد الكلمة المطلوبة من سطر الذاكرة الخبيئة، ويشير حقل السطر/البلوك إلى السطر المطلوب فيها، وحقل أمارة tag لتمييز السطر ويُخزن مع المعطيات (الشكل -2).
2ـ الذاكرة الخبيئة التجميعية associative memory mapping: يمكن هنا تخزين أي موضع ذاكرة رئيسة في أي سطر منها. تتطلب هذه التقنية، وهي الأشد تعقيداً، خوارزميات بحث معقدة للتحقق من وجود الكلمة المطلوبة في الذاكرة الخبيئة، ويؤدي ذلك إلى انخفاض الأداء. ولكن تقدم هذه الذاكرة الخبيئة معدل الإصابة hit rotio الأعلى نظرياً بسبب تعدد الخيارات المتاحة أمام أي عنوان ذاكرة رئيسية. يُنظر في هذه الذاكرة الخبيئة إلى أي عنوان ذاكرة رئيسية كقيمة ذات حقل كلمة/بلوك وأمارة (الشكل -3).
3- الذاكرة الخبيئة التجميعية في مجموعات ذات ممر way block associative mapping: وهو تصميم يتوسط الحلين السابقين. إذ تُقسم الذاكرة الخبيئة إلى مجموعات ذات سطر، ويمكن تخزين أي عنوان ذاكرة رئيسة في أي سطر من المجموعة. وهي ذات أداء أعلى من ذاكرة خبيئة التقابل المباشر، وأدنى من الذاكرة الخبيئة الكاملة التجميع ولكنها أبسط إنجازاً. يُنظر إلى عناوين الذاكرة الرئيسة كقيم مؤلفة من حقل كلمة ومجموعة وأمارة. تشير المجموعة حقل إلى المجموعة التي يمكن التخزين فيها (الشكل -4).
يشمل تبادل المعلومات مع الذاكرة الخبيئة عمليتين أساسيتين هما: القراءة منها والكتابة فيها، وفيما يلي شرح لهما:
1- القراءة: عندما يحتاج المعالج إلى معلومات من الذاكرة الرئيسة، يُبحث عن العنوان المطلوب في الذاكرة الخبيئة أولاً. فإذا عُثر عليه، أُرسلت المحتويات إلى المعالج، ويسمى ذلك بالإصابة hit. وإذا لم تحتوِ الذاكرة الخبيئة على المطلوب، تحدث حالة إخفاق miss، وتُجلب عندئذٍ المعلومات من الذاكرة الرئيسة وتُخزن في سطر الذاكرة الخبيئة. ومن ثمَّ، يحصل المعالج على المعلومات المطلوبة من الذاكرة الخبيئة (الشكل -5)، وذلك يسمح بإتمام عمليات القراءة اللاحقة من الذاكرة الخبيئة، تبعاً لمبدأي المحلية الزمانية والمكانية.
2- الكتابة: عندما يرغب المعالج في كتابة معلومات في الذاكرة الرئيسة، يمكن اتباع أحد الأسلوبين الآتيين:
ـ الكتابة خلالاً أو اجتيازاً write through: تُكتب المعلومات في الذاكرة الرئيسة وفي الذاكرة الخبيئة معاً، وتُعدّ هذه الطريقة بطيئة بسبب ضرورة الكتابة دوماً في الذاكرة الرئيسة، ولكنها أسهل تنفيذاً.
ـ الكتابة خلفاً write back: لا تُكتب المعلومات في الذاكرة الرئيسة إلا بعد استبعاد سطر الذاكرة الخبيئة الذي تغير محتواه. وهي طريقة أكثر فعالية، لأنها تحد من النفاذ إلى الذاكرة الرئيسة. وإذا امتلأت الذاكرة الخبيئة، يُنتقى أحد أسطر الذاكرة الخبيئة لاستبعاده منها تبعاً لعدة استراتيجيات أشهرها سياسة الاستخدام الأقل حداثة LRU، إذ يُخرج السطر الذي لم تُستخدم معلوماته منذ مدة، هي الأطول بين بقية الأسطر.
مميزات الذاكرة الخبيئة:
1- معدل الإصابة: يمثل نسبة عمليات النفاذ التي تتحقق في الذاكرة الخبيئة من دون اللجوء إلى الذاكرة الرئيسة. يتعلق هذا المعدل بحجم الذاكرة الخبيئة، وطول السطر فيها، وطبيعة البرنامج المنفَّذ، وتتابع العناوين التي ينفذ إليها المعالج.
2- معدل الإخفاق: وهو نسبة عمليات النفاذ التي لا يحصل فيها المعالج على المعلومات المطلوبة من الذاكرة الخبيئة.
3- عرض الحزمة: ويُقدر عادة بالغيغا بايت، وهو يمثل عرض المسرى مضروباً بسرعة الميقاتية.
4- زمن النفاذ الوسطي: ويعطى بالعلاقة {1}،:حيث تمثل غرامة الإخفاق المدة الزمنية اللازمة لجلب المعلومات من الذاكرة الرئيسة لملء سطر الذاكرة الخبيئة.
ولتقليص زمن النفاذ الوسطي إلى المعلومات، تلجأ النظم الحاسوبية إلى وضع عدة مستويات من الذاكرة الخبيئة، يرمز إليها بالرموز: L3, L2, L1 ونحوها. وفي حالة استخدام ذاكرة خبيئة ذات مستويين، يعطى زمن النفاذ الوسطي بالعلاقة {2}:
ويشار إلى أن معالجات الحواسيب الشخصية تطبق عدة مستويات للذاكرة الخبيئة لرفع أدائها. فالمعالج Pentium III يستخدم ذاكرة خبيئة L1 سعتها 32 كيلو بايت، وهي تجميعية في مجموعات ذات 4 ممرات. أما الذاكرة الخبيئة L2 فسعتها 512 كيلوبايت وهي تجميعية في ممرين. وقد أضيف إلى المعالج Itanium 2، المخصص لنظم المخدّمات servers، مستوى ذاكرة خبيئة L3 سعتها 6 ميغا بايت.
محمد نوار العوا
Cache memory - Mémoire cache
الذاكرة الخبيئة
الذاكرة الخبيئة cache memory هي ذاكرة وسيطة سريعة توضع بين وحدة المعالجة المركزية والذاكرة الرئيسة لتسريع أداء مجموعة الحاسوب.
الشكل (1) تراتيب الذاكرة في النظام الحاسوبي |
والذاكرة الخبيئة لغة هي مكان مخفي يُحفظ بداخله المال أو المؤن أو الذخيرة. وقد استعير لفظ الذاكرة الخبيئة في علوم الحاسوب للدلالة إلى ذاكرة تحفظ المعلومات، وتتجدد محتوياتها باستمرار.
مبادئ عمل الذاكرة الخبيئة
تعتمد هذه الذاكرة في عملها على خاصتين تتسم بهما معظم البرامج الحاسوبية هما :
1- المحلية الزمانية: وتدل على أن احتمال إعادة تنفيذ تعليمة ما، بعد أن اكتمل تنفيذها للتو، مرتفع بسبب حلقات التكرار.
2- المحلية المكانية: وتعني أن احتمال النفاذ إلى تعليمات تجاور التعليمة المنفذة حالياً مرتفع.
الأنواع الأساسية للذاكرة الخبيئة
تُبنى الذاكرة الخبيئة من رقاقات ذاكرة سكونية static memory سريعة. وقد تُكامَل الذاكرة الخبيئة مع رقاقة وحدة المعالجة المركزية لتقليص زمن النفاذ، وتسمى عندئذٍ بالذاكرة الخبيئة الأساسية. وتوضع عادة ذواكر خبيئة أكبر حجماً وأقل سرعة خارج الرقاقة، وتسمى بالذاكرة الخبيئة الثانوية. وقد تُستخدم في الحواسيب ذاكرة خبيئة واحدة لتخزين المعطيات والتعليمات لتسهيل التصميم، وتسمى عندها بالذاكرة الخبيئة الموحدة. وقد تُفصل ذاكرة خبيئة المعطيات عن التعليمات بهدف رفع الأداء على حساب تعقيد التصميم، وتسمى عندئذٍ بالذاكرة الخبيئة المشطورة.
تُنظم الذاكرة الخبيئة داخلياً في سطور lines (أو بلوكات blocks)، بحيث يضم كل سطر مجموعة بايتات bytes، يمكن النفاذ إلى أي منها إفرادياً. وتُقابَل سطور الذاكرة الخبيئة مع كتل الذاكرة الرئيسة وفق واحد من أشكال ثلاثة:
1ـ الذاكرة الخبيئة ذات التقابل المباشر direct memory mapping: يقابل فيها كل سطر كتلة معينة في الذاكرة الرئيسة. وتشترك عدة كتل في الذاكرة الرئيسة بالتقابل مع السطر ذاته في الذاكرة الخبيئة. تعدّ هذه التقنية الأبسط من حيث المفهوم والإنجاز، ولكنها تعاني من قلة المرونة. تنظر هذه الذاكرة الخبيئة إلى أي عنوان ذاكرة رئيسة كقيمة مؤلفة من حقل كلمة/بايت word/byte لتحديد الكلمة المطلوبة من سطر الذاكرة الخبيئة، ويشير حقل السطر/البلوك إلى السطر المطلوب فيها، وحقل أمارة tag لتمييز السطر ويُخزن مع المعطيات (الشكل -2).
2ـ الذاكرة الخبيئة التجميعية associative memory mapping: يمكن هنا تخزين أي موضع ذاكرة رئيسة في أي سطر منها. تتطلب هذه التقنية، وهي الأشد تعقيداً، خوارزميات بحث معقدة للتحقق من وجود الكلمة المطلوبة في الذاكرة الخبيئة، ويؤدي ذلك إلى انخفاض الأداء. ولكن تقدم هذه الذاكرة الخبيئة معدل الإصابة hit rotio الأعلى نظرياً بسبب تعدد الخيارات المتاحة أمام أي عنوان ذاكرة رئيسية. يُنظر في هذه الذاكرة الخبيئة إلى أي عنوان ذاكرة رئيسية كقيمة ذات حقل كلمة/بلوك وأمارة (الشكل -3).
الشكل (2) بنية الذاكرة الخبيئة ذات التقابل المباشر | الشكل (3) التنظيم الداخلي لذاكرة خبيئة تجميعية |
الشكل (4) البنية الداخلية لذاكرة خبيئة تجميعية في مجموعات |
الشكل (5) آلية القراءة من الذاكرة الخبيئة |
يشمل تبادل المعلومات مع الذاكرة الخبيئة عمليتين أساسيتين هما: القراءة منها والكتابة فيها، وفيما يلي شرح لهما:
1- القراءة: عندما يحتاج المعالج إلى معلومات من الذاكرة الرئيسة، يُبحث عن العنوان المطلوب في الذاكرة الخبيئة أولاً. فإذا عُثر عليه، أُرسلت المحتويات إلى المعالج، ويسمى ذلك بالإصابة hit. وإذا لم تحتوِ الذاكرة الخبيئة على المطلوب، تحدث حالة إخفاق miss، وتُجلب عندئذٍ المعلومات من الذاكرة الرئيسة وتُخزن في سطر الذاكرة الخبيئة. ومن ثمَّ، يحصل المعالج على المعلومات المطلوبة من الذاكرة الخبيئة (الشكل -5)، وذلك يسمح بإتمام عمليات القراءة اللاحقة من الذاكرة الخبيئة، تبعاً لمبدأي المحلية الزمانية والمكانية.
2- الكتابة: عندما يرغب المعالج في كتابة معلومات في الذاكرة الرئيسة، يمكن اتباع أحد الأسلوبين الآتيين:
ـ الكتابة خلالاً أو اجتيازاً write through: تُكتب المعلومات في الذاكرة الرئيسة وفي الذاكرة الخبيئة معاً، وتُعدّ هذه الطريقة بطيئة بسبب ضرورة الكتابة دوماً في الذاكرة الرئيسة، ولكنها أسهل تنفيذاً.
ـ الكتابة خلفاً write back: لا تُكتب المعلومات في الذاكرة الرئيسة إلا بعد استبعاد سطر الذاكرة الخبيئة الذي تغير محتواه. وهي طريقة أكثر فعالية، لأنها تحد من النفاذ إلى الذاكرة الرئيسة. وإذا امتلأت الذاكرة الخبيئة، يُنتقى أحد أسطر الذاكرة الخبيئة لاستبعاده منها تبعاً لعدة استراتيجيات أشهرها سياسة الاستخدام الأقل حداثة LRU، إذ يُخرج السطر الذي لم تُستخدم معلوماته منذ مدة، هي الأطول بين بقية الأسطر.
مميزات الذاكرة الخبيئة:
1- معدل الإصابة: يمثل نسبة عمليات النفاذ التي تتحقق في الذاكرة الخبيئة من دون اللجوء إلى الذاكرة الرئيسة. يتعلق هذا المعدل بحجم الذاكرة الخبيئة، وطول السطر فيها، وطبيعة البرنامج المنفَّذ، وتتابع العناوين التي ينفذ إليها المعالج.
2- معدل الإخفاق: وهو نسبة عمليات النفاذ التي لا يحصل فيها المعالج على المعلومات المطلوبة من الذاكرة الخبيئة.
3- عرض الحزمة: ويُقدر عادة بالغيغا بايت، وهو يمثل عرض المسرى مضروباً بسرعة الميقاتية.
4- زمن النفاذ الوسطي: ويعطى بالعلاقة {1}،:حيث تمثل غرامة الإخفاق المدة الزمنية اللازمة لجلب المعلومات من الذاكرة الرئيسة لملء سطر الذاكرة الخبيئة.
ولتقليص زمن النفاذ الوسطي إلى المعلومات، تلجأ النظم الحاسوبية إلى وضع عدة مستويات من الذاكرة الخبيئة، يرمز إليها بالرموز: L3, L2, L1 ونحوها. وفي حالة استخدام ذاكرة خبيئة ذات مستويين، يعطى زمن النفاذ الوسطي بالعلاقة {2}:
زمن النفاذ = معدل الإصابة × زمن النفاذ إلى الذاكرة الخبيئة + معدل الإخفاق × غرامة الإخفاق | {1} |
زمن النفاذ = معدل الإصابة L1 × زمن النفاذ إلى الذاكرة الخبيئة L1+ معدل الإخفاق × L1 (معدل الإصابة L2× زمن النفاذ إلى الذاكرة الخبيئة L2 + معدل الإخفاق × L2 غرامة الإخفاق L2) | {2} |
محمد نوار العوا