عداد البرنامج

في البداية، عداد البرنامج هو سجل معالج يبين مكان وجود الحاسوب في تسلسل برامجه ويعرف كذلك باسم مؤشر التعليمات في معالجات إكس 86 إنتل وItanium الدقيقة، ويسمى أحيانًا سجل عنوان التعليمات، أو عداد التعليمات، أو مجرد جزء من متتالية التعليمات. وتعرض الأقسام التالية جوانب أخرى من الموضوع.
في هذا الإطار، عادةً، يتم زيادة عداد البرنامج بعد جلب التعليمات، حيث يحفظ بعنوان الذاكرة التعليمات التالية التي سيتم تنفيذها.
علاوةً على ذلك، تقوم المعالجات عادة بجلب التعليمات بالتسلسل من الذاكرة، في حين أن تعليمات نقل التحكم تغير التسلسل عن طريق وضع قيمة جديدة في الحاسوب. وهذه التعليمات تشمل فروع تسمى أحيانًا بالقفزات واستدعاء البرنامج الفرعي والعائدات. كما أن النقل المشروط بحقيقة تأكيد ما يسمح للحاسوب باتباع تسلسل مختلف في ظل ظروف مختلفة.
إضافةً إلى ذلك، هناك فرع ينص على أن التعليمات التالية يتم جلبها من مكان آخر في الذاكرة. إن استدعاء البرنامج الفرعي لا يقتصر على الفروع فحسب، بل يحفظ المحتويات السابقة لعداد البرنامج في مكان ما. بينما تقوم العائدات باسترداد محتويات ال المحفوظة وإعادتها إلى عداد البرنامج، واستئناف التنفيذ المتسلسل بالتعليمات التي تلي استدعاء البرنامج الفرعي.
الرمز
- انظر كذلك
- توقع الفرع
- مخبأ التعليمات
- دورة التعليمات
- وحدة التعليمات
- خط أنابيب التعليمات
- تعليمات التسجيل
- جدولة التعليمات
- كلمة حالة البرنامج
وفي هذا السياق، يستعمل الموردون أحرف مختلفة لترمز إلى عداد البرنامج في برامج لغة التجميع. فاستخدام حرف '$' هو السائد في إنتل، وزيلوج، وتكساس أنسترومنتس، وتوشيبا NEC، وسيمنز و AMD وثائق المعالج، وموتورولا، وروكويل، و تكنولوجيا الرقاقة كما تستعمل هيتاشي حرف '*'، في حين تستعمل SGS طومسون للإلكترونيات الدقيقة عداد البرنامج.
العواقب في هندسة الآلة
ومن جهة أخرى، تقنيات للتنبؤ بالتنفيذ خارج النظام وإعداد الإرشادات اللاحقة للتنفيذ خارج التسلسل المعتاد.
وفي السياق ذاته، يقود هذا البحث كذلك إلى طرق جعل وحدات المعالجة المركزية التقليدية، القائمة على البرامج المضادة، تعمل بشكل أسرع، بما في ذلك:
ومن جهة أخرى، استخدام عداد البرنامج الذي يتزايد عادة والذي يفترض أن ما يفعله الحاسوب هو تنفيذ تسلسل خطي من التعليمات. مثل عداد البرنامج المركزي في بنية فون نيومان. وهكذا يكتب المبرمجون تدفق تحكم تسلسلي حتى بالنسبة للخوارزميات التي لا يجب أن تكون متسلسلة. كما أن نتيجة (عنق الزجاجة لفون نيومان) ادة إلى البحث في الحوسبة المتوازية، بما في ذلك نماذج non-von Neumann أو نماذج تدفق البيانات التي لا تستعمل عداد البرنامج، ومثلًا، بدلاً من تحديد الخطوات المتسلسلة، قد يحدد المبرمج عالي المستوى الوظيفة المطلوبة وقد يحدد مبرمج المستوى المنخفض ذلك باستخدام المنطق التوافقي.
ومن ناحية أخرى، خطوط الأنابيب، حيث تقوم الأجهزة المختلفة في وحدة المعالجة المركزية بتنفيذ مراحل مختلفة من التعليمات المتعددة في وقت واحد.
علاوةً على ذلك، بنية كلمات التعليمات الطويلة جدًا، حيث يمكن بتوجيه واحد تحقيق تأثيرات متعددة.
العواقب في البرمجة عالية المستوى
من جانب آخر، عند كتابة برنامج متعدد المؤشرات الترابطية، قد يكتب المبرمج كل مؤشر ترابط كتسلسل من الإرشادات دون تحديد توقيت لأي تعليمات بالنسبة إلى الإرشادات في مؤشرات الترابط الأخرى.
كذلك، في برمجة تدفق البياناتبرمجة تدفق البيانات، قد يقوم المبرمج بكتابة كل مقطع من خط أنابيب الحوسبة دون تحديد التوقيت بالنسبة إلى الأقسام الأخرى.
ومن جهة أخرى، لا تزال لغات البرمجة عالية المستوى الحديثة تتبع نموذج التنفيذ المتسلسل، وفي الواقع هناك طريقة شائعة لتحديد أخطاء البرمجة تتمثل في«تنفيذ الإجراء» حيث يحدد اصبع المبرمج نقطة التنفيذ كما يفعل عداد البرنامج. كما اللغة رفيعة المستوى هي في الأساس لغة الآلة افتراضيه، وهي معقدة للغاية بحيث لا يمكن بناؤها كأجهزة ولكن بدلاً من ذلك يتم محاكاتها أو تفسيرها بواسطة البرامج.
ومع ذلك، تتجاوز نماذج البرمجة الجديدة البرمجة التسلسلية
وفي هذا الصدد، في برمجة تعتمد على الحدث، قد يقوم المبرمج بكتابة تسلسلات من التعليمات للاستجابة للأحداث دون تحديد تسلسل إجمالي للبرنامج.
عمل العتاد
إضافةً إلى ذلك، وإذا كان عداد البرنامج عبارة عن عداد ثنائي، فقد يزداد عند تطبيق الذبذبات على مدخلاته في العد، أو قد تحسب وحدة المعالجة المركزية بعض القيم الأخرى ووتقوم بتحميلها في عداد البرنامج بواسطة إرسال ذبذبات إلى مدخلات التحميل.
علاوةً على ذلك، ولتحديد التعليمات الحالية، يمكن دمج عداد البرنامج مع السجلات الأخرى التي تحدد مقطعًا أو صفحة. حيث يسمح هذا الأسلوب لعداد البرنامج مع عدد أقل من البيتات بافتراض أن أغلب وحدات الذاكرة ذات الأهمية موجودة في المنطقة المجاورة الحالية.
وفي السياق ذاته، في وحدة معالجة مركزية بسيطة، عداد البرنامج هو عداد رقمي (وهو أصل مصطلح «عداد البرنامج») التي قد تكون واحدة من عدة سجلات الأجهزة. كما تبدأ دورة التعليمات بالجلب، حيث تضع وحدة المعالجة المركزية قيمة عداد البرنامج على ناقل العنوان لإرساله إلى الذاكرة. في حين تستجيب الذاكرة عن طريق إرسال محتويات موقع الذاكرة على ناقل البيانات. (وهو نموذج الحاسوب المخزن للبرنامج، حيث تحتوي مساحة ذاكرة واحدة كلا من التعليمات القابلة للتنفيذ والبيانات العادية).وبعد عملية الجلب، تشرع وحدة المعالجة المركزية في التنفيذ، وتتخذ بعض الإجراءات بناءً على محتويات الذاكرة التي حصلت عليها. وفي مرحلة ما من هذه الدورة، سيتم تعديل عداد البرنامج بحيث تكون التعليمات التالية التي يتم تنفيذها مختلفة (عادةً، تتم العملية تدريجيا بحيث تكون التعليمت التالية هي التي تبدأ من عنوان الذاكرة مباشرةً بعد آخر موقع للذاكرة للتعليمة الحالية (.
ومن ناحية أخرى، و مثل سجلات المعالجات الأخرى، قد يكون عداد البرنامج بنكًا من المزالج الثنائية، يمثل كل منها بيتة واحده من قيمة عداد البرنامج. كما أن عدد البيتات يتعلق بهندسة المعالج. مثلًا، قد تستعمل وحدة المعالجة المركزية«ذات ال 32 بيتة»,32 بيتة لتتمكن من معالج 232 وحدة من الذاكرة. وفي بعض المعالجات، يعتمد عرض عداد البرامج الذاكرة القابلة للعنونة، وعلي سبيل المثال، بعض وحدات تحكم AVR تحتوي على عداد برنامج يلتف بعد 12 بيتة.
📝 هل في هذه المقالة خطأ؟
إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.
ما رأيك في هذه المقالة؟