ذاكرة التخزين المؤقت لوحدة المعالجة المركزية
ذاكرة التخزين المؤقت لوحدة المعالجة المركزية هي ذاكرة تخزين مؤقتة مادية تستخدمها وحدة المعالجة المركزية (CPU) في الحاسوب لتقليل متوسط تكلفة الوصول إلى البيانات من الذاكرة الرئيسية (من حيث الوقت أو الطاقة) . [ 1 ] ذاكرة التخزين المؤقت هي ذاكرة أصغر وأسرع، تقع بالقرب من نواة المعالج ، وتخزن نسخًا من البيانات من مواقع الذاكرة الرئيسية المستخدمة بكثرة ، مما يغني عن الحاجة إلى الرجوع دائمًا إلى الذاكرة الرئيسية التي قد يكون الوصول إليها أبطأ بعشرات أو مئات المرات.
تُنفذ ذاكرة التخزين المؤقت عادةً باستخدام ذاكرة الوصول العشوائي الثابتة (SRAM)، التي تتطلب عدة ترانزستورات لتخزين بت واحد . وهذا يجعلها مكلفة من حيث المساحة التي تشغلها، وفي وحدات المعالجة المركزية الحديثة، تُشكل ذاكرة التخزين المؤقت عادةً الجزء الأكبر من مساحة الشريحة. يجب موازنة حجم ذاكرة التخزين المؤقت مع الرغبة العامة في الحصول على شرائح أصغر حجمًا وأقل تكلفة. تُنفذ بعض التصاميم الحديثة جزءًا من ذاكرة التخزين المؤقت أو كلها باستخدام ذاكرة الوصول العشوائي الديناميكية الإلكترونية (eDRAM) الأصغر حجمًا ، والتي تُعد أبطأ في الاستخدام من ذاكرة الوصول العشوائي الثابتة، ولكنها تسمح بسعة تخزين مؤقت أكبر لأي مساحة معينة من الشريحة.
تحتوي معظم وحدات المعالجة المركزية على تسلسل هرمي لمستويات ذاكرة التخزين المؤقت المتعددة (L1، L2، وغالبًا L3، ونادرًا L4)، مع وجود ذاكرات تخزين مؤقت منفصلة خاصة بالتعليمات (I-cache) وأخرى خاصة بالبيانات (D-cache) في المستوى 1. [ 2 ] تُنفذ المستويات المختلفة في مناطق مختلفة من الشريحة؛ يقع L1 بالقرب من نواة وحدة المعالجة المركزية قدر الإمكان، وبالتالي يوفر أعلى سرعة نظرًا لقصر مسارات الإشارة، ولكنه يتطلب تصميمًا دقيقًا. أما ذاكرات التخزين المؤقت L2 فهي منفصلة فعليًا عن وحدة المعالجة المركزية وتعمل بسرعة أبطأ، ولكنها تُقلل من متطلبات مصمم الشريحة ويمكن جعلها أكبر بكثير دون التأثير على تصميم وحدة المعالجة المركزية. وتُستخدم ذاكرات التخزين المؤقت L3 بشكل عام بشكل مشترك بين عدة نوى لوحدة المعالجة المركزية.
توجد أنواع أخرى من الذاكرة المؤقتة (لا تُحتسب ضمن "حجم الذاكرة المؤقتة" لأهم أنواع الذاكرة المؤقتة المذكورة أعلاه)، مثل مخزن الترجمة المؤقت (TLB) الذي يُعد جزءًا من وحدة إدارة الذاكرة (MMU) الموجودة في معظم وحدات المعالجة المركزية. كما تحتوي أقسام الإدخال/الإخراج غالبًا على مخازن مؤقتة للبيانات تؤدي غرضًا مشابهًا.
ملخص
للوصول إلى البيانات في الذاكرة الرئيسية ، تُستخدم عملية متعددة الخطوات، وتُضيف كل خطوة منها تأخيرًا. على سبيل المثال، لقراءة قيمة من الذاكرة في نظام حاسوبي بسيط، يختار المعالج أولًا العنوان المراد الوصول إليه من خلال التعبير عنه على ناقل العناوين ، وينتظر فترة زمنية محددة حتى تستقر القيمة. يخزن جهاز الذاكرة الذي يحتوي على تلك القيمة، والذي يُنفذ عادةً في ذاكرة الوصول العشوائي الديناميكية (DRAM )، تلك القيمة في شكل منخفض الطاقة جدًا، لا يكفي لقراءتها مباشرةً بواسطة المعالج. بدلًا من ذلك، ينسخ المعالج تلك القيمة من الذاكرة إلى مخزن مؤقت صغير متصل بناقل البيانات . ثم ينتظر المعالج فترة زمنية محددة حتى تستقر هذه القيمة قبل قراءتها من ناقل البيانات.
بتقريب الذاكرة فعليًا من وحدة المعالجة المركزية، يقل الوقت اللازم لاستقرار ناقلات البيانات، وباستبدال ذاكرة الوصول العشوائي الديناميكية (DRAM) بذاكرة الوصول العشوائي الثابتة (SRAM)، التي تخزن القيمة بشكل لا يتطلب تضخيمًا للقراءة، يُلغى التأخير داخل الذاكرة نفسها. هذا يجعل ذاكرة التخزين المؤقت أسرع بكثير في الاستجابة والقراءة والكتابة. مع ذلك، تتطلب ذاكرة الوصول العشوائي الثابتة (SRAM) ما بين أربعة إلى ستة ترانزستورات لتخزين بت واحد، حسب النوع، بينما تستخدم ذاكرة الوصول العشوائي الديناميكية (DRAM) عادةً ترانزستورًا واحدًا ومكثفًا واحدًا لكل بت، مما يُمكّنها من تخزين بيانات أكثر بكثير في أي مساحة شريحة معينة.
يمكن أن يؤدي استخدام تنسيق أسرع للذاكرة إلى تحسينات كبيرة في الأداء. فعند محاولة القراءة من موقع في الذاكرة أو الكتابة إليه، يتحقق المعالج مما إذا كانت البيانات من ذلك الموقع موجودة بالفعل في ذاكرة التخزين المؤقت (الكاش). إذا كانت كذلك، فسيقرأ المعالج من ذاكرة التخزين المؤقت أو يكتب إليها بدلاً من الذاكرة الرئيسية الأبطأ بكثير.
تحتوي العديد من وحدات المعالجة المركزية الحديثة لأجهزة سطح المكتب والخوادم والوحدات الصناعية على ثلاثة مستويات مستقلة على الأقل من ذاكرة التخزين المؤقت (L1 و L2 و L3) وأنواع مختلفة من ذاكرة التخزين المؤقت:
- المخزن المؤقت للترجمة (TLB)
- تُستخدم ذاكرة الترجمة المؤقتة (TLB) لتسريع ترجمة العناوين من العناوين الافتراضية إلى العناوين الفعلية لكلٍ من التعليمات القابلة للتنفيذ والبيانات. يمكن توفير ذاكرة ترجمة مؤقتة واحدة (TLB) للوصول إلى كلٍ من التعليمات والبيانات، أو يمكن توفير ذاكرتي ترجمة مؤقتتين منفصلتين: ذاكرة ترجمة مؤقتة للتعليمات (ITLB) وذاكرة ترجمة مؤقتة للبيانات (DTLB). مع ذلك، تُعد ذاكرة الترجمة المؤقتة جزءًا من وحدة إدارة الذاكرة (MMU) وليست مرتبطة مباشرةً بذاكرات التخزين المؤقت لوحدة المعالجة المركزية (CPU).
- ذاكرة التخزين المؤقت للتعليمات (I-cache)
- تُستخدم لتسريع جلب التعليمات القابلة للتنفيذ؛ تتضمن بعض الإصدارات المتخصصة ذاكرة تخزين مؤقتة للعمليات الدقيقة وذاكرة تخزين مؤقتة لتعليمات هدف التفرع .
- ذاكرة التخزين المؤقت للبيانات (D-cache)
- يُستخدم لتسريع جلب البيانات وتخزينها.
- ذاكرة التخزين المؤقت ذات المستوى الأعلى
- عادة ما يتم تنظيم الذاكرات المؤقتة التي تقع فوق ذاكرة التخزين المؤقت I وذاكرة التخزين المؤقت D على شكل تسلسل هرمي لمستويات ذاكرة تخزين مؤقت أكثر (L2، L3، إلخ)؛ انظر أيضًا ذاكرة التخزين المؤقت متعددة المستويات أدناه).
تاريخ

من الأمثلة المبكرة على ذاكرة التخزين المؤقت لوحدة المعالجة المركزية (CPU) معالج Atlas 2 [ 3 ] ومعالج IBM System/360 Model 85 [ 4 ] [ 5 ] في ستينيات القرن الماضي. كانت وحدات المعالجة المركزية الأولى التي استخدمت ذاكرة التخزين المؤقت تحتوي على مستوى واحد فقط؛ على عكس ذاكرة التخزين المؤقت من المستوى الأول اللاحقة، لم تكن مقسمة إلى L1d (للبيانات) وL1i (للتعليمات). بدأ استخدام ذاكرة التخزين المؤقت من المستوى الأول المقسمة في عام 1976 مع معالج IBM 801 [ 6 ] [ 7 ]، وأصبح شائعًا في أواخر ثمانينيات القرن الماضي، وفي عام 1997 دخل سوق وحدات المعالجة المركزية المدمجة مع معالج ARMv5TE. وبحلول عام 2015، أصبحت حتى أنظمة SoC منخفضة التكلفة تقسم ذاكرة التخزين المؤقت من المستوى الأول. كما أنها تحتوي على ذاكرة تخزين مؤقت من المستوى الثاني، وبالنسبة للمعالجات الأكبر حجمًا، ذاكرة تخزين مؤقت من المستوى الثالث أيضًا. عادةً ما تكون ذاكرة التخزين المؤقت من المستوى الثاني غير مقسمة، وتعمل كمستودع مشترك لذاكرة التخزين المؤقت من المستوى الأول المقسمة بالفعل. لكل نواة من نوى المعالج متعدد النوى ذاكرة تخزين مؤقت مخصصة من المستوى الأول، وعادةً لا تتم مشاركتها بين النوى. يمكن مشاركة ذاكرة التخزين المؤقت من المستوى الثاني (L2) وذاكرات التخزين المؤقت ذات المستويات الأدنى بين النوى. أما ذاكرة التخزين المؤقت من المستوى الرابع (L4) فهي غير شائعة حاليًا، وعادةً ما تكون ذاكرة وصول عشوائي ديناميكية (DRAM) على شريحة منفصلة، وليست ذاكرة وصول عشوائي ثابتة (SRAM). ويُستثنى من ذلك استخدام ذاكرة الوصول العشوائي الديناميكية المدمجة (eDRAM) لجميع مستويات ذاكرة التخزين المؤقت، وصولًا إلى المستوى الأول (L1). تاريخيًا، كان المستوى الأول (L1) موجودًا أيضًا على شريحة منفصلة، إلا أن أحجام الشرائح الأكبر سمحت بدمجه مع مستويات ذاكرة التخزين المؤقت الأخرى، باستثناء المستوى الأخير على الأرجح. يميل كل مستوى إضافي من ذاكرة التخزين المؤقت إلى أن يكون أصغر حجمًا وأسرع من المستويات الأدنى. [ 8 ]
كانت أحجام الذاكرة المؤقتة (كما هو الحال مع ذاكرة الوصول العشوائي تاريخيًا) تُقاس عادةً بمضاعفات العدد: 2، 4، 8، 16، إلخ، كيلوبايت . وعندما وصلت الأحجام إلى ميغابايت (أي للذاكرة غير L1 الأكبر حجمًا)، تغير هذا النمط مبكرًا جدًا، للسماح بذاكرة مؤقتة أكبر دون اللجوء إلى مضاعفة الحجم، كما في معالج Intel Core 2 Duo الذي احتوى على ذاكرة مؤقتة L2 بسعة 3 ميغابايت في أبريل 2008. حدث هذا لاحقًا بالنسبة لذاكرة L1 المؤقتة، حيث أن حجمها لا يزال عادةً عددًا صغيرًا من الكيلوبايت. ومع ذلك، يُعد معالج IBM zEC12 من عام 2012 استثناءً، حيث حصل على ذاكرة مؤقتة L1 للبيانات بسعة 96 كيلوبايت، وهي سعة كبيرة بشكل غير معتاد في ذلك الوقت، كما هو الحال في معالج IBM z13 الذي احتوى على ذاكرة مؤقتة L1 للتعليمات بسعة 96 كيلوبايت ( وذاكرة مؤقتة L1 للبيانات بسعة 128 كيلوبايت)، [ 9 ] ومعالجات Intel Ice Lake من عام 2018، التي احتوت على ذاكرة مؤقتة L1 للبيانات بسعة 48 كيلوبايت وذاكرة مؤقتة L1 للتعليمات بسعة 48 كيلوبايت. في عام 2020، احتوت بعض معالجات Intel Atom (التي تصل إلى 24 نواة) على ذاكرة تخزين مؤقتة (مضاعفات) بحجم 4.5 ميجابايت و15 ميجابايت. [ 10 ] [ 11 ]
عملية
إدخالات ذاكرة التخزين المؤقت
تُنقل البيانات بين الذاكرة الرئيسية وذاكرة التخزين المؤقت في كتل ذات حجم ثابت، تُسمى خطوط أو كتل ذاكرة التخزين المؤقت . عند نسخ خط من الذاكرة الرئيسية إلى ذاكرة التخزين المؤقت، يتم إنشاء مدخل في ذاكرة التخزين المؤقت. يتضمن هذا المدخل البيانات المنسوخة بالإضافة إلى موقع الذاكرة المطلوب (يُسمى علامة).
عندما يحتاج المعالج إلى قراءة أو كتابة موقع في الذاكرة، فإنه يتحقق أولاً من وجود مدخل مطابق في ذاكرة التخزين المؤقت (الكاش). تتحقق ذاكرة التخزين المؤقت من محتويات موقع الذاكرة المطلوب في أي سطور تخزين مؤقت قد تحتوي على هذا العنوان. إذا وجد المعالج أن موقع الذاكرة موجود في ذاكرة التخزين المؤقت، فهذا يعني حدوث إصابة في ذاكرة التخزين المؤقت . أما إذا لم يجد المعالج موقع الذاكرة في ذاكرة التخزين المؤقت، فهذا يعني حدوث خطأ في ذاكرة التخزين المؤقت . في حالة الإصابة، يقرأ المعالج البيانات أو يكتبها فورًا في سطر ذاكرة التخزين المؤقت. أما في حالة الخطأ، فتقوم ذاكرة التخزين المؤقت بتخصيص مدخل جديد ونسخ البيانات من الذاكرة الرئيسية، ثم يتم تلبية الطلب من محتويات ذاكرة التخزين المؤقت.
السياسات
سياسات الاستبدال
لإفساح المجال لإدخال جديد عند عدم العثور على البيانات في ذاكرة التخزين المؤقت، قد تضطر الذاكرة إلى إزالة أحد الإدخالات الموجودة. تُسمى الطريقة الاستدلالية التي تستخدمها لاختيار الإدخال المراد إزالته بسياسة الاستبدال. تكمن المشكلة الأساسية في أي سياسة استبدال في ضرورة توقع أي إدخال من إدخالات ذاكرة التخزين المؤقت الموجودة هو الأقل احتمالاً للاستخدام في المستقبل. يُعدّ التنبؤ بالمستقبل أمرًا صعبًا عمومًا، لذا لا توجد طريقة مثالية للاختيار من بين سياسات الاستبدال المتنوعة المتاحة. إحدى سياسات الاستبدال الشائعة، وهي الأقل استخدامًا مؤخرًا (LRU)، تستبدل الإدخال الأقل وصولًا إليه مؤخرًا.
يمكن تحسين الأداء بتحديد بعض نطاقات الذاكرة على أنها غير قابلة للتخزين المؤقت، وذلك بتجنب تخزين مناطق الذاكرة التي نادراً ما يُعاد الوصول إليها. وهذا يُجنّبنا عبء تحميل البيانات في ذاكرة التخزين المؤقت دون إعادة استخدامها. كما يمكن تعطيل أو قفل إدخالات ذاكرة التخزين المؤقت حسب السياق.
كتابة السياسات
إذا كُتبت البيانات في ذاكرة التخزين المؤقت، فلا بد من كتابتها في الذاكرة الرئيسية في مرحلة ما؛ ويُعرف توقيت هذه الكتابة بسياسة الكتابة. في ذاكرة التخزين المؤقت للكتابة المباشرة ، تؤدي كل عملية كتابة في ذاكرة التخزين المؤقت إلى كتابة في الذاكرة الرئيسية. أما في ذاكرة التخزين المؤقت للكتابة المؤجلة أو النسخ المؤجل، فلا تُنسخ عمليات الكتابة فورًا إلى الذاكرة الرئيسية، حيث تُعلّم المواقع التي كُتبت عليها بأنها غير مُعدّلة ، ولا تُكتب مرة أخرى إلى الذاكرة الرئيسية إلا عند إخراجها من ذاكرة التخزين المؤقت. لهذا السبب، قد يتطلب خطأ القراءة في ذاكرة التخزين المؤقت للكتابة المؤجلة أحيانًا عمليتي وصول إلى الذاكرة: الأولى لكتابة الموقع غير المُعدّل في الذاكرة الرئيسية، والثانية لقراءة الموقع الجديد من الذاكرة. كذلك، قد تؤدي الكتابة إلى موقع في الذاكرة الرئيسية لم يُعيّن بعد في ذاكرة التخزين المؤقت للكتابة المؤجلة إلى إخراج موقع غير مُعدّل بالفعل، مما يُحرر مساحة ذاكرة التخزين المؤقت للموقع الجديد.
توجد سياسات وسيطة أيضًا. قد تكون ذاكرة التخزين المؤقت قابلة للكتابة المباشرة، ولكن قد يتم الاحتفاظ بعمليات الكتابة في قائمة انتظار بيانات المتجر مؤقتًا، عادةً حتى يمكن معالجة عمليات تخزين متعددة معًا (مما قد يقلل من أوقات استجابة ناقل البيانات ويحسن من استخدام ناقل البيانات).
قد تُغيّر كيانات أخرى (مثل الأجهزة الطرفية التي تستخدم الوصول المباشر إلى الذاكرة (DMA) أو نواة أخرى في معالج متعدد النوى ) البيانات المخزنة مؤقتًا في الذاكرة الرئيسية، وفي هذه الحالة قد تصبح النسخة الموجودة في الذاكرة المؤقتة قديمة. وبالمثل، عندما تُحدّث وحدة المعالجة المركزية في نظام متعدد المعالجات البيانات في الذاكرة المؤقتة، تصبح نسخ البيانات في الذاكرة المؤقتة المرتبطة بوحدات المعالجة المركزية الأخرى قديمة. تُعرف بروتوكولات الاتصال بين مديري الذاكرة المؤقتة التي تحافظ على اتساق البيانات ببروتوكولات اتساق الذاكرة المؤقتة .
أداء ذاكرة التخزين المؤقت
أصبح قياس أداء الذاكرة المخبئية ذا أهمية بالغة في الآونة الأخيرة، حيث تتزايد الفجوة في السرعة بين أداء الذاكرة وأداء المعالج بشكلٍ كبير. وقد طُرحت الذاكرة المخبئية لتقليص هذه الفجوة. لذا، فإن معرفة مدى قدرة الذاكرة المخبئية على سد هذه الفجوة أمرٌ بالغ الأهمية، لا سيما في الأنظمة عالية الأداء. ويلعب معدل نجاح الوصول إلى الذاكرة المخبئية ومعدل فشل الوصول إليها دورًا محوريًا في تحديد هذا الأداء. ولتحسين أداء الذاكرة المخبئية، يُعدّ خفض معدل فشل الوصول إليها خطوةً أساسيةً من بين خطوات أخرى. كما يُسهم تقليل زمن الوصول إلى الذاكرة المخبئية في تعزيز أدائها وتحسينها.
توقف وحدة المعالجة المركزية
يُعدّ الوقت المستغرق لجلب سطر واحد من ذاكرة التخزين المؤقت ( زمن استجابة القراءة الناتج عن عدم وجود البيانات في ذاكرة التخزين المؤقت) عاملاً مهماً، لأن وحدة المعالجة المركزية ستتوقف عن العمل أثناء انتظار هذا السطر. وعندما تصل وحدة المعالجة المركزية إلى هذه الحالة، تُسمى حالة توقف. ومع ازدياد سرعة وحدات المعالجة المركزية مقارنةً بالذاكرة الرئيسية، فإن حالات التوقف الناتجة عن عدم وجود البيانات في ذاكرة التخزين المؤقت تُقلّل من العمليات الحسابية المحتملة؛ إذ تستطيع وحدات المعالجة المركزية الحديثة تنفيذ مئات التعليمات في الوقت المستغرق لجلب سطر واحد من ذاكرة التخزين المؤقت من الذاكرة الرئيسية.
استُخدمت تقنيات متنوعة لإبقاء وحدة المعالجة المركزية مشغولة خلال هذه الفترة، بما في ذلك التنفيذ خارج الترتيب، حيث تحاول وحدة المعالجة المركزية تنفيذ تعليمات مستقلة بعد التعليمات التي تنتظر بيانات مفقودة من الذاكرة المؤقتة. ومن التقنيات الأخرى، المستخدمة في العديد من المعالجات، تقنية تعدد الخيوط المتزامنة (SMT)، التي تسمح لخيط بديل باستخدام نواة وحدة المعالجة المركزية بينما ينتظر الخيط الأول توفر موارد وحدة المعالجة المركزية المطلوبة.
الترابط

تحدد سياسة التوزيع مكان تخزين نسخة من مدخل معين في الذاكرة الرئيسية ضمن الذاكرة المؤقتة. إذا كانت سياسة التوزيع حرة في اختيار أي مدخل في الذاكرة المؤقتة لتخزين النسخة، تُسمى الذاكرة المؤقتة ترابطية بالكامل . وعلى النقيض، إذا كان كل مدخل في الذاكرة الرئيسية يمكن تخزينه في مكان واحد فقط في الذاكرة المؤقتة، تُسمى الذاكرة المؤقتة ذات تعيين مباشر . تُطبق العديد من الذاكرات المؤقتة حلاً وسطاً حيث يمكن تخزين كل مدخل في الذاكرة الرئيسية في أي من N موقع في الذاكرة المؤقتة، وتُسمى ذاكرات مؤقتة ترابطية متعددة الاتجاهات. [ 12 ] على سبيل المثال، ذاكرة البيانات من المستوى الأول في معالج AMD Athlon هي ذاكرة مؤقتة ترابطية ثنائية الاتجاهات، مما يعني أنه يمكن تخزين أي موقع معين في الذاكرة الرئيسية في أحد موقعين في ذاكرة البيانات من المستوى الأول.
يتطلب اختيار القيمة المناسبة للترابطية مفاضلة . فإذا كان هناك عشرة مواقع يمكن لسياسة التوزيع أن تُسند إليها موقعًا في الذاكرة، فسيتطلب التحقق من وجود هذا الموقع في الذاكرة المؤقتة البحث في عشرة مداخل. ويتطلب فحص المزيد من المواقع طاقةً ومساحةً أكبر على الشريحة، وربما وقتًا أطول. من ناحية أخرى، تُعاني الذاكرات المؤقتة ذات الترابطية الأعلى من عدد أقل من حالات عدم الوصول (انظر حالات عدم الوصول المتعارضة )، مما يُقلل من الوقت الذي يُهدره المعالج المركزي في القراءة من الذاكرة الرئيسية البطيئة. وتتمثل القاعدة العامة في أن مضاعفة الترابطية، من التعيين المباشر إلى التعيين ثنائي الاتجاه، أو من التعيين ثنائي الاتجاه إلى التعيين رباعي الاتجاه، لها نفس تأثير مضاعفة حجم الذاكرة المؤقتة تقريبًا على رفع معدل الوصول. ومع ذلك، فإن زيادة الترابطية عن أربعة لا تُحسّن معدل الوصول بنفس القدر، [ 13 ] وعادةً ما تُجرى لأسباب أخرى (انظر التداخل الظاهري ). ويمكن لبعض المعالجات المركزية تقليل ترابطية ذاكراتها المؤقتة ديناميكيًا في حالات الطاقة المنخفضة، وهو ما يُعد إجراءً لتوفير الطاقة. [ 14 ]
بالترتيب من الأسوأ (لكنه بسيط) إلى الأفضل (لكنه معقد):
- ذاكرة التخزين المؤقت ذات التعيين المباشر - وقت جيد في أفضل الأحوال، لكنها غير قابلة للتنبؤ في أسوأ الأحوال
- ذاكرة تخزين مؤقتة ترابطية ثنائية الاتجاه
- ذاكرة التخزين المؤقت الترابطية المنحرفة ثنائية الاتجاه [ 15 ]
- ذاكرة تخزين مؤقتة رباعية الاتجاهات ذات مجموعات ترابطية
- ذاكرة تخزين مؤقتة ثمانية الاتجاهات ذات ترابط مجموعات، وهي خيار شائع للتطبيقات اللاحقة
- ذاكرة تخزين مؤقتة ترابطية ذات 12 اتجاهًا، على غرار ذاكرة التخزين المؤقتة ذات 8 اتجاهات
- ذاكرة التخزين المؤقت الترابطية بالكامل – أفضل معدلات الخطأ، ولكنها عملية فقط لعدد قليل من الإدخالات
ذاكرة تخزين مؤقتة ذات تعيين مباشر
في هذا النوع من تنظيم الذاكرة المؤقتة، لا يمكن تخزين أي عنصر في الذاكرة الرئيسية إلا في مدخل واحد فقط من الذاكرة المؤقتة. لذلك، يمكن تسمية الذاكرة المؤقتة ذات التعيين المباشر بذاكرة مؤقتة "ذاتية التجميع أحادي الاتجاه". فهي لا تتبع سياسة تحديد المواقع، إذ لا يوجد خيار لتحديد أي مدخل من الذاكرة المؤقتة يُزال. هذا يعني أنه إذا تم تعيين موقعين لنفس المدخل، فقد يُزيل أحدهما الآخر باستمرار. على الرغم من بساطتها، إلا أن الذاكرة المؤقتة ذات التعيين المباشر تحتاج إلى أن تكون أكبر بكثير من الذاكرة المؤقتة ذات التعيين التجميعي لتحقيق أداء مماثل، كما أنها أقل قابلية للتنبؤ. لنفترض أن x هو رقم الكتلة في الذاكرة المؤقتة، و y هو رقم الكتلة في الذاكرة الرئيسية، و n هو عدد الكتل في الذاكرة المؤقتة، عندئذٍ يتم التعيين باستخدام المعادلة x = y mod n .
ذاكرة تخزين مؤقتة ترابطية ثنائية الاتجاه
إذا كان بالإمكان تخزين كل موقع في الذاكرة الرئيسية في أحد موقعين في ذاكرة التخزين المؤقت، فإن السؤال المنطقي هو: أيّهما؟ أبسط الطرق وأكثرها شيوعًا، كما هو موضح في الرسم البياني على اليمين أعلاه، هي استخدام أقل البتات أهمية في فهرس موقع الذاكرة كفهرس لذاكرة التخزين المؤقت، مع وجود مدخلين لكل فهرس. من مزايا هذه الطريقة أن العلامات المخزنة في ذاكرة التخزين المؤقت لا تتطلب تضمين ذلك الجزء من عنوان الذاكرة الرئيسية الذي يُستدل عليه من فهرس ذاكرة التخزين المؤقت. ولأن علامات ذاكرة التخزين المؤقت تحتوي على عدد أقل من البتات، فإنها تتطلب عددًا أقل من الترانزستورات، وتشغل مساحة أقل على لوحة دوائر المعالج أو على شريحة المعالج الدقيق، ويمكن قراءتها ومقارنتها بشكل أسرع. كما أن خوارزمية LRU بسيطة للغاية، إذ لا يلزم سوى تخزين بت واحد لكل زوج.
التنفيذ التخميني
من مزايا ذاكرة التخزين المؤقت ذات التعيين المباشر أنها تتيح التخمين البسيط والسريع . فبمجرد حساب العنوان، يُعرف فهرس ذاكرة التخزين المؤقت الوحيد الذي قد يحتوي على نسخة من ذلك الموقع في الذاكرة. ويمكن قراءة مدخل ذاكرة التخزين المؤقت هذا، ويستطيع المعالج مواصلة العمل مع تلك البيانات قبل أن ينتهي من التحقق من تطابق الوسم مع العنوان المطلوب.
يمكن تطبيق فكرة استخدام المعالج للبيانات المخزنة مؤقتًا قبل اكتمال مطابقة الوسم على ذاكرات التخزين المؤقت الترابطية أيضًا. يُمكن استخدام جزء من الوسم، يُسمى " تلميحًا" ، لاختيار أحد إدخالات ذاكرة التخزين المؤقت المُحتملة التي تُطابق العنوان المطلوب. يُمكن بعد ذلك استخدام الإدخال المُختار بواسطة التلميح بالتوازي مع فحص الوسم الكامل. تُحقق تقنية التلميح أفضل النتائج عند استخدامها في سياق ترجمة العناوين، كما هو مُوضح أدناه.
ذاكرة تخزين مؤقتة ترابطية منحرفة ثنائية الاتجاه
تم اقتراح مخططات أخرى، مثل ذاكرة التخزين المؤقت المائلة [ 15 ] ، حيث يكون فهرس المسار 0 مباشرًا، كما ذُكر أعلاه، بينما يُشكّل فهرس المسار 1 باستخدام دالة تجزئة . تتميز دالة التجزئة الجيدة بخاصية أن العناوين التي تتعارض مع التعيين المباشر لا تتعارض عادةً عند تعيينها باستخدام دالة التجزئة، وبالتالي يقل احتمال تعرض البرنامج لعدد كبير غير متوقع من حالات عدم الوصول بسبب نمط وصول غير طبيعي. أما الجانب السلبي فهو زيادة زمن الاستجابة الناتج عن حساب دالة التجزئة [ 16 ] . بالإضافة إلى ذلك، عند تحميل سطر جديد وإخراج سطر قديم، قد يصعب تحديد أي سطر موجود هو الأقل استخدامًا مؤخرًا، لأن السطر الجديد يتعارض مع البيانات في فهارس مختلفة في كل مسار؛ وعادةً ما يتم تتبع LRU لذاكرات التخزين المؤقت غير المائلة على أساس كل مجموعة. ومع ذلك، تتمتع ذاكرات التخزين المؤقت المائلة بمزايا كبيرة على ذاكرات التخزين المؤقت التقليدية القائمة على المجموعات [ 17 ] .
ذاكرة تخزين مؤقتة شبه ترابطية
تختبر ذاكرة التخزين المؤقت ذات التجميع الحقيقي جميع الطرق الممكنة في آنٍ واحد، باستخدام ما يشبه ذاكرة الوصول العشوائي للمحتوى . أما ذاكرة التخزين المؤقت ذات التجميع الزائف فتختبر كل طريقة ممكنة على حدة. وتُعد ذاكرة التخزين المؤقت ذات التجزئة وإعادة التجزئة وذاكرة التخزين المؤقت ذات التجميع العمودي مثالين على ذاكرة التخزين المؤقت ذات التجميع الزائف.
في الحالة الشائعة المتمثلة في العثور على تطابق في الطريقة الأولى المختبرة، تكون ذاكرة التخزين المؤقت شبه الترابطية بنفس سرعة ذاكرة التخزين المؤقت ذات التعيين المباشر، ولكنها تتميز بمعدل خطأ تعارض أقل بكثير من ذاكرة التخزين المؤقت ذات التعيين المباشر، وأقرب إلى معدل الخطأ لذاكرة التخزين المؤقت الترابطية الكاملة. [ 16 ]
ذاكرة تخزين مؤقتة متعددة الأعمدة
بالمقارنة مع ذاكرة التخزين المؤقت ذات التعيين المباشر، تتميز ذاكرة التخزين المؤقت ذات التعيين الجماعي بعدد أقل من البتات لفهرس مجموعة التخزين المؤقت الذي يُشير إلى مجموعة تخزين مؤقت، حيث توجد مسارات أو كتل متعددة، مثل كتلتين لذاكرة تخزين مؤقت ثنائية المسار وأربع كتل لذاكرة تخزين مؤقت رباعية المسار. وبالمقارنة مع ذاكرة التخزين المؤقت ذات التعيين المباشر، تُصبح بتات فهرس التخزين المؤقت غير المستخدمة جزءًا من بتات الوسم. على سبيل المثال، تُساهم ذاكرة التخزين المؤقت ثنائية المسار ببت واحد في الوسم، بينما تُساهم ذاكرة التخزين المؤقت رباعية المسار ببتين. وتتمثل الفكرة الأساسية لذاكرة التخزين المؤقت متعددة الأعمدة [ 18 ] في استخدام فهرس المجموعة للتعيين إلى مجموعة تخزين مؤقت كما تفعل ذاكرة التخزين المؤقت التقليدية ذات التعيين الجماعي، واستخدام بتات الوسم المُضافة لفهرسة مسار في المجموعة. على سبيل المثال، في ذاكرة تخزين مؤقتة ترابطية رباعية الاتجاهات، تُستخدم البتتان لفهرسة الاتجاهات 00 و01 و10 و11 على التوالي. يُطلق على فهرسة ذاكرة التخزين المؤقتة المزدوجة هذه اسم "تعيين الموقع الرئيسي"، وزمن استجابتها يُعادل زمن الوصول المباشر. تُظهر تجارب مُوسّعة في تصميم ذاكرة التخزين المؤقتة متعددة الأعمدة [ 18 ] أن نسبة الوصول إلى المواقع الرئيسية تصل إلى 90%. في حال تعارض تعيين ذاكرة التخزين المؤقتة مع كتلة في الموقع الرئيسي، تُنقل الكتلة الموجودة إلى اتجاه آخر في نفس المجموعة، وهو ما يُسمى "الموقع المُختار". ولأن كتلة ذاكرة التخزين المؤقتة المُفهرسة حديثًا هي كتلة مُستخدمة مؤخرًا (MRU)، تُوضع في الموقع الرئيسي في ذاكرة التخزين المؤقتة متعددة الأعمدة مع مراعاة التوطين الزمني. ولأن ذاكرة التخزين المؤقتة متعددة الأعمدة مُصممة لذاكرة تخزين مؤقتة ذات ترابطية عالية، فإن عدد الاتجاهات في كل مجموعة يكون كبيرًا؛ وبالتالي، يسهل العثور على الموقع المُختار في المجموعة. يتم الاحتفاظ بفهرس موقع محدد بواسطة جهاز إضافي للموقع الرئيسي في كتلة ذاكرة التخزين المؤقت.
تتميز ذاكرة التخزين المؤقت متعددة الأعمدة بنسبة نجاح عالية نظرًا لترابطها العالي، كما أنها تتمتع بزمن استجابة منخفض مماثل لذاكرة التخزين المؤقت ذات التعيين المباشر نظرًا لارتفاع نسبة النجاح في المواقع الرئيسية. وقد استُخدم مفهوما المواقع الرئيسية والمواقع المختارة في ذاكرة التخزين المؤقت متعددة الأعمدة في العديد من تصميمات ذاكرة التخزين المؤقت في شريحة ARM Cortex R، [ 19 ] وذاكرة التخزين المؤقت للتنبؤ بالمسارات من إنتل، [ 20 ] وذاكرة التخزين المؤقت الترابطية متعددة المسارات القابلة لإعادة التكوين من IBM ، [ 21 ] واختيار مسار استبدال ذاكرة التخزين المؤقت الديناميكي من أوراكل بناءً على بتات علامات التبويب الخاصة بالعناوين. [ 22 ]
بنية إدخال ذاكرة التخزين المؤقت
عادةً ما تحتوي إدخالات صفوف ذاكرة التخزين المؤقت على البنية التالية:
| علامة | كتلة البيانات | أجزاء العلم |
تحتوي كتلة البيانات (سطر التخزين المؤقت) على البيانات الفعلية التي تم جلبها من الذاكرة الرئيسية. ويحتوي الوسم على (جزء من) عنوان البيانات الفعلية التي تم جلبها من الذاكرة الرئيسية. وسيتم شرح بتات العلامات لاحقًا .
يُقصد بـ"حجم" ذاكرة التخزين المؤقت مقدار البيانات التي يمكنها استيعابها من الذاكرة الرئيسية. ويمكن حساب هذا الحجم بضرب عدد البايتات المخزنة في كل كتلة بيانات في عدد الكتل المخزنة في ذاكرة التخزين المؤقت. (لا تُحتسب بتات الوسم والعلامة ورمز تصحيح الأخطاء ضمن الحجم، [ 23 ] على الرغم من أنها تؤثر على المساحة الفيزيائية لذاكرة التخزين المؤقت).
يتم تقسيم عنوان الذاكرة الفعال، المرتبط بسطر التخزين المؤقت (كتلة الذاكرة)، من البت الأكثر أهمية إلى البت الأقل أهمية ، إلى الوسم والفهرس وإزاحة الكتلة. [ 8 ] [ 24 ]
| علامة | فِهرِس | إزاحة الكتلة |
يصف الفهرس مجموعة ذاكرة التخزين المؤقت التي وُضعت فيها البيانات. طول الفهرس هوبتات لمجموعات ذاكرة التخزين المؤقت s .
يُحدد إزاحة الكتلة البيانات المطلوبة داخل كتلة البيانات المخزنة في صف ذاكرة التخزين المؤقت. عادةً ما يكون العنوان الفعلي بالبايت، لذا فإن طول إزاحة الكتلة هوبتات، حيث يمثل b عدد البايتات لكل كتلة بيانات. يحتوي الوسم على البتات الأكثر أهمية من العنوان، والتي تُفحص مقابل جميع الصفوف في المجموعة الحالية (التي تم استرجاعها بواسطة الفهرس) لمعرفة ما إذا كانت هذه المجموعة تحتوي على العنوان المطلوب. إذا كان الأمر كذلك، فهذا يعني وجود العنوان في ذاكرة التخزين المؤقت. طول الوسم بالبتات كما يلي:
tag_length = address_length - index_length - block_offset_length
يشير بعض المؤلفين إلى إزاحة الكتلة ببساطة باسم "الإزاحة" [ 25 ] أو "الانزياح". [ 26 ] [ 27 ]
مثال
كان معالج بنتيوم 4 الأصلي مزودًا بذاكرة تخزين مؤقتة من المستوى الأول (L1) ذات بنية ترابطية رباعية الاتجاهات، بسعة 8 كيلوبايت ، مع كتل تخزين مؤقتة بحجم 64 بايت. وبالتالي، يوجد 8 كيلوبايت / 64 = 128 كتلة تخزين مؤقتة. عدد المجموعات يساوي عدد كتل التخزين المؤقتة مقسومًا على عدد طرق الترابط، مما ينتج عنه 128 / 4 = 32 مجموعة، وبالتالي 2⁵ = 32 فهرسًا مختلفًا. يوجد 2⁶ = 64 إزاحة ممكنة. بما أن عنوان وحدة المعالجة المركزية (CPU) يبلغ عرضه 32 بت، فهذا يعني أن حقل العلامة يتكون من 32 - 5 - 6 = 21 بت.
كان معالج بنتيوم 4 الأصلي يحتوي أيضًا على ذاكرة تخزين مؤقتة مدمجة من المستوى الثاني (L2) ذات ثمانية اتجاهات، بحجم 256 كيلوبايت، مع كتل ذاكرة تخزين مؤقتة بحجم 128 بايت. وهذا يعني أن حقل العلامة يحتوي على 17 بت ( 32 - 8 - 7) . [ 25 ]
أجزاء العلم
لا تتطلب ذاكرة التخزين المؤقت للتعليمات سوى بت واحد لكل مدخل في صف ذاكرة التخزين المؤقت: بت الصلاحية. يشير بت الصلاحية إلى ما إذا كانت كتلة ذاكرة التخزين المؤقت قد تم تحميلها ببيانات صالحة أم لا.
عند بدء التشغيل، يقوم الجهاز بتعيين جميع البتات الصالحة في جميع ذاكرات التخزين المؤقت إلى "غير صالحة". كما تقوم بعض الأنظمة بتعيين بت صالح إلى "غير صالحة" في أوقات أخرى، مثل عندما يستقبل جهاز مراقبة ناقل البيانات الرئيسي المتعدد في ذاكرة التخزين المؤقت لأحد المعالجات بث عنوان من معالج آخر، ويدرك أن بعض كتل البيانات في ذاكرة التخزين المؤقت المحلية أصبحت قديمة ويجب وضع علامة "غير صالحة" عليها.
تتطلب ذاكرة التخزين المؤقت للبيانات عادةً بتّين لكل سطر تخزين مؤقت - بتّ الصلاحية وبتّ التغيير . يشير وجود بتّ التغيير إلى أن سطر التخزين المؤقت المرتبط قد تم تغييره منذ قراءته من الذاكرة الرئيسية ("مُغيّر")، مما يعني أن المعالج قد كتب بيانات إلى ذلك السطر ولم تنتقل القيمة الجديدة إلى الذاكرة الرئيسية.
كاشميست
يُعرَّف خطأ الذاكرة المؤقتة بأنه محاولة فاشلة لقراءة أو كتابة جزء من البيانات في الذاكرة المؤقتة، مما يؤدي إلى وصول البيانات إلى الذاكرة الرئيسية بزمن استجابة أطول بكثير. وهناك ثلاثة أنواع من أخطاء الذاكرة المؤقتة: خطأ في قراءة التعليمات، وخطأ في قراءة البيانات، وخطأ في كتابة البيانات.
تتسبب حالات عدم العثور على التعليمات في ذاكرة التخزين المؤقت للتعليمات عادةً في أكبر تأخير، لأن المعالج، أو على الأقل سلسلة التنفيذ ، يضطر للانتظار (التوقف) حتى يتم جلب التعليمات من الذاكرة الرئيسية. أما حالات عدم العثور على التعليمات في ذاكرة التخزين المؤقت للبيانات فتتسبب عادةً في تأخير أقل، لأن التعليمات غير المعتمدة على قراءة ذاكرة التخزين المؤقت يمكن إصدارها ومواصلة تنفيذها حتى يتم إرجاع البيانات من الذاكرة الرئيسية، ويمكن للتعليمات المعتمدة استئناف التنفيذ. بينما تتسبب حالات عدم العثور على التعليمات في ذاكرة التخزين المؤقت للبيانات عادةً في أقصر تأخير، لأن عملية الكتابة يمكن وضعها في قائمة انتظار، وهناك قيود قليلة على تنفيذ التعليمات اللاحقة؛ ويمكن للمعالج الاستمرار حتى تمتلئ قائمة الانتظار. لمزيد من التفاصيل حول أنواع حالات عدم العثور على التعليمات، راجع قياس أداء ذاكرة التخزين المؤقت ومقاييسه .
ترجمة العناوين
تُطبّق معظم وحدات المعالجة المركزية للأغراض العامة نوعًا من الذاكرة الافتراضية . باختصار، إما أن يرى كل برنامج يعمل على الجهاز مساحة عناوين مُبسّطة خاصة به ، تحتوي على التعليمات البرمجية والبيانات الخاصة به فقط، أو أن جميع البرامج تعمل في مساحة عناوين افتراضية مشتركة. يُنفّذ البرنامج عن طريق الحساب والمقارنة والقراءة والكتابة إلى عناوين مساحة عناوينه الافتراضية، بدلاً من عناوين مساحة العناوين الفيزيائية، مما يجعل البرامج أبسط وبالتالي أسهل في الكتابة.
تتطلب الذاكرة الافتراضية من المعالج ترجمة العناوين الافتراضية التي يُنشئها البرنامج إلى عناوين فيزيائية في الذاكرة الرئيسية. يُعرف الجزء من المعالج الذي يقوم بهذه الترجمة بوحدة إدارة الذاكرة (MMU). يمكن للمسار السريع عبر وحدة إدارة الذاكرة إجراء هذه الترجمات المخزنة في مخزن الترجمة المؤقت (TLB)، وهو عبارة عن ذاكرة تخزين مؤقتة للربط بين جدول الصفحات أو جدول القطاعات أو كليهما في نظام التشغيل.
لأغراض هذه المناقشة، هناك ثلاث سمات مهمة لترجمة العناوين:
- زمن الوصول: يتوفر العنوان الفعلي من وحدة إدارة الذاكرة (MMU) بعد فترة من الزمن، ربما بضع دورات، من توفر العنوان الظاهري من مولد العناوين.
- التداخل: يمكن ربط عناوين افتراضية متعددة بعنوان فعلي واحد. تضمن معظم المعالجات أن جميع التحديثات التي تطرأ على هذا العنوان الفعلي ستتم بالتسلسل البرمجي. ولتحقيق هذا الضمان، يجب على المعالج التأكد من وجود نسخة واحدة فقط من العنوان الفعلي في الذاكرة المؤقتة في أي وقت.
- مستوى التفصيل: تُقسّم مساحة العناوين الافتراضية إلى صفحات. على سبيل المثال، قد تُقسّم مساحة عناوين افتراضية بحجم 4 جيجابايت إلى 1,048,576 صفحة بحجم 4 كيلوبايت، ويمكن ربط كل صفحة منها بشكل مستقل. قد تدعم بعض الشركات أحجام صفحات متعددة؛ راجع قسم الذاكرة الافتراضية لمزيد من التفاصيل.
تطلّب أحد أنظمة الذاكرة الافتراضية المبكرة، وهو IBM M44/44X ، الوصول إلى جدول ربط مُخزّن في الذاكرة الأساسية قبل كل عملية وصول مُبرمجة إلى الذاكرة الرئيسية. [ 28 ] [ ملاحظة 1 ] وبدون ذاكرة تخزين مؤقتة، ومع تشغيل ذاكرة جدول الربط بنفس سرعة الذاكرة الرئيسية، انخفضت سرعة الوصول إلى الذاكرة إلى النصف فعليًا. استخدم جهازان مبكران جدول صفحات في الذاكرة الرئيسية للربط، وهما IBM System/360 Model 67 و GE 645 ، ذاكرة ترابطية صغيرة كذاكرة تخزين مؤقتة للوصول إلى جدول الصفحات الموجود في الذاكرة. سبق كلا الجهازين أول جهاز مزود بذاكرة تخزين مؤقتة للذاكرة الرئيسية، وهو IBM System/360 Model 85 ، لذا لم تكن أول ذاكرة تخزين مؤقتة للأجهزة تُستخدم في نظام حاسوبي ذاكرة تخزين مؤقتة للبيانات أو التعليمات، بل كانت ذاكرة ترجمة العناوين (TLB).
يمكن تقسيم ذاكرة التخزين المؤقت إلى أربعة أنواع، بناءً على ما إذا كان الفهرس أو العلامة يتوافق مع عناوين فعلية أو افتراضية:
- تستخدم ذاكرة التخزين المؤقت المفهرسة والموسومة فعليًا (PIPT) العنوان الفعلي لكل من الفهرس والوسم. ورغم بساطة هذه الطريقة وتجنبها لمشاكل التداخل، إلا أنها بطيئة، إذ يجب البحث عن العنوان الفعلي (مما قد يؤدي إلى خطأ في ذاكرة الترجمة السريعة والوصول إلى الذاكرة الرئيسية) قبل البحث عنه في ذاكرة التخزين المؤقت.
- تستخدم ذاكرة التخزين المؤقت ذات الفهرسة والوسم الافتراضيين (VIVT) العنوان الافتراضي لكلٍ من الفهرس والوسم. يمكن أن يؤدي نظام التخزين المؤقت هذا إلى عمليات بحث أسرع بكثير، حيث لا يلزم الرجوع إلى وحدة إدارة الذاكرة (MMU) أولاً لتحديد العنوان الفعلي لعنوان افتراضي معين. مع ذلك، تعاني VIVT من مشكلة التداخل، حيث قد تشير عدة عناوين افتراضية مختلفة إلى نفس العنوان الفعلي. والنتيجة هي تخزين هذه العناوين بشكل منفصل على الرغم من إشارتها إلى نفس الذاكرة، مما يُسبب مشاكل في التناسق. على الرغم من وجود حلول لهذه المشكلة [ 31 ]، إلا أنها لا تعمل مع بروتوكولات التناسق القياسية. مشكلة أخرى هي التجانس، حيث يُشير نفس العنوان الافتراضي إلى عدة عناوين فعلية مختلفة. لا يمكن التمييز بين هذه العناوين بمجرد النظر إلى الفهرس الافتراضي نفسه، على الرغم من أن الحلول المحتملة تشمل: مسح ذاكرة التخزين المؤقت بعد تبديل السياق ، وفرض عدم تداخل مساحات العناوين، ووسم العنوان الافتراضي بمعرف مساحة عنوان (ASID). بالإضافة إلى ذلك، توجد مشكلة تتمثل في إمكانية تغيير عمليات الربط بين العناوين الافتراضية والمادية، مما يستلزم مسح سطور ذاكرة التخزين المؤقت، حيث تصبح العناوين الافتراضية غير صالحة. وتختفي كل هذه المشكلات عند استخدام العناوين المادية في العلامات (VIPT).
- تستخدم ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي (VIPT) العنوان الافتراضي للفهرس والعنوان الفعلي للوسم. وتكمن ميزتها على ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي في انخفاض زمن الاستجابة، حيث يمكن البحث عن مجموعة ذاكرة التخزين المؤقت بالتوازي مع ترجمة TLB، إلا أنه لا يمكن مقارنة الوسم إلا بعد توفر العنوان الفعلي. أما ميزتها على ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي (VIVT) فتكمن في قدرة ذاكرة التخزين المؤقت على اكتشاف الكلمات المتجانسة، نظرًا لاحتواء الوسم على العنوان الفعلي. نظريًا، تتطلب ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي عددًا أكبر من بتات الوسم، لأن بعض بتات الفهرس قد تختلف بين العنوانين الافتراضي والفعلي (على سبيل المثال، البت 12 وما فوق للصفحات بحجم 4 كيلوبايت)، وبالتالي يجب تضمينها في كل من الفهرس الافتراضي والوسم الفعلي. عمليًا، لا يمثل هذا مشكلة، لأنه لتجنب مشاكل التناسق، صُممت ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي بحيث لا تحتوي على بتات فهرس (على سبيل المثال، عن طريق تحديد العدد الإجمالي للبتات للفهرس وإزاحة الكتلة إلى 12 للصفحات بحجم 4 كيلوبايت)؛ وهذا يحد من حجم ذاكرة التخزين المؤقت ذات الفهرسة الافتراضية والوسم الفعلي إلى حجم الصفحة مضروبًا في ترابط ذاكرة التخزين المؤقت.
- كثيرًا ما يُزعم في الأدبيات أن ذاكرة التخزين المؤقت المفهرسة فعليًا والموسومة افتراضيًا (PIVT) عديمة الفائدة وغير موجودة. [ 32 ] ومع ذلك، يستخدم معالج MIPS R6000 هذا النوع من ذاكرة التخزين المؤقت باعتباره التطبيق الوحيد المعروف. [ 33 ] يُنفذ معالج R6000 باستخدام منطق اقتران الباعث ، وهي تقنية فائقة السرعة غير مناسبة للذواكر الكبيرة مثل ذاكرة الترجمة السريعة (TLB) . يحل معالج R6000 هذه المشكلة بوضع ذاكرة الترجمة السريعة في جزء محجوز من ذاكرة التخزين المؤقت من المستوى الثاني، والذي يحتوي على "شريحة" صغيرة وعالية السرعة من ذاكرة الترجمة السريعة على الشريحة. تُفهرس ذاكرة التخزين المؤقت بواسطة العنوان الفعلي المُستمد من شريحة ذاكرة الترجمة السريعة. ولكن، نظرًا لأن شريحة ذاكرة الترجمة السريعة تترجم فقط بتات العنوان الافتراضي اللازمة لفهرسة ذاكرة التخزين المؤقت ولا تستخدم أي وسوم، فقد تحدث حالات وصول خاطئة إلى ذاكرة التخزين المؤقت، ويتم حل هذه المشكلة عن طريق الوسم بالعنوان الافتراضي.
تُعد سرعة هذا التكرار ( زمن استجابة التحميل ) أمرًا بالغ الأهمية لأداء وحدة المعالجة المركزية، ولذلك فإن معظم ذاكرات التخزين المؤقت الحديثة من المستوى 1 مفهرسة افتراضيًا، مما يسمح على الأقل لعملية البحث في TLB الخاصة بوحدة إدارة الذاكرة (MMU) بالتوازي مع جلب البيانات من ذاكرة الوصول العشوائي (RAM) الخاصة بذاكرة التخزين المؤقت.
لكن الفهرسة الافتراضية ليست الخيار الأمثل لجميع مستويات التخزين المؤقت. تزداد تكلفة التعامل مع الأسماء المستعارة الافتراضية مع ازدياد حجم التخزين المؤقت، ونتيجة لذلك، فإن معظم ذاكرات التخزين المؤقت من المستوى الثاني وما فوقها تعتمد على الفهرسة الفعلية.
لطالما استخدمت الذاكرة المخبئية عناوين افتراضية ومادية لعلامات التخزين المؤقت، مع أن استخدام العلامات الافتراضية أصبح نادرًا. إذا أمكن إتمام عملية البحث في جدول ترجمة العناوين (TLB) قبل البحث في ذاكرة الوصول العشوائي (RAM) الخاصة بالذاكرة المخبئية، فسيكون العنوان المادي متاحًا في الوقت المناسب لمقارنة العلامات، وبالتالي لا حاجة للعلامات الافتراضية. لذلك، تميل الذاكرة المخبئية الكبيرة إلى أن تكون موسومة ماديًا، بينما تُستخدم العلامات الافتراضية فقط في الذاكرة المخبئية الصغيرة ذات زمن الوصول المنخفض جدًا. في وحدات المعالجة المركزية الحديثة للأغراض العامة، حلت التلميحات الافتراضية محل العلامات الافتراضية، كما هو موضح أدناه.
مشاكل التجانس والترادف
تصبح ذاكرة التخزين المؤقت التي تعتمد على الفهرسة والوسم الافتراضيين غير متسقة بعد ربط نفس العنوان الافتراضي بعناوين فيزيائية مختلفة ( التجانس )، ويمكن حل هذه المشكلة باستخدام العنوان الفيزيائي للوسم، أو بتخزين مُعرِّف مساحة العنوان في سطر ذاكرة التخزين المؤقت. مع ذلك، لا يُجدي الأسلوب الأخير نفعًا في حل مشكلة التماثل ، حيث ينتهي الأمر بعدة أسطر من ذاكرة التخزين المؤقت بتخزين بيانات لنفس العنوان الفيزيائي. قد تؤدي الكتابة إلى هذه المواقع إلى تحديث موقع واحد فقط في ذاكرة التخزين المؤقت، تاركةً المواقع الأخرى ببيانات غير متسقة. يمكن حل هذه المشكلة باستخدام تخطيطات ذاكرة غير متداخلة لمساحات العناوين المختلفة، أو بدلاً من ذلك، يجب مسح ذاكرة التخزين المؤقت (أو جزء منها) عند تغيير الربط. [ 34 ]
العلامات والتلميحات الافتراضية
تتمثل الميزة الكبرى للعلامات الافتراضية في أنها، بالنسبة لذاكرة التخزين المؤقت الترابطية، تسمح بمطابقة العلامات قبل إتمام عملية تحويل العنوان الافتراضي إلى عنوان فعلي. مع ذلك، تُقدّم عمليات التحقق من التماسك وعمليات الإخلاء عنوانًا فعليًا لاتخاذ إجراء. يجب أن يمتلك الجهاز وسيلة لتحويل العناوين الفعلية إلى فهرس ذاكرة التخزين المؤقت، وذلك عادةً عن طريق تخزين العلامات الفعلية بالإضافة إلى العلامات الافتراضية. على سبيل المقارنة، لا تحتاج ذاكرة التخزين المؤقت ذات العلامات الفعلية إلى الاحتفاظ بالعلامات الافتراضية، مما يُسهّل العملية. عند حذف ربط من عنوان افتراضي إلى عنوان فعلي من ذاكرة الترجمة (TLB)، يجب مسح إدخالات ذاكرة التخزين المؤقت التي تحتوي على تلك العناوين الافتراضية بطريقة ما. بدلاً من ذلك، إذا سُمح بإدخالات ذاكرة التخزين المؤقت على صفحات غير مرتبطة بذاكرة الترجمة (TLB)، فيجب مسح تلك الإدخالات عند تغيير حقوق الوصول على تلك الصفحات في جدول الصفحات.
من الممكن أيضًا لنظام التشغيل ضمان عدم وجود أسماء مستعارة افتراضية في الذاكرة المؤقتة في الوقت نفسه. ويحقق نظام التشغيل هذا الضمان من خلال فرض تلوين الصفحات، الموضح أدناه. وقد اعتمدت بعض معالجات RISC المبكرة (SPARC، RS/6000) هذا النهج. إلا أنه لم يُستخدم مؤخرًا، نظرًا لانخفاض تكلفة الأجهزة اللازمة لاكتشاف الأسماء المستعارة الافتراضية وإزالتها، وارتفاع تعقيد البرمجيات وتأثير تلوين الصفحات المثالي على الأداء.
من المفيد التمييز بين وظيفتي الوسوم في ذاكرة التخزين المؤقت الترابطية: فهي تُستخدم لتحديد أي اتجاه من مجموعة الإدخالات يجب اختياره، وتُستخدم لتحديد ما إذا كانت ذاكرة التخزين المؤقت قد نجحت أم فشلت. يجب أن تكون الوظيفة الثانية صحيحة دائمًا، ولكن يُسمح للوظيفة الأولى بالتخمين، والحصول على إجابة خاطئة أحيانًا.
تحتوي بعض المعالجات (مثل معالجات SPARC القديمة) على ذاكرة تخزين مؤقتة ذات علامات افتراضية ومادية. تُستخدم العلامات الافتراضية لاختيار المسار، بينما تُستخدم العلامات المادية لتحديد ما إذا كانت البيانات موجودة أم لا. يتميز هذا النوع من ذاكرة التخزين المؤقتة بميزة زمن الاستجابة لذاكرة التخزين المؤقتة ذات العلامات الافتراضية، وواجهة برمجية بسيطة لذاكرة التخزين المؤقتة ذات العلامات المادية. ومع ذلك، فإنه يتحمل تكلفة إضافية تتمثل في العلامات المكررة. كذلك، أثناء معالجة حالات عدم وجود البيانات، يجب فحص المسارات البديلة لسطر ذاكرة التخزين المؤقتة المفهرس بحثًا عن أسماء مستعارة افتراضية، وإزالة أي تطابقات.
يمكن التخفيف من المساحة الإضافية (وبعض التأخير) عن طريق الاحتفاظ بتلميحات افتراضية مع كل مدخل في ذاكرة التخزين المؤقت بدلاً من العلامات الافتراضية. هذه التلميحات هي مجموعة فرعية أو تجزئة للعلامة الافتراضية، وتُستخدم لتحديد مسار ذاكرة التخزين المؤقت الذي سيتم منه الحصول على البيانات والعلامة الفعلية. كما هو الحال في ذاكرة التخزين المؤقت ذات العلامات الافتراضية، قد يكون هناك تطابق في التلميح الافتراضي ولكن عدم تطابق في العلامة الفعلية، وفي هذه الحالة يجب إخراج مدخل ذاكرة التخزين المؤقت الذي يحتوي على التلميح المطابق بحيث يكون للوصول إلى ذاكرة التخزين المؤقت بعد ملئها عند هذا العنوان تطابق واحد فقط في التلميح. نظرًا لأن التلميحات الافتراضية تحتوي على عدد أقل من البتات من العلامات الافتراضية التي تميزها عن بعضها البعض، فإن ذاكرة التخزين المؤقت ذات التلميحات الافتراضية تعاني من حالات فشل تعارض أكثر من ذاكرة التخزين المؤقت ذات العلامات الافتراضية.
لعلّ أفضل مثال على تقليل استخدام التلميحات الافتراضية يكمن في معالجات بنتيوم 4 (نوى ويلاميت ونورثوود). في هذه المعالجات، يُمثّل التلميح الافتراضي فعليًا بتّين، وتكون ذاكرة التخزين المؤقت ذات بنية ترابطية رباعية الاتجاهات. وبالتالي، يحتفظ الجهاز بتبديل بسيط بين العنوان الافتراضي وفهرس ذاكرة التخزين المؤقت، ما يُغني عن استخدام ذاكرة الوصول العشوائي للمحتوى (CAM) لاختيار العنوان الصحيح من بين العناوين الأربعة المُسترجعة.
تلوين الصفحة
تواجه ذاكرات التخزين المؤقت الكبيرة ذات الفهرسة الفيزيائية (عادةً ما تكون ذاكرات تخزين مؤقت ثانوية) مشكلةً تتمثل في أن نظام التشغيل، وليس التطبيق، هو من يتحكم في الصفحات التي تتعارض مع بعضها البعض في ذاكرة التخزين المؤقت. وتؤدي الاختلافات في تخصيص الصفحات من تشغيل برنامج لآخر إلى اختلافات في أنماط تعارض ذاكرة التخزين المؤقت، مما قد يُسبب اختلافات كبيرة في أداء البرنامج. هذه الاختلافات تجعل من الصعب للغاية الحصول على توقيت ثابت وقابل للتكرار لاختبار الأداء.
لفهم المشكلة، لنفترض وحدة معالجة مركزية (CPU) مزودة بذاكرة تخزين مؤقتة من المستوى الثاني ذات فهرسة فعلية وتعيين مباشر بحجم 1 ميجابايت، وصفحات ذاكرة افتراضية بحجم 4 كيلوبايت. تُربط الصفحات الفعلية المتسلسلة بمواقع متسلسلة في ذاكرة التخزين المؤقتة حتى بعد 256 صفحة، حيث يلتف النمط. يمكننا تمييز كل صفحة فعلية بلون من 0 إلى 255 للدلالة على موقعها في ذاكرة التخزين المؤقتة. لا يمكن أن تتعارض المواقع ذات الألوان المختلفة داخل الصفحات الفعلية في ذاكرة التخزين المؤقتة.
قد يُرتب المبرمجون الساعون إلى تحقيق أقصى استفادة من الذاكرة المؤقتة أنماط الوصول في برامجهم بحيث لا يتطلب الأمر سوى 1 ميجابايت من البيانات في أي وقت، وبالتالي تجنب حالات عدم اكتمال السعة. ولكن عليهم أيضًا التأكد من خلو أنماط الوصول من حالات عدم اكتمال السعة المتعارضة. إحدى طرق معالجة هذه المشكلة هي تقسيم الصفحات الافتراضية التي يستخدمها البرنامج وتخصيص ألوان افتراضية لها، تمامًا كما كانت تُخصص الألوان للصفحات الفعلية سابقًا. وبذلك، يستطيع المبرمجون تنظيم أنماط الوصول في برامجهم بحيث لا تُستخدم صفحتان بنفس اللون الافتراضي في الوقت نفسه. يوجد العديد من المراجع حول هذه التحسينات (مثل تحسين تداخل الحلقات )، والتي يأتي معظمها من مجتمع الحوسبة عالية الأداء (HPC) .
تكمن المشكلة في أنه بينما قد تختلف الألوان الافتراضية لجميع الصفحات المستخدمة في أي لحظة، قد تتشابه بعضها في اللون الفعلي. في الواقع، إذا قام نظام التشغيل بتخصيص الصفحات الفعلية للصفحات الافتراضية بشكل عشوائي وموحد، فمن المرجح جدًا أن تتشابه بعض الصفحات في اللون الفعلي، وبالتالي ستتداخل مواقع تلك الصفحات في الذاكرة المؤقتة (وهذه هي مفارقة عيد الميلاد ).
يكمن الحل في محاولة نظام التشغيل تخصيص ألوان افتراضية مختلفة لصفحات الألوان الفعلية المختلفة، وهي تقنية تُعرف بتلوين الصفحات . ورغم أن عملية الربط الفعلية بين الألوان الافتراضية والفعلية لا تؤثر على أداء النظام، إلا أن عمليات الربط غير المنطقية يصعب تتبعها ولا تُحقق فائدة تُذكر، لذا فإن معظم طرق تلوين الصفحات تُحاول ببساطة الحفاظ على تطابق ألوان الصفحات الفعلية والافتراضية.
إذا كان نظام التشغيل يضمن أن كل صفحة فعلية تُطابق لونًا افتراضيًا واحدًا فقط، فلن تكون هناك أسماء مستعارة افتراضية، وسيتمكن المعالج من استخدام ذاكرة التخزين المؤقت المفهرسة افتراضيًا دون الحاجة إلى عمليات فحص إضافية للأسماء المستعارة الافتراضية أثناء معالجة الأخطاء. بدلاً من ذلك، يمكن لنظام التشغيل مسح الصفحة من ذاكرة التخزين المؤقت كلما تغير لونها الافتراضي. وكما ذُكر سابقًا، استُخدم هذا الأسلوب في بعض تصميمات SPARC وRS/6000 المبكرة.
استُخدمت تقنية تلوين صفحات البرمجيات لتقسيم ذاكرة التخزين المؤقت من المستوى الأخير (LLC) المشتركة بكفاءة في المعالجات متعددة النوى. [ 35 ] وقد اعتمدت شركة إنتل إدارة ذاكرة التخزين المؤقت من المستوى الأخير (LLC) هذه، القائمة على نظام التشغيل، في المعالجات متعددة النوى. [ 36 ]
التسلسل الهرمي للذاكرة المؤقتة في المعالج الحديث

تحتوي المعالجات الحديثة على ذاكرات تخزين مؤقتة متعددة متفاعلة على الشريحة. ويمكن تحديد طريقة عمل ذاكرة التخزين المؤقتة بشكل كامل من خلال حجمها، وحجم كتلة التخزين المؤقت، وعدد الكتل في المجموعة، وسياسة استبدال مجموعة التخزين المؤقت، وسياسة الكتابة في ذاكرة التخزين المؤقت (الكتابة المباشرة أو الكتابة المؤجلة). [ 25 ]
على الرغم من أن جميع كتل الذاكرة المؤقتة في ذاكرة مؤقتة معينة لها نفس الحجم ونفس الترابط، إلا أن ذاكرات التخزين المؤقت "ذات المستوى الأعلى" (وتسمى ذاكرة التخزين المؤقت من المستوى 1) عادةً ما تحتوي على عدد أقل من الكتل، وحجم كتلة أصغر، وعدد أقل من الكتل في المجموعة، ولكن أوقات الوصول إليها قصيرة جدًا. أما ذاكرات التخزين المؤقت "ذات المستوى الأدنى" (أي المستوى 2 وما دونه) فتحتوي على عدد أكبر تدريجيًا من الكتل، وحجم كتلة أكبر، وعدد أكبر من الكتل في المجموعة، وأوقات وصول أطول نسبيًا، ولكنها لا تزال أسرع بكثير من الذاكرة الرئيسية. [ 8 ]
تُحدد سياسة استبدال مدخلات الذاكرة المؤقتة بواسطة خوارزمية ذاكرة مؤقتة يختارها مصممو المعالج لتنفيذها. في بعض الحالات، تُقدم خوارزميات متعددة لأنواع مختلفة من أحمال العمل.
مخابئ متخصصة
تستخدم وحدات المعالجة المركزية ذات البنية الأنبوبية (pipelined CPUs) نقاطًا متعددة في مسار المعالجة للوصول إلى الذاكرة : جلب التعليمات، وترجمة العناوين من الافتراضية إلى الفيزيائية ، وجلب البيانات (انظر مسار معالجة RISC الكلاسيكي ). ويتمثل التصميم الأمثل في استخدام ذاكرات تخزين مؤقتة فيزيائية مختلفة لكل نقطة من هذه النقاط، بحيث لا يُضطر أي مورد فيزيائي إلى تخصيصه لخدمة نقطتين في مسار المعالجة. وبالتالي، ينتهي مسار المعالجة بشكل طبيعي بثلاث ذاكرات تخزين مؤقتة منفصلة على الأقل (للتعليمات، وذاكرة الترجمة السريعة ، والبيانات)، كل منها متخصص في دوره المحدد.
مخبأ الضحايا
ذاكرة التخزين المؤقت للضحايا هي ذاكرة تخزين مؤقتة تُستخدم لحفظ الكتل التي تم إخراجها من ذاكرة التخزين المؤقت لوحدة المعالجة المركزية عند استبدالها. تقع ذاكرة التخزين المؤقت للضحايا بين ذاكرة التخزين المؤقت الرئيسية ومسار إعادة تعبئتها، وتحتوي فقط على كتل البيانات التي تم إخراجها من ذاكرة التخزين المؤقت الرئيسية. عادةً ما تكون ذاكرة التخزين المؤقت للضحايا ترابطية بالكامل، وتهدف إلى تقليل عدد حالات عدم العثور على البيانات في الذاكرة. لا تتطلب العديد من البرامج شائعة الاستخدام ربطًا ترابطيًا لجميع عمليات الوصول. في الواقع، جزء صغير فقط من عمليات الوصول إلى الذاكرة في البرنامج يتطلب ترابطًا عاليًا. تستغل ذاكرة التخزين المؤقت للضحايا هذه الخاصية من خلال توفير ترابط عالي لهذه العمليات فقط. تم تقديمها بواسطة نورمان جوبي من شركة DEC في عام 1990. [ 37 ]
قدمت إنتل في معالجاتها من طراز كريستالويل [ 38 ] ، وهو نسخة معدلة من معالجات هاسويل، ذاكرة تخزين مؤقتة من المستوى الرابع eDRAM بسعة 128 ميجابايت مدمجة في المعالج، والتي تعمل كذاكرة تخزين مؤقتة احتياطية لذاكرة التخزين المؤقتة من المستوى الثالث. [ 39 ] أما في بنية سكايليك الدقيقة، فلم تعد ذاكرة التخزين المؤقتة من المستوى الرابع تعمل كذاكرة تخزين مؤقتة احتياطية. [ 40 ]
ذاكرة التتبع
من الأمثلة البارزة على تخصص الذاكرة المؤقتة ذاكرة التتبع (المعروفة أيضًا بذاكرة تتبع التنفيذ ) الموجودة في معالجات إنتل بنتيوم 4. تُعد ذاكرة التتبع آلية لزيادة عرض نطاق جلب التعليمات وتقليل استهلاك الطاقة (في حالة بنتيوم 4) عن طريق تخزين آثار التعليمات التي تم جلبها وفك تشفيرها مسبقًا. [ 41 ]
تُخزّن ذاكرة التتبع المؤقتة التعليمات إما بعد فك تشفيرها أو عند انتهاء تنفيذها. تُضاف التعليمات عادةً إلى ذاكرة التتبع المؤقتة في مجموعات تُمثّل إما كتلًا أساسية فردية أو مسارات تعليمات ديناميكية. تُخزّن ذاكرة التتبع المؤقتة في معالج بنتيوم 4 العمليات الدقيقة الناتجة عن فك تشفير تعليمات x86، مما يُوفّر أيضًا وظيفة ذاكرة العمليات الدقيقة المؤقتة. بفضل ذلك، عند الحاجة إلى تعليمة ما في المرة القادمة، لن يكون من الضروري فك تشفيرها إلى عمليات دقيقة مرة أخرى. [ 42 ] : 63-68
ذاكرة التخزين المؤقت لدمج الكتابة (WCC)
ذاكرة التخزين المؤقت لدمج الكتابة [ 43 ] هي ذاكرة تخزين مؤقت خاصة تُعد جزءًا من ذاكرة التخزين المؤقت من المستوى الثاني (L2) في بنية Bulldozer الدقيقة من AMD . تمر عمليات التخزين من ذاكرتي التخزين المؤقت من المستوى الأول (L1D) في الوحدة عبر ذاكرة التخزين المؤقت لدمج الكتابة (WCC)، حيث يتم تخزينها مؤقتًا ودمجها. وتتمثل مهمة ذاكرة التخزين المؤقت لدمج الكتابة في تقليل عدد عمليات الكتابة إلى ذاكرة التخزين المؤقت من المستوى الثاني (L2).
ذاكرة التخزين المؤقت للعمليات الدقيقة (μop أو uop)
ذاكرة التخزين المؤقت للعمليات الدقيقة ( μop cache أو uop cache أو UC ) [ 44 ] هي ذاكرة تخزين مؤقت متخصصة تخزن العمليات الدقيقة للتعليمات التي تم فك تشفيرها، سواءً تم استلامها مباشرةً من وحدات فك تشفير التعليمات أو من ذاكرة التخزين المؤقت للتعليمات. عند الحاجة إلى فك تشفير تعليمة ما، يتم التحقق من ذاكرة التخزين المؤقت للعمليات الدقيقة (μop cache) بحثًا عن شكلها المفكك، والذي يُعاد استخدامه إذا كان مخزنًا مؤقتًا؛ وإذا لم يكن متوفرًا، يتم فك تشفير التعليمة ثم تخزينها مؤقتًا.
من أوائل الدراسات التي وصفت ذاكرة التخزين المؤقت للعمليات الدقيقة (μop cache) كواجهة أمامية بديلة لمعالجات Intel P6، ورقة بحثية نُشرت عام 2001 بعنوان "ذاكرة التخزين المؤقت للعمليات الدقيقة: واجهة أمامية مُراعية لاستهلاك الطاقة لبنية تعليمات متغيرة الطول" . [ 45 ] لاحقًا، أدرجت Intel ذاكرة التخزين المؤقت للعمليات الدقيقة في معالجات Sandy Bridge وفي البنى الدقيقة اللاحقة مثل Ivy Bridge و Haswell . [ 42 ] : 121-123 [ 46 ] كما طبقت AMD ذاكرة التخزين المؤقت للعمليات الدقيقة في بنيتها الدقيقة Zen . [ 47 ]
يُغني جلب التعليمات المُفكَّكة مسبقًا بالكامل عن الحاجة إلى فك تشفير التعليمات المعقدة ذات الأطوال المتغيرة بشكل متكرر إلى عمليات دقيقة أبسط ذات أطوال ثابتة، ويُبسِّط عملية التنبؤ بالتعليمات المُجلبة وجلبها وتدويرها ومحاذاتها. تعمل ذاكرة التخزين المؤقت للعمليات الدقيقة (μop cache) على تخفيف عبء جلب التعليمات وفك تشفيرها على الأجهزة، مما يُقلل من استهلاك الطاقة ويُحسِّن من إمداد الواجهة الأمامية بالعمليات الدقيقة المُفكَّكة. كما تُحسِّن ذاكرة التخزين المؤقت للعمليات الدقيقة الأداء من خلال توفير العمليات الدقيقة المُفكَّكة بشكل أكثر اتساقًا للواجهة الخلفية، والقضاء على مختلف الاختناقات في منطق جلب التعليمات وفك تشفيرها في وحدة المعالجة المركزية. [ 45 ] [ 46 ]
تتشابه ذاكرة التخزين المؤقت للعمليات الدقيقة (μop cache) مع ذاكرة التخزين المؤقت للتتبع (trace cache) في العديد من الجوانب، إلا أن ذاكرة التخزين المؤقت للعمليات الدقيقة أبسط بكثير، مما يوفر كفاءة أفضل في استهلاك الطاقة؛ وهذا يجعلها أنسب للتطبيقات على الأجهزة التي تعمل بالبطاريات. أما العيب الرئيسي لذاكرة التخزين المؤقت للتتبع، والذي يؤدي إلى عدم كفاءتها في استهلاك الطاقة، فهو تعقيد المكونات المادية اللازمة لخوارزمية تحديد التخزين المؤقت وإعادة استخدام مسارات التعليمات التي يتم إنشاؤها ديناميكيًا. [ 48 ]
ذاكرة التخزين المؤقت لتعليمات هدف التفرع
ذاكرة التخزين المؤقت لأهداف التفرع ، أو ذاكرة التخزين المؤقت لتعليمات أهداف التفرع (وهو الاسم المستخدم في معالجات ARM الدقيقة) ، [ 49 ] هي ذاكرة تخزين مؤقت متخصصة تحتفظ بأولى التعليمات عند وجهة التفرع المُنفذ. تُستخدم هذه الذاكرة في المعالجات منخفضة الطاقة التي لا تحتاج إلى ذاكرة تخزين مؤقت عادية للتعليمات، لأن نظام الذاكرة قادر على توفير التعليمات بسرعة كافية لتلبية احتياجات وحدة المعالجة المركزية دون الحاجة إليها. مع ذلك، ينطبق هذا فقط على التعليمات المتتالية؛ إذ لا يزال الأمر يستغرق عدة دورات من زمن الاستجابة لإعادة جلب التعليمات عند عنوان جديد، مما يتسبب في تأخير لبضع دورات في خط الأنابيب بعد نقل التحكم. توفر ذاكرة التخزين المؤقت لأهداف التفرع التعليمات اللازمة لتلك الدورات القليلة، متجنبةً بذلك التأخير بعد معظم التفرعات المُنفذة.
وهذا يسمح بالتشغيل بكامل السرعة مع ذاكرة تخزين مؤقتة أصغر بكثير من ذاكرة التخزين المؤقتة للتعليمات التقليدية التي تعمل بدوام كامل.
ذاكرة التخزين المؤقت الذكية
ذاكرة التخزين المؤقت الذكية هي طريقة تخزين مؤقت من المستوى 2 أو المستوى 3 لأنوية التنفيذ المتعددة، وقد طورتها شركة إنتل .
تُشارك ذاكرة التخزين المؤقت الذكية ذاكرة التخزين المؤقت الفعلية بين أنوية المعالج متعدد النوى . وبالمقارنة مع ذاكرة تخزين مؤقت مخصصة لكل نواة، ينخفض معدل أخطاء ذاكرة التخزين المؤقت الإجمالي عندما لا تتطلب الأنوية أجزاءً متساوية من مساحة ذاكرة التخزين المؤقت. وبالتالي، يمكن لنواة واحدة استخدام ذاكرة التخزين المؤقت من المستوى الثاني أو الثالث بالكامل بينما تكون الأنوية الأخرى غير نشطة. [ 50 ] علاوة على ذلك، تُسرّع ذاكرة التخزين المؤقت المشتركة عملية مشاركة الذاكرة بين أنوية التنفيذ المختلفة. [ 51 ]
ذاكرة تخزين مؤقت متعددة المستويات
تتمثل إحدى المشكلات الأخرى في المفاضلة الأساسية بين زمن استجابة الذاكرة المؤقتة ومعدل الوصول الناجح. تتميز الذاكرة المؤقتة الأكبر حجمًا بمعدلات وصول ناجحة أفضل، ولكن بزمن استجابة أطول. ولمعالجة هذه المفاضلة، تستخدم العديد من الحواسيب مستويات متعددة من الذاكرة المؤقتة، حيث تُدعم الذاكرة المؤقتة الصغيرة السريعة بذاكرة مؤقتة أكبر حجمًا وأبطأ. تعمل الذاكرة المؤقتة متعددة المستويات عمومًا عن طريق فحص أسرع ذاكرة مؤقتة وأصغرها حجمًا، وهي المستوى الأول ( L1 )، أولًا؛ فإذا وُجدت البيانات المطلوبة، يتابع المعالج عمله بسرعة عالية. أما إذا لم تُوجد، فيتم فحص ذاكرة المستوى الثاني ( L2 )، وهي الأبطأ حجمًا ولكن الأكبر ، وهكذا، قبل الوصول إلى الذاكرة الخارجية.
مع ازدياد فارق زمن الاستجابة بين الذاكرة الرئيسية وأسرع ذاكرة تخزين مؤقت، بدأت بعض المعالجات باستخدام ما يصل إلى ثلاثة مستويات من ذاكرة التخزين المؤقت المدمجة. وقد استغلت التصاميم التي تراعي التكلفة هذه التقنية لدمج التسلسل الهرمي الكامل لذاكرة التخزين المؤقت داخل الشريحة، ولكن بحلول العقد الثاني من الألفية، عادت بعض التصاميم ذات الأداء العالي إلى استخدام ذاكرات تخزين مؤقت خارجية كبيرة، والتي غالبًا ما تُنفذ باستخدام ذاكرة eDRAM وتُركب على وحدة متعددة الشرائح ، كمستوى رابع لذاكرة التخزين المؤقت. في حالات نادرة، كما هو الحال في وحدة المعالجة المركزية للحاسوب المركزي IBM z15 (2019)، تُنفذ جميع المستويات وصولًا إلى المستوى L1 باستخدام ذاكرة eDRAM، لتحل محل ذاكرة SRAM بالكامل (مع العلم أن ذاكرة SRAM لا تزال تُستخدم للمسجلات ). تتميز سلسلة معالجات Apple Silicon القائمة على معمارية ARM ، بدءًا من A14 و M1 ، بذاكرة تخزين مؤقت L1i بسعة 192 كيلوبايت لكل نواة من النوى عالية الأداء، وهي سعة كبيرة بشكل غير معتاد؛ بينما لا تتجاوز سعة ذاكرة التخزين المؤقت للنوى عالية الكفاءة 128 كيلوبايت. ومنذ ذلك الحين، قامت معالجات أخرى مثل معالج Lunar Lake من Intel ومعالج Oryon من Qualcomm بتطبيق أحجام ذاكرة تخزين مؤقتة مماثلة من المستوى الأول (L1i).
تعتمد فوائد ذاكرات التخزين المؤقت من المستوى الثالث والرابع على أنماط وصول التطبيق. ومن أمثلة المنتجات التي تتضمن ذاكرات التخزين المؤقت من المستوى الثالث والرابع ما يلي:
- كان لدى Alpha 21164 (1995) ذاكرة تخزين مؤقتة من المستوى الثالث خارج الشريحة تتراوح سعتها من 1 إلى 64 ميجابايت.
- كان معالج AMD K6-III (1999) يحتوي على ذاكرة تخزين مؤقتة من المستوى الثالث (L3) مثبتة على اللوحة الأم.
- كان لدى معالج IBM POWER4 (2001) ذاكرة تخزين مؤقتة من المستوى الثالث (L3) بسعة 32 ميجابايت لكل معالج، مشتركة بين عدة معالجات.
- كان لدى Itanium 2 (2003) ذاكرة تخزين مؤقتة موحدة من المستوى 3 (L3) بسعة 6 ميجابايت على الشريحة؛ وقد تضمنت وحدة Itanium 2 (2003) MX 2 معالجين من نوع Itanium 2 بالإضافة إلى ذاكرة تخزين مؤقتة مشتركة من المستوى 4 بسعة 64 ميجابايت على وحدة متعددة الشرائح متوافقة مع معالج Madison.
- يتميز منتج Intel Xeon MP الذي يحمل الاسم الرمزي "Tulsa" (2006) بذاكرة تخزين مؤقتة من المستوى الثالث (L3) بحجم 16 ميجابايت مشتركة بين نواتي المعالج.
- معالج AMD Phenom (2007) مزود بذاكرة تخزين مؤقتة من المستوى الثالث (L3) بسعة 2 ميجابايت.
- يحتوي معالج AMD Phenom II (2008) على ذاكرة تخزين مؤقتة موحدة من المستوى الثالث (L3) تصل إلى 6 ميجابايت.
- يحتوي معالج Intel Core i7 (2008) على ذاكرة تخزين مؤقتة موحدة من المستوى الثالث (L3) بحجم 8 ميجابايت، وهي شاملة ومشتركة بين جميع النوى.
- تحتوي وحدات المعالجة المركزية Intel Haswell المزودة بمعالجات رسومات Intel Iris Pro المدمجة على ذاكرة eDRAM بسعة 128 ميجابايت تعمل بشكل أساسي كذاكرة تخزين مؤقتة من المستوى الرابع (L4). [ 52 ]
أخيرًا، في الطرف الآخر من التسلسل الهرمي للذاكرة، يُمكن اعتبار ملف سجلات وحدة المعالجة المركزية أصغر وأسرع ذاكرة تخزين مؤقت في النظام، مع خاصية مميزة تتمثل في جدولة عمله برمجيًا - عادةً بواسطة المُصرّف - حيث يُخصّص سجلات لحفظ القيم المُسترجعة من الذاكرة الرئيسية، على سبيل المثال، لتحسين تداخل الحلقات . مع ذلك، عند إعادة تسمية السجلات، تُعاد تخصيص معظم تعيينات سجلات المُصرّف ديناميكيًا بواسطة الأجهزة في وقت التشغيل إلى بنك سجلات، مما يسمح لوحدة المعالجة المركزية بفك تبعيات البيانات الخاطئة، وبالتالي تخفيف مخاطر خط الأنابيب.
قد تحتوي ملفات التسجيل أحيانًا على تسلسل هرمي: كان لدى جهاز Cray-1 (حوالي عام 1976) ثمانية سجلات عناوين "A" وثمانية سجلات بيانات قياسية "S" قابلة للاستخدام عمومًا. كما كان هناك مجموعة من 64 سجل عنوان "B" و64 سجل بيانات قياسية "T" تستغرق وقتًا أطول للوصول إليها، ولكنها أسرع من الذاكرة الرئيسية. تم توفير سجلات "B" و"T" لأن جهاز Cray-1 لم يكن مزودًا بذاكرة تخزين مؤقتة للبيانات. (مع ذلك، كان جهاز Cray-1 مزودًا بذاكرة تخزين مؤقتة للتعليمات).
رقائق متعددة النوى
عند تصميم شريحة متعددة النوى ، يبرز تساؤل حول ما إذا كان ينبغي أن تكون ذاكرة التخزين المؤقت مشتركة أم خاصة بكل نواة. يؤدي تطبيق ذاكرة تخزين مؤقت مشتركة حتمًا إلى زيادة التوصيلات والتعقيد. لكن في المقابل، فإن وجود ذاكرة تخزين مؤقت واحدة لكل شريحة ، بدلًا من ذاكرة لكل نواة ، يقلل بشكل كبير من المساحة المطلوبة، وبالتالي يمكن تضمين ذاكرة تخزين مؤقت أكبر.
عادةً، يُعدّ استخدام ذاكرة التخزين المؤقت من المستوى الأول (L1) غير مرغوب فيه، لأنّ الزيادة الناتجة في زمن الاستجابة ستؤدي إلى إبطاء كل نواة بشكل ملحوظ مقارنةً بشريحة أحادية النواة. مع ذلك، بالنسبة لذاكرة التخزين المؤقت من المستوى الأعلى (عادةً L3، وهي آخر ذاكرة يتم استدعاؤها قبل الوصول إلى الذاكرة الرئيسية)، يُفضّل وجود ذاكرة تخزين مؤقت شاملة لعدة أسباب، منها السماح لنواة واحدة باستخدام ذاكرة التخزين المؤقت بأكملها، وتقليل تكرار البيانات من خلال تمكين العمليات أو الخيوط المختلفة من مشاركة البيانات المخزنة مؤقتًا، وتقليل تعقيد بروتوكولات تماسك ذاكرة التخزين المؤقت المستخدمة. [ 53 ] على سبيل المثال، قد تتضمن شريحة ثمانية النوى بثلاثة مستويات ذاكرة تخزين مؤقت من المستوى الأول (L1) لكل نواة، وذاكرة تخزين مؤقت وسيطة من المستوى الثاني (L2) لكل زوج من النوى، وذاكرة تخزين مؤقت من المستوى الثالث (L3) مشتركة بين جميع النوى.
تُعرف ذاكرة التخزين المؤقت المشتركة ذات المستوى الأعلى (عادةً L3، والتي تُستدعى قبل الوصول إلى الذاكرة) باسم ذاكرة التخزين المؤقت ذات المستوى الأخير (LLC). [ 54 ] تُستخدم تقنيات إضافية لزيادة مستوى التوازي عند مشاركة ذاكرة التخزين المؤقت ذات المستوى الأخير بين عدة نوى، بما في ذلك تقسيمها إلى أجزاء متعددة تُعنون بنطاقات معينة من عناوين الذاكرة، ويمكن الوصول إليها بشكل مستقل. [ 8 ] [ 55 ]
منفصل مقابل موحد
في بنية ذاكرة التخزين المؤقت المنفصلة، تُخزَّن التعليمات والبيانات بشكل منفصل، مما يعني أن سطر ذاكرة التخزين المؤقت يُستخدم إما لتخزين التعليمات أو البيانات، وليس كليهما؛ وقد تم إثبات فوائد عديدة لاستخدام مخازن مؤقتة منفصلة لترجمة البيانات والتعليمات . [ 56 ] في بنية موحدة، لا يوجد هذا القيد، ويمكن استخدام أسطر ذاكرة التخزين المؤقت لتخزين كل من التعليمات والبيانات.
حصري مقابل شامل
تُدخل ذاكرة التخزين المؤقت متعددة المستويات قرارات تصميمية جديدة. على سبيل المثال، في بعض المعالجات، يجب أن تكون جميع البيانات الموجودة في ذاكرة التخزين المؤقت L1 موجودة أيضًا في ذاكرة التخزين المؤقت L2. تُسمى هذه الذاكرة بذاكرة التخزين المؤقت الشاملة تمامًا . بينما تحتوي معالجات أخرى (مثل AMD Athlon ) على ذاكرة تخزين مؤقت حصرية : حيث يُضمن وجود البيانات في واحدة فقط من ذاكرتي التخزين المؤقت L1 وL2، وليس في كلتيهما. في المقابل، لا تشترط معالجات أخرى (مثل Intel Pentium II و III و 4 ) وجود البيانات الموجودة في ذاكرة التخزين المؤقت L1 في ذاكرة التخزين المؤقت L2، على الرغم من أنها قد تفعل ذلك في كثير من الأحيان. لا يوجد اسم مُتفق عليه عالميًا لهذه السياسة الوسيطة؛ [ 57 ] [ 58 ] ومن الأسماء الشائعة لها "غير الحصرية" و"الشاملة جزئيًا".
تتمثل ميزة ذاكرة التخزين المؤقت الحصرية في قدرتها على تخزين كمية أكبر من البيانات. وتزداد هذه الميزة عندما تكون ذاكرة التخزين المؤقت L1 الحصرية مماثلة لذاكرة التخزين المؤقت L2، وتتضاءل إذا كانت ذاكرة التخزين المؤقت L2 أكبر بكثير من ذاكرة التخزين المؤقت L1. عندما تفشل ذاكرة التخزين المؤقت L1 في الوصول إلى البيانات المطلوبة وتنجح ذاكرة التخزين المؤقت L2، يتم استبدال سطر البيانات الموجود في ذاكرة التخزين المؤقت L2 بسطر موجود في ذاكرة التخزين المؤقت L1. هذا الاستبدال يتطلب جهدًا أكبر بكثير من مجرد نسخ سطر من L2 إلى L1، وهو ما تقوم به ذاكرة التخزين المؤقت الشاملة. [ 58 ]
إحدى مزايا ذاكرة التخزين المؤقت الشاملة تمامًا هي أنه عندما ترغب الأجهزة الخارجية أو المعالجات الأخرى في نظام متعدد المعالجات في إزالة سطر من ذاكرة التخزين المؤقت، يكفي أن يتحقق المعالج من ذاكرة التخزين المؤقت من المستوى الثاني (L2). أما في تسلسلات ذاكرة التخزين المؤقت التي لا تفرض الشمولية، فيجب التحقق من ذاكرة التخزين المؤقت من المستوى الأول (L1) أيضًا. ومن عيوبها وجود ارتباط بين ترابطية ذاكرتي التخزين المؤقت من المستوى الأول والثاني: فإذا لم يكن لذاكرة التخزين المؤقت من المستوى الثاني عدد طرق يساوي على الأقل عدد طرق الوصول لجميع ذاكرات التخزين المؤقت من المستوى الأول مجتمعة، فإن الترابطية الفعالة لذاكرات التخزين المؤقت من المستوى الأول تكون محدودة. ومن عيوب ذاكرة التخزين المؤقت الشاملة أيضًا أنه كلما حدث إخراج من ذاكرة التخزين المؤقت من المستوى الثاني، يجب إخراج الأسطر المقابلة (إن وجدت) في ذاكرة التخزين المؤقت من المستوى الأول للحفاظ على الشمولية. وهذا يتطلب جهدًا كبيرًا، مما يؤدي إلى ارتفاع معدل فقدان البيانات في ذاكرة التخزين المؤقت من المستوى الأول. [ 58 ]
من المزايا الأخرى للذاكرة المؤقتة الشاملة أن الذاكرة المؤقتة الأكبر حجمًا يمكنها استخدام أسطر تخزين مؤقتة أكبر، مما يقلل من حجم علامات الذاكرة المؤقتة الثانوية. (تتطلب الذاكرة المؤقتة الحصرية أن يكون لكلتا الذاكرتين المؤقتتين نفس حجم أسطر التخزين المؤقت، بحيث يمكن تبديل أسطر التخزين المؤقت عند حدوث خطأ في L1 ونجاح في L2). إذا كانت الذاكرة المؤقتة الثانوية أكبر بعشرة أضعاف من الذاكرة المؤقتة الأساسية، وكانت بيانات الذاكرة المؤقتة أكبر بعشرة أضعاف من علامات التخزين المؤقت، فإن مساحة العلامات الموفرة يمكن مقارنتها بالمساحة الإضافية اللازمة لتخزين بيانات ذاكرة التخزين المؤقت L1 في L2. [ 59 ]
ذاكرة مؤقتة
ذاكرة التخزين المؤقت (SPM)، والمعروفة أيضًا باسم ذاكرة التخزين المؤقت أو ذاكرة الوصول العشوائي للتخزين المؤقت أو المخزن المحلي في مصطلحات الكمبيوتر، هي ذاكرة داخلية عالية السرعة تستخدم للتخزين المؤقت للحسابات والبيانات وغيرها من الأعمال الجارية.
مثال: K8
لتوضيح كل من التخصص والتخزين المؤقت متعدد المستويات، إليك التسلسل الهرمي لذاكرة التخزين المؤقت لنواة K8 في وحدة المعالجة المركزية AMD Athlon 64. [ 60 ]

يحتوي معالج K8 على أربع ذاكرات تخزين مؤقت متخصصة: ذاكرة تخزين مؤقت للتعليمات، وذاكرة TLB للتعليمات ، وذاكرة TLB للبيانات، وذاكرة تخزين مؤقت للبيانات. كل ذاكرة من هذه الذاكرات متخصصة في:
- تحتفظ ذاكرة التخزين المؤقت للتعليمات بنسخ من أسطر الذاكرة التي يبلغ طولها 64 بايت، وتجلب 16 بايت في كل دورة. يُخزَّن كل بايت في هذه الذاكرة بعشر بتات بدلاً من ثمانية، حيث تُحدِّد البتات الإضافية حدود التعليمات (وهذا مثال على فك التشفير المسبق). تعتمد ذاكرة التخزين المؤقت على حماية التكافؤ فقط بدلاً من تصحيح الأخطاء (ECC )، لأن التكافؤ أصغر حجمًا، ويمكن استبدال أي بيانات تالفة ببيانات جديدة يتم جلبها من الذاكرة (التي تحتوي دائمًا على نسخة محدثة من التعليمات).
- يحتفظ مخزن ترجمة التعليمات (TLB) بنسخ من مداخل جدول الصفحات (PTEs). في كل دورة، تُترجم العناوين الافتراضية للتعليمات من خلال مخزن الترجمة هذا إلى عناوين فعلية. يبلغ حجم كل مدخل إما أربعة أو ثمانية بايتات في الذاكرة. ولأن حجم الصفحة في معالج K8 متغير، يُقسّم كل مخزن ترجمة إلى قسمين: أحدهما لحفظ مداخل جدول الصفحات التي تُطابق صفحات بحجم 4 كيلوبايت، والآخر لحفظ مداخل جدول الصفحات التي تُطابق صفحات بحجم 4 ميجابايت أو 2 ميجابايت. يُسهّل هذا التقسيم عمل دوائر المطابقة الترابطية الكاملة في كل قسم. يقوم نظام التشغيل بربط أقسام مختلفة من مساحة العناوين الافتراضية بمداخل جدول صفحات ذات أحجام مختلفة.
- يحتوي مخزن ترجمة العناوين (TLB) للبيانات على نسختين تحتفظان بمدخلات متطابقة. تسمح هاتان النسختان بالوصول إلى البيانات مرتين في كل دورة لترجمة العناوين الافتراضية إلى عناوين فعلية. ومثل مخزن ترجمة العناوين الخاص بالتعليمات، ينقسم هذا المخزن إلى نوعين من المدخلات.
- تحتفظ ذاكرة التخزين المؤقت للبيانات بنسخ من أسطر الذاكرة التي يبلغ طول كل منها 64 بايت. وهي مقسمة إلى 8 بنوك (يخزن كل منها 8 كيلوبايت من البيانات)، ويمكنها جلب بيانات بحجم 8 بايت في كل دورة طالما كانت هذه البيانات في بنوك مختلفة. توجد نسختان من العلامات، لأن كل سطر من 64 بايت موزع على جميع البنوك الثمانية. وتتولى كل نسخة من العلامات إحدى عمليتي الوصول في كل دورة.
يحتوي معالج K8 أيضًا على ذاكرات تخزين مؤقت متعددة المستويات. توجد ذاكرات TLB من المستوى الثاني للتعليمات والبيانات، والتي تخزن فقط جداول صفحات (PTEs) بحجم 4 كيلوبايت. يمكن ملء كل من ذاكرات التخزين المؤقت للتعليمات والبيانات، بالإضافة إلى ذاكرات TLB المختلفة، من ذاكرة التخزين المؤقت الموحدة الكبيرة من المستوى الثاني (L2). هذه الذاكرة مخصصة لذاكرتي التخزين المؤقت للتعليمات والبيانات من المستوى الأول (L1)، مما يعني أن أي سطر بحجم 8 بايت لا يمكن أن يكون إلا في إحدى ذاكرات التخزين المؤقت للتعليمات من المستوى الأول (L1)، أو ذاكرة التخزين المؤقت للبيانات من المستوى الأول (L1)، أو ذاكرة التخزين المؤقت من المستوى الثاني (L2). مع ذلك، من الممكن أن يحتوي سطر في ذاكرة التخزين المؤقت للبيانات على جدول صفحات (PTE) موجود أيضًا في إحدى ذاكرات TLB - نظام التشغيل مسؤول عن الحفاظ على اتساق ذاكرات TLB عن طريق مسح أجزاء منها عند تحديث جداول الصفحات في الذاكرة.
يُخزّن معالج K8 أيضًا معلومات لا تُخزّن أبدًا في الذاكرة الرئيسية، وهي معلومات التنبؤ. هذه الذاكرات المؤقتة غير موضحة في الرسم التخطيطي أعلاه. وكما هو معتاد في هذا النوع من المعالجات، يتميز K8 بقدرة تنبؤ معقدة نسبيًا بالفروع ، مع جداول تُساعد في التنبؤ بما إذا كانت الفروع ستُنفّذ أم لا، وجداول أخرى تتنبأ بأهداف الفروع والقفزات. بعض هذه المعلومات مرتبط بالتعليمات، في كلٍ من ذاكرة التخزين المؤقت للتعليمات من المستوى الأول وذاكرة التخزين المؤقت الثانوية الموحدة.
يستخدم معالج K8 حيلةً مبتكرةً لتخزين معلومات التنبؤ مع التعليمات في الذاكرة الثانوية. تُحمى الأسطر في الذاكرة الثانوية من تلف البيانات العرضي (مثلًا بفعل اصطدام جسيم ألفا ) إما بواسطة تصحيح الأخطاء (ECC ) أو رمز التكافؤ ، وذلك بحسب ما إذا كانت هذه الأسطر قد أُخرجت من الذاكرة الرئيسية للبيانات أو التعليمات. ولأن رمز التكافؤ يشغل بتات أقل من رمز تصحيح الأخطاء، فإن أسطر ذاكرة التعليمات تحتوي على بعض البتات الاحتياطية. تُستخدم هذه البتات لتخزين معلومات التنبؤ بالتفرعات المرتبطة بتلك التعليمات. والنتيجة النهائية هي أن مُتنبئ التفرعات يمتلك جدول تاريخ فعال أكبر، وبالتالي يتمتع بدقة أفضل.
المزيد من التسلسلات الهرمية
تحتوي المعالجات الأخرى على أنواع أخرى من المتنبئات (على سبيل المثال، المتنبئ بتجاوز التخزين إلى التحميل في DEC Alpha 21264 ).
تُعدّ هذه المُتنبئات بمثابة ذاكرات تخزين مؤقتة، إذ تخزن معلومات تتطلب معالجة مكلفة. بعض المصطلحات المستخدمة عند الحديث عن المُتنبئات هي نفسها المستخدمة عند الحديث عن ذاكرات التخزين المؤقت (يُشار إلى نجاح في مُتنبئ فرعي)، ولكن لا يُنظر إلى المُتنبئات عمومًا على أنها جزء من التسلسل الهرمي لذاكرة التخزين المؤقت.
يحافظ معالج K8 على اتساق ذاكرة التخزين المؤقت للتعليمات والبيانات على مستوى العتاد، مما يعني أن تنفيذ أمر تخزين في تعليمة تلي تعليمة التخزين مباشرةً سيؤدي إلى تغيير تلك التعليمة اللاحقة. أما المعالجات الأخرى، مثل تلك الموجودة في عائلتي Alpha وMIPS، فقد اعتمدت على البرمجيات للحفاظ على اتساق ذاكرة التخزين المؤقت للتعليمات. ولا يُضمن ظهور أوامر التخزين في مسار التعليمات إلا بعد أن يستدعي البرنامج وظيفةً من نظام التشغيل لضمان الاتساق.
ذاكرة الوصول العشوائي (RAM)

في هندسة الحاسوب، يُستخدم مُعرِّف ذاكرة الوصول العشوائي (RAM) لتحديد موقع الذاكرة المُخزَّن حاليًا في ذاكرة التخزين المؤقت لوحدة المعالجة المركزية. [ 61 ] [ 62 ] في التصميمات البسيطة ذات التعيين المباشر، يُمكن استخدام ذاكرة الوصول العشوائي الثابتة السريعة (SRAM) . أما ذاكرات التخزين المؤقت ذات الترابط الأعلى ، فتستخدم عادةً ذاكرة قابلة للعنونة بالمحتوى .
تطبيق
تُعدّ عمليات قراءة البيانات من ذاكرة التخزين المؤقت أكثر عمليات وحدة المعالجة المركزية شيوعًا والتي تستغرق أكثر من دورة واحدة. يميل وقت تنفيذ البرنامج إلى أن يكون شديد الحساسية لزمن استجابة الوصول إلى البيانات من المستوى الأول في ذاكرة التخزين المؤقت. ولذلك، يُبذل جهد كبير في التصميم، وغالبًا ما تُستهلك طاقة ومساحة كبيرة من السيليكون، لجعل ذاكرة التخزين المؤقت سريعة قدر الإمكان.
أبسط أنواع الذاكرة المؤقتة هي ذاكرة مؤقتة ذات فهرسة افتراضية وتعيين مباشر. يُحسب العنوان الافتراضي باستخدام جامع، ثم يُستخرج الجزء ذو الصلة من العنوان ويُستخدم لفهرسة ذاكرة SRAM، التي تُعيد البيانات المُحمّلة. تُحاذى البيانات بايتًا بايتًا في مُزحزح بايت، ومن هناك تُمرر إلى العملية التالية. لا حاجة لأي فحص للعلامات في الحلقة الداخلية - في الواقع، لا حاجة حتى لقراءة العلامات. لاحقًا في مسار المعالجة، ولكن قبل إنهاء تعليمة التحميل، يجب قراءة علامة البيانات المُحمّلة، ومقارنتها بالعنوان الافتراضي للتأكد من وجود تطابق في الذاكرة المؤقتة. في حالة عدم التطابق، تُحدّث الذاكرة المؤقتة بسطر الذاكرة المؤقتة المطلوب، ويُعاد تشغيل مسار المعالجة.
تُعدّ ذاكرة التخزين المؤقت الترابطية أكثر تعقيدًا، إذ يتطلب الأمر قراءة نوع من العلامات لتحديد المدخل المطلوب. عادةً ما تقرأ ذاكرة التخزين المؤقت الترابطية من المستوى الأول (N-way set-associative level-1) جميع العلامات الممكنة (N) والبيانات (N) بالتوازي، ثم تختار البيانات المرتبطة بالعلامة المطابقة. في بعض الأحيان، توفر ذاكرات التخزين المؤقت من المستوى الثاني (Level-2) الطاقة بقراءة العلامات أولًا، بحيث لا تُقرأ سوى عنصر بيانات واحد من ذاكرة الوصول العشوائي الثابتة (SRAM) الخاصة بالبيانات.

يهدف الرسم التخطيطي المجاور إلى توضيح كيفية استخدام حقول العنوان المختلفة. البت 31 هو الأكثر أهمية، بينما البت 0 هو الأقل أهمية. يوضح الرسم التخطيطي ذاكرة الوصول العشوائي الثابتة (SRAM) والفهرسة وتعدد الإرسال لذاكرة تخزين مؤقتة بسعة 4 كيلوبايت، ثنائية الاتجاه، ذات فهرسة وعلامات افتراضية، مع خطوط 64 بايت، وعرض قراءة 32 بت، وعنوان افتراضي 32 بت.
نظرًا لأن حجم الذاكرة المؤقتة 4 كيلوبايت وتحتوي على 64 سطرًا، فإن الذاكرة المؤقتة تتكون من 64 سطرًا فقط، ونقرأ سطرين في كل مرة من ذاكرة SRAM للعلامات التي تحتوي على 32 صفًا، كل صف منها يحمل زوجًا من العلامات المكونة من 21 بت. على الرغم من إمكانية استخدام أي دالة من بتات العناوين الافتراضية من 31 إلى 6 لفهرسة ذاكرة SRAM للعلامات والبيانات، إلا أن استخدام البتات الأقل أهمية هو الأسهل.
وبالمثل، نظرًا لأن ذاكرة التخزين المؤقت تبلغ 4 كيلوبايت ولها مسار قراءة 4 بايت، وتقرأ بطريقتين لكل عملية وصول، فإن ذاكرة الوصول العشوائي الثابتة للبيانات تتكون من 512 صفًا بعرض 8 بايت.
قد تكون ذاكرة التخزين المؤقت الحديثة بحجم 16 كيلوبايت، ذات بنية ترابطية رباعية الاتجاهات، ومفهرسة افتراضياً، ومُشار إليها افتراضياً، ومُوسومة فعلياً، مع 32 سطر بايت، وعرض قراءة 32 بت، وعناوين فعلية 36 بت. يشبه مسار القراءة المتكرر لهذه الذاكرة مسار القراءة المذكور أعلاه. بدلاً من الوسوم، تُقرأ التلميحات الافتراضية وتُطابق مع جزء من العنوان الافتراضي. لاحقاً في مسار المعالجة، يُترجم العنوان الافتراضي إلى عنوان فعلي بواسطة ذاكرة الترجمة السريعة (TLB)، ويُقرأ الوسم الفعلي (وسم واحد فقط، لأن التلميح الافتراضي يُحدد اتجاه القراءة من ذاكرة التخزين المؤقت). أخيراً، يُقارن العنوان الفعلي بالوسم الفعلي لتحديد ما إذا كان قد تم العثور على عنوان صحيح.
لقد حسّنت بعض تصميمات SPARC سرعة ذاكرة التخزين المؤقت L1 الخاصة بها من خلال تقليل تأخيرات البوابات عن طريق دمج جامع العناوين الظاهري في وحدات فك تشفير SRAM.
تاريخ
يرتبط التاريخ المبكر لتقنية الذاكرة المؤقتة ارتباطًا وثيقًا باختراع الذاكرة الافتراضية واستخدامها. نظرًا لندرة ذاكرة أشباه الموصلات وارتفاع تكلفتها، استخدمت الحواسيب المركزية الأولى في ستينيات القرن الماضي تسلسلًا هرميًا معقدًا للذاكرة الفعلية، مُسقطة على مساحة ذاكرة افتراضية مسطحة تستخدمها البرامج. شملت تقنيات الذاكرة أشباه الموصلات، والذاكرة المغناطيسية، والأسطوانات، والأقراص. كانت الذاكرة الافتراضية التي تراها البرامج وتستخدمها مسطحة، واستُخدمت الذاكرة المؤقتة لجلب البيانات والتعليمات إلى أسرع ذاكرة قبل وصول المعالج إليها. أُجريت دراسات مكثفة لتحسين أحجام الذاكرة المؤقتة، ووُجد أن القيم المثلى تعتمد بشكل كبير على لغة البرمجة المستخدمة؛ حيث احتاجت لغة Algol إلى أصغر حجم للذاكرة المؤقتة، بينما احتاجت لغتا Fortran وCobol إلى أكبر حجم.
في بدايات تقنية الحواسيب الصغيرة، كان الوصول إلى الذاكرة أبطأ قليلاً من الوصول إلى المسجلات . ولكن منذ ثمانينيات القرن الماضي [ 63 ]، اتسعت الفجوة في الأداء بين المعالج والذاكرة. فقد تطورت المعالجات الدقيقة بوتيرة أسرع بكثير من الذاكرة، لا سيما من حيث تردد تشغيلها، ما جعل الذاكرة عائقًا أمام الأداء . ورغم أنه كان من الممكن تقنيًا جعل الذاكرة الرئيسية بأكملها بنفس سرعة وحدة المعالجة المركزية، فقد تم اتباع مسار أكثر جدوى اقتصاديًا: استخدام كمية كبيرة من الذاكرة منخفضة السرعة، مع إضافة ذاكرة تخزين مؤقت صغيرة عالية السرعة لتقليص فجوة الأداء. وقد وفر هذا سعة أكبر بعشرة أضعاف - بنفس السعر - مع انخفاض طفيف فقط في الأداء الكلي.
أولى تطبيقات TLB
كانت أولى الاستخدامات الموثقة لـ TLB على GE 645 [ 64 ] و IBM 360/67 [ 65 ] وكلاهما استخدم ذاكرة ترابطية كـ TLB.
ذاكرة التخزين المؤقت للتعليمات الأولى
كان أول استخدام موثق لذاكرة التخزين المؤقت للتعليمات على جهاز CDC 6600. [ 66 ]
ذاكرة التخزين المؤقت للبيانات الأولى
كان أول استخدام موثق لذاكرة التخزين المؤقت للبيانات على جهاز IBM System/360 Model 85. [ 67 ]
في المعالجات الدقيقة 68k
يتميز معالج 68010 ، الذي صدر عام 1982، بـ"وضع التكرار" الذي يُمكن اعتباره ذاكرة تخزين مؤقتة صغيرة ومخصصة للتعليمات، تُسرّع التكرارات التي تتكون من تعليمتين فقط. أما معالج 68020 ، الذي صدر عام 1984، فقد استبدل ذلك بذاكرة تخزين مؤقتة نموذجية للتعليمات بسعة 256 بايت، ليصبح بذلك أول معالج من سلسلة 68k يتميز بذاكرة تخزين مؤقتة حقيقية مدمجة في الشريحة.
إن معالج 68030 ، الذي تم إصداره في عام 1987، هو في الأساس نواة 68020 مع ذاكرة تخزين مؤقتة إضافية للبيانات بسعة 256 بايت، ووحدة إدارة ذاكرة مدمجة (MMU)، وتقليص حجم العملية، ووضع الاندفاع المضاف لذاكرات التخزين المؤقتة.
يحتوي المعالج 68040 ، الذي تم إصداره في عام 1990، على ذاكرة تخزين مؤقت منفصلة للتعليمات والبيانات بسعة أربعة كيلوبايت لكل منهما.
يحتوي المعالج 68060 ، الذي تم إصداره في عام 1994، على ما يلي: ذاكرة تخزين مؤقتة للبيانات بحجم 8 كيلوبايت (ذات ارتباط رباعي)، وذاكرة تخزين مؤقتة للتعليمات بحجم 8 كيلوبايت (ذات ارتباط رباعي)، ومخزن مؤقت للتعليمات بحجم 96 بايت، وذاكرة تخزين مؤقتة للتفرعات بحجم 256 مدخلاً، ومخزن مؤقت لترجمة العناوين بحجم 64 مدخلاً، ومخزن مؤقت لوحدة إدارة الذاكرة (ذات ارتباط رباعي).
في المعالجات الدقيقة x86

مع وصول معالجات x86 الدقيقة إلى سرعات ساعة تبلغ 20 ميجاهرتز وما فوق في معالج 386 ، بدأت أنظمة الحاسوب تتضمن كميات صغيرة من ذاكرة التخزين المؤقت السريعة لتحسين الأداء. ويعود ذلك إلى أن ذاكرة الوصول العشوائي الديناميكية (DRAM) المستخدمة للذاكرة الرئيسية كانت تعاني من زمن استجابة كبير يصل إلى 120 نانوثانية، بالإضافة إلى دورات تحديث. صُممت ذاكرة التخزين المؤقت من خلايا ذاكرة الوصول العشوائي الثابتة (SRAM) الأغلى ثمناً، ولكنها أسرع بكثير، والتي كان زمن استجابتها آنذاك يتراوح بين 10 و25 نانوثانية. كانت ذاكرات التخزين المؤقت المبكرة خارجية عن المعالج، وعادةً ما كانت موجودة على اللوحة الأم على شكل ثمانية أو تسعة أجهزة DIP مثبتة في مقابس لتمكين ذاكرة التخزين المؤقت كميزة إضافية أو ترقية اختيارية.
بعض إصدارات معالج Intel 386 يمكن أن تدعم ذاكرة تخزين مؤقتة خارجية تتراوح سعتها من 16 إلى 256 كيلوبايت.
مع معالج 486 ، تم دمج ذاكرة تخزين مؤقتة (ذاكرة الوصول العشوائي) بسعة 8 كيلوبايت مباشرةً في شريحة المعالج. سُميت هذه الذاكرة بذاكرة المستوى الأول (L1) لتمييزها عن ذاكرة المستوى الثاني (L2) الأبطأ الموجودة على اللوحة الأم. كانت ذاكرة التخزين المؤقتة الموجودة على اللوحة الأم أكبر بكثير، حيث بلغ حجمها الأكثر شيوعًا 256 كيلوبايت. احتوت بعض لوحات النظام على منافذ لبطاقة Intel 485Turbocache الفرعية ، والتي كانت تحتوي على ذاكرة تخزين مؤقتة بسعة 64 أو 128 كيلوبايت. [ 68 ] [ 69 ] استمر استخدام ذاكرة التخزين المؤقتة الموجودة على اللوحة الأم خلال عصر معالجات Pentium MMX، ولكنها أصبحت قديمة مع ظهور ذاكرة الوصول العشوائي الديناميكية (SDRAM) والتفاوت المتزايد بين سرعات ساعة ناقل النظام وسرعة ساعة المعالج، مما جعل ذاكرة التخزين المؤقتة الموجودة على اللوحة الأم أسرع بقليل فقط من الذاكرة الرئيسية.
بدأ التطور التالي في تنفيذ ذاكرة التخزين المؤقت في المعالجات الدقيقة x86 مع معالج Pentium Pro ، الذي وضع ذاكرة التخزين المؤقت الثانوية على نفس حزمة المعالج الدقيق، ويعمل بنفس تردد المعالج الدقيق.
حظيت ذاكرة التخزين المؤقت المدمجة في اللوحة الأم بشعبية واسعة لفترة طويلة بفضل معالجات AMD K6-2 و AMD K6-III التي كانت لا تزال تستخدم مقبس 7 ، الذي سبق أن استخدمته إنتل مع ذاكرة التخزين المؤقت المدمجة في اللوحة الأم. تضمن معالج K6-III ذاكرة تخزين مؤقت من المستوى الثاني (L2) مدمجة بسعة 256 كيلوبايت، واستفاد من ذاكرة التخزين المؤقت المدمجة كذاكرة تخزين مؤقت من المستوى الثالث، سُميت L3 ( تم إنتاج لوحات أم بسعة تصل إلى 2 ميجابايت من ذاكرة التخزين المؤقت المدمجة). بعد أن أصبح مقبس 7 قديمًا، اختفت ذاكرة التخزين المؤقت المدمجة في اللوحة الأم من أنظمة x86.
استُخدمت ذاكرة التخزين المؤقت ثلاثية المستويات مرة أخرى لأول مرة مع طرح معالج Intel Xeon MP "Foster Core" [ 70 ] ، حيث أُضيفت ذاكرة التخزين المؤقت من المستوى الثالث (L3) إلى شريحة المعالج. وأصبح من الشائع زيادة أحجام ذاكرة التخزين المؤقت الإجمالية في أجيال المعالجات الأحدث، وفي الآونة الأخيرة (اعتبارًا من عام 2011) أصبح من الشائع العثور على أحجام لذاكرة التخزين المؤقت من المستوى الثالث تصل إلى عشرات الميغابايت. [ 71 ]
قدمت إنتل ذاكرة تخزين مؤقتة من المستوى الرابع مدمجة في نفس المعالج مع بنية هاسويل الدقيقة . تتميز معالجات كريستالويل [ 38 ] هاسويل، المزودة بمعالج رسومات Iris Pro المدمج من إنتل بنسخة GT3e ، بذاكرة وصول عشوائي ديناميكية مدمجة ( eDRAM ) بسعة 128 ميجابايت على نفس الشريحة. تتم مشاركة ذاكرة التخزين المؤقتة من المستوى الرابع ديناميكيًا بين وحدة معالجة الرسومات ووحدة المعالجة المركزية، وتعمل كذاكرة تخزين مؤقتة ثانوية لذاكرة التخزين المؤقتة من المستوى الثالث لوحدة المعالجة المركزية. [ 39 ]
في معالجات ARM الدقيقة
يحتوي معالج Apple M1 على ذاكرة تخزين مؤقتة من المستوى الأول (L1) بسعة 128 أو 192 كيلوبايت لكل نواة (وهي مهمة لزمن الاستجابة وأداء الخيوط المفردة)، وذلك حسب نوع النواة. تُعد هذه الذاكرة المؤقتة من المستوى الأول كبيرة بشكل استثنائي لأي نوع من المعالجات (وليس فقط لأجهزة الكمبيوتر المحمولة)؛ بينما لا يُعد حجم الذاكرة المؤقتة الإجمالي كبيرًا بشكل استثنائي (حيث أن الحجم الإجمالي أكثر أهمية للإنتاجية) بالنسبة لأجهزة الكمبيوتر المحمولة، وتتوفر أحجام إجمالية أكبر بكثير (مثل L3 أو L4) في أجهزة الكمبيوتر المركزية من IBM.
البحوث الحالية
ركزت تصميمات الذاكرة المؤقتة المبكرة بشكل كامل على التكلفة المباشرة للذاكرة المؤقتة وذاكرة الوصول العشوائي ومتوسط سرعة التنفيذ. أما تصميمات الذاكرة المؤقتة الأحدث فتأخذ في الاعتبار أيضًا كفاءة الطاقة ، وتحمل الأعطال، وأهدافًا أخرى. [ 72 ] [ 73 ]
هناك العديد من الأدوات المتاحة لمهندسي الكمبيوتر للمساعدة في استكشاف المفاضلات بين وقت دورة ذاكرة التخزين المؤقت والطاقة والمساحة؛ يعد محاكي ذاكرة التخزين المؤقت CACTI [ 74 ] ومحاكي مجموعة تعليمات SimpleScalar خيارين مفتوحي المصدر.
ذاكرة تخزين مؤقت متعددة المنافذ
ذاكرة التخزين المؤقت متعددة المنافذ هي ذاكرة تخزين مؤقتة قادرة على تلبية أكثر من طلب في الوقت نفسه. عند الوصول إلى ذاكرة تخزين مؤقتة تقليدية، نستخدم عادةً عنوان ذاكرة واحدًا، بينما في ذاكرة التخزين المؤقت متعددة المنافذ، يمكننا طلب N عنوانًا في المرة الواحدة ، حيث N هو عدد المنافذ المتصلة عبر المعالج وذاكرة التخزين المؤقت. تكمن فائدة ذلك في أن المعالج ذو البنية الأنبوبية يمكنه الوصول إلى الذاكرة من مراحل مختلفة في مساره. ومن فوائده الأخرى أنه يسمح بتطبيق مفهوم المعالجات فائقة التوازي من خلال مستويات ذاكرة التخزين المؤقت المختلفة.
انظر أيضاً
- مُتنبئ التفرع
- ذاكرة التخزين المؤقت (الحوسبة)
- خوارزميات التخزين المؤقت
- تماسك الذاكرة المؤقتة
- تعليمات التحكم في ذاكرة التخزين المؤقت
- التسلسل الهرمي لذاكرة التخزين المؤقت
- سياسات وضع ذاكرة التخزين المؤقت
- جلب البيانات المسبق من ذاكرة التخزين المؤقت
- دينيرو (محاكي التخزين المؤقت)
- وحدة تعليمية
- موقع مرجعي
- التخزين المؤقت
- التسلسل الهرمي للذاكرة
- العمليات الدقيقة
- تخصيص بدون كتابة
- ذاكرة الوصول العشوائي للمفكرة
- وحدة فك التشفير ذات العنوان المجموعي
- مخزن الكتابة المؤقت
ملحوظات
مراجع
- ↑ توريس، غابرييل (12 سبتمبر 2007). "كيف تعمل ذاكرة التخزين المؤقت" .
- ↑ سو، تشاو؛ زينغ، تشينغكاي (10 يونيو 2021). نيكوبوليتيديس، بيتروس (محرر). "دراسة استقصائية لهجمات القنوات الجانبية القائمة على ذاكرة التخزين المؤقت لوحدة المعالجة المركزية: تحليل منهجي، ونماذج أمنية، وتدابير مضادة" . شبكات الأمن والاتصالات . 2021 : 1-15 . doi : 10.1155/2021/5559552 . ISSN 1939-0122 .
- ↑ لاندي، باري (نوفمبر 2012). "أطلس 2 في مختبر كامبريدج للرياضيات (ومركز ألدرماستون والتصميم بمساعدة الحاسوب)" .
طُوِّرت وحدتا تخزين ثنائيات نفقية في كامبريدج؛ إحداهما، والتي عملت بكفاءة عالية، سرّعت جلب المعاملات، والأخرى صُمِّمت لتسريع جلب التعليمات. تقوم الفكرة على أن معظم التعليمات تُنفَّذ بالتسلسل، لذا عند جلب تعليمة ما، تُوضع تلك الكلمة في وحدة التخزين الثانوية في الموقع المُحدد بواسطة عنوان الجلب modulo 32؛ كما تُخزَّن البتات المتبقية من عنوان الجلب. إذا كانت الكلمة المطلوبة موجودة في وحدة التخزين الثانوية، تُقرأ منها بدلًا من الذاكرة الرئيسية. من شأن هذا أن يُحسِّن بشكل كبير سرعة حلقات التعليمات التي يصل طولها إلى 32 تعليمة، ويُقلِّل من تأثير حلقات for التي يصل طولها إلى 64 كلمة.
- ↑ "الخصائص الوظيفية لنظام IBM System/360 موديل 85" (ملف PDF) . شركة IBM . يونيو 1968. A22-6916-1.
- ↑ ليبتاي، جون س. (مارس 1968). "الجوانب الهيكلية لنظام System/360 موديل 85 - الجزء الثاني: الذاكرة المؤقتة" (ملف PDF) . مجلة أنظمة IBM . 7 (1): 15-21 . doi : 10.1147/sj.71.0015 .
- ↑ سميث، آلان جاي (سبتمبر 1982). "ذاكرات التخزين المؤقت" (ملف PDF) . دراسات الحوسبة . 14 (3): 473-530 . doi : 10.1145/356887.356892 . S2CID 6023466 .
- ↑ "يقترح باحثون من شركة IBM أن تغيير بنية الحاسوب هو وسيلة لزيادة الإنتاجية". مجلة الإلكترونيات . 49 (25): 30-31 . ديسمبر 1976.
- 1 2 3 4 هينيسي، جون ل.؛ باترسون، ديفيد أ. (2011). هندسة الحاسوب: منهج كمي . إلسيفير. ص. ب-9. ISBN 978-0-12-383872-8.
- ↑ وايت، بيل؛ دي ليون، سيسيليا أ.؛ وآخرون . (مارس 2016). "مقدمة تقنية عن IBM z13 وIBM z13s" (ملف PDF) . IBM. ص 20.
- ↑ "صحيفة حقائق المنتج: تسريع بنية شبكة الجيل الخامس، من النواة إلى الحافة" . غرفة أخبار إنتل (بيان صحفي). شركة إنتل. 25 فبراير 2020. تاريخ الاسترجاع: 18 أبريل 2024.
ذاكرة تخزين مؤقتة من المستوى الأول بسعة 32 كيلوبايت/نواة، وذاكرة تخزين مؤقتة من المستوى الثاني بسعة 4.5 ميجابايت لكل مجموعة من 4 أنوية، وذاكرة تخزين مؤقتة مشتركة من المستوى الثالث بسعة تصل إلى 15 ميجابايت.
- ↑ سميث، رايان. "إنتل تطلق معالج Atom P5900: معالج Atom بتقنية 10 نانومتر لشبكات الوصول اللاسلكي" . AnandTech . مؤرشف من الأصل في 24 فبراير 2020. تم الاطلاع عليه بتاريخ 12 أبريل 2020 .
- ↑ "تصميم الذاكرة المؤقتة" (ملف PDF) . ucsd.edu . 2010-12-02. الصفحات 10-15 . تاريخ الاسترجاع 2023-01-29 .
- ↑ ميغالينغام، راجيش كانان؛ ديبو، كي بي؛ جوزيف، إيب بي؛ فيكرام، فاندانا (2009). تصميم ذاكرة تخزين مؤقتة ترابطية ذات مجموعات مرحلية لتقليل استهلاك الطاقة . المؤتمر الدولي الثاني لـ IEEE حول علوم الحاسوب وتكنولوجيا المعلومات، 2009. الصفحات 551-556 . doi : 10.1109/ICCSIT.2009.5234663 . ISBN 978-1-4244-4519-6. S2CID 18236635 .
- ↑ جاهجيردار، سانجيف؛ جورج، فارغيز؛ سودي، إندر؛ ويلز، رايان (2012). "إدارة الطاقة في الجيل الثالث من معمارية Intel Core الدقيقة، والتي كانت تُعرف سابقًا باسم Ivy Bridge" (ملف PDF) . hotchips.org . ص 18. مؤرشف من الأصل (ملف PDF) بتاريخ 29 يوليو 2020. تم الاطلاع عليه بتاريخ 16 ديسمبر 2015 .
- 1 2 سيزنيك، أندريه (1993). "حالة لصالح ذاكرة التخزين المؤقت ثنائية الاتجاه ذات الترابط المائل" . أخبار هندسة الحاسوب ACM SIGARCH . 21 (2): 169-178 . doi : 10.1145/173682.165152 .
- 1 2 كوزيراكيس، سي. "المحاضرة 3: تقنيات التخزين المؤقت المتقدمة" (ملف PDF) . مؤرشف من الأصل (ملف PDF) في 7 سبتمبر 2012.
- ↑ "البنية الدقيقة" .
لقد ثبت أن ذاكرة التخزين المؤقت ذات الارتباطات المنحرفة تتمتع بميزتين رئيسيتين مقارنة بذاكرة التخزين المؤقت التقليدية ذات الارتباطات المحددة.
- 1 2 تشانغ، تشينشي؛ تشانغ، شياودونغ؛ يان، يونغ (سبتمبر-أكتوبر 1997). "مخططان سريعان وعاليا الترابط لذاكرة التخزين المؤقت". IEEE Micro . 17 (5): 40-49 . Bibcode : 1997IMicr..17e..40C . doi : 10.1109/40.621212 .
- ↑ "دليل مبرمج سلسلة ARM Cortex-R" . developer.arm.com . 2014. تم الاطلاع عليه بتاريخ 4 مايو 2023 .
- ↑ "ذاكرة التخزين المؤقت للتنبؤ بالمسار" .
- ↑ "ذاكرة التخزين المؤقت الترابطية متعددة الاتجاهات القابلة لإعادة التكوين" . 22 نوفمبر 1994. تم الاسترجاع في 19 يناير 2024 .
- ↑ "طلب براءة اختراع أمريكي لاختيار طريقة استبدال ذاكرة التخزين المؤقت الديناميكية بناءً على بتات علامة العنوان (طلب رقم 20160350229 صادر في 1 ديسمبر 2016) - بحث براءات الاختراع في جاستيا" . patents.justia.com .
- ↑ سادلر، ناثان ن.؛ سورين، دانيال ل. (2006). "اختيار مخطط حماية من الأخطاء لذاكرة التخزين المؤقت للبيانات من المستوى الأول للمعالج الدقيق" (ملف PDF) . ص 4.
- ↑ باترسون، ديفيد أ.؛ هينيسي، جون ل. (2009). تنظيم وتصميم الحاسوب: واجهة الأجهزة/البرمجيات . مورغان كوفمان. ص 484. ISBN 978-0-12-374493-7.
- 1 2 3 كوبرمان، جين (2003). "أساسيات التخزين المؤقت" .
- ↑ دوجان، بن (2002). "بشأن الكنز" .
- ↑ كراغون، هارفي ج. (1996). أنظمة الذاكرة والمعالجات ذات البنية الأنبوبية . جونز وبارتليت ليرنينج. ص 209. ISBN 978-0-86720-474-2.
- ↑ أونيل، آر دبليو. تجربة استخدام نظام برمجة متعددة بتقسيم الوقت مع أجهزة إعادة توجيه العناوين الديناميكية . وقائع مؤتمر AFIPS للحاسوب 30 (مؤتمر الربيع المشترك للحاسوب، 1967). الصفحات 611-621 . doi : 10.1145/1465482.1465581 .
- ↑ سومنر، إف إتش؛ هالي، جي؛ تشينه، إي سي واي (1962). "وحدة التحكم المركزية لحاسوب 'أطلس'". معالجة المعلومات 1962. وقائع مؤتمر الاتحاد الدولي لمعالجة المعلومات. المجلد. وقائع مؤتمر الاتحاد الدولي لمعالجة المعلومات 62. سبارتان.
- ↑ كيلبورن، ت.؛ باين، ر.ب.؛ هاوارث، د.ج. (ديسمبر 1961). "مشرف أطلس" . الحواسيب - مفتاح التحكم الكامل في الأنظمة . وقائع المؤتمرات. المجلد 20 وقائع المؤتمر الشرقي المشترك للحواسيب، واشنطن العاصمة: ماكميلان. الصفحات 279-294 .
- ↑ كاكسيراس، ستيفانوس؛ روس، ألبرتو (2013). منظور جديد لتماسك ذاكرة التخزين المؤقت الافتراضية الفعال . المؤتمر الدولي الأربعون لهندسة الحاسوب (ISCA). الصفحات 535-547 . CiteSeerX 10.1.1.307.9125 . doi : 10.1145/2485922.2485968 . ISBN 9781450320795. S2CID 15434231 .
- ↑ بوتوملي، جيمس (2004). "فهم التخزين المؤقت" . مجلة لينكس . تم الاسترجاع في 2010-05-02 .
- ↑ تايلور، جورج؛ ديفيز، بيتر؛ فارموالد، مايكل (1990). "شريحة TLB - آلية ترجمة عناوين منخفضة التكلفة وعالية السرعة". أخبار هندسة الحاسوب ACM SIGARCH . 18 (2SI): 355-363 . doi : 10.1145/325096.325161 .
- ↑ روسكو، تيموثي؛ باومان، أندرو (2009-03-03). "ذاكرة التخزين المؤقت وذاكرة الترجمة السريعة المتقدمة لأنظمة التشغيل (263-3800-00L)" (ملف PDF) . systems.ethz.ch . مؤرشف من الأصل (ملف PDF) بتاريخ 2011-10-07 . تم الاطلاع عليه بتاريخ 2016-02-14 .
- ↑ لين، جيانغ؛ لو، تشينغدا؛ دينغ، شياونينغ؛ تشانغ، تشاو؛ تشانغ، شياودونغ؛ سادايابان، ب. (2008). اكتساب رؤى حول تقسيم ذاكرة التخزين المؤقت متعددة النوى: سد الفجوة بين المحاكاة والأنظمة الحقيقية . المؤتمر الدولي الرابع عشر لهندسة الحواسيب عالية الأداء، معهد مهندسي الكهرباء والإلكترونيات. سولت ليك سيتي، يوتا. الصفحات 367-378 . doi : 10.1109/HPCA.2008.4658653 .
- ↑ "رسالة إلى جيانغ لين" (ملف PDF) . مؤرشف من الأصل (ملف PDF) بتاريخ 21-01-2024.
- ↑ جوبي، نورمان ب. (مايو 1990). "تحسين أداء ذاكرة التخزين المؤقت ذات التعيين المباشر بإضافة ذاكرة تخزين مؤقت صغيرة ذات ارتباط كامل ومخازن جلب مسبق". وقائع المؤتمر الدولي السنوي السابع عشر حول هندسة الحاسوب . المؤتمر الدولي السنوي السابع عشر حول هندسة الحاسوب، 28-31 مايو 1990. سياتل، واشنطن، الولايات المتحدة الأمريكية. الصفحات 364-373 . doi : 10.1109/ISCA.1990.134547 .
- 1 2 "المنتجات (كريستال ويل سابقًا)" . إنتل . مؤرشف من الأصل بتاريخ 29-09-2013 . تم الاطلاع عليه بتاريخ 15-09-2013 .
- 1 2 "مراجعة بطاقة الرسومات Intel Iris Pro 5200: اختبار معالج Core i7-4950HQ" . AnandTech . تاريخ الاسترجاع: 16 سبتمبر 2013 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ كاتريس، إيان (2 سبتمبر 2015). "إطلاق معالجات إنتل سكاي ليك للأجهزة المحمولة والمكتبية، مع تحليل معماري" . أناند تك. مؤرشف من الأصل في 4 سبتمبر 2015.
- ↑ شيمبي، أناند لال (20 نوفمبر 2000). "ذاكرة التخزين المؤقت لمعالج بنتيوم 4 - إنتل بنتيوم 4 بسرعة 1.4 جيجاهرتز و1.5 جيجاهرتز" . أناند تك . مؤرشف من الأصل في 26 مايو 2010. تم الاطلاع عليه في 30 نوفمبر 2015 .
- 1 2 فوغ، أغنر (19 فبراير 2014). "البنية الدقيقة لوحدات المعالجة المركزية من إنتل، وإيه إم دي، وفيا: دليل تحسين لمبرمجي لغة التجميع ومصممي المترجمات" (ملف PDF) . agner.org . تاريخ الاسترجاع: 21 مارس 2014 .
- ↑ كانتر، ديفيد (26 أغسطس 2010). "معمارية بولدوزر الدقيقة من AMD - نظام الذاكرة الفرعي (تابع)" . تقنيات العالم الحقيقي .
- ↑ كانتر، ديفيد (25 سبتمبر 2010). "معمارية ساندي بريدج الدقيقة من إنتل - فك تشفير التعليمات وذاكرة التخزين المؤقت للعمليات الدقيقة" . تقنيات العالم الحقيقي .
- 1 2 سولومون، باروخ؛ مندلسون، آفي؛ أورنشتاين، دورون؛ ألموغ، يواف؛ رونين، روني (أغسطس 2001). "ذاكرة التخزين المؤقت للعمليات الدقيقة: واجهة أمامية واعية باستهلاك الطاقة لمجموعة تعليمات متغيرة الطول" (ملف PDF) . ISLPED'01: وقائع الندوة الدولية لعام 2001 حول الإلكترونيات والتصميم منخفض الطاقة . الندوة الدولية لعام 2001 حول الإلكترونيات والتصميم منخفض الطاقة (ISLPED'01)، 6-7 أغسطس 2001. هنتنغتون بيتش، كاليفورنيا، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة . الصفحات 4-9 . doi : 10.1109/LPE.2001.945363 . ISBN 978-1-58113-371-4. S2CID 195859085 . تم الاسترجاع بتاريخ 2013-10-06 .
- 1 2 شيمبي، أناند لال (5 أكتوبر 2012). "تحليل معمارية هاسويل من إنتل" . أناند تك . تم الاسترجاع في 20 أكتوبر 2013 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ كاتريس، إيان (18 أغسطس 2016). "الكشف عن بنية AMD Zen الدقيقة: مُجدولات مزدوجة، وذاكرة تخزين مؤقتة للعمليات الدقيقة، وهيكل الذاكرة" . AnandTech . تم الاطلاع عليه بتاريخ 3 أبريل 2017 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ قو، ليون؛ موتياني ، ديبتي (أكتوبر 2003). "تتبع ذاكرة التخزين المؤقت" (PDF) . تم الاسترجاع 2013/10/06 .
- ↑ نيو، كون (28 مايو 2015). "كيف تعمل ذاكرة التخزين المؤقت لتعليمات الهدف المتفرع (BTIC)؟" . مؤرشف من الأصل في 7 أبريل 2018. تم الاطلاع عليه في 7 أبريل 2018 .
- ↑ "ذاكرة التخزين المؤقت الذكية من إنتل: عرض توضيحي" . إنتل . تم الاطلاع عليه بتاريخ 26 يناير 2012 .
- ↑ "نظرة داخلية على بنية Intel Core الدقيقة وتقنية الوصول الذكي إلى الذاكرة" . Intel . 2006. ص 5. مؤرشف من النسخة الأصلية (PDF) بتاريخ 29-12-2011 . تم الاطلاع عليه بتاريخ 26-01-2012 .
- ↑ "مراجعة معالج الرسوميات Intel Iris Pro 5200: اختبار معالج Core i7-4950HQ" . AnandTech . تاريخ الاسترجاع: 25 فبراير 2014 .
{{cite web}}: CS1 maint: deprecated archiveal service ( link ) - ↑ تيان، تيان؛ شيه، تشيو-بي (2012-03-08). "تقنيات البرمجيات لأنظمة متعددة النوى ذات ذاكرة تخزين مؤقتة مشتركة" . إنتل . تم الاسترجاع في 24 نوفمبر 2015 .
- ↑ "ورشة عمل كورنيل الافتراضية > مقدمة إلى بنى المجموعات المتقدمة > الذاكرة، ذاكرة التخزين المؤقت، والوصلات البينية > ذاكرة التخزين المؤقت من المستوى الأخير" .
- ↑ ليمبل، أوديد (28 يوليو 2013). "الجيل الثاني من عائلة معالجات إنتل كور: إنتل كور i7 وi5 وi3" (ملف PDF) . hotchips.org . الصفحات 7-10 ، 31-45 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 29 يوليو 2020. تاريخ الاسترجاع: 21 يناير 2014 .
- ↑ تشين، ج. برادلي؛ بورغ، أنيتا؛ جوبي، نورمان ب. (1992). "دراسة قائمة على المحاكاة لأداء ذاكرة الترجمة السريعة" . أخبار هندسة الحاسوب من ACM SIGARCH . 20 (2): 114-123 . doi : 10.1145 /146628.139708 .
- ↑ "شرح ذاكرة التخزين المؤقت L1 و L2" . amecomputers.com . مؤرشف من الأصل بتاريخ 14 يوليو 2014. تم الاطلاع عليه بتاريخ 9 يونيو 2014 .
- 1 2 3 تشنغ، يينغ؛ ديفيس، برايان تي؛ جوردان، ماثيو (10-12 مارس 2004). تقييم أداء التسلسلات الهرمية لذاكرة التخزين المؤقت الحصرية (ملف PDF) . ندوة IEEE الدولية حول تحليل أداء الأنظمة والبرمجيات. أوستن، تكساس، الولايات المتحدة الأمريكية. الصفحات 89-96 . doi : 10.1109/ISPASS.2004.1291359 . ISBN 0-7803-8385-0أُرشف من النسخة الأصلية (PDF) بتاريخ 13 أغسطس 2012. تم الاطلاع عليه بتاريخ 9 يونيو 2014 .
- ↑ جليل، عامر؛ إريك بورش؛ بهاندرو، ماليني؛ ستيلي الابن، سيمون سي؛ إيمر، جويل (27-09-2010). "تحقيق أداء ذاكرة التخزين المؤقت غير الشاملة باستخدام ذاكرات التخزين المؤقت الشاملة" (ملف PDF) . jaleels.org . تاريخ الاسترجاع: 09-06-2014 .
- ↑ "AMD K8" . Sandpile.org . مؤرشف من الأصل بتاريخ 15 مايو 2007. تم الاطلاع عليه بتاريخ 2 يونيو 2007 .
- ↑ "دليل المرجع التقني لمعالجات Cortex-R4 و Cortex-R4F" . arm.com . تم الاطلاع عليه بتاريخ 28-09-2013 .
- ↑ "دليل المرجع الفني لوحدة التحكم في ذاكرة التخزين المؤقت L210" . arm.com . تم الاطلاع عليه بتاريخ 28-09-2013 .
- ↑ ماهاباترا، نيهار ر.؛ فينكاتراو، بالاكريشنا (1999). "عنق الزجاجة بين المعالج والذاكرة: المشاكل والحلول" (ملف PDF) . كروس رودز . 5 (3): 2–es. doi : 10.1145/357783.331677 . S2CID 11557476. مؤرشف من الأصل (ملف PDF) بتاريخ 2014-03-05 . تم الاطلاع عليه بتاريخ 2013-03-05 .
- ↑ دليل نظام GE-645 (ملف PDF) . جنرال إلكتريك . يناير 1968. تم الاطلاع عليه بتاريخ 10 يوليو 2020 .
- ↑ الخصائص الوظيفية لنظام IBM System/360 موديل 67 (ملف PDF) . الطبعة الثالثة. IBM . فبراير 1972. GA27-2719-2.
- ↑ ثورنتون، جيمس إي. (أكتوبر 1964). "التشغيل المتوازي في بيانات التحكم 6600" (ملف PDF) . وقائع مؤتمر الحاسوب المشترك لخريف 27-29 أكتوبر 1964، الجزء الثاني: أنظمة الحاسوب فائقة السرعة .
- ↑ آي بي إم (يونيو 1968). الخصائص الوظيفية لنظام آي بي إم سيستم/360 موديل 85 (ملف PDF) (الطبعة الثانية ). A22-6916-1.
- ↑ تشين، آلان، "وحدة المعالجة المركزية 486: على مسار طيران عالي الأداء"، شركة إنتل، حلول الحواسيب الصغيرة، نوفمبر/ديسمبر 1990، ص 2
- ↑ رايلي، جيمس، خيرادبير، شيرفين، "نظرة عامة على تصميم الأجهزة عالية الأداء باستخدام وحدة المعالجة المركزية 486"، شركة إنتل، حلول الحواسيب الصغيرة، نوفمبر/ديسمبر 1990، صفحة 20
- ↑ "عائلة معالجات Intel Xeon Foster MP الدقيقة" . CPU-World . مؤرشف من الأصل في 15 يوليو 2023.
- ↑ "معالجات إنتل زيون من عائلة E7" . إنتل® ARK (مواصفات المنتج) . إنتل . مؤرشف من الأصل بتاريخ 14-10-2013 . تم الاطلاع عليه بتاريخ 10-10-2013 .
- ↑ سالي أدي (نوفمبر 2009). "تصميم رقاقة إلكترونية يحبط هجومًا خفيًا على البيانات" . مجلة IEEE Spectrum . 46 (11): 16. doi : 10.1109/MSPEC.2009.5292036 . S2CID 43892134 .
- ↑ وانغ، تشنغ هونغ؛ لي، روبي ب. (8-12 نوفمبر 2008). بنية ذاكرة تخزين مؤقت جديدة ذات أداء وأمان مُحسّنين (ملف PDF) . المؤتمر الدولي السنوي الحادي والأربعون لمعهد مهندسي الكهرباء والإلكترونيات/رابطة مكائن الحوسبة حول البنية الدقيقة. الصفحات 83-93 . مؤرشف (ملف PDF) من الأصل في 6 مارس 2012.
- ↑ "الصبار" . مختبرات إتش بي . مؤرشف من الأصل بتاريخ 29-01-2023 . تم الاسترجاع بتاريخ 29-01-2023 .
روابط خارجية
- الجزء الثاني من موضوع الذاكرة: ذاكرة التخزين المؤقت لوحدة المعالجة المركزية - مقال على موقع lwn.net بقلم أولريش دريبر يصف ذاكرة التخزين المؤقت لوحدة المعالجة المركزية بالتفصيل
- تقييم الترابط في ذاكرة التخزين المؤقت لوحدة المعالجة المركزية - هيل وسميث (1989) - يقدم مفهوم السعة، والصراع، والتصنيف الإلزامي
- أداء الذاكرة المؤقتة في اختبارات SPEC CPU2000 - هيل وكانتين (2003) - تم تحديث هذه الورقة المرجعية عدة مرات. وهي تتضمن نتائج محاكاة شاملة وواضحة لمجموعة واسعة من الاختبارات المعيارية وهياكل الذاكرة المؤقتة.
- التسلسل الهرمي للذاكرة في الأنظمة القائمة على ذاكرة التخزين المؤقت (مؤرشف بتاريخ 15 سبتمبر 2009 على موقع Wayback Machine) - بقلم رود فان دير باس، 2002، شركة صن مايكروسيستمز - مقال تمهيدي حول التخزين المؤقت لذاكرة وحدة المعالجة المركزية
- مقدمة في ذاكرة التخزين المؤقت - بقلم بول جينوا، مهندس محترف، 2004، شركة فريسكيل لأشباه الموصلات، مقال تمهيدي آخر
- ذاكرة تخزين مؤقتة ذات 8 اتجاهات ترابطية - مكتوبة بلغة VHDL
- فهم التخزين المؤقت لوحدة المعالجة المركزية والأداء – مقال بقلم جون ستوكس على موقع Ars Technica
- مراجعة معالج IBM POWER4 – مقال بقلم بافيل دانيلوف على موقع ixbtlabs
- ما هي ذاكرة التخزين المؤقت وأنواعها؟
- التخزين المؤقت للذاكرة - محاضرة في جامعة برينستون
- مغالطة مسح ذاكرة التخزين المؤقت لوحدة المعالجة المركزية
- وحدات المعالجة المركزية
- ذاكرة الحاسوب
- ذاكرة التخزين المؤقت (الحوسبة)
