سجل الحالة
في وحدات المعالجة المركزية ، يُعدّ سجل الحالة ، أو سجل العلامات ، أو سجل رمز الحالة ( CCR ) سجلاً يحتوي على مجموعة من بتات علامات الحالة . ومن أمثلة هذه السجلات: سجل FLAGS في بنية x86 ، وسجل كلمة حالة البرنامج (PSW) في بنية IBM System/360 حتى z/Architecture ، وسجل حالة برنامج التطبيق (APSR) في بنية ARM (32 بت) [ 1 ] ، وسجل نظام NCSV في بنية ARM AArch64 (64 بت) [ 2 ] .
يحتوي سجل الحالة على معلومات حول حالة المعالج . تُقرأ أو تُكتب البتات الفردية ضمنيًا أو صراحةً بواسطة تعليمات لغة الآلة التي تُنفذ على المعالج. يسمح سجل الحالة للتعليمات باتخاذ إجراء مشروط بنتيجة التعليمات السابقة.
عادةً، يتم تعديل بعض العلامات في سجل الحالة نتيجةً لعمليات الحساب ومعالجة البتات التي تُجريها وحدة الحساب والمنطق (ALU). على سبيل المثال، قد يتم ضبط بت الحالة Z إذا كانت نتيجة العملية صفرًا، أو مسحه إذا كانت غير صفرية. قد تُعدّل تعليمة السلسلة علامة حالة للإشارة إلى ما إذا كانت قد انتهت بسبب العثور على تطابق أو الوصول إلى نهاية السلسلة. تُستخدم بعض العلامات لاحقًا بواسطة التعليمات الشرطية للتحكم في تنفيذ البرنامج.
لا تستخدم بعض معماريات المعالجات المركزية، مثل MIPS و Alpha ، سجلًا مخصصًا للأعلام. بينما لا تقوم معماريات أخرى بتعيين أو قراءة الأعلام ضمنيًا. هذه المعالجات إما لا تمرر معلومات الحالة الضمنية بين التعليمات أو تمررها في سجل للأغراض العامة.
قد يحتوي سجل الحالة على حقول إضافية مثل علامات الامتياز، وبتات تمكين المقاطعة ، وأنواع أخرى من المعلومات. أثناء المقاطعة، يمكن الحفاظ على حالة الخيط قيد التنفيذ حاليًا عن طريق تخزين القيمة الحالية لسجل الحالة (إلى جانب عداد البرنامج والسجلات النشطة الأخرى) في مكدس الجهاز أو ذاكرة أخرى.
الأعلام المشتركة
فيما يلي قائمة بعلامات سجل حالة وحدة المعالجة المركزية التي يتم تطبيقها بشكل شائع في المعالجات الحديثة:
| علَم | اسم | وصف |
|---|---|---|
| Z | علم الصفر | يشير إلى أن نتيجة عملية حسابية أو منطقية (أو في بعض الأحيان، عملية تحميل) كانت صفرًا. |
| ج | حمل العلم | تُمكّن هذه الخاصية من جمع/طرح أعداد أكبر من كلمة واحدة عن طريق نقل رقم ثنائي من كلمة أقل أهمية إلى أقل بت أهمية في كلمة أكثر أهمية حسب الحاجة. كما تُستخدم لتوسيع عمليات إزاحة البتات وتدويرها بطريقة مماثلة في العديد من المعالجات (ويتم ذلك أحيانًا عبر علامة X مخصصة ). |
| S / N | علامة علم سلبي | يشير هذا إلى أن نتيجة العملية الحسابية سالبة. في بعض المعالجات، [ 3 ] يكون للعلامتين N و S معانٍ واستخدامات مختلفة: تشير إحداهما إلى ما إذا كانت النتيجة الأخيرة سالبة، بينما تشير الأخرى إلى ما إذا كانت عملية طرح أو جمع قد تمت. |
| V / O / W | علم الفائض | يشير إلى أن النتيجة الموقعة لعملية ما كبيرة جدًا بحيث لا يمكن وضعها في عرض السجل باستخدام تمثيل المتمم الثنائي . |
أعلام أخرى
في بعض المعالجات، قد يحتوي سجل الحالة على علامات مثل هذه:
| علَم | اسم | وصف |
|---|---|---|
| H / A / DC | علم نصف الحمل، علم مساعد، حمل رقمي، علم ضبط الفاصلة العشرية | يشير هذا إلى حدوث عملية نقل بت بين النصفين (عادةً بين نصفي المعامل المكون من 4 بتات) نتيجةً للعملية الحسابية الأخيرة. يُعد هذا النوع من العلامات مفيدًا بشكل عام لتنفيذ عمليات حسابية بنظام BCD المضغوط على أجهزة ثنائية. |
| P | علم التكافؤ | يشير إلى ما إذا كان عدد البتات المُفعّلة في النتيجة الأخيرة فرديًا أم زوجيًا. |
| أنا | علامة المقاطعة | في بعض المعالجات، يشير هذا البت إلى ما إذا كانت المقاطعات مُفعّلة أم مُعطّلة. [ 4 ] إذا كان للمعالج مستويات أولوية متعددة للمقاطعات ، مثل PDP-11 ، فقد تُستخدم عدة بتات للإشارة إلى أولوية الخيط الحالي، مما يسمح بمقاطعته فقط بواسطة مكونات مادية مُعيّنة على أولوية أعلى. في بنى أخرى، قد يشير البت إلى أن مقاطعة ما نشطة حاليًا، وأن الخيط الحالي جزء من معالج المقاطعة . |
| S | علم المشرف | في المعالجات التي توفر حلقتين حماية أو أكثر ، يشير بت واحد أو أكثر في سجل الحالة إلى حلقة الخيط الحالي (مدى موثوقيته، أو ما إذا كان يجب عليه استخدام نظام التشغيل للطلبات التي قد تعيق الخيوط الأخرى). أما في المعالجات ذات الحلقتين فقط، فقد يميز بت واحد بين وضع المشرف ووضع المستخدم. |
| سؤال | علامة التشبع | على سبيل المثال، في معالجات Arm (32 بت) (ARMv5TE و ARMv6 وما بعدها)، يتم تعيين علامة Q إلى 1 عند حدوث تشبع في تعليمات الحساب التشبعي ، أو عند حدوث تجاوز في تعليمات الضرب. "علم Q هو علم لاصق." [ 5 ] |
بنى المعالجات المركزية بدون علامات حسابية
تُمكّن علامات الحالة التعليمات من العمل بناءً على نتيجة التعليمات السابقة. في المعالجات ذات البنية المتوازية ، مثل المعالجات فائقة القياس والمعالجات التخمينية ، قد يُؤدي ذلك إلى مخاطر تُبطئ المعالجة أو تتطلب أجهزة إضافية لتجاوزها. [ 6 ]
تستغني بعض معالجات النصوص ذات التعليمات الطويلة جدًا عن علامات الحالة. تقوم تعليمة واحدة بإجراء اختبار وتحديد الإجراء المطلوب بناءً على نتيجة هذا الاختبار، مثل: قارن a مع b وانتقل إلى c إذا كانت النتيجة متساوية. لا يتم حفظ نتيجة الاختبار للتعليمات اللاحقة.
يُعدّ تخزين معلومات الحالة في سجل عام بديلاً آخر لسجل الحالة، وذلك عندما يطلبها البرنامج. ومن الأمثلة على البنى التي توفر تعليمات مقارنة، مثل MIPS و AMD 29000 و DEC Alpha و RISC-V ، حيث تُخزّن نتيجة المقارنة في سجل عام، إما كبت واحد أو كقيمة عددية 0 أو 1. وتعتمد التفرعات الشرطية على القيمة الموجودة في السجل العام.
عادةً، تختبر تعليمات المقارنة التساوي أو القيمة المطلقة (موجبة/سالبة). ولاختبار شروط أخرى، يستخدم البرنامج صيغة تكافؤ. على سبيل المثال، لا يحتوي معالج MIPS على "بت حمل"، ولكن يمكن لبرنامج يُجري عملية جمع متعددة الكلمات اختبار ما إذا كان جمع كلمة واحدة من السجلات قد تجاوز الحد المسموح به عن طريق اختبار ما إذا كان المجموع أقل من أحد المعاملات: [ 6 ]
# alow = blow + clow addu alow , blow , clow # set tmp = 1 if alow < clow, else 0 sltu tmp , alow , clow addu ahigh , bhigh , chigh addu ahigh , ahigh , tmpsltuتُضبط قيمة التعليمة إلى tmp1 أو 0 بناءً على المقارنة المحددة بين المعاملين الآخرين. (هنا، tmpلا يُستخدم سجل الأغراض العامة كسجل حالة للتحكم في قفزة شرطية؛ بل تُضاف القيمة المحتملة 1، التي تشير إلى الحمل من عملية الجمع ذات الرتبة الأدنى، إلى الكلمة ذات الرتبة الأعلى.)
تصبح هذه الطريقة أقل ملاءمة عند جمع ثلاث كلمات أو أكثر، إذ يتطلب الحساب عمليتي جمع b + c + tmp، قد ينتج عن أي منهما عملية ترحيل، والتي يجب اكتشافها sltuبتعليمات منفصلة. لحسن الحظ، يمكن جمع عمليتي الترحيل هاتين معًا دون خطر حدوث تجاوز، وبالتالي يستقر الوضع عند خمس تعليمات لكل كلمة مضافة.
انظر أيضاً
مراجع
- ↑ "مركز معلومات ARM" . infocenter.arm.com . تم الاطلاع عليه بتاريخ 18-05-2019 .
- ↑ "تحديثات على علامات الحالة في كود A64" . دليل مستخدم مُصرّف Arm (armasm) . تم الاطلاع عليه بتاريخ 30-03-2026 .
- ↑ "دليل تشغيل توشيبا 900، الفصل 3" (ملف PDF) . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 15-01-2006.
- ↑ "متحكم دقيق Atmel ذو 8 بت مع ذاكرة فلاش قابلة للبرمجة داخل النظام بسعة 4/8/16/32 كيلوبايت - ورقة البيانات" (PDF) . شركة Microchip Technology .
- ↑ "الوثائق - مطور Arm" . developer.arm.com . تم الاطلاع عليه بتاريخ 1 أبريل 2026 .
- 1 2 ماشي، جون (1996-06-04). "حمل البتات؛ فخ المهندس المعماري" . تم الاسترجاع في 2013-10-05 .
- تدفق التحكم
- وحدات المعالجة المركزية
- السجلات الرقمية
