الذاكــــرة
Memory
لا تستغرب إذا ما علمت أن ذاكرة الحاسوب ماهي إلا مجموعة من المفاتيح الصغيرة، كل واحد منها لا بد أن يكون
في أحد حالتين إما أنه مفتاح مغلق أو أنه مفتوح!
في عالم الحاسوب يُرمّز لحالة كون المفتاح "مفتوحا" بالرقم 1، وبالرقم 0 لكونه مغلقا، وبهذا نستطيع القول أن كل
مفتاح ما هو إلا "بت" واحد، ولجعل الذاكرة سهلة الادارة اُصطلح على أن تُضم كل ثمانية بتات تحت مسمى بايت.
بهذا يمكن أن يُنظر للذاكرة على أنها مجموعة متسلسلة من البايتات، كل بايت منها يُعرّف برقم متسلسل كما هو
واضح في الشكل.

هذا الرقم هو ما يُشار إليه بـ"عنوان ذاكرة" (memory address)، ولأن كل بايت له عنوان
خاص به، فإن مثل هذه الذاكرة تسمى "ذاكرة قابلة لعنونة البايت" (byte addressable memory).
النهج العلمي الأثبت لتصنيف أنواع الذواكر يكون حسب الآلية التي تُتّبع في تخزين البيانات، والتصنيف التالي يبين أنواع
الذواكر حسب النهج المذكور:
1- ذاكرة الوصول العشوائي Random Access Memory: RAM
a . ذاكرة القراءة/الكتابة Read Write Memory: RWM
b. ذاكرة القراءة فقط Read Only Memory: ROM
2- الذاكرة القابلة لعنونة المحتوي أو (ذاكرة ذات محتوى قابل للقصد) Content Addressable Memory: CAM
3- ذاكرة الدخول المتعاقب Sequential Access Memory: SAM
4- ذاكرة الدخول المباشر (Direct Access Memory: DAM).
ذاكرة الوصول العشوائي RAM
Random Access Memory
سر توسيم هذا النوع بـ"الوصول العشوائي" هو أن أي موقع مُعنون في مثل هذا النوع من الذواكر يمكن الوصول إليه من قبل
المعالج دون الحاجة للانتقال تباعا إليه، بمعنى آخر لا يحتاج المعالج المرور تسلسليا على كل المواقع التي تسبق العنوان
555 مثلا كي يصل إليه، بل يستطيع الوصول إليه مباشرة.
بهذا يُمكن القول بأن فترة القراءة من/الكتابة إلى ذاكرة الوصول العشوائي لا تعتمد على عنوان الموقع الفيزيائي، فالموقع 0 يمكن
الوصول إليه بوقت مساو لوقت الوصول للموقع 98020CE0)hex).
تعتبر ذاكرة القراءة والكتابة (RWM) من أكثر ذاكرات الوصول العشوائي شيوعا بالنسبة للذاكرة الرئيسية،
هنا وجب التذكير أن مسجل عنوان الذاكرة (MAR) يحمل العنوان الذي يفترض الكتابة إليه/القراءة منه،
بالتالي وبداهة لا بد أن يكون لهذا المسجل عدد من البتات (bits) يساوي عدد نواقل العنوان (address lines)، فمثلا اذا ما كان لدينا
مسجل عنوان ذاكرة به 32 بت، فإن هذا يعني أن لدينا 2^32 موقع في الذاكرة، وبالتالي 2^32 ناقل عنوان، ولنفترض ههنا وكمثال أن
مسجل عنوان الذاكرة يحوي العنوان 98020CE0)hex) ، لكي نستطيع تفعيل (تحديد) هذا العنوان بالضبط دون غيره في الذاكرة نحتاج
لـمُرَمِّز (Decoder) يأخذ 32 بت كدخل، و بهذا يكون له 2^32 كخرج ، فإذا ما كان المسجل MAR يحمل العنوان
المذكور، فإن على المُرمّز أن "يُرّمز" لذاك العنوان، انظر الشكل
تحديد عنوان معين في ذاكرة القراءة والكتابة (RWM) يُحتم قراءة محتوى ذاك العنوان أو الكتابة إليه، للقراءة من الذاكرة يجب أن تُفعّل إشارة
القراءة (ترميزيا تكون 1)، ومن ثم تُحضر نسخة من محتوى موقع الذاكرة المعين وتوضع في مسجل بيانات الذاكرة (MDR)، نلاحظ أن عملية
القراءة من الذاكرة لا تغير محتوى الذاكرة.
في حالة الكتابة للذاكرة، يجب ابتداءً ايداع مسجل بيانات الذاكرة (MDR) بالبيانات المراد كتابتها، ثم يُحمّل مسجل عنوان الذاكرة (MAR)
بعنوان الذاكرة المراد الكتابة فيه، بعد ذلك تُفعّل إشارة الكتابة (الواضحة في الشكل )، عندها ستنتقل محتويات مسجل بيانات الذاكرة (MDR)
إلى موقع الذاكرة المحدد.

تُعتبر ذاكرة القراءة فقط (ROM) نوعا من أنواع ذاكرة الوصول العشوائي (RAM)، إلا أن البيانات لا يمكن أن تكتب في هذا النوع من الذاكرة
، إلا من قبل مُصنّع الذاكرة، أو أن يقوم المستخدم بكتابة (حرق) البيانات فيها لمرة واحدة فقط، ثم يقوم المعالج بالقراءة فقط حيث لا يوجد
في هذا النوع ناقل لإشارة الكتابة، إنما يوجد ناقل إشارة تفعيل القراءة فقط (enable)، تستخدم ذاكرة القراءة فقط
كذاكرة رئيسية تحوي البيانات والبرامج التي لا تتغير خلال عمليات النظام، أشهر استخدام لهذا النوع من الذاكرة هو حفظ برنامج BIOS للوحة الأم.
الذاكرة ذات المحتوى القابل للقصد CAM
Content-Addressable Memory
مفهوم العنوان (address) في الذاكرة ذات المحتوى القابل للقصد (CAM) لا يلعب الدور الرئيسي كما في أنواع الذواكر السابقة،
فآلية عمل مثل هذه الذاكرة قائمة على البحث عن موقع يحتوي عيّنة محددة من البيانات. عمليا يُزوَّد هذا النوع من الذاكرة بالبيانات
المراد البحث عنها، بعدها يقوم العتاد الخاص بالذاكرة بالبحث عن موقع يحوي البيانات المطابقة للبيانات المعطاة، ثم يُرجِع الموقع
(أو المواقع) التي وُجد بها تتطابق، وإلا أعلم بعدم العثور عن أي تطابق. الشكل (بالأسفل) يوضح نمط من أنماط بنية هذا النوع من الذاكرة.

توضع البيانات المراد البحث عنها في مسجل البيانات (data register)، ومن ثم يقوم مسجل القناع (mask register) بتحديد الخانات
(البتات) المقصودة بالبحث دون غيرها وذلك بتفعيل البت في مسجل القناع المقابل للبت في مسجل البيانات (ترميزيا تكون قيمته 1)،
والخانات (البتات) ذات غير موضع الاهتمام تُعطى القيمة صفر، أي أن القيم المقابلة لها في مسجل البيانات تُعامل على أنها من نوع
"مُهمَل" (don’t care)، بينما يقوم مسجل تضمين الكلمة (word select register) بتحديد الكلمات (words) التي سوف يتم تضمينها في
عملية البحث، أي سيتم البحث فيها دون غيرها من الكلمات الموجودة في الذاكرة. على هذا، سيقوم عتاد الذاكرة بالبحث في كلمات محددة
في الذاكرة وبالتحديد في المواضع (البتات) التي حددها مسجل القناع، وحينها إن تم العثور عن كلمة حققت شروط البحث سيقوم مسجل
النتائج (results register) بتمكين الخانات (البت) المقابلة للكلمة المحققة للشروط، أي ستكون البتات المقابلة لكل كلمة حققت شروط
البحث ستكون حاملة للقيمة واحد، والبتات الأخرى ستكون حاملة للقيمة صفر.
ولمزيد من التوضيح نأخذ المثال التالي والموضح في الشكل (بالأسفل).

سنوجز ما تشير إليه الأرقام داخل الدوائر في الشكل أعلاه حسب التالي:
1- البيانات المراد البحث عنها هي 0011.
2- يشير مسجل القناع (mask register) إلى أن أول خاناتان (بتان) من جهة اليسار لمسجل البيانات تمثل البيانات المراد البحث
عنها في الذاكرة الحاوية على 6 كلمات في مثالنا هذا.
3- الكلمات (words) المقابلة للخانات ذات القيمة واحد في مسجل تضمين الكلمة هي الكلمات التي ستكون موضع البحث، أي عتاد
الذاكرة سيبحث عن المطلوب في الكلمة 1 والكلمة 3 والكلمة 4 فقط.
4- مسجل النتائج (results register) يشير إلى أن الكلمة 1 والكلمة 4 هي فقط من تحوي بيانات مطابقة لما يُراد البحث عنه.
5- يقوم مُنتقي "التطابق المتعدد" (MMR) بإعادة تعيين النتائج حسب الشروط، بالتالي سيقوم باستبعاد الكلمة 4 في مثالنا.
6- تكون الكلمة 1 هي الاستجابة النهائية لما يُراد البحث عنه.
بقي أن نذكر أن هذا النوع من الذاكرة يُستخدم كثيرا في الأجهزة التي يتطلب انجاز عملياتها سرعة كبيرة في البحث والمقارنة، من أمثلة هذه الأجهزة
أجهزة الشبكات، كبعض أنواع الموجهات (routers)، والمحولات (switches).
ربما سيكون لنا حديث عن باقي الأنواع ..وللموضوع ككل بقية والعمل جار بإذن الله.
