Navigation

شرح المعالج 8086: تنظيم ذاكرة المعالج 8086 cpu memory

يمكن أن يعنون المعالج ذاكرة يصل حجمها إلى 1,048,576 بايت ( 1 ميغابايت( نُظمت ذاكرة المعالج كمصفوفة من البايتات، يأخذ البايت الأول العنوان 00000 h والثاني 00001 h والأخير FFFFFh كما في الصورة التالية

memory_cpu

في التدوينات الماضية بعض تاريخ عائلات المعالجات CPU – computer interface ثم تحدثنا عن معالجات 4CISC و معالجات RISC وذكرنا الفرق بين معالجات 4CISC و معالجات RISC ومبدأ المعالجة التواردية 


واليوم ناخذ تنظيم ذاكرة المعالج 8086 

يمكن أن يعنون المعالج ذاكرة يصل حجمها إلى 1,048,576 بايت ( 1 ميغابايت( نُظمت ذاكرة المعالج كمصفوفة من البايتات، يأخذ البايت الأول العنوان 00000 h والثاني 00001 h والأخير FFFFFh كما في الصورة التالية 

memory_cpu


يمكن أن يُشكل أي بايتين متتالين في الذاكرة كلمة بطول 2 بايت. يمكن أن تقع التعليمات والمعطيات بطول بايت أو بايتين في أي مكان في الذاكرة. حين يكون عنوان البايت الأقل دلالة أو وزنًا لكلمة المعطيات زوجيًا نقول أن الكلمة تقع في الذاكرة على نحو متحاذٍ alignment أما حين يكون عنوان البايت الأقل دلالة لكلمة معطيات فرديًا نقول أن الكلمة تقع في الذاكرة على نحو غير متحاذٍ unaligned .

مثال:
لتخزين الكلمة 5502H ضمن موقعين متتاليين، عنوان الموقع الأول 00724H  والثاني 00725H  يتم تخزين البايت الأقلُ دلالةً 02H في الموقع 00724H والبايت الأكثر دلالة 55H في الموقع 00725H ,

addressing


يعتبر التخزين السابق على نحو متحاذٍ لأنه جرى تخزين البايت الأقل دلالة في موقع زوجي. تُخزن، المعالِجات الصغرية لشركة Intel كلمة من 2 بايت في الذاكرة، البايت الأقل دلالة أولا ثم يليها البايت الأكثر دلالة، وتسمى طريقة التخزين هذه بـ little-endian ، بينما تُستخدم طريقة large- endian مثلا في المعالِجات الصغريةِ لشركةِ Motorola حيث تخزين هذه المعالجات البايت الأكثر دلالة أو ً لا ُثم يليها البايت الأقل دلالة. 

المقتطعات Segments  :
جرى تقسيم فضاء ذاكرة المعالج 8086/ 8088 إلى مقتطعات طول كل منها كيلوبايت يُسند لكل مقتطع عنوان قاعدي Base Address يُشير إلى عنوان أول بايت من المقتطع. يمكن أن تكون هذه المقتطعات منفصلة تمامًا أو متداخلة جزئيًا أو كليًا. 
يُخزن العنوان القاعدي في أحد سجلات المقتطعات الأربعة ES ،DS ،CS و SS ، وبذلك يستطيع المعالج عنونة أربع مقتطعات بآن واحد. عندما تكون هذه المقتطعات منفصلة كليًا يُمكن للمعالج أن يُعنون 256 كيلوبايت بآن واحد ويُمكن، بتغيير محتوى سجلات المقتطعات، عنونة كامل فضاء ذاكرة المعالج الذي يساوي 1 ميغابايت.

يحوي المقتطع الذي يُشير إليه السجل CS تعليمات أو كود البرنامج، أما المقتطع الذي يُشير إليه DS والمقتطع الذي يُشير إليه ES فهما لتخزين المعطيات، ويخصص المقتطع الذي يشير إليه SS لعمل المكدس Stack .

تبين الصورة التالية مثالا عن المقتطعات الأربعة المحددة بالسجلات DS ،SS ،CS و ES وكما هو واضح من الصورة فإنه لا يوجد في هذا المثال أي تقاطع بين المقتطعات الأربعة. 

Segments


توليد العنوان الفيزيائي من المفيد التفكير بأن لكل موقع في الذاكرة عنوانين: عنوان فيزيائي (أو حقيقي) وعنوان منطقي. العنوان الفيزيائي هو قيمة من 20 بتًا، تُعنون وبشكل وحيد موقعًا محددًا من الذاكرة.

يمكن أن تقع قيمة العنوان الفيزيائي في المجال من 00000h إلى FFFFFh يجري استخدام العنوان الفيزيائي في جميع التبادلات بين المعالج والذاكرة، ويجري حسابه انطلاقًا من العنوان المنطقي. لا يتعامل برنامج المعالج إلا مع العناوين المنطقية، ويتكون كل عنوان منطقي من: محتوى أحد سجلات المقتطعات (الذي يحدد بداية مقتطع معين من الذاكرة) وقيمة الانزياح offset عن بداية المقتطع.
إن محتوى كل من سجلات المقتطعات وسجلات الانزياح هي قيم من 16 بت بلا إشارة unsigned نكتب العنوان المنطقي على الشكل .segment:offset 

عندما تحتاج وحدة التواجه مع المسرى الوصول إلى تعليمة أو معطيات في الذاكرة فإنها تولد العنوان الفيزيائي من العنوان المنطقي. تحسب وحدة التنفيذ العنوان المنطقي بطرق مختلفة، كما سنبين ذلك عند شرح أنماط العنونة، وتزود به وحدة التواجه.
لحساب العنوان الفيزيائي نزيح أولا محتوى سجل المقتطع أربع بتات يسارًا(والذي يكافئ ضربه ب 16) ، ثم يُجمع للناتج قيمة الانزياح.

تُبين الصورة التالية كيف يجري حساب العنوان الفيزيائي بفرض أن سجل المقتطع يحوي 1234h وقيمة الانزياح هي 0022h .

physical address

مثال:
إذا كان السجل CS يحتوي القيمة 07 A0h والسجل IP يحتوي القيمة 0100 h فإن العنوان الفيزيائي للتعليمة في هذه الحالة يساوي 07A00h + 0100h = 07B00h 
لاحظ أنه يمكن لأكثر من عنوان منطقي أن يشير إلى العنوان الفيزيائي نفسه.

مثال:
العنوان الفيزيائي 07 B00h يساوي 97A0:0100 ويساوي ايضاً 0000:  07B0 
توضح الصورة التالية العنوان الفيزيائي لبداية ولنهاية كل من المقتطعات الأربعة عندما ES=52B و 8 SS=5D27 ،DE=E000h ،CS=B3FFh وكما هو بيِّن في الصورة فإنه يوجد تقاطع بين مقتطع المكدس ومقتطع المعطيات الإضافي. 

physical address

اختبار ذاتي: كيف نحسب بداية ونهاية مقتطع ما؟ 
الجواب: إن العنوان الفيزيائي لبداية المقتطع DS في المثال السابق هو العنوان الفيزيائي المُعطى بالعنوان المنطقي E000:0000h والذي يساوي E0000h ، وبما أن طول أي مقتطع يساوي 64 كيلوبايت فإن العنوان الفيزيائي لنهاية المقتطع DS يعطى بالعنوان المنطقي E000:FFFFh والذي يساوي EFFFFh .

مواقع ذاكرة محجوزة
جرى حجز المجال العلوي والسفلي من فضاء ذاكرة المعالج 8086/ 8088 لتحقيق وظائف محددة في المعالج أو من قبل الشركة المصنعة للتطوير المستقبلي، وهذه المواقع تقع ضمن المجالين   00000 h-0007Fh و FFFF0-FFFFFh    .

memory 8088

تغيير موضع البرنامج ديناميكيًا Dynamic Relocatable Code 
تسمح طريقة العنونة المنطقية للذاكرة، في المعالج 8086/ 8088 ، بتحريك كامل البرنامج، ككتلة واحدة، إلى أي مكان في الذاكرة دون الحاجة إلى ضرورة إجراء تعديلات على البرنامج أو على المعطيات. إن كل ما نحتاجه لإجراء عملية التحريك هو فقط تغيير محتوى سجلات المقتطعات، فمثلا إذا كان لدينا تعليمة تقع بعد 4 بايتات من بداية مقتطع البرنامج، أي قيمة الانزياح تساوي 4، فإن تحريك البرنامج إلى أي مكان في الذاكرة يُبقى انزياح التعليمة عن بداية مقتطع البرنامج. يساوي أيضًا 4 تعطي هذه الإمكانية نظم التشغيل في الحواسيب الشخصية ديناميكية لإدارة موارد الذاكرة على نحو فعال، وذلك بوضع البرنامج مع معطياته في أي مكان متاح من الذاكرة. 


المكدس stack 
يُستخدم المكدس Stack في المعالجات لتخزين المعطيات والعناوين مؤقتًا عند تنفيذ البرامج الفرعية، كما يُستخدم لتمرير معطيات من البرنامج الرئيس إلى البرامج الفرعية. يجري، في المعالج 8088/ 8086 ، حجز حيز من ذاكرة المعالج لعمل المكدس.
 يحوي السجل SS على العنوان القاعدي للمكدس بينما يؤشر السجل SP إلى قمة المكدس (أي إلى الموقع في المكدس الذي خُزن فيه آخر بايت)، وبالتالي يحتوي SP انزياح قمة المكدس عن بداية مقتطع المكدس. تستطيع التعليمات التي تتعامل مع المكدس تخزين أو قراءة كلمة واحدة في وقت واحد، لا يمكن تخزين أو قراءة بايت واحد. يمكن دفع (كتابة) كلمة في المكدس باستخدام تعليمة PUSH ، عندها يجري تخزين البايت الأكثر دلالة للكلمة في الموقع الذي يعنونه SP-1 والبايت الأقل دلالة في الموقع الذي يعنونه SP-2 ثُم يجري إنقاص SP بمقدار2 .

ويمكن سحب (نسخ) كلمة من المكدس باستخدام التعليمة POP ، عندها تُنسخ الكلمة الموجودة في قمة المكدس، يجري نسخ البايت الأقل دلالة من الموقع الذي يعنونه SP والبايت الأكثر دلالة من الموقع الذي يؤشر إليه SP-1 ثم يجري زيادة SP بمقدار 2.


بوابات دخل/خرج I/O gate  
تُستخدم البوابات لتبادل المعطيات بين التجهيزات الخارجية والمعالج يُمكن أن تقع عناوين البوابات في المعالج 8086/8088 إما ضمن فضاء مستقل لعنونة بوابات دخل/خرج I/O أو يمكن أن تكون جزءاً من فضاء عنونة ذاكرة المعالج. 

فضاء عنونة البوابات
يمكن أن يُعنوِن فضاء بوابات الدخل/الخرج إما 64 كيلو (عندما نذكر حجم ذاكرة أو بوابات فإن الكيلو يساوي 1024 وليس 1000) بوابة دخل/خرج طول كل منها 8 بت، 

o/i gate


وبالتالي فإننا نحتاج فقط إلى 16 خط عنونة لعنونة كامل فضاء بوابات الدخل/الخرج.

تسمح التعليمتان IN و OUT بتبادل المعطيات بين المراكم (AL للعمليات على بايت و AX للعمليات على 2 بايت(وبوابة تقع ضمن فضاء عنونة بوابات المعالج.

لا يُستخدم فضاء بوابات الدخل/خرج نظام المقتطعات، المُستخدم في عنونة الذاكرة، للوصول إلى البوابات
. وبالتالي تضع وحدة التواجه مع المسرى الخارجي العنوان الفيزيائي للبوابة ) المكون من 16 بت) مباشرة على الخطوط الست عشرة الأولى من خطوط العنونة.

جرى حجز البوابات التي تقع عناوينها بين 00 F8H 00 ، FFH من قبل الشركة المصنعة، لأهداف التطوير المستقبلية. 

memory cpu

عنونة البوابات كجزء من فضاء الذاكرة
إذا كان تصرف واستجابة بوابات الدخل/الخرج يُماثل تصرف واستجابة ذواكر المعالج فيمكن أن نجعل البوابات تحتل جزءا من فضاء الذاكرة. يمكننا في هذه الحالة الاستفادة من كامل إمكانات تعليمات المعالج. على سبيل المثال، يمكننا استخدام تعليمة MOV لتبادل معطيات مع بوابات تقع ضمن فضاء الذاكرة. تستفيد البوابات الواقعة ضمن فضاء الذاكرة أيضًا من أنماط عنونة الذاكرة المتنوعة، كما يمكننا في هذه الحالة عنونة أكثر من 64 كيلو بوابة.


نكتفي بهذا ونلتقي في التدوين القادم والذي سيكون تحت انماط العنونة في المعالج


عزيزنا الزائر إن كانت هذه اول زيارة لك لمدونتنا لا تنسى الاشتراك فيها عبر بريدك الالكتروني ليصلك كل جديد او قم بالإعجاب بصفحتنا على الفيس بوك في يسار الصفحة ....


مشاركة

أضف تعليق:

1 comments:

  1. احتاج شخص فاهم بيعلمني كيف اقوم بتوسعه الذاكره مليت وبون اي فائده

    ردحذف