Types of Memory (RAM)
Dynamic RAM (DRAM)
- ●تتكون من مكثفات (Capacitors) تسرب الشحنة بمرور الوقت.
- ●تحتاج إلى Refresh كل بضع ملي ثانية.
- ●رخيصة (Cheap) وعالية الكثافة.
- ●الاستخدام: Main Memory (الذاكرة الرئيسية).
Static RAM (SRAM)
- ●تتكون من دوائر Flip-Flops (رقمية بالكامل).
- ●لا تحتاج إلى Refresh (تحتفظ بالبيانات طالما هناك طاقة).
- ●سريعة جداً ولكنها باهظة الثمن.
- ●الاستخدام: Cache Memory.
Memory Hierarchy & Locality
كلما صعدنا للأعلى: زادت السرعة، وزادت التكلفة، وقل الحجم.
Definitions
- Hit: البيانات المطلوبة موجودة في المستوى الحالي.
- Miss: البيانات غير موجودة، يجب البحث في المستوى الأسفل.
- Miss Penalty: الوقت الضائع لجلب البيانات من المستوى الأدنى (Replace + Deliver).
Principle of Locality (مبدأ المحلية)
لماذا يعمل الكاش بكفاءة؟
- Temporal Locality (زمانية): البيانات التي استخدمتها الآن، غالباً سأحتاجها مرة أخرى قريباً (مثل Loops).
- Spatial Locality (مكانية): البيانات المجاورة لما أستخدمه الآن، غالباً سأحتاجها قريباً (مثل Arrays).
Cache Mapping Schemes
1. Direct Mapped Cache
القاعدة: كل بلوك في الذاكرة له مكان واحد فقط محدد في الكاش يمكن أن يذهب إليه.
Cache Block = (Memory Block Address) MOD (Number of Cache Blocks)
تقسيم العنوان (Address Fields)
- Offset: يحدد الكلمة داخل البلوك.
- Block: يحدد رقم البلوك في الكاش.
- Tag: للتأكد هل البلوك الموجود هو المطلوب فعلاً؟
2. Fully Associative
البلوك يمكن وضعه في أي مكان في الكاش. (مرن جداً لكن البحث فيه مكلف).
3. Set Associative
حل وسط. الكاش مقسم لمجموعات (Sets). البلوك يذهب لمجموعة محددة، ولكن في أي مكان داخل تلك المجموعة.
Replacement & Performance
Replacement Algorithms
عندما يمتلئ الكاش، ماذا نحذف؟ (فقط في Associative).
- LRU (Least Recently Used): احذف الأقدم استخداماً (الأكثر كفاءة، الأصعب تنفيذاً).
- FIFO (First In First Out): احذف الأقدم دخولاً.
- Random: احذف عشوائياً.
Effective Access Time (EAT)
- H: Hit Rate (نسبة النجاح).
- (1-H): Miss Rate (نسبة الفشل).
- AccessC: زمن الوصول للكاش.
- AccessMM: زمن الوصول للذاكرة الرئيسية (يشمل عقوبة الـ Miss Penalty).
حساب EAT
Access Cache = 10ns, Access RAM = 200ns, Hit Rate = 99%. احسب EAT.
EAT = 9.9 + 2
EAT = 11.9 ns
لاحظ كيف اقترب الوقت الكلي من سرعة الكاش!
Direct Mapping
إذا كان لدينا 4 بلوكات كاش (0, 1, 2, 3).
أين يذهب البلوك رقم 7 من الذاكرة؟
الخطأ: يذهب للبلوك 3 لأنه الأخير.
الصواب: نطبق القانون $7 \pmod 4 = 3$.
أين يذهب البلوك رقم 12؟
$12 \pmod 4 = 0$ (يذهب للبلوك 0).