تنظيم الذاكرة  •من وجهة نظر تصميمية للذاكرة الرئيسية هذه الذاكرة تكون عبارة عن ذاكرة متطايرة بمعنى أن المعلومات المخزنة ضمنها سوف تفقد بمجرد فصل مصدر الطاقة عنها وهذا ما دعا إلى تسميتها بالذاكرة المتطايرة.  •و على النقيض تماما فالهارد ديسك أو ما بعرف بالقرص الصلب يمكن التعبير عنه بأنه أحد أنواع الذاكرة والتي بالطبع لا تعتمد على تقنية إلكترونية وإنما تعتمد على تقنية مغناطيسية هذه الذاكرة هي من النوع غير المتطاير (أي لا تفقد معلوماتها عند فصل الطاقة عنها) وهذا ما دعا إلى بذل المزيد من الجهود في تطوير هذه الأنواع من الذواكر التي تكون قادرة على لعب دور الحافظة الأساسية للمعلومات وبالتالي الحول دون ضياع هذه المعلومات.  يوضح الشكل السابق البنية الهرمية للذاكرة وبالطبع فكل جزء من هذه البنية الهرمية مختلف عن الآخر بعدة عوامل من ناحية الحجم سواء الفيزيائي أو حتى المنطقي ومن ناحية السرعة وبالتالي تأثيره على عامل التكلفة.  تعتبر المسجلات الخاصة بالمعالج أحد أسرع أنواع الذواكر (إن صح أن نطلق عليها اسم ذواكر) ولكن بالمقابل تعتبر وحدة التخزين الأصغر حجماً في الحاسب.  الجزئية التالية التي سوف نتحدث عنها تتناول موضوع الذاكرة الستاتيكية (أو ما يعرف بالكاش)هذه التقنية تُستخدم لتصميم ذاكرة سريعة ولكن ذات سعة صغيرة من أجل تسريع عمل ذاكرة بطيئة (بالمقارنة معها) وذات سعة كبيرة (الذاكرة الرئيسية).  و من الجدير بالذكر أنه عند استخدام نظام الـ Cache، فإنه يجب علينا فحص الـ Cache لرؤية فيما إذا كان العنصر المطلوب موجوداً فيها، فإن وُجد، عندئذ نسمي هذه الحالة (Cache Hit) وإن لم يوجد، فإننا نسمي هذه الحالة (Cache Miss) وعلى الحاسب في هذه الحالة طلب العنصر من الذاكرة البطيئة ذات السعة الكبيرة والانتظار لحين جلب هذا العنصر.  النقطة الثالثة التي سنتحدث عنها هي ذاكرة ال RAM هذا الاسم مشتق من Random Access Memory ولربما أن أفضل شرح لهذا المسمى هو الذاكرة التي يمكن الولوج إليها بشكل غير منظم. لشرح كلمة غير منظم يجب أن نشرح كيف يتم تخزين المعلومة في الذاكرة.  الذاكرة مقسمة إلى خانات وتسمى صفحات. كل صفحة لها عنوانها الخاص. عند الاحتياج إلى أي معلومة مخزنة في الذاكرة فانه يتم الولوج إليها مباشرة من خلال عنوانها الخاص بها? عند عدم وجود عنوان خاص لكل صفحة، فانه لإيجاد المعلومة يجب البحث بكل الصفحات لغاية العثور على المعلومة المطلوبة. هذا البحث يتم بطريقة منظمة أي البحث بأول خانة ومن ثم الثانية والثالثة وهلم جرا.  بهذا نكون قد سلطنا ضوءاً بسيطاً على أنواع الذواكر أما الآن فسننتقل إلى الحديث عن موضوعنا والذي يتناول مسألة هامة وهامة جداً ألا وهي تنظيم الذاكرة.  تنظم المعلومات في الذاكرة كما في وحدات الحاسب الأخرى على شكل كلمات ويكون طول الكلمة بشكل عام ثابتاً من أجل حاسب محدد (و المقصود بطول الكلمة هو عدد البتات المكونة لها) وتتراوح أطوال كلمات الحاسبات المختلفة بين 8 و 64 وتستطيع الكلمة أن تخزن إما معلومات عددية وإما تعليمة من تعليمات الحاسب.  هذا وتنظم الذاكرة على شكل سلسلة طويلة من «المواقع» يتميز كل عنوان منها «بعنوان» ويتسع لعدد بطول محدد ويعبر عن العناوين بأعداد متسلسلة تبدأ من الصفر حتى ترتيب آخر موقع ويستخدم هذا العنوان كمؤشر إلى الموقع الذي ستخزن فيه المعلومات أو ستسترجع منه.  يمكن باستخدام العنوان المناسب تخزين المعلومات في الموقع الذي نريد ولاسترجاع هذه المعلومات عند لزومها يجب استخدام نفس العنوان لتحديد موقعها.  لتخزين أو كتابة المعلومات في موقع ما من الذاكرة يجب أن نزود وحدة الذاكرة بعنوان الموقع المطلوب وبالمعلومات التي نريد تخزينها في هذا الموقع، أما لاسترجاع المعلومات أو قراءتها من الذاكرة فنزود وحدة الذاكرة بعنوان الموقع وتقوم عندئذ وحدة الذاكرة بتزويدنا بمحتويات هذا الموقع.  يبين الشكل (2) مخططاً صندوقياً لبنية وحدة الذاكرة. لتخزين المعلومات يسجل عنوان الموقع (حيث نريد تخزين المعلومات) في سجل عناوين الذاكرة (MAR Memory Address Register) أما المعلومات التي نريد تخزينها فتسجل في مسجل الحجز المؤقت لمعطيات الذاكرة (MBR Memory Buffer Register) وعندما تعطى وحدة الذاكرة أمر الخزن على خط التحكم المناسب تنقل المعلومات الموجودة في MBR إلى الموقع المناسب أي:  طبعاً تتطلب عملية التخزين بعض الوقت لذلك تقوم وحدة الذاكرة بعد إتمام عملية التخزين بتوليد إشارة انتهاء العملية لتخبر بذلك بقية وحدات الحاسب أنها جاهزة للعملية التالية إن وجدت. بالمثل يتم استرجاع المعلومات من موقع ما بتسجيل عنوان هذا الموقع في المسجل MAR وترسل إلى وحدة الذاكرة إشارة أمر القراءة على خط التحكم الموافق وبعد فترة من الزمن تنقل محتويات الموقع المحدد إلى المسجل MBR وتولد وحدة الذاكرة إشارة انتهاء العملية لنعلم بذلك أنه أصبح بالإمكان استخدام محتويات المسجل MBR وتكتب ذلك رمزياً بالشكل: </div> يستطيع برنامج الحاسب تحديد المعلومات المطلوبة والوصول إليها باستخدام عنوان الموقع المخزنة فيه هذه المعلومات.  تنظم الذاكرة كما ذكرنا سابقاً على شكل مواقع متتالية وتظهر هذه المواقع على الشكل 2 على شكل خطوط أفقية ويستطيع كل موقع تخزين كلمة واحدة أي عدداً من البتات ويمكن رؤية هذه البتات على الشكل 2 على شكل خطوط شاقولية عند كل نقطة تقاطع خط شاقولي مع خط أفقي يوجد عنصر تخزين من النمط في الشكل 3.  عندما نريد كتابة معلومات في موقع محدد من الذاكرة أو قراءتها منه ينتقل عنوان الموقع المحدد إلى المسجل MAR لينتقل منه بعد ذلك إلى مفكك ترميز (ناخب) والذي يقوم عندئذ بانتخاب خط العنوان المناسب (إذا كان العنوان مؤلفاً من n بت يكون عدد خطوط العنونة الكلي هو 2 أس n) وبانتخاب هذا الخط تفعل كل عناصر التخزين الموجودة على هذا الخط.  أثناء تعليمة الكتابة تسجل المعلومات المطلوب تخزينها في مسجل معطيات الذاكرة MDR (Memory Data Register) وينقل كل خط من خطوط البتات (الخطوط الشاقولية على الشكل 2) بناً واحداً من المسجل MDR وذلك عبر المسجل MBR ومن بين كل عناصر التخزين الموجودة على خطوط البتات تستطيع تلك الموجودة على خط العنوان المنتخب أن تتلقى المعلومات وتسجلها وبالتالي تتلقى كل العناصر الموجودة على خط العنوان بتات المسجل MBR أي كلمة المعطيات المطلوب تخزينها وبذلك يصبح هذا الموقع حاوياً على المعلومات المطلوبة.  أم أثناء القراءة فتقوم عناصر التخزين الموجودة على خط العنوان المنتخب بإرسال قيم محتوياتها على خطوط البتات لتسجل عندها في مسجل معطيات الذاكرة MDR.  في المخطط السابق يجب أن يكون عدد خطوط العنونة بعدد مواقع الذاكرة الموجودة، يمكن تبسيط هذا المخطط بتنظيم خطوط العنونة على شكل مصفوفة ثنائية البعد كما في الشكل (4) ولتبسيط الشكل سنأخذ خطاً واحداً فقط من خطوط البتات الظاهرة على الشكل (2). يصبح عندها الموقع معرفاً بعنوانين: العنوان الأفقي X والعنوان الشاقولي Y ويلزم لهذا المخطط استخدام ناخبين كل منهما بطول n/2 بت يقوم كل مفكك ترميز (ناخب) بانتخاب خط عنونة محدد مما يؤدي إلى تفعيل الموقع الذي يقع عند تقاطع الخطين x و y.  أثناء تخزين المعلومات يكون خرج مسجل معطيات الذاكرة (و تحديداً البت المعينة) متاحاً للقراءة من قبل كل عناصر المصفوفة لكن العنصر الوحيد الذي يستطيع استقبال القيمة وتخزينها هو العنصر الموجود في الموقع المنتخب. كذلك الأمر أثناء استرجاع المعلومات أو قراءتها من الذاكرة، يستطيع عنصر الموقع المنتخب فقط أن يرسل محتوياته على الخط المناسب لتسجل في حامل البت الموافقة من مسجل معطيات الذاكرة. وبكلمات أخرى تتم العملية بأسلوب مشابه للأسلوب الموصوف في الشكل (2).  يقتصر التشكيل المبين في الشكل (4) على بت واحدة فقط من بتات كلمة الموقع، لذا يجب تكرار التشكيل نفسه بالنسبة لكل بت من بتات الكلمة (مع ملاحظة أن مفككي الترميز (الناخبين) والدارات الموافقة يجب أن تكون مشتركة من أجل كل البتات) ويمكن أن نتخيل تنضيداً لمستويات متراكبة لنحصل على بنية ثلاثية الأبعاد.  يمكن أن نلحظ بوضوح اقتصادية هذا التصميم ثنائي البعد ففي التصميم السابق المبين في الشكل (2) نحتاج إلى 2 أس n خط عنونة لتمييز 2 أس n موقع ذاكرة، أما في التصميم ثنائي البعد فتقسم بتات العنوان وعددها n إلى قسمين منفصلين X و Y ويمكن عندئذ انتخاب موقع من بين 2 أس n موقع باستخدام خطوط العنوان في كلا الاتجاهين ويلزم لذلك 2 أس n/2 أو 2 أس n/2 +1 خط عنونة فقط. فإذا كنا نريد استخدام ذاكرة تتسع ل 1024 كلمة يلزمنا فقط 32 خط في كل اتجاه (أي 64 خط) بينما يحتاج التصميم السابق ل 1024 خط عنونة.  وعند الحديث عن إدارة الذاكرة فإننا نقصد ذاكرة القراءة والكتابة-الذاكرة الرئيسية RAM تتكون الذاكرة الرئيسية من مجموعة من الخلايا الثنائية موزعة بطريقة تشبه المصفوفة حيث يحدد عدد الخلايا في السطر الأول طول الكلمة ويحمل كل عنوان (رقم) فريد لا يتكرر تستطيع من خلاله وحدة المعالجة تحديد الكلمة المطلوبة في الذاكرة ويقاس حجم الذاكرة عادة بمجموع الخلايا الثنائية المتوفرة ويعتبر حجم الذاكرة عاملاً أساسياً في قياس كفاءة أداء الحاسوب فكلما زاد حجم الذاكرة زادت القدرة على استيعاب أعمال وبرامج بأحجام كبيرة كما أن طريقة إدارة خلايا الذاكرة وكيفية حجزها تؤثر على أداء الحاسوب.  تتنوع طرق إدارة الذاكرة بتنوع الحواسيب من حيث سعة الذاكرة وقوة وكفاءة برمجيات إدارة الذاكرة وتتوفر عدة طرق لإدارة الذاكرة:  وبغض النظر عن الطريقة المستخدمة في إدارة الذاكرة فإن المطلوب منها تنفيذ المهام التالية:  للاستفادة من الأجزاء الحرة المتوفرة في الذاكرة ولتحميل أعمال أخرى ولزيادة درجة تعدد البرامج والتقليل من الفراغات ما أمكن تستخدم إدارة الذاكرة بالضغط (compression) أو ما يسمى بإعادة توزيع المواقع وتتلخص فكرة هذه الإدارة في أنه قبل تنفيذ العمل يحمل هذا العمل إلى الذاكرة إذا توفر جزء يستوعب هذا العمل أما إذا لم يتوفر جزء حر فيتم حساب مجموع المساحات الحرة فاذا كان حجمها أكبر أو يساوي حجم العمل يتم تجميع الفراغات وذلك بضغط الذاكرة لإنتاج منطقة حرة واحدة تستطيع استيعاب العمل المراد تنفيذه.  لاحظ أن العمل الثاني تمت إزاحته بمقدار x للأعلى وأن العمل الثالث تمت إزاحته بمقدار y للأعلى وعادة ما تكون الإزاحة صفر أو مقدار سالب.  عند إزاحة العمل في الذاكرة تبقى محتويات البرنامج ثابتة أي أن تعليمات البرنامج لا تتغير بحيث تبقى العناوين التي تتعامل معها التعليمات كما كانت قبل عملية الضغط وتسمى هذه العناوين:العناوين المنطقية أو الافتراضية (Virtual or Logic address) أما العناوين الفيزيائية Physical adress فقد اختلفت وذلك لحدوث التغيير على مواقع هذه الأعمال بعد تنفيذ عملية الضغط لذا لابد من تخصيص مسجل خاص لكل عمل يسمى مسجل إعادة ترتيب المواقع (Relocation Register) يخزن فيه مقدار الإزاحة للعمل والجدير بالملاحظة أن عملية ترجمة العناوين المنطقية إلى فيزيائية يتم عبر وحدة تسمى وحدة إدارة الذاكرة(MMU).  وبهذا فإن عملية تنفيذ الأمر (التعليمة) في العمل تتطلب باستمرار حساب العنوان الفيزيائي كما في الشكل التالي:  نلاحظ أن العنوان الخارج من CPU وهو العنوان المنطقي يتم جمعه مع العنوان الموجود في مسجل الإزاحة لينتج لدينا العنوان الفيزيائي الذي تتعامل معه الذاكرة.  تتطلب إدارة الذاكرة بإعادة ترتيب المواقع مجموعة من المعدات ممثلة في مسجلات الحماية ومسجلات إعادة ترتيب المواقع وجدول بالمساحات الحرة حتى تتم متابعة الذاكرة بالصورة الصحيحة. يبين الشكل التالي مخطط سير العمليات اللازم لتوطين عمل في الذاكرة بإعادة ترتيب المواقع.  من محاسن هذه الطريقة إمكانية تنفيذ عملية الضغط والتي يؤدي تنفيذها يؤدي التقليل من الفراغات ما أمكن وبالتالي زيادة درجة تعدد البرامج ومحاولة تجميعها للاستفادة منها لتحميل عمل آخر.  أما من مساوئ هذه الطريقة فهي الحاجة إلى توفر مسجلات خاصة وبالتالي استغلال مواقع في الذاكرة لحفظ قيم الإزاحة بالإضافة إلى هدر وقت المعالجة المركزية في تنفيذ عملية الضغط واحتساب قيم الإزاحة لكل عمل واحتساب العنوان الفيزيائي عند تنفيذ كل تعليمة من تعليمات العمل.