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

تصغير|200بك|يسار
## Processing Unit وحدة المعالجة المركزية

أن أهم المكونات الرئيسية لأي حاسب هي وحدة المعالجة المركزية CPU والوظيفة الرئيسية لها تكمن في تنفيذ مجموعة التعليمات المخزنة في ذاكرة الحاسب.

**أساسيات وحدة المعالجة المركزية CPU BASICS**

تتألف وحدة المعالجة المركزية من ثلاث مكونات رئيسية هي:
# مجموعة المسجلات
# وحدة الحساب والمنطق ALU
# وحدة التحكم CU

1- تختلف مجموعة المسجلات من حاسب حاسب لاخر وذلك حسب بنيته. حيث تضم مجموعة مسجلات الأغراض العامة ومجموعة مسجلات الأغراض الخاصة.وتستخدم مجموعة مسجلات الأغراض العامة لأي غرض ما بينما مجموعة مسجلات الأغراض الخاصة يكون لها وظيفة محددة.على سبيل المثال عداد البرنامج PC هو مسجل أغراض خاصة يستخدم من أجل الأحتفاظ بعنوان التعليمة التي سيتم تنفيذها لاحقا بينما المسجل IR يحتفظ بالتعليمة الحالية التي يتم تنفيذها حالياً.

2- وحدة الحساب والمنطق ALU تزود الدارات اللازمة من أجل تنفيذ العمليات الحسابية والمنطقية وعمليات الإزاحة الموجودة في مجموعة التعليمات

3- وحدة التحكم CU مسؤولة عن جلب التعليمة من الذاكرة الرئيسية وفك شفرتها وتنفيذها.
الشكل 5.1 يبين المكونات الرئيسية لوحدة المعالجة المركزية CPU والعلاقة بين نظام الذاكرة وأجهزة الدخل والخرج I/O.

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

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

## وحدة التحكم CU
### مجموعة المسجلات REGISTER SET

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

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

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

#### Memory Access Registers مسجلات الولوج إلى الذاكرة

هناك مسجلين أساسيين من أحل عمليات القراءة من الذاكرة والكتابة فيها هما MDR (memory data register) و MAR (memory address register).المسجلات MDR، MAR تستعمل بشكل خاص من قبل وحدة المعالجة المركزية ولا يمكن الوصول إليهما من قبل المبرمج.
أولا:	من أجل تمثيل عملية كتابة في موقع محدد في الذاكرة سوف تستخدم المسجلين MDR و MAR كما يلي:
ثانيا: تخزين الكلمة في المسحل MDR ويتم ذلك بواسطة ال CPU
ثالثا: تخزين الموقع الذي سبخزن فيه الكلمة في المسحل MAR ويتم ذلك بواسطة ال CPU أيضاً.
# رابعا: يتم طلب إشارة كتابة من ال CPU.

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

خامسا: تخزين الموقع الذاكري الذي سنقرأ منه المعطيات في المسجل MAR
سادسا: طلب إشارة قراءة من الذاكرة
سابعا: تخزين الكلمة المطلوبة من الذاكرة في المسجل MDR حيث تصبح جاهزة للاستخدام من قبل وحدة المعالجة المركزية CPU.

#### مسجلات احضار الامر Instruction Fetching Registers

يوجد لدينا مسجلين أساسيين هما مسجل عداد البرنامج PC ومسجل الأمر IR
* المسجل PC يحتوي على عنوان الأمر الذي عليه الدور في التنفيذ.
* بعد احضار الأمر يتم تخزينه في المسجل IR وينظر حتي يتم تنفيذه.
بعد احضار الأمر بنجاج يتم تحديث محتويات المسجل PC ليشير إلى الأمر التالي الذي سيتم تنفيذها.

#### المسجلات الشرطية condition registers
المسجلات الشرطية أو الأعلام تستخدم لتحديد حالة المعلومات، بعض البنى تحتوي على مسجلات خاصة لحالة كلمة البرنامج PSW (program status word register) حيث يحتوي ال PSW على بتات يتم وضعها من قبلالة المعالج

#### مسجلات عنونة الأغراض الخاصة 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

يمكن تلخيص سلسلة الأحداث في عملية جلب التعليمة في الخطوات التالية:

# تحميل محتويات المسجل PC في المسجل MAR.
# زيادة محتويات المسجل PC (و هذه العملية تتم على التوازي مع الوصول إلى الذاكرة).
# نتيجة لعملية قراءة الذاكرة يتم تحميل التعليمة في المسجل MDR.
# تحميل محتويات المسجل MDR في المسجل IR.

عند استخدامنا لنظام بممر معطيات واحد كما هو مبين في الشكل 5.3 فإن عملية جلب التعليمة يمكن إنجازها بثلاث خطوات كما هو مبين في الجدول التالي علماً أن t0 < t1 < t2

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

### تنفيذ عملية حسابية بسيطة Execute Simple Arithmetic Operation Add R1,R2,R0

هذه العملية تقوم بجمع محتويات مسجلي المصدر R1، R2 وتخزن النتيجة في مسجل المستقر، يمكن تنفيذ عملية الجمع هذه كما يلي:
# المسجلات R0 ،R1 ،R2 تستخرج من المسجل IR.
# تمرير محتويات المسجلين R1 ،R2 إلى ALU لإجراء عملية الجمع.
# خرج ال ALU ينقل إلى المسجل R0.

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

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

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

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

 
            
**ADD X,R0 **

هذه العملية تجمع محتويات موقع الذاكرة X مع محتويات المسجل R0 وتخزن النتيجة في المسجل R0 يمكن تنفيذ هذه العملية وفق الخطوات التالية:
# استخراج موقع الذاكرة X من المسجل IR وتحميلها في المسجل MAR.
# نتيجة عملية قراءة الذاكرة فإن محتويات الموقع X يتم تحميلها في المسجل MDR.
# يتم جمع محتويات المسجل 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. دلخل ال CPU يمكن أن تنتقل البيانات من أحد المسجلات إلى مسجلات أخرى أو بين المسجلات وال ALU، كما يمكن للبيانات أن تنتقل بين ال CPU والمكونات الخارجية مثل الذاكرة ووحدات الدخل والخرج I/O.
وحدة التحكم هي المكون الذي ينحكم بحالة دورة التعليمة. حيث أنه يتم جلب التعليمات من الذاكرة طالما توجد تعليمات تطلب التنفيذ، ويتم تنفيذ التعليمة بالاعتماد على عملية محددة في حقل شيفرة التعليمة.
تولد وحدة التحكم إشارات للتحكم بتدفق المعلومات خلال ال CPU وبين ال CPU والوحدات الخارجية مثل الذاكرة ووحدات الدخل والخرج I/O. ويمكن تمثيل وحدة التحكم باستخدام تقنيات البنية الصلبة أو البرمجة الميكروية
## مراجع

تصنيف:بنية الحاسوب
تصنيف:هندسة الحاسوب
تصنيف:وحدة المعالجة المركزية