تصميم وحدة المعالجة المركزية Processing Unit Design

أن أهم المكونات الرئيسية لأي حاسب هي وحدة المعالجة المركزية CPU والوظيفة الرئيسية لها تكمن في تنفيذ مجموعة التعليمات المخزنة في ذاكرة الحاسب .
أساسيات وحدة المعالجة المركزية CPU BASICS
تتألف وحدة المعالجة المركزية من ثلاث مكونات رئيسية هي:
1. مجموعة المسجلات
2. وحدة الحساب والمنطق ALU
3. وحدة التحكم CU
تخنلف مجموعة المسجلات من حاسب حاسب لاخر وذلك حسب بنيته . حيث تضم مجموعة مسجلات الأغراض العامة ومجموعة مسجلات الأغراض الخاصة .وتستخدم مجموعة مسجلات الأغراض العامة لأي غرض ما بينما مجموعة مسجلات الأغراض الخاصة يكون لها وظيفة محددة .على سبيل المثال عداد البرنامج PC هو مسجل أغراض خاصة يستخدم من أجل الأحتفاظ بعنوان التعليمة التي سيتم تنفيذها لاحقا بينما المسجل IR يحتفظ بالتعليمة الحالية التي يتم تنفيذها حالياً .
وحدة الحساب و المنطق ALU تزود الدارات اللازمة من أجل تنفيذ العمليات الحسابية والمنطقية و عمليات الإزاحة الموجودة في مجموعة التعليمات
  وحدة التحكم CU مسؤولة عن جلب التعليمة من الذاكرة الرئيسية وفك شيفرتها وتنفيذها .
الشكل 5.1 يبين المكونات الرئيسية لوحدة المعالجة المركزية CPU والعلاقة بين نظام الذاكرة و أجهزة الدخل والخرج I/O .

تقوم وحدة المعالجة المركزية بجلب التعليمات من الذاكرة و قراءة التعليمات من الذاكرة و كتابتها فيها و نقل البيانات من وإلى أجهزة الدخل والخرج . يمكن تنفيذ دورة التعليمة بشكل مبسط ومثالي كما يلي :
1. جلب التعليمة التي سيتم تنفيذها من الذاكرة و التي عنوانها مخزن في المسجل PC و تخزينها في المسجل IR .
2. فك شيفرة التعليمة .
3. جلب المتحولات من الذاكرة و تخزينها في مسجلات ال CPU .
4. تنفيذ التعليمة .
5. نقل النتائج من مسجلات ال CPU إلى الذاكرة .

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

تصحيح الحالة التي أدت إلى المقاطعة وإعادة تخزين الحالة في البرنامج :
إن الأعمال التي تقوم بها وحدة المعالجة المركزية خلا تنفيذها لدورة التعليمة تعرف باسم العمليات الميكروية وهذه العمليات مصدرها لوحة التحكم CU . هذه العمليات الميكروية توزع إشارات التحكم على خطوط تحكم محددة . على سبيل المثال دعنا نفترض أننا نريد تنفيذ تعليمة تقوم بنقل محتويات المسجل X إلى المسجل Y ولنفرض أيضاً ان كلا المسحلين متصلين مع ممر المعطيات D عندها ستطلب وحدة التحكم إشارات تحكم لاخبار المسجل X بوضع محتوياته على ممر المعطيات D و بعد فترة تأخير معينة فإن إشارة تحكم أخرى سوف ترسل لاخبار المسجل Y بالقراءة من ممر المعطيات D . تفعيل اشارات التحكم يحدد إما باستخدام البرمجة الميكروية microprogramming أو باستخدام hardwired control .وهذه الأفكار سوف نتطرق لشرحها لاحقاً إن شاء الله ،وسنشرح أيضاً مجموعة المسجلات ووظائفها المختلفة وما المقصود من ممر المعطيات وممر التحكم ودورة التعليمة لوحدة المعالجة المركزية CPU و أخيراً سوف نشرح :

وحدة التحكم CU
مجموعة المسجلات REGISTER SET :
المسجلات عبارة عن مواقع ذاكرية سريعة جداً ضمن وحدة المعالجة المركزية تستعمل لتوليد وتخزين نتائج عمليات وحدة المعالجة المركزية والحسابات الأخرى . تختلف الحواسيب عن بعضها بالمسجلات من حيث عدد المسجلات و انواعها و طول كل مسجل وتختلف أيضاً في استعمال كل مسجل .

-مسجلات الأغراض العامة  : تستخدم لأغراض خاصة متعددة ويتم تخصيصها لوظائف مختلفة من قبل المبرمج .

- مسجلات الأغراض الخاصة : وهذه المسجلات مخصصة لوظائف محددة ، في بعض الحالات بعض المسجلات تستخدم فقط من أجل حفظ المعلومات ، وكلما كان طول المسجل أكبر كلما كان ذلك أفضل - مسجلات العنونة  : يمكن استخدامها لنمط عنونة معين أو يمنك استخدامها لعنونة عامة الأغراض .

والجدير بالذكر عدد المسجلات في بنية ما يؤثر على تصميم مجموعة التعليمات فعندما يكون عدد المسجلات قليل سيؤدي ذلك إلى زيادة الإشارات المرسلة إلى الذاكرة ، حيث تستخدم بعض المسجلات لحفظ بتات حالة المعالجة أو الأعلام ، هذه البتات ترسل من ال CPU كنتيجة لتنفيذ تعليمة ما . بتات الحالة يمكن اختبارها في فترة أطول بالمقارنة مع عمليات أخرى .

Memory Access Registers مسجلات الولوج إلى الذاكرة :
هناك مسجلين أساسيين من أحل عمليات القراءة من الذاكرة والكتابة فيها هما MDR (memory data register ) و MAR ( memory address register ) .المسجلات MDR ، MAR تستعمل بشكل خاص من قبل وجدة المعالجة المركزية ولا يمكن الوصول إليهما من قبل المبرمج .

من أجل تمثيل عملية كتابة في موقع محدد في الذاكرة سوف تستخدم المسجلين MDR و MAR كما يلي :

1. تخزين الكلمة في المسحل MDR ويتم ذلك بواسطة ال CPU
2. تخزين الموقع الذي سبخزن فيه الكلمة في المسحل MAR ويتم ذلك بواسطة ال CPU أيضاً .
3. يتم طلب إشارة كتابة من ال CPU .
  وبشكل مشابه من اجل تمثيل عملية القراءة من الذاكرة فإن استخدام المسجلين MDR و MAR يكون كالتالي:
1. تخزين الموقع الذاكري الذي سنقرأ منه المعطيات في المسجل MAR
2. طلب إشارة قراءة من الذاكرة
3. تخزين الكلمة المطلوبة من الذاكرة في المسجل MDR حيث تصبح جاهزة للاستخدام من قبل وحدة المعالجة المركزية CPU .
مسجلات جلب التعليمة Instruction Fetching Registers
يوجد لدينا مسجلين أساسيين هما مسجل عداد البرنامج PC و مسجل التعليمة IR
  المسجل PC يحتوي على عنوان التعليمة التالية التي سيتم جلبها .
  التعليمة المجلوبة يتم تخزينها في المسجل IR من أحل تنفيذها .
بعد جلب التعليمة بنجاج يتم تحديث محتويات المسجل PC ليشير إلى التعليمة التالية التي سيتم تنفيذها .
المسجلات الشرطية condition registers
المسجلات الشرطية أو الأعلام تستخدم لتحديد حالة المعلومات ، بعض البنى تحتوي على مسجلات خاصة لحالة كلمة البرنامج PSW (program status word register ) حيث يحتوي ال PSW على بتات يتم وضعها من قبل وحدة المعالجة المركزية CPU لتحديد الحالة الأنية من تنفيذ البرنامج . هذه المؤشرات تستخدم بشكل مثالي في العمليات الحسابية والمقاطعات وحماية معلومات الذاكرة و حالة المعالج
مسجلات عنونةالأغراض الخاصة special -purpose address registers
مسجلات فهرسة index register
في العنونة المفهرسة العنوان لمتحول ما يتم الحصول عليه بإضافة ثابت ما لمحتويات مسجل المفهرسة،حيث يحتفظ مسجل الفهرسة بعنوان الإزاحة . العنونة المفهرسة يشار إليها في التعليمة من خلال وضع مسجل الفهرسة ما بين اقواس هلالية واستخدام الرمز x للاشارة إلى الثابت الذي ستم اضافته .
مؤشر المقطع segment pointers
عندما يتم طلب عنوان من المعالج ينبغي أن يتألف من رقم المقطع (القاعدة ( ومن الإزاحة . مسجل المقطع يحتفظ بعنوان القاعدة ( الأساس ( لهذا المقطع

 مؤشر المكدس stack pointer :
المكدس هومنطقة تخزين للمعطيات بحيث أن المعطيات التي توضع أخيراً فيها يتم إخراجها أولا ، وهناك عمليتين يمكن تمثيلهما في المكدس PUSH ، POP ويوجد مسجل خاص يسمى SP يستخدم لتحديد موقع المكدس الذي يمكن عنونته . في عملية PUSH قيمة SP تستخدم للإشارة إلى الموقع (قمة المكدس ) حيث أنه بعد دفع قيمة إلى المكدس فإن قيمة SP سوف تزداد . و تتناقص قيمة SP أثناء نمو المكدس.

ممر المعطيات DATAPATH :
يمكن تقسيم وحدة المعالجة المركزية إلى قسمين:قسم المعطيات وقسم التحكم
  قسم المعطيات يسمى أيضاً ممر المعطيات datapath و يتألف من المسجلات و ALU ويستخدم لتمثيل بعض العمليات على المعطيات
  قسم التحكم وهو بشكل أساسي وحدة التحكم CU والذي يرسل الإشارات إلى ممر المعطيات الداخلي حيث يتم نقل البيانات من مسجل لآخر وبين ال ALU والمسجلات داخل وحدة المعالجة المركزية CPU .
نقل البيانات الداخلي يتم تمثيله بالممر المحلي و الذي يحمل المعلومات و التعليمات والعناوين . خارجياً يتم نقل المعطيات من المسجلات إلى الذاكرة و أجهزة الدخل و الخرج I/O بواسطة ممر النظام نقل البيانات الداخلي بين المسجلات و بين ال ALU و المسجلات يمكن أن يستخدم عدة بنى مختلفة تتضمن : بنية بممر واحد - ممرين - ثلاث ممرات و إن تخصيص ممر المعطيات يستخدم أيضاً بين المكونات التي يتم نقل البيانات من خلالها فعلى سبيل المثال يتم نقل محتويات المسجل PC إلى المسجل MAR من اجل جلب تعليمة جديدة في بداية كل دورة تعليمة .لذلك يكون تخصيص ممر المعطيات من المسجل PC إلى المسجل MAR مفيدا في سرعة تنفيذ هذه التعليمة.

بنية بممر واحد One-Bus Organization :
عند استخدام ممر واحد فإن مسجلات وحدة المعالجة المركزية CPU و وحدة الحساب والمنطق ALU سوف تستخدم ممر وحيد لنقل البيانات الداخلة والناتجة . في هذه الحالة الممر يقوم بعملية واحدة لنقل البيانات في دورة ساعة واحدة و نتيجة لذلك العمليات بمتحولين سوف تحتاج إلى دورتي ساعة لجلب المتحولات إلى ال ALU كما أن المسجلات تكون بحاجة إلى BUFFER من اجل وحدة الحساب والمنطق ALU . بنية ها الممر تكون أبسط واقل تكلفة لكنها محدودة في كمية البيانات المنقولة في نفس دورة الساعة وبالتالي فهي تبطئ من سرعة الأداء .
الشكل 5.3 يبين ممر معطيات واحد يتألف من مجموعة مسجلات الأغراض العامة ومن المسجل MDR والمسجل MAR والمسجل IR والمسجل PC ومن وحدة الحساب والمنطق ALU

 بنية بممرين Two-Bus Organization :
إن استخدام بنية بممرين هو حل أسرع من استخدام بنية بممر واحد وفي هذه الحالة تكون من مسجلات الأغراض العامة متصلة مع كلا الممرين والبيانات يمكن أن تنتقل في نفس الوقت بين مسجلين مختلفين إلى دخل وحدة الحساب والمنطق لذلك يمكن جلب متحولي العملية في نفس نبضة الساعة . .بالإضافة إلى ذلك فإن المسجلات تحتاج إلى BUFFER لحفظ خرج ال ALU عندما تكون وحدة المعالجة المركزية مشغولة في تحميل المتحولين الشكل 5.4a يبين بنية بممرين.
في بعض الحالات يكون أحد الممرات مخصص لنقل البيانات إلى المسجلات (ممر دخل ) ، بينما الممر الآخر مخصص من اجل نقل البيانات الناتجة من المسجلات (ممر خرج ) .في هذه الحالة نحن نحتاج أيضاً على BUFFER للمسجل لكل مداخل وحدة الحساب والمنطق من اجل حفظ أحد المتحولات . خرج ال ALU يمكن أن يتصل بشكل مباشر إلى ممر الدخل والذي سوف ينقل النتائج إلى أحد المسجلات و الشكل 5.4b يبين بنية بممرين (ممر دخل و ممر خرج)

بنية بثلاث ممرات Three-Bus Organization :
في البنية ذات الثلاث ممرات فإن يتم استخدام ممرين كمصدر بينما الممر الثالث يستخدم كمستقر ، ممرات المصدر تنقل البيانات من خرج المسجلات (ممر خرج ) ، وممر المستقر ينقل البيانات إلى دخل المسجلات (ممر دخل )، كل من ممري الخرج متصل مع وحدة الحساب و المنطق بينما خرج وحدة الحساب والمنطق متصل مباشرة مع ممر الدخل كما هو متوقع فإن زيادة عدد الممرات سيؤدي إلى زيادة كمية البيانات التي ستم نقلها في نفس دورة الساعة الواحدة على كل حال عند زيادة عدد الممرات سيؤدي أيضاً إلى زيادة تعقيد البنية . الشكل 5.5 يبين مثال على نظام بثلاث ممرات للمعطيات .

دورة التعليمة في وحدة المعالجة المركزية CPU INSTRUCTION CYCLE :
إن سلسلة التعليمات المنجزة بواسطة وحدة المعالجة المركزية خلال تنفيذها لتعليمة ما مبينة في الشكل 5.6 وطبعاً يتم جلب التعليمات من الذاكرة الرئيسية طالما توجد هناك تعليمات يجب تنفيذها . و إن تنفيذ التعليمة يعتمد على متغيرات محددة في حقل شيفرة التعليمة وبعد إتمام تنفيذ التعليمة يتم إجراء اختبار لمعرفة حدوث طلب للمقاطعة أم لا ، لأن روتين خدمة المقاطعة يتطلب استدعاءه في حالة المقاطعة .

 العملية الأساسية خلال جلب التعليمة - تنفيذ التعليمة - خدمة المقاطعة معرفة كسلسلة من العمليات الميكروية ولا بد من تفعيل مجموعة من إشارات التحكم لبدء تنفيذ العمليات الميكروية سنتعرف فيما بعد على عمليات ميكروية لتنفيذ جلب التعليمة - تنفيذ تعليمة حسابية بسيطة - خدمة المقاطعة .

جلب التعليمة Fetch Instructions :
يمكن تلخيص سلسلة الأحداث في عملية جلب التعليمة في الخطوات التالية :
1. تحميل محتويات المسجل PC في المسجل MAR .
2. زيادة محتويات المسجل PC ( و هذه العملية تتم على التوازي مع الوصول إلى الذاكرة ) .
3. نتيجة لعملية قراءة الذاكرة يتم تحميل التعليمة في المسجل MDR .
4. تحميل محتويات المسجل MDR في المسجل IR .
عند استخدامنا لنظام بممر معطيات واحد كما هو مبين في الشكل 5.3 فإن عملية جلب التعليمة يمكن انجازها بثلاث خطوات كما هو مبين في الجدول التالي علماً أن t0 < t1 < t2


أما عند استخدامنا لثلاث ممرات معطيات المبين في الشكل 5.5 فإن خطوات انجاز جلب التعليمة يمكن انجازها كما في الجدول التالي :
تنفيذ عملية حسابية بسيطةExecute Simple Arithmetic Operation Add R1,R2,R0
هذه العملية تقوم بجمع محتويات مسجلي المصدر R1 ، R2 و تخزن النتيجة في مسجل المستقر ، يمكن تنفيذ عملية الجمع هذه كما يلي :
1. المسجلات R0 ،R1 ،R2 تستخرج من المسجل IR .
2. تمرير محتويات المسجلين R1 ،R2 إلى ALU لإجراء عملية الجمع .
3. خرج ال ALU ينقل إلى المسجل R0 .
-عند استخدام ممر معطيات واحد كما هو مبين في الشكل 5.3 فإن عملية الجمع هذه سوف تحتاج إلى ثلاث خطوات كما هو مبين في الجدول التالي: حيث t0 < t1 < t2

 -عند استخدام ممرين للمعطيات كما هو مبين في الشكل 5.4a فإن هذه العملية تحتاج إلى خطوتين كما هو مبين في الجدول التالي : حيث t0 < t1

 -عند استخدام ممرين للمعطيات كما هو مبين في الشكل 5.4b فإن هذه العملية تحتاج إلى خطوتين كما هو مبين في الجدول التالي : حيث t0 < t1

-عند استخدام ثلاث ممرات معطيات كما هو مبين في الشكل 5.5 فإن عملية الجمع سوف تحتاج إلى خطوة واحدة كما يلي :

ADD X,R0

هذه العملية تجمع محتويات موقع الذاكرة X مع محتويات المسجل R0 وتخزن النتيجة في المسجل R0 يمكن تنفيذ هذه العملية وفق الخطوات التالية :
1. استخراج موقع الذاكرة X من المسجل IR و تحميلها في المسجل MAR .
2. نتيجة عملية قراءة الذاكرة فإن محتويات الموقع X يتم تحميلها في المسجل MDR .
3. يتم جمع محتويات المسجل MDR مع محتويات المسجل R0 .
-عنداستخدام ممر معطيات كماهو مبين في الشكل 5.3 فإن عملية الجمع سوف تحتاج إلى خمس خطوات كما هو مبين في الجدول التالي: حيث t0< t1< t2 < t3 < t4

-عند استخدام ممرين للمعطيات كما هو مبين في الشكل 5.4 a فإن عملية الجمع تتم في أربع خطوات كما هو مبين في الجدول التالي : : حيث t0< t1< t2 < t3

-عند استخدام ممرين للمعطيات كما هو مبين في الشكل 5.4b فإن عملية الجمع تتم في أربع خطوات كما هو مبين في الجدول التالي : : حيث t0< t1< t2 < t3

-عند استخدام ثلاث ممرات للمعطيات كما هو مبين في الشكل 5.5 فإن عملية الجمع تحتاج إلى ثلاث خطوات كما هو مبين في الجدول التالي : حيث t0< t1< t2

خدمة المقاطعة Interrupt Handling
بعد تنفيذ التعليمة فإنه يتم إجراء اختبار لطلب المقاطعة، فإذا وجد طلب للمقاطعة فإنه يتم إجراء الخطوات التالية: 1- تخزين محتويات المسجل PC في المسجل MDR (من أجل حفظها ). 2- تحميل المسجل MAR بالعنوان الموجود في محتويات المسجل PC .(يتم حفظها) . 3- تحميل المسجل PC بعنوان أول تعليمة من روتين خدمة المقاطعة . 4-تخزين محتويات المسجل MDR (قيم المسجل PC القديمة) في الذاكرة . يبين الجدول التالي تسلسل العمليات السابقة. حيث t1< t2 < t3

وحدة التحكم CONTROL UNIT :
تعتبر وحدة التحكم المكون الذي ينظم عمليات النظام من خلال إرسال إشارات التحكم إلى ممر المعطيات ،هذه الإشارات تتحكم بتدفق البيانات خلال ال CPU وبين ال CPU والوحدات الخارجية مثل I/O . ممرات التحكم بشكل عام تنقل الإشارات بين وحدة التحكم و مكونات الحاسب الأخرى في فترات ساعة منظمة .إن نظام الساعة يولد سلسلة مستمرة من النبضات خلال زمن محدد وتردد معين . تستعمل سلسلة الخطوات t0,t1,t2,.... لتنفيذ تعليمة محددة حيث أن ......... t0<t1<t2 في جلب التعليمة يتم فك تشفير حقل الشيفرة لتزويد إشارات التحكم اللازمة ، حيث تنتج معلومات حول التعليمة التي سيتم تنفيذها ،وهذه المعلومات يتم توليدها عن طريق دارة منطقية تستخدم مع مداخل أخرى لتوليد إشارات التحكم .توليد الإشارات يمكن تحديده ببساطة عن طريق مجموعة من المعادلات المنطقية تربط بين الدخل والخرج .يبين الشكل 5.7 مخطط صندوقي لتوضيح استخدام التوقيت في توليد اشارات التحكم.

يوجد نوعين من مختلفين من وحدات التحكم هما : البرمجة الميكروية - البنية الصلبة في تقنية البرمجة الميكروية تكون إشارات التحكم مرتبطة بعمليات مخزنة في وحدات ذاكرة خاصة لا للمبرمج الوصول إليها كما هو الحال في كلمات التحكم . كلمة التحكم هي تعليمة ميكروية تحدد عملية ميكروية أو أكثر ، وتسمى سلسلة التعليمات الميكروية بالبرنامج الميكروي والذي يتم تخزينه في الROM أو RAM والتي تسمى ذاكرة التحكم CM . في تقنية البنية الصلبة يتم تثبيت دارة منطقية والتي تتعامل بشكل مباشر مع العلاقات البوليانية المستخدمة لتوليد إشارات التحكم .وتجدر الإشارة أن تقنية البنية الصلبة تتميز بأنها أسرع من البرمجة الميكروية ورغم ذلك إلا أن البنية الصلبة بكلفتها العالية وتعيدها من أجل الأنظمة المعقدة .، لكنها تعتبر تجارية من أجل وحدات التحكم الصغيرة. بينما البرمجة الميكروية تكون أكثر سهولة للتحديث في حال تغيير بنية النظام ، حيث يمكننا إضافة تعليمات جديدة بدون تغيير البنية الصلبة أما في حالة لبرمجة الميكروية فإن ذلك يتطلب إعادة تصميم الأنظمة الداخلية .من أجل أي تغيير في النظام

EXAMPLE 1

دعنا نعود لتعليمة الجمع التي تقوم بجمع محتويات مسجلات المصدر R1 ، R2 مع و تخزن النتائج في مسجل المستقر R0 وقد أشرنا سابقاً إلى ان هذه التعليمة يمكن انجازها بخطوة واحدة باستخدام ثلاث ممرات معطيات المبين في الشكل 5.5 الان سنقوم بفحص تسلسل التحكم المطلوب لإنجاز هذا الجمع خلال الخطوة t0 . لنفرض انه تم فك تشفير حقل الشيفرة لهذه التعليمة إلى النوع inst-x ، في البداية نحن بحاجة لااختيار مسجلات المصدر ومسجلات المستقر بعدها نختار عملية الجمع من ال ALU وا لجدول التالي خطوة وتسلسل التجكم .


الشكل 5.8 يبين الإشارات المولدة لتنفيذ التعليمة inst-x خلال الفترة t0 . البوابة AND تؤكد ان هذه الإشارات سوف يتم طلبها عندما يتم فك تشفير حقل الشيفرة إلى inst-x خلال الفترة t0 الإشارات (1R1 out-bus) ،(2R2 out-bus) ، (R0 in-bus ) و Add سوف تختار على التوالي R1 كمصدر ل out-bus 1 و R2 كمصدر ل out-bus 2 و R0 كمنستقر ل in-bus وسف تختار عملية الجمع من ال ALU .

EXAMPLE 2

لنكرر العملية السابقة بطريقة مختلفة وذلك باستخدام ممر معطيات واحد المبين في الشكل 5.3 وقد أشرنا سابقاً أن هذه التعليمة تحتاج إلى ثلاث خطوات . على فرض انه تم فك تشفير حقل الشيفرة للتعليمة الحالية إلى النوع inst-x يبين الجدول التالي خطوات وتسلسل التحكم المطلوب :

الشكل 5.9 يوضح الإشارات المولدة لتنفيذ inst-x خلال الفترات t0 ،t1 ،t2 البوابة AND تؤكد أن الإشارات المناسبة سوف يتم طلبها عندما يتم فك تشفير حقل الشيفرة inst-x و خلال الزمن المناسب . خلال الفترة t0 سوف يتم طلب الإشارات R1 out و A in لنقل محتويات R1 إلى A وبشكل مشابه خلال الفترة t1 يتم طلب الإشارات R2 out و B in لنقل محتويات R2 إلى B .أخيراً الإشارة R0 in و Add سوف يتم طلبها خلال الفترة t2 لجمع محتويات A مع B ونقل النتائج إلى R0 .


Hardwired implementation :
في البنية الصلبة لوحدة التحكم يتم انجاز تنفيذ مباشر باستخدام دارات منطقية ، حيث أنه من أجل كل خط تحكم فإن خط تحكم واحد سوف يجد تعبير بولياني في أمثلة الدخل لتوليد إشارة التحكم كما هو مبين في الشكل 5.7 ، لنشرح هذا التنفيذ من خلال مثال بسيط . لنفرض أن مجموعة التعليمات لآلة تتألف من ثلالث تعليمات inst-y ، inst-x inst-z و أن خطوط التحكم هي A ، B, C, D ، E ،F ،G ، H الجدول التالي يبين خطوط التحكم الواجب تفعيلها من أجل ثلالث عمليات بثلاث خطوات t0 ، t1 ، t2

 العلاقات البوليانية من أجل خطوط التحكم A ، B ، C يمكن الحصول عليها كما يلي :

يبين الشكل 5.10 الدارة المنطقية لهذه الخطوط والتعبيرات البوليانية لبقية خطوط التحكم يمكن الحصول عليها بنفس الطريقة .

الشكل 5.11 يبين مخطط الحالة لدورة تنفيذ هذه التعليمات

MICROPROGRAMMED CONROL UNIT :
لقد تم طرح فكرة البرمجة الميكروية لوحدات التحكم من قبل العالم M.V.Wikes في بداية عام 1950 s . وقد كانت البرمجة مثيرة من اجل الرغبة لتقليل التقييد الموجود في وحدات التجكم القائمة على البنية الصلبة ، وكما أشرنا سابقاً فإنه يتم تنفيذ التعليمة باستخدام محموعة من العمليات الميكروية ، حيث يتم ربط كل عملية ميكروية بواسطة مجموعة من خطوط التحكم والتي يجب تفعيلها لايجاد لبعملية الميكروية المطلوبة .
الغاية من البرمجة الميكروية هي تخزين إشارات التحكم المرتبطة مع تعليمة محددة كبرنامج ميكروي في ذلكرة مخصصة تسمى ذاكرة التحكم CM . يتألف البرنامج الميكروي من سلسلة من التعليمات الميكروية .و التعليمة الميكروية هي شعاع من البتات بحيث أن كل بت يمثل إشارة تحكم ، الشيفرة الشرطية ، أو عنوان التعليمة الميكروية التالية .

يتم جلب التعليمات الميكروية من ال CM وبنفس الطريقة يتم جلب البرنامج من الذاكرة الرئيسية كما في الشكل 5.12 . عندما يتم جلب تعليمة من الذاكرة سيقوم حقل الشيفرة لهذه التعليمة بتحديد البرنامج الميكروي الذي سيتم تنفيذه ، و بكلمات أخرى يقوم معالج التعليمات الميكروية باستخدام هذا العنوان لجلب التعليمة الميكروية الاولى من البرنامج الميكروي ، وبعد جلب كل تعليمة ميكروية يتم تفعيل خطوط التحكم المناسبة . و كل خط تحكم يوافق "1" bit ينبغي ان يتم تفعيله بينما كل خط تحكم يوافق "0" bit ينبغي عدم تفعيله . وبعد اتمام تنفيذ تعليمة ميكروية واحدة سيتم جلب تعليمة ميكروية جديدة لتنفيذها ، و عندما تشير بتالت الشيفرة الشرطية إلى ضرورة تنفيذ برنامج فرعي عندها يتم تحديد التعليمة الميكروية التالية من بتات العنوان للتعليمة الحالية و إلا يتم جلب التعليمة الميكروية التالية و تنفيذها .يتم تحديد طول اللتعليمة الميكروية بالاعتماد على عدد العمليات الميكروية المحددة في التعليمات الميكروية ،وعلى طريق تفسير بتات التحكم و كيفية الحصول على التعليمة الميكروية التالية . التعليمة الميكروية تحدد بعملية ميكروية واحدة أو أكثر من أجل تنفيذها بنفس الوقت ويزداد طول التعليمة الميكروية بزيادة عدد العمليات الميكروية التي تعمل على التوازي في نفس التعليمة الميكروية . علاوة على ذلك عندما يتم توافق بت التحكم في التعليمة الميكروية بالضبط مع خط تحكم واحد فإن طول التعليمة الميكروية سوف يصبح أكبر . وينبغي تصغير طول التعليمة الميكروية عندما يتم تشفير خطوط التحكم في التعليمة الميكروية في حقول محددة . و نحتاج لفاك الشيفرة من اجل تنظيم كل حقل في خطوطتحكم منفصلة . و الواضح ان استخدام فاكات الشيفرة سوف يقلل عدد خطوط التحكم التي يتم تفعيلها بنفس الوقت . كما أن هناك علاقة تبادلية بين طول التعليمة الميكروية و التنفيذ التفرعي ، و انه من الضروري تصغير طول التعليمة الميكروية لتقليل الزمن المستغرق للوصول إلى ذاكرة التحكم ، و من المفضل تمثيل العمليات الميكروية بشكل تفرعي و بخطوط تحكم أكثر و التي يتم تفعيلها بنفس الوقت .

HORIZONTAL VERSUS VERTICAL MICROINSTRUCTION :
يمكن تصنيف التعليمات الميكروية بشكل أفقي او عمودي ، حيث يتم توافق بتات منفصلة في التعليمات الميكروية الأفقية مع خطوط تحكم منفصلة . التعليمات الميكروية الأفقية تكون طويلة و تسمح بتنفيذ تفرعي أكبر لأن كل بت يتحكم بخط تحكم مفرد . في التعليمات الميكروية العمودية يتم تشفير خطوط التحكم في حقول محددة ضمن كل تعليمة ميكروية و نحتاج فاكات الشيفرة لجدولة حقل مؤلف من K بت إلى 2^K من خطوط التحكم المنفصلة . على سبيل المثال من أجل حقل تعليمة ميكروية مكونة من 3 بت سوف يتم استخدام واحد من ثمانية خطوط ممكنة . لأن تشفير التعليمات الميكروية العمودية يكون أقصر من التعليمات الميكروية الأفقية فإن تشفير خطوط التحكم في نفس الحقل لا يمكن تفعيله بنفس الوقت ، و نتيجة لذلك فإن التعليمات الميكروية العمودية تسمح فقط بتنفذ متوازي محدد . ويجب ملاحظة اننا لسنا بحاجة لفك التشفير في التعليمات الميكروية الأفقية بينما هذا الأمر ضروري في التعليمات الميكروية العمودية .

EXAMPLE 3

إذا اخذنا بعين الإعتبار ثلاث ممرات معطيات المبين في الشكل 5.5 بالإضافة إلى المسجلات PC ، MAR ، MDR ، IR و لافتراض أن هناك 16 مسجل أغراض عامة مرقمة من R0 إلى R15 ولنفرض أيضاً أن ال ALU تدعم ثمانية عمليات (add ،subtract,multiply,divide,and or ،shift left, shift right ).وباعتبار أن عملية الجمع add R1 ، R2 ،R0 تجمع محتويات مسجلي المصدرR1 ، R2 وتخزن النتيجة في مسجل المستقر R0 ، في هذا المثال سوف نتعرف على شكل التعليمة الميكروية على أساس التنظيم الأفقي ، وسوف نستخدم التعليمات الميكروية الأفقية والتي لديها بت تحكم واحد من اجل كل خط تحكم ، وإن شكل التعليمة الميكروية يتضمن بتات تحكم كما يلي:

الجدول التالي يوضح عدد البتات المطلوبة من اجل ال ALU و ال source1 و source 2 ال destination

 EXAMPLE 4

في هذا المثال سوف نستخدم التعليمات الميكروي العمودية و التي تحتاج إلى فاكات شيفرة ، وسوف نستخدم ثلاث ممرات معطيات المبينة في الشكل 5.5 . لنفرض أن لدينا 16 مسجل أغراض عامة و ALU تدعم ثمانية عمليات ، يبين الجدول التالي تشفير وظائف ALU - المسجلات المتصلة مع out-bus 1 (source 1) والمسجلات المتصلة مع out-bus 2 (source 2) والمسجلات المتصلة مع in-bus (destination ) .


EXAMPLE 5

باستخدام نفس التشفير في المثال 4 سنقوم بإيجاد التعليمات الميكروية العمودية المستخدمة في جلب تعليمة ما .
PC <---MAR
أولاً سوف نختار PC كمصدر وذلك باستخدام "10000" من حقل source 1 و سوف نختار MAR كمستقر ياستخدام "10010" من حقل destination ، و سوف نستخدم "0000" من أجل ال ALU والتي سيتم فك تشفيرها إلى "NONE " وكما هو مبين في جدول تشفير ALU في example 4 فإن "NONE" تعني اتصال out-bus 1 مع in-bus . الحقل source 2 سوف يوضع إلى "10000" للإشارة بعدم اختيار أي من المسجلات . التعليمة الميكروية موضحة في الشكل 5.15

 Memory Read and Write :

عمليات الذاكرة يمكن ملائمتها بسهولة بإضافة بت واحد من أجل القراءة و بت أخر من أجل الكتابة . التعليمتين الميكرويتين المتتاليتين في الشكل 5.16 تمثلان القراءة والكتابة .

Fetch
يمكن اجراء عملية جلب تعليمة ما باستخدام ثلاث تعليمات ميكروية كما هو مبين في الشكل 5.17

التعليمتان الميكرويتان الأولى و الثانية تم توضيحهما سابقاً أما التعليمة الميكروية الثالثة فهي تنقل محتويات MDR إلى IR (MDR IR) . MDR تم اختياره كــ source 1 وذلك باستخدام "10011" من الحقل source 1 و بشكل مشابه تم أختيار IR كـ destination باستخدام الحقل "10001" ، وسوف نستخدم أيضاً "0000" (NONE) في حقل ال ALU والذي يعني اتصال out-bus 1 مع in-bus . الحقل source 2 سيتم توضيعه على "10000" و الذي يعني عدم أختيار أي من المسجلات .

الخلاصة: تعتبر وحدة المعالجة المركزية CPU جزء الحاسب الرئيسي الذي يقوم بتفسير و تنفيذ التعليمات الموجودة في البرامج التي نكتبها . المكونات الرئيسية ل CPU هي حقل المسجلات -ALU ووحدة التحكم . يتضمن حقل المسجلات -مسجلات أغراض عامة -خاصة . مسجلات الأغراض العامة تستخدم لحفظ المتحولات والنتائج المرحلية اما مسجلات الأغراض الخاصة قد تستخدم للوصول إلى الذاكر - التنسيق - حالة المعلومات أو لحفظ التعليمة المجلوبة خلال فك التشفير والتنفيذ . العمليات الحسابية والمنطقية يمكن تمثيلها في وحدة الحساب والمنطق ALU . دلخل ال CPU يمكن أن تنتقل البيانات من أحد المسجلات إلى مسجلات أخرى او بين المسجلات و ال ALU ، كما يمكن للبيانات أن تنتقل بين ال CPU و المكونات الخارجية مثل الذاكرة و وحدات الدخل والخرج I/O . وحدة التحكم هي المكون الذي ينحكم بحالة دورة التعليمة . حيث أنه يتم جلب التعليمات من الذاكرة طالما توجد تعليمات تطلب التنفيذ ، ويتم تنفيذ التعليمة بالاعتماد على عملية محددة في حقل شيفرة التعليمة . تولد وحدة التحكم إشارات للتحكم بتدفق المعلومات خلال ال CPU وبين ال CPU والوحدات الخارجية مثل الذاكرة و وحدات الدخل والخرج I/O . ويمكن تمثيل وحدة التحكم باستخدام تقنيات البنية الصلبة أو البرمجة الميكروية.

TMAWAHEB

خالد سويدان

ساحة النقاش

عدد زيارات الموقع

65,811