وحدة المعالجة المركزية - Central Processing Unit - CPU
ما هي وحدة المعالجة المركزية - Central Processing Unit - المعالج - البروسيسور - Processor، مكونات وحدة المعالجة المركزية (ALU, CU)، التقنيات المستخدمة في تصميم وحدة المعالجة المركزية CPU، خطوات تنفيذ الأوامر البرمجية داخل الـ CPU، أنواع السجلات - Registers
ما هي وحدة المعالجة المركزية - CPU؟
وحدة المعالجة المركزية هي ترجمة الكلمة الإنجليزية Central Processing Unit، وأحيانا تسمى المعالج - Processor، وتكتب إختصارا CPU، وهي عبارة عن دائرة إلكترونية مدمجة (Integrated Circuit)، وهي من المكونات الأساسية لتشغيل أي جهاز كمبيوتر، وهي الجزء الأكثر تعقيدا في التصميم، والأكثر تكلفة إذا ما قورنت بباقي مكونات جهاز الحاسوب.
وحدة المعالجة المركزية هي المسئولة عن تنفيذ الأوامر البرمجية (البرامج)، عن طريق تنفيذ بعض العمليات الحسابية والمنطقية على البيانات الموجودة بالذاكرة العشوائية Random Access Memory.
ما هي مكونات وحدة المعالجة المركزية؟
يمكن تقسيم مكونات وحدة المعالجة المركزية إلى قسمين رئيسيين، وحدة التحكم، وحدة الحساب والمنطق:
أولا: وحدة الحساب والمنطق - Arithmetic and Logic Unit - ALU
وهي التي تحتوي على الدوائر الإلكترونية المخصصة لإجراء العمليات الحسابية والعمليات المنطقية، وتحتوي أيضا وحدة الحساب والمنطق على مجموعة من وحدات التخزين المؤقته تسمى السجلات Registers، وهذه السجلات (الريجيسترز) تعتبر من أسرع أنواع الذاكرة العشوائية، ويتم تصنيف السجلات إلى نوعين:
سجلات الإستخدامات العامة - General Purpose Registers
وفي هذا النوع من السجلات يتم تخزين البيانات التي تحتاجها وحدة الحساب والمنطق بشكل مؤقت لتنفيذ العمليات عليها، فعلى سبيل المثال عند جمع رقمين يتم تخزين الرقم الأول في سجل ويتم تخزين الرقم الثاني في سجل آخر، ثم يتم تنفيذ عملية الجمع على السجلين وحفظ النتيجة في سجل آخر، وبعد ذلك يتم نقل النتيجة من السجل المخصص لها إلى الذاكرة العشوائية RAM، حتى تتمكن وحدة الحساب والمنطق من إجراء عمليات أخرى بإستخدام هذه السجلات.
سجلات محددة الإستخدامات - Special Purpose Registers
يوجد العديد من السجلات محددة الإستخدامات، ويفضل معرفة أسمائها بالإنجليزية، ولذلك سوف نذكر إسم كل سجل مع شرح مبسط لإستخدامه، والتالي بعض أهم أنواع السجلات ذات الإستخدامات المحددة:
- Program Counter (PC) - وظيفته تخزين عنوان الأمر البرمجي التالي الموجود بالذاكرة العشوائية، (وهو الأمر الذي سوف يتم تنفيذه بعد الإنتهاء من تنفيذ الأمر الحالي)، وذلك حتى تتمكن وحدة المعالجة المركزية من إستكمال خطوات البرنامج.
- Instruction Register (IR) - ويستخدم هذا السجل لحفظ الأمر البرمجي الحالي وذلك خلال مرحلة فك التشفير (Decode) ومرحلة التشغيل (Execute)، وهذه المراحل سوف نتعرف عليها لاحقا، ويؤدي إستخدام هذا السجل إلى تسريع وقت تنفيذ البرنامج، فهو يوفر لوحدة المعالجة المركزية الوقت المستقطع للبحث عن الأمر التالي في الذاكرة العشوائية.
- Flag Register / Status Flag - وهو سجل له تصميم مخصص (مختلف عن باقي السجلات)، ويحتوي هذا السجل على قيمة 1-بت 1-bit، بحيث تتغير هذه القيمة نتيجة للعمليات الحسابية والمنطقية، على سبيل المثال، عند إجراء عملية القسمة لرقمين إذا كانت النتيجة رقم غير صحيح، تتغير قيمة هذا السجل لتوضح أن النتيجة تحتوي على أرقاما كسرية.
ثانيا: وحدة التحكم - Control Unit - CU
وحدة التحكم الموجودة بداخل وحدة المعالجة المركزية هي المسؤلة عن التحكم في تنفيذ العمليات التي تقوم بها وحدة المعالجة المركزية، فهي المسؤلة عن تدفق البيانات من وإلى الذاكرة العشوائية، حيث تقوم وحدة التحكم بنقل الأوامر البرمجية من الذاكرة العشوائية إلى السجلات المخصصة لها، فتبدأ بترجمة الأمر البرمجي لتحدد أسماء السجلات المستخدمه، ثم تقوم بنقل البيانات إلى تلك السجلات، ثم تقوم بتفعيل الدائرة الإلكترونية الخاصة بالعمليه في وحدة الحساب والمنطق، وبعد الإنتهاء من تنفيذ العملية الحسابية أو المنطقية، تقوم وحدة التحكم بنقل النتيجة من السجل إلى مكانها المخصص في الذاكرة العشوائية أو وحدة الـ I/O.
خطوات تنفيذ الأوامر البرمجية داخل الـ CPU
يمر تنفيذ الأوامر البرمجية داخل وحدة المعالجة المركزية بثلاثة مراحل رئيسية، وتسمى هذه المراحل بـ دورة الأمر البرمجي Instruction Cycle، حيث بعد الإنتهاء من الخطوة الثالثة يتم تكرار نفس الخطوات على الأمر التالي حتى إنتهاء تشغيل البرنامج، و هذه الخطوات هي:
الجلب - الإستدعاء - Fetch
وهي الخطوة الأولى، حيث يتم جلب الأمر البرمجي من الذاكرة العشوائية، ويتم تحديد عنوان الأمر البرمجي طبقا للعنوان الموجود في سجل عداد البرنامج (Program Counter Register)، وبعد جلب الأمر البرمجي تقوم وحدة التحكم (Control Unit) بتغيير العنوان الموجود في الـ Program Counter Register إلى عنوان الأمر التالي.
والأمر البرمجي هو عبارة عن مجموعة أو تسلسل من الأرقام الثنائية، يحتوي على رمز للعملية الحسابية أو المنطقية بالإضافة إلى البيانات أو عنوان البيانات في الذاكرة العشوائية، التي سوف يتم التعامل معها.
الترجمة - فك التشفير - Decode
بعد إستدعاء الأمر البرمجي من الخطوة الأولى، تقوم وحدة التحكم (Control Unit) بترجمة الأمر البرمجي، فتقوم بتخزين البيانات في السجلات المخصصة لها، ثم تقوم بتفعيل الدائرة الخاصة بالعملية في وحدة الحساب والمنطق.
التشغيل - التنفيذ - Execution
بعد الإنتهاء من الخطوتين السابقتين، تقوم وحدة الحساب والمنطق بتنفيذ الأمر البرمجي الذي تم تفعيله في الخطوة السابقة، ثم تقوم وحدة التحكم بنقل نتيجة العملية إلى مكانها المخصص في الذاكرة أو وحدة الـ I/O (المدخلات والمخرجات)، ويتم بعد ذلك تكرار نفس الخطوات حتى إنتهاء تشغيل البرنامج.
التكنولوجيا المستخدمة لتنفيذ الأوامر داخل الـ CPU
توجد العديد من التقنيات التي تستخدم لتنفيذ الأوامر البرمجية بداخل وحدة المعالجة المركزية، وهي كالتالي:
تقنية التسلسل - Serial
وفي هذه الطريقة يتم تنفيذ الأوامر البرمجية واحدة تلو الأخرى، أي أن وحدة المعالجة المركزية تبدأ بتنفيذ الأمر بعد الإنتهاء من خطوات تنفيذ الأمر السابق، وهذه الطريقة لم تعد تستخدم في هذه الأيام.
تقنية خط الأنابيب - Pipelining
وفي هذه الطريقة تقوم وحدة المعالجة المركزية بالبدء في تنفيذ الأمر البرمجي قبل إنتها خطوات تنفيذ الأمر البرمجي السابق، وبالتالي إستخدام هذه الطريقة يوفر الكثير من الوقت، ويساعد على زيادة عدد الأوامر التي يتم تنفيذها في الثانية الواحدة.
تقنية التوازي - Parallel
وبإستخدام هذه التقنية تتمكن وحدة المعالجة المركزية من تنفيذ أكثر من أمر برمجي في وقت واحد، ويتم تطبيق هذه التقنية بتصميم وحدة المعالجة المركزية بإحدى الطريقتين التاليتين أو كليهما:
التصميم ثنائي النواة - Dual Core
وحاليا يوجد التصميم متعدد النواة - Multi Core، وهو عبارة عن دمج أكثر من دائرة إلكترونية لوحدة المعالجة المركزية في شريحة (رقاقة - Chip) واحدة، ومن أشهر الأمثلة على هذا النوع من التقنية Intel Dual Core.
التصميم متعدد الخيوط - Hyper-Threading
وهو عبارة عن دائرة إلكترونية إضافية تحاكي دائرة وحدة المعالجة المركزية، أو يمكنك أن تعتبرها وحدة إضافية وهمية، فهي بالطبع تزيد من سرعة المعالج ولكنها لا تصل لسرعة معالج ثنائي النواة، ويمكن أن يتم دمج هذه الدائرة الإلكترونية في شريحة لمعالج متعدد الأنوية ومن أشهر الأمثلة على ذلك المعالج Intel Core I7 فهو عبارة عن شريحة مدمج بها أكثر من نواة (قد تصل إلى عشرة أنوية) ومدمج بها أيضا الدائرة الخاصة بالـ Hyper-Threading.